进程及其实现_第1页
进程及其实现_第2页
进程及其实现_第3页
进程及其实现_第4页
进程及其实现_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、主要内容:主要内容: n进程的定义和属性进程的定义和属性 n进程的状态和转换进程的状态和转换 n进程的描述和组成进程的描述和组成 n进程切换与模式切换进程切换与模式切换 n进程的控制和管理进程的控制和管理 进程是操作系统中最基本、重要的概念进程是操作系统中最基本、重要的概念 是多道程序系统出现后,为了刻画系统内部出现是多道程序系统出现后,为了刻画系统内部出现 的动态情况,描述系统内部各道程序的活动规律的动态情况,描述系统内部各道程序的活动规律 引进的一个概念引进的一个概念,所有多道程序设计操作系统都建所有多道程序设计操作系统都建 立在进程的基础上。立在进程的基础上。 从理论角度看,进程是对正在

2、运行的程序过程的抽 象; 从实现角度看,进程是一种数据结构,目的在于清 晰地刻划动态系统的内在规律,有效管理和调度进 入计算机系统主存储器运行的程序。 *对于单任务的操作系统而言,由于任何时候内存中 只有一道程序(计算活动) ,而不是两道或两道以上 的程序(计算活动)在运行,程序(计算)运行的蓝 本(程序)只有一个,程序与计算之间具有一对一的 关系,将依照蓝本(程序)进行的计算活动称为程序 (与蓝本叫法相同)并无明显不妥之处。 *但是在多任务的操作系统环境下,内存中可以同时但是在多任务的操作系统环境下,内存中可以同时 存在两道或两道以上的程序(计算活动)在运行,如存在两道或两道以上的程序(计算

3、活动)在运行,如 果每道程序(计算)运行的蓝本(程序)互不相同,果每道程序(计算)运行的蓝本(程序)互不相同, 则仍以程序(蓝本)的名字呼唤每个计算并无明显不则仍以程序(蓝本)的名字呼唤每个计算并无明显不 妥。但是,如果有某两道程序(计算)运行的蓝本(妥。但是,如果有某两道程序(计算)运行的蓝本( 程序、步骤)相同,只是加工处理的数据(原料)不程序、步骤)相同,只是加工处理的数据(原料)不 同,则称这两个计算是一个程序或两个程序均自相矛同,则称这两个计算是一个程序或两个程序均自相矛 盾。因为问题的实质是一个程序(蓝本)对应了两个盾。因为问题的实质是一个程序(蓝本)对应了两个 或多个计算,程序与

4、计算之间出现了一对多的关系。或多个计算,程序与计算之间出现了一对多的关系。 以以“程序程序”称呼称呼“计算计算”产生了混淆,由此提出了产生了混淆,由此提出了“ 进程进程”这个名词来称呼这个名词来称呼“计算计算”。 1.1.操作系统为什么要引入进程概念操作系统为什么要引入进程概念? ? 一是刻画系统的动态性,发挥系统的并发性,提高资源利用 率。在多道程序设计环境下,程序可以并发执行,一个程序 的任意两条指令之间都可能发生随机事件而引发程序切换。 因而,每个程序的执行都可能不是连续的而是走走停停。 二是它能解决系统的“共享性”,正确描述程序的执行状态。 几个概念: (1)“可再入可再入”程序程序-

5、是指能被多个程序同时调用的程序。是指能被多个程序同时调用的程序。 (2)“可再用可再用”程序程序-被调用过程中自身会被修改,在调被调用过程中自身会被修改,在调 用它的程序退出之前不允许其他程序来调用它。用它的程序退出之前不允许其他程序来调用它。 (3)“可再入可再入”程序具有的性质程序具有的性质:它是纯代码,即它在执行 中自身不被改变;调用它的各程序应提供工作区,因此, “可再入”程序可被多个程序同时调用。 “可再入” 程序举例 编译程序P编译源程序甲,从A点开始工作,执行到B点时需 将信息记到磁盘上,且程序P在B点等待磁盘传输。 为提高系统效率,利用编译程序的“可再入”性,让编译程 序P再为

6、源程序乙进行编译,仍从A点开始工作。 现在怎样来描述编译程序P的状态呢? 称它为在B点等待磁盘传输状态,还是称它为正在从A点开 始执行的状态? 把编译程序P,与服务对象联系起来,P为甲服务就说构成进 程P甲,P为乙服务则构成进程P乙。 两个进程虽共享程序P,但它们可同时执行且彼此按各自的 速度独立执行。可见程序与计算(程序的执行)不再一一对应, 进程是一个既能用来共享资源,又能描述程序并发执行过程 的一个基本单位。 2.进程的概念进程的概念 进程进程(process)是一个可并发执行的具有独立功能的程序关于 某个数据集合的一次执行过程,也是操作系统进行资源分配 和保护的基本单位。 有些系统称进

7、程为“任务”(task)或“活动”(active)。 3.进程的属性进程的属性 (进程与程序比较进程与程序比较) (1)结构性:结构性:进程包含了数据集合和运行于其上的程序。每个 进程至少包含三个组成要素:程序块、数据块和进程控制块。 (2)共享性共享性:同一程序运行于不同数据集合上时,构成不同的 进程。多个不同的进程可以共享相同的程序,所以进程和程 序不是一一对应的。 (函数的递归调用也是不同数据共享相同 函数,在这一点上类似于进程,但不相同,因为函数不是进程) (3)动态性:动态性:进程由创建而产生,由调度而执行,由撤销而消 亡。程序是一组有序指令序列,作为一种系统资源是永久存 在的。 (

8、4)独立性:独立性:进程是系统中资源分配和保护的基本单位,也是 系统调度的独立单位(单线程进程)。 (5)制约性制约性:并发进程之间存在着制约关系,进程在进行的关 键点上需要相互等待或互通消息,以保证程序执行的可再现 性和计算结果的唯一性。 (6)并发性:并发性:在一个单处理器系统环境下,各个进程轮流占用 处理器 。 1.1.三态模型三态模型 (1)(1)进程的三种基本状态进程的三种基本状态 一个进程从创建而产生至撤销而消亡的整个生命周期,可用一 组状态加以刻划,按进程在执行过程中的状况至少定义三种不 同的进程状态: 运行态(运行态(runningrunning):进程占有处理器正在运行。 就

9、绪态(就绪态(readyready):进程具备运行条件,等待系统分配处理器 以便运行。 等待态(等待态(waitwait):又称为阻塞(blocked)态或睡眠(sleep) 态,进程不具备运行条件,正在等待某个事件的完成。 通常,当一个进程创建后,就处于就绪状态。每个进程在执行 过程中,任一时刻当且仅当处于上述三种状态之一。在一个进 程执行过程中,它的状态将会发生变化。 (2)引起进程状态转换的具体原因引起进程状态转换的具体原因 运行态运行态等待态:等待态:等待使用资源或某事件发生 ; 等待态等待态就绪态:就绪态:资源得到满足或事件发生 ; 运行态运行态就绪态就绪态:运行时间片到;出现有更高

10、优先权进程。 就绪态就绪态运行态运行态:CPU空闲时选择一个就绪进程。 运行态运行态 就绪态就绪态等待态等待态 选中 落选 出现等待事件 等待事件结束 进程三态模型及其状态转换 2.2.五态模型五态模型 五态模型在三态模型的基础上,引进了新建态和终止 态。 新建态新建态-对应进程刚被创建的状态。对应进程刚被创建的状态。为一个新进 程创建必要的管理信息,它并没有被提交执行,而是 在等待操作系统完成创建进程的必要操作。 终止态终止态-进程的终止。进程的终止。首先,等待操作系统进 行善后,然后,退出主存。进入终止态的进程不再执 行,但依然临时保留在系统中等待善后。一旦其他进 程完成了对终止态进程的信

11、息抽取之后,系统将删除 该进程。 运行态 就绪态等待态 选 中落 选 出现等待事件 等待事件结束 新建态终止态 进程五态模型及其转换进程五态模型及其转换 进程状态转换的具体原因进程状态转换的具体原因 NULLNULL新建态:新建态:创建一个子进程。创建一个子进程。 新建态新建态就绪态就绪态:系统完成了进程创建操作,且当前系统的系统完成了进程创建操作,且当前系统的 性能和内存的容量均允许。性能和内存的容量均允许。 运行态运行态终止态终止态:一个进程到达自然结束点,或出现了无法一个进程到达自然结束点,或出现了无法 克服的错误,或被操作系统所终结,或被其他有终止权的进程克服的错误,或被操作系统所终结

12、,或被其他有终止权的进程 所终结。所终结。 终止态终止态NULLNULL:完成善后操作。完成善后操作。 就绪态就绪态终止态:终止态:某些操作系统允许父进程终结子进程。某些操作系统允许父进程终结子进程。 等待态等待态终止态:终止态:某些操作系统允许父进程终结子进程。某些操作系统允许父进程终结子进程。 3.3.具有挂起功能系统的进程状态及其转换具有挂起功能系统的进程状态及其转换 (1)为什么要有“挂起”状态? 由于进程的不断创建,系统资源已不能满足进程运行的要求,由于进程的不断创建,系统资源已不能满足进程运行的要求, 就必须把某些进程挂起(就必须把某些进程挂起(suspendsuspend),对换

13、到磁盘镜像区中,),对换到磁盘镜像区中, 暂时不参与进程调度,起到平滑系统操作负荷的目的。暂时不参与进程调度,起到平滑系统操作负荷的目的。 (2)引起进程挂起的主要原因 系统中的进程均处于等待状态,需要把一些阻塞进程对换出系统中的进程均处于等待状态,需要把一些阻塞进程对换出 去,腾出足够内存装入就绪进程运行。去,腾出足够内存装入就绪进程运行。 进程竞争资源,导致系统资源不足,负荷过重,需要挂起部进程竞争资源,导致系统资源不足,负荷过重,需要挂起部 分进程以调整系统负荷分进程以调整系统负荷, ,保证系统的实时性或让系统正常运行。保证系统的实时性或让系统正常运行。 定期执行的进程(如审计、监控、记

14、账程序)对换出去,以定期执行的进程(如审计、监控、记账程序)对换出去,以 减轻系统负荷。减轻系统负荷。 用户要求挂起自己的进程,以便进行某些调试、检查和改正。用户要求挂起自己的进程,以便进行某些调试、检查和改正。 父进程要求挂起后代进程,以进行某些检查和改正。父进程要求挂起后代进程,以进行某些检查和改正。 操作系统需要挂起某些进程,检查运行中资源使用情况,以操作系统需要挂起某些进程,检查运行中资源使用情况,以 改善系统性能改善系统性能; ;或当系统出现故障或某些功能受到破坏时,需或当系统出现故障或某些功能受到破坏时,需 要挂起某些进程以排除故障。要挂起某些进程以排除故障。 (3)(3)进程增加

15、的两个新状态进程增加的两个新状态 挂起就绪态(挂起就绪态(ready suspendready suspend):表明进程具备运行条件但目):表明进程具备运行条件但目 前在辅助存储器中,当它被对换到主存才能被调度执行。前在辅助存储器中,当它被对换到主存才能被调度执行。 挂起等待态(挂起等待态(blocked suspendblocked suspend):表明进程正在等待某一个):表明进程正在等待某一个 事件且在辅助存储器中。事件且在辅助存储器中。 挂起 等待事件结束 出现等 待事件 解除 挂起 挂起 落选 选中 运行态 就绪态 等待事件结束 终止态 新建态 挂起就绪 态 解除 挂起 挂起 挂

16、起等待 态 等待态 提交 提交 具有挂起功能的进程状态及转换 (4)(4)引起进程状态转换的具体原因引起进程状态转换的具体原因 等待态等待态挂起等待态:挂起等待态:当前不存在就绪进程,至少一个等待 态进程将被对换出去成为挂起等待态; 挂起等待态挂起等待态挂起就绪态:挂起就绪态:引起进程等待的事件发生之后, 相应的挂起等待态进程将转换为挂起就绪态。 挂起就绪态挂起就绪态就绪态:就绪态:内存中没有就绪态进程,或挂起就绪 态进程具有比就绪态进程更高的优先级,将把挂起就绪态进 程转换成就绪态。 就绪态就绪态挂起就绪态:挂起就绪态:系统根据当前资源状况和性能要求, 决定把就绪态进程对换出去成为挂起就绪态

17、。 挂起等待态挂起等待态等待态:等待态:当一个进程等待一个事件时,原则上 不需要把它调入内存。但是,当一个进程退出后,主存已经 有了足够的自由空间,而某个挂起等待态进程具有较高的优 先级并且操作系统已经得知导致它阻塞的事件即将结束,便 可能发生这一状态变化。 运行态运行态挂起就绪态:挂起就绪态:当一个高优先级挂起等待进程的等待 事件结束后,它将抢占CPU,而此时主存不够,从而可能导致 正在运行的进程转化为挂起就绪态。运行态的进程也可以自 己挂起自己。 新建态新建态挂起就绪态:挂起就绪态:根据系统当前资源状况和性能要求, 可以将新建进程对换出去成为挂起就绪态。 注意:挂起的进程将不参与低级调度直

18、到它们被对注意:挂起的进程将不参与低级调度直到它们被对 换进主存。换进主存。 (5)挂起进程具有如下特征挂起进程具有如下特征 该进程不能立即被执行。 挂起进程可能会等待事件,但所等待事件是独立于挂起条件的, 事件结束并不能导致进程具备执行条件。 进程进入挂起状态是由于操作系统、父进程或进程本身阻止它 的运行。 结束进程挂起状态的命令只能通过操作系统或父进程发出。 进程映像的组成进程映像的组成 进程映像即进程实体,主要包括: 进程程序块:即被执行的程序,规定了进程一次运行应完成的 功能。通常它是纯代码,可被多个进程共享。 进程数据块:是进程的私有地址空间,存放各种私有数据,用 户栈也要在数据块中

19、开辟,用以函数调用时存放栈帧、局部变 量等参数。 系统核心栈:每一个进程都将捆绑一个核心堆栈,进程在核心 态工作时使用,用来保存中断/异常现场,保护函数调用返回的 参数和返回地址。 进程控制块:每一个进程都将捆绑一个进程控制块,用来存储 进程的标志信息、现场信息和控制信息。进程创建时建立进程 控制块,进程撤销时回收进程控制块,进程控制块与进程一一 对应。 总结: 进程有四个要素组成:进程控制块、程序块、数据块、核心栈。 如果只具有前三个要素,而共享内存空间,则称为“用户线 程”; 如果完全没有用户空间,则称为“内核线程”。 进程上下文(进程上下文(contextcontext)-操作系统中把进

20、程物理实体和支持 进程运行的环境合称为进程上下文(进程上下文(contextcontext)。 当系统调度新进程占有处理器时,新老进程随之发生上下文 切换。 进程的运行被认为是在上下文中执行。 (2)(2)进程上下文的三个组成部分进程上下文的三个组成部分 用户级上下文用户级上下文(user-level-context)(user-level-context):由用户进程的正文(程 序块)、数据块(含共享数据块)和用户堆栈组成。它们占用进 程的虚拟地址空间。 寄存器上下文寄存器上下文(register-level-context):由程序状态字(PSW) 指令计数器、控制寄存器、通用寄存器、栈指

21、针等组成。 系统级上下文系统级上下文(system-level-context)(system-level-context):包括进程控制块、内 存管理信息、核心栈等组成。 2.2.进程控制块进程控制块 每个进程都有一个也只有一个进程控制块PCB(Process Control Block) 进程控制块PCB是操作系统用于记录和刻划进程状态及有关信 息的数据结构,也是操作系统掌握进程的唯一资料结构,是操 作系统控制和管理进程的主要依据。它包括了进程执行时的情 况,以及进程让出处理器后所处的状态、断点等信息。 进程控制块包含三类信息:标识信息、现场信息、控制信息 标识信息:用于唯一地标识一个进程

22、,常常分为由用户使用 的外部标识符和被系统使用的内部标识号。几乎所有操作系统 中进程都被赋予一个唯一的、内部使用的数值型的进程号,操 作系统的其他控制表可以通过进程号来交叉引用进程控制表。 常用的标识信息有进程标识符、父进程的标识符、用户进程名、 用户组名等。 现场信息:用于保留进程运行时存放在处理器现场中的各种信 息,进程让出处理器时必须把处理器现场信息保存到PCB中, 当该进程重新恢复运行时也应恢复处理器现场。现场信息包括: 通用寄存器内容、控制寄存器(如PSW寄存器的)内容、用户 堆栈指针、系统堆栈指针等。 控制信息:常用的控制信息包括: 1)进程调度相关信息,如进程状态、等待事件和等待

23、原因、 进程优先级、队列指引元等; 2)进程组成信息,如正文段指针、数据段指针; 3)进程间通信相关信息,如消息队列指针、信号量等互斥和 同步机制; 4)进程在二级(辅助)存储器内的地址信息; 5)CPU资源的占用和使用信息,如时间片余量、进程己占用 CPU的时间、进程己执行时间总和,记帐信息; 6)进程特权信息,如在内存访问权限和处理器状态方面的特 权; 7)资源清单,包括进程所需全部资源、已经分得的资源,如 主存资源、I/O设备、打开文件表等。 进程控制块的集合事实上定义了一个操作系统的当前状态。进程控制块的集合事实上定义了一个操作系统的当前状态。 进程控制块的使用权或修改权均属于操作系统

24、程序,包括调度进程控制块的使用权或修改权均属于操作系统程序,包括调度 程序、资源分配程序、中断处理程序、性能监视和分析程序等。程序、资源分配程序、中断处理程序、性能监视和分析程序等。 操作系统是根据操作系统是根据PCBPCB来对并发执行的进程进行控制和管理的。来对并发执行的进程进行控制和管理的。 3.进程队列及其管理 处于同一状态的所有PCB链接在一起的数据结构称为进程队列 (Process Queues)。 进程队列有三种组织方式:线性方式、链接方式、索引方式 (1)线性方式:操作系统根据系统内进程的最大数目,静态 地分配主存中地某块空间,所有进程的PCB都组织在一个线性 表里。 (2)链接

25、方式:通过PCB中的链接指针将其链接成队列。 单向链接:在每一个PCB中设置一个链接指针,指出本队 列中紧随其后的下一个PCB在PCB表中的编号或者地址。 双向链接时:在每一个PCB中设置两个链接指针,前向链 接指针指出本队列中上一个PCB在PCB表中的编号或者地 址;后向链接指针指出本队列中紧随其后的下一个PCB在 PCB表中的编号或者地址。 为了标志和识别队列,每一个队列均设置队列标志,存放于内核空 间里。 单向链接的队列标志指针指向队列中第一个PCB在PCB表中的编 号或者地址; 双向链接的前向队列标志指针指向队列中第一个PCB在PCB表中 的编号或者地址;后向队列标志指针队列中最后一个

26、PCB在PCB表 中的编号或者地址; P99,图2.14 不同状态的进程可以排成不同的队列,如运行队列、就绪队列、等 待队列: 运行队列只有一个进程; 就绪队列可以按照优先级或者先进先出的原则排队,也可以按 照进程优先级的高低分成多个就绪队列; 等待队列通常有多个,对应不同的等待状态; 还可以将空闲PCB链接成自由队列以便使用。 一个进程从所在队列退出的事件叫做出队;一个进程排入指定队列 的事件叫做入队。 处理器调度中管理进程出队入队的模块叫做队列管理模块。 (3)索引方式:是线性方式的一种改进。 利用索引表记录不同状态的PCB地址,系统建立若干索引表; 状态相同的PCB组织在同一张索引表中,

27、每个索引表的表目 中存放PCB在PCB表中的编号或者地址; 各索引表在主存中的起始地址放在内核的专用指针单元里。 P99,图2.15 Linux进程链表(略)。 进程上下文切换 中断(异常)是激活操作系统的唯一方法,它暂时中止当前运 行进程的执行,把处理器切换到操作系统的控制之下。当操作 系统获得了处理器的控制权之后,它就可以实现进程切换,所 以,进程切换必定在核心态而不是用户态下发生。 进程切换是让处于运行态的进程中断运行,让出处理器,这时 要做一次进程上下文切换、即保存老进程状态而装入被保护了 的新进程的状态,以便新进程运行。 进程切换时,一个进程让出处理器,其寄存器上下文将被保 存到系统

28、级上下文的相应的现场信息位置,这时内核就把这些 信息压入系统栈的一个上下文层。当内核处理中断返回,或一 个进程完成其系统调用返回用户态,或内核进行上下文切换时, 内核就从系统栈弹出一个上下文层。因此,上下文的切换总会 引起上下文的压入和弹出堆栈。 允许发生进程上下文切换的四种情况允许发生进程上下文切换的四种情况 (1)当进程进入等待态时; (2)当进程完成其系统调用返回用户态,但不是最有资格获得 CPU时; (3)当内核完成中断处理,进程返回用户态但不是最有资格获 得CPU时; (4)当进程执行结束时。 进程切换的步骤进程切换的步骤 保存被中断进程的处理器现场信息。保存被中断进程的处理器现场信

29、息。 修改被中断进程的进程控制块的有关信息,如进程状态等。修改被中断进程的进程控制块的有关信息,如进程状态等。 把被中断进程的进程控制块加入有关队列。把被中断进程的进程控制块加入有关队列。 选择下一个占有处理器运行的进程。选择下一个占有处理器运行的进程。 修改被选中进程的进程控制块的有关信息。修改被选中进程的进程控制块的有关信息。 根据被选中进程设置操作系统用到的地址转换和存储保护信根据被选中进程设置操作系统用到的地址转换和存储保护信 息。息。 根据被选中进程的上下文信息恢复处理器现场根据被选中进程的上下文信息恢复处理器现场。 注意,注意,一般情况下,一般情况下,用户态到核心态或者核心态到用用

30、户态到核心态或者核心态到用 户态的转变是户态的转变是CPUCPU模式的改变,而不是进程上下文切模式的改变,而不是进程上下文切 换。换。 2. 2. 进程上下文切换的时机进程上下文切换的时机 进程在运行过程中执行系统调用,产生中断或者异常时,操 作系统从当前进程手里获得CPU控制权,此后进程切换可以在 任意时刻开始。 系统发现当前进程的时间片耗尽,或者执行一个阻塞式系统 调用,都会导致当前进程让出处理器,请求重新调度,内核转 向低级调度程序运行,当低级调度程序选中新的就绪进程之后, 就会执行进程上下文切换。 注意:低级调度和进程切换并不一定总是连续发生!低级调度和进程切换并不一定总是连续发生!

31、在中断处理程序工作期间,来了一个更高优先级的中断,在中断处理程序工作期间,来了一个更高优先级的中断, 当这个高优先级中断处理结束后,不会马上进行进程切换;当这个高优先级中断处理结束后,不会马上进行进程切换; 在各种原语操作、现场保护和恢复过程中,即使发生请在各种原语操作、现场保护和恢复过程中,即使发生请 求低级调度的事件,也不能立刻执行低级调度和进行进程求低级调度的事件,也不能立刻执行低级调度和进行进程 切换。切换。 在不能够立刻进行调度和切换的情况下,系统采用置请求调在不能够立刻进行调度和切换的情况下,系统采用置请求调 度,延迟至敏感性操作完成之后才进行低级调度和进程切换。度,延迟至敏感性操

32、作完成之后才进行低级调度和进程切换。 3. 3. 处理器模式切换处理器模式切换 当中断发生的时候,暂时中断正在执行的用户进程,把进程从 用户状态切换到内核状态,去执行操作系统例行程序以获得服 务,这就是一次模式切换。此时,该进程仍在自己的上下文中 执行,仅仅模式变了。内核在被中断了的进程的上下文中对这 个中断事件作处理,即使该中断事件可能不是此进程引起的。 被中断的进程可以是正在用户态下执行的,也可以是正在核心 态下执行的,内核都要保留足够信息以便在后来能恢复被中断 了的进程执行。 模式切换的步骤模式切换的步骤 保存被中断进程的处理器现场信息。 把用户状态切换到内核状态,以便执行中断处理程序。

33、 如果处理中断,可以根据规定的中断级别设置中断屏蔽位。 根据系统调用号或者中断号,从系统调用表或者中断入口地 址表中找到系统服务程序或者中断处理程序的地址。 模式切换和进程切换的联系与区别模式切换和进程切换的联系与区别 模式切换不一定会引起进程状态的转换,也不一定 引起进程切换。 在完成系统调用服务或者中断处理之后,可通过模 式切换来恢复被中断进程的运行。 CPU上所执行的进程在任意时刻必须处在三个活动范 围之内: 用户空间中,处于进程上下文,用户进程在运行, 使用用户栈; 内核空间中,处于进程上下文,内核代表某进程 在运行,使用核心栈 内核空间中,处于中断上下文,与进程无关,中 断服务程序正

34、在处理特定的中断。(Intel x86不 提供中断专用栈,使用核心栈)。 P102 Unix/Linux的进程切换与模式切换 中断是激活操作系统的唯一途径. 在核心态下,处理机执行用户程序指令,在核心态下,处理机执 行操作系统内核代码.在计算机中,有一些操作需要委托操作系 统代为执行,一些操作用户程序可以自行完成. 可以将操作系统比做国家行政机构(如法庭等职能部门),用户 程序比做百姓、公民,有一些事情百姓可自己做主办理,如衣食 住行;另有一些事情必须通过国家行政机关办理,如打官司、办 理身份证等.事情在国家行政机关办理的过程相当于处于核心 态,百姓自己办理的部分相当于处于用户态. 唤醒 核心

35、态运行 系统调用 或中断(隐 含模式切 换) 模式切换 用户态运行 等待状态就绪状态 发生事件调度进程 中断、中断 返回 允许的上下 文切换 进程上下文切换和模式切换 处理器管理的一个主要工作是对进程的控制,包括:处理器管理的一个主要工作是对进程的控制,包括:创建进程、创建进程、 阻塞进程、唤醒进程、挂起进程、激活进程、终止进程和撤销阻塞进程、唤醒进程、挂起进程、激活进程、终止进程和撤销 进程进程等。等。 这些控制和管理功能是由这些控制和管理功能是由操作系统中的原语来实现的。操作系统中的原语来实现的。 原语原语(Primitive)(Primitive)是在核心态下运行、完成系统特定功能的不

36、可分割过程。 原语和机器指令类似,其特点是执行过程中不允许被中断, 是一个不可分割的基本单位,原语的执行是顺序的而不可能是 并发的。 一种原语的实现方法是以系统调用方式提供原语接口,且采 用屏蔽中断的方式来实现原语功能,以保证原语操作不被打断 的特性。 原语和系统调用都使用访管指令实现,具有相同的调 用形式,但 原语由内核实现,系统调用由系统进程或系统服务器 实现; 原语不可中断,系统调用执行时允许被中断,甚至有 些操作系统中系统进程或系统服务器在用户态运行。 通常情况下,原语提供给系统进程或系统服务器使用 (反之决不会形成调用关系),系统进程或系统服务 器提供系统调用给系统程序(和用户)使用

37、,系统程 序提供高层功能给用户使用。 部分进程控制原语:部分进程控制原语: 1.1.进程创建进程创建 (1)(1)进程创建的事件来源进程创建的事件来源 提交一个批处理作业。 在终端上一个交互式作业登录。 操作系统创建一个服务进程。 存在的进程创建(孵化(spawn)新的进程。 生成其它进程的进程称父进程(Parent Process), 被生成进程称子进程(Child Process)、即一个父进 程可以创建子进程,从而形成树形结构。 (2)进程的创建过程 在主进程表中增加一项,并从PCB池中取一个空白PCB。 为新进程的进程映像分配地址空间。传递环境变量,构造共 享地址空间。 为新进程分配资源,除内存空间外,还有其他各种资源。 查找辅存,找到进程正文段并装入到进程地址空间的正文区。 初始化进程控制块(如状态、PSW、栈等),为新进程分配 进程标识符。 把进程加入就绪进程队列,或直接将进程投入运行。 通知操作系统的某些模块,如记账程序、性能监控程序。 实例实例 P104,Unix/Linux进程创建进程创建 Linux fork( ) 创建子进程但父子进程不共享内容 Linux clone( ) 允许定义父子进程共享的内容 Li

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论