处理机调度所需要解决的问题:在多道处理系统中由于进程多于处理机而产生的一系列问题。
1,长程调度(高级调度):将作业从外存调入就绪队列(阻塞到就绪);
2,短程调度(处理机调度,进程调度):将作业从就绪状态转为执行状态(分配处理机);
3,中级调度:将作业从就绪队列放入外存(时间片用完的作业就是一种例子)。
4,调度算法:
(1)先来先服务FCFS:按照作业的到来序列依次分配处理机与资源,相对而言短进程的等待时间长,因此有利于长作业;
(2)短进程优先SJF:按照进程的所需服务时间长短次序分配处理机,所需服
务时间越短的进程越先得到处理机,由于没有鉴别进程的重要程度,所以对于长作业和紧急任
务都不利;
(3)优先级调度PSA:按照进程PCB中的优先级信息得到的优先级次序分配处
理机,注意这里的优先级是静态的,是用户输入PCB里的。这样的优先级调度也有一定问题,
低优先级的任务的等待时间越长,越长时间没有得到处理机,越容易产生饥饿现象;
(4)高响应比优先HRRN:上一例优先级是静态的,此例的优先级则是动态(PCB里的优先级也有一定的算法进行动态的变化)的,优先权=(等待时间+要求服务时间)/要求服务时间;避免了饥饿现象的产生,也综合考虑了长作业,紧迫作业,短作业的特点。
(5)时间片轮转调度RR:按照用户所定义的时间片依次将进入就绪队列的进程
进行分配处理机,所需要的注意的是时间片的设置。
5,进程调度的任务有三:保护CPU现场(也就是上下文),分配处理机与资源,进程调度。
对于实时系统来说,由于用户当前需要做的操作永远是最快需要响应的,所以在以上的调度算
法中我们需要考虑“抢占”这一概念;
6,抢占方式有三:当前进入就绪队列的进程优先级比正在运行的进程优先级高,允许剥夺它的
处理机与资源进行使用;当前进入就绪队列的进程所需时间比正在运行的进程所剩运行时间短,
允许抢占它的处理机与资源进行使用;当前正在运行的进程时间片完,允许就绪队列的第一个进程抢占它的处理机与资源(此时时间片完的进程应挂到就绪队列的队尾还是阻塞队列需要结合系统当前内存状态)。
死锁:产生死锁的原因则是系统资源不足产生的(举个例子:现在有两个进程1与2;1进行占有打印机,2进程占有刻盘机,1向系统申请刻盘机,2进程向系统申请打印机,二者谁都得不到完整的资源而导致死锁状态的产生)
7,死锁的预防:(静态)死锁的产生有四个条件:请求与保持状态,对共享资源的互斥性,循环等待,资源的不可抢占;共享性资源的互斥性是固有属性所以无法破坏,我们需要破坏另外三个去达到预防的效果;(1))破坏请求与保持状态:系统只需保证当一个进程向它开口申请资源时,此进程不得占有不可抢占的资源(你想要得到别人的就得做好补全别人的准备);(2)破坏循环等待:将系统各类资源进行线性的编号,当此进程向系统申请F7号设备时,如果F8已被申请则释放此进程的资源(F7必定被占用了,F7<F8)。(3)破坏不可抢占:当已经占据不可抢占资源的进程向系统的请求不被满足时,就释放它所拥有的资源。
8,死锁的避免:(动态)要想在各进程动态申请的情况下避免进入死锁的状态,就必须时刻了解资源的空闲情况以及各进程所需与现拥有的各类资源情况;通过安全性检查算法(银行家算法)保证系统不进入不安全状态。
9,死锁的解除:撤销资源,终止进程。
课本P90-P128有详细的信息。
存储器管理的主要目的就是方便用户运行程序的同时也能够更好的利用系统的存储空间。
1,程序的链接:主要目的是将用户给出的逻辑地址与计算机内存中找到合适的物理地址并进行链接,如果用户给出的逻辑地址与所需运行程序的物理地址一致,直接存入,这种方式叫做静态链接(因为链接之后需要面临的两大问题:相对地址的修改与变换外部调用符号);如果用户给出的逻辑地址并不在链接时直接修改为物理地址,而是通过指针去定位链接地址的,这种方式叫做动态链接(不封装,使用指针定位,便于地址变换)。
2,程序的装入:(1)绝对装入:用户给出所需装入的物理地址范围(程序员极其了解系统存储情况)(2)可重定位装入:用户给出的逻辑地址与我实际装入的物理地址并不相同,但装入后不能修改(我们把逻辑地址与物理地址之间的差值称为偏移量)
(3)动态运行时装入:用户给出的逻辑地址在装入过程中并不修改成与物理地址相同,在程序运行时修改(保证我在装入过程中程序的地址全都是逻辑地址,后续修改需要用到一个硬件:重定位寄存器)。
3,分区(给内存中的空闲区分区)分配(给作业分配内存空间)算法:
首次适应算法(FF):不给目前的空闲空间进行任何的变动,每次为进程分配内存空间
时都从头扫描,直到就绪队列为空为止。
循环首次适应(NF):不给目前的空闲空间进行任何的变动,为进程分配内存空间时设
置指针标记当前扫描的内存空闲区位置,下次分配从指针位置向后(高址)扫描,如果扫描完整个内存空闲区都没有分配则说明该分区分配算法不适用于此进程序列。
最佳适应算法(BF):首先给内存中各空闲空间进行从小到大的排序,给就绪队列的第
一个进程分配后重新排序,依次,直到就绪队列空,若无法分配则不适用。
最坏适应算法(WF):首先给内存中各空闲空间进行从大到小的排序,给就绪队列的第
一个进程分配后重新排序,依次,直到就绪队列空,若无法分配则不适用。
4,紧凑技术:由于以上四种适应算法都会对系统高址或地址空间产生无法再次利用的内部碎片,为解决这个问题,紧凑技术就诞生了。具体的操作:将离散存储的各个数据段和数据块同时向低址方向移动拼接为连续的存储方式;产生的问题是大部分的程序块物理地址发生了变动,可能导致程序的无法正常运行;为了解决紧凑产生的问题,动态重定位技术显得尤为重要。
- 动态重定位技术:重定位寄存器的使用,重定位寄存器记录的是数据块物理地址与逻辑地址之间的相对偏移量,便于系统准确的在离散的空间里定位到所需使用的数据块;在紧凑技术使用之后,不需要改动程序里的逻辑地址,只需改动重定位寄存器里记录的相对偏移量即可。
之所以引入段页式存储,目的是实现数据块在内存中离散存储的同时方便系统或用户更快更高效的访问需要访问的地址。
1,分页式存储管理(产生页内碎片):
(1)地址结构(基于二进制下的位数):页号(m位)+页内地址(n位偏移量)
=> 内存空间大小等于2的m+n次方,页的个数等于2的m次方,页的大小等于2的n次方。
(2)页表寄存器:页号-物理块号-状态位(0与1代表该页的使用情况)
注意:用户访问一个物理地址时,化为2进制,计算对用的分页式存储地址,需要判断是否存在页号越界与页内地址越界。
2,分段式存储管理(产生外部碎片):
(1)地址结构(基于二进制下的位数):段(m位)+段内地址(n位偏移量)
=> 内存空间大小等于2的m+n次方,段的个数等于2的m次方,段的大小等于2的n次方。
(2)段表:(段号)+起始地址+段长。
3,分页与分段式存储的区别:
(1)页是信息的物理单位,页的大小有系统决定,段是信息的逻辑单位,段的大小有用户决定。
(2)页是一维的逻辑结构,段是二维的。二者嵌套使用为段页式存储管理方式。
虚拟存储技术所需要解决的问题是:受系统内存容量限制,某些作业得不到处理或者因为在处理大作业时其他作业留在外存等待。
1,虚拟存储器:常规存储器具有一次性与驻留性,而程序的运行具有局部性(即在某一段时间程序运行仅局限于某一段,相应的也会访问某一部分内存区),根据这一特性,虚拟存储技术在磁盘上寻找一块较大的空闲空间作为换入换出的对换区,当某一块数据块在当前时间段内并不访问,系统将其复制到对换区上,然后将需要运行的程序段放入空出来的内存区域。(请求调入与置换功能)是一种用“磁盘空间模拟内存”的虚拟技术。
2,首先要想实现虚拟存储,必须采用离散存储的管理方式,因为在连续存储管理方式下,整个作业必须以连续的方式放入内存中,那么需要实现虚拟存储就需要将整个作业全都置换出去,这显然会额外的增加不被使用的空闲区(作业大小远远大于用户当前运行程序段的大小时)造成内存资源的浪费。
3,请求分页存储管理方式:
(1)请求页表机制:页号+物理块号+状态位(指示该页是否调入内存)+访问字段(记录访问次数供页面置换算法参考)+修改位(标记该页调入内存后是否修改过)+外存地址
(2)缺页中断机构:当访问页面不存在时产生缺页中断。
(3)地址变换机构:通过查询快表找所要访问的页,若找到则修改页表中的访问位,还需标记修改位,若找不到,则去内存查找页表,若有则表示已经调入内存,将该页的页表项写入快表,若没有则产生缺页中断,请求OS从磁盘将该页写入内存。
4,页面置换算法:在进程运行时,若访问的页面不存在,我们需要将所需要的页面调入内存,但是将那些页面调出也是我们需要考虑的问题,一个好的页面置换算法可以有效的减少抖动现象。
(1)将来最长不使用(OPTL)
(2)先进先出(FIFO)
(3)最近最久未使用(LRU)需要用到寄存器与栈。
(4)最少使用(LFU)移位寄存器分0与1
(5)最近未使用(CLOCK)
5,工作集:在一段时间内所要运行进程实际需要访问页面的集合。模拟将来访问情况减少抖动(页面置换次数太多而导致处理机效率下降的情况)程度。
IO设备:为了合理的兼顾用户需求与IO管理,对于IO设备以及系统的另外一些硬件管理,也会提出一些要求。
1,IO的层次结构:(软件-硬件)用户IO应用软件-设备独立性软件-设备驱动程序-中断处理程序-设备控制器。
2,在以上的层次结构中需要注意的有:用户IO应用软件与设备独立性软件之间有一个IO系统接口。中断处理程序与设备控制器之间有一个RW/HW接口。
3,IO系统接口按照速率分:块设备接口,流设备接口,网络通信接口。
4,设备控制器:CPU与控制器接口,设备与控制器接口,IO逻辑。
5,IO的特性:(1)按照功能分配:IN/OUT (2)按照传输类型分配:块,字符,网络传输。
6,对IO传输的控制方式:
使用轮询的可编程IO:在控制器里的数据寄存器设置一位BUSY位来表示用户输入或者输出的状态,CPU需要不断地访问BUSY的值以确定工作。
使用中断的可编程IO:使用控制器采用中断的方式为CPU汇报IO工作的开头与结尾(对中断下面会有补充)。
直接存储器访问:有DMA控制器(CR位表示忙闲,MAR寄存器记录数据物理起始地址,DR寄存器暂时存放数据,DC寄存器计数)接管工作,整个工作结束后(DC记录的数据大小等于用户调度的数据大小时),通知CPU检查工作成果,有问题则重新进行。
IO通道(一类为独立完成特殊指令而存在的硬件设备,由CPU给出通道程序):全程由IO通道接管工作。
7,这里我们不得说明采用IO通道的方式控制IO传输可能产生“瓶颈现象”从而导致饥饿。通常采用多路互通的方式减少此类现象。
8,为了更好的管理系统中的部分硬件与IO设备,相应的建立可以管理它们的数据结构:
SDT(系统设备表):设备类名+设备标识符+DCT+驱动程序入口地址。
DCT(设备控制表):记录设备忙闲状态,含有COCT的队首指针地址。
COCT(控制器控制表):记录控制器忙闲状态,含有CHCT的队首指针地址。
CHCT(IO通道控制表):记录IO管道忙闲状态,含有COCT的队首指针地址。
9,那么问题来了,系统中大多数IO设备属于独占性设备,当给出的物理地址的设备已经占用时,用户就需要给出未被使用的设备物理地址,对用户来说无疑不可能。逻辑设备表LRT的引入解决了这个问题,同时保证了设备无关性与IO重定向。
10,在IO输入与输出的过程中,IO速率与处理机速率巨大的差距也是当前需要解决的问题之一:如果因为这段时间处理机都在等待IO输入结束,无疑是降低了处理机的并行性与吞吐效率。
11,缓冲区管理:(在内存中开辟缓冲区以缓解IO与处理机速率不协调的问题)
IO输入(IO输入控制方式)-输入缓冲区-工作区(处理机处理)-输出缓冲区-IO输出(IO输出控制方式)
12,缓冲区的设置:
单缓冲区:处理机- C -(工作区)- M -缓冲区- T -IO设备(TC并行)
M -缓冲区1
双缓冲区:处理机- C -(工作区)- - T -IO设备(TC,TM并行)
M -缓冲区2
环形缓冲区与缓冲池。
磁盘管理的引入:为了更好的对磁盘物理层次的管理(也就是对外存访问速率的提高)
1,磁盘的物理结构:常用的磁盘由八个软盘和一个带着若干磁头的可移动磁臂构成。
2,盘面(由于一个软盘有两个盘面以及在磁盘上它们也是具有相对物理地址的,所以会推出盘面号这一概念
来帮助定位),柱面(磁道组成的圆柱体外侧面,柱面也可以理解成不分盘面的磁道集合),磁道(一个盘面
分为若干磁道,一圈一圈的分布在盘面上,为环形状,一圈磁道分为若干扇区),扇区(是磁道的分割,
为扇形状)。
3,一般而言,用户访问磁盘的访问时间=寻道时间+旋转延迟时间+数据传输时间。
寻道时间:T=S+M*N(S为启动磁臂时间磁头跨越一条磁道时间为M,假设跨越N条磁道)
旋转延迟时间:T=1/2R(R为磁盘转速)
数据传输时间:T=B/nR(B为读写的字节数,n为单磁道字节数,R为磁盘转速)
由于数据传输时间与旋转延迟时间都取决于硬件的属性;因此我们主要改变寻道时间即可。
4,一个好的寻道算法将直接决定了寻道时间的长短,因此我们需要引入好的寻道算法:
(1)FCFS(先来先服务,按照访问次序寻道)
(2)SSTF(按照每一次寻道前距离当前磁道最短寻道次序寻道)
(3)SCAN(电梯寻道,按照给定的磁头移动方向寻道,如果当前方向没有再返回寻道)
(4)CSCAN(按照给定的磁头移动方向寻道,如果当前方向没有,直接返回该方向的起始
柱面继续沿着该方向寻道)
文件管理技术的引入目的是更好的管理磁盘空间
1,文件系统的层次结构:用户与文件系统的接口+对对象操纵和管理的软件集合+对象及其属性
对象及属性:文件+目录+磁盘存储空间
对对象操纵与管理的软件集合:对文件目录的管理+地址转换机构(文件的物理地址以及逻辑地址)
+权限管理(读写权限的管理)+文件保护机制,文件共享机制。
与文件系统有关的软件分为四个层次:IO控制层+基本IO管理程序+基本文件系统层+逻辑文件系统
2,文件的逻辑结构:
(1)从结构来分:有结构文件(记录式文件)+无结构文件(流式文件)
(2)从组织方式来分:顺序文件+索引文件+索引顺序文件
补充:有结构文件:定长记录,变长记录
3,顺序文件:排列方式:(串结构)按存取时间进行排序(顺序结构)找关键字,以关键字来排序。
考虑的问题:顺序文件在增删减改的过程中会造成很大的困难,我们采用动态的定时的事务文件
去按照关键字排序形成一个新的顺序文件(文件内容不丢失)
记录寻址(在顺序文件中查找某条记录):
隐式寻址:不定长记录从头到目标扫描,定长计算物理地址直接定位目标记录位置。
显式寻址:根据某种固定公式来为记录设置关键字并将记录物理地址与其对应,在查找时
直接由关键字进行定位。
4,索引文件:通过索引号+记录长度+每条记录的首址,建立一级或多级索引表,将不定长的非顺序文件转换为
定长的顺序文件进行查找。
5,索引顺序文件:利用了关键字排序以及索引思想。
6,文件目录:
FCB(文件控制块):基本信息+存取控制信息+使用信息
(类比PCB进程控制块记忆)
索引结点:建立一个以文件名+索引结点号的索引结点表,通过索引结点去寻找磁盘上对应的物理盘块
号已到达查找文件的目的。
单级文件目录不允许文件重名,所以不便文件共享,引入两级或多级文件目录以达到文件属组或者属
主不同来实现文件共享。
7,文件共享:
利用树形图来实现文件共享,把当前结点下的孩子文件指针保存在共享目录节点中。
利用索引结点链接来实现文件的共享,但是不能够随意的删除结点指向的内容或者它所属的文件。
会产生指针挂空的危险。
利用符号链接来实现文件的共享,就是以多级或嵌套式目录来不断地存取根文件的路径,在查
找时需要访问的物理地址较多,访问磁盘次数较多。
8,文件保护:课本查看为主。