操作系统对计算机的管理包括两个方面:硬件资源和软件资源。硬件资源的管理包括CPU 的管理、存储器的管理、设备管理等,主要解决硬件资源的有效和合理利用问题。

软件资源包括各种系统程序、各种应用程序、各种用户程序,也包括大量的文档材料、库函数等。每一种软件资源本身都是具有一定逻辑意义的相关信息的集合,在操作系统中它们以文件形式存储。

计算机系统的重要作用之一是能快速处理大量信息,因此数据的组织、存取和保护成为一个极重要的内容。文件系统是操作系统中组织、存取和保护数据的一个重要部分。

文件管理的功能包括:建立、修改、删除文件;按文件名访问文件;决定文件信息的存放位置、存放形式及存取权限;管理文件间的联系及提供对文件的共享、保护和保密等。允许多个用户协同工作又不引起混乱。

  • 文件的共享是指一个文件可以让多个用户共同使用,它可以减少用户的重复性劳动,节省文件的存储空间,减少输入/输出文件的次数等。
  • 文件的保护主要是为防止由于错误操作而对文件造成的破坏。
  • 文件的保密是为了防止未经授权的用户对文件进行访问。

文件的保护、保密实际上是用户对文件的存取权限控制问题。一般为文件的存取设置两级控制:第 1 级是访问者的识别,即规定哪些人可以访问;第 2 级是存取权限的识别,即有权参与访问者可对文件执行何种操作。

1 文件的逻辑结构

文件的结构是指文件的组织形式,从用户角度所看到的文件组织形式,称为文件的逻辑结构。

文件的逻辑组织是为了方便用户使用。一般文件的逻辑结构可以分为两种:无结构的字符流文件和有结构的记录文件。记录文件由记录组成,即文件内的信息划分成多个记录,以记录为单位组织和使用信息。

记录文件有顺序文件、索引顺序文件、索引文件和直接文件。 (1)顺序文件。大多数文件是顺序文件。顺序文件的记录定长,记录中的数据项的类型长度与次序固定,一般还有一个可以唯一标识记录的数据项,称为键(key),记录是按键值的约定次序组织的。顺序文件常用于批处理应用,对于查询或更新某个记录的处理性能不太好。 (2)索引顺序文件。索引顺序文件是基于键的约定次序组织的,而且维护键的索引和溢出区域。键的索引也可以是多级索引。索引顺序文件既适用于交互方式应用,也适用于批处理方式应用。 (3)索引文件。索引文件是基于记录的一个键数据项组织的。许多应用需按照别的数据项访问文件,为此,常采用索引文件方法,即对主文件中的记录按需要的数据项(一个或几个)建索引,索引文件本身是顺序文件组织。 (4)直接文件。直接文件又称哈希( Hash)文件。记录以它们在直接访问存储设备上的物理地址直接(随机地)访问。直接文件常用于需要高速访问文件而且每次仅访问一条记录的应用中。

2 文件的物理结构

文件的物理结构是指文件在存储设备上的存放方法。文件的物理结构侧重于提高存储器的利用效率和降低存取时间。文件的存储设备通常划分为大小相同的物理块,物理块是分配和传输信息的基本单位。文件的物理结构涉及文件存储设备的组块策略和文件分配策略,决定文件信息在存储设备上的存储位置。常用的文件分配策略有:

(1)顺序分配(连续分配)。这是最简单的分配方法。在文件建立时预先分配一组连续的物理块,然后,按照逻辑文件中的信息(或记录)顺序,依次把信息(或记录)按顺序存储到物理块中。这样,只需知道文件在文件存储设备上的起始位置和文件长度,就能进行存取,这种分配方法适合于顺序存取,在连续存取相邻信息时,存取速度快。其缺点是在文件 建立时必须指定文件的信息长度,以后不能动态增长,一般不宜用于需要经常修改的文件。

(2)链接分配(串联分配)。这是按单个物理块逐个进行的。每个物理块中(一般是最后一个单元)设有一个指针,指向其后续连接的下一个物理块的地址,这样,所有的物理块都被链接起来,形成一个链接队列。在建立链接文件时,不需要指定文件的长度,在文件的说明信息中,只需指出该文件的第一个物理块块号,而且链接文件的文件长度可以动态地增 长。只调整物理块间的指针就可以插入或删除一个信息块。 链接分配的优点是可以解决存储器的碎片问题,提高存储空间利用率。由于链接文件只能按照队列中的链接指针顺序查找,因此搜索效率低,一般只适用于顺序访问,不适用于随机存取。 (3)索引分配。这是另一种对文件存储不连续分配的方法。采用索引分配方法的系统,为每一个文件建立一张索引表,索引表中每一表项指出文件信息所在的逻辑块号和与之对应的物理块号。索引分配既可以满足文件动态增长的要求,又可以方便而迅速地实现随机存取。对一些大的文件,当索引表的大小超过一个物理块时,会发生索引表的分配问题。一般采用多级(间接索引)技术,这时在由索引表指出的物理块中存放的不是文件存放处而是存放文件信息的物理块地址。如果一个物理块能够存储 n 个地址,则一级间接索引,将可寻址的文件长度变为 【n 的二次方】块。对于更大的文件可以采用二级甚至三级间接索引(例如, UNIX 操作系统采用三级索引结构)。

索引文件的优点是既适用于顺序存取,又适用于随机存取。缺点是索引表增加了存储空间的开销。另外,在存取文件时需要访问两次磁盘,一次是访问索引表,另一次是根据索引表提供的物理块号访问文件信息。为了提高效率,一种改进的方法是,在对某个文件进行操作之前,预先把索引表调入内存。这样,文件的存取就能直接从内存的索引表中确定相应的物理块号,从而只需要访问一次磁盘。

3 文件存储设备管理(存储空间管理)

文件存储设备管理,就是操作系统要有效地进行存储空间的管理。由于文件存储设备是分成许多大小相同的物理块,并以块为单位交换信息,因此,文件存储设备的管理实质上是对空闲块的组织和管理问题。它包括空闲块的组织,空闲块的分配与空闲块的回收等问题。

有 3 种不同的空闲块管理方法,它们分别是索引法、链接法和位示图法。

(1)索引法。索引法把空闲块作为文件并采用索引技术。为了有效,索引对应于一个或由几个空闲块构成的空闲区。这样,磁盘上每一个空闲块区都对应于索引表中一个条目,这个方法能有效地支持每一种文件分配方法。

(2)链接法。链接法分为空闲盘块链与空闲盘区链两种:

【1】 空闲盘块链:使用链表把空闲块组织在一起,当申请者需要空闲块时,分配程序从链首开始摘取所需的空闲块。反之,管理程序把回收的空闲块逐个挂入队尾,这个方法适用于每一种文件分配方法。空闲块的链接方法可以按释放的先后顺序链接,也可以按空闲块区的大小顺序链接。后者有利于获得连续的空闲块的请求,但在分配请求和回收空闲块时系统开销会多一点。

【2】空闲盘区链:将磁盘上所有空闲盘区拉成一条链,在每个盘区上包含若干用于指示下一个空闲盘区的指针,指明盘区大小的信息。分配盘块时,通常采用首次适应算法 ( 显式链接法 )。 在回收时,要将回收区与空闲盘区相合并 。

(3)位示图法。该方法是在外存上建立一张位示图(Bitmap),记录文件存储器的使用情况。每一位仅对应文件存储器上的一个物理块,取值 0 和 1 分别表示空闲和占用。文件存储器上的物理块依次编号为: 0、 1、 2、…。假如系统中的一个字的字长为 32 位,也就是说,一个字可以表示 32 个物理块。假设有 4096 个物理块,那么需要 128 个字(4096/32=128)来表示这些物理块。

位示图是利用二进制的一位来表示磁盘中一个盘块的使用情况,如图 2 所示。当其值为“0”时,表示对应的盘块空闲;为“1”时表示已分配。由所有盘块对应的位构成一个集合,称为位示图。

图 2 位示图

示例如下: 某磁盘盘组共有 10 个盘面,每个盘面上有 100个磁道,每个磁道有 32 个扇区,假定物理块的大小为 2 个扇区,分配以物理块为单位。

  1. 若使用位图管理磁盘空间,则位图需要占用多少字节空间?
  2. 若采用空白文件管理磁盘空间,且空白文件目录的每个表项占用5个字节,则当空白文件数目大于多少时,空白文件目录占用的字节数大于位图占用的字节数?

分析过程:

  • 总扇区数= 10 * 100 * 32=32000 个;每个物理块 2 个扇区,则总物理块数 = 32000/2=16000 块。
  • 假设采用位图来管理磁盘空间。一个字节通常是 8 位,则所有这些物理块需要 2000 (16000/8)字节空间。
  • 假设采用空白文件来管理磁盘空间。一个表项占用 5 个字节,那么 2000/5=400,也就是说当空白文件数>400 时,文件目录所占用的字节数就会大于位图所占用的字节数。

(4)成组链接法 成组链接法是将空闲表和空闲链表法结合形成的一种空闲盘块管理方法,适用于大型文件系统。

4 树型目录结构

在计算机的文件系统中,一般采用树型目录结构。在树型目录结构中,树的根结点为根目录,数据文件作为树叶,其他所有目录均作为树的结点。

根目录隐含于一个硬盘的一个分区中,根目录在最顶层。它包含的子目录是一级子目录。每一个一级子目录又可以包含若干二级子目录,…,这样的组织结构就叫作目录树。

当前盘和当前目录是系统默认的操作对象。 如果用户没有指明操作对象,系统就将用户命令指向当前盘和当前目录。

路径是指从根目录或者当前目录开始到访问对象(目录或者文件),在目录树中路经的所有目录的序列。例如“c:emp”就是 Windows 系统中的一条路径。在树型目录结构中,从根目录到任何数据文件之间,只有一条唯一的通路,从树根开始,把全部目录文件名与数据文件名,依次用“ /”( UNIX/Linux 系统)或“ ”( Windows 系统)连接起来,构成该数据文件的路径名,且每个数据文件的路径名是唯一的。这样,便可以解决文件重名问题。

从树根开始的路径为绝对路径,如果文件系统有很多级时,使用不是很方便,所以引入相对路径,即从当前目录开始,再逐级通过中间的目录文件,最后到达所要访问的数据文件。

绝对路径给出文件或目录位置的完全描述,通常由层次结构的顶端开始(根目录),通常第一个字符是“/”(UNIX/Linux 系统)或者是盘符(Windows 系统)。相对路径通常由目录结构中的当前位置开始,一般都比绝对路径要短。

父目录是指当前路径的上一层目录。每个目录下都有代表当前目录的“.”文件和代表当前目录父目录的“..”文件,相对路径名一般就是从“..”开始的。

在 Windows 系统中,有两种格式的文件,分别是 FAT32 ( FAT16 ) 文件和 NTFS 文件。 NTFS 在使用中产生的磁盘碎片要比 FAT32 少,安全性也更高,而且支持单个文件的容量更大,超过了 4GB , 特别适合现在的大容量存储。 NTFS 可以支持的分区 ( 如果采用动态磁盘则称为卷 ) 大小可以达到 2TB ,而 Windows 2000 中的 FAT32 支持分区的大小最大为 32GB。

作者:deniro
链接:https://www.jianshu.com/p/e94fc7d228d9
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

操作系统实验文件管理_系统设计硬核知识(5)——操作系统的文件管理相关推荐

  1. 如何保证进程间同步工作_系统设计硬核知识(2)——操作系统的进程管理

    操作系统基本原理包含以下 5 大管理. 我们先来说说进程管理. 因为处理机是计算机系统的核心资源,所以整个操作系统的重心是处理机管理. 处理机管理中最基本的.最重要的概念是进程.进程是系统并发执行的体 ...

  2. 独占设备的分配和回收模拟_系统设计硬核知识(4)——操作系统的设备管理...

    在计算机系统中,除了处理器和内存之外,其他的大部分硬设备称为外部设备.它包括输入/输出设备,辅存设备及终端设备等.这些设备种类繁多,特性各异,操作方式的差异很大,从而使操作系统的设备管理变得十分繁杂. ...

  3. 某系统有6台输出设备 有多个进程均需要使用2台_系统设计硬核知识(4)——操作系统的设备管理...

    在计算机系统中,除了处理器和内存之外,其他的大部分硬设备称为外部设备.它包括输入/输出设备,辅存设备及终端设备等.这些设备种类繁多,特性各异,操作方式的差异很大,从而使操作系统的设备管理变得十分繁杂. ...

  4. 多余的读写端口什么时候会对程序造成影响_程序员需要了解的硬核知识之控制硬件...

    应用和硬件的关系 我们作为程序员一般很少直接操控硬件,我们一般通过 C.Java 等高级语言编写的程序起到间接控制硬件的作用.所以大家很少直接接触到硬件的指令,硬件的控制是由 Windows 操作系统 ...

  5. 3 万字 51 张图教你 CPU、内存、操作系统硬核知识!

    作者|cxuan 来源 |Java建设者(ID:javajianshe) 我们每个程序员或许都有一个梦,那就是成为大牛,我们或许都沉浸在各种框架中,以为框架就是一切,以为应用层才是最重要的,你错了.在 ...

  6. aomei动态磁盘管理器_程序员需要了解的硬核知识之磁盘

    点击蓝色"Java建设者"关注我哟 加个"星标",阅读我的文章,一起学习成长. 这是Java建设者的第 42篇原创文章 此篇文章是 <程序员需要了解的硬核 ...

  7. 程序员需要了解的硬核知识之操作系统和应用

    作者 | cxuan 责编 | maozz 利用计算机运行程序大部分都是为了提高处理效率.例如,Microsoft Word 这样的文字处理软件,是用来提高文本文件处理效率的程序,Microsoft ...

  8. 程序员需要了解的硬核知识之操作系统入门

    对于程序员来说,最莫大的荣耀莫过于自己的软件被大多数人使用了吧. 历史文章请戳 程序员需要了解的硬核知识之内存 程序员需要了解的硬核知识之CPU 程序员需要了解的硬核知识之二进制 程序员需要了解的硬核 ...

  9. nessus导出报告格式有哪些_高分高能 | 文献检索硬核知识报告

    助力宅家学业提升 文献检索硬核知识 2020年3月28日,高分子科学系本科生党支部开展"积极践行校风学风,助力宅家学业提升"为主题的线上组织生活会,本次会议由2019级本科生辅导员 ...

最新文章

  1. ie中placeholder字体颜色兼容问题
  2. Halcon资料:image,region,xld三者如何转化和保存
  3. 【CyberSecurityLearning 52】Web架构安全分析(web工作机制、HTTP协议)
  4. HDU - 5692 Snacks(dfs序+线段树)
  5. linux安装各种文件格式,Embeded linux中的各类文件系统
  6. pandas常用函数(更新中)
  7. favicon.ico是什么?
  8. 小项目也可以学习到很多东西
  9. 异构服务器的负载均衡及过载保护
  10. 利用imnoise2函数产生数据的直方图
  11. HRCAD2008 无法加载问题
  12. Magento 自定义EMS FEDEX DHL UPS扩展 第三章
  13. pycharm+opencv安装总结
  14. Linux-eth0 eth0:1 和eth0.1关系
  15. 微信公众号使用:在微信公众号文章中嵌入小程序的方法
  16. 麦肯锡逻辑树——快速分析和解决问题的有效方法
  17. 矩阵的求秩:rank( )
  18. 如何控制Echarts时间轴的刻度区间
  19. 车用计算机内部结构图,汽车电脑的基本结构和工作原理
  20. ThingsBoard 设备OTA

热门文章

  1. 利用微软平台生成报表,线性图,柱形图
  2. (九)模板方法模式详解(包含与类加载器不得不说的故事)
  3. HttpContext(三)-Request
  4. react Native 环境安装配置——图解版一目了然
  5. 微信小程序——云服务环境的配置
  6. 使用PM2搭建在线vue.js开发环境(以守护进程方式热启动)
  7. cordova 一个将web应用程序封装成app的框架
  8. Spring底层控制反转解耦合(IOC)
  9. [tensorflow] - csv文件读取
  10. C# 图片识别(支持21种语言)