61阅读

unix文件系统-当UNIX文件系统的卷资源表处于图示状态时,画图关于回收和分配物理块的卷资源表状态

发布时间:2017-11-03 所属栏目:Unix&大型机系统

一 : 当UNIX文件系统的卷资源表处于图示状态时,画图关于回收和分配物理块的卷资源表状态

当UNIX文件系统的卷资源表处于图示状态时,画图关于回收和分配物理块的卷资源表状态

下面是两道一样类型的题,答案我已经给出来了,马上要期末考试了,悲剧的我居然对着答案都看不懂,跪求大神帮帮忙解释一下每一步的具体含义以及主要思想是什么,如果答得好我还可以追加的,答得好再追加50个,决不食言

unix文件系统 当UNIX文件系统的卷资源表处于图示状态时,画图关于回收和分配物理块的卷资源表状态相应的答案:

unix文件系统 当UNIX文件系统的卷资源表处于图示状态时,画图关于回收和分配物理块的卷资源表状态

unix文件系统 当UNIX文件系统的卷资源表处于图示状态时,画图关于回收和分配物理块的卷资源表状态相应的答案

unix文件系统 当UNIX文件系统的卷资源表处于图示状态时,画图关于回收和分配物理块的卷资源表状态

针对第一道题来说答案申请的s-free对应的1和free对应的709,以及后面709指向的100那一竖趟是怎么得出来的?

还有分配的98、304..147、256又是怎么来的?

他们分配数的理论是什么

当UNIX文件系统的卷资源表处于图示状态时,画图关于回收和分配物理块的卷资源表状态的参考答案

私信给你了,看到了吗?解释的很详细,写了很久的,如果采纳就给分吧,辛苦答题,谢谢

二 : unix 文件系统

1

将应用程序从一台UNIX机器移植到另一台UNIX机器意味着要移植所有这三部分。如果目标机的体系结构和源机器的相同,目标代码就可移植。如果体系结构不同,就要重新编译源程序。新机器上的编译器要将源代码转换成新机器的机器指令,但它在生成机器代码时仍可以使用相同的系统调用。这对应用程序和实用程序同样如此。

Shell脚本类似于汇编语言中的宏。本书前面章节中已经讨论过这部分内容。当读者想要操作系统逐个轮流执行应用程序时,可以定义多个步骤。每个步骤应指明应用程序或实用程序的运行。该执行要满足一定的条件!因为包含脚本和系统调用的shell命令在这两台机器上相同(这里假定先称其为"UNIX"),所以能够很方便地移植如工资薪水这样的应用程序。如果都要移植,就要注意编程语言中的DBMS接口指令。如果所用的数据库相同,那么就不会有什么问题。

所有这些看上去很好。但现实中,不同版本的UNIX存在很多差别。遗憾的是,这些差别并不局限于UNIX内部或实现细节,但它们符合系统调用及其接口。在某些情况下,用户接口还有轻微差异。这增加了可移植性的难度。

假定UNIX内核只分成两部分:信息管理和进程管理。内存管理可以立刻连接到进程管理,由进程管理驱动。因此,假定内存管理是进程管理的一部分。

可以将大量不同类型的设备连接到运行UNIX的机器上。UNIX内核的信息管理部分包含针对不同设备的驱动程序。当制造出新设备的时候,设备制造商或UNIX操作系统的供应商就会提供支持这些设备的驱动程序。"设备无关的I/O"这个概念极大地推动了这个过程。UNIX中的设备被当作文件。这句话实际上是什么意思呢?UNIX系统的根目录下有一个子目录,名为"/dev",该目录包含多个文件,每个文件对应一个设备。每个文件有类似于普通文件中定义的访问权限。

每个设备文件都很短,它包含该设备的具体特征细节信息。现在考虑一下UNIX中的通用设备驱动程序,在特定时刻这些特性可以作为参数提供给这些通用设备驱动程序以获取"定制的"设备驱动程序。当然,事情并非像前面的概括的那样轻松。但人们可以为设备编写至少类似的通用驱动程序。如果这样的驱动程序是可用的,就可以简单地添加设备。因此,只需在/dev目录下为该设备创建一个文件即可。如果设备有大量不同的特性,也许就要改动通用设备驱动程序或是为/dev目录下创建的文件编写相应的新文件。

例如,设备可以是类似终端这样的字符设备,也可以是类似于磁盘这样的块设备。每个设备都需要运行特定的驱动程序,并提供读写数据用的特定内存缓冲区。因此,对任何设备I/O而言,都要指明设备类型、特性、驱动程序的地址以及为设备保留的内存缓冲区。关于该设备的这些内容以及其他细节按照预定格式或布局存储在/dev目录下该设备的设备文件中。

2

在UNIX中,如果想要向特定的设备写数据,就要向/dev目录下该设备的设备文件提交进行写操作的系统调用。用户应按照编程语言语法提交一个常用指令。例如,他也许想要给打印机写数据。对应该指令,编译器针对/dev目录下该设备的设备文件生成写操作系统调用。写向该设备文件的系统调用是智能的。在指令运行期间,它提取出包含设备特性和设备驱动程序地址的设备文件的内容,利用该信息调用所需的设备驱动程序等。当为系统添加新设备时,编写该设备的设备驱动程序,并在/dev目录下创建对应的"设备文件"。这就是本书中提到在UNIX中将设备当作文件的含义。

不需要一直使用机器上的所有硬件和设备。记住:需要的硬件和设备越多,操作系统就越大,因为操作系统要包含和加载那么多的驱动程序,要为它们创建很多的缓冲区。因此,通常只为系统指定所需的硬件和设备。该过程被称作"系统生成"(SYSTEM GENERATION)。

UNIX中文件系统是层次结构型的。稍后再讨论它的逻辑实现。UNIX进程要么运行在用户模式下,要么在内核模式下。当发生中断(例如,由于I/O操作完成或定时器时钟中断)或进程执行系统调用时,运行模式从用户模式转换到内核模式。此时,内核开始处理某些例程,除了它们是在内核模式下运行之外,当时运行的进程仍是相同的进程。

进程有不同的优先级,它们可以"智能地"变化。这样,随着时间的推移,受进程约束的I/O就要比受进程约束的CPU具有更高的优先级。具有相同优先级的进程严格按照循环等待法获取自己的CPU时间片。

如果在没有内存可用的情况下想要执行较高优先级进程,在UNIX中常会用到两种技术:一种是交换,将整个进程镜像换出(除了它驻留在内存的部分)。另一种技术是请求页面交换,只将某些页面换出,并且随即创建新进程。这种情况下,这两个进程都继续执行。如今,请求页面交换技术更流行。

内核维护用于管理进程的不同数据结构。例如,它维护一个名为u区(U-area)的数据结构,该数据结构类似于前面讨论的进程控制块(Process Control Block,PCB)。每个进程有一个u区。内核还要为每个进程维护内核堆栈。因此,对每个进程而言,同内核堆栈一样还有一个用户堆栈(User stack)。这些堆栈分别用于进程的用户模式和内核模式,用于存储返回地址或系统调用/函数的参数。有趣的是:用户进程的虚拟地址空间不止包括进程的用户部分,还包括与该进程相关的某些内核数据结构。如果进程处于内核模式,它就可以访问整个地址空间;但如果进程处于用户模式,它就只能访问用户地址空间的用户部分。进程的用户部分包括以下元素或区域。

文本(即编译后的机器指令或代码,例如,COBOL的编译过程区)。

数据(例如,作为COBOL数据区中的FD或工作存储区定义的数据)。

堆栈(用于存储子程序返回地址和参数)。

3

记住:这些表只是逻辑层的描述。具体的UNIX实现也许要决定在物理层上分割或合并不同的表。文本、数据和堆栈在UNIX中被当作区域(region)。它类似于段。例如,UNIX中多数编译器生成可重入的(reentrant)文本,也就是多个用户可以用该文本的唯一副本。代码很稳定,在运行期间不需要修改。为了实现不同区的共享,就要共享不同的数据结构(例如,每个进程区表)。

图13-3描述了UNIX的不同模块及其相互关系。

4

13.4 UNIX文件系统

13.4.1 文件系统的用户观点

UNIX实现了层次结构化文件的系统。在该方案中,目录中可以包含多个文件和子目录。磁盘被分成多个区。每个分区有自己的文件系统。文件系统开始于一个倒置树顶部的根目录。这个根目录下包含多个目录,每个目录又都包含许多文件/子目录等。如图13-4所示。在该图中,矩形代表目录,圆圈代表文件。

5

在UNIX中,文件是字节流,也就是说UNIX中根本没有记录这个概念。读取定长为500字节记录的应用程序可以向UNIX内核发送请求,以便在它想要读取第一个、第二个、第三个等记录时,通过相对字节号(Relative Byte Number,RBN)0-499、500-999、1000-1499等逐个读取字节。内核会将RBN先转换成逻辑块号(Logic Block Number,LBN),然后再转换成物理块号(Physical Block Number,PBN),之后向磁盘控制器提交必要的指令用以确定读/写磁头的位置,然后再读取想要的扇区。本书已经详细介绍过这个转换过程。因此,将"字节流"转换成记录以及转换为更进一步的字段完全留给应用程序完成。

13.4.2 不同类型的文件(1)

UNIX操作系统识别以下4类文件。

1. 常用文件

常用文件可以是常见的文本文件或二进制文件。这里"文本"一词指的是英语中使用的文本。在此不要将其和包含编译代码的进程文本混淆。文本文件可以包含所有的源程序或使用字处理程序编写的文档。这些文本文件通常只包含ASCII码。UNIX操作系统中有一个名为cat的命令,该命令可以在屏幕上显示文本文件的内容。

另一方面,二进制文件包含编译好的程序以及所有其他非文本信息。不必说,二进制文件的任何字节,任一由8位组成的256个组合都可能存在,不管这些组合根据ASCII惯例是否有意义。因此,cat命令不能用于显示二进制文件(cat命令一次得到8位,并且在显示前根据ASCII表翻译这8位信息)。UNIX提供了另一个名为od的命令,它可以显示编译好的对象或二进制文件。od是Octal Dump的英文缩写。od使用程序获得二进制文件,并通过每次提取3位将该文件中的位转换成可打印的八进制字符。该实用程序可用于详细的检查/调试。在根目录下,有一个名为"UNIX"的文件,它包含UNIX自身的二进制代码或目标代码。可以使用"od/UNIX"命令以八进制的形式来显示UNIX自身的文件信息。

6

2. 目录文件

在UNIX操作系统中,目录也被当作文件。它认为目录是单个文件或多个文件。这表明目录像一个包含多条记录或条目的文件。每个文件、目录中的子目录都有一个条目。条目包含下面的文件/子目录的符号名以及一个指向另一个记录的指针或名为"索引节点"(index node,inode)的数据结构。"inode"保存了与文件/目录相关的信息,如所有者、访问权限、不同的创建和使用情况、修改日期以及用于定位和检索分配给该文件/目录不同块的地址。因此每个文件、目录或子目录包括根目录在内都有一个定长的索引节点记录。索引节点全保存在磁盘上,它们按照0、1、2等顺序编号,这个数字编号作为定位包含文件/目录信息的索引节点的指针。

可以再次参照图13-4。图13-5给出了对应图13-4中所有文件、目录以及子目录的索引节点。这与前面介绍的基本文件目录(Basic File Directory,BFD)很相似。为了让读者更好地理解它们之间的对应关系,虽然图13-5中给出了其对应关系,但实际上索引节点同BFD条目一样都不包含符号文件名。符号名实际上存储在一个名为符号文件目录(Symbolic File Directory,SFD)的文件中,如图13-6所示。

图13-6给出了图13-4中所有目录的目录项。这与前面研究的符号文件目录(SFD)很相似。由图13-5中的"类型"字段可以清晰地看到这一点。例如,索引节点1对应图13-4中所示的目录A。图13-5中的"类型"字段显示这是目录,而不是文件。图13-5中的"地址"字段是包含SFD的文件所对应的磁盘块地址。然而,如果该索引节点对应的是文件而不是目录,那么该"地址"字段就是文件自己所对应的磁盘块地址。

例如,图13-6中索引节点等于1的A的目录给出了A1和A2以及它们的索引节点。如果使用这些编号跟踪图13-5中索引节点号条目,就会发现A1(它的索引节点为4)是一个目录,而A2(它的索引节点为5)是一个文件。诚如所知,"类型"字段指明了这一点。对这两者而言,指向它们的磁盘块地址或指针是在索引节点自身中维护的。如果对索引节点等于4的A1根据该地址读取分配给A1目录文件的块,那么就可以得到图13-6(e)所示的A1目录。现在可以逐条读取目录A1的内容(每个条目是定长的,在某些实现中该长度是14个字符),从而可以查看A1中的任一文件或目录。现在以文件或目录的符号名为键,进行表搜索而访问A1中任一目录或文件的索引节点号。

这之后,可以重复读取该索引节点、获取指针或可以得到实际块的索引节点中的地址这个过程。如果它是A1中的目录,那么就要循环重复该过程,从而遍历层次结构中的全部位置(这就是为什么在UNIX将目录当作文件的原因)。如果它是A1目录中的文件,地址字段就直接指向分配给该文件的数据块。内核现在可以根据该数据块执行地址转换,从而找到要读取的扇区。然后,内核可以指挥控制器读取那些扇区,读出要用的数据。

7

每个目录有两个固定的条目--一个对应"."条目,另一个对应".."条目。"."表示相同的目录。对它的索引节点编号是针对相同目录的。例如,在图13-6(f)中针对C1的目录,'.'条目保存了7。这是C1目录的索引节点编号,如图13-5和图13-6(d)所示。

'..'对应父目录及其相应索引节点号。例如,目录A1的'..'指明inode编号为1。这是图13-5和13-6(b)所示的A的目录索引节点号。图13-6(b)揭示了A是A1的父目录。图13-6(a)中根目录的'..'给出了inode的编号为0,因为假定根目录就是自身的父目录。所以上溯也就只能到根目录为止。

每个用户有一个主目录。该目录要在系统知道用户时就已经定义好了。此时,用户的主目录按用户名存储在/etc/passwd文件中。"创建用户"的程序提示了 主目录。用户一登录系统后,主目录就成为工作目录或当前目录。当用户登录系统时,查询/etc/passwd文件,然后将用户放置到主目录中。任何时候,用户操作所在的目录都被称作"工作目录"或"当前目录"。UNIX有一个"cd"(更改目录)命令。用户通过该命令可以切换到新目录。例如,参见图13-4,如果将A1定义为用户的home目录,命令"cd /C/C1"就可以将用户移动到该目录。此外,/C/C1被称作绝对路径。此时,C1成为用户当前目录。使用"pwd"命令可以找到当前目录。 8

13.4.2 不同类型的文件(2)

如果坐在终端前的用户想要指定一个文件,通常有两种方式可以指定该文件。一种是相对路径名,它可以根据当前目录指定。另一个是绝对路径名,它是从根目录开始指明。通常,不需要输入任何路径名就可以访问当前目录中的文件。

例如,再次参照图13-4,如果A1是当前目录,而且如果希望列出该目录中的文件,就使用UNIX的"ls"命令。

系统会显示以下内容:

A11

A12

注意:在"ls"命令中,没有必要提供路径名。

9

另一方面,如果用户想要在当前目录仍旧是A1的情况下,列举目录C2中的文件,他要提交这样的命令:

ls /C/C2

系统会显示以下内容:

C21

C22

这种情况下,/C/C2是绝对路径名。如果用户想要列出目录A的内容,当他还在当前目录A1中,用"ls .."(相对路径名)或"ls /A"(绝对路径名)即可。这两者被认为是等价的。".."指的是A1的父目录,本例中A1的父目录也就是图13-4所示的目录A。注意:".."的使用方法。将其和图13-6(e)给出的A1内容进行比较。在表顶部,有一个针对".."的条目。这是对应A1的父目录。图13-4说明这是目录A。如果想要访问父目录,就会用到".."。针对相对路径名的命令也是采用这样的工作方式。

类似的,如果人们想要从A1也就是当前目录中列出C2目录的内容,他就可以使用"ls ../../C/C2"(相对路径名)或"ls /C/C2"(绝对路径名)。在相对路径名中,第一个".."将系统指向目录A,第二个".."将其指向根目录。之后,"/C/C2"将系统指向C2目录(在相对路径名和绝对路径名情况下都是如此)。

通常,以"/"开始的路径名是绝对路径名,所有其他都是相对路径名。

UNIX提供了另一个功能,也就是链接。链接允许用户对同一个文件使用两个以上的路径名。因此,可以将同一个文件看作属于两个或多个目录。换句话讲,有了链接,就有了包含一个索引节点的唯一物理文件,而这个物理文件可以有多个符号名,(符号)目录中那些条目指向同一个索引节点。

现在再次考虑图13-4。如果要从A1(如它现在所在的位置)以及目录C1访问文件A12,那么需要创建C1到A12的链接。图13-7描述了这种情况。在完成链接之后,有两个链接到该共享文件的绝对路径名。它们分别是:A/A1/A12和/C/C1/A12。实际上,在目录C1中,可以用另一个名字调用相同的文件。如果假定这个名字是F1,那么绝对路径名/A/A1/A12和/C/C1/F1相同。它们都指向唯一的只有一个索引节点的物理文件(本例中该物理文件的索引节点为11,如图13-5所示)。

链接可以实现文件的共享使用,并且可以消除在其他目录中复制同一文件的必要性,而在其他目录中复制相同文件也许很浪费空间。解除链接可以删除以前创建的链表。UNIX提供了系统调用及命令进行链接和解除链接。

10

要点:索引节点号为11的同一个文件A12被称作是来自C1目录的F1。因此,解析路径名/A/A1/A12和/C/C1/F1会得到同一个物理文件。

3. 特殊文件

第3类文件是特殊文件。特殊文件是由UNIX维护的,它允许用户将I/O设备当作文件处理。通常情况下,对磁带、磁盘、终端或打印机这样的I/O设备而言,UNIX在"/dev"目录中维护着一个特殊的文件,也就是在根目录下的"dev"目录中保存了所有这些特殊文件。

如果应用程序向终端提交一个"write"(写)指令,UNIX使用的系统调用就和用于写文件的系统调用相同。两者唯一的差别在于这种情况下文件是针对特定设备的特殊文件。对不同 11

假定需要将文件R从D2复制到D1下的目录U,在MS-DOS或VMS中,可以使用的命令就是:

cp D2:R D1:/X/U/R 或cp D2:R /X/U/R (如果D1是隐式的)。

12

现在复制文件R就是一项很简单的工作,通过"统一"文件系统中一个简单的命令即可实现:

cp /Y/R /X/U/R

UNIX为用户提供了一个选择,让其可以在预先指定的时间加挂或卸载文件系统(例如在上夜班的时候)。UNIX保存了一个配置文件,该文件包含了这些时间和指令。后台进程(被称为daemon)不断检查存储的时间,并在特定时间加挂文件系统。它使用"mount"或"unmount"命令执行该任务。另一种方式就是坐在终端前的系统管理员可以显式地使用"mount"或

"unmount"命令完成相同的工作。这些命令在内部提交所用的系统调用,从而执行期望的工作。

加挂通常是在系统管理员引导启动UNIX时完成的。如果要在一个文件系统中支持所有有自己目录的用户,那就会很难。想象一下,每个有包含自己文件系统的移动硬盘的用户或学生。在这种环境中,根据学生的要求加挂/卸载文件系统,UNIX可以支持大量的用户,而文件系统大小可以超过特定限制。因此,有了该功能,UNIX可以支持多个移动硬盘。

加挂功能为系统管理员提供了按照自己的需要改变或调整自己文件系统的灵活性。同样地,它还增加了安全性,因而可以有效地防止在一天当中的某个时刻某些用户使用系统。

13.4.4 重要的UNIX目录/文件(1)

前面已经概括性地介绍了层次结构文件系统。现在介绍UNIX维护的一些重要的目录和文件。这些是UNIX操作系统支持的目录和文件。图13-11给出了其中的一些目录/文件。 13

(1) ('/')"/"是文件系统的根目录。

(2) /bin (二进制)

该目录包括UNIX实用程序的编译后可执行的或二进制代码。有时候,这些实用程序对不同的用户很有用。不是所有的实用程序都保存在/bin目录中。记住:UNIX实用程序有两种形式。一种是二进制(编译的)文件。这些实用程序运行速度快。另一种是shell脚本。这些也是可执行文件,但它们并不是编译好的形式或二进制形式。shell脚本在运行时执行,它们是一次性命令。因此从术语角度而言,它们被当作"解释性"的。Shell脚本不在/bin目录中。一些通用的二进制文件保存在/bin目录中,如图13-11所示。

现在深入学习这些内容。

① /bin/ls

/bin/ls是用于列出目录内容的实用程序。例如,如果在根目录中输入ls命令,由该命令得到的结果如图13-12所示,它对应于图13-11中根目录下的子目录。

14

几乎每个终端用户都会大量使用该实用程序。当在运行的UNIX系统中的命令解释器shell中提交该命令时,shell进程使用该系统调用定位对应该命令的二进制可执行文件。shell在/bin目录中找到该命令。/bin目录包括不同的符号名及其对应的索引节点。内核将"ls"作 15

UNIX在它的内部的数据结构中为每个用户保存了执行该命令需要用的这些细节信息。再次的,在本例中也要先定位"who"命令的二进制代码,然后加载,最后再执行该命令。

③ 其他实用程序

/bin/mv是更改文件名的实用程序。它也可用于将文件移动到新目录中。旧文件及其名称不再存在于旧目录中。

/bin/cp将文件复制到新目录中。旧文件依旧保存在旧目录中。本例要创建新的物理文件。内核要分配新的磁盘块,然后为该文件创建新的索引节点。在旧目录(源目录)中保存的同时,目标目录现在给出了符号文件名以及对应该文件的新索引节点号。

(3) /UNIX

/UNIX以可执行的二进制的形式包括UNIX内核真正的代码。当系统启动时,将/UNIX从磁盘读到内存中,然后开始启动系统。实际上,系统先读取/boot文件,接下来再读取/UNIX。

(4) /usr

/usr是一个很重要的目录,所有用户都属于这个目录。默认情况下,所有的用户目录都是/usr目录的直接子目录,但对user-A、user-B、user-C等,用户可以组织另一个级别的目录(如图13-11所示的"users"目录)。每个目录下面可以包含一个目录层次。

16

除了用户目录之外,/usr还有3个主要的子目录--/usr/lib、/usr/bin和/usr/tmp。"lib"代表库,"bin"代表二进制,"tmp"代表临时文件。有趣的一点就是所有这些目录都在/usr目录中,当然也是根目录/.的直接目录。因此,有两个保存二进制文件的bin目录:/bin和/usr/bin。存在这两个目录没有任何原因。实际上,人们可以在/usr/bin或/bin存储所有的库文件。在SunOS操作系统中,这两个目录链接在一起,这意味着,从逻辑上讲,这两者只会被SunOS当作是一个目录。

/usr/lib目录存储如C、FORTRAN这类编程语言的库文件。

/tmp目录存储 stores 程序运行期间创建的暂时文件。例如,使用"ed"编辑文件时就会生成一个临时文件/tmp/e00512。这个临时文件保存了正在编辑的文件的副本,而不是对原始文件进行处理。当系统启动时,会自动清除/tmp目录。然而,如果用户在/tmp目录中使用如"e00512"这样的相同名称,就会有问题。为此,"ed"实用程序为创建的临时文件选择了一个奇怪而且不常用的名字,如"e00512"。

13.4.4 重要的UNIX目录/文件(2)

(5) /lib

/lib包括C编译器的主要内容,如/lib/cpp、C预处理器以及/lib/libc.a和C的子程序库。

(6) /etc

该目录包括各种用于管理系统的重要文件。其中一些列举如下。

(7) /etc/passwd

该文件包括登录系统时所需的基本信息。它包括对应每个用户的大量记录。每个用户的记录包括以下字段:

username(用户名):这不需要做任何解释。

Password(密码):这是用户登录系统时必须提供的密码的加密形式。该字段可以是空的,但为安全起见,密码最好不为空。用户可以使用"passwd"命令更改自己的密码。

pw-age(密码寿命):这是一个改动密码有效时间的可选字段。该字段指明强制用户更改自己密码的时间。登录系统后,系统检查密码是否"到期"。如果密码到期,系统强制用户更改密码,系统提示用户输入新密码,接受新密码并在该文件的password字段中更新该密码。

userid(用户id):这是数字形式的id,对每个用户都是唯一的。

grouPid(组id):这是用户所属的group的id。

idstring(id字符串):这是完整的用户名。

17

homedir:这是用户登录系统后,自动放置用户的主目录。此时,将其复制到用户的u区。如前所述,这之后,用户可以很容易地从当前目录移动到其他目录或是列表等。当在系统中创建用户时,内核确认该用户的主目录,并由系统管理员将其与该用户的用户名、密码等一起输入,然后保存在/etc/passwd中。

command(命令):这是登录系统后,系统立刻执行的命令。典型地,这里指定要使用的如/bin/sh或/bin/csh的shell。登录系统后,内核搜索/etc/passwd文件,获取该命令,并调用该命令。这就是大多数时候用户登录系统后立刻看到shell提示符($)的原因。然后,特定用户可以按照自己的需求运行程序,例如登录系统之后可以立刻运行采购订单(PO)入口程序,这里用户需要指定该程序的路径名。这就是要做的全部工作。一旦用户登录系统,操作系统会立刻调用和启动PO入口程序。假定当天特定用户只使用特定屏幕,在航班、银行或零售业中就可以用到这个概念。这会节省大量的时间。

② /etc/motd

/etc/motd是包含用户登录系统时显示在终端上信息的文件。登录过程中的进程提取该信息,并显示该信息。系统管理员可以通过一个命令设置该消息。因此用户登录系统时可以看到如"Hello!Happy New Year!"这样的登录消息。

③ /etc/fsck

/etc/fsck包括一个检查文件系统一致性的实用程序。通常在系统引导阶段完成检查工作。这种不一致性是由断电或硬件故障引起的。该程序会检查目录、子目录以及文件的所有索引节点,从而确保不同目录和文件之间的链接是正确的,以及分配给不同块的彼此链接也是正确的。该程序还要对空闲块和坏块进行检查。为了进行检查,它要遍历多个条目。

④ /etc/mount

如前所述,/etc/mount实用程序用于加挂文件系统。

⑤ /etc/umount

如前所述,/etc/umount实用程序用于卸载文件系统。

⑥ /etc/group

/etc/group文件包括在任何UNIX安装中存在的所有组。任何文件都有3类用户:

Owner(所有者)、Group(组)和Others(其他的)。可以为这几类分别授权不同的读(r)、写(w) 和执行(x)权限。例如,所有者可以有全部的"rwx"权限,组只有"r"和"x"权限,其他的只有"r"权限。/etc/group文件当作所有组的主文件。如果内核为任一文件创建或引用任一组,该组首先要存在于/etc/group这个主文件中,从而满足是一个有效的组。

⑦ /tmp

18

/tmp目录保存如编辑器这样的不同实用程序运行时产生的所有临时文件。

⑧ /dev

/dev目录包括不同的特殊设备文件。每个设备都有这样一个对应的文件。该文件包括设备驱动程序地址(直接地址/间接地址),以及不同参数。因此,当需要向设备写某些数据时,使用常用系统调用向文件"写"内容,除了这里的文件是对应该设备的特殊设备文件之外,没什么不同的。内核内部执行该系统调用的过程是通过合适的参数调用期望的设备驱动程序。这就是UNIX将这些设备当作文件的方式。

13.4.5 文件系统内部结构(1)

1. 综述

如前所示,一个磁盘可以分区从而包含多个文件系统。另外,使用mount(加挂)命令可以将一个文件系统扩展到多个物理磁盘上。从逻辑上讲,UNIX中的文件系统的布局结构如图13-14所示。读者可以认为文件系统分为4个不同的逻辑部分,如图所示。

文件系统中第一部分第0块预留给引导块。对文件系统而言,这涉及到引导过程,第一个块包括引导程序。机器加电之后,硬件自动读取包含引导程序的引导块。典型地,该引导程序包含一条读取较长引导程序的指令,或是读取UNIX内核的指令。即使磁盘上有多个文件系统,但也只有一个文件系统有这个引导块。在所有其他文件系统中,这个块是空的。

第二部分或第二个块被称作超级块。它充当文件系统头。它包括与文件系统相关的信息。任一文件系统在使用之前都要加挂到根目录上。当使用mount(加挂)命令时,文件系统的超级块被读到内核的内存中。因此,当UNIX开始运行的时候,对内核而言,所有文件系统的所有超级块在缓冲区内存中都是可用的。超级块不一定就是一个块的大小。通常它要比一个块大。"超级块"是个逻辑名称。

19

三 : 解析Unix文件系统知识

大家对于如何使用Unix系统应该有了一定的感性认识。为了下一步更深入的了解掌握Unix文件及使用的一些技巧,这里再对相关的应知内容做一补叙与准备。

1、Unix文件系统分类

Unix操作系统可由多个可以动态安装及拆卸的文件系统组成。Unix文件系统主要分为两大类:根文件系统和附加文件系统。

根文件系统是Unix系统至少应含有的一个文件系统,它包含了构成操作系统的有关程序和目录,由“/”符号来表示。附加文件系统是除根文件系统以外的其它文件系统,它必须挂(mount)到根文件系统的某个目录下才能使用。本文中若无特别声明,则都是针对根文件系统来进行说明的。

2、Unix文件类型

在Unix文件类型 共分为四种:

(1)普通文件(-):又分为文本文件、二进制文件、数据文件;
(2)目录文件(d);
(3)设备文件(l);
(4)链接文件(b/c):又可分为块设备文件、字符设备文件。

普通文件中的文本文件主要包括ASCII文本文件、英文文本文件和一些可执行的脚本文件等;二进制文件主要是32位的可执行文件等;数据文件主要是系统中的应用程序运行时产生的文件。

目录文件是用来存放文件目录的。

设备文件代表着某种设备,一般放在/dev目录下。它分为块设备文件和字符设备文件,块设备文件以区块为输入输出单元,如磁盘;字符设备文件是以字符作为输入输出单元,如串口。

链接文件类似于Windows系统中的快捷方式,它指向链接文件所链接着的文件。

值得注意的是,与Windows系统不同,Unix系统中目录本身就是一个文件,另外文件类型与文件的后缀名无关。
不同类型的文件有着不同的文件类型标识(可使用“ls -l”命令来进行查看),它们使用下列符号来表示相应的文件类型:
-  普通文件
d  目录文件
b  块设备文件
c  字符设备文件
l   链接文件

3、Unix文件类型 目录结构

Unix系统采用树型的目录结构来组织文件,每一个目录可能包含了文件和其他的目录。该结构以根目录“/”为起点向下展开,每个目录可以有许多子目录,但每个目录都只能有一个父目录。

4、Unix文件名称

Unix文件名称的最大长度为256字符,其对字母大小写敏感,比如file1和File1是表示两个不同的文件。要说明的是,如果用“.”作为文件名的第一个字母,则表示此文件为隐含文件,如“.cshrc””文件(对于此文件,后文将有介绍)。

值得说明的是,当创建了一个目录或文件时所赋予它的名字并非它的全名。一个目录的全名就是它的完整路径名,而一个文件的全名应该是由根目录到该文件所在目录的这条路径上的所有目录名再加上此文件的名称组成,相互之间用“/”分隔。如有一文件resume处于目录/export/home/ray中,则该文件的全名应为:/export/home/ray/ resume。

此外,对于路径名还会有绝对路径和相对路径这样两个概念。绝对路径是指一个目录或文件的全路径名,即以根目录为起始的路径。相对路径则以用户当前工作目录为起始,它是一个相对于用户的工作目录的文件路径。由于从根目录到用户的主目录的绝对路径可能会比较复杂,在csh和bash中可以使用一种特殊字符“~”来代表用户的主目录的绝对路径名。

另外,“.”可用来表示当前工作目录,“..”可用来表示当前工作目录的父目录。

说明:
工作目录是指用户当前正在其中进行操作的目录。

用户主目录是Unix文件系统管理员为每位用户分配的使用空间,该目录名与用户登陆账户同名。用户如以任何除“root”外的账户登入系统,则用户自动登入的就是该用户主目录。

在了解掌握上述有关Unix文件的知识之后,下一步就可深入到Unix系统命令集合及其使用技巧。

本文标题:unix文件系统-当UNIX文件系统的卷资源表处于图示状态时,画图关于回收和分配物理块的卷资源表状态
本文地址: http://www.61k.com/1081766.html

61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1