博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
进程/线程
阅读量:3931 次
发布时间:2019-05-23

本文共 1110 字,大约阅读时间需要 3 分钟。

什么是进程?

什么是线程?
两者间的关系是怎样的?

什么是进程?

为什么引入进程的概念?

1、从理论角度看,是对正在运行的程序过程的抽象

2、从实现角度看,是一种数据结构,目的在于清晰地刻画动态系统的内在规律,有效管理调度进入计算机系统主存储器运行的程序

狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed)。

广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元也是基本的执行单元

特征

动态性:进程的实质是程序在中的一次执行过程,进程是动态产生动态消亡的。

并发性:任何进程都可以同其他进程一起并发执行

独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位

异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的不可预知的速度向前推进

结构特征:进程由程序数据进程控制块三部分组成。

多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;但是执行过程中,程序不能发生改变。

什么是线程?

线程的引入:

20世纪60年代,在OS中能拥有资源和独立运行的基本单位是进程,然而随着计算机技术的发展,进程出现了很多弊端。

1、由于进程是资源拥有者,创建、撤消与切换存在较大的时空开销,因此需要引入轻型进程

2、是由于对称多处理机(SMP)出现,可以满足多个运行单位,而多个进程并行开销过大。

定义:

线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位

特点:

1、线程是独立调度和分派的基本单位。

2、同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间文件描述符信号处理等等。

3、但同一进程中的多个线程有各自调用栈(call stack),自己的寄存器环境(register context),自己的线程本地存储(thread-local storage)。

两者间的关系是怎样的?

1、地址空间和其它资源(如打开文件):进程间相互独立,同一进程各线程间共享。某进程内的线程在其它进程不可见

2、通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性

3、调度和切换线程上下文切换比进程上下文切换要快得多

4、在多线程OS中,进程不是一个可执行的实体

参考:

转载地址:http://vjqgn.baihongyu.com/

你可能感兴趣的文章
欢迎使用CSDN-markdown编辑器
查看>>
Hadoop和大数据开源工具推荐
查看>>
聚类算法
查看>>
大数据的六大规则
查看>>
rails加载方式
查看>>
Hadoop Storm Spark比较
查看>>
职业测试~~
查看>>
Ruby on Rails调试经验分享
查看>>
ruby中保留2位小数
查看>>
ruby 字符串处理
查看>>
rails console环境下显示AR sql
查看>>
rails console production
查看>>
ruby 时间日期处理
查看>>
ruby 类的封装
查看>>
Ruby / libcurl应用
查看>>
ruby ftp封装
查看>>
RVM实用指南
查看>>
select reject detect inject用法
查看>>
mongodb配置
查看>>
加密、解密详解及CA的实现
查看>>