《计算机操作系统》(第4版)第8章 磁盘存储器的管理 复习笔记

2024-08-23 21:52

本文主要是介绍《计算机操作系统》(第4版)第8章 磁盘存储器的管理 复习笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第8章 磁盘存储器的管理

 、外存的组织方式

1. 连续组织方式(连续分配方式)

(1)概述 

①定义

连续组织方式要求为每一个文件分配一组相邻接的盘块。磁盘空间的联系组织方式如图8-1所示。

②记录方法

在目录项的“文件物理地址”字段中记录该文件第一个记录所在的盘块号和文件长度(以盘块为单位)。

 

图8-1 磁盘空间的连续组织方式

(2)优点

①顺序访问容易。

②顺序访问速度快。

(3)缺点

①要求为一个文件分配连续的存储空间;且易产生许多外部碎片。

②必须事先知道文件的长度。

③不能灵活地删除和插入记录。

④文件长度不宜动态增加。

2.链接组织方式

(1)隐式链接

①注意事项

在文件目录的每个目录项中,都须含有指向链接文件第一个盘块和最后一个盘块的指针。 ②缺点

无法直接访问盘块且稳定性差。

(2)显式链接 ①定义

把用于链接文件各物理块的指针显式地存放在内存的一张链接表中,记为文件分配表FAT。文件分配表在整 个磁盘中仅设置一张。

②优点

不仅显著地提高了检索速度,而且大大减少了访问磁盘的次数。

(3)链接组织方式优点

①消除了磁盘的外部碎片,提高了外存的利用率。

②对插入、删除和修改记录都非常容易。

③能适应文件的动态增长,无需事先知道文件的大小。

(4)链接组织方式缺点

①不支持高效的直接存取。

②FAT 需占用较大的内存空间。

3.索引组织方式

(1)单级索引组织方式

①索引分配方法

把每个文件的所有盘块号都记录在一个索引块(表)中。图8-2示出了磁盘空间的索引分配图。

图8-2 索引分配方式

②优点

a. 支持直接访问。

b. 不会产生外部碎片。 ③缺点

a.  对于小文件采用索引分配方式时,其索引块的利用率将是极低的。

b.  索引表增加存储空间开销,索引表的查找方法影响文件系统的效率。 (2)多级索引组织方式

①概述

多层索引使第一层索引块指向第二层索引块,第二层索引块再指向操盘空间的盘块。文件过大时,还可以指 向第三层索引……。图8-3示出了两级索引组织方式下各索引块之间的链接情况。

图8-3 两级索引分配

②优点

大大加快了对大型文件的查找速度。 

③缺点

在访问一个盘块时,其所需启动磁盘的次数随着索引级数的增加而增多。

(3)增量式索引组织方式(混合组织方式)

增量式索引组织方式既采用了直接寻址方式,又采用了单级和多级索引组织方式(间接寻址)。如图8-4所 示。

图8-4 混合索引方式

二、文件存储空间的管理

1. 空闲表法和空闲链表法

(1)空闲表法 ①空闲表

空闲表法属于连续分配方式,系统为外存上的所有空闲区建立一张空闲表,每个空闲区对应于一个空闲表项, 形成的空闲盘块表如图8-5所示。

图8-5 空闲盘块表

②存储空间的分配与回收

空闲盘区的分配同样是采用首次适应算法和最佳适应算法等算法。

(2)空闲链表法

空闲链表法是将所有空闲盘区拉成一条空闲链。根据构成链所用基本元素的不同,可把链表分成:

①空闲盘块链。

②空闲盘区链。

2. 位示图法

(1)位示图

位示图是利用二进制的一位来表示磁盘中一个盘块的使用情况。当其值为“0”时,表示对应的盘块空闲; 为“1”时,表示已分配。如图8-6所示。

图8-6 位示图

(2)盘块的分配

根据位示图进行盘块分配的步骤如下:

①顺序扫描位示图,从中找出一个或一组其值为“0”的二进制位。

②将所找到的一个或一组二进制位转换成与之相应的盘块号。假定找到的其值为“0”的二进制位位于位示 图的第i行、第j 列,则其相应的盘块号应按下式计算:b=n(i-1)+j。式中, n 代表每行的位数。

③修改位示图,令map[i,j]=1。

(3)盘块的回收

根据位示图对盘块进行回收的步骤如下:

①将回收盘块的盘块号转换成位示图中的行号和列号。转换公式为:i=(b-1)DIVn+1,j=(b-1)MOD  n+1。

 修改位示图。令map[i,j]=0。

(4)优点

①从位示图中很容易找到一个或一组相邻接的空闲盘块。

②由于位示图占用空间少,因而可将它保存在内存中,进而节省了许多磁盘的启动操作。

3. 成组链接法

成组链接法是空闲表和空闲链表的结合,适合与大型文件系统中。

 、提高磁盘I/O 速度的途径

1.采用磁盘高速缓存

2.  提高磁盘I/O 速度的其他方法

(1)提前读。

(2)延迟写。

(3)优化物理块的分布。

(4)使用虚拟盘。

3.  廉价磁盘冗余阵列 (RAID)

(1)RAID   的分级

RAID  0

a.  将数据分块,即把数据分布到多个盘上。

b. 无冗余校验功能。

②RAID  1级

a.具有磁盘镜像功能,可利用并行读、写特性,将数据分块同时写入主盘和镜像盘。

b.  可靠性好,且从故障中恢复很简单。

c.  磁盘容量的利用率只有50%。

③RAID  3级

a.① 具有并行传输功能。 

b.  校验盘采用奇偶校验。

RAID  5

a.  具有独立传送功能。

b.   奇偶校验信息均匀分布在所有磁盘上。

RAID 6

设置了一个专用的、可快速访问的异步校验盘。具有独立的数据访问通路。

RAID 7

采用Cache, 是 对RAID 6的改进。

(2)RAID    的优点

①可靠性高。

②磁盘I/O 速度高。

③性价比高。

 、提高磁盘可靠性的技术

1.  第一级容错技术SFT-I

(1)双份目录和双份文件分配表。

(2)热修复重定向和写后读校验。

2.第二级容错技术SFT-IⅡ

(1)磁盘镜像。

(2)磁盘双工。

3. 基于集群技术的容错功能

4. 配置后备系统

 、数据一致性控制

1. 事务

(1)事务的定义

事务是用于访问和修改各种数据项的一个程序单位。

(2)事务的属性

①原子性。

②一致性。

③隔离性。

④持久性。

2. 检查点

检查点的作用是使对事务记录表中事务记录的清理工作经常化。

3. 并发控制

(1)利用互斥锁实现“顺序性”。

(2)利用互斥锁和共享锁实现顺序性。

这篇关于《计算机操作系统》(第4版)第8章 磁盘存储器的管理 复习笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1100599

相关文章

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

在Node.js中使用.env文件管理环境变量的全过程

《在Node.js中使用.env文件管理环境变量的全过程》Node.js应用程序通常依赖于环境变量来管理敏感信息或配置设置,.env文件已经成为一种流行的本地管理这些变量的方法,本文将探讨.env文件... 目录引言为什么使php用 .env 文件 ?如何在 Node.js 中使用 .env 文件最佳实践引

Linux中查看操作系统及其版本信息的多种方法

《Linux中查看操作系统及其版本信息的多种方法》在服务器运维或者部署系统中,经常需要确认服务器的系统版本、cpu信息等,在Linux系统中,有多种方法可以查看操作系统及其版本信息,以下是一些常用的方... 目录1. lsb_pythonrelease 命令2. /etc/os-release 文件3. h

python库pydantic数据验证和设置管理库的用途

《python库pydantic数据验证和设置管理库的用途》pydantic是一个用于数据验证和设置管理的Python库,它主要利用Python类型注解来定义数据模型的结构和验证规则,本文给大家介绍p... 目录主要特点和用途:Field数值验证参数总结pydantic 是一个让你能够 confidentl

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

SpringBoot集成XXL-JOB实现任务管理全流程

《SpringBoot集成XXL-JOB实现任务管理全流程》XXL-JOB是一款轻量级分布式任务调度平台,功能丰富、界面简洁、易于扩展,本文介绍如何通过SpringBoot项目,使用RestTempl... 目录一、前言二、项目结构简述三、Maven 依赖四、Controller 代码详解五、Service

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优

Spring Security 前后端分离场景下的会话并发管理

《SpringSecurity前后端分离场景下的会话并发管理》本文介绍了在前后端分离架构下实现SpringSecurity会话并发管理的问题,传统Web开发中只需简单配置sessionManage... 目录背景分析传统 web 开发中的 sessionManagement 入口ConcurrentSess