23进程及其实现内容摘要:

统例行程序以获得服务,这就是一次 模式切换 , •内核在被中断了的进程的上下文中对这个中断事件作处理,即使该中断可能不是此进程引起的。 CPU模式切换 (2) 模式切换的步骤 •保存被中断进程的处理器现场信息。 •根据中断号置程序计数器。 •把用户状态切换到内核状态 ,以便执行中断处理程序。 CPU模式切换与进程上下文切换 •模式切换不同于进程切换,它并不引起进程状态变化,也不一定引起进程的切换,在完成了中断调用之后,完全可以再通过一次逆向的模式切换来继续执行用户进程。 UNIX进程上下文切换和模式切换 (1) •两类进程:系统进程和用户进程 , 系统进程在核心态下执行操作系统代码 ,用户进程在用户态下执行用户程序。 • 用户进程因中断和系统调用进入内核态 , 系统进程开始执行 , 两个进程使用同一个 PCB, 实质上是一个进程。 但所执行的程序不同 , 映射到不同物理地址空间 、 使用不同堆栈。 UNIX中进程上下文切换和模式切换 (2) 核心态 运行 系统调用或中断 (隐含模式切换 ) 模式切换 用户态 运行 等待 状态 就绪 状态 发生事件 唤醒 调度进程 中断、 中断返回 允许的上下文切换切换 进程的控制 原语 (1) •处理器管理的一个主要工作是对进程的控制,包括:创建进程、阻塞进程、唤醒进程、挂起进程、激活进程、终止进程和撤销进程等。 •这些控制和管理功能是由操作系统中的原语来实现的。 原语 (2) • 原语 (Primitive)是在管态下执行、完成系统特定功能的过程。 •原语和机器指令类似,其特点是执行过程中不允许被中断,是一个不可分割的基本单位,原语的执行是顺序的而不可能是并发的。 •一种原语的实现方法是以系统调用方式提供原语接口,且采用屏蔽中断的方式来实现原语功能,以保证原语操作不被打断的特性。 进程的创建 (1) 进程创建来源于以下事件 : •提交一个批处理作业。 •在终端上交互式的登录。 •操作系统创建一个服务进程。 •存在的进程孵化 ( spawn) 新的进程。 进程的创建 (2) • 生成进程称父进程 (Parent Process), 被生成进程称子进程 (Child Process) 、 即一个父进程可以创建子进程 , 从而形成树形结构。 进程的创建过程 (1) • 在进程表中增加一项 , 并从 PCB池中取一个空白 PCB。 • 为新进程的进程映像分配地址空间。 传递环境变量 , 构造共享地址空间。 • 为新进程分配资源 , 除内存空间外 , 还有其他各种资源。 进程的创建过程 (2) • 查找辅存 , 找到进程正文段并装到正文区。 • 初始化进程控制块 , 为新进程分配进程标识符 , 初始化 PSW。 • 加入就绪进程队列 , 或直接将进程投入运行。 • 通知操作系统的某些模块 , 如记账程序 、 性能监控程序。 进程的创建过程 (3) •Linux fork( ) 创建子进程但父子进程不共享内容 •Linux clone( ) 允许定义父子进程共享的内容 •Linux中认为线程就是共享上下文的进程 2 进程的阻塞和唤醒 (1) 进程阻塞的步骤如下: •停止进程执行 , 保存现场信息到PSW。 •修改 PCB的有关内容 , 如进程状态由运行改为等待等。 •把修改状态后的 PCB加入相应等待进程队列。 进程的阻塞和唤醒 (2) 进程唤醒的步骤如下: •从相应等待进程队列中取出 PCB。 •修改 PCB有关信息 , 如进程状态等。 •把修改后 PCB加入有关就绪进程队列。 3 进程的撤销 (1) 进程撤销的主要原因 (1): •进程正常运行结束。 •进程执行了非法指令。 •进程在常态下执行了特权指令。 •进程运行时间超越了分给的最大时间段。 •进程等待时间超越了设定的最大等待时间。 •进程申请的内存超过了系统能提供最大量。 •越界错误。 进程的撤销 (2) 进程撤销的主要原因 (2): •对共享内存区的非法使用。 •算术错误 , 如除零和操作数溢出。 •严重的输入输出错误。 •操作员或操作系统干预。 •父进程撤销其子进程。 •父进程撤销。 •操作系统终止。 进程的撤销 (3) 撤销原语终止进程具体步骤 •根据撤销进程标识号 , 从相应队列中找到它的 PCB; •将该进程拥有的资源归还给父进程或操作系统; •若该进程拥有子进程 , 应先撤销它的所有子孙进程 , 以防它们脱离控制; •撤销进程出队 , 将它的 PCB归还到 PCB池。 4 进程的挂起和激活 (1) • 挂起原语执行过程如下:检查要被挂起进程的状态,若处于活动就绪态就修改为挂起就绪,若处于阻塞态,则修改为挂起阻塞。 •被挂起进程 PCB的非常驻部分要交换到磁盘对换区。 进程的挂起和激活 (2) •激活原语主要工作:把进程 PCB非常驻部分调进内存,修改它的状态,挂起等待态改为等待态,挂起就绪态改为就绪态,排入相应队列中。 •挂起原语既可由进程自己也可由其他进程调用,但激活原语却只能由其他进程调用。 实例研究 :UNIX SVR4的 进程管理 • UNIX SVR4采用基于用户进程的运行模型 , 操作系统功能在用户进程的环境中执行 , 需要在用户和内核模式间切换。 • UNIX SVR4允许两类进程:用户进程和系统进程。 系统进程在内核模式下执行 ,完成系统的一些重要功能。 用户进程在用户模式下执行用户程序 , 系统调用 、中断和异常将引起模式切换。 UNIX SVR4 进程状态 • user running: • kernel running: • preempted: • ready to run, in memory: • Asleep in memory: •ready to run, swapped: •sleeping, swapped: •zombie: UNIX SVR4进程状态及其转换 内存就绪 用户态 运行 内核态 运行 被剥夺 就绪换出 创建 内存 睡眠 睡眠 换出 僵死 返回用户模式 系统调用或中断 返回 剥夺 选中 退出 中断, 中断返回。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。