11、进程调度-死锁-存储管理-固定分页分段
1、进程调度
进程调度方式是指当有更高优先级的进程到来时如何分配CPU。分为可剥夺和不可剥夺两种,可剥夺指当有更高优先级进程到来时,强行将正在运行进程的CPU分配给高优先级进程;不可剥夺是指高优先级进程必须等待当前进程自动释放CPU。
在某些操作系统中,一个作业从提交到完成需要经历高、中、低三级调度。
(1)高级调度。高级调度有称“长调度”、“作业调度”或“接纳调度”,它决定处于输入池中的哪个后备作业可以调入主系统做好运行的准备,成为一个或一组就绪进程。在系统中一个作业只需经过一次高级调度。
(2)中级调度。中级调度又称“中程调度”或“对换调度”,它决定**处于交换区中的哪个就绪进程可以调入内存,**以便直接参与对CPU的竞争。
(3)低级调度。低级调度又称“短程调度”或“进程调度”,它决定**处于内存中的哪个就绪进程可以占用CPU。**低级调度是操作系统中最活跃、最重要的调度,对系统的影响很大。
调度算法
先来先服务FCFS:先到达的进程优先分配CPU。用户宏观调度。
**时间片轮转:**分配给每个进程CPU时间片,轮流使用CPU,每个进程时间片大小相同,很公平,用于微观调度。
**优先级调度:**每个进程都拥有一个优先级,优先级大的先分配CPU。
**多级反馈调度:**时间片轮转和优先级调度结合而成,设置多个就绪队列1,2,3…n,每个队列分别赋予不同的优先级,分配不同的时间片长度;新进程先进入队列1的末尾,按照FCSF原则,执行队列1的时间片;若未能执行完进程,则转入队列2的末尾,如此重复。
2、死锁
当一个进程在等待永远不可能发生的事件时,就会产生死锁,若系统中有多个进程处于死锁状态,就会造成系统死锁。
死锁产生的四个必要条件:资源互斥、每个进程占用资源并等待其他资源、系统不能剥夺进程资源、进程资源图是一个环路。
死锁产生后,解决措施是打破四大条件,有下列方法:
**死锁预防:**采用某种策略限制并发进程对于资源的请求,破坏死锁产生的四个条件之一,使系统任何时刻都不满足死锁的条件。
**死锁避免:**一般采用银行家算法来避免,银行家算法,就是提前计算出一条不会死锁的资源分配方法,才分配资源,否则不分配资源,相当于借贷,考虑对方还得起才借钱,提前考虑好以后,就可以避免死锁。
**死锁检测:**允许死锁产生,但系统定时运行一个个检测死锁的程序,若检测到系统中发生死锁,则设法加以解除。
**死锁解锁:**即死锁发生后的解除方法,如强制剥夺资源,撤销进程等。
死锁资源计算(考点):系统内有n个进程,每个进程都需要R个资源,那么其发生死锁的最大资源数为n * (R - 1)。其不发生死锁的最小资源数为 n * (R - 1) + 1。
3台打印机,就是3个资源,n个进程
S范围就是 需要资源的个数即:3 ~ 3 - n,即 B,-3 就表示几个进程在等待资源即 3 个进程在等待。
R1 剩余:10 - (1 + 2 + 3 + 1 + 1) = 2
R2 剩余:5 - (1 + 1 + 1 + 1 + 1) = 0
R3剩余:3 - (1 + 0 + 0 + 1 + 0) = 1
27的答案为 D
为了安全,资源已经分配,需要满足进程对于资源的最大需求,R1 还剩余 2 个,还能满足 P2或P4或 P5 对于 R1资源的需求。R3还剩余1个,在 P2、P4、P5中还能满足P2或P4或P5.同时 R2已经没有剩余,P2、P4、P5中只有P5满足。
所以28的答案 A、C 排除。
所以先执行P5.
P5执行完成后,因为P5使用了2个 R1,1个R2,1个R3,所以此时还剩余资源位:
P5执行完后剩余:
R1 剩余:10 - (1 + 2 + 3 + 1 + 0) = 4
R2 剩余:5 - (1 + 1 + 1 + 1 + 0) = 1
R3剩余:3 - (1 + 0 + 0 + 1 + 0) = 1
此时剩余可以满足只能为 P2,所以此时答案就可以锁定为 B 了。
3、线程
传统的进程有两个属性:可拥有资源的独立单位;可独立调度和分配的基本单位。
引入现成的原因是进程在创建、撤销和切换中,系统必须为之付出较大的时空开销,故在系统中设置的进程数目不宜过多,进程切换的频率不宜过高,这就限制了并发程度的提高。引入线程后,将传统进程的两个基本属性分开,**线程作为调度和分配的基本单位,进程作为独立分配资源的单位。**用户可以通过创建线程来完成任务,以减少程序并发执行时付出的时空开销。
线程是进程中的一个实体,是被系统独立分配和调度的基本单位。**线程基本上不拥有资源,只拥有一点运行中必不可少的资源(如程序计数器、一组寄存器和栈),它可与同属一个进程的其他线程共享进程所拥有的全部资源,例如进程的公共数据、全局变量、代码、文件等资源,但不能共享线程独有的资源,**如线程的栈指针等标识数据。
4、分区存储管理(了解概念即可)
所谓分区存储组织,就是整存,将某进程运行所需的内存整体一起分配给它,然后再执行。有三种分区方式:
固定分区:静态分区方法,将主存分为若干个固定的分区,将要运行的作业装配进去,由于分区固定,大小和作业需要的大小不同,会产生内部碎片。(不管需要多少MB,就固定分配比如 100MB。)
**可变分区:**动态分区方法,主存空间的分区是在作业转入时划分,正好划分为作业需要的大小,这样就不存在内部碎片,但容易将整片主存空间切割成许多块,会产生外部碎片(比如一个需要50MB,一个需要1MB,其他有需要200MB,其中的 1MB的分区可能分配不给其他的,所以就成为了碎片)。可变分区的算法如下:
系统分配内存的算法有很多,如下图所示,根据分配前的内存情况,还需要分配9k空间,对于不同算法的结果介绍如下:
**可重定位分区:**可以解决碎片问题,移动所有已经分配好的区域,使其成为一个连续的区域,这样其他外部细小的分区碎片可以合并为大的分区,满足作业要求。只在外部作业请求空间得不到满足时进行。(比如将1MB、5MB等的外部碎片组合起来,形成了1+5+1+10+20… = 100MB 的区)
首次适应法:按内存地址顺序从头查找,找到第一个>=9k空间的空间块,即切割9k空间分配给进程。
最佳适应法:将内存中所有空闲内存块从小到大排序,找到第一个>=9k空间的空闲块,切割分配,这个将会找到与9k空间大小最相近的空闲块。
最差适应法:和最佳适应法相反,将内存中空闲块空间最大的,切割9k分配给进程,这是为了预防系统中产生过多的细小空闲块。
循环首次适应法:按内存地址顺序查找,找到第一个>=9k空间的空闲块,而后若还需分配,则找下一个,不用每次都从头查找,这是与首次适应法不同的地方。
5、分页存储管理(考点)
逻辑页分为页号和页内地址,页内地址就是物理偏移地址,而页号与物理块号并非按序对应的,需要查询页表,才能得知页号对应的物理块号,再用物理块号加上偏移地址才得出了真正运行时的物理地址。
优点:利用率高,碎片小,分配即管理简单。
缺点:增加了系统开销,可能产生抖动现象。
我需要1GB的内存,但是内存只有 100MB了,不够了。此时分区整存就不行了,就需要分页,因为程序不是一下子需要1GB内存,可以分页,一步、一步的或一条指令、一条指令的往下执行。
比如1GB 按照 4KB 每页,分为很多页,然后一页一页的调用。从而实现无论需要多大的内存,都可以最终执行完。
抖动现象就是如果需要20页,内存分了10页,原理上内存如果也分为20页,效率应该会更高,但是随着内存页数的增加,如果算法选的不好,可能效率会下降,这就是抖动。
物理地址:外存地址
逻辑地址:内存地址
页号就是有多个的页,比如内存4GB,每页4KB,则可以分为 1024 * 1024 页,而 220 = 1024 * 1024,所以页号就为 20.
页号就是 2的 多少次方,2的多少次方 的值 表示总共多少页。
页内地址跟页的大小相关,4KB 就是 212,4KB = 22 * 1024B = 22 * 210 = 212B,所以页内地址为 12 位。
页面置换算法
最优算法:OPT,理论上的算法,无法实现。
先进先出算法:FIFO,先调入内存的页先被置换淘汰,会产生抖动现象,即分配的页数越多,缺页率可能越多(即效率越低)
最近最少使用:LRU,在最近的过去,进程执行过程中,过去最少使用的页面被置换淘汰,根据局部性原理,这种方式效率高,且不会产生抖动现象,使用大量计数器,但是没有LFU多。
淘汰原则:有限淘汰最近未访问的,而后淘汰最近未被修改的页面。
页表存储的逻辑地址和物理地址的映射关系。
快表
是一块小容量的相联存储器,由快速存储器组成,按内容访问,速度快,并且可以从硬件上保证按内容并行查找,一般用来存放当前访问最频繁的少数活动页面的页号。
快表是将页表存于Cache中;慢表是将页表存于内存中。慢表需要访问两次内存才能取出页,而快表是访问一次Cache和一次内存,因此更快。
这样的题首先要确定页号和页内地址是多少位。
4K = 212,所以页内地址 为 12 位,超过 12位的就是页号了。
而 1D16H 为16进制,16进制的数字,每个数字可以用4个二进制来表示,所以 D16 就是 12 位二进制,正好是页内地址的位数。
如果逻辑地址是十进制的话,则同样需要转换为二进制,根据页内地址的位数,除去12位,则保留的前面的部分就是页号。
所以除去 D16,1 就是页号了。
而页号1指向的就是物理块号3,所以物理地址十六进制就是 3D16H.
页号为1的页帧号为空,表明1不在内存。
上面题目根据页面置换算法中的(最近最少使用算法可以解决)。即先看状态位,是否不在内存,然后再看访问位,是否未访问过,然后再看修改位,是否未修改后。不在内存、未访问过、未修改过 优先置换(淘汰)。
所以答案为 0、2、3中的 3.答案为 D。
6、分段存储管理(考的不多)
将进程空间分为一个一个段,每段也有段号和段内地址,与页式存储不同的是,每段物理大小不同,分段是根据逻辑整体分段的,因此,段表也与页表的内容不同,页表中直接是逻辑页号对应物理块号,而段表有段长和基址两个属性,才能确定一个逻辑段在屋里段中的位置。
优点:多道程序共享内存,各段程序修改互不影响。
缺点:内存利用率低,内存碎片浪费大。
A 中的 (0,1597), 0 表示段号,对应表可以看到段号0的段长600,而 1597是段偏移地址(段长),超过了600,所以不符合。
B 全部符合,(0,128),128 < 600,(1,30),30 < 50,(3,1390),1390 < 2988
所以答案是 B
12、设备管理-文件管理
1、设备管理
设备是计算机系统与外界交互的工具,具体负责计算机外部的输入/输出工作,所以常称为外部设备(简称外设)。在计算机系统中,将负责管理设备和输入/输出的机构称为 I/O系统。因此,I/O系统由设备、控制器、通道(具有通道的计算机系统)、总线和 I/O 软件组成。
1、I/O 软件(考点)
I/O 设备管理软件的所有层次及每一层功能如下图:
实例:当用户程序试图读一个硬盘文件时,需要通过操作系统实现这一操作。
与设备无关软件检查高速缓冲中有无要读的数据块,若没有,则调用设备驱动程序,向I/O硬件发出一个请求。
然后,用户进程阻塞并等待磁盘操作的完成。
当磁盘操作完成时,硬件产生一个中断,转入中断处理程序。中断处理程序检查中断的原因,认识到**这时磁盘读取操作已经完成,于是唤醒用户进程取回从磁盘读取的信息,从而结束此次I/O请求。**用户进程在得到了所需的硬盘文件内容之后,继续运行。
2、设备管理技术
一台独占设备(比如打印机,同一时间只有一个人使用打印机),在同一时间只能由一个进程使用,其他进程只能等待,且不知道什么时候打印机空闲,此时,极大的浪费了外设的工作效率。
引入SPOOLING(外围设备联机操作)技术,就是在外设上建立两个数据缓冲区,分别称为输入井和输出井,这样无论多少进程,都可以共用这一台打印机,只需要将打印机命令发出,数据就会排队存储在缓冲区中,打印机会自动按顺序打印,实现了物理外设的共享,使得**每个进程都感觉在使用一个打印机,这就是物理设备的虚拟化。**如下图所示:
真正的独占设备是:如果有人在使用这个机器,则另一个人不可以提交、也不可以打印,只能等待那个人使用完毕,你才可以提交、打印。
SPOOLING 的物理设备虚拟化是:如果有人在使用这个机器,而另一个人仍然可以提交,其他人也可以提交,提交之后(提交到了缓冲区,输入井),然后这些任务就排队打印。对于人来说,无论多少人使用你都可以提交,等待打印成功即可。这对于独占设备来说就像是并行任务了一样(只能一个人提交、允许很多人同时提交),比如同时提交的所有人的文档,半小时后全都打印完了。
I/O 软件隐藏了底层复杂的实现细节,只提供接口供用户方便的使用。
2、文件管理(不怎么考)
信息项是构成文件内容的基本单位,可以是一个字符,也可以是一个记录。
文件管理系统就是操作系统中实现文件统一管理的一组软件和相关数据的集合,专门负责管理和存取文件信息的软件机构。
文件的逻辑结构可分为两大类:有结构的记录式文件;无结构的流式文件。
文件的物理结构是指文件在物理设备上的存放方法,包括:
(1)连续结构。连续结构也称为顺序结构,它将逻辑上连续的文件信息(如记录)依次存放在连续编号的物理块上。
(2)链接结构。链接结构也称串联结构,它是将逻辑上连续的文件信息(如记录)存放在不连续的物理块上,每个物理块设有一个指针指向下一个物理块。
(3)索引结构。将**逻辑上连续的文件信息(如记录)存放在不连续的物理块中,**系统为每个文件建立一张索引表。索引表记录了文件信息所在的逻辑块号对应的物理块号,并将索引表的起始地址放在与文件对应的文件目录项中。
(4)多个物理块的索引表。索引表是在文件创建时由系统自动建立的,并与文件一起存放在同一文件卷上。根据一个文件大小的不同,其索引表占用物理块的个数不等,一般占一个或几个物理块。
3、索引文件结构(考点)
如图所示,系统中由13个索引节点,0-9为直接索引,即每个索引节点存放的是内容,假设每个物理盘大小为4KB,供可存放4KB * 10 = 40KB 数据。
10号索引节点为一级间接索引节点,大小为4KB,存放的并非直接数据,而是链接到直接物理盘块的地址,假设每个地址占4B,则共有 (4KB / 4B = 1024)1024个地址,对应1024个物理盘,可存 1024 * 4KB = 4096KB数据。
**二级索引节点类似,直接盘存放一级地址,一级地址再存放物理盘块地址,而后链接到存放数据的物理盘块,**容量又扩大了一个数量级,为 1024 * 1024 * 4KB 数据。
4字节 = 4B
8个地址项,5个未直接索引,所以是 0 - 4 为直接索引,2个一级间接,1个二级间接
所以磁盘索引块:
直接索引:0~4
一级间接:5~(1KB/4B) * 2 + 5 - 1 = 5 ~ 516
二级间接:517~(1KB/4B) * (1KB*4B) + 517 - 1 = 517 ~ 256 * 256 + 517 - 1
上式中的 1KB为磁盘索引块的大小,因为这里计算的是逻辑块号的编号。
单个文件的最大长度则需要计算磁盘数据块的大小了(也为1KB):
直接索引大小:(4 - 0 + 1)* 1KB = 5KB
一级间接:(516 - 5 + 1)* 1KB = 512KB
二级间接:(256 * 256 + 517 - 1 - 517 + 1) = 256 * 256 KB = 65536KB
总共大小:5 + 512 + 65536 = 66053KB
4、文件目录
文件控制块中包含以下三类信息:基本信息类、存储控制信息类和使用信息类。
(1)基本信息类。例如文件名、文件的物理地址、文件长度和文件块数等。
(2)存取控制信息类。文件的存取权限。
(3)使用信息类。文件建立日期、最后一次修改日期、最后一次访问日期、当前使用的信息等。
文件控制块的有序集合称为文件目录。
相对路径:是从当前路径开始的路径。
绝对路径:是从根目录开始的路径。
全文件名 = 绝对路径+文件名。要注意,绝对路径和相对路径是不加最后的文件名的,只是单纯的路径序列。
5、文件存储空间管理
文件的存取方法是指读/写文件存储器上的一个物理块的方法。通常有顺序存取和随机存取两种方法。顺序存取方法是指对文件中的信息按顺序依次进行读/写;随机存取方法是指对文件中的信息可以按任意的次序随机地读/写。
文件存储空间的管理:
(1)空闲区表:将外存空间上的一个连续的未分配区域称为“空闲区”。
(2)位示图(考过)。这种方法是在外存上建立一张位示图(Bitmap),记录文件存储器的使用情况。每一位对应文件存储器上的一个物理块,取值0和1分别表示空闲和占用。
32位即32bit
4MB = 4 * 1024 B
位示图中一个磁盘块对应1位
1000GB / 4MB = 250 * 1024 个磁盘块 = 250 * 1024bit
需要的字数: 250 * 1024bit / 32bit = 8000
位示图中一个磁盘块对应1位
所以 16385/32 = 512.031 = 513 位,但字的编号是从0开始的,所以需要 513 - 1 = 512 位。