2.1 进程与线程
2.1.1 进程的概念和特征
PCB 是进程存在的唯一标志
创建进程,实质上是创建进程实体中的 PCB,撤销进程,实质上是撤销进程的 PCB。
进程是进程实体的运行过程,是系统进程资源分配和调度的一个独立单位。
进程实体由程序段、数据段、PCB 组成。
2.进程的特征
(4)异步性。由于进程的相互制约,使得进程按各自独立的、不可预知的速度向前推进。异步性会导致执行结果的不可再现性。
2.1.2 进程的状态与转换

(1)创建态:申请一个空白 PCB,向 PCB 中填写用于控制和管理进程的信息。
(2)就绪态:进程获得了除处理机外的一切所需资源,一旦获得处理机便可立即运行。
(3)运行态:进程正在处理机上运行。单处理机中,每个时刻只有一个进程处于运行态。
(4)阻塞态(等待态):进程正在等待某一事件而暂停运行,即使处理机空闲,该进程也不能运行。
(5)结束态:进程正从系统中消失。
进程自身决定从运行态到阻塞态。
当一个进程被唤醒,这个进程就进入了就绪态。
2.1.3 进程的组织
PCB 是进程存在的唯一标志。同时 PCB 常驻内存。
2.1.4 进程控制
在操作系统中,一般把进程控制用的程序段称为原语,原语的特点是执行期间不中断。
1.进程的创建
允许一个进程创建另一个进程,创建者称为父进程,被创建的进程称为子进程。子进程继承父进程所拥有的资源。当子进程被撤销时,应将从父进程那获得的资源归还给父进程。在撤销父进程时,通常也会撤销所有子进程。
(1)为新进程分配一个唯一的进程表示号,并申请一个空白 PCB。若 PCB 申请失败,则创建失败。
(2)为进程分配其所需的资源。如果资源不足,处于创建态
(3)初始化 PCB
(4)插入就绪队列
2.进程的阻塞
(1)找到要被阻塞进程的表示好对应的 PCB
(2)若该进程为运行态,则保护其现场,将其状态转为阻塞态,停止运行。
(3)把该 PCB 插入相应时间的等待队列,将其处理机资源调度给其他就绪进程。
3.进程的唤醒
(1)在该事件的等待队列中找到相应进程的 PCB
(2)将其从等待队列中移出,并将其状态转换为就绪态
(3)把该 PCB 插入就绪队列,等待调度程序调度
4.进程的终止
(1)根据被终止进程的标识符,检索出该进程的 PCB,从中读出该进程的状态。
(2)若被终止进程处于执行状态,立即终止该进程的执行,将处理机资源分配该其他进程。
(3)若该进程还有子孙进程,则应将所有子孙进程终止。
(4)将该进程拥有的全部资源,或归还给父进程,或归还给操作系统。
(5)将该 PCB 从所在队列(链表)中删除。
2.1.5 进程的通信
PV 操作是低级通信方式,高级通信是以高效率传送大量数据的通信方式。
进程的通信分为同一主机内的通信和不同主机之间进程的通信:
在同一个主机内,使用进程间通信机制通信(操作系统定义)
不同主机,通过交换报文通信。
1.共享存储
进程之间存在一块可以直接访问的共享空间。
2.消息传递
(1)直接通信
发送进程直接把消息发送给接收进程。
(2)间接通信
发送进程把消息发送到某个中间实体,接收进程从中间实体中取得消息。中间实体一般称为信箱。
3.管道通信
管道通信是一种用于连接一个读进程和一个写进程的一个共享文件。
管道通信必须提供:互斥、同步和确定对方存在。
缓冲区只允许一边写入,一边写出。
管道中数据一旦被读出,就会彻底消失。
一个管道允许多个写进程,一个读进程。
2.1.6 线程和多线程模型
6.线程的实现方式
(1)用户级线程
优点:线程切换不需要转换到内核空间
缺点:
1.一个线程阻塞,该进程内所有线程阻塞
2.内核每次分配给一个进程仅有的一个 CPU,因此进程中只有一个线程能执行。
(2)内核级线程
优点:一个线程阻塞,该进程内所有线程可以运行
缺点:同一进程中线程切换,开销较大。
7.多线程模型
如果系统同时支持用户级线程和内核线程
(1)一对一模型
操作系统为每个用户线程建立一个线程控制块。

(2) 多对一模型

缺点:操作系统内核只能感知到一个调度单位存在,当多线程进程中某一个线程被阻塞后,该进程被阻塞。
(3) 多对多模型
