当前位置:文档之家› 兰州大学操作系统重点

兰州大学操作系统重点

多道程序设计:处理器处理很多程序,执行顺序取决于它们的相对优先级以及它们是否正在等待I/O当一个程序被中断时,控制权转移给中断处理程序,一旦中断处理程序完成,控制权可能并不立即返回到这个用户程序,而可能转移到其他待运行的具有更高优先级的程序操作系统的特征:并发性、共享、异步、虚拟操作系统分类:批处理操作系统分时操作系统实时操作系统进程的概念:定义:可并发执行的程序,在一个数据集合上的运行过程。

申请/拥有资源∽调度(线程)程序:静态概念,是指令和数据的集合,可长期存储程序属于进程进程与程序对应关系:- 一个程序可以对应一个进程或多个进程- 一个进程可以对应一个程序,或者一段程序进程的特征:动态性并发性独立性异步性进程的结构:组成(进程映像): 程序、数据集合、进程控制块PCB (Process Control Block )PCB是进程存在的唯一标志。

创建进程时,创建PCB;进程结束时,系统将撤消其PCB。

(单一表格链表)两状态:执行、未执行(队列)- 进程获得处理机,进入执行状态;当时间片结束或其它某种原因,进程释放处理机,暂停执行,处于未执行状态。

五状态:执行状态就绪状态阻塞状态新状态终止状态空新状态新创建的进程首先处于新状态②新状态就绪状态当系统允许增加就绪进程时,操作系统接纳新建状态进程,将它变为就绪状态,插入就绪队列中。

③就绪状态执行状态当处理机空闲时,将从就绪队列中选择一个进程执行,该选择过程称为进程调度,或将处理机分派给一个进程,该进程状态从就绪转变为执行。

④执行状态终止状态执行状态的进程执行完毕,或出现诸如访问地址越界、非法指令等错误,而被异常结束,则进程从执行状态转换为终止状态。

⑤执行状态就绪状态分时系统中,时间片用完,或优先级高的进程到来,将中断较低优先级进程的执行。

进程从执行状态转变为就绪状态,等待下一次调度。

⑥执行状态阻塞状态执行进程需要等待某事件发生。

通常,会因为进程需要的系统调用不能立即完成,如读文件、共享虚拟内存、等待I/O操作、等待另一进程与之通信等事件而阻塞。

⑦阻塞状态就绪状态当阻塞进程等待的事件发生,就转换为就绪状态。

进入就绪队列排队,等待被调度执行。

对换技术:将内存中暂时不能运行的进程,或暂时不用的数据和程序,换出到外存,以腾出足够的内存空间,把已具备运行条件的进程,或进程所需要的数据和程序,换入内存。

PCB不能换出去。

(因为PCB是系统唯一感知进程的标志)挂起进程被交换到外存,状态变为挂起状态进程的控制包括创建、阻塞、唤醒、挂起、激活、终止、撤销进程等。

这些控制和管理功能由操作系统中的原语实现。

原语(Primitive)是在管态下执行、完成系统特定功能的过程。

原语和机器指令类似,其特点是执行过程中不允许被中断,是一个不可分割的基本单位,原语的执行是顺序的而不可能是并发的。

执行模式:用户模式低权限模式用户程序一般在该模式下运行系统模式/控制模式/内核模式高权限模式操作系统的内核运行于此模式模式切换程序状态字PSW中有一位用来标识当前执行模式通过修改该位的值来切换模式操作系统的控制结构:OS必须掌握每个进程和资源的当前状态信息OS构造并维护它所管理的每个实体的信息表内存表I/O表文件表进程表互斥条件:每次只允许一个进程处于临界区(忙则等待);进程只能在临界区内逗留有限时间,不得使其它进程在临界外无限期等待(有限等待)如果临界区空闲,则只要有进程申请就立即让其进入(空闲让进);进入临界区的进程,不能在临界区内长时间阻塞等待某事件,必须在一定期限内退出临界区(让权等待)不能限制进程的执行进度及处理机的数量信号量方法:软件方法和硬件方法都存在“忙等”问题,浪费了处理机时间。

信号量方法能实现进程互斥与同步,而不必“忙等”缓冲区的数量有限,为nproducer:while (true) {/* produce item v */while ((in + 1) % n == out)/* do nothing */;b[in] = v;in = (in + 1) % n}consumer:while (true) {while (in == out)/* do nothing */;w = b[out];out = (out + 1) % n;/* consume item w */}int readcount;semaphore x=1,wsem=1;void reader(){while(true){semWait(x);readcount++;if(readcount==1)semWait(wsem);semSignal(x);READUNIT();semWait(x);readcount--;if (readcount==0) semSignal(wsem);semGisnal(x);}}void writer(){while (true){semWait(wsem);WRITEUNIT();semSignal(wsem);}}void main(){readcount=0;parbegin(reader,writer);}管程:cwait(c):调用进程的执行在条件c上挂起,管程现在可被另一个进程使用csignal(c):恢复在cwait之后为某条件而挂起的进程的执行(选一)。

与信号量的semWait、semSignal不同如果在管程中的一个进程发信号,但没有在这个条件变量上等待的任务,则该信号丢失死锁的条件互斥一次只有一个进程可以使用一个资源占有且等待一个进程在等待其它资源分配时,继续占有已分配的资源非抢占不能强行抢占已分配给其它进程的资源除非进程主动释放循环等待资源分配图中存在一条封闭的进程链死锁预防:互斥一般条件下,第一个条件不能禁止占有且等待要求进程一次性请求所需要的资源所有资源都满足时才执行非抢占申请被拒绝,主动释放已分配的其它资源申请被拒绝,抢占已分配给其它进程的该资源循环等待资源的线性顺序只能申请已有资源后面的资源死锁避免:如果一个进程的请求会导致死锁,则不启动此进程(进程启动拒绝)如果一个进程增加的资源请求会导致死锁,则不允许此分配(资源分配拒绝)银行家算法状态:当前给进程分配的资源情况两个向量Resource和Available 两个矩阵Claim和Allocation安全状态:至少有一个进程执行序列不会导致死锁(所有的进程都能运行至结束)不安全状态:没有一个进程执行序列使得所有进程都能运行结束动态分区:分区长度和数目可变允许分配给进程和它所需相同的空间可能会导致内存中出现许多空洞(外部碎片)压缩技术 OS不时地移动进程,使得进程占用空间连续,并且所有空闲空间连成一片最佳适配选择与要求的大小最接近的块整体性能差(每次需要查找所有空闲块列表)最接近块给进程,则碎片很小,但无法利用需要经常做压缩整理首次适配从开始扫描内存,选择大小足够的第一块可用内存速度最快都放在前面,查找时候要经过这些块邻近适配从上一次放置的位置开始扫描内存,选择下一个大小足够的块内存经常在最后有一大空闲块大块被分解成小块需要压缩整理来获得内存尾部的大空闲空局部性原理一个进程中的代码和数据的访问有集簇的倾向因此,假设在很短时间内,仅需要访问进程的一部分块是合理的避免系统抖动虚拟内存机制是合理的虚拟内存所需要的支持硬件必须支持分页或分段OS必须能管理页或段在主存和辅存间的移动分页消除了外部碎片最佳替换算法(OPT)选择替换下次访问距当前时间最长的那些页必须准确知道将来的事件不可能实现用来衡量其它算法的标准最近最少使用 (LRU) 替换主存中上次使用距当前最远的页根据局部性原理,该页也是最近最不可能访问到的页每个页添加一个最后一次访问的时间标签开销大维护一个访问页的栈开销也大先进先出 (FIFO) 把分配给进程的页帧看做是一个循环缓冲区,按循环方式移动页最简单的页替换策略替换驻留在内存中时间最长的页这些页可能马上就会再次使用到周转时间:等待时间+服务时间归一化周转时间:1与服务时间的比值调度算法:先来先服务(FCFS)每个进程就绪后,就加入就绪队列当前正在运行的进程停止执行后,选择在就绪队列中存在时间最长的进程运行短进程可能要等待很长时间偏向受处理器限制的进程最短进程优先(SPN)非抢占式策略就绪队列中预计服务时间最短的进程被选择运行长进程可能饥饿难点:需要知道或者至少估计每个进程所需要的时间(估计不正确,OS可能中断执行)最短剩余时间(SRT)SPN的抢占机制版需要估算进程剩下的时间长进程可能饥饿最高响应比优先(HRRN)响应比:R=W+S/S w:等待处理器的时间s:期待的服务时间(运行时间)选择响应比最大的进程执行三种I/O通信技术:可编程 I/O 中断驱动I/O 直接存储器访问(DMA)单缓冲:假定,一块数据从外部设备输入到内存所花费的时间为T,在内存中移动所花费的时间为M,被用户进程加工处理所花费的时间为C,那么在没有使用I/O缓冲区的情况下,平均每块数据的处理时间近似为:T+C 在使用单I/O缓冲区的情况下,平均每块数据的处理时间近似为:max(T,C)+M相对于没有I/O 缓冲区的情形,单I/O缓冲区能提高用户进程的运行效率。

如果用户进程在对有关数据进行加工处理时不释放I/O缓冲区,那么用户进程的性能并不能得到改善。

如果T远远大于C,即外部设备的I/O速度比用户进程的计算速度慢得多,那么,单I/O缓冲区不会显著改善用户进程的性能。

双缓冲:增加一个缓冲区,两个缓冲区可以交替使用。

当数据从缓冲区复制到用户进程空间时,输入设备不必等待,可立即开始向另一个缓冲区输入数据。

因此,增加了一个缓冲区后,前述的平均工作时间可近似为:max(T,C)。

另外,若用户进程阵发性I/O的数据超过一个缓冲区而不满两个缓冲区,双缓冲使进程不会在I/O数据期间被阻塞。

SCAN磁头臂仅仅沿一个方向移动,并在途中满足所有未完成的请求到达最后一个磁道或该方向上没有其它请求,停止反向移动C-SCAN 循环SCANSPOOLing:实质是提高系统的利用率 Simultaneous Peripheral Operations On-Line ,直译意思是“联机情况下同时进行的外围设备操作”,通常称其为“假脱机操作”。

SPOOLing系统是虚拟设备最典型的代表,包括假脱机输入和输出系统两个部分。

核心思想:在快速辅助存储设备中建立I/O缓冲区,用于缓存从慢速输入设备流入内存的数据,或缓存从内存流向慢速输出设备的数据。

域(Field)基本的数据单元一个域包含一个值(如雇员的名字、生日等)类型+长度来描述定长/变长记录(Record)一组相关域的集合定长/变长应用程序的一个单元雇员记录(名字、生日、工作类型、雇佣日期等)文件(File)一组相似记录的集合被用户和应用程序看做是一个实体唯一文件名(通过名字实现访问)访问权限控制数据库(Database)一组相关数据的集合数据元素间存在着明确的关系供不同应用程序使用包含与一个组织或一个项目相关的所有信息目录包含关于文件的信息属性位置所有者目录也是一个文件所有者是OS 提供文件名和文件本身间的映射关系基本信息文件名文件类型文件组织地址信息卷起始地址使用大小分配大小访问控制信息所有者访问信息许可的行为命名:用户通过符号名字来引用文件为了保证文件引用的无二义性,文件名必须唯一文件定位通过从主目录开始向下到各个分支,直到最后该文件路径来定位多个文件可以有相同的名字(在不同目录下)作目录(默认目录)访问:访问权限无(None)知道(Knowledge)执行(Execution)读(Reading)追加(Appending)更新(Updating)更改保护(Changing Protection)删除(Deletion)所有者(Owner)层次结构每个选项都隐含着它前面的那些权限授权对象特定用户用户组(User Groups)全部(All)同时访问的管理方案:一个用户更新文件时,锁定整个文件更新时,锁定需要更新的记录读者-写者问题互斥和死锁连续分配在文件创建时,给文件分配一组连续的块大小可变分区文件分配表中每个文件只需要一个表项起始块长度问题外部碎片(紧缩算法)预分配(大小难预测、多预测造成的浪费)链式分配基于块的分配策略每个块包含一个指向下一个块的指针在分配表中只需要一个表项起始块长度可预分配可动态分配没有外部碎片适合顺序处理的文件局部性原理不再适索引分配每个文件在文件分配表有一个一级索引包含所有分配给文件的块的信息分配方法基于块分配的索引基于长度可变的分区索引无需合并、压缩支持顺序访问和直接访问文件最普遍的一种文件分配形式UNIX文件系统采用的是多级索引结构(综合模式)。

相关主题