Hi~朋友,关注置顶防止错过消息
摘要
文件的使用
如何打开一个文件?
系统调用。
如何使用文件?
fd = open(name, flag); # 打开文件
write(fd, ...); # 写数据
close(fd); # 关闭文件
打开文件表的作用是什么?
操作系统维护了所有进程所打开的文件列表,文件表里的每一项都代表了一个文件描述符,每当我们打开文件时,都会往该表中添加一项。
文件表项的主要信息有哪些?
文件系统的基本操作单位是?
数据块。
文件的存储
文件的数据在磁盘上的存储方式有哪几种?
连续空间存储方式
连续空间存储使用前必须要知道文件的大小,这样文件系统才可以在磁盘上找到一块连续的空间分配给文件。文件头里需要指定起始块的位置和长度。
连续空间存储优点?
文件数据紧密相连,一次磁盘寻道便可读出整个文件,读写效率高。
连续空间存储缺点?
非连续空间存储方式
非连续空间存储方式有哪几种?
链表方式的优点?
隐式链表特点?
隐式链表实现的方式是文件头中包含第一块和最后一块的位置,并且每个数据块里面留出一个指针空间,用来存放一下个数据块的位置,通过该指针就可以找到所有的数据块。
显式链表的特点?
显式链表将每个磁盘块的指针取出来放在一个内存表中。该表对于整个磁盘只设置一张,每个表项中存放链接指针,指向下一个数据块号。该表称为文本分配表(File Allocation Table, FAT)。
显式链表整个查询过程都是在内存中进行,因此检索速度快,而且大大减少了磁盘的访问次数。但是由于整张表都存放在内存中,所以不适合大磁盘。
索引方式的特点?
索引的实现方式是为每个文件创建一个索引数据块,里面存放的是指向文件数据块的指针列表。
文件头需要包含指向索引数据块的指针,这样通过文件头就知道索引数据块的位置,再通过索引数据块里的索引信息找到对应的数据块。
索引方式优点:
索引方式缺点:
如果文件过大,一个索引数据块无法存放,如何处理?
处理方式主要有两种:
链式索引块的实现方式是在索引数据块留出一块区域存放下一个索引数据块的指针,这种方式也会存在之前链表中的指针损坏的问题。
多级索引块的实现方式是通过一个索引块来存放多个索引块,一层套一层。
Unix中文件数据的存储方式?
在Unix中它会根据文件的大小,存储方式有所变化:
因此在文件头中需要包含13个指针: