UNIX操作系统的文件管理

合集下载

UNIX系统管理-第四章:文件系统布局

UNIX系统管理-第四章:文件系统布局

UNIX系统管理-第四章:文件系统布局目标完成这一章,你能作以下事情:描述为什么要区分动态文件系统和静态文件系统描述/sbin,/usr,/stand,/etc,/dev,/var(操作系统相关目录)的主要内容描述/opt,/etc/opt,和/var/opt(应用程序相关)的主要内容使用find,和whereis命令在文件系统中查找文件介绍文件系统范例许多系统管理任务都要求系统管理员知道系统和应用程序的配置文件和日志文件的位置,并能对这些文件进行操作。

所以了解文件系统组织结构,可以让你能找到这些文件并进行系统管理的工作。

下面介绍标准的A T&T SVR4文件系统布局。

文件系统中的文件可以通过不同的方法分类。

例如可以分为静态文件和动态文件,可执行文件和配置文件。

这些分类原则组成了文件系统的逻辑结构,并且能够简化系统管理的任务。

文件系统可以分为静态和动态两个部分文件系统中的文件和目录被分为静态和动态两类。

静态文件和目录中的内容很少更改,除非是安装补丁或者安装操作系统或安装应用程序。

可执行文件,库,和系统启动工具,都被认为是静态的。

动态文件和目录是经常更改的。

配置文件。

临时文件,和用户文件被认为是动态的。

区分动态和静态数据提供了以下的优点:系统备份更容易磁盘空间管理更简单可执行文件和配置文件配置数据和可执行代码是分别保存的。

分开保存配置文件和可执行文件能够提供了如下优点:当操作系统升级的时候,对配置数据的更改不会丢失。

可以很容易地通过网络共享可执行文件,同时每个主机自己的配置文件可以存储在本地主机上文件系统布局操作系统的可共享部分的数据存在于/usr,和/sbin下面。

只有操作系统能够安装文件到这些目录下去。

应用程序位于/opt下面。

/usr,/sbin目录和/opt下面的应用程序子目录能够在网络中的主机之间共享。

因为它们不包含每个主机特定的信息。

每个主机特定的信息位于文件系统的动态数据目录下。

UNIX系统文件管理分析

UNIX系统文件管理分析
返回本章首页
6.1.1 文件与文件系统的概念
1.文件的定义 文件是具有标识符(文件名)的一组相关信息的 集合。标识符是用来标识文件的。不同的系统对 标识符的规定有所不同。文件的确切定义有两种 说法: (1)文件是具有标识符的相关字符流的集合。 (2)文件是具有标识符的相关记录的集合。
下一页
2.文件系统的定义 文件系统是操作系统中负责存取和管理文件信息 的机构。它由管理文件所需的数据结构(如文件 控制块,存储分配表等)和相应的管理软件以及 访问文件的一组操作组成。
返回本节
6.1.2 文件的分类、属性及文件系统的功能 1.文件的分类 2.文件的属性 3.文件系统的功能
下一页
1.文件的分类 按文件的用途分类可分为以下三类。 (1)系统 文件。 (2)用户文件 (3)库文件。 按文件中的数据形式分类 (1)源文件。 (2)目标文件。 (3)可执行文 件。
下一页
返回本节
6.2 文件的逻辑结构
6.2.1 逻辑结构 6.2.2 存取方法
返回本章首页
6.2.1 逻辑结构
1.有结构的文件 有结构的文件是指由若干个相关的记录构成的文 件,又称记录式文件。 2.无结构文件 无结构文件又称流式文件,组成流式文件的基本 信息单位是字节或字,其长度是文件中所含字节 的数目,如大量的源程序,库函数等采用的就是 流式结构。
返回本节
6.2.2 存取方法
(1)顺序存取。顺序存取是最简单的方法。它 严格按照文件信息单位排列的顺序依次存取,后 一次存取总是在前一次存取的基础上进行,所以 不必给出具体的存取位置。 (2)随机存取。随机存取又称直接存取,在存 取时必须先确定进行存取时的起始位置(如记录 号、字符序号等)。
返回本节

UNIX文件操作

UNIX文件操作

关于本系列通常,UNIX®管理员都拥有一套常用的辅助进程管理的关键实用工具、诀窍和系统。

本文提供了各种用于简化各个过程的关键实用工具、命令行链和脚本。

这些工具中的一部分来自于操作系统,而大部分的诀窍则来源于长期的经验积累和减轻系统管理员的工作压力的要求。

本系列文章主要专注于最大限度地利用各种UNIX 环境中可用的工具,包括简化异类环境中的管理任务的方法。

使用 cp如果您使用 -r 命令行选项递归到其子目录中,标准的 cp 命令可用于复制整个目录树。

该选项将对非标准的文件执行未知的操作。

有些 UNIX 变种和 GNU cp 工具支持 -R 选项,使用该选项可以正确地复制命名管道、链接和其他的文件。

对于最简单的应用,cp 命令可以将目录复制到具有不同名称的新目录(请参见清单 1)。

然而,当在 cp 命令中指定源文件和目标位置时,您应该加以小心,因为其处理方式可能对结果有很大的影响。

例如,假设您希望将目录 /home/mc 复制到目录/export/home/mc。

如果 /export/home/mc 不存在,那么清单 2会将目录/home/mc 复制到 /export/home/mc。

然而,如果 /export/home/mc 已经存在,那么清单 2会将目录 /home/mc 复制到这个目录中,并创建新的目录 /export/home/mc/mc。

要将一个目录中的内容复制到一个已有的目录中,可以选择源目录中的文件,如清单 3所示。

cp 工具有一个非常有用的选项,-p 命令行选项,它还可以确保维持每个文件的权限和所有权。

使用 tartar 命令最初用来将文件归档到磁带(确切地说,是磁带驱动器)。

例如,您可以使用清单 4中的命令,将当前目录中的文件复制到磁带上。

清单 4. 使用 tar 将当前目录中的文件复制到磁带可以对清单 4进行如下分析:c 选项创建一个新的存档。

f 选项使用命令行中的下一个选项作为目标名称。

第6章Unix文件管理共29页

第6章Unix文件管理共29页

成组链接法
第一组3 51~449 共99块 第二组251~350 共100块 第三组151~250 共100块 苇四组 51~150 共l00块 第五组 12~50 共39块
即从后面块向前分组,每组100块,但第一组为9 9块,最后的第五组不足100块,也成一组。第一 组的空闲盘块的物理块号及块数登记在第二组的 第一块中,第二组的空闲盘块物号及块数登记在 第三组的第一块
2. 磁盘文件卷结构
Sector #
0 Boot Record
1 Super Block
inode Table
Data (File & Directory)
Volume Structure in UNIX
• 超级块:描述文件系统的状态,包括磁盘空闲块栈, 空闲i结点栈
• i节点(inode list):存放文件说明信息,每项64字 节
time_t di_ctime; /*文件最近一次创建时间*/
};
3. 空闲i结点的分配和释放
• 2.系统打开文件表
一个文件可以被同一进程或不同进程,用同一或不同路径名,
相同或不同的打开方式(读、写)同时打开。
系统打开文件表
struct file {
unsigned short f_flags; /* 文件操作标志 */
4. 磁盘空闲块的分配和释放
Super Block
count 41 0 350 ... 40 187
#350 count 50
0 400
...
49 351
#400 count 50
0 450
...
49 401
Last One ... count 46
00 ...

unix命令

unix命令

Unix命令1. 简介Unix是一个多用户、多任务操作系统,因其稳定性、安全性和可靠性而广泛应用于服务器和工作站环境中。

Unix系统提供了丰富的命令行工具,这些工具可以通过命令行终端或shell程序来调用和使用。

本文档将介绍Unix系统中常用的一些命令,涵盖文件和目录操作、进程管理、系统监控等方面。

2. 文件和目录操作2.1 lsls命令用于列出目录下的文件和子目录。

常用选项包括:•-l:以长格式显示文件和目录的详细信息•-a:显示所有文件和目录,包括隐藏文件•-h:以人类可读的格式显示文件大小例如,执行ls -l命令可以列出当前目录下的所有文件和子目录,并显示详细信息。

2.2 cdcd命令用于切换当前工作目录。

可以使用绝对路径或相对路径作为参数。

例如,执行cd /home/user可以切换到/home/user目录。

执行cd ..可以返回上一级目录。

2.3 cpcp命令用于复制文件或目录。

常用选项包括:•-r:递归复制目录及其内容•-i:覆盖已存在的文件时进行提示例如,执行cp file1 file2可以复制file1到file2。

2.4 mvmv命令用于移动文件或目录,也可用于重命名文件或目录。

例如,执行mvfile1 file2可以将file1重命名为file2。

2.5 rmrm命令用于删除文件或目录。

常用选项包括:•-r:递归删除目录及其内容•-f:强制删除,无需确认例如,执行rm file1可以删除file1。

3. 进程管理3.1 psps命令用于列出系统中运行的进程。

常用选项包括:•-e:显示所有进程,包括系统级进程•-f:显示详细信息,包括进程间的关系例如,执行ps -e可以列出系统中所有进程的信息。

3.2 toptop命令用于实时监测系统中的进程。

它可以显示当前资源使用情况和每个进程的详细信息,如CPU使用率、内存使用量等。

按下q键可以退出top命令。

3.3 killkill命令用于终止指定的进程。

UNIX系统下文件描述符参数的管理

UNIX系统下文件描述符参数的管理

UNIX系统下文件描述符参数的管理Unix系统环境里,内核(kernel)利用文件描述符(file descriptor)来访问文件,文件描述符是由无符号整数表示的句柄。

打开现存文件或新建文件时,内核会返回一个文件描述符。

读写文件也需要使用文件描述符来指定待读写的文件。

文件描述符的有效范围是0 到OPEN_MAX。

习惯上,标准输入(standard input)的文件描述符是0,标准输出(standard output)是1,标准错误(standard error)是2。

POSIX 定义了STDIN_FILENO、STDOUT_FILENO 和STDERR_FILENO 来代替0、1、2。

这三个符号常量的定义位于头文件unistd、h。

一、什么情况下,会新建和打开文件:1、A JVM opens many files in order to read in the classes required to run your application、High volume applications can use a lot of files in many ways、2、each new socket requires a file、Clients and Servers communicate via TCP sockets、3、Each browser's http request consumes TCP sockets when a connection is established to a Server、二、文件描述符的释放:1、在文件关闭或进程终止时被关闭的。

2、如果想重用某个文件描述符,必须关闭与之关联的所有文件描述符(父进程和子进程:文件描述符可以继承,可由子进程使用)。

3、TIME_WAIT 结束时,才会释放TCP 套接字文件描述符。

(在Unix系统中, TIME_WAIT在kernel参数tcp_time_wait_interval中设置、默认值是240秒)4、打开新文件时将会重用关闭的文件描述符下面我们分别讨论一下opne_max参数的设置与监控:一、Linux系统1、查看1、使用ulimit命令查看系统允许当前用户进程打开的文件数限制:[ccb@as4~]$ulimit -n1024这表示当前用户的每个进程最多允许同时打开1024个文件。

第07章 UNIX文件管理系统

第07章 UNIX文件管理系统

2)文件系统安装与拆卸 安装文件系统命令mount mount [option] filesystem mountpoint 说明: option可取:
-h -----输出该命令帮助信息 -V-----输出该命令版本号 -a -----按fstab文件所指位置安装所有文件系统 -F-----为设备生成一个安装点 -r-----安装的只读文件 -w----安装文件可读可写
卸载文件系统umount umount[option] filesystem option可取:
-a-----对所有在/etc/mtab中描述的文件卸载 -h-----输出帮助信息并退出 -n-----卸载时不写/etc/mtab -r-----当卸载失败时,重装成只读文件系统 -V-----输出umount版本号
• 不同用户的不同级别共享 • 父子进程对文件的共享 • 文件的链接共享 使用硬链接及符号链接的命令: % lnabc.c xyz.c % ln-s xyz.c def.c (查看结构) • 通过管道线的文件共享 管道文件的大小限定及访问特性
硬连接及符号链接原理图
返回
有关文件处理的系统调用
1.文件描述符 高级语言中的输入/输出库函数是对FILE类型的指针操 作,c语言处理中自动打开stdin,stdout,stderr三个文 件。 系统调用中用一个整形数描述打开的文件,它就是文 件描述符。
1)检索当前目录的索引节点 2)通过当前目录找到当前目录文件查 出..节点 3)检索..索引节点 4)通过..文件找到..文件查出a的索引节 点号 5)检索a的索引节点号 6)找到a的目录文件,查出b的索引节点 号 7)检索b,找到b的文件位置 8)访问文件b
3.文件共享的实现及应用 UNIX中有多种文件共享方式:

UNIX操作系统的文件管理

UNIX操作系统的文件管理





(1) i-count 内存inode访问计数。若为0,表示此节点为空闲, 某文件被打开时,其内存inode里的此项就加1。 只有所有用户都关闭了此文件,以使i-count为0 后,这个文件才被真正关闭。 (2) i-number 与此内存inode相对应的外存inode编号。
5、打开文件控制块file和file表
文件系统磁盘存储区的分布图




每一个文件的inode节点占用32个字节,因此每一个inode 块包含16个文件控制块。这些inode顺序编号,一个文件 占用了某inode,则其编号就成为这个文件的内部标识, 第1号inode是专门用于根目录文件的。 数据结构filsys 共有12 项内容,下面给出与我们讲述有关 的六项。 (1) s-isize inode区占用的盘块数; (2) s-fsize 盘块总数; (3) s-nfree 直接管理(也就是s-free[100]指向)的空闲块 数; (4) s-free[100] 空闲块索引表 (5) s-ninode 直接管理的空闲inode节点数; (6) s-sinode[100] 空闲inode节点索引表。 至于如何通过filsys来对空闲inode和空闲盘进行具体管理, 详情见后面关于UNIX文件系统资源管理综述部分。

4外node记录了一个文件的属性和有关信息。可以想象,在对某一
文件的访问过程中,会频繁地涉及到它,于是它就要不断来回于内、 外存之间,这当然是极不经济的。为此,UNIX在系统占用的内存区 里开辟了一张表——内存inode表(或活动文件控制块表、活动索引 节点表),该表共有100个表目,每个表目称为一个内存文件控制块 inode,当需要使用某文件的信息,而在内存inode 表中找不到其相 应的inode时,就申请一个内存inode,把外存inode的大部分内存拷 贝到这个内存inode 中,随之就使用这个内存 inode 来控制磁盘上的 文件。在最后一个用户关闭此文件后,内存inode的内容被写到外存 inode,然后释放以供它用。 内存inode的结构基本上与外存inode相同。增加的有关项目有:

UNIX_文件组织及管理

UNIX_文件组织及管理

文件组织及管理1.文件及文件系统的定义一个文件是数据的集合体,而文件系统是文件和目录的集合,它通常是按磁盘划分的。

一个文件一定属于一个文件系统,一个文件系统一定对应着相应磁盘,这个磁盘可以是一块物理硬盘的一部分,也可以是单独的一块物理硬盘,还可以是几块物理硬盘绑定,文件系统的分配是随需要而改变的,但系统一旦生成这种结构就相对比较稳定。

e10k:[wqwq]% df/ (/dev/dsk/c2t0d0s0 ): 1278512 blocks 409350 files/proc (/proc ): 0 blocks 29669 files/dev/fd (fd ): 0 blocks 0 files/etc/mnttab (mnttab ): 0 blocks 0 files/var/run (swap ):120999056 blocks 3510504 files/tmp (swap ):120999056 blocks 3510504 files/e10kstg1 (/dev/vx/dsk/e45h72g3/vol11):240940306 blocks 43885850 files /e10kstg4 (/dev/vx/dsk/data7/vol01):92213514 blocks 35106439 files/e10kstg5 (/dev/vx/dsk/D72G1/vol01):118222520 blocks 52666174 files/e10kstg6 (/dev/vx/dsk/e4500stg3/vol01):47745344 blocks 41827853 files /e10kstg7 (/dev/vx/dsk/s5x70r0/vol01):71443464 blocks 167976366 files/e10kstg8 (/dev/dsk/c10t5d1s2):83633238 blocks 43203816 files/e10kstg9 (/dev/dsk/c10t5d0s2):99615724 blocks 126671090 files/e10kscr1 (/dev/vx/dsk/data/vol01):124206748 blocks 33122700 files/e10kstg11 (/dev/vx/dsk/180gbox2/vol01):697790498 blocks 130245996 files /e10kstg10 (/dev/vx/dsk/180gbox1/vol01):502430666 blocks 130244919 files /e10kscr6 (/dev/vx/dsk/idata1/vol01):266543860 blocks 82859747 files/e10kscr3 (/dev/vx/dsk/data2/vol01):181851556 blocks 11906886 files/e10kscr2 (/dev/vx/dsk/d18x13sgi/vol01):209909370 blocks 13055889 files /e10kscr7 (/dev/vx/dsk/d18x13sgi/vol02):212880002 blocks 15236193 files e10k:[wqwq]%2.文件系统类型2.1磁盘文件系统三种磁盘文件系统类型:ufs– UNIX文件系统。

操作系统文件管理

操作系统文件管理

操作系统文件管理一、概述操作系统的文件管理是指操作系统对计算机文件进行创建、存储、操作、查找和删除等各种管理操作的过程。

文件作为计算机存储数据的基本单位,对于一个操作系统来说,良好的文件管理系统是保证计算机数据有效性和可靠性的重要组成部分。

本章将详细介绍操作系统文件管理的相关内容。

二、文件系统1.文件系统介绍1.1 文件系统定义1.2 文件系统的作用1.3 常见的文件系统类型2.文件和目录2.1 文件的定义与属性2.2 文件类型2.3 目录的定义与属性2.4 目录结构的设计3.文件的存储与管理3.1 存储方法3.2 文件的逻辑结构与物理结构 3.3 文件存储空间的分配与管理3.4 文件的索引和索引结构三、文件的操作1.文件的创建与打开1.1 文件的创建1.2 文件的打开1.3 文件打开模式2.文件的读取与写入2.1 文件的读取操作2.2 文件的写入操作2.3 文件的定位操作3.文件的复制与移动3.1 文件的复制3.2 文件的移动3.3 文件的重命名4.文件的删除与恢复4.1 文件的删除4.2 文件的恢复四、文件的查找与索引1.文件查找的方法1.1 线性查找1.2 二分查找1.3 哈希查找1.4 索引查找2.文件索引结构2.1 单级索引2.2 多级索引2.3 倒排索引五、文件的保护与安全1.文件的权限管理1.1 文件的访问权限1.2 权限控制方法2.文件的备份与恢复2.1 文件的备份2.2 文件的恢复六、附件本文档未涉及具体附件内容,请参考相关附件。

七、法律名词及注释1.版权法:指保护作者作品权益的法律措施。

八、全文结束。

文 件 管 理

文 件 管 理

2)
空闲盘块的回收是由free过程完成的。在回收空闲盘块时,首先检查超级 块中的盘块号栈是否已经上锁, 若已上锁,便调用sleep睡眠;否则, 再 检查空闲盘块号栈是否已满。如果空闲盘块号栈未满,可直接将回收盘块 的编号记入空闲盘块号栈中;若栈已满,须调用betblk过程申请一个缓冲 区, 将栈中的所有空闲盘块号复制到新回收的盘块中,再将新回收盘块 的编号作为新栈的栈底块号进栈。
第k个内 存索引结 点

第E
三 种
用 户
fp
情 况
F 用
户 fp

f_o ffest f_i no de
f_o ffest f_i no de

第l个内 存索引结 点
图 9-18 对文件的三种读/写方式
(2) falloc过程
该过程的功能是分配文件表项。进入falloc过程后,调用ufalloc过程分 配用户文件描述表项。若未分配成功,便返回NULL; 否则,继续从文件 表中查找一个空闲文件表项若找到空闲文件表项,便将该项的始址置入用 户文件描述符表项中。在设置文件描述表表项的初始值后便返回(fp)。 若 未找到空闲文件表表项, 则返回NULL。
Wan g
dev 的 目 录 表
i
Wan g letter test
i test rep ort
i
图 9-16 UNIX文件系统的结构
3.
当文件处于“未打开”状态时, 文件需占用三种资源: (1) 一个目录项。 (2) 一个磁盘索引结点项。 (3) 若干个盘块。 当文件被引用或“打开”时,
(1) 一个内存索引结点项。
超 级块 表 109 106 103 100 95
211 208 205 202

unix下的文件和目录详解以及操作方法

unix下的文件和目录详解以及操作方法

unix下的⽂件和⽬录详解以及操作⽅法前⾔:unix下⼀切东西都是⽂件,⼀共有7种不同的⽂件,前⼀篇博客已经讲解的很清楚了,不懂的可以看看。

当然,博主知道有些朋友⽐忙,没时间看,那我就简单点讲讲这7种⽂件都有哪些吧。

⽂件类型包括在stat结构的st_mode成员中,下⾯是这7种⽂件类型的判断⽅法:宏⽂件类型S_ISREG(m) 普通⽂件(is it a regular file?)S_ISDIR(m) ⽬录⽂件(directory?)S_ISCHR(m) 字符特殊⽂件(character device?)S_ISBLK(m) 块特殊⽂件(block device?)S_ISFIFO(m) 管道或FIFO [FIFO (named pipe)?]S_ISLNK(m) 符号链接 [symbolic link? (Not in POSIX.1-1996.)]S_ISSOCK(m) 套接字 [socket? (Not in POSIX.1-1996.)]当然这些⽂件都是有访问权限的,很巧这些权限也是在⼀个叫struct stat这个结构体中结构体struct stat中的成员st_mode值包含了对⽂件的访问权限位,任何类型的⽂件都有访问权限(access permission)。

每个⽂件有9个访问权限,可以它们分为3类,u表⽰⽤户(所有者)、g表⽰组、o表⽰其他st_mode屏蔽含义S_IRUSR ⽤户读S_IWUSR ⽤户写S_IXUSR ⽤户执⾏S_IRGRP 组读S_IWGRP 组写S_IXGRP 组执⾏S_IROTH 其他读S_IWOTH 其他写S_ICOTH 其他执⾏那么问题来了既然有权限,我们怎么知道这些权限呢?当然这不是难事,⼀个access函数就可以解决问题了函数描述:按实际⽤户ID和实际组ID进⾏访问权限测试(1)头⽂件#include <unistd.h>(2)函数原型int access(const char *path, int amode);(3)参数a、path:⽂件路径b、amode:F_OK:测试⽂件是否存在R_OK:测试⽂件是否可读W_OK:测试⽂件是否可写X_OK:测试⽂件是否可执⾏(4)返回值成功:0失败:-1函数描述:为进程设置⽂件模式创建屏蔽字,并返回之前的值(1)头⽂件: #include <sys/stat.h>(2)函数原型: mode_t umask(mode_t cmask);(3)参数:cmask:(下⾯9个常量中的若⼲个按位或构成),例如:S_IRUSR|S_IRGRP //权限就为⽤户读和组读st_mode 屏蔽 含义 S_IRUSR ⽤户读 S_IWUSR ⽤户写 S_IXUSR ⽤户执⾏这是access 函数的具体⽤法的代码(argv[1]必须是⼀个已经存在的⽂件):#include <stdio.h>#include <unistd.h>#include <stdlib.h>int main(int argc,char **argv){if (argc != 2) {printf("argc must equal to two!\n"); exit(1); }if (access(argv[1],F_OK)) //判断⽂件是否存在 {printf("%s not existence!\n",argv[1]); exit(1); }if (access(argv[1],R_OK)) //判断⽂件是否可读 {printf("%s not read permission\n",argv[1]); } else {printf("%s have read permission\n",argv[1]); }if (access(argv[1],W_OK)) //判断⽂件是否可写 {printf("%s not write permission\n",argv[1]); } else {printf("%s have write permission\n",argv[1]); }if (access(argv[1],X_OK)) //判断⽂件是否可执⾏ {printf("%s not execute permission\n",argv[1]); } else {printf("%s have execute permission\n",argv[1]); } return 0;}View Code 在ubuntu下运⾏:当然了既然有权限,那么我们在创建⽂件的时候⽂件权限也是可以⾃⼰控制的,umask 函数⽤上场了S_IRGRP 组读S_IWGRP 组写S_IXGRP 组执⾏S_IROTH 其他读S_IWOTH 其他写S_ICOTH 其他执⾏(4)返回值:成功:之前的⽂件模式创建屏蔽字代码的具体⽤法如下:#include <sys/stat.h>#include <stdio.h>#include <sys/types.h>#include <fcntl.h>#include <stdlib.h>#define RRR (S_IRUSR|S_IRGRP|S_IROTH) //设置⽂件权限为⽤户读、组读、其他读int main(int argc,char *argv[]){umask(0); //不设置⽂件屏蔽字creat("text",RRR); //以⽤户读、组读、其他读的权限创建⽂件text.txt //这⾥也可以⽤openumask(S_IRUSR|S_IRGRP); //创建⽤户读、组出屏蔽字creat("text1",RRR); //最后创建出来的⽂件只有其他读的权限return0;}View Code既然⽂件可以创建,当然⽬录也是可以创建的,mkdir函数就是为创建⽬录⽽⽣的:函数描述:创建⼀个空⽬录,.和..⾃动创建(1)头⽂件#include <sys/stat.h>(2)函数原型int mkdir(const char *path, mode_t mode);(3)参数:a、path:⽂件名b、mode:是以下15种常量的按位或mode 含义S_ISUID 执⾏时设置⽤户IDS_ISGID 执⾏时设置组IDS_ISVTX 保存正⽂(粘着位)S_IRWXU ⽤户(所有者)、读、写和执⾏S_IRUSR ⽤户(所有者)读S_IWUSR ⽤户(所有者)写S_IXUSR ⽤户(所有者)执⾏S_IRWXG 组读、写和执⾏S_IRGRP 组写S_IWGRP 组读S_IXGRP 组执⾏S_IRWXO 其他读、写和执⾏S_IROTH 其他读S_IWOTH 其他写S_IXOTH 其他执⾏(4)返回值成功:0失败:-1创建⽬录的具体实现:#include <sys/stat.h>#include <stdio.h>#include <stdlib.h>#include <errno.h>int main(int argc,char *argv[]){if(mkdir("test.txt",S_IWOTH|S_IRUSR|S_IRGRP) == -1) /*以其他写、⽤户读、组读权限创建⼀个空⽬录*/{perror("mkdir");exit(1);}return0;}View Codeumask函数是在创建⽂时设置权限,那么在⽂件被创建之后还能修改权限吗?这时候chmod函数就派上⽤处了(1)头⽂件 #include <sys/stat.h>(2)函数原型 int chmod(const char *path, mode_t mode);(3)参数:a、path:⽂件路径b、mode:跟上⾯midir函数中的成员mode⼀样,其中的宏位或就可以了改变⽂件权限的例⼦:chmod("text",S_IRUSR|S_IRGRP|S_IROTH); //把text⽂件的权限改为⽤户读、组读、其他读既然权限可以改变权限,当然改个名字也是没问题的,⽤rename函数轻松解决问题:(1)头⽂件#include <stdio.h>(2)函数原型 int rename(const char *old, const char *new);(3)参数:a、old:⽂件原来的名字b、new:新的名字(4)返回值:成功:0失败:-1改变⽂件名字的例⼦:rename("text","hhtext"); //将名字为text的⽂件改为hhtext其实⽂件中还有个⼩操作就是可以在任何位置截断⽂件中的内容:truncate("test",3); //将⽂件test长度截断为3字节好了讲了那么多关于⽂件的权限的东西,是时候讲讲怎么打开⼀个⽬录和读⽬录中的的东西了:读⽬录中,要经过三步:打开⽬录、读⽬录、关闭⽬录,对应⽤到的函数分别为opendir、readdir、closedir。

操作系统——文件管理

操作系统——文件管理

操作系统——文件管理在我们日常使用电脑或其他电子设备时,文件管理是一项至关重要却常常被忽视的功能。

它就像是一个幕后的管家,默默地为我们整理、存储和检索各种文件,让我们在需要的时候能够轻松找到所需的信息。

想象一下,如果没有有效的文件管理,我们的电脑桌面可能会堆满各种文件,混乱不堪,寻找一个特定的文档可能会像大海捞针一样困难。

所以,了解文件管理的工作原理和重要性对于我们更好地利用电子设备是非常有帮助的。

那么,什么是文件管理呢?简单来说,文件管理就是操作系统中负责对文件进行存储、组织、检索、命名、共享和保护的一组功能和机制。

文件在操作系统中是如何被存储的呢?这就涉及到存储介质的概念。

常见的存储介质包括硬盘、固态硬盘、U盘、存储卡等。

当我们创建一个文件并保存时,操作系统会在这些存储介质上为其分配一定的存储空间。

这个存储空间的大小取决于文件的大小和类型。

为了方便识别和管理文件,操作系统为每个文件赋予了一个唯一的标识符,通常称为文件名。

文件名不仅要唯一,还应该具有一定的描述性,以便我们能够通过文件名大致了解文件的内容。

例如,“2023 年工作总结docx”这个文件名就能够让我们清楚地知道这是一份关于2023 年工作的总结文档。

文件管理系统还会对文件进行分类和组织。

常见的组织方式有文件夹结构。

我们可以根据文件的类型、用途、时间等因素创建不同的文件夹,并将相关的文件放入其中。

比如,我们可以创建“工作”“学习”“娱乐”等文件夹,然后在“工作”文件夹下再细分出“项目文档”“会议记录”等子文件夹。

这样的分类方式可以让我们更加清晰地了解文件的归属和用途。

文件的检索也是文件管理的重要功能之一。

当我们需要查找一个文件时,操作系统提供了多种检索方式,比如通过文件名搜索、文件内容搜索、按照修改时间搜索等。

这些搜索功能可以帮助我们快速找到所需的文件,节省大量的时间。

文件的共享也是我们经常会用到的功能。

在一个团队或家庭中,我们可能需要共享一些文件给其他人。

unix系统中的文件解析

unix系统中的文件解析

unix系统中的文件解析(附:find命令的简单实现)小生想从源码的角度解释一下Unix的文件系统。

(前天因为不能发在首页所以重发,为什么有3天的限制呢,真是的哦)首先一个文件在没有被打开的情况下,需要什么贮存在磁盘呢?一般而言,需要的是:1,一个目录项2,一个磁盘Inode项3,磁盘上的n块(n可为0)目录项是一个结构,最重要的元素一个为名字,一个为指向inode结构的指针。

另外目录的执行权是为了把文件名转换为Inode而存在的,具体的操作函数为namei。

(大家可参阅具体的源码)Inode项也是一个结构,v7实现如下struct dinode{unsigned short di_mode; /* mode and type of file */short di_nlink; /* number of links to file */short di_uid; /* owner's user id */short di_gid; /* owner's group id */off_t di_size; /* number of bytes in file */char di_addr[40]; /* disk block addresses */time_t di_atime; /* time last accessed */time_t di_mtime; /* time last modified */time_t di_ctime; /* time created */};元素所表示的内容相关的注释都已经说明了,不过小生还是介绍一下具体的内容di_mode说明文件的权限和类型di_nlink说明文件的链接数di_uid文件的用户,di_gid文件的组di_size逻辑上文件的大小(以字节计数)di_addr文件所占用的磁盘块的地址3个时间表示访问,修改和创建时间磁盘块没什么好说的,具体实现可能512字节一块当引用一个文件时(并非打开一个文件)可能需要的如下:1,一个内存Inode项内存inode项的v7实现可能如下:struct inode{Char i_flag;char i_count; /* reference count */dev_t i_dev; /* device where inode resides */ino_t i_number; /* i number, 1-to-1 with device address */unsigned short i_mode;short i_nlink; /* directory entries */short i_uid; /* owner */short i_gid; /* group of owner */off_t i_size; /* size of file */union {struct {daddr_t i_addr[NADDR]; /* if normal file/directory */daddr_t i_lastr; /* last logical block read (forread-ahead) */};struct {daddr_t i_rdev; /* i_addr[0] */struct group i_group; /* multiplexor group file */ };} i_un;};基本的内容和磁盘的一样,多出了一些内容,最重要的是多出了i_count用以记录引用次数当一个文件被打开时需要的内容如下:1,用户u区中的u_ofile数组中的一项2,文件表中的一项u_ofile存放的是指向具体的file结构中的一项的指针,所谓的文件描述符就是u_ofile数组的下标文件表v7的实现如下:struct file{char f_flag;char f_count; /* reference count */struct inode *f_inode; /* pointer to inode structure */union {off_t f_offset; /* read/write character pointer */struct chan *f_chan; /* mpx channel pointer */} f_un;};文件表最初似乎是为了共享偏移量(f_offset)而设计的,因为有注释就不多赘叙了,正如大家所知道的,用dup复制一个文件描述符和再次打开一个文件是不一样,具体的差别就是f_count的值。

操作系统的文件管理与存储优化技巧

操作系统的文件管理与存储优化技巧

操作系统的文件管理与存储优化技巧操作系统是计算机硬件和应用软件之间的关键接口,负责管理计算机资源以及提供用户与计算机交互的环境。

在操作系统中,文件管理和存储优化是其中一个重要方面。

本文将探讨操作系统中文件管理的基本原理和存储优化的技巧,并提供一些实用的建议。

一、文件管理的基本原理文件是操作系统中的重要资源,它们用于存储和组织数据,供应用程序读写和处理。

文件管理的基本原理包括文件的命名、组织和保护。

1. 文件命名文件命名是指为每个文件赋予一个唯一的标识符,以方便用户和系统进行文件的访问。

在选择文件名时,应遵循一些基本原则,如简洁明了、不重复、容易理解等。

此外,还应注意文件名的长度限制,以便在不同系统和应用程序中兼容。

2. 文件组织文件组织是指将文件以某种方式组织起来,以便用户能够方便地浏览和访问它们。

常见的文件组织方式包括层次结构、索引结构和无组织结构。

- 层次结构:使用目录层次结构将文件组织起来,形成树状结构。

这种方式可以方便地管理文件,但在大规模文件系统中可能导致性能问题。

- 索引结构:通过使用索引表,将文件的相关信息集中存储,以加快文件的查找和访问速度。

索引结构适用于大规模文件系统和文件共享环境。

- 无组织结构:不对文件进行明确组织,只通过唯一的文件名来访问文件。

这种方式适用于小型系统或用户个人电脑中的文件管理。

3. 文件保护文件保护是指保证文件的完整性和安全性,防止未经授权的访问和修改。

通过使用访问权限、加密算法和安全策略等手段,可以有效地保护文件免受恶意攻击和误操作。

二、存储优化技巧在操作系统中,存储优化是提高存储性能和资源利用率的重要环节。

下面将介绍一些实用的存储优化技巧。

1. 空间管理合理管理存储空间是保证系统性能和资源利用率的关键。

可以采用以下几种措施来优化存储空间:- 压缩文件:对不常用的文件或文件组进行压缩,以减少存储空间的占用。

- 删除冗余文件:定期清理不再使用的文件和临时文件,以释放存储空间。

UNIX系统管理-第十章:文件系统维护

UNIX系统管理-第十章:文件系统维护

UNIX系统管理-第十章:文件系统维护目标完成这一章,你将能做以下事情:使用df和du命令来监控文件系统的有效空间的大小通过清除不用的文件和core文件来清理文件系统空间通过修剪日志文件来清理/var文件系统从命令行扩展一个卷组从命令行扩展一个逻辑卷从命令行扩展一个文件系统1.监控磁盘使用情况使用df 命令检查文件系统的有效空间。

# df -kFilesystem kbytes used avail%used Mounted on/dev/vg00/lvol5 2949122615233135289/opt/dev/vg00/lvol424576193334978 80/home/dev/vg00/myfs1 16384 117414331 8/myfs1/dev/vg00/myfs2158931400629798/myfs2检查目录中的各个子目录使用的磁盘空间:# du -sk /myfs2/*844 /myfs2/data11327/myfs2/data21073/myfs2/data310757/myfs2/data44/myfs2/lost+found系统管理员有责任监视系统中的剩余磁盘空间的大小。

通常使用的命令是df。

显示的字段含义为:FilesystemKbytes k)usedavail文件系统中剩余的有效磁盘空间capacityMounted on如果加上-i选项,输出中会增加三个字段:iused inode的数目ifree inode数目%used文件系统当前使用的inode数目所占的百分比当你想要知道更多的细节,如一个目录下面使用了多少磁盘空间,你可以使用du命令。

默认情况下,du显示的单位为512字节的一个block。

这个命令的执行是递归的,意味着如果在当前目录执行这个命令,它会返回当前目录下所有的文件和各级子目录的信息。

主要的选项为:-k k字节为单位-s 只显示指定目录占用的总的磁盘空间。

UNIX常用命令-目录及文件操作命令

UNIX常用命令-目录及文件操作命令

[语法]:ls [-RadCxmlnogrtucpFbqisf1] [目录或文件......][说明]:ls 命令列出指定目录下的文件,缺省目录为当前目录./,缺省输出顺序为纵向按字符顺序排列。

-R 递归地列出每个子目录的内容-a 列出所有文件,包括第一个字符为“.”的隐藏文件-d 若后面参数是目录,则只列出目录名而不列出目录内容,常与-l选项连用以显示目录状态。

-C 输出时多列显示-x 横向按字符顺序排列-m 输出按流式格式横向排列,文件名之间用逗号(,)分隔-l 长列表输出,显示文件详细信息,每行一个文件,从左至右依次是:文件存取模式链接数文件主文件组文件字节数上次修改时间其中文件存取模式用10个字母表示,从左至右的意义如下:第一个字母表示文件种类,可以是以下几种情况:d 为目录文件l 为链接b 为块文件c 为字符型文件p 为命名管道(FIFO)- 为普通文件后面9个字母分别表示文件主、同组用户、其他用户对文件的权力,用r表示可读,w 表示可写,x 表示可执行。

如果是设备文件,则在文件字节数处显示:主设备从设备。

-n 与-l选项相同,只是文件主用数字(即UID)显示,文件组用数字(即GID)表示-o 与-l选项相同,只是不显示文件组-g 与-l选项相同,只是不显示文件主-r 逆序排列-t 按时间顺序排列而非按名字-u 显示时间时使用上次访问时间而非上次修改时间-c 显示时间时使用上次修改i节点时间而非上次修改时间-p 若所列文件是目录文件,则在其后显示斜杠(/)-F 在目录文件后加’/’,在可执行文件后加’*’-b 文件名中若有非打印字符,则用八进制显示该字符-q 文件名中的打印字符用’?’表示-i 显示节点号-s 显示文件长度时使用块长度而非字节长度-f 将后面的参数解释为目录并列出其中的每一项-1 每行仅列一项[例子]:ls 列出当前目录下的文件ls -al /bin 以长列表的形式列出目录/bin 下的所有文件,包括隐藏文件[语法]: pwd[说明]:本命令用于显示当前的工作目录[例子]:pwd 显示出当前的工作目录1.3 cd[语法]: cd [目录][说明]:本命令用于改变当前的工作目录,无参数时使用环境变量$HOME 作为其参数,$HOME 一般为注册时进入的路径。

UNIX系统(二)设备、文件管理

UNIX系统(二)设备、文件管理

3、索引节点表 、
Buf主要包括以下信息: Buf主要包括以下信息: 主要包括以下信息
b_addr: b_addr:缓冲区内存地址 b_dev: 缓冲区对应的设备信息: b_dev : 缓冲区对应的设备信息 : 高字节表 示设备类号, 示设备类号,低字节表示同类设备的编号 b_blkno: b_blkno:缓冲区对应的物理块号 b_back和av_forw,av_back:链指针, b_forw, b_back和av_forw,av_back :链指针, 用于连接两个双向队列。 用于连接两个双向队列。 b_flags:标志信息,反映缓冲区的使用情况。 b_flags:标志信息,反映缓冲区的使用情况。
2、自由buf队列 自由buf队列 buf
系统把空闲缓冲区对应的buf组成空闲buf队 系统把空闲缓冲区对应的buf组成空闲buf队 buf组成空闲buf 也称为自由buf队列。 buf队列 列,也称为自由buf队列。 这个队列是双向循环链表结构。 这个队列是双向循环链表结构。 对自由buf buf队列采用先进先出的管理方案 对自由buf队列采用先进先出的管理方案 回收一个缓冲区时, 回收一个缓冲区时,将其插入队尾 分配缓冲区时, 分配缓冲区时,总是从队首摘取一个缓冲区 分配给申请者。 分配给申请者。
写操作
写是指把某个内存区的信息传到缓冲区, 写是指把某个内存区的信息传到缓冲区,然 后把缓冲区的信息写到指定的物理设备去。 后把缓冲区的信息写到指定的物理设备去。 但当一次写操作未写满缓冲区时(小于 小于512 但当一次写操作未写满缓冲区时 小于 字节),就采用延迟写,即不急于写到设备 字节 ,就采用延迟写, 去,而是把这个缓冲区的标志位置上延迟写 的标志, 的标志,表示具体写操作延迟到以后的某个 时该进行。 时该进行。
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
UNIX操作系统的文件管理
一、UNIX文件系统的基本工作原理


1、UNIX文件的逻辑结构及分类 UNIX 系统中文件的逻辑结构采用所谓无结构的 流式文件,即是把文件视为一个无内部结构的字 符流。,并把它们分为: (1) 一般文件 (2) 目录文件
由文件的目录组成的文件称为目录文件。
在 UNIX 里,为了加快文件目录的搜索速度, 便于实施文件共享,而把这些内容划分为两部 分: 一部分称为该文件的文件控制块(或索引节点) inode ,它包含了文件的长度、物理位置、文 件组、文件类型、存取权限、共享信息、管理 住处等内容; 另一部分仍称为该文件的目录,它只含文件名以 及 相 应 inode 节 点 的 编 号 ( 见 图 ) 。 因 此 , UNIX 的目录文件虽也是由文件的目录组成, 但相比之下要比通常所说的目录文件简单许多。

UNIX 在树型结构的基础上增加交叉连接部分, 以达到文件共享的目的。在 UNIX 系统中,是通 过文件的 inode 节点来实现文件共享勾连的,并 且只允许勾连到代表一般文件的叶节点上去。由 图18可知,wang和lee共享文件f2。
二、UNIX文件系统的数据结构综述


在UNIX文件系统的实施过程中,涉及到多种数 据结构。有一类数据结构用于对文件的静态管理, 因此都分布在文件所在的存储设备上,它们包括 外存文件控制块inode、目录,以及存储资源管 理信息块filsys三种; 另一类数据结构用于文件打开时的管理,因此都 出现在内存,它们包括内存文件控制块inode、 打开文件控制块file、以及进程打开文件表三种。


(3) 文件目录中的勾连

为了实现文件共享,UNIX允许对一般文件节点 实行交叉连接,这称为勾连。它是通过在同一 文件系统中的两个不同目录项里填入同一个外 存inode节点编号来实现的,图9-25中的虚线处 反映的正是这种勾连。譬如说,一般文件的原 有路径名为 /a31 ,则在目录文件中就应有一目 录项,其文件名为 a31 ,对应的外存 inode 编号 为n。如果再给它另起一个路径名/a0/bx31,则 在目录文件a0中应该新设置一个目录项,它的 文件名部分填入 bx31 ,它的外存 inode 编号仍 填为n。另外,在编号为n的外存inode里,将inlink 的值加 1 。于是文件系统中就有两个目录 项同时指向这一个inode ,实现了对文件a31的 不同名共享。
(3) 文件系统的目录结构

在UNIX文件系统里,基本文件系统和子文件系统都独立 采用树型带勾连的目录结构。所谓树型,即它们各自都 有一个根目录文件,在根目录文件中所列的文件,可以 是一个目录文件,也可以是一个一般文件或特殊文件。 这样一层层地发展下去,就形成了一个通常意义下的树 型文件目录结构。在这种结构下,叶节点为一般文件或 特殊文件,中间节点为目录文件。图18是UNIX文件系统 的目录结构图,我们以方框代表目录文件,圆圈代表一 般文件或特殊文件。

当某进程欲打开一个文件时,首先在自己 user 结构的 打开文件表里申请一个打开文件号 fd (即找到一个 uofile[ ]中的空表目),随之在系统打开文件控制块表里 申请一个 file 结构,且将其位置 fp 填入 u-ofile 表目中。 然后在内存 inode 表里找到该文件的内存 inode ,或申 请一个内存 inode ,并将位置信息填入相应 file 中的 finode, i-count 加1。这样,如果该文件的内存 inode 原 先就在内存inode表中,那么现在这个进程则又一次通 过同一路径名不同路径名将它打开。由于它们都有自 己的file结构,所以它们对这个文件可以持有不同的操 作要求,拥有各自的读、写指针,从而形成了通过不 同的file结构,使用一个内存inode的共享形式。这种共 享在 file 结构里的 f-count 都为 1 ,但因大家都指向同一 个内存inode,故内存inode里面的i-count则大于1(有 几个file结构指向它,它的i-count就为几),图22描述 了这一情形。
文件系统磁盘存储区的分布图




每一个文件的inode节点占用32个字节,因此每一个inode 块包含16个文件控制块。这些inode顺序编号,一个文件 占用了某inode,则其编号就成为这个文件的内部标识, 第1号inode是专门用于根目录文件的。 数据结构filsys 共有12 项内容,下面给出与我们讲述有关 的六项。 (1) s-isize inode区占用的盘块数; (2) s-fsize 盘块总数; (3) s-nfree 直接管理(也就是s-free[100]指向)的空闲块 数; (4) s-free[100] 空闲块索引表 (5) s-ninode 直接管理的空闲inode节点数; (6) s-sinode[100] 空闲inode节点索引表。 至于如何通过filsys来对空闲inode和空闲盘进行具体管理, 详情见后面关于UNIX文件系统资源管理综述部分。




一个文件可以被同一进程或不同进程、用同一路径名不同路径名、 具有同一特性或不同特性(读、写、执行)同时打开。做为内存 inode ,基本上只包含文件的静态信息(如文件的物理结构、勾连 情况、存取权限等),没有记录下一个文件被打开时的动态信息。 为此,UNIX又在系统占用的内存区里开辟一张表)——打开文件控 制块表,简称file表,共有100个表目,每一个表目称做一个打开文 件控制块file。主要内容有 (1) f-flag打开文件的特性,指明对文件的读、写要求 (2) f-count共享该file的进程数 (3) f-inode指向对应于此打开文件的内存inode 每当打开一个文件时,都要在该表里申请分配一个file,形成这个打 开文件的控制块。
6、进程打开文件表

在 进 程 的 user 结 构 里 , 设 有 一 个 整 型 数 组 uofile[15] ,它被称为该进程的打开文件表。在进 程打开一个文件时,分配到一个打开文件控制块 file,就把这个控制块的地址填入u-ofile[ ]的一个 元素里。于是,这个打开文件就和它在u-ofile[ ] 中占据的位置形成一个对应关系,这个位置就是 打开文件号。图 21 给出了 UNIX文件系统中各数 据结构之间的关系。

3、存储资源管理信息块 文件系统所在存储设备上的存储资源,主要有 两个用途,一是用来存放外存文件控制块inode, 一是 用 来存 放 文件 信 息或 扩 展的 地 址索 引表 (当文件是大型的巨型的时,就需要这样做)。 为了能对盘块的使用情况加以管理,UNIX将这 些管理信息集中放在一个数据结构 —— 存储资 源管理信息块filsys中。filsys总是固定在1#盘块 上,这一盘块通常称作该文件系统的管理块。 这样,整个磁盘空间的安排情况就如图 20 所示。




(1) i-count 内存inode访问计数。若为0,表示此节点为空闲, 某文件被打开时,其内存inode里的此项就加1。 只有所有用户都关闭了此文件,以使i-count为0 后,这个文件才被真正关闭。 (2) i-number 与此内存inode相对应的外存inode编号。
5、打开文件控制块file和file表

4外存 、内存文件控制块 inode和内存inode表 inode记录了一个文件的属性和有关信息。可以想象,在对某一
文件的访问过程中,会频繁地涉及到它,于是它就要不断来回于内、 外存之间,这当然是极不经济的。为此,UNIX在系统占用的内存区 里开辟了一张表——内存inode表(或活动文件控制块表、活动索引 节点表),该表共有100个表目,每个表目称为一个内存文件控制块 inode,当需要使用某文件的信息,而在内存inode 表中找不到其相 应的inode时,就申请一个内存inode,把外存inode的大部分内存拷 贝到这个内存inode 中,随之就使用这个内存 inode 来控制磁盘上的 文件。在最后一个用户关闭此文件后,内存inode的内容被写到外存 inode,然后释放以供它用。 内存inode的结构基本上与外存inode相同。增加的有关项目有:

共享打开文件的另一种情形是由父进程创建子 进程引起的。在 UNIX 中,当父进程创建一个 子进程时,先要继承父进程的 u-ofile 表的全部 内容。这样它和父进程使用同一个file结构,对 这个文件有相同的操作要求和读写指针。所以, 这种共享打开文件表现为通过共享同一个file结 构来体现,图23描述了这一情形。由此可知, 在 UNIX 里提供了两种文件共享的方式,第一 种是在目录结构里通过勾连,对同一文件提供 不同路径名,以达到能够异名共享的目的;第 二种是在打开文件结构里,通过共享同一个file 结 构 或 共 享 同 一 个 内存inode而实现对打开文件的共享。
2、目录和目录文件


(1) 目录
UNIX中的每个文件都有一个目录项,目录项中记录了文件的名字以及该 文件对应的外存inode的编号。文件名是一个文件的外部标识,而这个文 件的外存inode编号,则是它的内部标识。可以看出,文件的目录项建立 起了文件内、外部标识之间的对应关系:根据文件名找到它的目录项,由 目录项的外存inode编号找到文件控制块inode,从而获得该文件的信息。 (2) 目录文件 UNIX视每张目录表为一目录文件。作为一个文件,它有自己的名字以及 对应的外存inode。要注意的是,每个文件系统(基本的或子文件系统) 都有一个根目录文件,它的外存inode总是放于文件存储设备上inode区中 的第一个,于是保证很容易从它出发,到达树型目录结构上的的存储空间,每个 盘块的容量为512字节,因此存放目录文件的盘块中,每一盘块可以存放 32个文件的目录。有了这些,UNIX文件目录的树型结构可以细化成如图 19所示。

三、UNIX文件的物理结构

相关文档
最新文档