查看“Linux根文件系统制作”的源代码
←
Linux根文件系统制作
跳转至:
导航
、
搜索
因为以下原因,你没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
==实验原理== 文件是计算机系统的软件资源,操作系统本身和大量的用户程序、数据都是以文件形式组织和存放的,对这些资源的有效管理和充分利用是操作系统的重要任务之一。本章介绍文件和文件系统的概念,并对操作系统的文件管理功能给予简要说明。 ===磁盘的物理组织=== 文件系统主要完成对磁盘上的数据和程序进行管理,所以首先需要了解磁盘(硬盘)的结构。<br> 磁盘又叫硬盘,由一组盘片组成。每个盘片的上下两面都涂有磁粉,磁化后可以存储信息数据。每个盘片的上下两面都安装有磁头。磁头被安装在梳状的可以做直线运动的小车上以便寻道。每个盘面被格式化成有若干条同心圆的磁道,并规定最外面的磁道是0磁道,次外层是1磁道。每个磁道又被分成若干个扇区,并顺序排为1号扇区、2号扇区,等等。通常,一个扇区可以储存512字节的二进制信息位。这也是CPU进行磁盘I/O操作时能够读出和写入的最小单位。每个盘面上的同号磁道组成一个柱面,也就是说每个盘面的0号磁道组成0号柱面,所有的1号磁道组成1号柱面,等等。硬盘的结构如图所示。 [[Image:54-1-1-(1).png]]<br> 在Linux操作系统中,内核采用的方法是把物理磁盘抽象为逻辑磁盘来管理文件系统。所谓逻辑磁盘是把物理磁盘按照磁头号、磁道号、扇区号以及盘面号划分成磁盘块的线性数组,也叫线性序列。例如:把1号盘面0号磁道的0号扇区定义为0号磁盘块;把1号盘面0号磁道的1号扇区定义为1号磁盘块等等;当然一个磁盘块可以包含多个扇区,一般扇区数是2的整次幂。显然,当把实际的磁盘看成是磁盘块的线性数组时,就把物理磁盘存储数据的实际地址(即磁道号、扇区号以及盘面号)隐藏起来。因此呈现在系统高层面前的已经不是物理磁盘,而是一个经过加工以后的逻辑磁盘。图8.2给出了逻辑磁盘的结构示意图,它比物理硬盘的结构要简单的多。当系统执行磁盘I/O操作时,系统给出试图访问的逻辑磁盘块号。由设备驱动程序根据该块号计算出物理磁盘的磁道号、磁头号以及扇区号,然后启动硬盘把磁头向前或向后移动到相应的柱面,这就是所谓的寻道。寻道是磁盘I/O操作中最为耗时的一个操作。一旦磁头找到磁道,并且相应的扇区转到磁头下面,数据传输就开始。 ===文件和目录=== 文件是一个具有符号的一组相关联元素的有序序列。文件可以包含范围非常广泛的内容。系统和用户都可以将具有一定独立功能的程序模块、一组数据或一组文字命名为一个文件。在电脑里看见的东西都叫文件。文件是以单个名称在计算机上存储的信息集合。文件可以是文本文档、图片、程序等等。文件通常具有三个字母的文件扩展名,用于指示文件类型。<br> 文件有很多种,运行的方式也各有不同。一般来说我们可以通过文件名来识别这个文件是哪种类型,特定的文件都会有特定的图标,也只有安装了相应的软件,才能正确显示这个文件的图标。<br> ===文件的分类=== 在计算机系统中存放着大量的文件,它们有着不同的内容、用途和形式。 为了便于对文件进行在理合加工,通常把众多的文件从不同的角度进行分类。下面介绍几种经常使用的文件分类方法。 按文件的创建角度,文件分为: :*系统文件:即由操作系统创建的文件。这些文件包含着操作系统执行的程序和处理的数据。系统文件仅供操作系统使用,不对用户开放。 :*用户文件:即由用户创建的文件。这些文件包含的是用户的信息,如用户的程序、数据和其他各种形式的信息。 :*库文件:即由系统创建、供系统和用户使用的文件。它们是一些由标准函数或子程序及常用的应用程序组成的文件。库文件允许用户调用,但是不允许用户修改。在某些系统中,允许用户通过系统向库文件中添加信息。 按文件的读取权限,文件可以分为: :*只读文件:只允许对文件进行读操作,而不允许写操作的文件。 :*读写文件:指既可以进行读操作,又可以写操作的文件。 :*可执行文件:指只可以调入到内存中执行,而不能对它们进行读写操作的文件。 :*不保护文件:这种文件不作任何保护,所有用户都可以使用。 按文件在系统中的信息流向,文件分为: :*输入文件:这种文件只能从输入设备中读入到内存,如读卡器上的文件。 :*输出文件:这种文件只能从系统写入到输出设备中,如打印机上的文件。 :*输入/输出文件:这种文件既可以从输入设备中读取,又可以向输出设备写入,如磁盘上的文件。 按文件信息的逻辑结构,文件分为: :*流文件:以字符为基本单位,按照一定顺序组成的文件。文件内的信息就是一连串的字符,不再划分结构。它使用结束符来标志文件的结束。 :*记录文件:把文件内的信息划分成多个记录,记录是文件组织和操作的基本单位。记录文件可以分为下面两种: ::*文本文件:即由字符代码组成的文件。文本文件可以直接显示在屏幕上,或者在打印机上打印,也可以使用编辑器进行编辑。 ::*二进制文件:即由二进制数据组成的文件,如可执行程序、图像文件、声音文件等。二进制文件不能直接显示或打印。 ===目录=== 目录是一类特殊的文件,利用它可以构成文件系统的分层树型结构。如同普通文件那样,目录文件也包含数据;但目录文件与普通文件的差别是,核心对这些数据加以结构化,它是由成对的“i节点号/文件名”构成的列表。 :*i节点号是检索I节点表的下标,i节点中存放有文件的状态信息。 :*文件名是给一个文件分配的文本形式的字符串,用来标识该文件。在一个指定的目录中,任何两项都不能有同样的名字。 每个目录的第一项都表示目录本身,并以“.”作为它的文件名。每个目录的第二项的名字是“..”,表示该目录的父目录。当把文件添加到一个目录中的时候,该目录的大小会增长,以便容纳新文件名。当删除文件时,目录的尺寸并不减少,而是核心对该目录项做上特殊标记,以便下次添加一个文件时重新使用它。 Linux文件系统采用带链接的树形目录结构,即只有一个根目录(通常用“/”表示),其中含有下级子目录或文件的信息;子目录中又可含有更下级的子目录或者文件的信息。这样一层一层地延伸下去,构成一棵倒置的树,如图所示。 [[Image:54-1-4-(1).png]]<br> 在目录树中,根节点和中间节点都必须是目录,而普通文件和特别文件只能作为“叶子”出现。当然,目录也可以作为叶子。 ===文件系统=== 文件系统指文件存在的物理空间。在Linux系统中,每个分区都是一个文件系统,都有自己的目录层次结构。Linux的最重要特征之一就是支持多种文件系统,这样它更加灵活,并可以和许多其它种操作系统共存。由于系统已将Linux文件系统的所有细节进行了转换,所以Linux核心的其它部分及系统中运行的程序将看到统一的文件系统。<br> 大部分UNIX文件系统种类具有类似的通用结构,即使细节有些变化。其中心概念是超级块superblock, i节点inode, 数据块data block,目录块directory block, 和间接块indirection block。超级块包括文件系统的总体信息,比如大小(其准确信息依赖文件系统)。i节点包括除了名字外的一个文件的所有信息,名字与i节点数目一起存在目录中,目录条目包括文件名和文件的i节点数目。i节点包括几个数据块的数目,用于存储文件的数据。i节点中只有少量数据块数的空间,如果需要更多,会动态分配指向数据块的指针空间。这些动态分配的块是间接块;为了找到数据块,这名字指出它必须先找到间接块的号码。<br> Linux支持多种操作系统,其实现机制我们在后面会讲到。 ===虚拟文件系统=== Linux系统允许众多不同种类的文件系统共存,如ext3、vfat等。通过使用同一套文件I/O系统调用,即可对Linux中的任意文件进行操作,而无需考虑其所在的文件系统的具体格式。此外,Linux还支持跨文件系统的文件操作,即对文件的操作可以跨文件系统进行。如图8.3所示。实现这种操作的机制正是虚拟文件系统。<br> [[Image:54-1-6-(1).png]]<br> ===虚拟文件系统概述=== ==根文件系统开发实验== ==制作根文件系统镜像==
返回至
Linux根文件系统制作
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
关于我们
联系我们
资料下载
STM32F103开发板
STM32U575开发板
STM32MP157开发板
Hi3861鸿蒙开发板
HaaS EDU开发板
ESP32开发板
i.MX8M Plus开发板
图书下载
嵌入式系列图书
物联网系列图书
Android系列图书
高校教仪
嵌入式实验室产品
物联网实验室产品
人工智能实验室产品
虚拟仿真实验室产品
行业应用实训室产品
虚拟仿真
嵌入式虚拟仿真平台
物联网虚拟仿真平台
人工智能虚拟仿真
友情链接
华清远见研发中心
元宇宙实验中心
华清远见硬件商城
工具
链入页面
相关更改
特殊页面
页面信息