360 likes | 520 Views
第三章 进程管理. 3.1 进程的概念 3.2 进程的描述 3.3 进程状态及其转换 3.4 进程控制 3.5 进程互斥 3.6 进程同步 3.7 进程通信 3.8 死锁问题 3.9 线程的概念 3.10 线程分类与执行 小结. 3.2.2 进程上下文. 进程上下文是进程执行过程中顺序关联的静态描述 进程上下文包含了每个进程执行多的、执行时的以及待执行的指令和数据,在指令寄存器、堆栈、状态寄存器等中的内容 上文:已经执行过的进程指令和数据在相关寄存器与堆栈中的内容称为上文
E N D
第三章 进程管理 • 3.1 进程的概念 • 3.2 进程的描述 • 3.3 进程状态及其转换 • 3.4 进程控制 • 3.5 进程互斥 • 3.6 进程同步 • 3.7 进程通信 • 3.8 死锁问题 • 3.9 线程的概念 • 3.10 线程分类与执行 • 小结
3.2.2进程上下文 • 进程上下文是进程执行过程中顺序关联的静态描述 • 进程上下文包含了每个进程执行多的、执行时的以及待执行的指令和数据,在指令寄存器、堆栈、状态寄存器等中的内容 • 上文:已经执行过的进程指令和数据在相关寄存器与堆栈中的内容称为上文 • 正文:正在执行的指令和数据在相关寄存器与堆栈中的内容称为正文 • 下文:待执行的指令和数据在相关寄存器与堆栈中的内容称为下文
进程上下文结构 进程上下文结构
3.2.3进程上下文切换 • 指出进程上下文的概念主要时为了进程上下文的切换 • 进程上下文切换发生在不同的进程之间而不是同一个进程内
进程上下文切换过程包括 • 保存被切换进程的正文部分(或当前状态)至有关存储区 • 操作系统进程中有关调度和资源分配程序执行,并选取新的进程 • 将被选中进程的正文从有关的存储区中提取出来 进程上下文的切换过程
3.2.4进程空间与大小 • 进程空间:每个进程都有自己的地址空间,该地址空间就称为进程空间或虚空间 • 分类 • 用户空间:用户程序只能够在用户空间内执行 • 系统空间:操作系统内核程序在系统空间执行 进程空间示例
3.3进程状态及其转换3.3.1进程状态 • 进程的生命周期可以划分为一组状态,这些状态刻画了整个进程 • 1) 就绪(Ready)状态:进程一旦获得CPU就可以投入运行的状态 • 2) 执行状态:进程获得CPU正在运行的状态 • 3) 阻塞状态:进程由于等待资源或某个事件的发生而暂停执行的状态
3.3.2进程状态转换 进程状态转换
进程控制块的组织方式 1) 链接方式 :把具有同一状态的PCB,用其中的链接字链接成一个队列 PCB链接队列示意图
2) 索引方式:系统根据所有进程的状态建立几张索引表。 按索引方式组织PCB
3.4 进程控制 • 进程控制:就是系统使用一些具有特定功能的程序段来创建、撤销进程以及完成进程各状态间的转换,从而达到多进程高效率并发执行和协调、实现资源的共享 • 原语:是系统态下执行的某些具有特定功能的程序段 • 原语类别 • 机器指令级:执行期间不允许中断,是不可分割的单位 • 功能级:程序段不允许并发执行
3.4.1进程创建与撤销1. 进程创建 • 创建的方式: • 由系统程序模块统一创建:进程之间是平等的关系,不存在继承关系 • 由父进程创建
进程的创建(Creation of Progress) (1)申请空白PCB。 (2) 为新进程分配资源。 (3) 初始化进程控制块。 (4) 将新进程插入就绪队列,如果进程就绪队列能够接纳新进程, 便将新进程插入就绪队列。
引起创建进程的事件 • 用户登录。 • (2) 作业调度。 • (3) 提供服务。 • (4) 应用请求。
2. 进程撤销 • 引起进程终止(Termination of Process)的事件 • 正常结束 • 异常结束 • 外界干预:外界干预并非指在本进程运行中出现了异常事件,而是指进程应外界的请求而终止运行。这些干预有: • ① 操作员或操作系统干预。 由于某种原因,例如,发生了死锁, 由操作员或操作系统终止该进程; • ② 父进程请求。 由于父进程具有终止自己的任何子孙进程的权利, 因而当父进程提出请求时,系统将终止该进程; • ③ 父进程终止。 当父进程终止时,OS也将他的所有子孙进程终止
3.4.2 进程的阻塞与唤醒 1. 引起进程阻塞和唤醒的事件 • 请求系统服务 • 2) 启动某种操作 • 3) 新数据尚未到达 • 4) 无新工作可做
2. 进程阻塞过程 正在执行的进程,当发现上述某事件时,由于无法继续执行,于是进程便通过调用阻塞原语block把自己阻塞。可见,进程的阻塞是进程自身的一种主动行为。
3. 进程唤醒过程 当被阻塞进程所期待的事件出现时,如I/O完成或其所期待的数据已经到达,则由有关进程(比如,用完并释放了该I/O设备的进程)调用唤醒原语wakeup( ),将等待该事件的进程唤醒。
3.5进程互斥3.5.1资源共享所引起的制约 • 临界资源 • 多道程序环境->进程之间存在资源共享,进程的运行时间受影响 • 硬件或软件(如外设、共享代码段、共享数据结构),多个进程在对其进行访问时(关键是进行写入或修改),必须互斥地进行--有些共享资源可以同时访问,如只读数据
进程间资源访问冲突 • 共享变量的修改冲突 • 操作顺序冲突 • 进程间的制约关系 • 间接制约:进行竞争--独占分配到的部分或全部共享资源,“互斥” • 直接制约:进行协作--等待来自其他进程的信息,“同步”
临界区(critical section) 可把一个访问临界资源的循环进程描述如下: repeat critical section; remainder section; until false; entry section exit section
相关概念 • 临界区(critical section):进程中访问临界资源的一段代码。 • 进入区(entry section):在进入临界区之前,检查可否进入临界区的一段代码。如果可以进入临界区,通常设置相应"正在访问临界区"标志 • 退出区(exit section):用于将"正在访问临界区"标志清除。 • 剩余区(remainder section):代码中的其余部分。
3.5.2互斥的加锁实现 • 加锁后的临界区程序描述 • Lock(key[S]) • <临界资源> • Lock(key[S]) • S:表示类名为S的临界区 • 缺点: • 开销大:每个进程每次都进入临界区之前都必须对临界资源进行测试 • 不公平:不同的进程获取进入临界资源的机会不一样,刚刚访问了的进程机会要大些
3.5.3信号量和P,V原语 1. 信号量(semaphore) • 信号是铁路交通管理中的一种常用设备 • 操作系统信号量sem是一个整数。意义: • Sem大于等于0表示可供并发进程使用的资源的数量 • Sem小于0表示正在等待使用临界资源的进程数量
2. P,V原语 • P原语操作功能
P、V操作的一种实现方式:用加锁软件方法实现P、V操作的一种实现方式:用加锁软件方法实现
3.5.4用P,V原语实现进程互斥 • 设sem为互斥信号量,范围为(1,0,-1) • S表示临界区 • 实现描述: • PA进程: P(sem) <S> V(sem): …. • PB进程: P(sem) <S> V(sem): ….
信号量的应用 1. 利用信号量实现进程互斥 用于互斥的信号量mutex与所有的并发进程有关,称之为公有信号量,公有信号量的值反映了可用该公有资源的数量.要实现进程互斥,只需用P(mutex)、V(mutex)框住临界区CS。程序如下: 进程B . . P(mutex); CSB; V(mutex); . . . 进程A . . P(mutex); CSA; V(mutex); . . .
例1:某车站售票厅,任何时刻最多可容纳20名购票者进入,当售票厅中少于20名购票者时,厅外的购票者可立即进入,否则需要在外面等待。每个购票者可看成一个进程。例1:某车站售票厅,任何时刻最多可容纳20名购票者进入,当售票厅中少于20名购票者时,厅外的购票者可立即进入,否则需要在外面等待。每个购票者可看成一个进程。
分析:首先确定进程间的关系,售票厅是各进程共享的公有资源,当售票厅中多于20名购票者时,厅外的购票者需要在外面等待,所以进程间是互斥的关系;然后确定信号量及其值,只有一个公有资源:售票厅,所以设置一个信号量mutex.售票厅最多容纳20个进程,即可用该资源实体数为20,mutex的初值就设为20.程序如下:分析:首先确定进程间的关系,售票厅是各进程共享的公有资源,当售票厅中多于20名购票者时,厅外的购票者需要在外面等待,所以进程间是互斥的关系;然后确定信号量及其值,只有一个公有资源:售票厅,所以设置一个信号量mutex.售票厅最多容纳20个进程,即可用该资源实体数为20,mutex的初值就设为20.程序如下: REPEAT P(mutex); 进入售票厅; 购票; 退出; V(mutex); UNTIL false: 由此可知,互斥信号量的初值可大于等于1(当售票厅内至多容纳1名购票者时,初值为1),初值取什么,关键是可用资源数.
课后练习 • P83:2