第二章 进程与线程
为什么引入进程?
在多道程序环境下,允许多个程序并发执行,它们将失去封闭性,为此引入进程的概念,以更好地描述和控制程序的并发执行,实现操作系统的并发性和共享性
2.1 进程与线程
2.1.1 进程的概念和特征
从不同的角度,进程有不同的定义
1)进程是程序的一次执行过程
2)进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配的独立单位
进程实体由程序段、数据段、PCB三部分组成
创建进程,实质上是创建进程实体中的PCB,撤销进程是撤销进程实体中的PCB,进程实体是静态的,而进程是动态的。注意,PCB是进程存在的唯一标志
进程的特征
1)动态性 2)并发性 3)独立性 4)异步性
2.1.2 进程的状态与转换
2.1.3 进程的组织
1、进程控制块
包括进程描述信息(进程标识符)、进程控制和管理信息、资源分配清单和处理机相关信息,为了方便进程的管理和调度,常有索引方式和链接方式
2、程序段,能够被进程调度程序调度到CPU执行的程序代码段,程序可被多个进程共享
3、数据段
2.1.4 进程控制
一般把进程控制用的程序段称为原语,原语的特点是在执行期间不允许中断,它是一个不可分割的基本单位。
1、进程的创建
在操作系统,用户登录系统、作业调度、系统提供服务、用户程序的应用请求等都会引起进程的创建。
创建原语:
1)为新进程分配唯一标识符,申请PCB
2)分配运行所需的资源
3)初始化PCB
2、进程的终止
引起进程终止的事件有:1、正常结束 2、异常结束 3、外界干预
终止原语:
1)通过标识符找到PCB
2)查看进程所在状态,若是运行态,立即终止程序,并将处理机资源分配给其他进程
3)若有子孙进程,全部终止
4)将该进程所有资源,返回给父进程或是操作系统
5)从PCB所在队列删除
3、进程的阻塞和唤醒
阻塞是进程自身的一种主动行为
阻塞原语:
1)找到阻塞进程标识号对应的PCB
2)若该进程为运行态,则记载现场所有信息,将其状态转为阻塞态,停止运行
3)把PCB插入相应事件的等待队列中,将处理机资源调度给其他进程
唤醒原语:
1)找到PCB
2)将从等待队列中移出,并置为就绪态
3)将PCB插入就绪队列中,等待调度程序调度
阻塞原语和唤醒原语必须成对使用
2.1.5 进程的通信
2.1.6 线程和多线程模型
为什么引入线程?
减小程序在并发执行时所付出的时空开销,提高操作系统的并发性能
线程最直接的理解就是“轻量级进程”,它是一个基本的CPU执行单元,也是程序执行流的最小单元。
1)在引入线程的操作系统中,线程是独立调度的基本单位
2)同一进程中的所有线程都具有相同的地址空间,共享进程中的所有资源
3)线程间的同步与通信无须操作系统的干预
4)不同的线程可以执行相同的程序,即一个服务程序被不同的用户调用,操作系统把它们创建程不同的线程
线程的实现方式
用户级线程和内核级线程
题目
1、系统动态DLL库中的系统线程,被不同的进程调用,他们是(相同)的线程
2、下列关于父进程与子进程的叙述中,错误的是(B)
A.父进程与子进程可以并发执行
B.父进程与子进程共享虚拟地址空间
C.父进程与子进程有不同的进程控制块
D.父进程与子进程不能同时使用同一临界资源