操作系统忙等待解决方案

上传人:bin****86 文档编号:56764936 上传时间:2018-10-15 格式:DOCX 页数:43 大小:38.40KB
返回 下载 相关 举报
操作系统忙等待解决方案_第1页
第1页 / 共43页
操作系统忙等待解决方案_第2页
第2页 / 共43页
操作系统忙等待解决方案_第3页
第3页 / 共43页
操作系统忙等待解决方案_第4页
第4页 / 共43页
操作系统忙等待解决方案_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《操作系统忙等待解决方案》由会员分享,可在线阅读,更多相关《操作系统忙等待解决方案(43页珍藏版)》请在金锄头文库上搜索。

1、操作系统忙等待解决方案操作系统忙等待解决方案 篇一:现代操作系统读书笔记 第一章:引论 操作系统是运行在内核态的软件,为程序猿提供资 源集抽象以及管理硬件 主要任务:记录那个程序在用什么资源,管理资源 分配,评估使用代价,调节冲突 1.操作系统必须知道所有的寄存器,以便中断时保 存进度 2.用户程序在用户态运行时,仅允许执行至灵级的一 个子集,一般不能调用 IO 和内 存保护指令 3.陷阱: a. 用于执行系统调用 b. 多数由硬件引起,用于警告异常 4.超线程:无并行处理,线程切换纳秒级 存储器 1. 寄存器(和 CPU 一样快)-高速缓存(多级缓存) -主存(RAM ROM EEROM 闪

2、存) 上下文切换:多道程序系统中从一个程序切换到另 一个程序 1. 设备驱动程序:控制 IO 设备,与控制器对话并 收发命令 2. 设备存储器:映射到操作空间 A优点:不需要特定 IO 指令 B缺点:占地址空间(8088) 3. 实现输入输出的方法: A 忙等待:设备驱动循环检查 IO B 操作完成时中断 C 使用特殊的直接存储器访问芯片 DMA 1. USB:通用串行总线,键盘鼠标等慢速设备 启动 1. 加电-BIOS 检查硬件-BIOS 查询启动设备(设 备第一扇区用启动签名才可以作为启动设备)-硬盘第一 区(MBR) ,分区表,超级块等 进程 1. 本质:正在执行的程序的实例,地址空间(

3、core image 进程可读写,有数据和堆栈) 。 2. 相关:资源集(寄存器,报警,文件清单等) 3. 容许运行一个程序所需要所有信息的容器 4. UID 与 GID 1. IO 设备的分类: A块设备:硬盘,可随机读取 B字符特殊文件:键盘鼠标 2管道:虚文件,连接进程 系统调用 1. 用户程序与操作系统交互:处理抽象 2. 能进入内核的过程调用 用户态切换到核心态三种方法:中断,异常,系统调 用 指令:副作用切换到内核态 微内核 1. 高可靠性,把操作系统划分成小的,定义良好的 模块,只有微内核运行在内核,其他 是普通用户程序 2. 设备驱动:崩溃不会导致系统死机 3. 机制与策略分离

4、 第二章:进程与线程 进程模型 1. 多道程序设计:CPU 在多个程序之间快速切换 2. UNIX: 开始是相同,之后不同。Windows:一直不 同。 3. 进程退出的原因: 1. 正常退出; 2. 出错退出;(异常处理) 3. 严重错误;(非法指令,引用错误内存,除零错 误) 4. 被杀死 4. 进程层次 Windows: 没有层次的概念,所有进程地位相同 Linux:进程及进程的子女们组成进程组 5. 进程的三种状态: 1. 运行态(实际占用 CPU) 2. 就绪态(可运行) 3. 阻塞态(等待外部事件) 6. 进程表:储存进程状态(程序计数器,堆栈指针, 内存分配状况,打开的文件状态。

5、账号等) 7. 中断向量:与每一个 IO 类关联 1. 中断发生时,中断硬件程序将进程表中的重要数 据压入堆栈,计算机跳到中断向量的地址 2. 汇编语言设置新的堆栈(无法用 C 语言这类高级 语言来描述) 8. 多道程序设计 1. 假设一个进程等待 IO 与停留在 CPU 的时间比为 p,n 个进程时,CPU 使用率为 使用率 = 1 pn 线程( 进程与线程) 1. 定义:传统操作系统中,每个进程有一个地址空 间和一个控制线程 2. 线程将应用程序分解成可以并行运行的多个顺序 线程 3. 使用多线程的原因: 1. 并行实体共享同一个地址空间和所有可用数据的 能力 2. 线程更轻量级,所以他们

6、比进程更快创建和撤销 3. 同时需要大量 IO 和 CPU 计算时,多线程允许多个 活动彼此重叠进行,从而加快执行速度 4. 多核系统中,多线程可以真正实现并行 力。 7. 线程之间没有保护: 1. 不可能 2. 不需要(线程之间是合作关系) 8. 每个线程都有自己的堆栈 9. thread_yield:不同于进程,线程无法使用时钟 中断强制线程让出 CPU 10. 线程引入的问题 1. fork 系统调用是否应该复制子线程 2.共享文件冲突 4 线程实现 1. 用户空间实现 1每个进程需要有其专门的线程表,由运行时系统 管理 2. 优点 1. 可以在不支持线程的操作系统上实现多线程 2. 线

7、程切换速度快(调用运行时系统的过程,不需 要刷新和上下文切换) 3. 允许每个进程有自己定制的调度算法 4. 有较好的拓展性(内核县城需要固定的表格空间 和堆栈空间) 3. 缺点 1. 某个线程进行阻塞调用会引起所有其他线程阻塞 1. 使用非阻塞系统调用 2. 阻塞提前通知(select 系统调用) 2. 页面故障阻塞其他线程 3. 除非线程放弃 CPU,否则其他线程(包括调度线程) 无法运行(没有 时钟中断) 1. 运行时系统也给与时钟中断:不好,不可能而且 开销大 2. 内核线程 1. 内核有记录所有线程的线程表 2. 使用环保方法回收线程 3. 在线程级别使用调度算法:如果线程的操作比较

8、 多,会带来很大的开销 4. 信号:是发给进程的。当多个线程注册时,会出 问题 3. 混合实现 1. 使用内核级线程,将用户级线程与某些或者全部 内核线程多路复用(很灵 活) 4. 调度机制 1. 内核给每个进程安排一定数量的虚拟处理器并且 让运行时系统分到线程上 2. 进程被阻塞后,内核通知运行时系统(upcall) 3. 根据中断决定是否继续 5. 例子:多线程/单线程 web 服务器 1. 第三种设计(有限状态机: 并行,非阻塞 系统调用, 【中断】 ):唯一的线程对请求进行考察,如果 需要 IO,则启动一个非阻塞 IO,服务器在表格里记录当前 请求,然后处理下一个事项。 6. 线程模型

9、 1. 进程:集 中程序运行的相关资源(地址空间,全局变量等) 2. 线 程:程序计数器,寄存器,堆栈,共享的地址空间,多个 线程的执行能 5. 弹出式线程 1. 一个消息的到达导致系统创造新的线程处理消息- 弹出式线程 2. 优点:没有历史,创建迅速 6. 重写单线程代码 1. 私有的全局变量 2. 可重入的库 1. 重写整个库 2. 为每个过程提供 wrapper,标志该库正在被使用中 3. 信号:内核不知道用户级线程,因此不容易将信 号发给正确的线程 4. 堆栈管理:内核不了解线程,无法自动增长,可 能会造成线程堆栈出错。 进程间通信 1. 三个基础问题 1. 进程如何把信息传递给另一个

10、 2. 确保两个或多个进程在关键活动中不会交叉 3. 进程执行的正确顺序 2. 竞争条件:两个或多个进程读写共享数据,最后 结果取决于进程执行的精确时序。 3. 临界区:多个进程中访问共享区域的程序段 1. 互斥:不能同时多个进程使用共享变量或者文件 2. 临界区解决方案四个条件 1. 任何两个进程不能同时处于临界区 2. 不应对 CPU 的数量和速度有任何的假设 3. 临界区外的程序不应阻塞其他程序 4. 不能使程序无限期等待进入临界区 3. 解决方案(基于忙等待:进程如不能进入互斥区, 则会一直原地等待) 缺点: 1. 可能导致优先级反转问题 2. 浪费 CPU 3. 用户级线程会一直忙等

11、待,从而没用办法让拥有 锁的线程运行 1. 屏蔽中断:进程进入临界区之后屏蔽所有中断 (CPU 不会切换) 评价:不好的方案 1. 不能把屏蔽中断的权力交给用户进程(不打开中 断则系统会终止) 2. 多处理器时不能解决互斥 2. 锁变量:共享锁,程序在进入临界区之前检查锁 的值 评价:无法解决临界区问题 3. 严格轮换法 评价: 1. 可以解决,但为忙等待。只有有理由认为等待时 间很短的情况下才使 用忙等待(锁被称为自旋锁) 2 在一个进程比另一个进程慢很多的情况下,不好 (违反条件三) 4 4. Peterson 解法 评价:可以解决,满足四大条件 5. TSL 指令(硬件解法) TSL R

12、X LOCK:测试并加锁,把 LOCK 值读到 RX 并在 LOCK 上存入 1。原子操作 可以阻止所 有处理器访问 LOCK(屏蔽中断只能屏蔽本地处理器) 睡眠 唤醒方案(进程无法进入临界区时会阻塞) 1. 原语: 生产者消费者问题:一个发给未睡眠进程的信号丢失 了 2. 解决方案 1. 唤醒等待位:唤醒时生产者置 1,消费者睡眠前检 查该位,若为 1,则清除该位并继续保持清醒(不好,多进 程时需多个等待位) 2. 信号量(semaphore):检查数值,修改变量等应 为原子操作 1. 在进入一个关键代码段之前,线程必须获取一个 信号量;一旦该关键代码段完成了,那么该线程必须释放 信号量。其

13、它想进入该关键代码段的线程必须等待直到第 一个线程释放信号量。 2实现方法:操作系统在执行以上事务时屏蔽中断 3. 另一种用途:互斥锁 3. 互斥锁:只需要一个二进制位 与忙等待差异:在未获得锁时,调用另外的线程 篇二:操作系统 题库 选择题 选择题 1.操作系统所扮演的角色是: A.多台电脑之间的接 口 B.给系统用户提供一套服务 C.管理应用软件档案 D.不 是以上任一选项 答案:B 2.计算机系统的四个主要结构化部件是: A.处理器、 寄存器、I/O 模块及主存储器 B.处理器、寄存器、主存储 器及系统总线 C.处理器、主存储器、I/O 模块及系统总线 D.不是以上任一选项 答案:C 3

14、.两种基本的处理器寄存器是: A.用户可见寄存器及控制和状态寄存器 B.控制寄存 器和状态寄存器 C.用户可见寄存器和用户不可见寄存器 D.不是以上 任一选项 答案:A 4.地址寄存器包含: A.数据的主存储器地址 B.指 令的主存储器地址 C.局部主存储器地址 D.以上均是 答案: D 5.包含将取指令地址的控制/状态寄存器称为: A. 指令寄存器(IR) B.程序计数器(PC) C.程序状态字 (PSW) D.以上均是 答案:B 6.指令处理过程中的两个基本步骤是: A.取指阶段 和指令周期 B.指令周期和执行阶段 C.取指阶段和执行阶 段 D.不是以上任一选项 答案:C 7.取到的指令通

15、常被存放在: A.指令寄存器(IR) B.程序计数器(PC) C.存储器(AC) D.不是以上任一 选项 答案:A 8.中断常见的种类有: A.程序中断 B.时钟中断 /O 中断 D.以上均是 答案:D 9.当外部设备准备好接收处理器的服务时,该设备发 送哪种信号给处理器? A.中断信号 B.停止信号 C.处理 信号 D.不是以上任一选项 答案:A 10.在处理器控制控制例行的中断处理器之前,需要 储存的最少信息有: A.程序状态字(PSW) B.程序状态字(PSW)和后续指令地址 C.程序状态字(PSW)和处理器寄存器内容 D.不是以 上任一选项 答案:B 11.处理多中断的一个可行的方法是

16、: A.定义中断 优先级 B.阻止处最高优先级中断外的所有中断 C.按顺序轮 流服务 D.不是以上任一选项 答案:A 12.在一个单处理器系统中,多道程序设计通过什么 方式提高处理器效率? A.提高处理器速度 B.充分利用长时间等待的中断处理的空闲时间 C.消 除所有空闲的处理器周期 D.以上选项均是 答案:B 13.存储器等级降低时(如内存、硬盘)等,会出现 以下那种情况: C.访问时间增加 D.以上选项均是 答案: C 14.在处理器与主存储器之间提供的一个容量小而快 速的存储器称为: 存储器 B.高速缓冲存储器 存储器 D.不是以上任一选项 答案:B 15.当一个新块被读入高速缓冲存储器是,以下哪个 要素将决定这个块将占据某个高速缓冲存取单元: A.块大小 4 B. 高速缓冲存储器大小 C.写策略 D.不是以上任一选项 答案:D(映射函数) 16.直接存储器存储需要从处理器获取哪些信息? /O 地址 B.读写操作的开始地址 C.读或写的字符数量 D.不是 以上任一选项 答案:D(不需要处理器的参与) 1.操作系统的一个

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号