欢迎来到天天文库
浏览记录
ID:57176847
大小:437.50 KB
页数:37页
时间:2020-08-02
《计算机操作系统第八章课件剖析.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第八章磁盘存储器的管理8.1外存的组织方式连续链接索引8.1.1连续组织方式连续分配的主要优缺点连续分配的主要优点如下:(1)顺序访问容易。(2)顺序访问速度快。连续分配的主要缺点如下:(1)要求有连续的存储空间。(2)必须事先知道文件的长度。(3)插入删除不便(4)动态增长困难8.1.2链接组织方式1.隐式链接2.显式链接8.1.3FAT技术8.1.4NTFS的文件组织方式8.1.5索引组织方式1.单级索引组织方式链接分配方式虽然解决了连续分配方式所存在的问题,但又出现了另外两个问题,即:(1)不能支持高效的直接存取。要对一个较大的文件进行直接存取,须首先在FAT中顺序地查找许多
2、盘块号。(2)FAT需占用较大的内存空间。索引块:分配给文件的所有盘块号都记录在索引块中支持直接访问,不产生外部碎片2.多级索引组织方式大文件可采用多级索引分配方式两级索引分配盘块1KB,盘块号4字节,一索引块存放256盘块,二级索引包含的盘块总数是256256=64K个,文件容量=64k1k=64M3.增量式索引组织方式UNIXSystemV索引结点,共iaddr(0)-iaddr(12)13个地址项。假如每个盘块的大小为4KB,盘块号占4字节。(1)直接地址。为了提高对文件的检索速度,在索引结点中可设置10个直接地址项,即用iaddr(0)~iaddr(9)来存放直接地址。换言
3、之,在这里的每项中所存放的是该文件数据的盘块的盘块号。假如每个盘块的大小为4KB,当文件不大于40KB时,便可直接从索引结点中读出该文件的全部盘块号。(2)一次间接地址。对于大、中型文件,只采用直接地址是不现实的。为此,可再利用索引结点中的地址项iaddr(10)来提供一次间接地址。这种方式的实质就是一级索引分配方式。图中的一次间址块也就是索引块,系统将分配给文件的多个盘块号记入其中。在一次间址块中可存放1K个盘块号,因而允许文件长达4MB。(3)多次间接地址。当文件长度大于4MB+40KB时(一次间址与10个直接地址项),系统还须采用二次间址分配方式。这时,用地址项iaddr(1
4、1)提供二次间接地址。该方式的实质是两级索引分配方式。系统此时是在二次间址块中记入所有一次间址块的盘号。在采用二次间址方式时,文件最大长度可达4GB。同理,地址项iaddr(12)作为三次间接地址,其所允许的文件最大长度可达4TB。8.2文件存储空间的管理以盘块为单位为新文件分配存储空间8.2.1空闲表法和空闲链表法1.空闲表法连续分配1)空闲表序号第一空闲盘块号空闲盘块数12429331554——2)存储空间的分配与回收空闲盘区的分配与内存的动态分配类似,同样是采用首次适应算法、循环首次适应算法等。例如,在系统为某新创建的文件分配空闲盘块时,先顺序地检索空闲表的各表项,直至找到第
5、一个其大小能满足要求的空闲区,再将该盘区分配给用户(进程),同时修改空闲表。系统在对用户所释放的存储空间进行回收时,也采取类似于内存回收的方法,即要考虑回收区是否与空闲表中插入点的前区和后区相邻接,对相邻接者应予以合并。2.空闲链表法(1)空闲盘块链。(2)空闲盘区链。8.2.2位示图法1.位示图利用二进制的一位表示磁盘盘块使用情况。0闲1分2.盘块的分配(1)顺序扫描位示图,从中找出一个或一组其值为“0”的二进制位(“0”表示空闲时)。(2)将所找到的一个或一组二进制位,转换成与之相应的盘块号。假定找到的其值为“0”的二进制位,位于位示图的第i行、第j列,则其相应的盘块号应按下式
6、计算:b=n(i-1)+j式中,n代表每行的位数。(3)修改位示图,令map[i,j]=1。3.盘块的回收(1)将回收盘块的盘块号转换成位示图中的行号和列号。转换公式为:i=(b-1)DIVn+1j=(b-1)MODn+1(2)修改位示图。令map[i,j]=0。优点:很容易找到一个或一组相邻接的空闲盘块。可放在内存中。8.2.3成组链接法1.空闲盘块的组织2.空闲盘块的分配与回收当系统要为用户分配文件所需的盘块时,须调用盘块分配过程来完成。该过程首先检查空闲盘块号栈是否上锁,如未上锁,便从栈顶取出一空闲盘块号,将与之对应的盘块分配给用户,然后将栈顶指针下移一格。若该盘块号已是栈底
7、,即S.free(0),这是当前栈中最后一个可分配的盘块号。由于在该盘块号所对应的盘块中记有下一组可用的盘块号,因此,须调用磁盘读过程,将栈底盘块号所对应盘块的内容读入栈中,作为新的盘块号栈的内容,并把原栈底对应的盘块分配出去(其中的有用数据已读入栈中)。然后,再分配一相应的缓冲区(作为该盘块的缓冲区)。最后,把栈中的空闲盘块数减1并返回。在系统回收空闲盘块时,须调用盘块回收过程进行回收。它是将回收盘块的盘块号记入空闲盘块号栈的顶部,并执行空闲盘块数加1操作。当栈中空
此文档下载收益归作者所有