操作系统单独复习部分——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
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值