24 文件与文件系统

在现代计算机系统中,要用到大量的程序和数据,因内存容量有限,且不能长期保存,故而平时总是把它们以文件的形式存放在外存上,需要时再随时将它们调入内存。

现代OS中,都通过文件系统来组织和管理在计算机中所存储的大量程序和数据的。文件时指具有文件名的若干相关元素的集合。元素通常是记录,而记录又是一组有意义的数据项集合。可以把数据组分为数据项记录文件三级。

1 文件、记录和数据项

1.1 数据项

数据项是文件系统中最低级的数据组织形式,可分为以下两种类型:

  • 基本数据项:用于描述一个对象的某种属性的一个值,如姓名、日期或证件号等,是数据中可命名的最小逻辑数据单位,即原子数据。
  • 组合数据项:由多个基本数据项组成。
1.2 记录

记录是一组相关的数据项的集合,用于描述一个对象在某方面的属性,如一个考生报名记录包括考生姓名、出生日期、报考学校代号、身份证号等一系列域。

1.3 文件

文件是指由创建者所定义的一组相关信息的集合,逻辑上可分为有结构文件无结构文件两种

在有结构文件中,文件由一组相似记录组成,无结构文件则被看成是一个字符流,文件在文件系统中是一个最大的数据单位,它描述了一个对象集。

文件应有自己的属性,属性可以包括:

    1. 文件类型
      可以从不同的角度来划分文件的类型:例如按存取控制属性等、按用途分类等。
    1. 文件长度
      指当前文件长度,单位可以是字节、字或块,也可能是最大允许长度。
    1. 文件的物理位置
      该属性通常是用于指示文件在哪一个设备的哪个位置的指针。
    1. 时间
      文件创建、上次修改和上次访问的相关信息,用于保护、 安全和跟踪文件的使用。
    1. 名称
      文件名称唯一,以容易读取的形式保存。
    1. 标识符
      标识文件系统内文件的唯一标签,通常为数字,它是对人不可读的一种内部名称

2 文件类型和文件基本操作

2.1 文件类型
2.1.1 按用途分类

可分为系统文件、用户文件、库文件。

  • 系统文件只允许用户调用,但不允许用户读取和修改。
  • 用户文件指的是用户的源代码、目标文件和可执行文件等构成的文件。
  • 库文件是由标准子例程及常用的例程等所构成的文件。
2.1.2 按文件中数据的形式分类

可分为源文件、目标文件、可执行文件。

  • 源文件由源程序和数据构成,通常由ASCLL码或汉字构成。
  • 目标文件为编译过后,尚未链接的二进制文件,后缀为“.obj/.o”。
  • 可执行文件时目标文件经链接的文件。
2.1.3 按存取控制属性分类

可分为普通文件、目录文件、特殊文件。

  • 普通文件是由ASCLL码或二进制码组成的字符文件,一般用户建立的源程序文件、数据文件、目标代码文件以及操作系统自身的文件、库文件、实用程序文件都是普通文件。
  • 目录文件由文件目录组成,是用来管理和实现文件系统功能的系统文件。
  • 特殊文件指的是各类I/O设备。

3 文件的基本橾作

文件属于抽象数据类型。为了恰当地定义文件,就需要考虑有关文件的操作。操作系统提供系统调用,它对文件进行创建、写、读、定位和截断。.

3.1 创建文件

创建文件有两个必要步骤,一是为新文件分配必要的外存空间;二是在目录中为新文件创建目录项,目录项记录文件名称、在文件系统中的位置及其他可能信息。

3.2 写文件

为了写文件,执行一个系统调用,指明文件名称和要写入文件的内容。对于给定文件名称,系统搜索目录以查找文件位置。系统必须为该文件维护一个写位置的指针。每当发生写操作,便更新写指针。

3.3 读文件

为了读文件,执行一个系统调用,指明文件名称和要读入文件块的内存位置。同样,需要搜索目录以找到相关目录项,系统维护一个读位置的指针。每当发生读操作时,更新读指针。

一个进程通常只对一个文件读或写,所以当前操作位置可作为每个进程当前文件位置指针。由于读和写操作都使用同一指针,节省了空间也降低了系统复杂度。

3.4 文件重定位(文件寻址)

按某条件搜索目录,将当前文件位置设为给定值,并且不会读、写文件。

3.5 删除文件

先从目录中找到要删除文件的目录项,使之成为空项,然后回收该文件所占用的存储空间。

3.6 截断文件

允许文件所有属性不变,并删除文件内容,即将其长度设为0,放弃原来的文件内容。

这6个基本操作可以组合执行其他文件操作。例如,一个文件的复制,可以创建新文件、 从旧文件读出并写入到新文件。

4 文件的打开与关闭

大部分操作系统要求在文件使用之前就被显式地打开。操作open会根据文件名搜索目录,并将目录条目复制到打开文件表。如果调用open的请求(创建、只读、读写、添加等)得到允许,进程就可以打开文件,而open通常返回一个指向打开文件表中的一个条目的指针。通过使用该指计(而非文件名)进行所有I/O操作,以简化步骤并节省资源。

操作系统维护一个包含所有打开文件信息的表(打开文件表,open-file table)。当用户需要一个文件操作时,可通过该表的一个索引指定文件,就省略了搜索环节。当文件不再使用时,进程可以关闭它,操作系统从打开文件表中删除这一条目。

一个进程打开一个文件,系统打开文件表就会为打开的文件增加相应的条目。当另一个进程执行open时,只不过是在其进程打开表中增加一个条目,并指向整个系统表的相应条目。

通常,系统打开文件表的每个文件时,还用一个文件打开计数器(Open Count),以记录多少进程打开了该文件。每个关闭操作close则使count递减。当打开计数器为0时,表示该文件不再被使用,系统将回收分配给该文件的内存空间等资源,若文件被修改过,则将文件写回外存,并将系统打开文件表中相应条目删除,最后释放文件的文件控制块(File Control Block, FCB)

每个打开文件都有如下关联信息:

  • 文件指针
    跟踪上次读写位置作为当前文件位置指针,这种指针对打开文件的某个进程来说是唯一的,因此必须与磁盘文件属性分开保存。

  • 文件打开计数
    文件关闭时,操作系统必须重用其打开文件表条目。因为多个进程可能打开同一个文件,所以系统在删除打开文件条目之前,必须等待最后一个进程关闭文件。

  • 文件磁盘位置
    绝大多数文件操作都要求系统修改文件数据。该信息保存在内存中以免为每个操作都从磁盘中读取。

  • 访问权限
    每个进程打开文件都需要有一个访问模式(创建、只读、读写、添加等)。该信息保存在进程的打开文件表中以便操作系统能允许或拒绝之后的I/O请求。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,524评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,869评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,813评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,210评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,085评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,117评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,533评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,219评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,487评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,582评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,362评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,218评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,589评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,899评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,176评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,503评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,707评论 2 335

推荐阅读更多精彩内容