考研笔记-计算机之操作系统:处理器管理(进程基础)
- 2026-09-20 02:49:01
——如阅读体验不佳,可转为横屏阅读;如微信无法横屏,可尝试文末方法。
表-程序的顺序执行与并发执行 | |
程序顺序执行的特征 | 1)顺序性;2)封闭性;3)可再现性 |
程序并发执行的特征 | 1)间断性;2)失去封闭性;3)不可再现性 |
说明: 1) 在多道程序并发执行的情况下,处理机的利用率呈现如下规律: |
表-程序与进程 | |
程序与进程的关系 | 通过多次执行,一个程序对应多个进程 |
通过调用关系,一个进程包括多个程序 |
表-进程状态及转换 | |
进程状态转换 |
|
进程状态说明 | 1) 活动态位于内存,静止态位于外存; 2) 就绪态指拥有除处理机外所需的所有资源,阻塞态指缺少除处理机外所需的某些资源; 3) 创建态为创建过程的中间状态(创建未完成),终止态为终止过程的中间状态(终止未完成); 4) 活动态与静止态之间的转换条件是挂起和激活,为双向转换; 5) 就绪态与阻塞态之间的转换条件是唤醒,为单向转换,就绪态不会转为阻塞态(即一旦拥有了某类资源(处理机和内存除外),便不会释放该资源); 6) 活动态和静止态与就绪态和阻塞态之间可以相互组合形成四种状态; 7) 进入执行态必先经过活动就绪态; 8) 执行态挂起后转入静止就绪态(因为不缺少资源,所以不转向静止阻塞态)。 |
表-进程控制块 | |
PCB的作用 | PCB是进程存在的唯一标识,与进程一一对应。进程实体由程序段、数据段和PCB三部分组成。 |
PCB的内容 | 1) 描述信息 进程标识符: a) 内部标识符,为数字标识符,由OS提供,用于系统调用; b) 外部标识符,为字符标识符,由创建者提供,用于用户进程访问该进程。 2) 控制信息 a) 程序和数据的地址,指程序和数据在内存或外存中的首地址; b) 进程同步和通信机制,如消息队列指针、信号等; c) 资源清单,除CPU外该进程所需的全部资源及已经分配到该进程的资源; d) 链接指针,本进程的PCB所在队列中的下一进程的PCB的首地址。 3) 调度信息 a) 进程状态; b) 进程优先级; c) 进程调度算法所需的信息; d) 事件,即进程由执行态转为阻塞态所等待发生的事件。 4) 处理机状态 处理机各种寄存器中的内容。 |
PCB的组织 | 1) 链接方式:根据不同的状态,链接成不同的队列,每个队列有一个指向该队列的指针,队列中的各个PCB通过指针域指向PCB表中属于同一队列的下一个PCB。 2) 索引方式:根据不同的状态,建立不同的索引表,每个索引表有一个指向该索引表的指针,索引表的表项为指向该索引表所包含的PCB在PCB表中位置的指针。 |
表-进程控制 | ||
进程控制 | 由OS内核中的原语来实现。 | |
进程创建 | 引起进程创建的事件 | 1) 用户登录(分时系统),由系统内核创建新进程; 2) 作业调度(批处理系统),由系统内核创建新进程; 3) 提供服务,由系统内核创建新进程; 4) 应用请求,由应用进程创建新进程。 |
进程创建过程 | 1) 申请空白PCB; 2) 为新进程分配资源; 3) 初始化PCB; 4) 将新进程插入就绪队列。 | |
进程终止 | 引起进程终止的事件 | 1) 正常结束; 2) 异常结束; 3) 外界干预 a) 操作员或操作系统干预; b) 父进程请求; c) 父进程终止。 |
进程终止过程 | 1) 根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程的状态; 2) 若被终止的进程正处于执行状态,应立即终止该进程的执行,并置调度标志为真,用于指示该进程被终止后应重新进行调度; 3) 若该进程还有子孙进程,应将其子孙进程予以终止; 4) 将被终止进程所拥有的全部资源,或归还给其父进程,或归还给系统; 5) 将被终止进程的PCB从所在队列或链表中移出,等待其他进程来搜集信息。 | |
进程阻塞 | 引起进程阻塞的事件 | 1) 请求系统服务 OS不能立即满足该进程的请求时便阻塞; 2) 启动某种操作 在该操作完成之前便阻塞; 3) 新数据尚未到达; 4) 无新工作可做; |
进程阻塞过程 (进程阻塞是主动行为) | 当阻塞事件发生时,进程主动调用阻塞原语block把自己阻塞起来,进入block过程后: 1) 若进程正在执行,则立即停止执行; 2) 将PCB中的现行状态由执行改为阻塞; 3) 将PCB插入阻塞队列; 4) 保留被阻塞进程的处理机状态至该进程的PCB中; 5) 按新调度进程的PCB中的处理机状态设置CPU环境。 | |
进程唤醒 | 引起进程唤醒的事件 | 1) 请求系统服务 OS可以满足该进程的请求时便可唤醒; 2) 启动某种操作 在该操作完成之后便可唤醒; 3) 新数据已经到达; 4) 有新工作可做; |
进程唤醒过程 (进程唤醒是被动行为) | 被阻塞进程所期待的事件发生时,由有关进程调用唤醒原语wakeup将等待该事件的进程唤醒: 1) 将被阻塞进程从等待该事件的阻塞队列中移出; 2) 将其PCB中的现行状态由阻塞改为就绪; 3) 将该进程的PCB插入就绪队列。 | |
进程挂起 | 引起进程挂起的事件 | 1) 父进程请求将其某个子进程挂起; 2) 用户进程请求将自己挂起; |
进程挂起过程 (进程挂起是被动行为) | 系统利用挂起原语suspend将进程挂起: 1) 被挂起进程若处于活动就绪,则将其改为静止就绪,若处于活动阻塞,则将其改为静止阻塞;(对应事件1)) 2) 将挂起进程的PCB复制到指定的内存区域,将进程的程序和数据转入外存; 3) 若被挂起进程正在执行,则将其改为静止就绪状态,并转向调度程序重新调度。(对应事件2)) | |
进程激活 | 引起进程激活的事件 | 1) 父进程请求唤醒指定进程; 2) 用户进程请求唤醒指定进程; |
进程激活过程 (进程激活是被动行为) | 系统利用激活原语active将指定进程激活: 1) 将进程从外存调入内存; 2) 进程的现行状态若为静止就绪态,则将其改为活动就绪态,若为静止阻塞态,则将其改为活动阻塞态; 3) 若唤醒进程的新状态为活动就绪,则根据调度策略判断是否要重新调度。 | |
说明: 1) 由于用户线程不依赖于操作系统内核,因此操作系统内核是不知道用户线程的存在的,用户线程是由用户来管理和调度的,用户利用线程库提供的API来创建、同步、调度和管理线程。所以,用户线程的调度是在用户程序内部进行,通常采用非抢占式和更简单的规则,也无需用户态和核心态的切换。 |
文章合集:
点击下方公众号主页,关注以阅读更多文章
——可选择“【右上角···】→【在浏览器中打开】”进行横屏阅读。

