软考-软件设计师中级备考 10、文件管理、设备管理
一、 文件管理
1、文件目录
- 文件控制块(FCB):是操作系统为管理文件而设置的数据结构,包含了文件的基本信息(如文件名、文件大小、文件类型等)、存取控制信息(如文件所有者的权限、其他用户的权限等)以及文件的物理位置信息(如文件存储在哪些磁盘块上)等。例如,在 Windows 系统中,当你查看一个文件的属性时,看到的各种信息就是文件控制块中部分信息的展示。
- 目录结构
- 绝对路径:是从根目录开始到目标文件或目录的完整路径,具有唯一性。例如,在 Linux 系统中,“/home/user/Documents/file.txt” 就是一个绝对路径,它明确地指出了 “file.txt” 文件位于根目录 “/” 下的 “home” 目录中的 “user” 目录下的 “Documents” 目录中。
- 相对路径:是相对于当前工作目录的路径。假设当前工作目录是 “/home/user”,那么 “Documents/file.txt” 就是一个相对路径,它表示在当前目录的 “Documents” 子目录下的 “file.txt” 文件。相对路径在实际使用中可以更方便地根据当前位置来指定文件或目录的位置。
2、文件的结构
- 逻辑结构:是从用户角度看到的文件组织形式。
- 顺序文件:文件中的记录按顺序依次排列,就像一本书的页码一样。例如,一个存储学生成绩的文件,每条记录按照学生的学号顺序排列,依次存储每个学生的各科成绩。
- 索引文件:除了文件本身的数据外,还建立了一个索引表,用于记录文件中关键数据项的位置。比如,在一个大型数据库文件中,为了快速查找特定记录,可以建立一个索引文件,通过索引可以快速定位到所需数据在主文件中的位置。
- 链接文件:文件中的记录通过指针链接在一起,形成一个链表结构。例如,在一些文本编辑器中,当你对一个大文件进行频繁的插入和删除操作时,可能会采用链接文件结构,方便对文件内容进行动态修改。
- 物理结构:是文件在存储设备上的实际存储方式。
- 连续分配:文件在磁盘上占用一组连续的磁盘块。例如,一个大小为 10MB 的文件,系统会为它分配 10 个连续的磁盘块来存储文件内容。这种方式的优点是读写速度快,缺点是容易产生碎片。
- 链接分配:文件的各个磁盘块通过指针链接起来。就像串珠子一样,每个珠子(磁盘块)都有一个指针指向下一个珠子的位置。这样可以灵活地利用磁盘空间,但随机访问性能较差。
- 索引分配:系统为每个文件建立一个索引表,索引表中记录了文件的各个逻辑块对应的物理块号。例如,一个文件有 10 个逻辑块,索引表中就会记录这 10 个逻辑块分别存储在哪些磁盘块上。这种方式可以方便地实现随机访问,同时也能较好地利用磁盘空间。
3、索引分配
索引分配是一种高效的文件物理存储管理方式。在索引分配中,系统为每个文件维护一个索引表,索引表中的每个表项对应文件的一个逻辑块,记录该逻辑块在磁盘上的物理块号。
例如,有一个包含 10 个逻辑块的文本文件,系统为其分配的物理块依次为第 20、25、30、35、40、45、50、55、60、65 号磁盘块。那么在索引表中,第一个表项记录逻辑块 1 对应物理块 20,第二个表项记录逻辑块 2 对应物理块 25,依此类推。当用户需要读取文件的第 6 个逻辑块时,系统首先查找索引表,找到第 6 个表项,得知该逻辑块对应的物理块号为 45,然后直接从第 45 号磁盘块读取数据,无需像连续分配那样受限于磁盘块的连续性,也无需像链接分配那样顺序遍历指针,大大提高了文件的随机访问效率 。
4、空闲存储空间的管理
磁盘存储空间有限,为了合理分配和回收磁盘块,操作系统需要对空闲的磁盘空间进行有效管理,常见的管理方法包括空闲表法、空闲链表法、位示图法等。
5、位示图法
位示图是利用一个二进制位向量来表示磁盘存储空间的使用情况,每一位对应一个磁盘块:
- 当某位为 0 时,表示对应的磁盘块空闲,可用于存储文件;
- 当某位为 1 时,表示对应的磁盘块已被占用。
假设一个磁盘共有 1024 个磁盘块,位示图就是一个由 1024 位组成的二进制向量。例如,若位示图的第 100 位为 0,说明第 100 号磁盘块空闲;若第 200 位为 1,则表示第 200 号磁盘块已被占用。
在文件存储时,系统通过扫描位示图,找到若干个连续的 0 位(根据文件大小确定所需块数),将对应磁盘块分配给文件,并将位示图中相应位置为 1;当文件删除时,系统将文件占用的磁盘块在位示图中对应的位重新置为 0,释放这些磁盘块供其他文件使用 。通过位示图法,系统可以快速地进行磁盘空间的分配与回收,并且能够方便地判断磁盘块的使用状态。
二、设备管理
I/O 控制方式 | 控制原理 | 优点 | 缺点 | 适用场景 |
---|---|---|---|---|
程序直接控制方式 | CPU 不断查询设备状态,设备准备好时 CPU 执行 I/O 操作;设备忙碌时 CPU 持续等待,循环测试设备状态寄存器标志位。 | 实现简单,无需额外硬件支持。 | CPU 利用率极低,在 I/O 操作期间 CPU 只能等待,无法处理其他任务,系统效率低下;对外部设备的响应不及时。 | CPU 执行速度与 I/O 设备速度相差不大,且 I/O 操作不频繁、实时性要求不高的简单系统,如早期的简单计算机系统或一些简单的嵌入式设备。 |
中断驱动方式 | 设备完成 I/O 操作后向 CPU 发送中断信号,CPU 暂停当前任务,处理 I/O 操作,处理完成后返回原来的任务继续执行。 | CPU 无需一直查询设备状态,在设备进行 I/O 操作时可处理其他任务,提高了 CPU 利用率;能及时响应设备的 I/O 操作请求。 | 每进行一次 I/O 操作都需要 CPU 中断处理,若 I/O 操作频繁,会产生大量中断,占用较多 CPU 时间,影响系统性能;中断处理需要保存和恢复现场,有一定开销。 | I/O 操作较频繁、对响应时间有一定要求的系统,如多道程序设计系统中的大多数外部设备,如打印机、键盘等。 |
DMA(直接内存存取)方式 | DMA 控制器(DMAC)控制数据在内存和设备之间的直接传输,在传输过程中,CPU 只在开始和操作结束时进行少量,传输过程由 DMA 控制器管理。 | 数据传输速度快,减少了 CPU 干预,提高了系统效率;CPU 可在 DMA 传输期间处理其他任务,与 I/O 操作并行工作。 | 需要专门的 DMA 控制器硬件,增加了系统成本;DMA 控制器的编程和配置相对复杂;每次传输的数据量有限,不适合大量数据的连续传输。 | 数据传输量较大、对传输速度要求较高且数据传输相对连续的设备,如磁盘、网卡等高速设备的数据传输。 |
通道控制方式 | 通道是一种专门的 I/O 处理机,它独立于 CPU 执行通道程序,控制设备与内存之间的数据传输。CPU 只需发出 I/O 指令,通道执行通道程序完成数据传输,完成后向 CPU 发中断信号。 | 进一步减轻了 CPU 的负担,CPU 与通道、通道与设备可并行工作,提高了系统的并行性和效率;可处理复杂的 I/O 操作,支持多台设备同时工作。 | 通道硬件成本较高,需要专门的通道指令系统和通道程序设计;通道的管理和控制相对复杂。 | 大型计算机系统或对 I/O 性能要求较高、I/O 设备种类和数量较多的系统,如大型服务器系统、工业控制计算机系统等。 |