说一说计算机中的非常重要的两个东西磁盘和文件。搞清楚这两个东西有利于我们理解高级语言中关于I/O流操作的设计。它就像一把大杀器一样,无往而不利。
想一想,磁盘作为一个电脑中的硬件设备,操作系统是如何管理磁盘设备的?文件其实一种软件概念,运行在操作系统上的一个软件或者子系统。不存在对应的物理结构,那么它的底层结构是什么,存放在哪里,如何检索,如何设计等等,这些问题可以说是触及到文件系统的本质了。其实,就操作系统而言,文件管理是其四大功能之一,不可谓不重要。
文件是什么文件则是指具有文件名的若干相关元素的集合。元素通常是记录,而记录又是一组有意义的数据项的集合。通过文件来组织和管理在计算机中所存储的大量程序和数据的,我们看到电脑中的各种文档、应用程序都是文件。文件是有很多种类的。根据文件的性质和用途的不同,有不同的归类:1. 按用途分类(1) 系统文件。这是指由系统软件构成的文件。大多数的系统文件只允许用户调用,但 不允许用户去读,更不允许修改;有的系统文件不直接对用户开放。(2) 用户文件。指由用户的源代码、目标文件、可执行文件或数据等所构成的文件。用 户将这些文件委托给系统保管。(3) 库文件。这是由标准子例程及常用的例程等所构成的文件。这类文件允许用户调用, 但不允许修改。2. 按文件中数据的形式分类(1) 源文件。这是指由源程序和数据构成的文件。通常由终端或输入设备输入的源程序 和数据所形成的文件都属于源文件。它通常是由 ASCII 码或汉字所组成的。(2) 目标文件。这是指把源程序经过相应语言的编译程序编译过,但尚未经过链接程序 链接的目标代码所构成的文件。它属于二进制文件。(3) 可执行文件。这是指把编译后所产生的目标代码再经过链接程序链接后所形成的文件。3. 按存取控制属性(权限)分类根据系统管理员或用户所规定的存取控制属性(Linux中有三种权限:读R、写W、执行E三种权限),可将文件分为三类:(1) 只执行文件。该类文件只允许被核准的用户调用执行,既不允许读,更不允许写。(2) 只读文件。该类文件只允许文件主及被核准的用户去读,但不允许写。(3) 读写文件。这是指允许文件主和被核准的用户去读或写的文件。说到这里,可以对比android 系统,我们通过androidStudio 打开手机的文件存储,发现有些文件夹无法操作,就是你没有权限的原因,这时候会有一个Root的说法,其实root 指的是切换登录手机的身份,然后以root 身份登录,这时候我们就可以操作任意文件了,因为root 是具有最高权限的一个用户,所以就能操作普通用户无法操作的文件。文件的逻辑上面说到了文件的分类,再看看文件的逻辑结构(逻辑结构是从用户观点出发所观察到的文件组织 形式,是用户可以直接处理的数据及其结构,它独立于文件的物理特性)。那逻辑结构是怎样实现的呢?前面说了文件是一组记录的集合,归结到底就是如何把这些记录放到存储介质上。通常来说,这些记录的存放方式可以按顺序进行存储,或者说对文件建立索引,把文件的主要信息提取出来,就像我们看到的文件简介,放入内存中,当我们要知道文件的全部内容时,在通过索引去存储介质上去找对应的信息在读到内存中,实际中更快的方式是把顺序和索引两种方式结合起来,建立索引顺序文件,把批量的文件用顺序方式进行排列存储,然后再给这批文件中第一个记录建立一个索引,这样就能提升文件的效率。或者还可以建立二次索引,进一步提升效率。文件目录在现代计算机系统中,都要存储大量的文件。为了能对这些文件实施有效的管 理,必须对它们加以妥善组织,这主要是通过文件目录实现的。文件目录也是一种数据结 构,用于标识系统中的文件及其物理地址,供检索时使用。文件目录有哪些作用?(1) 实现“按名存取”,即用户只须向系统提供所需访问文件的名字,便能快速准确地 找到指定文件在外存上的存储位置。(2) 提高对目录的检索速度。通过合理地组织目录结构的方法,可加快对目录的检索速 度,从而提高对文件的存取速度。(3) 文件共享。在多用户系统中,应允许多个用户共享一个文件。(4) 允许文件重名。系统应允许不同用户对不同文件采用相同的名字,以便于用户按照 自己的习惯给文件命名和使用文件。为了能对一个文件进行正确的存取,必须为文件设置用于描述和控制文件的数据结构, 称之为“文件控制块(FCB)”。文件管理程序可借助于文件控制块中的信息,对文件施以各种 操作。这个FCB其实和进程中PCB是一样的,负责记录文件的自身基本信息,比如文件名、逻辑结构、长度、用户权限表、文件使用信息(修改、创建日期等);系统就是通过FCB去控制文件,但是FCB和文件都是在磁盘上,如果想要查找文件需要先启动磁盘,把文件导入内存,再去查看FCB比对文件信息,这样在查询文件时,就会浪费cpu的执行,于是就想到给FCB建立索引,把FCB中一些关键信息抽离出来放入一张表(索引结点),然后把这些简化的信息放入内存中,这样在检索文件时,就不必频繁的启动硬盘了,直接先在索引结点中寻找,再去硬盘中查询相关的文件,这样就是提升了效率前面提到了文件的存储介质,文件存放在哪里?不假思索的回答是磁盘,磁盘是一个物理硬件设备,作为一个外存它是如何进行划分它的空间进行文件管理,采用什么样的方式提升存储效率。这些放在下一篇文章中去讲解?
一个有意思的、才艺多的android 开发人员,史建华 ——爱阅读,爱写作。
点个在看 你最好看