欢迎来到天天文库
浏览记录
ID:6119558
大小:693.00 KB
页数:55页
时间:2017-11-14
《操作系统第10章 文件系统接口》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、操作系统概念第十章文件系统接口本章主要内容文件概念访问方法目录结构文件系统安装文件共享保护210.1文件概念文件:抽象的,逻辑概念存储上外存上,逻辑相关的信息集合的命名;逻辑外存的最小分配单位。连续的逻辑地址空间通常文件表示程序和数据数据文件数字的字符的二进制的310.1文件概念(cont.)通常文件表示程序和数据(cont.)程序文件源程序由子程序和函数组成,即由声明和执行语句组成的。目标程序一系列字节序列,按目标系统链接器所能理解的方式组成。可执行程序一系列代码段,以供装入程序调入内存执行。4文件属性名称:有些OS区分大小写(如Linux
2、,Unix),有些不区分(如DOS,Windows);类型:由OS和程序定义;位置:指向设备和设备上文件位置的指针;大小:目前的大小,以及可允许的最大值;保护:决定读、写、执行等的访问控制信息;时间、日期和用户标识:文件创建、上次修改和上次访问都可能有该信息。用于保护、安全和使用跟踪;文件的信息被保存在目录结构中,而目录结构也保存在外存上。5文件操作一种抽象的数据类型;最小操作集:创建,读,写,定位,删除和截短。创建文件在文件系统中为文件找到空间;在目录中为新文件创建一个条目。写文件文件名;待写入的内容;写位置指针。6文件操作(cont.)读
3、文件文件名;待读入文件块的内存位置;读位置指针(当前位置指针)。在文件内重定位搜索目录中相应条目;设置当前文件位置指针为给定值。截短文件(truncate)搜索目录;设置文件长度为0,保留其属性;7文件操作(cont.)截短文件(truncate)释放文件所占磁盘空间。删除文件在目录中搜索给定名称的文件;释放所有的文件空间;删除相应目录条目。其它操作添加,重命名,复制,设置属性,获取属性8文件操作(cont.)避免频繁搜索的策略Open(Fi):在磁盘上的目录结构中查找Fi,并将其内容复制到内存。访问模式:创建,只读,读写,添加等;打开文件表
4、(Create和Delete除外)打开文件,并返回指向一个条目的指针。进程打开文件表:文件指针,存取权限;系统打开文件表:磁盘位置,访问日期,文件大小等。Close(Fi):将内存中的Fi的内容复制到位于磁盘上的目录结构中。9打开文件管理打开文件的信息:文件指针指向最近读/写文件的位置,对每个进程唯一文件打开计数器记录打开文件的次数,为关闭文件用。文件磁盘位置数据访问信息的缓存。访问权限单个进程访问文件的模式,存储在进程打开文件表中。10打开文件锁OS和文件系统提供调解对文件的访问锁类型共享锁和排他锁实现机制强制OS保证加锁的完整性,如,wi
5、ndows;建议软件开发人员(进程)决定,如UNIX。11Java中的文件加锁加锁使用getChannel获得文件的FileChannel;使用FileChannel的lock()方法获取锁,其API如下:FileLocklock(longbegin,longend,booleanshared)Shared=true,共享锁Shared=false,排他锁释放锁使用FileLock的Release()方法释放锁。12File加锁例子–JavaAPIFileLocklock(longbegin,longend,booleanshared)imp
6、ortjava.io.*;importjava.nio.channels.*;publicclassLockingExample{publicstaticfinalbooleanEXCLUSIVE=false;publicstaticfinalbooleanSHARED=true;publicstaticvoidmain(Stringarsg[])throwsIOException{FileLocksharedLock=null;FileLockexclusiveLock=null;try{RandomAccessFileraf=newRan
7、domAccessFile("file.txt","rw");13File加锁例子–JavaAPI//getthechannelforthefileFileChannelch=raf.getChannel();//thislocksthefirsthalfofthefile-exclusiveexclusiveLock=ch.lock(0,raf.length()/2,EXCLUSIVE);/**Nowmodifythedata...*///releasethelockexclusiveLock.release();//thislocksth
8、esecondhalfofthefile-sharedsharedLock=ch.lock(raf.length()/2+1,raf.length(),SHARED
此文档下载收益归作者所有