欢迎来到天天文库
浏览记录
ID:5285036
大小:259.72 KB
页数:8页
时间:2017-12-07
《第18章文件存取和控制》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、下载第四部分文件和目录、文件系统、管道第四部分讨论文件和文件系统。文件系统由一组文件、控制表和目录组成,它们都存放在同一存储设备,例如磁盘包上。本部分包含与文件系统相关的下列内容:¥创建的存取文件。¥径由目录定位文件。¥组织和维护文件系统。本部分也包括与“管道”(“pipe”)特殊性有关的代码。第18章文件存取和控制每一种操作系统的大部分代码似乎都与数据管理和文件管理有关,UNIX也不例外。18.1源代码第四部分源代码第四部分包含13个文件。其中前4个包含其他各例程需要的公共说明:¥“file.h”说明“file”结构及
2、数组。¥“filsys.h”说明“安装”(“mounted”)文件系统的“超级块”(“superblock”)结构。¥“ino.h”说明记录在“安装”设备上的“inodes”结构。¥“inode.h”说明“inode”结构及数组。下面2个文件,“sys2.c”和“sys3.c”包含与文件存取及控制有关的系统调用的代码(“sys1.c”和“sys4.c”包含在源代码的第二部分)。下面5个文件,“rdwri.c”、“subr.c”、“fio.c”、“alloc.c”和“iget.c”提供了与文件管理有关的各主要例程,它们也提
3、供面向i/o的系统调用和各基本i/o例程之间的一条纽带。文件“nami.c”中代码的主要功能是:按给出的文件路径名在目录结构中搜索,找到相应的“inode”。最后,“pipe.c”是管道文件的“设备驱动程序”。18.2文件特征在概念方面而言,一个UNIX文件是一个具有名字的字符串,它存放在一个外设上(或内存中),并能通过适合于常规外部设备的机构对其进行存取。我们将会提及,UNIX文件并不包含记录结构。但是,在UNIX文件中可以插入“新行”符,这样就可将整个文件分成多个子字符串,这与记录有些类似。316下篇莱昂氏UNIX源
4、代码分析下载设计UNIX文件系统的一个基本思想是使文件独立于设备,使文件名惟一地决定该文件的所有相关属性。18.3系统调用UNIX提供下列对文件进行处理的系统调用:#名字行#名字行18.4控制表数组“file”和“inode”是文件存取机构中的关键组成部分。18.4.1file(5507)数组“file”定义为也被命名为“file”的结构类型。若“file”数组中某个元素的“f_count”项值为0,则可认为该元素是未分配使用的。每一条“open”或“creat”系统调用都会导致在“file”数组中分配一元素。该元素的地
5、址存放在调用进程“u.u_ofile”数组的一项中。而“u.u_ofile”数组中该项的下标号则传送给用户进程。一个过程通过“newproc”创建后代进程,这些后代进程继承它们父进程“u.u_ofile”数组的内容。“file”的每一个元素都包含一计数器“f_count”,它表示引用此“file”元素的当前进程数。“f_count”由“newproc”(1878)、“dup”(6079)和“falloc”(6857)增1;由“closef”(6657)以及“open1”(5836)(若该文件不能被打开)减1。“file”
6、元素中的“f_flag”表示该文件为读打开或为写打开,以及它是否是一“管道”文件。(在第21章中将详细讨论“管道”文件。)“file”结构也包含一名为“f_inode”的指针(5511),它指向“inode”表中的一项,以及一个32位整型项“f_offset”(5512),它是一个逻辑指针,指定文件中一个字符的位置。18.4.2inode(5659)“inode”定义为也被命名为“inode”(indexnode,索引节点)的结构数组。若“inode”数组中一个元素其“i_count”项值为0,则可认为该元素是未分配使用
7、的。在每个时间点上,对于每个可被正常i/o操作引用的文件、每个正被执行或已被执行并且“粘住”位已设置的文件、或者是某个进程的工作目录,“inode”数组中都分别包含1项。若干个“file”表项可以指向同一“inode”项。inode项说明相应文件的一般特性。第18章文件存取和控制317下载18.5要求专用的资源每个文件都要专用某些系统资源。当一个文件存在但并不以任何方式正被引用时,它要求使用下列资源:1)一个目录项(在一个目录文件中的16个字符)。2)一个磁盘“inode”项(存放在磁盘上一个表中的32个字符)。3)磁盘
8、上的1块或多块,也可以是0块(每块512个字符)。另外,若文件正因某种目的而被引用,则它还要求:4)一个内存“inode”项(inode数组中的32个字符)。最后,若用户程序已为读或写打开了该文件,则还要使用另一些资源:5)一个“file”数组项(8个字符)。6)在用户程序“u.u_ofile”数组中的1项(每个文件
此文档下载收益归作者所有