内容发布更新时间 : 2024/12/26 4:28:21星期一 下面是文章的全部内容请认真阅读。
11.①因为每个记录读出后,需等待上一个记录处理后,才能读下一个记录,所以顺序处理一个记录时,读一个记录后,下一个记录已经走过,因此只好在等磁盘旋转下一周时才能读出,进行处理,所以共花费了时间:20×10+4=204毫秒纣忧蔣氳頑莶驅藥悯骛。 ②优化方案:
扇区号 1 2 3 4 5 6 7 8 9 10 逻辑记录 A H E B I F C J G D 因为每个记录读出需20/10=2毫秒,处理需4毫秒,按上述分布,处理完一个记录正好磁头转到一个记录,所以处理时间需要:(2+4)×10=60毫秒。颖刍莖蛺饽亿顿裊赔泷。 12.系统中允许的文件最大长度=4X1+2X256X1+256X256X1=6+512+65536=66052KB濫驂膽閉驟羥闈詔寢賻。 13.这里仅给出利用“位示图”进行磁盘空间的分配和回收的方法。 ⑴位示图
对每个磁盘可以用一张位示图指示磁盘空间的使用情况。一个磁盘的分块确定后,根据总块数决定位示图由多少字组成,位示图中的每一位与一个磁盘块对应,某位为“1”状态表示相应块已被占用,为“0”状态的位所对应的块是空闲块。块号、位号、字号决从“0”开始编号。銚銻縵哜鳗鸿锓謎諏涼。 ⑵磁盘块的分配
当有文件要存放到磁盘上时,查位示图中为\的位,表示对应的磁盘块空闲可供使用。根据查到的位所在的字号和位号可计算出对应的块号,同时在该位填上占用标志“1”。挤貼綬电麥结鈺贖哓类。 块号=字号×字长+位号
于是,文件信息就可按确切的地址存放到找到的磁盘块上。 #define false 0 #define true 1
bit map[n][m]; /*位示图,共n个字,每个字有m位*/ allocate() {
int i,j;
for(i=0;i if(map[i][j]==0) { map[i][j]=1; 9 return(i*m+j);/*返回对应块号*/ } return(false); } ⑶磁盘块的回收 当删除文件归还存储空间时,可以根据归还块的块号推算出在位示图中的位置,或由物理地址计算出对应的块号后再确定在位示图中的位置,把这一位的“1”清成“0”,表示该块成为空闲块了。赔荊紳谘侖驟辽輩袜錈。 字号=[块号/位示图中字长] 位号=块号mod位示图中字长 10