操作系统教程ch 处理器管理.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统教程ch 处理器管理

复习:进程的定义 进程的定义和属性,它和程序之间的区别(意会不可言传,不要死背课本文字,尽量用你们能看得到的事物去解释它) 进程的状态及转换 就绪态 运行态 等待态(阻塞、睡眠) 挂起态 进程如何放弃CPU 主动 被动(抢占) 复习:进程在虚拟内存中的映像 进程的内存映像 把进程物理实体和支持进程运行的环境合称为进程上下文(process context) PCB的内容 标识信息 现场信息 控制信息 Program Address Space PCB Process 进程上下文 进程切换 进程切换是让处于运行态的进程中断运行,让出处理器,这时要做一次进程上下文切换、即保存老进程状态而装入被保护了的新进程的状态,以便新进程运行。 进程切换必定是在核心态下进行的 内核以下种情况允许发生进程切换 进程进入等待状态时(自愿放弃yield) 完成系统调用或中断处理,返回用户态但不是最具有资格获得CPU时(抢占preempt),进入就绪状态 进程执行结束时,进入终止状态 进程切换步骤 保存被中断进程的处理器现场信息 修改被中断进程的进程控制块的有关信息,如进程状态等 把被中断进程的进程控制块加入有关队列 选择下一个占有处理器运行的进程 修改被选中进程的进程控制块的有关信息 根据被选中进程设置操作系统用到的地址转换和存储保护信息 根据被选中进程恢复处理器现场 模式切换 当中断发生时,暂时中断正在执行的用户进程,把进程从用户状态切换到内核状态,去执行操作系统例行程序以获得服务,这就是一次模式切换。 内核在被中断了的进程的上下文中对这个中断事件作处理(进程的上下文未发生切换),即使该中断可能不是此进程引起的。 模式切换步骤 保存被中断进程的处理器现场信息 根据中断号置程序计数器 把用户状态切换到内核状态,以便执行中断处理程序 进程切换与模式切换 模式切换不同于进程切换,它并不引起进程状态变化,也不一定引起进程的切换,在完成了中断调用之后,完全可以再通过一次逆向的模式切换来继续执行用户进程。 核心态运行的进程是不能被抢占的,但可以继续响应中断。 核心态 运行 系统调用或中断(隐含模式切换) 模式切换 用户态 运行 等待 状态 就绪 状态 阻塞 唤醒 调度进程 中断、 中断返回 进程的控制 创建 创建一个PCB 赋予一个统一进程标识符 为进程映象分配空间 初始化进程控制块(如: 状态为 New,优先级) 设置相应的链接(把新进程加到就绪队列的链表中) 阻塞和唤醒 撤销 回收进程占用的资源 撤销该进程的PCB并回收PCB空间 挂起和激活 2.4 线程及其实现 线程概念 线程的实现 线程的状态 引入线程的动机 单个执行流的程序 main() { ComputePI(“pi.txt”); PrintClassList(“clist.text”); } 运行结果会是怎么样的?PrintClassList会被执行吗? 如果两个函数分成两个执行流,则可以分时地享用CPU并发执行 服务器的例子 一个进程来实现:一次只能为一个客户服务 可以启动多个相同的进程来为多个客户服务,既然是相同的任务,重复的开销是不必要的 在一个进程中启动多个执行流来为多客户服务 单线程进程和多线程进程 Heavyweight process:单线程进程(HWP) Lightweight process:多线程进程(LWP) 用户级线程和内核级线程 用户级线程 (ULT) 在内核之上,在用户模式下通过线程库来实现。线程库提供对线程的创建、调度和管理的支持而无需内核支持。 创建和管理执行速度较快,因为它不需要内核的支持,但是由于内核感知不到用户线程的存在,所以当一个用户线程阻塞时会引起整个进程的阻塞。 内核级线程 (KLT) 由操作系统在内核模式下执行线程的创建、调度和管理。 创建和管理执行速度较用户线程慢,但可以实现内核的并发线程。 多线程模型―N-1模型 User Model Kernel Model Thread Lib 多线程模型―1-1模型 User Model Kernel Model 多线程模型―M-N模型 User Model Kernel Model Thread Lib Solaris多线程模型 线程控制块TCB 每个线程都有一个TCB 执行状态: CPU寄存器, PC, 栈指针 调度信息:线程状态,时间片和CPU时间 指向PCB的指针 多线程进程模型 用户 地址空间 进程 控制块 线程控制块 系统 堆栈 用户 堆栈 线程1 线程控制块 系统 堆栈 用户 堆栈 线程N 线程的状态 线程状态有:运行、就绪和阻塞,线程的状态转换也类似于进程。 挂起状态对线程是没有意义的,如果进程

文档评论(0)

ltc111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档