ch6-6.4文件系统其他功能

ch6-6.4文件系统其他功能

ID:6164241

大小:363.00 KB

页数:37页

时间:2017-11-14

ch6-6.4文件系统其他功能_第1页
ch6-6.4文件系统其他功能_第2页
ch6-6.4文件系统其他功能_第3页
ch6-6.4文件系统其他功能_第4页
ch6-6.4文件系统其他功能_第5页
资源描述:

《ch6-6.4文件系统其他功能》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、6.4文件系统其他功能实现6.4.1文件系统调用的实现6.4.2文件共享6.4.3文件空间管理6.4.4主存映射文件6.4.5虚拟文件系统6.4.1文件操作的实现文件系统提供给用户程序的一组系统调用,包括:建立、打开、关闭、撤销、读、写和控制,通过这些系统调用用户能获得文件系统的各种服务。Linux文件系统磁盘结构1超级块:占用1#号块2索引节点区:2#~k+1#块3数据区:k+2#~n#为数据块两个重要数据结构:1用户打开文件表:2系统打开文件表:文件系统内部结构主存i_numberi_counti_numberi_

2、count…i_addr[40]…i_numberi_count…i_addr[40]f_flagf_count…f_inodefile的指针fp…用户打开文件表files_struct文件描述符fd用户空间内核空间系统打开文件表file_struct一个打开文件的file活动inode活动inode主存活动inode表磁盘磁盘文件卷0#1#2#……………引导块超级块磁盘inode区磁盘信息区:目录块和数据块磁盘文件目录项、inode和数据块的关系磁盘文件卷inode文件名inodeinode文件名inode磁盘文件0

3、#1#2#……数据块数据块目录块…数据块数据块目录块引导块磁盘inode区磁盘信息区:目录块和数据块inode……inode…超级块文件系统调用(1)(1)文件的创建系统调用C语言格式为:intfd,mode;char*filenamep;fd=create(filenamep,mode);文件系统调用(2)文件创建执行过程①为新文件分配索引节点和活动索引节点,并把索引节点编号与文件分量名组成新目录项,记到目录中。②在新文件所对应的活动索引节点中置初值,如置存取权限i_mode,连接计数i_nlink等。③分配用户打开

4、文件表项和系统打开文件表项,置表项初值。包括在f_flag中置“写”标志,读写位移f_offset清“0”。把各表项及文件对应的活动索引节点用指针连接起来,把文件描述字返回给调用者。文件系统调用(3)(2)文件的删除删除把指定文件从所在的目录文件中除去。如果没有连接用户(i_link为“1”),还要把文件占用的存储空间释放。删除系统调用形式为:unlink(filenamep)。在执行删除时,必须要求用户对该文件具有“写”操作权。文件系统调用(4)(3)文件的打开(1)调用方式为:intfd,mode;char*fil

5、enamep;fd=open(filenamep,mode);文件系统调用(5)文件打开执行过程(2)①检索目录,把它的外存索引节点复制到活动索引节点表。②根据参数mode核对权限,如果非法,则这次打开失败。③当“打开”合法时,为文件分配用户打开文件表项和系统打开文件表项,并为表项设置初值。通过指针建立这些表项与活动索引节点间的联系。把文件描述字,即用户打开文件表中相应文件表项的序号返回给调用者。文件系统调用(6)(4)文件的关闭(1)调用方式为:intfd;close(fd);文件系统调用(7)文件的关闭(2)①根据

6、fd找到用户打开文件表项,再找到系统打开文件表项。释放用户打开文件表项。②把对应系统打开文件表项中的f_count减“1”,如果非“0”,说明还有进程共享这一表项,不用释放直接返回;否则释放表项,并找到与之连接的活动索引节点。③把活动索引节点中的i_count减“1”,若不为“0”,表明还有用户进程正在使用该文件,不用释放而直接返回,否则在把该活动索引节点中的内容复制回文件卷上的相应索引节点中后,释放该活动索引节点。文件系统调用(8)(5)读文件(1)调用的形式为:intnr,fd,count;charbuf[]nr=

7、read(fd,buf,count);文件系统调用(9)读文件(2)系统根据f_flag中的信息,检查读操作合法性,再根据当前位移量f_offset值,要求读出的字节数,及活动索引节点中i_addr指出的文件物理块存放地址,把相应的物理块读到缓冲区中,然后再送到bufp指向的用户主存区中。文件系统调用(10)读文件(3)fdfp…f_flag(r/w)f_count(1)i_mode(x)f_flag(r/w)f_count(1)f_flag(r/w)f_count(1)f_offset(0)f_inode读操作时文件

8、数据结构的关系文件描述符用户打开文件表活动inode表物理块系统打开文件表i_nlink(1)i_addr(40)文件系统调用(11)(6)写文件调用的形式为:nw=write(fd,buf,count);buf是信息传送的源地址,即把buf所指向的用户主存区中的信息,写入到文件中。文件系统调用(12)(7)文件的随机存取(1)系

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。