(1)500/32=15.625,需要16字节
(2)对应的盘块号为:32 * i + j
(1) 9000 / 4k= 2.197265625 位置9000位于索引项2
(9000 + 1500) /4k = 2.5634765625 位置(9000 + 1500)位于索引项2 则需要读写磁盘块1个
(2)180000/4k=43.9453125
(180000+ 1500)/4k = 44.3115234375 位于索引项10 需要读写磁盘块3个
(3)4200000 / 4k = 1,025.390625
(4200000+ 1500) / 4k = 1,025.7568359375 位于索引项10 需要读写磁盘块2个
(1)寻找一个空闲磁盘块,挂到文件的磁盘块链尾,并修改文件的FCB。
(2)查找FAT,寻找第1000盘块的位置,删除该位置上的信息,并删除其他链接到这个位置的指针。
(3)
int alloc()
{
for(int i = 0; i < N; i++)
for(int j = 0; j < 16; j++)
{
if(!(bm[i] & 1 << j)
return i*16 + j+1;
}
return -1;
}
int release (int b)
{
int bx = b / 16;
int by = b % 16;
bm[bx] &= ~(1 << by);
return 0;
}
1(直接访问) 4(依次访问逻辑块) 2(先读取索引结点,再获得直接索引访问)
(1)/D/DC/DDC/Wang
(2)4个目录文件:/、/D、/D/DC、/D/DC/DDC
(3)7个
(4)采用分解式目录管理
连续:101、51、1、99、49、0
链接:1、50、100、1、50、100
单级:1、1、1、0、0、0
8kb / 4b = 2048
8 * 12 + 8 * 2048 + 8 * 2048 * 2048 + 8 * 2048 * 2048 * 2048 = 68,753,047,648 kb
在系统崩溃或者内存故障的情况下,文件分配的位图不会像存储在主存中那样丢失。
顺序文件访问:连续>链接>索引
顺序文件访问:连续>索引>链接
优点是,在访问存储在文件中间的块时,可以通过追踪存储在FAT中的指针来确定其位置,而不是以顺序方式访问文件的所有单个块以找到指向目标块的指针。大多数FAT都可以在内存中存储,因此可以通过内存访问来确定指针,而不必访问磁盘块。
留给磁盘指针的空间:128 - 68 = 60 B
直接索引个数:60 / 4 - 3 = 12个
直接索引:12 * 8KB = 96 KB
每个磁盘块可保持索引数:8KB / 4B = 2,048 个
一级索引:2048 * 8KB = 16,384KB
二级索引:2048 * 2048 * 8KB = 33,554,432KB
三级索引:2048 * 2048 * 2048 * 8KB = 68,719,476,736
a.连续分配:逻辑地址等于物理地址/盘块大小
链接分配:为整个磁盘或磁盘分区设置一个表,每个表项的序号与磁盘块号对应,其中保持文件下一个数据块(逻辑地址)所在的磁盘号。
索引分配:文件前十条逻辑地址依次保持在直接索引快的盘块号上,接下来的一级索引,二级索引,三级索引依次可保持1024,1024 * 1024,1024*1024*1024条逻辑地址。
b.1 4 2
有些答案不太确定,希望各位大佬能帮忙指正一下有错误的地方