- 1、本文档共66页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[互联网]Linux程序设计——技术技巧与项目实践---Linux文件系统与编程--第6章
第六章 Linux文件系统与编程 6.1 文件系统概述 6.2 设备文件 6.3 文件的系统调用 6.4 文件系统的设计与实现 6.5 实战技巧 消除Xwindows下的死机现象 6.1 文件系统概述 Linux文件系统对用户而言只是一个文件树,它不用设备标识符如设备号或设备名称表示。树根在顶部,称为根目录root,以“/”表示。所有文件和外部设备都以文件形式挂在这棵树上,包括硬盘、光驱等,这和以驱动器盘符为基础的Windows系统完全不同。当磁盘分区之一被“mount”到文件树中称为安装点(mount point)目录时,就成为该目录树的一个组成部分。 当windows的C:盘未被安装时,/mnt/winc是根文件系统中的一个普通子目录(格式可能是linux EXT2/3等),里面可以存放任何数据。而FAT32、NTFS等格式的C盘上的数据独立于linux系统,不能被linux系统读取。 6.1.1文件系统的目录树 Linux根目录下一般都有一些固定文件夹。下图6.1是redhat9的目录结构。 3./lost+found 该目录用来存放在系统非正常关机后重启系统时,无处存放的中间文件。 4./boot 该目录中存放着和系统启动有关系的各种文件,包括系统的引导程序和系统核心部分。 5./root 该目录是系统管理员root的主目录。 系统中所有用户的主目录都存放在/home中,它包含实际用户的主目录和其他用户的主目录。Linux同UNIX的不同之处是,linux中root用户的主目录通常是在/root或/home/root下,而UNIX通常是在根目录下。 7./mnt 这是CD-ROM、软盘、Zip盘或Jaz等可移动介质的安装目录,其中的每个子目录就是某种设备类型的一个安装点,如/cdrom、/floppy、/zip。如果要使用这些设备,还需要用mount命令从/dev目录中将外部设备挂接上。 8./tmp和/var 这两个目录用来存放临时文件和经常变动的文件。 9./dev 该目录存放各种外部设备的镜像文件。如第一个软盘驱动器的名字是fd0,第一个硬盘的名字是hda,硬盘中的第一个分区是hda1,第二个分区是hda2;第一个光驱的名字是hdc等,以此类推。 10./usr 该目录用来存放与系统的用户直接相关的程序或文件,这里面有每一个系统用户的主目录,相对于用户的根目录“/”。 11./proc 该目录是当前系统中运行的进程的虚拟镜像,在这里可以看到由当前运行的进程号组成的一些目录,还有一个记录当前内存内容的kernel文件。 6.1.2文件系统的结构 文件系统上的所有文件在计算机里都是数据的集合。一个文件系统不仅包括所有文件的内容,还包括文件系统的结构、用户与程序开发人员可能用到的关于文件、目录连接和文件权限等信息。一个成功的文件系统必须安全可靠地保存这些信息,一个操作系统最基本的一致性和完整性首先依赖于文件系统的可靠性。图6.2描述了一个文件系统的视图。 其中,引导块的作用是在文件系统启动时,将操作系统核心程序从磁盘装入内存,然后由该核心程序来指挥文件系统的初始化工作。超级块包含了整个文件系统所需的管理信息,包括系统的基本尺寸和形式。系统管理程序利用这些信息对系统进行管理和维护。inode链(索引节点链)中包含了很多inode(索引节点),一个文件(或目录)占据一个索引节点。第一个索引节点是该文件系统的根节点。数据块用来存放文件数据或者管理数据(如一级间址块、二级间址块等)。 6.1.3 Ext2文件系统 第二代扩展文件系统ext2的设计目标是为linux提供专用的可扩展和高性能的文件系统,是linux世界里最成功的文件系统,不同的linux发行版本都使用ext2文件系统。 ext2的基本前提是文件中的数据是在数据块中保存的,这些数据块长度相等且长度可变,某个ext2文件系统的块大小在创建(使用mke2fs)时设置。每个文件的大小最好是和刚好大于它的块大小的整数倍相等。如果块大小为1024字节,而一个1025字节长的文件将占据两个1024字节大小的块。这样你不得不浪费差不多一半的空间。我们通常需要在CPU的内存利用率和磁盘空间使用上进行折中。 大多数操作系统,包括linux在内,为了减少CPU的工作负载而被迫选择相对较低的磁盘空间利用率。并不是文件中每个块都包含数据,其中有些块被用来包含描述此文件系统结构的信息。ext2通过一个inode结构来描述文件系统中的文件并确定此文件系统的拓扑结构。inode结构用来描述文件中的数据占据哪个块以及文件的存取权限、文件修改时间及文件类型。EXT2文件系统中的每个文件用一个inode来表示,且每个inode都有唯一的编号。文件系统中所有的inode都被保存在i
文档评论(0)