Unix文件
第八课 Linux和UNIX的文件管理系统

8、文件访问互斥与同步
UNIX系统允许多个用户同时访问一个文件,实现更为灵活 的共享机制。 多个用户同时写同一个文件时,系统需要实现写操作的互 斥处理。UNIX通过采用加锁方式锁定文件中的记录来实现 互斥写机制。 访问进程可通过系统调用lockf对访问文件的某些信息进行 锁定。
一个文件系统称为一个文件卷或逻辑卷。
一个逻辑卷对应一个或多个物理卷中的若干物理分区(也称 物理块,通常为l~4KB,早期为512字节)。
有关文件系统定义:文件系统是包括在一个磁盘(包括光盘、 软盘、闪盘及其它存储设备)或分区的目录结构。一个可应用 的磁盘设备可以包含一个或多个文件系统 。
UNIX系统支持多种类型的文件系统。如:
UNIX文件系统采用索引文件组织结构管理文件。如前面所述, UNIX操作系统管理文件的典型特点是:
构造一个简单的目录文件(只包含文件名、对应的i-node 号等几项主要信息),增加一项数据结构即i-node。这样对文 件管理即为对i-node信息的管理。
如下为UNIX System V 的目录结构:
采用多重索引结构可增加文件所需空间的灵活性并且节省内存只需将文件的最初索引信息通常是直接或间接寻址信息针对含不同物理块大小的文件放置在活动i节点中系统内存区不必放置整个索引表到内存
第八课 UNIX文件管理系统
UNIX系统中文件是一个字节序列,即字节流文件。 UNIX系统以管理文件的形式实现硬件设备管理、管道机制和 链接管理。 文件系统通过管理文件的属性信息实现文件管理。属性包含 文件系统内部管理信息和用户信息两部分。 系统内部管理信息:反映文件的控制管理结构 用户信息:可显示在标准输出 UNIX文件系统以目录结构组织文件,只有一个根节点。 UNIX的目录文件是一种特殊的文件,由目录/文件名及其长度、 目录信息长度和索引节点号等主要信息组成。
unix中编辑文件

Ctrl+b: 向文件首翻一屏
nz: 将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。
插入文本类命令
==============
i: 在光标前
I: 在当前行首
a: 光标后
A: 在当前行尾
o: 在当前行之下新开一行
O: 在当前行之上新开一行
r: 替换当前字符
do: 删至行首
d$: 删至行尾
ndd: 删除当前行及其后n-1行
x或X: 删除一个字符,x删除光标后的,而X删除光标前的
Ctrl+u: 删除输入方式下所输入的文本
搜索及替换命令
==============
/pattern: 从光标开始处向文件尾搜索pattern
?pattern: 从光标开始处向文件首搜索pattern
n+: 光标下移n行
n-: 光标上移n行
n$: 光标移至第n行尾
H: 光标移至屏幕顶行
M: 光标移至屏幕中间行
L: 光标移至屏幕最后行
0: 光标移至当前行首
$: 光标移至当前行尾
屏幕翻滚类命令
==============
Ctrl+u: 向文件首翻半屏
Ctrl+d: 向文件尾翻半屏
n: 在同一方向重复上一次搜索命令
N: 在反方向上重复上一次搜索命令
:s/p1/p2/g: 将当前行中所有p1均用p2替代
:n1,n2s/p1/p2/g: 将第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g: 将文件中所有p1均用p2替换
选项设置
unix link文件语句

unix link文件语句Unix Link文件语句是Unix操作系统中用于创建硬链接或符号链接的命令。
下面是一些例子,展示了如何使用Unix Link文件语句来创建链接文件:1. 使用ln命令创建硬链接文件:```$ ln file1 file2```2. 使用ln命令创建符号链接文件:```$ ln -s file1 file2```3. 使用ln命令创建目录的硬链接:```$ ln -d dir1 dir2```4. 使用ln命令创建目录的符号链接:```$ ln -s dir1 dir2```5. 使用ln命令创建硬链接时,指定新文件名: ```$ ln file1 newfile```6. 使用ln命令创建符号链接时,指定新文件名: ```$ ln -s file1 newfile```7. 使用ln命令创建硬链接时,指定目录:```$ ln file1 dir/file2```8. 使用ln命令创建符号链接时,指定目录:```$ ln -s file1 dir/file2```9. 使用ln命令创建硬链接时,使用绝对路径: ```$ ln /path/to/file1 file2```10. 使用ln命令创建符号链接时,使用绝对路径:```$ ln -s /path/to/file1 file2```这些例子展示了如何使用Unix Link文件语句来创建硬链接和符号链接,并提供了不同的选项和参数来满足不同的需求。
无论是创建文件的链接还是目录的链接,都可以通过使用ln命令来实现。
重要的是确保使用正确的选项和参数来创建所需的链接类型,并指定正确的文件名和目录路径。
通过理解Unix Link文件语句的用法,可以更好地管理文件和目录之间的链接关系,提高操作系统的灵活性和效率。
unix系统中文件的多级索引结构 -回复

unix系统中文件的多级索引结构-回复Unix系统中的文件系统采用了多级索引结构来管理文件。
在多级索引结构中,文件被组织成块的集合,每个块都有唯一的地址。
通过使用多级索引结构,Unix系统能够高效地存储和检索文件,提高系统的性能和可靠性。
下面我们将一步一步地回答和讨论关于Unix系统中文件的多级索引结构的内容。
第一步:什么是多级索引结构?多级索引结构是一种用于管理大量数据的数据结构。
在Unix系统中,文件系统使用多级索引结构来管理文件的存储和检索。
这种索引结构由多个级别的索引组成,每个级别都用于指示下一个级别的索引。
通过这种方式,Unix系统能够快速访问和操作大型文件,提高文件系统的效率。
第二步:Unix系统中多级索引结构的组成Unix系统中的多级索引结构由三个主要组件组成:直接索引块、一次间接索引块和二次间接索引块。
直接索引块用于存储文件的数据块地址,一次间接索引块用于存储直接索引块的地址,而二次间接索引块用于存储一次间接索引块的地址。
通过这种层次结构,Unix系统能够管理大量数据块,并提供快速的文件访问。
第三步:直接索引块的作用和结构直接索引块是多级索引结构中的最底层,用于存储文件的数据块地址。
每个直接索引块都包含一定数量的文件数据块地址。
这些地址可以直接指向文件存储在磁盘上的数据块。
通过直接索引块,Unix系统可以快速访问和检索文件的数据。
第四步:一次间接索引块的作用和结构一次间接索引块用于存储直接索引块的地址。
每个一次间接索引块都包含一定数量的直接索引块地址。
通过一次间接索引块,Unix系统可以间接地访问和检索文件的数据。
当直接索引块的数量不足以存储文件的所有数据块地址时,一次间接索引块就发挥了作用。
第五步:二次间接索引块的作用和结构二次间接索引块用于存储一次间接索引块的地址。
每个二次间接索引块都包含一定数量的一次间接索引块地址。
通过二次间接索引块,Unix系统可以间接地访问和检索文件的数据。
UNIX文件类型

UNIX文件类型
在UNIX中文件共分为四种:
1 普通文件(ordinary file),分为:(1) 文本文件(2) 二进制文件
2 目录文件(directory)
3 特殊文件(special file),分为:(1) 块设备文件(2)字符设备文件
4 符号链接文件(symbolic links) 普通文件用于存放程序、数据等,我们绝大部分处理的文件就是这种文件。
UNIX把所有普通文件处理成字节流,没有规定文件的具体结构。
文件的具体类型由程序的开发者定义,总体上来说一般将普通文件分为文本文件和二进制文件。
文本文件是可以用vi等编辑器能够编辑并可通过显示命令显示的文件;不是文本文件的文件统称为二进制文件。
目录文件用来存放文件的目录。
特殊文件也称设备文件,代表着某种设备,一般放在/dev目录下,如/dev/cd0表示光驱。
特殊文件分为块设备文件和字符设备文件,块设备文件以区块为输入输出单元,如磁盘;字符设备文件是以字符作为输入输出单元,如串口。
符号连接文件包含一指针,这指针会指向文件的所在。
文件类型标识在用”ls -l”命令显示文件目录时的用下列符号表示不同的文件类型:
-普通文件d目录文件b块设备文件c字符设备文件l符号链接
文件举例:
$ ls –l-rwxr-xr 2 wjm newservice 321 Oct 17 09:33 file1drwxr-xr-x 2 wjm newservice 96 Oct 17 09:40 dir1其中,第一列的“-”表示file1是普通文件,“d”表示dir1为目录文件。
unix文件权限

unix⽂件权限⼀、UNIX下关于⽂件权限的表⽰⽅法和解析SUID 是 Set User ID, SGID 是 Set Group ID的意思。
UNIX下可以⽤ls -l 命令来看到⽂件的权限。
⽤ls命令所得到的表⽰法的格式是类似这样的:-rwxr-xr-x 。
下⾯解析⼀下格式所表⽰的意思。
这种表⽰⽅法⼀共有⼗位:9 8 7 6 5 4 3 2 1 0- r w x r - x r - x第9位表⽰⽂件类型,可以为p、d、l、s、c、b和-:p表⽰命名管道⽂件d表⽰⽬录⽂件l表⽰符号连接⽂件-表⽰普通⽂件s表⽰socket⽂件c表⽰字符设备⽂件b表⽰块设备⽂件第8-6位、5-3位、2-0位分别表⽰⽂件所有者的权限,同组⽤户的权限,其他⽤户的权限,其形式为rwx:r表⽰可读,可以读出⽂件的内容w表⽰可写,可以修改⽂件的内容x表⽰可执⾏,可运⾏这个程序没有权限的位置⽤-表⽰例⼦:ls -l myfile显⽰为:-rwxr-x--- 1 foo staff 7734 Apr 05 17:07 myfile表⽰⽂件myfile是普通⽂件,⽂件的所有者是foo⽤户,⽽foo⽤户属于staff组,⽂件只有1个硬连接,长度是7734个字节,最后修改时间4⽉5⽇17:07。
所有者foo对⽂件有读写执⾏权限,staff组的成员对⽂件有读和执⾏权限,其他的⽤户对这个⽂件没有权限。
如果⼀个⽂件被设置了SUID或SGID位,会分别表现在所有者或同组⽤户的权限的可执⾏位上。
例如:1、-rwsr-xr-x 表⽰SUID和所有者权限中可执⾏位被设置2、-rwSr--r-- 表⽰SUID被设置,但所有者权限中可执⾏位没有被设置3、-rwxr-sr-x 表⽰SGID和同组⽤户权限中可执⾏位被设置4、-rw-r-Sr-- 表⽰SGID被设置,但同组⽤户权限中可执⾏位没有被社其实在UNIX的实现中,⽂件权限⽤12个⼆进制位表⽰,如果该位置上的值是1,表⽰有相应的权限:11 10 9 8 7 6 5 4 3 2 1 0S G T r w x r w x r w x第11位为SUID位,第10位为SGID位,第9位为sticky位,第8-0位对应于上⾯的三组rwx位。
UNIX文档

UNIX操作系统目录第一章UNIX操作系统概述 (1)1.1 UNIX操作系统简介 (1)一、UNIX特点 (1)二、UNIX流派及标准 (2)1.2 UNIX系统组成 (3)1.3 与UNIX有关的几个名词 (4)第二章UNIX常用操作 (5)2.1 启动终端 (5)2.2 登录 (5)2.3 UNIX命令 (5)一、UNIX命令格式 (5)二、特殊按键 (7)三、UNIX常用简单命令 (7)四、UNIX用户间简单通讯命令 (8)2.4 注销(退出UNIX系统) (10)第三章UNIX文件系统 (10)3.1 UNIX文件系统分类 (10)3.2 UNIX文件类型 (10)3.3 UNIX树型目录结构 (11)3.4 UNIX文件名称 (12)3.5 UNIX文件存取权限 (12)3.6 UNIX重定向与管道 (15)3.7 UNIX文件系统常用命令 (15)第四章UNIX文件系统常用工具和实用程序 (17)4.1 vi编辑器的最基本用法 (17)4.2 利用find命令查找文件 (18)4.3 grep命令基本用法 (19)4.4 利用cmp命令比较文件 (20)4.5 文件的备份和恢复实用程序 (20)一、tar命令 (20)二、cpio命令 (21)4.6 文件压缩和解压程序 (22)一、compress 压缩命令 (22)二、pack 压缩文件 (22)三、gzip 压缩文件 (23)四、pkzip压缩文件 (23)第五章UNIX简单维护与管理 (23)5.1 选择init状态 (23)5.2 UNIX关机 (25)5.3 修改系统时间 (25)5.4 如何控制后台进程 (25)5.5 如何查看磁盘使用情况 (26)5.6 掉电故障及处理 (26)第六章网络通信 (26)6.1 TCP/IP协议 (26)6.2 查看网上用户信息 (27)6.3 使用mail 发送和接收电子邮件 (27)一、发送电子邮件 (27)二、阅读电子邮件 (27)6.4 在网络上登录和拷贝 (28)一、telnet (28)二、ftp (29)第一章UNIX启动和定时管理 (32)1.1 UNIX启动过程 (32)1.2 UNIX用户的登录过程 (32)1.3 daemon进程 (33)1.4 UNIX系统的定时器 (33)第二章UNIX用户管理 (34)2.1用户管理 (35)一、增加新用户 (35)二、删除用户 (35)一、增加新用户组 (35)二、删除用户组 (36)2.2 采用另外一种方法增加和删除用户 (36)一、增加用户 (36)二、删除用户 (37)第三章存储设备的使用 (38)3.1磁带的使用 (38)3.4 mount和umount命令 (41)一、mount命令 (41)二、umount命令 (42)3.5 CD-ROM的使用 (42)一、CD-ROM设备的创建 (42)二、CD-ROM的挂接 (43)第四章网络、主机和路由参数设置 (43)4.1 /etc/networks文件 (43)4.2 /etc/hosts文件 (43)4.3 /etc/gateways文件 (44)4.4 设置步骤 (45)4.5 测试 (45)第一部分上机环境 (45)1.1 UNIX主机环境 (45)1.2 工作站环境 (46)第二部分在工作站上登录UNIX (46)2.1 netterm的使用 (46)2.2 NetTerm的使用 (46)第三部分UNIX常用命令的使用 (47)3.1 常用命令之一 (47)3.2 常用命令之二(选做) (51)3.3 常用命令之三 (51)第四部分ftp的使用 (53)4.1 ftp的安装 (53)4.2 使用ftp拷贝文件 (53)附录A UNIX命令速查表 (54)第一篇基础篇第一章UNIX操作系统概述1.1 UNIX操作系统简介Unix操作系统自1969年问世以来,至今已有20年的历史,它的第一版于1969年在Bell实验室产生,1975年对外公布,1976年以后在Bell实验室外广泛使用。
UNIX环境高级编程文件和目录

UNIX环境⾼级编程⽂件和⽬录函数stat , fstat , fstatat , lstatstat函数返回与此⽂件有关的信息结构。
fstat函数使⽤已打开的⽂件描述符(⽽stat则使⽤⽂件名)fstatat函数为⼀个相对于当前打开⽬录的路径名返回⽂件信息。
lstat函数返回该符号链接的有关信息,⽽不是该符号链接引⽤的⽂件的信息。
使⽤stat最多的地⽅可能就是 ls -l 命令。
st_mode 与 S_IFMT 进⾏与运算在与 S_IFXXX常量相⽐较,来判断类型。
⽂件类型1.普通⽂件:⽆论是⽂本⽂件还是⼆进制⽂件对UNIX内核来说没有区别。
2.⽬录⽂件:这种⽂件包含了其他⽂件的名字以及指向与这些⽂件有关信息的指针。
3.块特殊⽂件:提供对设备带缓冲的访问。
4.字符特殊⽂件:提供对设备不带缓冲的访问5.FIFO :⽤于进程通信,称之为管道6.socket:⽤于⽹络通信7.符号链接:这种⽂件指向另⼀个⽂件⽂件类型信息包含在stat结构的 st_mode 成员中。
设置⽤户ID 和设置组ID实际⽤户ID :我们实际上是谁实际组ID :有效⽤户ID:⽤于⽂件访问权限检查有效组ID :保存的设置⽤户ID:由exec函数保存保存的设置组ID :实际⽤户ID和组ID :表⽰我们究竟是谁。
取⾃⼝令⽂件中的登陆项有效⽤户ID,有效组ID ,附属组ID :决定了我们的⽂件访问权限保存的设置⽤户ID和设置组ID :执⾏⼀个程序时,包含了有效⽤户ID和有效组ID的副本。
(8.11节详细说明)通常有效⽤户ID等于实际⽤户ID。
有效组ID等于实际组ID每个⽂件有⼀个所有者和组所有者。
分别由 stat结构中的 st_uid 和 st_gid指定。
执⾏程序时,进程的有效ID 通常就是实际ID。
但是,可以在⽂件模式字(st_mode)中设置⼀个特殊标识,含义是“当执⾏此⽂件时,将进程的有效⽤户ID设置为⽂件所有者的⽤户ID(st_uid),同样可以设置组ID。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
空闲buf队列: Buf1
Buf2
Bufn
NODEV设备buf队列:
b_back
Buf1
Buf2
Bufn
读操作
所谓读操作就是将所需的字符块从指定 的设备上读入缓冲区,并传送到用户指 定的内存区 若该字符块已被读到某个缓冲区中,则 不需对物理设备进行读操作,只是将这 个缓区的信息传到指定的内存区。
安装文件系统要用到Mount命令。 文件系统的拆卸用Umount命令。
3 UNIX文件系统的索引结构
在 UNIX 索引节点中,有一个 di_addr[40] 数组, 这个数组就是一个索引表。 在这个40个字节的数组中,只用了39个字节, 分为13组(项),每项3个字节,记录一个块号, 所以一个文件系统的数据区最多有2^24个块。 设计为40个字节是为了让索引节点的大小刚好 为 64 字节,那么,一个块就能放整数个索引节 点。
块较大时,磁盘与内存之间的传输效率 将会提高。因为每寻道一次可以读取几 个扇区,从而减少寻道时间。但块较大 时,可能造成浪费。有人做过统计,当 块大小为4K时,一个实用的系统中存储 空间浪费可达45%。后来Berkeley把文 件后面的那些零头数据集中起来用某些 磁盘块存放,以减少零头造成的浪费, 实践证明,这种方法很有效。
2.4 数据区
引导块、超级块、索引节点表都是文件 系统用于管理的数据,文件的实际数据 都存放在数据区。 还有另外的一些管理用数据也放在数据 区,如文件目录表,文件索引表中的一 次、二次、三次间接块等。
在一个文件系统中,有两个参数非常关键:索 引节点表的大小、块的大小。 索引节点表的大小决定了整个文件能创建的文 件数目,因为索引节点表的每一个表目唯一地 对应一个文件。索引节点表过小,文件系统只 能创建有限的文件,可能导致数据区大量磁盘 块的浪费;而索引节点表过大,可能造成索引 节点表本身的浪费。
1.3 设备buf队列
每类块设备都有一个设备buf队列,这也 是一个双向队列
b_back
Buf1
Buf2
b_forw
Bufn
b_back
Buf1
Buf2
Bufn
1.4 缓冲区的管理
系统设置了一个特殊的设备NODEV 在系统初启时,所有空闲缓冲区的 buf 既在空 闲buf队列,又在NODEV设备的buf队列中。
2.2 超级块
该部分对文件系统具有决定意义。该结构用C语言描述如下: struct filsys { ushort s_isize; 磁盘索引节点表所占磁盘块数 daddr_r s_fsize; 整个文件系统的磁盘块数 short s_nfree; 空闲块表中的空闲块数 daddr_t s_free[100]; 空闲块表 short s_ninode; 空闲索引节点表中的空闲索引节点数 ino_t s_inode[100]; 空闲索引节点表 char s_flock; 处理空闲块表时加锁标志 char s_ilock; 处理空闲索引节点表时加锁标志
char s_fmod; 超级块被修改标志 char s_ronly; time_t s_time; 超级块上次被修改时间 short s_dinfo[4]; daddr_t s_tfree; 空闲磁盘块总数 ino_t s_tinode; 空闲索引节点总数 char s_fname[6]; 文件系统名称 char s_fpack[6]; long s_fill[13]; long s_magic; long s_type; 文件系统类型 }; 超级块在文件系统安装后常驻内存
写操作
写是指把某个内存区的信息传到缓冲区, 然后把缓冲区的信息写到指定的物理设 备去。 但当一次写操作未写满缓冲区时(小于 512字节),就采用延迟写,即不急于写 到设备去,而是把这个缓冲区的标志位 置上延迟写的标志,表示具体写操作延 迟到以后的某个时该进行。
缓冲区的分配
当读写某设备块时,系统会分配一个缓冲区 系统从自由buf队列队首取出一个空闲的buf。 将buf的标志位b_flag置为“忙” 将buf的b_dev和b_blkno设为对应的设备号和块号
在实际系统中,为了方便对大容量的磁盘进行 管理,通常将其分了几个逻辑部分,每一部分 可能建一个文件系统 同时,软盘、光盘、磁带等都有它们自己的文 件系统。 用户在这众多的文件系统中找某一文件可能是 比较费时的 在UNIX中,可将一个文件系统安装到另一个文 件系统的某一子目录上,这时前一个文件系统 就成了后一个文件系统的子目录,用户看到的 只有一个文件系统。
1.6 小结
为了使刚释放的缓冲区尽可能长地保留原来的 使用信息,每次释放缓冲区时总是将其buf 插 入到自由buf队列的队尾。 分配缓冲区时,总是从自由buf队列队首抽出 一个空闲的buf。 当有再次使用某缓冲区的需要时,就立即将该 缓冲区对应的buf从自由buf队列中抽出,使完 后释放该缓冲区,又将其buf插入到自由buf队 尾。这就保证了所有自由缓冲区中,被重分配 的是最久未使用的,精确地实现了LRU 算法。
ADDR[1l] ,即第 12 个表目登记的是二次 间接索引表的块号,二次间接索引表存 放一次间接索引块的块号。 ADDR[12],即第13个表目登记的是三次 间接索引表的块号,三次间接索引表中 存放二次间接索引表的块号。
例1
有一文件大小为16K,设一个物理块的 大小为1K,为了计算方便,设索引块中 的一个表项占2个字节,试画出文件索 引结构图。
Buf主要包括以下信息
b_addr:缓冲区内存地址 b_dev : 缓冲区对应的设备信息:高字节表示 设备类号,低字节表示同类设备的编号 b_blkno:缓冲区对应的物理块号 b_forw, b_back和av_forw,av_back:链指针, 用于连接两个双向队列。 b_flags:标志信息,反映缓冲区的使用情况。
情况分析
用户读写一个磁盘块时,系统试图分配一 个缓冲区,这时可能出现以下五种情况。 (1) 该块已在缓冲区中,且缓冲区标志 为空闲。 原因:该块以前曾访问过。 处理办法:从自由队列上取下该缓冲区并 置“忙”标志。
(2) 该块已在缓冲区中,缓冲区标志为 忙。 原因:该块正在被其它进程使用。 处理办法:请求该块的进程进入睡眠,待 缓冲区用完后再被唤醒。
这样做的好处是:
(1) 在自由 buf 队列中的缓冲区,只要未作 重新分配使用,其内容不会改变。因此 若再次使用这个缓冲区的信息,只是简 单地从自由 buf 队列中抽出相应的 buf , 仍按原状使用缓冲区中的信息,从而减 少了对设备的物理 I/O 操作,提高了 I/O 操作的速度。
(2)若将一个缓冲区移作它用时,则只需从 自由buf队列和原设备buf队列中抽出, 插入到设备buf队列。这就实现了对缓冲 区的共享。
2.5目录结构
每一目录项占16字节,其C描述如下: struct direct { ino_t d_ino; 该目录项对应的索引节点号 char d_name[14]; 该目录项对应的文件的名称 };
在UNIX中,所有目录包括根目录都是象普通文件一样 在数据区存放。
2.6 文件系统的安装和拆卸
2 UNIX文件系统的总体结构
UNIX 系统把物理设备划分为长 512
字节的盘块。每一块给一编号,从0 到N-1,共N块。如下图
引导块
超级块
索引节点表
数据区 …..
其中引导块和超级块都为1个扇区。
2.1 引导块
位于文件系统的第一个扇区,包含 OS的引导程序,但并不是每一个文 件系统都需要引导块。
索引表
ADDR[0] ADDR[1]
文件第 1 块 . . . 文件第 10 块
文件第 11 块 . . . 文件第 16 块
。。。
。。。
ADDR[9] ADDR[10] ADDR[11] ADDR[12]
索引节点的C描述
struct dinode { ushort di_mode; short di_nlink; ushort di_uid; ushort di_gid; off_t di_size; char di_addr[40]; time_t di_atime; time_t di_mtime; time_t di_ctime; }; 文件类型及访问权限标志 文件链接数 文件拥有者用户标识 文件拥有者的组标识 文件大小 文件索引表 文件最近一次访问时间 文件最近一次访问时间 文件创建时间
av_back
空闲buf队列:
Buf1
NODEV设备buf队列:
Buf2
b_back
Bufn
Buf1
Buf2Bufn来自因为buf同时存在于某个设备buf队列中(若 不是在一台具体设备的buf队列中,则必然是 在特殊设备NODEV的buf队列中),这时要从 原设备的buf队列中取出这个buf,将其插入 申请该缓冲区的设备buf队列中。 所以,当一个缓冲区刚被分配用于读、写某 块设备时,它的b_flag标志位被置为"忙",它 一定位于对应的设备buf队列中,而不在自由 buf队列中。
UNIX文件子系统
UNIX缓冲池管理 UNIX文件系统的总体结构 UNIX文件系统的索引结构 UNIX文件的访问过程 管道文件的实现
1 UNIX缓冲池管理
1.1 缓冲控制块buf 在 UNIX 缓冲池中包含若干大小相等的缓冲区, 每个缓冲区的大小均等于磁盘块的大小。
系统为每个缓冲区设置一个缓冲控制块 buf , 用来登记相应缓冲区的使用和管理等方面的信 息。 系统通过对 buf 的管理来达到管理缓冲区的目 的。