操作系统第二章 进程管理
1.基本概念
( 1)首先介绍下顺序执行和并发执行:
- 顺序执行的特征:顺序性、封闭性、可重现性
- 并发执行的特征:间断性、市区封闭性、不可再现性
并发执行的特征决定了通常的程序不能并发执行。为了使程序能并发执行,引入进程的概念对程序进行描述和控制。
程序段、数据段、进程控制块(PCB process control block)构成进程的实体。
进程的特征: - 动态性(基本特征)
- 并发性(重要特征,也是OS的重要特征)
- 独立性
- 异步性
(2)进程的三种基本状态:
- 就绪状态
- 执行状态
- 阻塞状态
另一些系统中引入了
- 挂起状态(静止状态)
挂起原语:suspend
**原语:active
实际系统中一般还有两种状态:
- 创建状态
- 终止状态
(3)进程控制块
PCB是进程存在的唯一标识,在PCB中主要包含四种信息: - 进程标识符:内部标识符、外部标识符
- 处理机状态
- 进程调度信息
- 进程控制信息
2.进程控制
- 进程的创建create():申请空白PCB,分配资源,初始化PCB,将新进程插入就绪队列。
- 进程的终止destroy()/kill():正常结束、异常结束、外界干预
- 进程阻塞block()与进程唤醒wakup()
- 进程挂起suspend()与**:active()
3.进程同步
同步机制应遵循的规则:
- 空闲让进
- 忙则等待
- 有限等待
- 让权等待
进程同步:
- 信号量机制semaphores:整型信号量(没有考虑让权等待)、记录型信号量、AND型信号量(多个共享数据)、信号量集(一次需要多个临界资源)
-
管程机制:模块化、抽象数据类型、信息掩蔽(注意管程与进程的不同)
经典的进程同步问题:生产者消费者,读者写者,哲学家进餐
(单独写)
4.进程通信
- 共享存储器系统:基于共享数据结构的通信方式(低效,适合传递相对少量的数据)、基于共享存储区的通信方式
- 消息传递系统:
(1)直接通信方式:Send(Receiver,message),Receiver(Sender,message)
(2)间接通信方式:需要一个中间实体,即信箱(私用信箱,公用信箱,共享信箱)
Send(mailbox,message),Receive(mailbox,message) - 管道通信系统:互斥、同步、确定对方是否存在
5.线程
为了减少程序在并发执行时的时空开销,使OS具有更好地并发性,引入线程。
进程的两个基本属性:
- 进程是一个可拥有资源的独立单位
- 进程同时又是一个可独立调度和分派的基本单位
进程和线程的比较:
- 调度:线程作为调度和分派的基本单位,而进程作为资源拥有的基本单位
- 并发性:不仅进程间可以并发,进程间的线程也可以并发执行,从而提高了系统资源的利用率和系统的吞吐量
- 资源:传统的进程和引入线程之后,进程都是拥有资源的基本单位,线程本身不拥有资源,但它可以访问其隶属进程的资源,即一个进程的数据段、代码段、系统资源为该进程的所有线程所共享。
- 系统开销:创建和撤销进程时需要创建或回收进程控制块、分配和回收内存,进程切换时,需要当前CPU环境的保存和新被调度运行进程的 CPU 环境的设置。而线程的切换只需要保存和设置少 量寄存器内容。所以就切换代价而言,进程也是远高于线程的。此外,由于一个进程中的多个线程具有相同的地址空间,在同步和通信的实现方面线程也比进程容易。
线程的属性:
- 轻型实体
- 独立调度和分派的基本单位
- 可并发执行
- 共享进程资源
线程间的通信
- 互斥锁
- 条件变量
-
信号量机制:私用信号量(同一进程的不同线程间)、公用信号量(不同进程的线程间)
线程的实现方式:
内核支持线程KST
- 用户级线程ULT
- 组合方式