ch2-2.3进程及其实现-old_第1页
ch2-2.3进程及其实现-old_第2页
ch2-2.3进程及其实现-old_第3页
ch2-2.3进程及其实现-old_第4页
ch2-2.3进程及其实现-old_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

2 3进程及其实现 2 3 1进程的定义和属性2 3 2进程的状态和转换2 3 3进程的描述和组成2 3 4进程切换与模式切换2 3 5进程的控制和管理 2 3 1进程的定义和性质 进程定义 进程是可并发执行的程序在某个数据集合上的一次计算活动 也是操作系统进行资源分配 保护和管理的基本单位 进程是一个既能用来共享资源 又能描述程序并发执行过程的系统基本单位 进程是一种有生命周期的动态实体 支持程序执行的系统机制 进程在执行过程中拥有独立的主存空间 操作系统为什么要引入进程概念 1 原因1 刻画系统的动态性 发挥系统的并发性 提高资源利用率 程序是并发执行的 即不是连续而是走走停停的 程序的并发执行引起资源共享和竞争问题 执行的程序不再处在封闭环境中 程序 自身只是计算任务的指令和数据的描述 是静态概念无法刻画程序的并发特性 系统需要寻找一个能描述程序动态执行过程的概念 这就是进程 操作系统为什么要引入进程概念 2 原因2 它能解决系统的 共享性 正确描述程序的执行状态 可再用 程序 可再入 程序 可再入 程序具有的性质 可再用 程序 在调用它的程序退出之前 不允许其他程序来调用 可再入 程序 可以被多个程序同时调用 可再入 程序举例 程序与进程之间的区别 进程更能真实地描述并发 而程序不能进程是由程序 数据和控制块三部分组成的程序是静态的 进程是动态的进程有生命周期 有诞生有消亡 短暂的 而程序是相对长久的一个程序可对应多个进程 一个进程可包含多个程序进程具有创建其他进程的功能 而程序没有 进程的属性 结构性 包含数据集合和运行在其上的程序 共享性 多个进程可共享一个程序 动态性 一次执行过程 有生命周期 独立性 体现在资源分配 系统调度上 制约性 运行时 要相互等待 相互制约 并发性 并发地执行 2 3 2进程的状态和转换 三种进程状态运行态 Running 进程占有CPU 并在CPU上运行就绪态 Ready 一个进程已经具备运行条件 但由于无CPU 暂时不能运行的状态 当调度给其CPU时 立即可以运行 等待态 wait 又叫阻塞态 封锁态 睡眠态指进程因等待某种事件的发生而暂时不能运行的状态 即使CPU空闲 该进程也不可运行 进程三态模型及其状态转换 进程三态模型及其状态转换 就绪 运行调度程序选择一个新的进程运行运行 就绪运行进程用完了时间片运行进程被中断 因为一高优先级进程处于就绪状态运行 等待当一进程必须等待时OS尚未完成服务对一资源的访问尚不能进行初始化I O且必须等待结果等待某一进程提供输入 IPC 等待 就绪当所等待的事件发生时 进程五态模型及其转换 增加 新建态 终止态新建态 new OS已创建一进程所必要的工作已构造了进程标识符已创建了管理进程所需的表格因为资源有限 推迟了新进程的提交 此时进程没有进入就绪队列终止态 退出exit 态中止后进程移入该状态它不再有执行资格表格和其它信息暂时由辅助程序保留OS或其他进程完成了对终止态进程的善后处理 信息抽取 之后 系统回收被占用资源 并删除该进程 进程五态模型及其转换 进程五态模型及其转换 NULL 新建态 创建一个子进程 新建态 就绪态 系统完成了进程创建操作 且当前系统的性能和内存的容量均允许 运行态 终止态 一个进程到达自然结束点 或出现了无法克服的错误 或被操作系统所终结 或被其他有终止权的进程所终结 终止态 NULL 完成善后操作 就绪态 终止态 某些操作系统允许父进程终结子进程 进程的挂起 进程为什么要有 挂起 状态 为了让某些进程暂时不参与低级调度 释放它占有的资源 以平滑系统负荷的目的而需引入挂起态 进程挂起的原因 引起进程挂起的原因多种多样 包括 资源不足 系统故障出现 用户调试程序等等 具有挂起功能的进程状态及其转换 挂起等待状态 进程在外存并等待某事件的出现挂起就绪状态 进程在外存 但只要进入内存 即可运行就绪状态 进程在内存且可立即进入运行状态等待状态 进程在内存并等待某事件的出现 具有挂起功能的进程状态及其转换 具有挂起功能的进程状态及其转换 挂起 把一个进程从内存转到外存可能有以下几种情况等待 挂起等待 没有进程处于就绪状态或就绪进程要求更多内存资源时 发生这种转换 以提交新进程或运行就绪进程就绪 挂起就绪 当有高优先级阻塞 系统认为会很快就绪的 进程和低优先级就绪进程时 系统会选择挂起低优先级就绪进程运行 挂起就绪 对抢占式系统 当有高优先级阻塞挂起进程因事件出现而进入就绪挂起时 系统可能会把运行进程转到挂起就绪状态 具有挂起功能的进程状态及其转换 激活 把一个进程从外存转到内存 可能有以下几种情况 挂起就绪 就绪 没有就绪进程或挂起就绪进程优先级高于就绪进程时 发生转换挂起等待 等待 当一个进程释放足够内存时 系统会把一个高优先级挂起阻塞 系统认为会很快出现所等待的事件 进程转换为等待状态 挂起进程具有如下特征 该进程不能立即被执行 挂起进程可能会等待事件 但所等待事件是独立于挂起条件的 事件结束并不能导致进程具备执行条件 进程进入挂起状态是由于操作系统 父进程或进程本身阻止它的运行 结束进程挂起状态的命令只能通过操作系统或父进程发出 2 3 3进程的描述和组成 1 进程映象进程控制块进程程序块进程核心栈进程数据块进程 用户线程 内核线程 进程的描述和组成 2 操作系统中把进程物理实体和支持进程运行的环境合称为进程上下文 当系统调度新进程占有处理器时 新老进程随之发生上下文切换 进程的运行被认为是在上下文中执行 进程的描述和组成 2 进程上下文组成 用户级上下文 系统级上下文 寄存器上下文 2进程控制块 进程控制块PCB 是操作系统用于记录和刻划进程状态及有关信息的数据结构 也是操作系统掌握进程的唯一资料结构 它包括进程执行时的情况 以及进程让出处理器后所处的状态 断点等信息 进程控制块包含三类信息标识信息现场信息控制信息 3进程队列及其管理 1 处于同一状态的所有PCB链接在一起的数据结构称为进程队列 同一状态进程的PCB既可按先来先到的原则排成队列 也可按优先数或其它原则排队 通用队列组织方式 线性方式 链接方式索引方式 进程入队和出队 进程队列及其管理 2 PCB表 运行队列指针 就绪队列指针 等待队列1指针 等待队列2指针 空闲进程队列指针 链接方式 运行队列指针 就绪表指针 等待表1指针 索引方式 PCB表 PCB1 PCB2 PCB3 PCB4 PCB5 PCB6 PCBn 空闲表指针 等待索引表1 等待表2指针 Linux进程链表 双向循环链表 prev task和next task 进程可运行队列链表 prev run和next run 散列链表 pidhash next和pidhash pprev 等待队列链表 TASK INTERRUPTIBLE和TASK UNINTERRUPTIBLE 2 3 4进程切换与CPU模式切换 进程切换是让处于运行态的进程中断运行 让出处理器 这时要做一次进程上下文切换 即保存老进程状态而装入被保护了的新进程的状态 以便新进程运行 进程切换的步骤 保存被中断进程的处理器现场信息修改被中断进程的进程控制块有关信息 如进程状态等把被中断进程的PSW加入有关队列选择下一个占有处理器运行的进程修改被选中进程的PSW的有关信息根据被选中进程设置操作系统用到的地址转换和存储保护信息根据被选中进程恢复处理器现场 调度和切换时机问题 请求调度的事件发生后 就会运行低级调度程序 低级调度程序选中新的就绪进程后 就会进行上下文切换 实际上 由于种种原因 调度和切换并不一定能一气呵成 通常的做法是 由内核置上请求调度标志 延迟到上述工作完成后再进行调度和进程上下文切换 Linux进程调度标志位need resched Windows延迟过程调用DPC dispatch软件中断 处理器模式切换 当中断 系统调用发生时 暂时中断正在执行的用户进程 把进程从用户状态切换到内核状态 去执行操作系统服务程序以获得服务 这就是一次模式切换 内核在被中断了的进程的上下文中对这个中断事件作处理 即使该中断可能不是此进程引起的 模式切换的步骤 1 保存被中断进程的处理器现场信息 2 处理器从用户态切换到核心态 以便执行服务程序或中断处理程序 3 如果处理中断 可根据规定的中断级设置中断屏蔽位 4 根据系统调用号或中断号 从系统调用表或中断入口表找到服务程序或中断处理程序地址 CPU上执行的进程所处活动范围 用户空间中 处于进程上下文 用户进程在运行 使用用户栈 内核空间中 处于进程上下文 内核代表某进程在运行 使用核心栈 内核空间中 处于中断上下文 与任何进程无关 中断服务程序正在处理特定中断 Intelx86未提供中断栈 借用核心栈 UNIX Linux中上下文切换和模式切换 核心态运行 系统调用或中断 隐含模式切换 模式切换 用户态运行 等待状态 就绪状态 发生事件 唤醒 调度进程 中断 中断返回 允许的上下文切换切换 Linux进程与任务 Linux把内核空间中运行的程序称为任务 而在用户空间中运行的程序称为进程 系统中存在两种进程 任务 系统进程 任务 和用户进程 任务 实质上是指一个进程 任务 的两个侧面 两个进程 任务 所执行的程序不同 映射到不同物理地址空间 使用不同的堆栈 2 3 5进程的控制和管理 1 处理器管理的一个主要工作是对进程的控制 包括 创建进程 阻塞进程 唤醒进程 挂起进程 激活进程 终止进程和撤销进程等 这些功能由操作系统中的原语实现 原语是在管态下执行 完成系统特定功能的过程 原语和机器指令类似 其特点是执行过程中不允许被中断 是一个不可分割的基本单位 原语的执行是顺序的而不可能是并发的 进程的控制和管理 2 进程创建进程撤销进程阻塞进程唤醒进程挂起进程激活 进程创建 步1在进程列表中增加一项 从PCB池中申请一个空闲PCB 为新进程分配惟一的进程标识符 步2为新进程的进程映像分配地址空间 以便容纳进程实体 进程管理程序确定加载到进程地址空间中的程序 步3为新进程分配除主存空间外的其他各种所需资源 步4初始化PCB 如进程标识符 处理器初始状态 进程优先级等 步5把新进程状态置为就绪态 并移入就绪进程队列 步6通知操作系统的某些模块 如记账程序 性能监控程序 Linux创建进程 fork 父子进程是独立的进程clone 父子进程允许共享资源vfork 子进程租用父进程地址空间 创建进程的C语言程序 include include includevoidmain inti intp id if p id fork 0 子进程程序 for i 1 i 3 i printf Thisischildprocess n elseif p id 1 printf forknewprocesserror n exit 1 else 父进程程序 for i 1 i 3 i printf Thisisparentprocess n 进程撤销 步1根据撤销进程标识号 从相应队列中找到并移出它 步2将该进程拥有的资源归还给父进程或操作系统 步3若该进程

温馨提示

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

最新文档

评论

0/150

提交评论