操作系统基础知识 考点梳理
操作系统作为计算机科学最为基本的理论基础和分支领域之一是软考中必须重点掌握的知识。
(1)操作系统的内核。
(2)操作系统的五大管理功能:进程管理、存储管理、设备管理、文件管理、作业管理。
(3)网络操作系统和嵌入式操作系统基础知识。
(4)操作系统配置。
本章主要对进程状态转换图、信号量与PV操作、死锁问题、银行家算法、段页式存储、页面置换算法、磁盘调度、树形文件系统等知识点进行梳理。
目录
一、进程管理
进程管理也称为处理机管理,该部分内容是整个操作系统部分的考查重点,主要知识点有:进程状态转换图、信号量与PV操作、死锁问题、银行家算法。
1. 进程状态转换图
进程状态转换图用于展现进程的状态,以及各种状态之间的转换。最为常见的有:三态模型和五态模型,其后又提出了七态模型。在软件设计师考试中我们需要掌握五态模型。五态模型是对三态模型的扩展(即五态模型已经包含了三态模型)。
从该图可以看出,五态模型中的五态为:执行状态(运行状态)、活跃就绪状态、活跃阻塞状态、静止就绪状态、静止阻塞状态;其中执行状态、就绪状态、阻塞状态组成三态模型。
执行状态:指进程占有处理机正在CPU上执行的状态。在单CPU系统中,每一时刻只有一个进程处于执行状态。
活跃就绪状态:指进程分配到除处理机以外的必需的资源(已经具备了执行的条件)的状态。
进程被创建后处于就绪状态,处于就绪状态的进程可以有多个。
活跃阻塞状态:指进程因等待某个事件的发生而放弃处理机进入等待状态。系统中处于这种状态的进程可以有多个。
静止就绪状态:指进程被移至磁盘镜像区中,此时进程只缺处理机资源。
静止阻塞状态:指进程被移至磁盘镜像区中,此时进程除了缺处理机资源,还缺其它资源。
2. 信号量与PV操作
临界资源:诸进程间需要互斥方式对其进行共享的资源,如打印机、磁带机等。
临界区:每个进程中访问临界资源的那段代码称为临界区。
信号量:一种特殊的变量
(2)完成同步控制
最简单的同步形式是:进程A在另一个进程B到达L2以前,不应前进到超过点L1,这样就可以使用程序,如下所示:
进程A进程B
… …
L 1:P(信号量)L2:V(信号量)
… …
因此要确保进程B执行V操作之前,不让进程A的运行超过L1,因此信号量的初值就应该为0。这样,如果进程A先执行到L1,那么执行P操作后,信号量的整型值就会小于1,也就停止执行。直到进程B执行到L 2时,将信号量的整型值加1,并唤醒它以继续执行。
3. 前趋图
为了描述一个程序的各部分(程序段或语句)间的依赖关系,或者是一个大的计算的各个子任务间的因果关系,我们常常采用前趋图方式。前趋图中的每个结点可以表示一条语句、一个程序段或一个进程,结点间的有向边表示两个结点之间存在的偏序(Partial Order)或前趋关系(Precedence Relation)“→”。
首先我们需要弄清楚前驱图中给出的各进制的执行顺序。从图中我们不难看出进程P1和P2没有前驱,也就是可以首先并发执行,而进程P3的前驱是P1和P2,P4的前驱是P1和P3,P5的前驱是P2和P3。那么怎么理解前驱呢?其实前驱就是指只有在前驱进程完成后,该进程才能开始执行。
从该前驱图中我们不难看出,有6条路径,分别是P1>P3,P1>P4,P2>P3,P2>P5,P3>P4,P3>P5。
P原语的主要操作是:
(1)信号量(sem)减1;
(2)若相减结果大于等于零,则进程继续执行;
(3)若相减结果小于零,则阻塞一个在该信号量上的进程,然后再返回原进程继续执行或转进程调度。
V原语的主要操作是:
(1)信号量(sem)加1;
(2)若相加结果大于零,则进程继续执行;
(3)若相加结果小于或等于零,则唤醒一阻塞在该信号量上的进程,然后再返回原进程继续执行或转进程调度。
总而言之,进行P操作的主要目的是阻塞某信号量上的进程,而进行V操作的主要目的是唤醒某信号量上的进程。
考试中常与PV操作相结合
在题中的信号量按照“从左至右,从上到下”的顺序在前趋图中标识出来,每一个箭头对应一个信号量,箭头的起始位置相当于V操作,箭头的终点位置相当于P操作,再进行解题。
4.死锁问题
进程管理是操作系统的核心,但如果设计不当,就会出现死锁的问题。如果一个进程在等待一件不可能发生的事,则进程就死锁了。而如果一个或多个进程产生死锁,就会造成系统死锁。
死锁是指各并发进程彼此互相等待对方所拥有的资源,且这些并发进程在得到对方的资源之前不会释放自己所拥有的资源。从而造成大家都想得到资源而又都得不到资源,各并发进程不能继续向前推进的状态。
若N为需要的资源数,K个进程,不发生的死锁的最小资源数M=K*(N-1)+1
产生死锁的根本原因在于系统提供的资源个数少于并发进程所要求的该类资源数。产生死锁有四个必要条件:
(1)互斥条件:即一个资源每次只能被一个进程使用,在操作系统中这是真实存在的情况。
(2)保持和等待条件:有一个进程已获得了一些资源,但因请求其他资源被阻塞时,对已获得的资源保持不放。
(3)不剥夺条件:有些系统资源是不可剥夺的,当某个进程已获得这种资源后,系统不能强行收回,只能由进程使用完时自己释放。
(4)环路等待条件:若干个进程形成环形链,每个都占用对方要申请的下一个资源。
应对死锁的策略主要有:
(1)死锁的预防:不让任一产生死锁的必要条件发生就可以预防死锁。
(2)死锁的避免:这种策略不对用户进程的推进顺序加以限制,在进程申请资源时先判断这次分配安全否,只有安全才实施分配,典型的算法是银行家算法。
(3)死锁的检测:这种策略采用资源请求分配图的化简方法来判断是否发生了不安全状态。资源请求分配图是一种有向图,表示进程与资源之间的关系。死锁的检测是在需要的时刻执行的,当发现系统处于不安全状态时,即执行死锁的解除策略。
(4)死锁的解除:解除死锁的基本方法是剥夺。一种方法是把资源从一些进程处剥夺分给别的进程,被剥夺资源的进程则需回退到请求资源处重新等待执行;另一种方法是终止一个进程,剥夺其全部资源,以后再重新运行被终止的进程。
4.银行家算法
银行家算法是一种经典的死锁避免方法。银行家算法的基本思想是:当某个进程提出申请时,必须判断将资源分配给该进程后,会不会引起死锁。若不会,则进行分配;否则就不分配。这样做能保证在任何时刻至少有一个进程可以得到所需的全部资源而执行结束,并将归还资源加入到系统的剩余资源中,这些资源又至少可以满足一个进程的最大需求,于是保证所有进程都能在有限的时间内得到需求的全部资源。
按照银行家算法的思想,当进程请求资源时,系统将按如下原则分配资源:
(1)当一个进程对资源的最大需求量不超过系统中的资源数时可以接纳该进程。
(2)进程可以分期请求资源,但请求的总数不能超过最大需求量。
(3)当系统现有的资源不能满足进程尚需资源数时,对进程的请求可以推迟分配,但总能使进程在有限的时间里得到资源。
(4)当系统现有的资源能满足进程尚需资源数时,必须测试系统现存的资源能否满足该进程尚需的最大资源数,若能满足则按当前的申请量分配资源,否则也要推迟分配。
二、存储管理
存储管理是操作系统的重要职能之一,在计算机中,存储是分层次的体系结构。层次从高到低包括:寄存器(CPU中)、Cache、内存、外存(硬盘,U盘,光盘等)。在本章中,主要论述虚拟存储管理技术中的页式存储、段式存储、段页式存储,以及磁盘的基本工作原理。
1. 页式存储组织
页式存储组织的基本原理是将各进程的虚拟空间划分为若干个长度相等的页,把内存空间以与页相等的大小划分为大小相等的片或页面,采用请求调页或预调页技术实现内外存的统一管理。
页式存储组织的主要优点是利用率高,产生的内存碎片小,内存空间分配及管理简单。主要缺点是要有相应的硬件支持,增加了系统开销;请求调页的算法如选择不当,有可能产生“抖动”现象。
2. 段式存储组织
一个作业是由若干个具有逻辑意义的段(如主程序、子程序、数据段等)组成。在分段系统中,允许程序(作业)占据内存中若干分离的分区。分段系统中的虚地址是一个有序对(段号,段内位移)。系统为每一个作业建立一个段表,其内容包括段号与内存起始地址的对应关系、段长和状态等。状态指出这个段是否已调入内存,若已调入内存,则指出这个段的起始地址位置,状态同时也指出这个段的访问权限。如果该段尚未调入内存,则产生缺段中断,以便装入所需要的段。
段式存储组织的主要优点是:便于多道程序共享内存,便于对存储器的保护,各段程序修改互不影响。其主要缺点是内存利用率低,内存碎片浪费大。
3. 段页式存储组织
段页式存储组织是分段式和分页式结合的存储组织方法,这样可充分利用分段管理和分页管理的优点。在段页式管理的存储器中,程序按逻辑单位分成基本独立的段,再把每段分成固定大小的页。内存则等分成与上述页大小相等的页。程序对内存的调入或调出是按页进行的。但它又可按段实现共享和保护。
在多道程序环境中,每道程序都有一张段表和一个作为用户标志的基号。一个逻辑地址中,除了基号x 、段号s 和页号p外,还有一个页内地址d。每个逻辑地址变换成实地址的过程如下:根据基号找到相应的基址寄存器,由该基址寄存器内容找到该程序对应的段表始地址,再由段号找到该段表中相应行地址,该行地址中的内容为页表起始地址,再由页号找到物理页号的地址(已是内存中的某页)它与页内地址拼接后即得物理地址。可见段页式管理中需要多次查表才能最终获得物理地址。该过程可简单地用一个式子来示意,即:
(((x)+s)+p)*2^n+d
其中,(x)表示基寄存器中地址为x的单元的内容,n为页内地址的位数。
段页式管理将段式存储管理和页式存储管理两种方式相结合,互相取长补短,充分发挥了它们的优点。使段页式虚拟存储器管理方案(优点:)具有空间浪费小、存储共享容易、存储保护容易、能动态连接的特点。但(缺点:)由于管理软件的增加,复杂性和开销也随之增加,需要的硬件以及占用的内存也有所增加,使得执行速度大大下降。
在分页存储管理时,将内存划分为大小相等的页面,每一页物理内存叫页帧,以页为单位对内存进行编号,该编号可作为页数组的索引,又称为页帧号。在淘汰页面时,应选择页帧号最大的进行淘汰
4. 快表
快表是一块小容量的相联存储器(Associative Memory),由高速缓存器组成,速度快,并且可以从硬件上保证内容并行查找,一般用来存放当前访问最频繁的少数活动页面的页号。
快表是把段表、页表放在Cache里,把段表、页表放在内存中我们称为慢表。
5. 页面置换算法
页面淘汰算法:指令只产生一次缺页中断,操作数产生两次缺页中断。
由于实际主存是小于虚存的,因此可能会发生内存中已满,但需要使用的页不在主存中这一情况。这时就需要进行置换,即将一些主存中的页淘汰到外存,腾出空间给要使用的页,这个过程也称为Swapping。其工作原理与Cache调入相类似。
最优算法(OPT):淘汰不用的或最远的将来才用的页。这是一种理想算法,不可能实现,只是用来作为衡量算法效率的参照物。
随机算法(RAND):随机淘汰。这种算法开销小,但性能不稳定。
先进先出算法(FI FO):有可能产生“抖动”,选择最早调入(也是驻留时间最长)的页。
最近最少使用算法(LRU):不会“抖动”,分配的资源越多则性能越稳定;选择离当前时刻最近的一段时间内使用得最少的页。
系统抖动:大部分处理器时间都用在来回的页面调度上,这种局面称为系统抖动或颠簸(thrashing)
抖动的后果:
(1)缺页率急剧增加
(2)内存有效存取时间加长,
(3)系统吞吐量骤减;系统已基本不能完成什么任务,而是忙于页面对换操作,cpu虽然忙,但效率急剧下降。
6. 局部性原理
存储管理策略的基础是局部性原理,即进程往往会不均匀地高度局部化地访问内存。局部性分为时间局部性和空间局部性。时间局部性是指最近访问存储位置,很可能在不久的将来还要访问;空间局部性是指存储访问有聚集的倾向,当访问了某个位置后,很可能也要访问其附近的位置。根据局部性原理的特征性,Denning阐述了程序性能的工作集理论。工作集是进程频繁访问的页面的集合。工作集理论指出,为使进程有效地运行,它的页面工作集应驻留内存中。否则,由于进程频繁地从外存请求页面,而出现称为“抖动”(又称颠簸)的过度的页面调度活动。此时,处理页面调度的时间超过了程序的执行时间。显然,此时CPU的有效利用率会急速下降。
工作集的大小依赖于工作集窗口(进程在定长时间间隔中涉及到的页面的集合)的大小,在进程执行时,工作集会发生变化。有时,当进程进入另一具有完全不同的执行阶段时,工作集会出现显著的变化。不过在一个进程的执行过程中,工作集的大小处于稳定状态的时间基本上占绝大多数。另一种控制颠簸的技术是控制缺页率。操作系统规定缺页率的上下限,当一个进程的缺页率高于上限时,表明该进程需要更大的内存空间,则分配较多的内存页面给它。当进程的缺页率低于下限时,表明该进程占用的内存空间过大,可以适当地收回若干内存页面。
7. 磁盘工作原理
磁盘是最常见的一种外部存储器,它是由1至多个圆形磁盘组成的
(1)概念
磁道:磁道是一组记录密度不同的同心圆。在一个磁盘中,从外到内,磁盘记录密度不断增加。同时,值得注意的是,0磁道是磁盘最外圈的磁道。
扇区:磁盘上的每个磁道被等分为若干个弧段,这些弧段便是磁盘的扇区。
柱面:一个磁盘中,多个记录面相同磁道组成柱面。如磁盘有9个记录面,则这9个记录面的0磁道可组成一个柱面。
注意:硬盘就是磁盘的一种。硬盘工作时,无论是否在进行数据的读取,其盘片都是不断旋转的状态。
(2)公式
平均数据传输速率 = 每道扇区数*扇区容量*盘片转数。
存取时间 = 寻道时间+等待时间
(注意:寻道时间是指磁头移动到磁道所需的时间;等待时间为等待读写的扇区转到磁头下方所用的时间)
(3)数据存取过程
根据硬盘存放数据的规则,在向磁盘记录一个文件时,应将文件尽可能记录在同一柱面上,当一个柱面记录不下时,再记录到相邻柱面上。因此,当一个文件超出一个磁道容量时,剩下的部分应存于其他盘面的同一编号的磁道上,即同一柱面的其他磁道上。
为存取磁盘上的一个物理记录,必须给出3个参数:柱面号,磁头号(盘面号),扇区号。磁盘机根据柱面号控制移动臂作径向运动,带动读写头到达所需的柱面;从磁头号可确定哪一个磁头来读写数据,然后便等待访问的信息块旋转到读写头下时进行存取。磁盘机实现这些功能的操作是:查找(将读写头定位到指定柱面并选择指定磁头)、搜索(指定磁头寻找访问的记录块)、读、写和控制等。
平均存取时间(Average Access Ti me)是反映磁盘数据操作速度的指标,单位是毫秒(ms)。它包括三个时间段,分别是平均寻道时间(Seek Time),平均定位时间(Setting Time)和转动延迟(Rotational Latency),其中后两个又统称为等待时间。
寻道时间也称为查找时间,为磁头移动到目标磁道所需的时间。对于固定磁头磁盘而言,无需移动磁头,只需选择目标磁道对应的磁头即可。等待时间为等待读写的扇区旋转到磁头下方所用的时间。一般选用磁道旋转一周所用时间的一半作为平均等待时间。寻道时间由磁盘机的性能决定,目前主流硬盘典型的平均寻道时间(Average Seek Time,AST)一般在4ms 左右,而转速则有5400r pm、7200r pm、15000r pm等。在考试当中,这些参数通常是由试题指定。
(4)磁盘调度算法
先来先服务(FCFS):该算法根据进程请求访问磁盘的先后次序进行调度。其优点是公平、简单,且每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足但此算法由于未对寻道进行优化,致使平均寻道时间可能较长。
最短寻道时间优先(SSTF):该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,但这种调度算法却不能保证平均寻道时间最短。
扫描算法(SCAN):SCAN算法不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的是磁头的当前移动方向。例如,当磁头正在自里向外移动时,SCAN算法所选择的下一个访问对象应是其欲访问的磁道既在当前磁道之外,又是距离最近的。这样自里向外地访问,直到再无更外的磁道需要访问才将磁臂换向,自外向里移动。由于这种算法中磁头移动的规律颇似电梯的运行,故又称为电梯调度算法。
循环扫描(CSCAN)算法:该算法规定磁头单向移动。例如,只自里向外移动,当磁头移到最外的被访问磁道时,磁头立即返回到最里的欲访磁道,即将最小磁道号紧接着最大磁道号构成循环,进行扫描。
三、设备管理
在计算机系统中,除了处理器和内存之外,其他的大部分硬设备称为外部设备。它包括输入/ 输出设备,辅存设备及终端设备等。
1.数据传输控制方式
输入输出系统主要有五种方式与主机交换数据:程序控制方式、程序中断方式、DMA方式、通道方式、I / O处理机。
(1)程序控制方式:CPU直接利用I / O指令编程,实现数据的I / O。CPU发出I / O命令,命令中包含了外设的地址信息和所要执行的操作,相应的I / O系统执行该命令并设置状态寄存器;CPU不停地(定期地)查询I / O系统以确定该操作是否完成。由程序主动查询外设,完成主机与外设间的数据传送,方法简单,硬件开销小。
(2)程序中断方式:CPU利用中断方式完成数据的I / O,当I / O系统与外设交换数据时,CPU无需等待也不必去查询I / O的状态,当I / O系统完成了数据传输后则以中断信号通知CPU。CPU然后保存正在执行程序的现场,转入I / O中断服务程序完成与I / O系统的数据交换。然后返回原主程序继续执行。与程序控制方式相比,中断方式因为CPU无需等待而提高了效率。在系统中具有多个中断源的情况下,常用的处理方法有:多中断信号线法、中断软件查询法、雏菊链法、总线仲裁法和中断向量表法。
(3)DMA方式(直接存储控制方式):使用DMA控制器(DMAC)来控制和管理数据传输。DMAC和CPU共享系统总线,并且具有独立访问存储器的能力。在进行DMA时,CPU放弃对系统总线的控制而由DMAC控制总线;由DMAC提供存储器地址及必须的读写控制信号,实现外设与存储器之间进行数据交换。DMAC获取总线方式主要有三种,分别是暂停方式、周期窃取方式和共享方式。
(4)通道:通道是一种通过执行通道程序管理I / O操作的控制器,它使主机与I / O操作之间达到更高的并行程度。在具有通道处理机的系统中,当用户进程请求启动外设时,由操作系统根据I / O要求构造通道程序和通道状态字,将通道程序保存在主存中,并将通道程序的首地址放到通道地址字中,然后执行“启动I / O”指令。按照所采取的传送方式,可将通道分为字节多路通道、选择通道和数组多路通道三种。
(5)输入输出处理机(I OP):也称为外围处理机(PPU),它是一个专用处理机,也可以是
一个通用的处理机,具有丰富的指令系统和完善的中断系统。专用于大型、高效的计算机系统处理外围设备的I / O,并利用共享存储器或其他共享手段与主机交换信息。从而使大型、高效的计算机系统更加高效地工作。与通道相比,I OP具有比较丰富的指令系统,结构接近于一般的处理机,有自己的局部存储器。
2.虚设备与SPOOLING技术
SPOOLING(Simultaneous Peripheral Operation On Line)的意思是外部设备同时联机操作,又称为排队转储技术,又称为假脱机输入输出操作,采用一组程序或进程模拟一台 I / O处理器。
它在输入和输出之间增加了“输入井”和“输出井”的排队转储环节。
Spooling系统主要包括以下3部分:
(1)输入井和输出井:这是在磁盘上开辟出来的两个存储区域。输入井模拟脱机输入时的磁盘,用于收容I / O设备输入的数据。输出井模拟脱机输入时的磁盘,用于收容用户程序的输出数据。
(2)输入缓冲区和输出缓冲区:这是在内存中开辟的两个缓冲区。输入缓冲区用于暂存由输入设备送来的数据,以后再传送到输出井。输出缓冲区用于暂存从输出井送来的数据,以后再传送到输出设备。
(3)输入进程和输出进程:输入进程模拟脱机输入时的外围控制机,将用户要求的数据由输入设备送到输入缓冲区,再送到输入井。当CPU需要输入设备时,直接从输入井读入内存。输出进程模拟脱机输出时的外围控制机,把用户要求输入的数据,先从内存送到输出井,待输出设备空闲时,再将输出井中的数据,经过输出缓冲区送到输出设备上。
该技术利用了专门的外围控制机将低速I / O设备上的数据传送到高速设备上,或者相反。但是当引入多道程序后,完全可以利用其中的一道程序来模拟脱机输入时的外围控制机的功能,把低速的I / O设备上的数据传送到高速磁盘上;再利用另一道程序来模拟脱机输出时的外围控制机的功能,把高速磁盘上的数据传送到低速的I / O设备上。这样便可以在主机的控制下实现脱机输入、输出的功能。此时的外围操作与CPU对数据的处理同时进行,我们将这种在联机情况下实现的同时外围操作称为SPOOLI NG,或称为假脱机操作。
采用假脱机技术,可以将低速的独占设备改造成一种可共享的设备,而且一台物理设备可以对应若干台虚拟的同类设备。SPOOLING系统必须有高速、大容量并且可随机存取的外存( 如磁盘或磁鼓) 支持。
3.设备驱动程序
设备驱动程序与设备无关的上层软件的抽象请求,进行与设备相关的处理
设备驱动程序是一种可以使计算机和设备通信的特殊程序,相当于硬件的接口,操作系统只有通过这个接口,才能控制硬件设备的工作。
驱动程序的任务:首先其作用是将硬件本身的功能告诉操作系统,接下来的主要功能就是完成硬件设备电子信号与操作系统及软件的高级编程语言之间的互相翻译。当操作系统需要使用某个硬件时,比如:让声卡播放音乐,它会先发送相应指令到声卡驱动程序,声卡驱动程序接收到后,马上将其翻译成声卡才能听懂的电子信号命令,从而让声卡播放音乐。要求播放音乐的上层软件→操作系统→驱动程序→硬件,所以相对于驱动程序来说,上层软件与它是无关的,因为它们之间有操作系统。因此,设备驱动程序的任务是接收来自
四、文件管理
文件管理部分考查主要集中于树型目录结构、位示图以及索引文件结构。
1. 树型目录结构
在计算机的文件系统中,一般采用树型目录结构。在树型目录结构中,树的根结点为根目录,
数据文件作为树叶,其他所有目录均作为树的结点。
根目录隐含于一个硬盘的一个分区中,根目录在最顶层。它包含的子目录是一级子目录。每一个一级子目录又可以包含若干二级子目录,…,这样的组织结构就叫做目录树。
当前盘和当前目录是系统默认的操作对象。如果用户没有指明操作对象,系统就将用户命令指向当前盘和当前目录。路径是指从根目录或者当前目录开始到访问对象(目录或者文件),在目录树中路经过的所有目录的序列。例如“c : \ dos \ l mouse\ mouse”就是Windows 系统中的一条路径。在树型目录结构中,从根目录到任何数据文件之间,只有一条惟一的通路,从树根开始,把全部目录文件名与数据文件名,依次用“/ ”(UNIX/ Linux系统)或“\ ”(Windows 系统)连接起来,构成该数据文件的路径名,且每个数据文件的路径名是惟一的。这样,可以解决文件重名问题。从树根开始的路径为绝对路径,如果文件系统有很多级时,使用不是很方便,所以引入相对路径,即是从当前目录开始,再逐级通过中间的目录文件,最后到达所要访问的数据文件。绝对路径给出文件或目录位置的完全的描述,通常由层次结构的顶端开始(根目录),通常第一个字符是“/ ”(UNI X/ L i nux 系统)或者是盘符(Wi ndows 系统)。相对路径通常由目录结构中的当前的位置开始,一般都比绝对路径要短。父目录是指当前路径的上一层目录。每个目录下都有代表当前目录的“. ”文件和代表当前目录父目录的“. . ”文件,相对路径名一般就是从“. . ”开始的。
Linux系统目录结构 http://a3.att.hudong.com/25/63/19300001282941131823631620973.png
2. 空闲存储空间管理
(1)空闲区表法(空闲文件目录)
空闲表法属于连续分配方式,它与内存管理中的动态分区分配方式雷同。
将外存空间上一个连续未分配区域称为“空闲区”。操作系统为磁盘外存上所有空闲区建立一张空闲表,每个表项对应一个空闲区,空闲表包含“序号,第一空闲盘块号,空闲盘块数”等信息。空闲区表法适用于连续文件结构。
它为每个文件分配一个连续的存储空间。系统为外存上的所有空闲区建立一张空闲表,每个空闲区对应于一个空闲表项。
(2)空闲链表法
将所有的空闲盘区拉成一条空闲链。根据构成链的基本元素的不同,可有两种链表方式:空闲盘块链、空闲盘区链。
空闲盘块链:将磁盘上的所有空闲存储空间,以盘块为基本元素拉成一条链。优点是用于分配和回收一个盘块的过程非常简单;缺点是空闲盘块链可能很长。
空闲盘区链:将磁盘上的所有空闲盘区(每个盘区可包含若干个盘块)拉成一条链。在每个盘区上除了含有用于指示下一个空闲盘区的指针外,还应标有指明本盘区大小(盘块数)的信息。这方法分配和回收过程较复杂,但空闲盘区链较短。
(3)位示图
位示图法是为管理磁盘空闲存储空间而提出的一种方法。该方法是在外存上建立一张位示图(Bitmap),记录文件存储器的使用情况。每一位仅对应文件存储器上的一个物理块,取值0和1分别表示空闲和占用。文件存储器上的物理块依次编号为:0、1、2、…。假如系统中字长为32位,有4096个物理块,那么在位示图中的第1个字对应文件存储器上的0、1、2…31号物理块;第2个字对应文件存储器上的32、33、34、…、63号物理块;第32字对应文件存储器上的4064、4065、…、4095号物理块。这样位示图的大小为32字。
位示图是利用二进制的一位来表示磁盘中一个盘块的使用情况,当其值为“0”时,表示对应的盘块空闲;为“1”时表示已分配。由所有盘块对应的位构成一个集合,称为位示图。位示图也可描述为一个二维数组
Map :Var map : array[ 1. . . m, 1. . . n] of bit ;
(4)成组链接法
成组链接法是Unix系统中常见的管理空闲盘区的方法,它把空闲块分为若干组,每100个空闲块为一组,每组的第一个空闲块记录了空闲块总数和下一组物理空闲块的物理盘块号。
3. 索引文件
索引文件是一种对文件存储不连续分配的方法。为每个文件建立一张索引表,索引表中的每一表项指出文件信息所在的逻辑块号和与之对应的物理块号。
索引文件既可以满足文件动态增长的要求,又可以方便而迅速地实现随机存取。对一些大的文件,当索引表的大小超过一个物理块时,会发生索引表的分配问题。一般采用多级(间接索引)技术,这时在由索引表指出的物理块中存放的不是文件存放处而是存放文件信息的物理块地址。这样,如果一个物理块能存储n个地址,则一级间接索引将使可寻址的文件长度变成你n^2块,对于更大的文件可以采用二级甚至三级间接索引。
索引文件的优点是既适用于顺序存取,又适用于随机存取。缺点是索引表增加了存储空间的开销。另外,在存取文件时需要访问两次磁盘,一次是访问索引表,另一次是根据索引表提供的物理块号访问文件信息。为了提高效率,一种改进的方法是,在对某个文件进行操作之前,预先把索引表调入内存。这样,文件的存取就能直接从在内存的索引表中确定相应的物理块号,从而只需要访问一次磁盘。