自考操作系统原理 第三章 处理器管理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

核心栈:进程在核心态的工作区 user区:存放进程扩充控制块
UNIX进程状态


UNIX系统中,进程按状态链入进程队列中,同一队列中 的进程用进程基本块中的p_link链接在一起。 在UNIX系统中,进程有如下几种状态:

运行状态

进程正占据处理器运行,当进程执行用户程序时在用户态运行; 发生中断或者请求系统调用时就要执行系统程序,而转入核心 态运行。 占用处理器一段时间,被剥夺处理器,该进程便处于就绪态。 该进程可能被保留在主存中,也有可能被换出到磁盘”对换区 “中。 睡眠后被唤醒,处于就绪态

多道程序能提高资源使用效率,增加单位时间的算题量, 但对于单个问题来说,从算题开始到全部完成计算的时候 可能要延长。
确定并行道数时,应综合考虑系统的资源配置和用户对资 源的需求。

进程的定义


程序是具有独立功能的一组指令或一组语句的集合,或者 说是指出处理器执行操作的步骤。程序的执行必须依赖于 一个实体---数据集。 把一个程序在一个数据集上的一次执行称为一个进程。
t0 t1
第n条指令, 暂停 第1条指令

正确描述程序的执行情况

如何描述t1时刻P程序的状态呢?
编译a.c 编译b.c
第1条指令
正在等待I/O操作完成?还是开始编译 b.c?
引入进程后,P为a.c服务时的进程称为Pa, P为b.c服务时的进程称为Pb。 Pa的状态是 等待I/O, Pb的状态是开始执行

为什么要采用多道程序设计

程序的顺序执行 假设一个程序由输入、处理、输出组成,分别用时t0,t1, t2
t0 1 1 t1 t2 t0 2 2 t1 t2
输入 处理
打印
1
2
为什么要采用多道程序设计

程序的并行执行 现代计算机中的硬件使得处理机与外设具备了并行工作的 能力。
t0 1 1 t1 2 2 t2

进程可以并发执行

可重入代码(Reentry code),也叫纯代码(Pure code)是 一种允许多个进程同时访问的代码 可重入就是,一个函数没有执行完成,由于外部因素或内 部调用,又一次进入该函数执行。可重入代码,必须保证 资源的互不影响的使用,比如全局变量,系统资源等。 可重入最简单的理解就是任何变量都是局部变量。可重入 指函数在运行过程中,被中断打断后,待返回时仍然能够 正常运行。这就需要在编写代码时注意全局变量和公用资 源的使用


处理机的利用率为 (100+150)/(300+330) = 250/630 = 39.7%
采用多道程序设计应注意的问题

两道计算问题A和B

A:计算50ms,打印100ms,计算50ms,打印100ms B: 计算50ms,输入80ms,计算100ms,打印100ms
0 50 100 180 150 200 300 400
2、把B进程的向前指针送入C进 程的向前指针。
0
队首指针
PCBA 进程A
PCBC 进程C 0
0
出队过程-队尾进程出队
队首指针 PCBA 进程A PCBB 进程B PCBC 进程C 0 1、把B进程的向后指针改为0 2、把C进程的向前指针送入队 首指针。
0 PCBA 进程A PCBB 进程B 0
队首指针

进程控制块是进程存在的标识,一个刚被创建的进程其初始 状态是就绪态。
进程的创建和撤销

进程的撤销

当一个进程完成了特定任务后,系统收回这个进程所占的工作区和 取消其进程控制块,就撤销了该进程。

操作系统中往往设计一些能完成特定功能且不可中断的过程,这些不 可中断的过程称为原语。用于进程控制的原语有:
为什么要引入进程

在操作系统中,尤其是采用了多道程序设计的系统中,引 入进程是非常重要的。 通常把进程分成系统进程和用户进程两大类。把完成操作 系统功能的进程称为系统进程,完成用户功能的进程称为 用户进程。

进程的属性

动态性 多个不同的进程可以包含相同的程序


把一个能被多个用户同时调用的程序称为可再入的程序。可 再入程序必须是纯代码的,在执行中自身不变。一个可再入 的程序要求调用者提供工作区,以保证程序以同样的方式为 各用户服务。编译程序和操作系统都是可再入的程序。



出队过程-队首进程出队
队首指针 PCBA 进程A PCBB 进程B PCBC 进程C 0 1、把A进程的后续进程B的向前 指针改为0 2、把A进程的向后指针(PCBB 地址)送人队首指针单元
0
队首指针
PCBB 进程B
PCBC 进程C 0
0
出队过程-非队首非队尾进程出队
队首指针 PCBA 进程A PCBB 进程B PCBC 进程C 0 1、把B进程的向后指针送入A进 程的向后指针。

就绪状态


UNIX进程状态

睡眠状态

为了等待某事件让出处理机便进入睡眠状态,进程睡眠时可 能驻留在内存,也有可能被换到磁盘”对换区“中。

创建状态

使用系统调用fork创建进程,创建过程中,处于变迁阶段的 状态称为创建状态,创建状态是进程的初始态,最终会变为 就绪态。
进程消亡前的暂时状态,进程可以调用exit终止自己,进程 终止时变处于僵死状态,它是进程的最后状态,不会发生转 换。回收资源时,进程就消亡。
处理器管理
什么是多道程序设计

让多个计算问题同时装入一个计算机系统的主存储器并行执 行,这种程序设计技术称为多道程序设计。这种计算机系 统称为多道程序设计系统,简称为多道系统。

采用多道程序设计技术要注意下面三方面问题:

存储保护:保证各道程序互不侵犯 程序浮动:程序放在主存的任意区域都能正确执行,甚至在执 行过程中改变存储区都不受影响,这种技术称为程序浮动。 资源的分配和调度:竞争处理器、外围设备
标识信息 说明信息
现场信息

管理信息
进程名/编号 进程状态 等待原因 进程程序存放位置 进程数据存放位置 通用寄存器内容 控制寄存器内容 程序状态字寄器内容 进程优先级 队列指针
进程的创建和撤销

每个进程都有生命周期,即从创建到消亡。 进程的创建

当系统为一个程序分配了一个工作区和建立了一个进程控制 块后就创建了一个进程。
输入 处理
打印
1
2
为什么要采用多道程序设计

采用多道程序设计技术后,能提高整个系统的效率,具体 表现为:

提高了处理机利用率,从而提高单位时间的算题量 充分利用外设资源 发挥了处理器和外围设备以及外围设备之间的并行工作能力

提高资源的利用率,增加了单位时间内的算题量,从而提 高了吞吐量
采用多道程序设计应注意的问题


进程的基本状态

进程有三种基本调度状态


就绪状态(ready):进程已获得除处理机外的所需资源,只要分配 处理器就可执行。 运行状态(running):进程已获得处理机,正在执行。 等待/阻塞状态(blocking):进程在运行过程中,因等待某一事件 (如等待某一输入输出操作完成)而暂停的状态称为阻塞状态,

进Biblioteka Baidu队列的链接
队首指针 PCBA PCBB PCBC 进程C 单向链接 0 队首指针 PCBA 进程A 向后指针 向前指针 PCBB 进程B PCBC 进程C 0 双向链接
进程A
进程B
0
进程队列的链接

一个刚被创建的进程,初始状态为“就绪态”,置于就绪 队列中。 如果一个进程被选中占用处理机,就从就绪队列中退出转 换为“运行态”。 运行过程中可能因为等待I/O传输,进入等待队列。 IO传输结束,进程又退出等待队列进入就绪队列。 一个进程从所在队列中退出称为出队,进入指定的队列中 称为入队,系统负责进程入队和出队的工作称为队列管理。


创建原语:为一个程序分配一个工作区和建立一个进程控制块,并 设置该进程为就绪状态。 撤销原语:一个进程完成工作后,收回它的工作区和进程控制块 阻塞原语:进程运行过程中发生等待事件,把进程改为等待态 唤醒原语:当进程等待的事件发生时,把进程的状态改为就绪态
进程队列的链接

为了便于管理,经常把处于相同状态的进程链接在一起, 称为进程队列。 进程队列可以用进程控制块的链接来形成,同一进程队列 中,通过进程控制块中的队列指针联系起来。链接方式有 两种:单向链接和双向链接。
0
UNIX系统中的进程

UNIX不区分系统进程和用户进程,UNIX的进程既可以 执行用户程序,又可以执行用户程序。 UNIX的进程在执行用户程序时在用户态执行,执行操作 系统程序时在核心态执行。

UNIX进程的组成

UNIX的进程由三部分组成

进程控制块 正文段 :可供多个进程共享的程序 数据段:进程执行时的非共享程序和程序执行时用到的数据
B 输入 处理 打印 A B A A B A B
处理机的利用率为 (100+150)/400= 250/400= 62.5% A总共花费300ms B总共花费350ms,比单道时多花20ms
采用多道程序设计应注意的问题

并行道数和系统效率不成正比

首先,主存空间限制同时装入的程序数量 其次,外设的数量也是制约条件 第三,多个程序同时要求同一资源

程序是静态的文本,进程是动态的过程,进程包括程序和 程序处理的对象(数据集)。
为什么要引入进程

提高资源的利用率

把一个计算问题分成n个独立执行的程序模块,例如输入进 程、打印进程、处理进程,进程间可以并行工作,提高系统 的利用率
假设有编译程序P,将c语言的源文件编译为目标文件,使用 P编译a.c和b.c,两个并行

僵死状态

UNIX进程树

系统启动后,首先把UNIX的核心程序装入主存。 核心程序完成自身初始化工作后,创建系统的第一个进程 -0号进程。0号进程始终在核心态运行,功能是进程进程 调度和让进程在主存与磁盘上进行交换,故也称0号进程 为交换进程。 0号进程创建1号进程,1号进程被称为初始化进程。1号进 程在用户态运行。1号进程为每个用户创建一个login进程, 分别处理各用户的登录过程。 若用户注册登录成功,login进程为用户创建shell进程。

每个进程都有一个专用的user区,存放进程扩充控制块。 仅当占用处理器的进程核心态运行时才能访问自己的user 区。
正文段

在UNIX中把可供多个进程共享的程序称为进程的正文段。 正文段是可再入程序,它由不可被修改的程序和常数组成。 为了管理可共享的正文段,UNIX设置了一张正文表text。

可能延长程序执行时间 两道计算问题A和B

A:计算50ms,打印100ms,计算50ms,打印100ms B: 计算50ms,输入80ms,计算100ms,打印100ms A执行总共需要300ms,占用处理机100ms B执行总共需要330ms,占用处理机150ms

如果两道程序分别单独执行(顺序)
UNIX的进程控制块

为了节省进程控制块所占的主存空间,UNIX把每个进程 控制块分成两部分

进程基本控制块:常驻主存,记录了进程调度时必须使用的 一些信息,进程基本控制块的数据结构称为proc结构 进程扩充控制块:非常驻主存,进程不占用处理器时,不会 对这部分内容进行查询。这部分内容被存放在磁盘上(称为 “对换区”的存储区域),它随着用户程序和数据装入或调出 主存,它的数据结构称为user结构。
proc[ ]
text[ ] 请求正文段 X_caddr X_iptr X_count 主存 页表 file inode
p_addr
p_textp p_spt
磁盘文件
正文段
数据段

进程执行时的非共享程序和程序执行时用到的数据。 UNIX的数据段划分为三部分


用户栈区:进程在用户态的工作区 用户数据区 系统工作区

进程基本控制块

进程基本控制块proc结构的主要信息:



标识信息:包括用户标识和进程标识 进程非常驻主存部分的信息: 通过这些信息可以找到进 程的非常驻部分 有关进程调度的信息:状态、标志、优先级 其他信息
进程扩充控制块

进程控制块的信息

标识 现场保护 主存管理 文件读写 系统调用 进程控制与管理
运行 选中 落选 就绪 等待的时间发生 等待 等待某一事件
进程的三个特性

动态性:执行过程中状态不断发生变化 并发性:进程可同时执行,轮流占用处理器 异步性:执行速度不可预知
进程控制块

为了标识进程,记录各 个进程执行时的情况, 操作系统在创建进程时 为每个进程设置一个进 程控制块(Process Control Block,简称 PCB)。 不同的操作系统,进程 控制块记录信息的内容 与数量是不相同的。一 般情况下,进程控制块 应包含四类信息
相关文档
最新文档