进程
进程的概念
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位
源分配和调度的一个独立单位。
当进程被创建时(如打开应用),操作系统会为该进程创建一个唯一的,不重复的“身份证号”——PID(Process ID,进程ID)
操作系统要记录PID、进程所属用户ID(UID:基本的进程描述信息,可以让操作系统区分各个进程)
进程的组成
- PCB
- 程序段
- 数据段
进程的特征
- 动态性
- 并发性
- 独立性
- 异步性
各自独立,以不可预知的速度前进。 - 结构性
每个进程都会有程序段,数据段,PCB。
进程的状态与转换
进程的状态:
-
创建态
在此阶段操作系统会为进程分配资源、初始PCB -
就绪态
进程已经就绪,只是没有空闲CPU,就暂时不运行。
系统中可能会有很多个进程处于就绪态 -
运行态
一个进程在CPU上运行 -
阻塞态
主动请求,等待某个事件发生,事件发生前,进程无法继续往下执行。 -
终止态
一个进程可以执行exit系统吊桶,请求操作系统终止该进程。操作系统会让该进程下CPU并回收资源。
有些地方可能考察进程七状态模型
进程的组织
-
链式方式
-
索引方式
进程控制
进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。
如何实现进程控制?
答:用“原语”实现,原语的执行具有“原子性”,一气呵成。
如何实现原语的“原子性”
原语的执行具有原子性,即执行过程只能一气呵成,期间不允许被中断。
可以用“关中断指令”和“开中断指令”这两个特权指令实现原子性。
进程控制相关的原语
进程控制总结
进程间通信
进程间通信是指两个进程之间产生数据交互。
共享存储
进程不能直接读其他进程的地址空间
eg. 要不然垃圾软件可以直接读私人信息
共享存储有两种方式:
- 基于数据结构的共享
可以理解为一个大家都可以读的全局变量 - 给予存储区的共享
操作系统在内存中画出共享存储区,数据的形式、存放位置等都不做控制。
这种共享方式速度很快,是一种高级通信方式。
消息传递
进程间的数据交换以格式化的消息(Message)为单位。进程通过操作系统提供的“发送消息/接收消息”两个原语进行数据交换。包括消息头和消息体。
两种方式:
- 直接通信方式
- 间接通信方式
管道通信
管道通信是一个循环队列,先进先出。
线程
每个进程可以有多个线程。
可以把线程理解为“轻量级进程”
线程是一个基本的CPU执行单元,也是程序执行流的最小到单位。引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度。
引入线程后,进程只作为除CPU之外的系统资源的分配单元。
线程的实现方式
- 用户级线程
早期操作系统。使用线程库实现并发运行。
一个线程被阻塞,整个进程都会被阻塞。 - 内核级线程
操作系统支持的线程。
管理成本更高,开销更大 - 组合方式
多线程模型
-
一对一模型
-
多对一线程模型
-
多对多模型
线程的状态与转换
线程状态通常只关心最主要的三个状态,即:
- 就绪态
- 运行态
- 阻塞态
1413

被折叠的 条评论
为什么被折叠?



