失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 14.Linux/Unix 系统编程手册(上) -- 文件系统

14.Linux/Unix 系统编程手册(上) -- 文件系统

时间:2023-08-27 16:58:42

相关推荐

14.Linux/Unix 系统编程手册(上) -- 文件系统

1.设备专用文件(设备文件)设备专用文件与系统的某个设备相对应。在内核中,每种设备类型都有与之相对应的设备驱动程序,用来处理设备的所有IO请求。设备驱动程序属于内核代码单元,可执行一系列操作,通常与相关硬件的输入/输出动作相对应。由设备驱动程序提供的 API 是固定的,包含的操作对应于系统调用 open,close,write,mmap以及ioctl。每个设备驱动程序所提供的接口一致,这隐藏了每个设备在操作方面的差异,从而满足了IO操作的通用性。某些设备是存在的,比如鼠标。而另外一些设备则是虚拟的,亦不存在相关的硬件,但内核会(通过设备驱动程序)提供一种抽象设备,其所携带的 API 与真实设备无异。可将设备划分为以下两种类型:1.字符型设备基于每个字符来处理数据。终端和键盘都属于字符型设备2.块设备则每次处理一块数据。块的大小取决于设备类型。但通常为512字节的倍数,磁盘和磁带属于块设备2.设备ID每个设备文件都有主,辅ID号各一。主ID号标识一般的设备等级,内核会使用主ID号查找与该类设备相应的驱动程序。辅ID号能够在一般等级中唯一标识特定设备。设备文件的 i 节点中记录了设备文件的主辅ID。每个设备驱动程序会将自己与特定的主设备号的关联关系向内核注册,籍此建立设备专用文件和设备驱动程序之间的联系。内核是不会使用设备文件名来查找驱动程序的。3.磁盘和分区1.磁盘驱动器硬盘驱动器是一种机械装置,由一个或者多个高速旋转的盘片组成。通过在磁盘上快速移动的读/写磁头,便可获得/修改磁盘表面上的磁性编码信息。磁盘表面信息物理上存储于称为磁道的一组同心圆上。磁盘自身又被划分为若干扇区,每个扇区则包含一系列物理块。物理块的容量一般为512(或倍数)字节,代表了驱动器可读/写的最小信息单元。尽管现代磁盘速度很快,但读写磁盘信息耗时依然不菲。1.首先,磁头要移动到相应的磁道(寻道时间)2.然后,在相应扇区旋转到磁头下之前,驱动器必须一致等待(旋转延时)3.最后,还要从请求的块上传输数据(传输时间)2.磁盘分区可将每块磁盘划分为一个或多个(不可重叠)分区。内核则将每个分区视为位于 /dev 路径下的单独设备。fdisk4.文件系统文件系统是对常规文件和目录的组织集合。用于创建文件系统的命令是 mkfs1.文件系统结构在文件系统中,用来分配空间的基本单位是逻辑块,亦即文件系统所在磁盘设备上若干连续的物理块。文件系统由以下几部分组成:1.引导块总是作为文件系统的首块。引导块不为文件系统所用,只是用来包含引导操作系统的信息。操作系统虽然只需要一个引导块,但所有文件系统都设有引导块。2.超级块紧随引导系统之后的一个独立块,包含于文件系统有关的信息,其中包括:1. i 节点表容量2. 文件系统中逻辑块的大小3. 以逻辑块记,文件系统的大小3. i 节点表文件系统中的每个文件或目录在 i 节点中都对应这唯一一条记录。这条记录登记了关乎文件的各种信息。4.数据块文件系统的大部分空间都用于存放数据.2. i 节点i 节点锁维护的信息如下:1.文件类型(常规文件,目录,符号链接,以及字符设备等)2.文件属主3.文件属组4.3类用户访问权限5.3个时间戳6.指向文件的硬链接数量7.文件的大小8.实际分配给文件的块数量9.指向文件数据块的指针5.虚拟文件系统虚拟文件系统(VFS,也称为虚拟文件交换)是一种内核特性。1.VFS 针对文件系统定义了一套通用接口2.每种文件系统都会提供 VFS 接口的实现6.日志文件系统采用日志文件系统,则无需在系统崩溃之后对文件进行漫长的一致性检查。在实际更新元数据之前,日志文件系统会将这些更新操作记录于专用的磁盘日志文件中。对元数据的更新记录是按其相关性分组(以事务的方式记录的)进行的。在事务处理过程中,一旦系统崩溃,系统重启时便可利用日志重做(redo)任何不完整更新,同时为文件系统恢复一致性状态。日志文件系统最为臭名昭著的是在于增加了文件的更新时间。7.文件系统的挂载和卸载1./proc/mounts // 查看当前已挂载文件系统的列表2./etc/mtab // 比 /proc/mounts 详细,但可能不及时3./etc/fstab // 手工维护/dev/sda9 /boot ext3 rw 0 0 这条信息包含了6个字段:1. 已挂载的设备名2. 设备的挂载点3. 文件系统的类型4. 挂载标志5. 一个数字,dump(8) 会使用其来控制对文件系统的备份操作6. 一个数字,在系统引导时,用于控制 fsck 对文件系统的检查顺序8.虚拟内存文件系统: tmpfsLinux 同样支持驻留与内存的虚拟文件系统。对应用程序来说,此类文件系统看起来和其他文件系统别无二致---同样施以相同操作(open,read ...) 。不过,二者之间还是有一个最要的差别:由于不涉及磁盘访问,虚拟文件系统的文件操作非常快。除了用于用户应用程序外, tmpfs 文件系统还有以下两个用途:1.由内核内部挂载的隐形 tmpfs 文件系统,用于实现 System V 共享内存和共享匿名内存映射。2.挂载于 /dev/shm 的 tmpfs 文件系统,为 glibc 用以实现 POSIX 共享内存和 POSIX 信号量mkswap();swapon();swapoff();mount();umount();umount2();statvfs();fstatvfs();

如果觉得《14.Linux/Unix 系统编程手册(上) -- 文件系统》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。