操作系统·第五章 文件系统自测题:文件类型+目录结构+存储管理+UNIX/Linux(含超详细解析)
本文主要介绍了文件系统的相关概念和Linux系统中的文件管理机制。内容包括文件分类(系统文件、普通文件、特殊文件)、文件组织形式(流式文件、记录式文件)、物理存储方式(连续、链接、索引文件)以及目录结构(单级、二级、树形)。重点解析了Linux系统的文件权限表示(如rwxr-xr--)、磁盘空闲区管理技术(位示图、成组链接法)和虚拟文件系统VFS的作用。此外,还涉及文件共享机制(硬链接、软链接)、
第五章 文件系统 自测习题
一、单项选择题
1.按文件用途来分,编译程序是( C )。
A. 用户文件
B. 档案文件
C. 系统文件
D. 库文件
解析:
按文件用途分类,编译程序用于将高级语言程序翻译成目标代码,属于支撑操作系统和软件开发运行的工具,通常存放在系统目录下(如 /usr/bin/gcc),因此是系统文件。
A 用户文件(由用户创建的数据或程序)
B 档案文件(用于历史记录或备份)
C 系统文件(正确)
D 库文件(提供可调用的函数集合,编译程序本身不是库文件)
2.在UNIX/Linux系统中,用户程序经过编译之后得到的可执行文件属于( B )。
A. ASCII文件
B. 普通文件
C. 目录文件
D. 特殊文件
解析:
在 UNIX/Linux 系统中,文件类型分为普通文件(-)、目录文件(d)、特殊文件(字符设备 c、块设备 b)等。用户程序编译后得到的可执行文件是一个普通文件,因为它包含机器代码和数据,可以读取、执行,但不属于目录或设备文件。
A ASCII 文件(属于普通文件的一种,但可执行文件通常是二进制格式,不限于 ASCII)
B 普通文件(正确)
C 目录文件(用于存放文件名列表)
D 特殊文件(与 I/O 设备相关)
3.特殊文件是与( C )有关的文件。
A. 文本
B. 图像
C. 硬件设备
D. 二进制数据
解析:
在 UNIX/Linux 系统中,特殊文件(又称设备文件)分为块设备文件和字符设备文件,用于代表硬件设备(如磁盘、终端、打印机)。用户通过读写这些文件来与设备进行 I/O 操作。
A 文本(属于普通文件)
B 图像(也属于普通文件)
C 硬件设备(正确)
D 二进制数据(普通文件的一种形式)
4.操作系统是通过( A )来对文件进行编辑、修改、维护和检索。
A. 按名存取
B. 数据逻辑地址
C. 数据物理地址
D. 文件属性
解析:
操作系统通过文件系统提供的接口,使用户能够按文件名(而非物理地址)对文件进行编辑、修改、维护和检索。用户只需记住文件名,操作系统负责将文件名映射到存储位置并进行相应操作。
B 数据逻辑地址(用于内存管理,不是用户操作文件的直接方式)
C 数据物理地址(对用户透明,不需要直接使用)
D 文件属性(描述文件的元信息,不是操作文件的主要方式)
5.下列描述不属于文件系统功能的是( C )。
A. 建立文件目录
B. 提供一组文件操作
C. 实现对磁盘的驱动调度
D. 管理文件存储空间
6.文件的逻辑组织是( B )的文件组织形式。
A. 在外部设备上
B. 从用户观点看
C. 虚拟存储
D. 目录
7.由一串字符序列组成,文件内的信息不再划分可独立的单位,这是指( A )。
A. 流式文件
B. 记录式文件
C. 顺序文件
D. 链接文件
8.数据库文件的逻辑结构形式是( C )。
A. 流式文件
B. 档案文件
C. 记录式文件
D. 只读文件
解析:
数据库文件由若干记录组成,每个记录包含多个字段(如姓名、年龄、学号),属于记录式文件(或称结构化文件)。文件系统按记录进行组织和管理。
A 流式文件(视为无结构的字节流,如文本文件、可执行文件)
B 档案文件(按用途分类,非逻辑结构分类)
C 记录式文件(正确)
D 只读文件(按访问权限分类,非逻辑结构分类)
9.在以下的文件物理存储组织形式中,常用于存放大型系统文件的是(A )。
A. 连续文件
B. 链接文件
C. 索引文件
D. 多重索引文件
解析:
A. 连续文件
文件数据存放在磁盘上一段连续的物理块中。
优点:顺序访问速度快,管理简单(只需记录起始块号和长度)。
适用于:大型系统文件(如操作系统内核、库文件、程序文件等),因为这些文件大小相对固定、创建后很少修改,且系统启动或运行时需要高效顺序读取。
缺点:不易动态增长,容易产生外部碎片。
B. 链接文件
文件数据存放在多个不连续的磁盘块中,通过指针链接各块。
优点:离散分配,无外部碎片,适合动态增长。
缺点:随机访问极慢(需顺序遍历链接指针),可靠性较低(一个指针损坏会导致后续块丢失)。
不适合大型系统文件:因为大型系统文件需要快速随机访问(如动态链接库的载入),且链接方式的访问效率太低。
C. 索引文件
为每个文件建立一个索引块(或索引表),其中存放该文件所有数据块的块号。
优点:支持随机访问(通过索引块直接找到任意块)。
缺点:对于非常大的文件,单级索引块容量有限(例如一个块只能存放几百个块号),无法覆盖超大文件;需要多级索引才能支持大型文件。
因此,单纯的索引文件(单级)不常用于存放超大型系统文件,而多重索引才是其扩展。
D. 多重索引文件
是索引文件的扩展,采用多级索引结构(直接索引、一级间接索引、二级间接索引等)。
优点:可以支持非常大的文件,随机访问快,适合数据库、大文件系统。
为什么不选 D?本题可能考虑 “常用于存放大型系统文件” 的最传统或最常见的方式。在早期或某些系统(如 UNIX 的某些实现)中,大型系统文件(如内核映像、系统库)很多是采用连续文件存放,因为系统文件在安装后大小固定、不常修改,而连续文件访问效率最高。
多重索引虽然适合大文件,但主要用于可动态增长的用户大文件(如日志、数据库),而不是强调“常用于”存放大型系统文件的场景。
10.链接文件解决了连续文件存在的问题,它( D )。
A. 使用指针存入主存,速度快
B. 适合于随机存取方式
C. 不适用于顺序存取
D. 提高了存储空间的利用率
11.文件系统为每个文件另建立一张指示逻辑记录和物理记录之间的对应关系表,由此表和文件本身构成的文件是(C )。
A. 连续文件
B. 链接文件
C. 索引文件
D. 逻辑文件
12.文件名与( B )的转化是通过文件目录来实现的。
A. 逻辑地址
B. 物理地址
C. 文件内部名
D. 文件记录
13.如果文件系统中有两个文件重名,不应采用( A )结构。
A. 单级目录
B. 树形目录
C. 二级目录
D. 非循环图目录
14.文件系统采用二级文件目录可以(D )。
A. 缩短访问存储器的时间
B. 解决同一用户间的文件命名冲突
C. 节省内存空间
D. 解决不同用户间的文件命名冲突
解析:
二级文件目录结构(也称为两级目录)包含主文件目录(MFD) 和用户文件目录(UFD)。每个用户有自己的 UFD,不同用户的 UFD 中可以存在同名文件,而 MFD 通过用户名区分不同用户。因此,二级目录主要解决不同用户之间的文件命名冲突,而不是同一用户内部(同一用户内部仍需通过 UFD 内部唯一命名解决)。
A 缩短访问存储器的时间(二级目录对存取时间无明显缩短,反而可能增加一次查找 MFD 的开销)
B 解决同一用户间的文件命名冲突(不能,同一用户内仍不能重名)
C 节省内存空间(二级目录并不以节省内存为主要目的)
D 解决不同用户间的文件命名冲突(正确)
15.当前目录是/usr/meng,其下属文件prog/file.c的绝对路径名是( D )。
A. /usr/meng/file.c
B. /usr/file.c
C. /prog/file.c
D. /usr/meng/prog/file.c
16.在下述文件系统目录结构中,能够用多条路径访问同一文件(或目录)的目录结构是( D )。
A. 单级目录
B. 二级目录
C. 纯树形目录
D. 非循环图目录
17.文件的存储空间管理实质上是组织和管理(C )。
A. 文件目录
B. 辅存已占用区域
C. 辅存空闲块
D. 进程控制块
解析:
文件的存储空间管理主要关注辅存(如磁盘)上空闲块的组织与分配,包括记录哪些块是空闲的、如何分配空闲块给文件、以及回收文件释放的块。这是存储空间管理的核心任务。
A 文件目录(用于文件名到物理地址的映射,不是存储空间管理的直接对象)
B 辅存已占用区域(确实占用但“管理”的重点是空闲块,而非已占用区域)
C 辅存空闲块(正确,核心是管理空闲块,以便高效分配)
D 进程控制块(进程管理内容,与文件存储空间管理无关)
18.在UNIX系统中,磁盘存储空间空闲块的链接方式是( D )。
A. 空闲块链接法
B. 位示图法
C. 空闲盘块表法
D. 空闲块成组链接法
解析:
UNIX 系统中,磁盘空闲块管理采用成组链接法。该方法将空闲块分组(如每组 100 个),每组用一个空闲块作为“组描述块”记录该组内所有空闲块的块号以及下一组的位置。这种方式结合了空闲块链表和位示图的优点,既支持快速分配/回收,又避免了空闲块链表过长的问题。
A 空闲块链接法(简单链表,UNIX 早期或某些小型系统使用,但不是 UNIX 经典方式)
B 位示图法(常见于其他系统如 Windows,UNIX 不是主要使用这种方法管理空闲块)
C 空闲盘块表法(需要大表,不常用)
D 空闲块成组链接法(正确,UNIX 典型方案)
19.用ls命令以长格式列目录信息时,若某一文件的特征在文件列表中按如下顺序显示在屏幕上: drwxrw-r-- 2 user gk 3564 Oct 28 10:30 /user/asD.h 则同组用户的访问权限是(D )。
A. 读和执行
B. 读、写、执行
C. 写和执行
D. 读和写
解析:
我们先解析文件属性字符串:
drwxrw-r--
各字段含义(从左到右):
1.第一个字符 d:表示这是一个目录(directory)。
2.第2-4字符 rwx:文件所有者的权限:读、写、执行。
3.第5-7字符rw-:同组用户的权限:读、写,没有执行(-表示无此权限)。
4.第8-10字符 r--:其他用户的权限:只读。
题目问:同组用户的访问权限是什么?
根据第5-7字符 rw-,同组用户权限为 读和写(无执行)。
因此,正确答案是:
D. 读和写 ✅
20.在UNIX系统中,某文件的使用权限设置为754,则表示(A )。
A. 文件主可读、写、执行
B. 同组用户仅能读
C. 其他用户可读、写、执行
D. 同组用户仅能写
解析:
UNIX 权限数字 754 的含义:
- 数字 754 分为三位:7(文件主)、5(同组用户)、4(其他用户)。
- 每个数字是 读(4)、写(2)、执行(1) 的和。
7 → 4+2+1 = 读、写、执行
5 → 4+1 = 读、执行(没有写)
4 → 4 = 只读
对应到选项:
A. 文件主可读、写、执行 ✅(7 对应 读/写/执行)
B. 同组用户仅能读 ❌(实际是读+执行,不是仅读)
C. 其他用户可读、写、执行 ❌(其他用户是 4 = 只读)
D. 同组用户仅能写 ❌(5 不含写)
21.下列属于文件保密机制的是( C )。
A. 建立副本
B. 定期备份
C. 设置口令
D. 文件的链接
二、判断题
1.可顺序存取的文件不一定能随机存取;但可随机存取的文件都可以顺序存取。(A)
A. 对
B. 错
解析:
顺序存取:按文件的逻辑顺序依次访问,如磁带。
随机存取:允许直接跳转到任意位置进行访问,如磁盘。
可顺序存取的文件不一定能随机存取:例如磁带上的文件只能顺序访问,不支持跳转。
可随机存取的文件都可以顺序存取:因为随机存取设备(如磁盘)本身就支持按顺序访问(只需按顺序读即可)。
2.一般的文件系统都是基于磁盘设备的,而磁带设备可以作为转储设备使用,以提高系统的可靠性。(A)
A. 对
B. 错
解析:
大多数文件系统确实设计用于磁盘设备(如硬盘、SSD),因为它们支持随机存取、快速读写。
磁带设备以顺序存取为主,读写速度慢,不适合作为日常工作用的文件系统存储介质。
但磁带设备容量大、成本低、可靠性高,常用于数据备份和转储(如定期将磁盘中的重要数据备份到磁带),以提高系统在数据丢失或损坏时的恢复能力。
3.操作系统在组织物理文件时根据存储介质的特性和用户选择的存取方法来决定存储结构。(A)
A. 对
B. 错
解析:
操作系统在组织物理文件时,需要综合考虑存储介质的特性(如磁盘支持随机存取、磁带仅支持顺序存取)和用户选择的存取方法(如要求顺序访问或随机访问),来决定采用哪种物理存储结构(如连续文件、链接文件、索引文件等)。例如:
对于磁盘介质且用户需要随机访问,可能选用索引文件或连续文件。
对于磁带介质或用户只要求顺序访问,可能选用链接文件或顺序文件。
4.在文件系统中,允许当某个用户打开一个共享文件后,其他用户也可以访问之。(B)
A. 对
B. 错
解析:
在操作系统的文件系统中,一个用户打开共享文件后,其他用户能否访问取决于该文件是否已经被打开且该用户的访问模式是否允许并发。
但如果用户以独占方式打开文件(如使用 O_EXCL 或某些系统下的加锁机制),则其他用户无法访问。
题目中的表述“允许……其他用户也可以访问之”意味着一定可以,但实际并非总是如此,因此说法不成立。
5.Linux文件分为普通文件、目录文件和用户文件三大类。(B)
A. 对
B. 错
在 Linux 系统中,文件分类通常分为:普通文件(-)、目录文件(d)、特殊文件(字符设备 c、块设备 b)、链接文件(l)、套接字文件(s)、管道文件(p) 等。题目中所说的“普通文件、目录文件和用户文件”并不正确,因为“用户文件”不是 Linux 文件类型中的标准分类(它属于按用途分类,而不是按文件类型分类),并且 Linux 的标准文件类型远不止这三类。
6.Linux的I节点是文件内容的一部分。(B)
A. 对
B. 错
解析:
在 Linux 文件系统中,I 节点(inode)是存储文件元信息的数据结构,主要包括文件大小、权限、时间戳、数据块指针等,它不是文件内容的一部分,也不包含文件名。文件内容存储在数据块中,而 inode 是独立于文件内容存放的(通常在磁盘的特定区域)。因此,该说法错误。
7.在Linux系统中,常采用单空闲块链接法来实施存储空间的分配与回收。(B)
A. 对
B. 错
解析:
在 Linux 系统中,常用的磁盘空闲块管理方法不是单空闲块链接法,而是 成组链接法。
单空闲块链接法(简单链表)效率较低,链表可能很长,且会导致大量磁盘 I/O。
成组链接法将空闲块分组,每组内记录下一组的位置,兼顾了效率和内存占用,是 UNIX/Linux 系统的经典实现方式。
8.Linux系统的一个重要特征就是支持多种不同的文件系统。(A)
A. 对
B. 错
解析:
Linux 系统通过虚拟文件系统(VFS,Virtual File System)机制,能够支持多种不同的文件系统类型,如 ext2/ext3/ext4、XFS、Btrfs、FAT、NTFS(通过驱动)、NFS(网络文件系统)等。用户可以在同一个系统中挂载不同文件系统的分区或设备,并统一通过 VFS 提供的接口进行访问。这是 Linux 系统的重要特性之一。
三、简答题
1、 UNIX/Linux系统中文件分为哪些类型?
在 UNIX/Linux 系统中,文件主要分为以下 7 种类型(可以通过 ls -l 命令的第一个字符识别):
1.普通文件(-)
包括文本文件、二进制可执行文件、数据文件等。这是最常见的一类文件,存储用户数据或程序代码。
2.目录文件(d)
用于存放文件名和对应的 inode 指针,用来组织文件系统的层次结构。用户通过目录文件访问其下的文件或子目录。
3.字符设备文件(c)
代表以字符流方式进行 I/O 的设备,如键盘、终端、串口。应用程序通过读写该文件与设备通信,不经过缓冲区。
4.块设备文件(b)
代表以数据块为单位进行 I/O 的设备,如硬盘、SSD、U盘。通常支持随机访问,并经过系统缓冲区。
5.符号链接文件(l)
类似于 Windows 下的快捷方式,指向另一个文件或目录。可以跨文件系统,删除原文件后链接失效。
6.套接字文件(s)
用于进程间网络通信(也可用于本地通信,如 Unix Domain Socket)。常见于 /var/run 等目录。
7.管道文件(p)
也叫 FIFO(命名管道),用于不同进程之间的单向数据流通信,遵循先进先出规则。
补充说明:
在 Linux 中,设备文件、符号链接、套接字、管道都属于特殊文件。
可以通过命令 stat 或 ls -l 查看文件类型标识符。
在早期的 UNIX 分类中,有时只强调普通文件、目录文件和特殊文件三大类,但现代 Linux 明确区分上述 7 种类型。
2、文件的逻辑组织有几种形式?
文件的逻辑组织(即用户视角下的文件结构)通常分为两种基本形式:
1. 流式文件(无结构文件)
特点:文件是一串连续的字节流,没有内部结构,用户或程序自行解析其含义。
例子:文本文件(.txt)、可执行二进制文件、日志文件。
操作:系统只提供对字节流的基本读写、定位操作,不识别记录边界。
优点:灵活、简单,占用空间小。
缺点:需要用户程序自己管理内部结构(如记录分隔、解析)。
2. 记录式文件(有结构文件)
特点:文件由若干逻辑记录组成,每个记录包含一个或多个字段(如学号、姓名、成绩)。记录可以是定长或变长。
例子:数据库文件、某些系统日志文件(按记录组织)。
操作:系统支持对记录的存取(如读第 i 条记录、按关键字查找)。
优点:便于管理和检索,适合批量数据处理。
缺点:灵活性较差,存储和解析开销相对大。
补充说明:
记录式文件又可分为顺序文件(按记录顺序存取)、索引文件(通过索引表快速定位记录)、索引顺序文件(结合顺序和索引)等组织方式,但这些属于逻辑组织的细化实现。
现代通用操作系统(如 Windows、Linux)对普通文件主要按流式文件处理,数据库系统则在应用层实现记录式组织。
总结:文件的逻辑组织形式是流式文件和记录式文件两种。
3、文件的物理组织形式主要有哪几种?各有什么优缺点?
文件的物理组织形式(也称文件的物理结构)是指文件在存储介质(如磁盘)上的存放方式。主要有以下四种:
1.连续文件(连续分配)
原理:文件数据存放在磁盘上一段连续的物理块中。
优点:
顺序访问速度快(只需一次寻道)。
实现简单,只需记录起始块号和长度。
缺点:
必须预先知道文件大小,不易动态增长。
容易产生外部碎片,导致内存/磁盘利用率低。
2.链接文件(链接分配,隐式链接)
原理:文件数据存放在多个不连续的磁盘块中,每个块包含指向下一个块的指针。
优点:
无外部碎片,可以充分利用磁盘空间。
适合文件动态增长(只需在末尾添加新块)。
缺点:
随机访问极慢,必须从第一块开始顺序读取。
一个指针损坏会导致后续块丢失。
额外的指针占用存储空间。
3.索引文件(索引分配)
原理:为每个文件建立一个索引块(或索引表),其中存放该文件所有数据块的块号。
优点:
支持快速随机访问(通过索引直接找到目标块)。
无外部碎片,适合动态增长。
缺点:
需要额外存储索引块,小文件浪费空间。
单级索引块大小有限,无法直接支持超大文件(需多级索引)。
4.多重索引文件(混合索引,如 UNIX inode)
原理:结合直接索引、一级间接索引、二级间接索引等,支持超大文件。
优点:
支持非常大的文件(可达数 TB 以上)。
兼顾随机访问和动态增长。
对小文件采用直接索引,减少开销。
缺点:
实现复杂,管理开销大。
间接索引需要多次磁盘 I/O(但通过缓存可缓解)。
- 总结对比表:
|
类型 |
随机访问 |
动态增长 |
外部碎片 |
适用场景 |
|
连续文件 |
支持 |
困难 |
有 |
大小固定的系统文件、CD-ROM |
|
链接文件 |
不支持 |
容易 |
无 |
顺序访问的大文件(如磁带备份) |
|
索引文件 |
支持 |
容易 |
无 |
需要随机访问的中小型文件 |
|
多重索引文件 |
支持 |
容易 |
无 |
大型通用文件系统(UNIX/Linux) |
4、一般说来,文件系统应具备哪些功能?
一般说来,文件系统应具备以下主要功能:
1. 文件的按名存取
用户只需提供文件名即可读写文件,不需要知道文件在磁盘上的具体物理位置。文件系统通过文件目录实现文件名到物理地址的映射。
2. 文件的组织与管理
支持文件的逻辑结构(流式文件、记录式文件)和物理结构(连续、链接、索引等)。
提供文件的创建、删除、打开、关闭、读、写、修改、复制、移动等操作。
3. 存储空间管理
管理磁盘(或其它存储介质)上的空闲块,分配和回收存储空间。
常用方法:空闲块链表、位示图、成组链接法等。
4. 目录管理
建立和维护目录结构(单级、二级、树形目录等)。
提供文件查找、重命名、路径解析等功能。
5. 文件共享与保护
允许多个用户或进程共享同一文件(如只读共享、读写共享)。
设置访问权限(读、写、执行),防止非法访问。
支持文件加锁(如共享锁、独占锁)。
6. 数据安全与可靠性
防止因系统崩溃、断电等原因造成的数据损坏。
提供备份与恢复机制(如日志文件系统、快照)。
检测并处理坏块、文件系统一致性检查(如 fsck)。
7. 文件操作的用户接口
提供系统调用(如 open、read、write、close、lseek、stat、chmod 等)供应用程序使用。
提供命令行接口(如 mkdir、ls、cp、rm、chmod)供用户操作。
8. 性能优化
通过缓冲区高速缓存(Page Cache)减少磁盘 I/O。
预读、延迟写、异步 I/O 等机制提高文件访问效率。
支持多种 I/O 调度算法。
总结:文件系统是操作系统中负责管理持久存储数据(主要是文件)的核心子系统,其功能覆盖了命名、存储、访问控制、安全保障、接口提供、性能优化等各个方面。
5、文件控制块与文件有何关系?
文件控制块(FCB,File Control Block)与文件的关系可以概括为:FCB 是文件在操作系统中的身份证与档案记录,而文件是实际存储在磁盘上的数据内容。
具体来说:
1. FCB 是文件存在的标志
当操作系统创建一个文件时,会同时为该文件建立一个 FCB。
FCB 中记录了文件的元信息(如文件名、类型、大小、物理地址、访问权限、时间戳等)。
没有 FCB,操作系统就无法感知、管理和访问该文件。
2. FCB 与文件的分离存储
FCB 存储在磁盘的特定区域(如目录文件、索引节点区),不占用文件数据区。
文件数据存储在磁盘数据区(普通数据块)。
FCB 中的“物理地址”字段指向文件数据所在的磁盘块。
3. FCB 负责“按名存取”
用户通过文件名访问文件时,系统先在目录中找到对应的 FCB。
从 FCB 中获取文件的物理位置、权限、大小等信息,然后才能进行读写操作。
4. 打开文件时的内存 FCB(或 vnode/inode)
文件被打开时,系统将磁盘上的 FCB 信息复制到内存中,并建立内存索引节点(如 Linux 的 inode 或 VFS 中的 vnode)。
同时增加打开计数器、读写指针等信息,用于进程间共享和文件操作。
5. 举例说明
假设有一个文件 /home/user/a.txt :
磁盘上有一个 FCB(或 inode) 记录了它的大小、权限、物理块地址等。
文件本身的内容(例如“Hello World”)存放在另外的磁盘数据块中。
删除文件时,系统先标记该 FCB 为无效,释放数据块,再将 FCB 回收。
总结:FCB 是文件的管理信息结构,文件是实际数据内容。两者缺一不可:没有 FCB,文件就是无法被识别的数据堆;没有文件数据,FCB 只是一个空壳。
6、文件系统中的目录结构有哪几种基本形式?各有何优缺点?UNIX/Linux系统中采用哪种目录结构?
文件系统中的目录结构主要有以下三种基本形式:
1. 单级目录结构
形式:整个系统只有一个目录,包含所有文件的文件名和FCB。
优点:实现简单,结构清晰。
缺点:
文件名必须全局唯一,不同用户不能有同名文件。
文件数量大时查找速度慢(线性查找)。
无法对文件进行分类组织。
2. 二级目录结构
形式:分为主文件目录(MFD) 和用户文件目录(UFD)。MFD记录用户名及指向其UFD的指针;每个用户有自己的UFD,存放该用户的文件。
优点:
不同用户可以使用同名文件(解决命名冲突)。
提高了文件查找速度(先找MFD再找UFD)。
易于实现用户间隔离。
缺点:
用户之间仍不能共享文件(除非复制或专门机制)。
无法实现用户内部的多级分类。
3. 树形目录结构(多级目录)
形式:目录和文件形成一个树状层次结构。每个文件或目录都有唯一的路径名(绝对路径或相对路径)。
优点:
支持多级分类,组织清晰。
允许用户在不同目录下使用同名文件。
便于文件共享(通过链接或路径访问)。
查找效率高(树形搜索)。
缺点:
实现复杂,需要路径解析和目录管理开销。
容易出现循环链接(需防范或检测)。
UNIX/Linux 系统中采用的目录结构
UNIX/Linux 采用树形目录结构(也是多级目录结构的一种具体实现)。
根目录为 /,其下包含 /bin、/home、/etc、/usr、/var 等子目录。
每个用户的主目录通常位于 /home/username。
支持绝对路径(如 /home/user/a.txt)和相对路径(如 ./a.txt、../doc/)。
通过链接文件(ln) 实现跨目录或不同文件名的共享访问。
补充:在 UNIX/Linux 中,目录本身也是一种特殊文件(类型为 d),其中存储的是文件名到 inode 编号的映射。这种树形结构既保留了二级目录的“用户隔离”优点(通过 /home/user 隔离),又提供了多级分类的灵活性。
总结:单级、二级、树形是三种基本目录结构,其中树形目录是当前主流操作系统(UNIX/Linux、Windows、macOS)采用的标准形式。
7、常用的磁盘空闲区管理技术有哪几种?试简要说明各自的实现思想。
常用的磁盘空闲区管理技术主要有以下四种,每种的核心实现思想如下:
1. 空闲块链表法(空闲链表法)
实现思想:将所有空闲磁盘块用链表串起来,链表头指向第一个空闲块,每个空闲块中包含指向下一个空闲块的指针。
分配与回收:分配时从链表头取出一块;回收时将释放的块插入链表头(或尾部)。
优点:简单,易于实现。
缺点:链表可能很长,遍历效率低;每个空闲块需要额外空间存储指针。
2. 位示图法(位图法)
实现思想:用一串二进制位(bit)映射磁盘上的每个物理块,1 表示空闲,0 表示已分配(或相反,具体看设计)。位示图可存储在内存或磁盘中。
分配与回收:分配时扫描位图找到第一个为 1 的位,将其置 0;回收时将对应位设为 1。
优点:查找效率高(可配合硬件指令),占用空间小(1 个 bit 对应一个块)。
缺点:位图本身需要占用内存空间(如 1TB 磁盘,4KB 块 → 约 32MB 位图)。
3. 空闲块表法(空闲表法)
实现思想:在内存中维护一个表格,每个表项记录一段连续空闲区的起始块号和块数。适用于连续分配方式的文件系统(如动态分区内存管理类似)。
分配与回收:分配时查找足够大的空闲区,分割后修改表项;回收时合并相邻空闲区。
优点:适合连续分配,分配和回收算法较灵活。
缺点:表的大小有限,频繁分配/回收可能导致表项过多。
4. 成组链接法
实现思想:将空闲块分组(例如每组 100 个块),每组内记录该组所有空闲块的块号,以及下一组的起始块号。第一组的信息常放在磁盘专用块(如超级块)中,并缓存到内存。
分配与回收:分配时从内存中的第一组取出一个空闲块号;若当前组用完,则读入下一组的信息。回收时将空闲块号放回当前组,若当前组已满,则把该组整体写入磁盘作为新的一组,并在内存中新建一组。
优点:兼顾了速度(内存中缓存一组)和容量(支持大量空闲块),无需遍历全盘。
缺点:实现复杂,需要维护分组结构。
- 总结对比:
|
方法 |
核心思想 |
适用场景 |
|
空闲块链表法 |
链表串起所有空闲块 |
简单系统、U盘等 |
|
位示图法 |
用二进制位映射块状态 |
通用文件系统(如FAT、ext) |
|
空闲块表法 |
表记录连续空闲区 |
连续分配的文件系统 |
|
成组链接法 |
分组存放,内存缓存一组 |
UNIX/Linux 经典方案 |
- 现代操作系统(如 Linux ext 系列)通常采用位示图(块组描述符)和成组链接思想的混合形式。
8、什么是文件的共享?文件链接如何实现文件共享?
什么是文件的共享?
文件共享 是指一个文件可以被多个用户或多个进程共同使用。
允许多个用户同时访问同一份文件(根据各自的权限进行读、写、执行等操作)。
目的:节省存储空间、避免数据冗余、便于协作和数据一致性的维护。
文件链接如何实现文件共享?
文件链接 是一种通过目录项直接或间接指向同一份文件数据来实现共享的技术。在 UNIX/Linux 系统中,主要分为两种链接方式:
1. 硬链接(Hard Link)
实现原理:
多个目录项(文件名)指向同一个 inode(文件索引节点)。
inode 中有一个 链接计数(link count),记录有多少个文件名指向该 inode。
创建硬链接时,在新的目录项中填入相同 inode 编号,并增加链接计数。
特点:
所有硬链接文件地位平等,没有“原文件”与“链接文件”之分。
删除任何一个硬链接,只是减少链接计数;只有当计数降为 0 时,系统才真正删除文件数据。
不能跨文件系统(因为 inode 编号在不同文件系统中可能重复,且语义不同)。
不能链接目录(防止出现目录环路)。
优点:
实现简单,共享文件不占用额外空间。
任意一个链接都可以直接访问文件内容,效率高。
2. 软链接(符号链接,Symbolic Link)
实现原理:
创建一个特殊文件(类型为 l),该文件中存储的是目标文件的路径(绝对路径或相对路径)。
访问软链接时,系统读取其内容,找到目标路径,再去访问目标文件。
特点:
软链接本身有自己独立的 inode 和数据块(存储路径)。
可以跨文件系统。
可以链接目录。
若删除目标文件,软链接会变成悬空链接(指向一个不存在的文件)。
访问效率比硬链接稍低(需要一次额外的路径解析)。
优点:
灵活性高,能跨文件系统、链接目录。
适用于动态共享、临时共享场景。
对比总结表
|
特性 |
硬链接 |
软链接 |
|
本质 |
多个目录项指向同一 inode |
一个特殊文件存放目标路径 |
|
跨文件系统 |
不能 |
能 |
|
链接目录 |
不能 |
能 |
|
原文件删除后 |
仍可访问(只要还有别的硬链接) |
失效(悬空链接) |
|
链接计数影响 |
增加 inode 的链接计数 |
不影响目标文件计数 |
|
实现效率 |
高(直接访问 inode) |
稍低(需路径解析) |
9、什么是文件保护?常用的保护机制有哪些?
什么是文件保护?
文件保护是指操作系统采取的一系列措施,防止文件被未授权的用户访问、篡改、删除或破坏。其核心目标是保证文件的安全性和完整性,在多用户、多任务环境下尤为重要。
常用的文件保护机制
主要有以下四类常用保护机制:
1. 存取控制矩阵(Access Control Matrix)
实现思想:用一个二维矩阵描述所有用户(或进程)对每个文件的访问权限。行代表用户,列代表文件,矩阵元素为权限(如读、写、执行、删除等)。
优点:理论上最完整、最灵活。
缺点:矩阵规模巨大(用户数 × 文件数),实际中几乎无法直接实现(稀疏)。
2. 存取控制表(ACL,Access Control List)
实现思想:每个文件附带一个存取控制表,表中记录了哪些用户(或组)对该文件拥有哪些权限。这是存取控制矩阵的压缩存储形式(只存储非空项)。
优点:灵活,可以为不同用户设置不同权限,粒度细。
缺点:当用户或文件数量很大时,ACL 本身也可能很长,管理复杂。
应用:Windows NTFS、NFSv4、某些 UNIX 文件系统(如 Linux 的 POSIX ACL 扩展)。
3. 权限位模式(Permission Bits / 文件访问控制)
实现思想:将用户分为三类:文件主(owner)、同组用户(group)、其他用户(other)。每类用户分别赋予读(r)、写(w)、执行(x) 三种权限(对于目录则含义略有不同)。权限用 9 个二进制位表示(例如 rwxr-xr--),常用 3 位八进制数表示(如 754)。
优点:简单、高效、存储开销极小(只需 9 位或 12 位,包括 setuid/setgid/sticky 位)。
缺点:权限粒度粗(无法对单个用户单独授权,只能按三类划分)。
应用:UNIX/Linux 系统的经典保护机制(ls -l 看到的就是它)。
4. 密码保护(口令/加密)
实现思想:为文件设置访问密码,或在存储时对文件内容加密。访问时需要输入正确密码或提供密钥。
优点:即使物理介质被盗,没有密码/密钥也无法读取内容(适用于高敏感数据)。
缺点:密码容易忘记或泄露;加密/解密带来性能开销;密码管理复杂。
应用:文件加密软件(如 GnuPG、BitLocker、VeraCrypt)、压缩包密码等
总结:文件保护的核心是控制谁、在什么条件下、对文件做什么操作。不同保护机制在灵活性、效率、复杂度之间做了权衡。UNIX/Linux 主要使用权限位模式 + ACL(可选),Windows 使用 ACL,高安全场景会叠加加密保护。
10、在UNIX/Linux系统中,如何表示一个文件的存取权限?
在 UNIX/Linux 系统中,一个文件的存取权限通过 9 个权限位(加上可选的 3 个特殊权限位)来表示,通常用 ls -l 命令查看。
1. 权限位的组成(9 个基本位)
分为三组,每组三个字符,依次为:
|
用户类别 |
权限位含义 |
字符表示 |
|
文件主(owner) |
读、写、执行 |
rwx |
|
同组用户(group) |
读、写、执行 |
rwx |
|
其他用户(other) |
读、写、执行 |
rwx |
例如:rwxr-xr--
文件主:rwx(读、写、执行)
同组用户:r-x(读、执行,不能写)
其他用户:r--(只读)
如果某个权限被禁止,对应位置显示 -。
2. 八进制数值表示法
每组权限用一个八进制数字表示(二进制权重:读=4,写=2,执行=1):
rwx = 4+2+1 = 7
rw- = 4+2+0 = 6
r-x = 4+0+1 = 5
r-- = 4+0+0 = 4
三个八进制数字分别对应文件主、同组用户、其他用户的权限。
例如 754 表示:
7 → 文件主 rwx
5 → 同组用户 r-x
4 → 其他用户 r--
3. 特殊权限位(附加在 9 位之前或单独表示)
|
特殊权限 |
作用 |
在 ls -l 中的显示 |
|
Setuid(4) |
执行时以文件主的身份运行 |
文件主执行位变为 s(原本为 x) |
|
Setgid(2) |
执行时以文件组的身份运行;对目录则新建文件继承目录组 |
同组用户执行位变为 s |
|
Sticky Bit(1) |
对目录:只有文件主/目录主/root 可删除其中文件 |
其他用户执行位变为 t |
例如 rwsr-xr-x:文件主有 rwx,但执行位是 s(Setuid 生效)。
11、什么是文件的备份?数据备份的方法有哪几种?按时机分,备份分哪几种?
什么是文件的备份?
文件备份 是指将文件系统中的数据复制到其他存储介质(如磁带、硬盘、云存储)上,以便在原始数据丢失、损坏或遭到破坏时能够恢复。备份的目的是保证数据的安全性和可恢复性,防止因硬件故障、人为误操作、病毒攻击、灾难事件等造成的数据永久丢失。
数据备份的方法(按技术方式分)
常见的数据备份方法有以下三种:
|
备份方法 |
实现思想 |
优点 |
缺点 |
|
完全备份 |
每次将所有选中的文件(或整个系统)完整复制到备份介质。 |
恢复最简单(只需要恢复一次),数据完整。 |
备份时间长,占用存储空间大,不适合频繁执行。 |
|
增量备份 |
只备份上一次备份(无论是完全还是增量)之后发生变化的数据。 |
备份速度快,节省存储空间。 |
恢复时需要依次应用最后一次完全备份和之后的所有增量备份,恢复时间较长。 |
|
差异备份 |
只备份上一次完全备份之后发生变化的数据。 |
恢复比增量快(只需一次完全备份 + 最近一次差异备份)。 |
随着时间推移,差异备份的数据量会越来越大。 |
示意图理解(假设周一完全备份,周一到周五变化情况):
完全备份:周一备份所有数据。
增量备份:周二备份周一以来的变化;周三备份周二以来的变化;…… 恢复时需依次应用周一全量 + 周二增量 + 周三增量 + ……
差异备份:周二备份周一以来的变化;周三备份周一以来的所有变化(包含周二已备份的);…… 恢复时只需周一全量 + 最近一次差异备份。
按备份时机分类
按触发备份的时间点,备份分为:
1.定期备份(定时备份)
按预设的时间周期自动执行(如每天凌晨 2 点、每周日凌晨)。
适用于日常数据保护,可结合完全、增量、差异备份策略。
例如:使用 cron 定时执行 rsync 或备份脚本。
2.实时备份(连续备份)
一旦数据发生变化,立即(或极短时间内)进行备份。
常见于高可用系统、数据库同步、云存储实时同步(如 MySQL 主从复制、Dropbox 实时同步)。
优点:数据丢失最少(RPO 接近 0)。
缺点:系统开销大,实现复杂。
3.手动备份
由管理员或用户在需要时手动触发。
适用于临时、重要操作前(如系统升级前、软件安装前)。
缺点是容易遗忘,不适合作为主要备份策略。
补充概念(结合“时机”更完整的分类)
在实际工程中,按时机分最常见的还是定期备份和实时备份。有些教材或文档还会提到:
间歇性备份:介于定期和实时之间,例如每隔几分钟/几小时触发一次。
触发式备份:由特定事件(如数据库日志写满、用户登出、系统空闲)触发。
但考试或基础课程通常只要求掌握定期和实时两种基本分类。
总结:
备份方法:完全备份、增量备份、差异备份。
按时机分类:定期备份(周期性)、实时备份(连续)、手动备份。
其中以定期备份和实时备份为两大主要时机类型。
实际生产环境中,常采用完全备份 + 增量备份或完全备份 + 差异备份的混合策略,并配合定期执行(如每周全量、每日增量)来平衡备份窗口、存储空间和恢复时间。
12、硬盘分区有哪三种类型?Linux可以安装在哪些分区上?
硬盘分区主要有以下三种类型:
1. 主分区 (Primary Partition)
定义与特点:这是硬盘上最基础、最直接的分区类型。它可以在 BIOS 或 UEFI 的启动过程中被操作系统识别,并且可以直接被用来安装和启动操作系统。
数量限制:在传统的 MBR 磁盘格式下,一个硬盘最多只能创建 4 个主分区。
激活与启动:在多个主分区中,必须将其中一个标记为“活动分区”,计算机才会从该分区启动。
2. 扩展分区 (Extended Partition)
定义与特点:它是一种特殊的主分区,本身不能直接存储数据或安装系统,只能作为容器来容纳“逻辑分区”。
出现的原因:为了解决 MBR 分区表只能分 4 个区的限制,你可以用扩展分区来突破这个数量瓶颈。
数量限制:一个硬盘最多只能有 1 个扩展分区。
3. 逻辑分区 (Logical Partition)
定义与特点:这是在“扩展分区”内部切分出来的逻辑驱动器(就是我们通常说的 D盘、E盘),用于日常的文件存储。
数量限制:理论上可以创建非常多个逻辑分区(在 Linux 中通常支持超过 10 个),具体数量取决于操作系统。
特性:不能直接用来启动操作系统,必须依托于扩展分区存在。
inux 可以安装在哪些分区上?
Linux 的安装非常灵活,主要取决于你使用的是传统的 Legacy BIOS 启动模式,还是现代标准的 UEFI 启动模式。
1. 在 UEFI 模式下(这是现代电脑的首选)
必须的分区:EFI 系统分区 (ESP)。这是一个特殊的分区,通常要求文件系统格式为 FAT32,用于存放系统的引导加载程序(如 GRUB)。
安装位置:Linux 的“根目录”文件 / 可以安装在 主分区 或 逻辑分区 上。实际上,Linux 通过挂载点机制可以无视分区类型,因此你几乎可以把它装在任意分区上。
2. 在 Legacy BIOS 模式下(传统老电脑)
必须的分区:一个标记为 “活动”的主分区。BIOS 启动时只会查找主分区中的引导记录。
安装位置:根目录 / 可以直接安装在这个活动的主分区上。当然,如果活动分区空间不够,你也可以将 / 拆分,比如把 /home 放到逻辑分区,但系统核心文件必须位于能被 BIOS 识别的主分区。
总结一下:
核心限制在于启动方式。一旦 BIOS/UEFI 找到了引导文件,Linux 强大的文件系统管理能力就能让你把系统文件装在主分区或逻辑分区上。
13、在Linux系统中,ext2文件系统的构造形式是什么?超级块的作用是什么?
在 Linux 系统中,ext2(第二代扩展文件系统)的构造形式是分组块结构。它将磁盘上的逻辑块划分为多个块组(Block Group),每个块组在物理上连续,并独立管理内部的元数据和数据,以减少文件碎片并提高可靠性。
一、ext2 文件系统的构造形式(布局)
一个 ext2 文件系统的磁盘布局如下(从开头到结尾依次为):
|
区域 |
说明 |
|
引导块(Boot Block) |
占用前 1024 字节(块 0),可能存放引导程序,即使不用也保留。 |
|
超级块(Super Block) |
描述整个文件系统的全局信息(大小、状态、块数、inode 数等)。 |
|
块组描述符表(Group Descriptors) |
每个块组对应一个描述符,记录该组的位图、inode 表、数据块的起始位置。 |
|
块位图(Block Bitmap) |
用二进制位表示该组内每个数据块是否空闲。 |
|
inode 位图(Inode Bitmap) |
用二进制位表示该组内每个 inode 是否空闲。 |
|
inode 表(Inode Table) |
存放该组内所有 inode 数据结构(每个文件/目录对应一个 inode)。 |
|
数据块(Data Blocks) |
存放文件的实际内容或目录项(文件名到 inode 的映射)。 |
每个块组都有自己独立的块位图、inode 位图、inode 表、数据块,但超级块和块组描述符表通常会在多个块组中保留备份(以防损坏)。
二、超级块(Super Block)的作用
超级块是 ext2/ext3/ext4 文件系统的元数据核心,存储在磁盘的固定位置(块组 0 的块 1 以及部分备份块组中)。它的主要作用包括:
1. 定义文件系统全局参数
文件系统大小(总块数、总 inode 数)。
块大小(1024、2048、4096 字节)。
每组的块数、每组的 inode 数。
文件系统状态(干净 / 已损坏)。
版本号、魔术数(用于识别文件系统类型)。
2. 定位关键数据结构
指向第一个块组描述符的位置。
记录根目录的 inode 编号(通常为 2)。
记录空闲块计数、空闲 inode 计数等。
3. 用于挂载与一致性检查
当系统挂载文件系统时,先读取超级块,验证是否为有效的 ext2 文件系统。
如果超级块损坏,可使用备份超级块(如 e2fsck -b 8193)进行恢复。
记录挂载次数、最后挂载时间、最后检查时间等,用于触发自动 fsck。
4. 支持文件系统特性
包含兼容性标志(是否支持大文件、扩展属性等)。
三、补充说明
为什么需要备份超级块?
超级块极易因磁盘坏道或意外覆盖而损坏。一旦损坏,整个文件系统将无法识别。备份超级块分布在其他块组中(如块组 1、3、5 等),可以手动恢复。
ext2 vs ext3/ext4:
ext3/ext4 在 ext2 的构造基础上增加了日志(Journal) 区域,用于记录元数据变更,提高崩溃恢复能力。但基本的“块组 + 超级块 + 位图 + inode 表”结构是一致的。
总结:ext2 文件系统采用分组块形式,将磁盘划分为多个块组独立管理。超级块是文件系统的“全局头信息”,记录了大小、状态、布局等元数据,并在多组中留有备份,用于挂载、识别、一致性检查及灾难恢复。
14、在Linux系统中,为什么要提供VFS?
在 Linux 系统中引入 VFS(Virtual File System,虚拟文件系统) 的核心目的是:对上层(用户进程)屏蔽不同底层文件系统的实现差异,提供一个统一的、抽象的接口模型。
简单说:让用户不管用什么文件系统(ext4、XFS、FAT32、NTFS、NFS 等),操作方式都是一样的(open、read、write、close)。
下面从几个关键角度解释为什么要提供 VFS。
一、解决“异构文件系统”的统一访问问题
现实世界中有很多种文件系统:
本地磁盘文件系统:ext2/ext3/ext4、XFS、Btrfs、FAT32、NTFS
网络文件系统:NFS、CIFS/SMB
特殊文件系统:procfs、sysfs、tmpfs、debugfs
如果内核没有 VFS,每个文件系统都有自己的接口规范,应用程序要针对不同文件系统写不同代码,这是不可行的。
VFS 的作用:
定义一组所有文件系统都必须实现的通用接口(如 read、write、mkdir、lookup 等)。内核中的具体文件系统负责将这些接口翻译为自己的底层操作。
二、实现“一切皆文件”的 UNIX 哲学
Linux 继承了 UNIX 的设计思想:几乎所有东西都抽象为文件(普通文件、目录、设备、管道、套接字、进程信息等)。
/dev/sda 是块设备文件,通过 VFS 的 read/write 访问。
/proc/cpuinfo 是 procfs 中的虚拟文件,通过 VFS 读取时实时生成 CPU 信息。
/sys/class/net/eth0/ 是 sysfs 中的内核对象,也通过 VFS 访问。
没有 VFS,这些“不是真正磁盘上的文件”的东西就无法像普通文件一样被统一操作(cat /proc/cpuinfo 将不可能存在)。
三、简化内核开发和文件系统实现
对内核上层(系统调用层):不需要知道底层是 ext4 还是 NFS,只需调用 VFS 接口(如 file->f_op->read())。
对新文件系统实现者:不需要重新实现整套系统调用逻辑,只需实现 VFS 规定的回调函数(struct file_operations、struct inode_operations、struct super_operations 等),内核会自动挂载到 VFS 树中。
这大大降低了文件系统开发难度,也使得 Linux 能支持几十种文件系统。
四、支持文件系统挂载和命名空间隔离
VFS 维护了全局的目录树结构(从根 / 开始),通过挂载(mount) 机制将不同文件系统的根目录“挂”到 VFS 树的某个目录下。
例如:
/ 使用 ext4(挂载在 /dev/sda2)
/mnt/usb 使用 FAT32(挂载在 /dev/sdb1)
/nfs/data 使用 NFS(挂载在 192.168.1.100:/share)
VFS 使得这些不同文件系统在外观上表现为一棵统一的树,用户完全无感知。
进一步,VFS 还为 容器技术(如 Docker) 提供了 挂载命名空间(mount namespace) 的基础,每个容器可以有自己独立的文件系统视图。
五、性能优化和缓存统一
VFS 层实现了:
目录项缓存(dentry cache):加速路径查找。
页缓存(page cache):统一管理所有文件系统的数据缓存(不管底层是磁盘还是网络),减少 I/O。
具体文件系统可以复用 VFS 提供的缓存机制,也可以自己实现更精细的策略。
总结:一句话回答
VFS 是 Linux 内核中的一个抽象层,它向上提供统一的文件操作接口,向下允许不同文件系统以自己的方式实现这些接口,从而实现对异构文件系统的统一访问、挂载管理、缓存共享和“一切皆文件”的抽象。
没有 VFS,Linux 就无法支持多达几十种文件系统,也无法优雅地实现 /proc、/sys、网络文件系统、容器文件系统隔离等核心特性。
15、简述管道文件的实现机制。执行命令 cat myfile | wc –l 的输出应是什么?
一、管道文件的实现机制
在 Linux/Unix 系统中,管道(pipe) 是一种用于进程间通信(IPC) 的机制,它允许一个进程的输出直接作为另一个进程的输入,而无需通过中间文件。
实现机制简要说明:
- 创建管道:shell 解释 | 符号后,调用 pipe() 系统调用。内核在内存中创建一个管道文件(实际上是内核缓冲区,不是磁盘文件),并返回两个文件描述符:
fd[0]:读端(read end)
fd[1]:写端(write end)
- 重定向标准输入/输出:
左命令(cat myfile)的标准输出(stdout)被重定向到管道的写端(fd[1])。
右命令(wc -l)的标准输入(stdin)被重定向到管道的读端(fd[0])。
- 进程创建与执行:
shell 通过 fork() 创建两个子进程,分别执行 cat myfile 和 wc -l。
第一个进程(cat)写入管道,第二个进程(wc)从管道读取。
如果管道满了,写进程会阻塞;如果管道空了,读进程会阻塞。
- 数据传输:
数据以字节流形式在内核缓冲区中传递,不写入磁盘。
当写端关闭(cat 执行结束)且读端读完所有数据后,读进程会收到 EOF(文件结束标志)。
- 管道大小:Linux 中管道容量通常为 4KB 到 64KB(可调整),大于该容量的写操作会阻塞直到读进程取走数据。
- 单向与命名管道:
匿名管道(|):只能用于父子进程或兄弟进程之间,无文件名。
命名管道(FIFO):通过 mkfifo 创建,有路径名,可用于任意无亲缘关系的进程通信。
二、执行命令 cat myfile | wc -l 的输出
命令作用:
cat myfile:读取文件 myfile的内容,并输出到标准输出。
|:将左边命令的标准输出连接到右边命令的标准输入。
wc -l:统计输入中的行数(-l 表示 line)。
输出结果:
该命令会输出 myfile 文件中包含的总行数。
四、应用题
1、设Linux文件系统中的目录结构如图所示:

(1)Linux文件系统采用的目录结构是什么?
答:
Linux文件系统采用的是树形目录结构(多级目录结构),整个文件系统以根目录 / 为起点,向下分支形成一棵树,每个目录可以包含文件或子目录。
(2)设当前工作目录是/usr,则访问文件m1.c的相对路径名是什么?
答:
相对路径名为:
mengqc/mubl/m1.c(或 ./mengqc/mubl/m1.c)
(3)cd /usr/liu命令的功能是什么?
答:
将当前工作目录切换(change directory)到 /usr/liu 目录下。
(4)如果用ls –l /usr/mengqc/mub1命令列出指定目录的内容,其中有如下所示的一项:- r w - - - - 2 mengqc group 198 Jun 23 2010 m2.c
那么,该文件m2.c对文件主和同组用户的权限是什么?
答:
文件主:读写(rw-);同组用户:无任何权限(---)
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)