操作系统单独复习部分——UNIX成组连接

UNIX的成组连接


UNIX的外存

012-KK-N-1
引导块超级块,管理inode区和文件区的空闲块,inoode进行成组的方法管理,文件区用成组连接的方式inode区存储所有文件的inode文件存储区域保存文件快和存储它的空闲块

成组连接的管理方法

超级块中有三个关键结构管理成组连接

int s_nfree;//记录s_free的值,即保存物理块的个数
int s_free[100];//可以保存一百个物理块的块号
char s_flock;//一个锁,对s_free和s_nfree进行互斥操作的一个锁

一百个块的块号放到这些块的第一个里面

s_nfree=66
s_free[0]
s_free[1]
......
s_free[65]

一百个快中有一个连接块,存储下一组连接块的块号,采用栈管理,也就是先入s_free[0]里,存储了连接块,存储了下一组的块号。

每回收一个物理块,把回收的块号放到s_free中,然后s_nfree加一,占用物理块也可以类推

空闲块管理

申请时

s_nfree>1,取s_free[–s_nfree]

s_nfree=1把s_free[0]所指连接块读入内存,分配s_free[0],这个时候s_free[0]连接的那组变成了内存里的一组,s_free[0]指向的块则被取走变成了占用块,这说明s_free[0]所指向的块其实也算空闲块。

释放时

s_nfree<100,s_free[s_nfree]=释放块号,s_nfree++;

s_nfree=100,把s_nfree和s_free拷贝到释放块中,将该块号记录到s_free[0],写回外存,s_nfree=1

空闲inode管理

目录项,相当于FCB次部,形式为文件名.文件号,Inode相当于FCB主部,每个inode有一个i_number,多个文件名可以对应同一个(连接共享),这使得文件在不同的路径,却可以访问相同的文件。

s_inode最多可以记载100个空闲inode

申请时

s_ninode>0,取s_inode[–s_ninode];

s_ninode=0,由磁盘inode区顺取100个空闲I节点(i_nlink=0),将其编号填入s_inode表中,修改s_ninode,然后分配

释放时

s_ninode<100,s_inode[s_ninode++]=i_number(释放的)

s_ninode=100,丢弃

例题

某系统磁盘块大小为1KB,文件的物理组织为索引结构,每个索引项占2字节,磁盘空闲区管理采用成组链接的结构(假设每组最多5个磁盘块)。当前磁盘空闲区的成组链接结构(简称group_link)内容如下

在这里插入图片描述

在下述情况下,假设进程P对流式文件f执行如下操作:

fd=creat("f",fcb_args);
<处理数据并送到buf中>;
write(fd,3048,buf);

问题

(1)该文件系统一个文件的最大容量是多少个磁盘块?

根据最初给定的group_link内容,磁盘中有几个空闲磁盘块?

(2)给出文件f的索引块(标明索引块的块号)内容。

(3)写出P的用户打开文件表中,文件f的表项内容。

(4)写出P对文件f执行上述操作后的group_link的内容。

(1)答:1024/2=512个磁盘块

从图中可看s_nfree为4,所以s_free[4]其实已经被占用了,只有0、1、2、3这四个空闲块,所以4+5+2=11

还有11个空闲块,第三组因为第0处没有指向块,所以不能计算在内。

(2)这里取走s_free[3],s_nfree-1,所以索引块的块号是23、

3048/1024取天花是3所以需要使用三个块

有索引块如下

逻辑块号索引块#23
070
140
279
3^

(3)P的用户打开文件表中,文件f的表项如下:

文件描述符(隐含)打开方式读写指针系统文件打开表指针
fdwrite3048

复习

用户打开文件表的结构

文件描述符打开方式读写指针系统打开文件表入口

系统打开文件表

FCB主部文件号共享计数修改标志

(4)取走了四个快,系统调用s_free[0]所指的一组进入内存

在这里插入图片描述

  • 9
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
成组链接法Unix操作系统中一种常用的磁盘空间管理方法,它将磁盘的存储空间分割成一个个固定大小的块,称为逻辑块。操作系统以逻辑块为单位进行管理和分配,对于文件的存储也是以逻辑块为基本单位。成组链接法通过组织和管理磁盘空间,提高了文件系统的性能和效率。 在成组链接法中,磁盘空间被划分成多个等大小的区块,每个区块包含一个或多个物理块。这些区块按逻辑顺序排列,形成一个组。每个组都有一个数据块位图,用来记录该组中哪些逻辑块是已经分配给文件的。文件系统在创建文件时,会分配若干个逻辑块给文件,这些逻辑块可以不连续,但都来自同一组。所以文件在磁盘上的存储是通过指针链接的方式完成的,这就是成组链接法的原理。 成组链接法的优点是能够减少磁盘碎片,提高文件系统的读写速度。同时,通过组织和管理磁盘空间,它也能够更加高效地利用磁盘空间,最大限度地减少存储空间的浪费。然而,成组链接法也有一定的局限性,它在处理大文件时可能会导致磁盘的空间利用率下降,这时可能需要采取其他的空间管理方法来解决这个问题。 总之,成组链接法Unix操作系统中一种重要的磁盘空间管理方法,通过合理地组织和管理磁盘空间,提高文件系统的效率和性能,从而更好地满足用户的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值