正在加载图片...
文件描述符表项中,对前两种情况固然可行,但要实现对读/写指针的共享就很困难。为解决此 问题,在UNIX系统中引入了文件表,文件表项中存放文件的读/写指针,这样对上述三种读/写 要求都能很好地满足。 4.目录管理 为了加速对文件目录的查找,在UNIX系统中,将文件名和文件说明分开,由文件说明形成 个称为索引节点的数据结构,而相应的文件目录项则只由文件名和对应的索引节点号构成 (1)索引节点 磁盘索引节点:索引节点是一个数据结构,其中存放文件的说明信息。索引节点以静态形 式存放在磁盘上,故又称为磁盘索引节点。每个文件都有惟一的一个磁盘索引节点,它由下述 各字段构成:文件所有者标识符、文件类型、文件存取权限、存放文件的物理地址、文件长度、 文件联结计数、文件存取时间 内存索引节点:为了加快文件的存取速度和减轻磁盘I/0的压力,专门在内存中建立了 个内存索引节点表,将那些要被引用的磁盘索引节点复制到内存索引节点表中,并增加了如下 字段:索引节点号、内存索引节点状态、内存索引节点引用计数、设备号和内存索引节点指 针。 (2)磁盘索引节点的分配与回收 分配过程 ialloc:每当核心创建一新文件时,都要为之分配一空闲磁盘索引节点。如果 分配成功,便再分配一内存索引节点 回收过程 ifree:当要删除某文件时,应回收其所占用的盘块及相应的磁盘索引节点。过程 ifree便是用于回收磁盘索引节点的。 (3)内存索引节点的分配与回收 分配过程iget:主要功能是分配内存索引节点,其输入参数是文件系统号和索引节点。 回收过程iput:输入参数是指向内存i节点的指针。其主要功能是对指定的内存索引节 点进行减1操作。若结果为0,则回收该内存i节点。若它已做过修改,还须将它写回磁 盘后再回收,然后将它链入内存空闲i节点表中。若其磁盘i节点的联结计数也为0,便 删除该文件,并回收分配给该文件的磁盘i节点和磁盘数据块。 (4)构造目录和删除目录 文件系统的基本功能是实现按名存取,这是通过文件目录来实现的。UNIX系统中的每个 目录项由文件名及其相应的索引节点号组成,其中文件名占14个字节,索引节点号占2个字 节。通常,每个文件都在文件目录中有一个目录项,通过查找文件目录可找到该文件的目录项 和对应的索引节点,进而找到文件存放的物理位置。对于可供多个用户共享的文件,则它往往 会有多个目录工页。如果要将文件删除掉,其目录便也无存在的必要,因此也应将其目录项删 除掉 构造目录:每当创建一个新文件时,系统都要在其父目录文件中为之构造一个目录项。在 UNIX系统中,构造目录的任务由 makenode过程完成。在创建一个新文件时,由系统调用 creat 调用该过程来为新文件构造一个目录项。 makenode过程首先调用 ialloc过程来为新建的文 件分配一磁盘索引节点和内存索引节点,若分配失败便返回:当分配成功时,须先设置内存索 引节点的初值,然后调用写目录过程,将用户提供的文件名与分配给文件的磁盘索引节点号 起构成一新目录项,再将它记入其父目录文件中。 删除目录:当用户已不再需要某个文件时,应将它从文件系统中删除,以便及时腾出存储 空间。由于UNIX系统支持文件的共享,而当文件正被多个进程共享时,不允许任何一个用户将 该文件删除。这也是UNIX系统中不存在一条用于删除文件的系统调用的真正原因。当一个用 户(进程〉己不再需要某文件时,只能利用系统调用 unlink请求清除进程与该文件的联结。此 时,系统须对该文件的联结计数执行减1操作,并相应地删除该用户(进程)的一个指定文件目文件描述符表项中,对前两种情况固然可行,但要实现对读/写指针的共享就很困难。为解决此 问题,在 UNIX 系统中引入了文件表,文件表项中存放文件的读/写指针,这样对上述三种读/写 要求都能很好地满足。 4.目录管理 为了加速对文件目录的查找,在 UNIX 系统中,将文件名和文件说明分开,由文件说明形成 一个称为索引节点的数据结构,而相应的文件目录项则只由文件名和对应的索引节点号构成。 (1)索引节点 磁盘索引节点:索引节点是一个数据结构,其中存放文件的说明信息。索引节点以静态形 式存放在磁盘上,故又称为磁盘索引节点。每个文件都有惟一的一个磁盘索引节点,它由下述 各字段构成:文件所有者标识符、文件类型、文件存取权限、存放文件的物理地址、文件长度、 文件联结计数、文件存取时间。 内存索引节点:为了加快文件的存取速度和减轻磁盘 I/0 的压力,专门在内存中建立了一 个内存索引节点表,将那些要被引用的磁盘索引节点复制到内存索引节点表中,并增加了如下 字段:索引节点号、 内存索引节点状态、内存索引节点引用计数、设备号和内存索引节点指 针。 (2)磁盘索引节点的分配与回收 分配过程 ialloc:每当核心创建一新文件时,都要为之分配一空闲磁盘索引节点。如果 分配成功,便再分配一内存索引节点。 回收过程 ifree:当要删除某文件时,应回收其所占用的盘块及相应的磁盘索引节点。过程 ifree 便是用于回收磁盘索引节点的。 (3)内存索引节点的分配与回收 分配过程 iget:主要功能是分配内存索引节点,其输入参数是文件系统号和索引节点。 回收过程 iput:输入参数是指向内存 i 节点的指针。其主要功能是对指定的内存索引节 点进行减 1 操作。若结果为 0,则回收该内存 i 节点。若它已做过修改,还须将它写回磁 盘后再回收,然后将它链入内存空闲 i 节点表中。若其磁盘 i 节点的联结计数也为 0,便 删除该文件,并回收分配给该文件的磁盘 i 节点和磁盘数据块。 (4)构造目录和删除目录 文件系统的基本功能是实现按名存取,这是通过文件目录来实现的。UNIX 系统中的每个 目录项由文件名及其相应的索引节点号组成,其中文件名占 14 个字节,索引节点号占 2 个字 节。通常,每个文件都在文件目录中有一个目录项,通过查找文件目录可找到该文件的目录项 和对应的索引节点,进而找到文件存放的物理位置。对于可供多个用户共享的文件,则它往往 会有多个目录工页。如果要将文件删除掉,其目录便也无存在的必要,因此也应将其目录项删 除掉。 构造目录:每当创建一个新文件时,系统都要在其父目录文件中为之构造一个目录项。在 UNIX 系统中,构造目录的任务由 makenode 过程完成。在创建一个新文件时,由系统调用 creat 调用该过程来为新文件构造一个目录项。makenode 过程首先调用 ialloc 过程来为新建的文 件分配一磁盘索引节点和内存索引节点,若分配失败便返回:当分配成功时,须先设置内存索 引节点的初值,然后调用写目录过程,将用户提供的文件名与分配给文件的磁盘索引节点号一 起构成一新目录项,再将它记入其父目录文件中。 删除目录:当用户已不再需要某个文件时,应将它从文件系统中删除,以便及时腾出存储 空间。由于 UNIX 系统支持文件的共享,而当文件正被多个进程共享时,不允许任何一个用户将 该文件删除。这也是 UNIX 系统中不存在一条用于删除文件的系统调用的真正原因。当一个用 户(进程〉己不再需要某文件时,只能利用系统调用 unlink 请求清除进程与该文件的联结。此 时,系统须对该文件的联结计数执行减 1 操作,并相应地删除该用户(进程)的一个指定文件目
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有