(1) 建立文件。
在建立一个新文件时,系统首先要为新文件分配必要的外存空间,并在文件系统的目录中,为之创建一个目录项。
目录项中应记录新文件的文件名及其在外存的地址等属性。
|
(2) 删除文件。
当已再也不须要某文件时,可将它从文件系统中删除。在删除时,系统应先从目录中找到要删除文件的目录项,使之成为空项,而后回收该文件所占用的存储空间。
|
(3) 读文件。
在读一个文件时,须在相应系统调用中给出文件名和应读入的内存目标地址。此时,系统一样要查找目录,找到指定的目录项,从中获得被读文件在外存中的位置。在目录项中,还有一个指针用于对文件的读/写。
|
(4) 写文件。
在写一个文件时,须在相应系统调用中给出该文件名及该文件在内存中的(源)地址。
为此,也一样须先查找目录,找到指定文件的目录项,再利用目录中的写指针进行写操做。
|
(5) 截断文件。
若是一个文件的内容已经陈旧而须要所有更新时,一种方法是将此文件删除,再从新建立一个新文件。
但若是文件名及其属性均无改变时,则可采起另外一种所谓的截断文件的方法,此即将原有文件的长度设置为0,或者说是放弃原有的文件内容。
|
(6) 设置文件的读/写位置。
前述的文件读/写操做都只提供了对文件顺序存取的手段,即每次都是从文件的始端读或写。
设置文件读/写位置的操做,用于设置文件读/写指针的位置,以便每次读/写文件时,不是从其始端而是从所设置的位置开始操做。也正因如此,才能改顺序存取为随机存取。
|
当前OS所提供的大多数对文件的操做, 其过程大体都是这样两步:
第一步是经过检索文件目录来找到指定文件的属性及其在外存上的位置;
第二步是对文件实施相应的操做,如读文件或写文件等。
当用户要求对一个文件实施屡次读/写或其它操做时,每次都要从检索目录开始。
为了不屡次重复地检索目录,在大多数OS中都引入了“打开”(open)这一文件系统调用
当用户第一次请求对某文件进行操做时,先利用 open系统调用将该文件打开。
所谓“打开” ,是指系统将指名文件的属性(包括该文件在外存上的物理位置)从外存拷贝到内存打开文件表的一个表目中,并将该表目的编号(或称为索引)返回给用户。
之后,当用户再要求对该文件进行相应的操做时,即可利用系统所返回的索引号向系统提出操做请求。
系统这时即可直接利用该索引号到打开文件表中去查找,从而避免了对该文件的再次检索。
这样不只节省了大量的检索开销,也显著地提升了对文件的操做速度。
若是用户已再也不须要对该文件实施相应的操做时,可利用“关闭”(close)系统调用来关闭此文件,OS将会把该文件从打开文件表中的表目上删除掉。
|
也就是说程序语言中的IO
不只仅要解决温饱问题(经过操做系统读取文件)
还要解决奔小康的问题(可以对各类来源,各类数据文件 更便捷的进行操做)
|
逻辑功能使用上须要尽最大可能的照顾到开发者
|
实现上尽量的高效 |