一、填空题
- 磁盘中的第一个扇区非常重要,因为其中存储了与磁盘正常使用相关的重要信息,包括:(主引导记录)、(磁盘分区表)和魔数。
- 文件的 inode 编号可以通过(ls -i)命令查看,若要查看当前目录中普通文件 test.c 的 inode 编号,所用的命令为(ls -i test.c)。
- 在 ext2 文件系统中,磁盘分区中的空间会被分为多个组块,每个组块又分为 6 个部分,分别为:(超级块)、(组描述符表)、(块位图)、inode 位图、(inode 表)和数据块。
- 目录结构只是一个逻辑概念,只有将目录结构与物理存储设备关联起来,才能通过目录结构访问磁盘上的数据。Linux 系统中通过(挂载)的方式将物理地址与目录进行映射。
- Linux 系统中的文件可分为:(普通文件)、(目录文件)、设备文件和(特殊文件)。
二、判断题
- 在 Linux 系统的文件描述符表中,进程打开的普通文件的文件描述符从 3 开始。(√)
- 特殊文件中较为常见的是链接文件,链接文件包括软链接文件和硬链接文件。(×)
- 在 ext2 文件系统布局中,每个块组分为 6 个部分,即启动块、组描述符表、块位图、inode 位图、inode 表和数据块。(×)
- inode 结构体的索引数组中共有 15 个索引项,其中索引项 0~11 是直接索引项,索引项 12 是间接索引项,索引项 13 是二级间接索引,索引项 14 是三级间接索引。(√)
- Linux 系统中文件的后缀名不表示文件类型,只表示与程序的关联。(√)
- Linux 系统中文件的文件名存储在文件所在目录的 dentry 中,而非文件本身中。(√)
三、单选题
-
选出下列各选项中不属于特殊文件的选项。(D)
A. 管道文件
B. 符号链接文件
C. 软链接文件
D. 硬链接文件
-
选出下列选项中不属于 ext2 文件系统块组组成部分的选项。(A)
A. 启动块
B. 组描述符表
C. inode 位图
D. 数据块
-
已知 inode 结构体中的每个索引项占 4 个字节,假设数据块的大小为 1KB,那么一个二级索引项可索引的数据块数量为:(B)
A. 256
B.
C.
D.
-
选出下列选项中用于创建文件系统的命令。(B)
A. fdisk
B. mkfs
C. du
D. mount
-
若系统中的硬盘驱动设备以图 5-3 所示的方式进行分区,那么以下各选项中,哪个文件不是与该设备对应的设备文件。(D)
A. /dev/sda1
B. /dev/sda5
C. /dev/sda2
D. /dev/sda3
-
若要删除一个文件,需要有哪种权限?(B)
A. 对文件有读权限和执行权限
B. 对文件有读权限和写权限
C. 对文件有读、写和执行权限
D. 对文件所在目录有写和执行权限
四、简答题
-
简单说明软链接文件和硬链接文件的区别。
软链接文件的数据只是被链接文件的文件名;硬链接文件的属性信息除文件名外与源文件信息完全相同,本质上是普通文件。
-
已知 inode 结构体中共有 15 个索引项,其中直接索引项 12 个,间接索引项、二级索引项、三级索引项各一个,另外每个索引项的大小为 4 个字节,假设系统中每个数据块的大小为 1KB,计算 inode 结构体中索引项可索引的数据块总大小。
-
简述文件 I/O 与标准 I/O 的区别。
文件 I/O 是一种无缓存 I/O;标准 I/O 在用户层建立了一个流缓存区,是一种有缓存 I/O。
五、编程题
-
编写程序,使用系统 I/O 从指定文件中读取数据并打印到终端。
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <fcntl.h> #include <string.h> int main(){ int fd=0; char filename[20]="/home/hzy/a.txt"; fd=open(filename,O_RDONLY); if(fd==-1){ perror("file open error.\n"); exit(-1); } off_t f_size=0; f_size=lseek(fd,0,SEEK_END); lseek(fd,0,SEEK_SET); while(lseek(fd,0,SEEK_CUR)!=f_size){ read(fd,buf,1024); printf("%s\n",buf); } close(fd); return 0; }