操作系统-1-5章
1 我们编写的高级语言程序其实是运行在OS上的) 2
3 4
5 6 7 8 多线程程序怎么加锁?? 9 10 操作系统及其系统调度给程序员的编程提供了简化,使其不必直接用机器指令操作硬件。 11 而是用扩展的机器指令。 12 13 语言处理系统:可以使用高级语言进行面向问题的解决方案。 14 15 从资源管理的角度理解操作系统: 16 程序如何 17 1.控制占用CPU? 18 2.控制主存? 19 3.控制IO设备? 20 4.如何与其他进程通讯? 21 22 资源共享: 23 1.独占式 24 2.并发使用 25 资源分配策略: 26 1.静态分配 27 2.动态分配 28 3.资源抢占 如何回滚?? 29 30 多道程序设计: 31 多程序一起进入优点: 32 缓解了cpu和IO速度的严重不匹配的矛盾,提高了cpu利用率 33 34 如何实现? 35 为进入内存执行的程序建立管理实体:进程! 36 37 操作系统应该能够管理进程的执行,以及系统(包括内存,cpu,IO等)调度 38 39 40 人机交互的发展: 41 VR:显然需要硬件支撑,什么硬件? 42 其次,需要一个虚拟系统 43 多通道交互整合 44 支持主动参与的三维HCI 45 46 所有应用程序访问操作系统的接口叫:系统调用 47 计算机控制和实现系统调用的指令:陷入指令(硬件来做,陷入了内核)----计算机为实现系统调用而引起处理器中断的指令。 48 过程:用户程序通过陷入指令中断CPU,保护cpu现场,取系统功能号 查入口地址标表获得入口地址(指向一个系统调用的处理程序)。 49 运行,然后恢复CPU现场。 50 51 软件功能的研究与发展实际就是由操作系统先带来的,OS是第一个大规模的软件系统。后面又有了数据库系统DB。 52 53 操作系统内核: 54 单内核:内核中各部件杂然混居 55 UNIX/LINUX/WINDOWS都是如此 56 57 cpu和内存都挂在系统总线上的。 58 59 机器指令:中央处理器执行的基本单位。 60 程序计数器PC:指向当前待执行的指令(取指)。 61 CPU根据PC取指,然后放入指令暂存器IR,并对指令译码(解码)。 62 然后发出控制命令,执行运算,产生结果并写回,完成一条指令的执行。 63 调整PC计数器到下一条指令地址。 64 65 指令执行周期: 66 取指解码执行 67 68 但是实际是按指令流水线执行的,为提高CPU利用率。 69 取指解码执行 70 取指解码执行 71 取指解码执行 72 73 74 处理器模式:设置处理器模式实现特权指令管理。 75 0:操作系统内核 --内核模式 76 1:系统调用 77 2:共享库程序 78 3:用户程序等 -----用户模式 79 80 中断驱动---中断驱动:用户程序间的切换是通过中断来完成的。必须先中断,控制权移交内核,然后内核再转交控制权到另一个用户程序。 81 82 83 进程的三大状态: 84 1.等待态 85 2.就绪态 86 3.进行态 87 88 进程挂起:操作系统无法预料进程数目及资源需求,运行时可能出现运行资源不足情况,如 性能低 和 死锁。 89 OS会剥夺某些进程的内存送至OS的对换区(磁盘缓冲区)。 90 挂起的进程不占用内存,而就绪的进程是占有内存的。 91 92 进程上下文:OS中进程的物理实体和 支持进程运行的环境共同形成(CPU现场,cache信息。寄存器上细纹,用户上下文(用户程序,数据等)) 93 进程控制块:进程切换。保存现场-->系统调度--->加载现场等 94 95 进程: 96 单线程结构:内部只有一个执行序列 97 多线程结构:可以有多个执行序列 98 多线程的进程相比单线程的进程好处:单线程的进程完成(伪)并行,需要操作系统保护及通信和切换代价。 99 多线程环境优势:减少通信和切换代价 100 101 多线程的进程:进程是系统进行保护和资源分配的基本单位。 102 线程:进程的一条执行路径,是调度的基本单位。同一进程中的线程共享主存空间和资源。 103 最简单的应用:word里打字,有个错误检查提示,一边输入一边检查,这实际是多线程完成的。 104 105 106 多线程实现机制: 107 KLT:内核级多线程技术 108 线程阻塞后内核可调用同进程下的其他线程占用处理器 109 如果是多核处理器环境,内核能同时调度同一进程中的多个线程来真正并行。 110 应用程序在用户态运行,而线程调度和管理在内核实现。因此同一进程中,控制权从一个线程到另一线程的移交需要模式切换,系统开销较大。 111 112 ULT:用户级多线程技术 113 所有线程管理资源都在用户态,线程切换不需内核模式,节省切换开销。 114 操作系统调度的依然是进程,因此它的物理并行性不好。 115 缺点:如果线程阻塞就是进程阻塞,如何解决阻塞问题? 116 Jacketing技术:线程阻塞----执行jacketing程序-----检查资源使用情况,决定进程切换或移交控制权到另一个线程。 117 118 比较: 119 相同点:资源保护的单位都是进程为单位。 120 不同点: 121 KLT:线程调度完全由操作系统做。物理并行性好,适合解决物理并行性问题,如真多核处理器。 122 ULT:调度分两部分,OS调度处理器,用户来完成线程调度。物理并行性不好,用来逻辑并行问题 123 124 125 126 多线程的编程实现:高级语言编程,然后和专用的线程库进行链接,实现。 127 128 混合策略多线程编程: 129 结合二者优点: 130 线程创建完全在用户空间做,将ULT线程映射(绑定)到内核级的线程,通过调整KLT数目就可达到很好的并行效果。 131 132 处理器的调度层次: 133 高级调度:又称作业调度,是不是将进程加入可执行进程池 134 中级调度:又称平衡负载,可以进程挂起,调节决定主存中的可用进程集合。 135 低级调度:又称进程调度,决定哪个可用进程占用处理器执行。是操作系统中最核心的部分。可以把处理器分配给进程或内核级线程,决定分配时间等。 136 137 138 选择处理器调度算法的原则: 139 资源利用率: 140 响应时间: 141 周转时间 142 吞吐量:单位时间处理的进程数尽可能多。 143 144 时间片轮转调度:时间片太大相当于根据进入次序执行,太小则OS频繁的中断进行系统调度代价太大,一般定位200ms或500ms等 145 146 现代操作系统的调度算法一般是:优先数与分级结合的调度方法。 147 彩票调度算法:概率调度,为客户进程发放根据系统资源占用的彩票。 148 149 150 存储管理: 151 152 编程时是逻辑地址,而cpu实际运行处理的是物理地址。中间有逻辑地址到物理地址的映射--------重定位。 153 存储保护:为避免内存中多个进程互相干扰,必须进行程序和数据保护。 154 分为: 155 私有的主存占用:可读可写 156 非本进程的内存信息:不可读写 157 158 CPU要执行的当前程序:需要在内存当中。 159 地址转换:逻辑地址进来首先进行限长器比较,越界引发中断。否则就与基础地址相加,得到物理地址。 160 161 虚拟存储管理: 162 页式存储管理:像书一样,程序必定在某些页上,虽然可能有不满的页。 163 段式存储管理 164 都是讲内存地址编码成两维的:先分段编号,再给段内编号。 165 166 167 页面调度: 168 主存满了但是需要装入新的页,此时要决定哪些页从主存调出去--------------页面调度(选择调出页)。 169 170 171 172 第四章 IO设备: 173 信息传输视角: 174 1输入:键盘 鼠标 175 2输出:显示器 打印机 176 3输入输出:磁盘驱动器 网卡 177 交互功能视角: 178 1人机交互:鼠标 键盘 显示器 179 2存储设备:磁盘驱动器 光盘驱动器 180 3机机通信:网卡 调制解调器 181 设备控制器:I/O设备本身由机械设备和电子设备共同完成,电子的部分称为设备控制器或I/O接口 182 183 I/O控制方式总结: 184 1、轮询方式:CPU等待,且cpu参与内存数据交换 185 2、中断方式;CPU无需等待就绪,响应中断后参与内存数据交换 186 3、DMA方式:CPU只在I/O开始和结束时参与,其他过程完全由DMA控制,cpu不参与内存数据交换。 187 1-->2--->3 cpu与I/O设备的并行度越来越高,物理并行。 188 189 I/O通道:通道控制器 或者 I/O处理器,逻辑并行 190 CPU不再执行I/O指令,而是在内存中组织通道程序,由I/O通道执行。 191 192 193 I/O控制的DMA方式:直接存储器访问方式 194 195 设置总线的目的: 196 解决cpu和I/O设备的速度不匹配以及I/O设备之间的速度不匹配问题(I/O设备之间也有很大的差别) 197 如果不用总线,那么,低速I/O占用时间过长,使得高速设备访问时间受限。 198 199 经典的总线布置方式:南桥北桥 200 cpu <------处理总线-------->北桥(主存控制器)<--------存储总线-------->主存 201 南桥(I/O控制器) 202 SCSI----------LAN------------GPU等图形设备 PCI总线(高速电子IO设备) 203 鼠标-------键盘等 E(ISA)总线(低速机械IO设备) 204 205 206 I/O软件的设计目标: 207 1.高效性 208 2.通用性 209 210 I/O驱动:初始化i/o设备,查看状态等。 211 212 I/O缓冲区:OS在内存中开辟的存储区,专门用来临时存放I/O操作的数据。 213 OS为解决CPU与i/o设备速度不匹配,以及物理记录(硬盘)与逻辑记录大小不一致,提高并行,减少I/O对CPU的中断次数。 214 比如:磁盘一个扇区一般是512Byte,如果我们要从磁盘读30Byte,依然需要从磁盘先读取完整的页到I/O缓冲,然后再从其中提取所需内容。 215 216 217 设备分配方式: 218 独占型外围设备----一次只能由一个进程独占使用 219 分配方式: 220 静态分配:进程运行前申请;简单,能防止系统发生死锁,但是利用率低 221 动态分配:随用随申请;利用率高,可能发生死锁(如系统外设有一个打印机和一个磁带机,如果一个进程占有了打印机,另一个进程占有了磁带机。那么互相等待申请对方占用的I/O,系统就会发生死锁) 222 223 设备表等:程序并不会直接访问I/O硬件,而是访问I/O设备的逻辑抽象--逻辑设备名。 224 225 226 磁盘存取时间: 227 228 磁盘结构:不同同心圆属于不同的磁道,首先要用磁盘臂放到所需磁道(柱面)上,每个磁道(圆又可细分为不同的扇区,扇区的组合称为簇。不同大小的同心圆含有相同扇区数--便于控制)然后磁盘旋转对应扇区至磁头下,然后开始传输。 229 230 磁盘存取数据时间包括: (磁盘臂)寻道时间----(盘片)旋转时间-----传送时间 231 232 磁盘算是系统可以直接访问的高速外围存储设备 233 234 spooling系统:有点类似输入输出重定向,在磁盘中设置输入输出缓冲区(井),进程只与输入输出井关联,缩短每个进程的周转时间,提高OS的吞吐量 235 236 237 238 第五章 文件管理 239 240 子目录名之间用斜线分隔:windows用\,而unix用/表示. 241 树形目录:根目录/或~,内部节点是子目录,叶节点是文件。 242 文件查找: 243 1.从“当前目录”查起--相对目录,用.表示当前目录,用..表示父目录。 244 2.现代操作系统都有改变工作目录命令:如cd dir, 245 3.活动文件表:对于文件的使用不会每次都去查询相关的文件,而是打开文件时一次性查找加入到活动文件表中,是一种映射关系,使用完毕后才会删除此活动文件表。 246 247 文件使用: 248 unix中: 249 cat 查看 250 cd 改变目录 251 find 查找 252 mv 移动文件 253 rm删除文件 254 mkdir 创建目录(用来装文件) 255 rmdir 删除目录 256 创建文件: 257 入参:文件名 设备类 文件属性及相应存取控制信息 258 过程: 259 1.在相应设备建立一个文件目录项,为文件分配一个物理块 260 2.在活动文件表中申请一个项,登记有关目录信息。 261 3.返回一个文件句柄(类似指针,存储了这个活动文件表中该文件的目录项相关信息) 262 删除文件: 263 1.先判断是否打开, 264 2.否---->删除,是----->先关闭----->删除