复习资料一:操作系统复习1
复习资料二:操作系统复习2
复习资料三:操作系统复习3
目录
十、 文件系统接口
10.1 文件
文件是计算机系统中的基本组成单元之一,它用于存储和组织数据以及程序代码。
文件相关的概念:
-
文件: 文件是存储在计算机中的一组相关数据。它可以包括文本、图像、视频、程序代码等。文件可以有不同的格式和类型,取决于其所包含的数据内容。
-
文件名: 每个文件都有一个唯一的标识符,称为文件名。文件名通常用来区分不同的文件,使用户能够轻松识别和访问它们。
-
文件路径: 文件路径是指文件在文件系统中的位置。它可以是绝对路径(从根目录开始的完整路径)或相对路径(相对于当前工作目录的路径)。
-
文件扩展名: 文件扩展名是文件名的一部分,用来指示文件的类型和格式。例如,".txt" 表示文本文件,".jpg" 表示图像文件等。
-
文件属性: 文件具有一些与之相关的属性,例如大小、创建时间、修改时间、访问权限等。这些属性可以提供关于文件的基本信息。
-
目录(文件夹): 目录是一种特殊类型的文件,用于组织和存储其他文件和子目录。目录可以包含文件和其他子目录,从而形成一个层次结构。
-
文件系统: 文件系统是一种用于管理文件的组织结构,它定义了文件和目录如何存储、访问和操作。常见的文件系统包括FAT、NTFS(Windows)、ext4(Linux)等。
-
文件访问权限: 操作系统通常会为每个文件设置访问权限,以控制哪些用户或程序可以读取、写入或执行文件。这是保护文件安全的一种方式。
-
文件操作: 操作系统提供了一系列用于管理文件的操作,包括创建、打开、读取、写入、关闭、复制、移动、删除等。
-
文件描述符: 在许多操作系统中,程序通过文件描述符来访问文件。文件描述符是一个非负整数,代表了程序打开的文件。
-
文件类型: 文件可以分为不同的类型,例如普通文件、目录、链接文件等。不同类型的文件在操作和使用上有不同的特点。
-
文件的基本操作:
- 创建:新建一个文件,并分配相应的存储空间。
- 读取:从文件中获取数据。
- 写入:将数据写入文件。
- 更新:修改文件中的数据。
- 删除:从文件系统中移除文件。
10.2 逻辑文件及其访问方法
逻辑文件是用户或程序员定义的文件,用于表示在应用程序中所需的数据集合。它反映了应用程序对数据的逻辑组织方式,而不涉及具体的物理存储结构。
特点:
- 逻辑文件是一个抽象概念,其定义取决于应用程序的需求。
- 它通常与具体的物理存储无关,允许在不同的存储介质上实现。
- 逻辑文件可以包括多个物理文件,以满足应用程序的需求。
- 逻辑文件可以是一个数据表、一个文本文件、一个数据库等,取决于应用程序的设计和要求。
10.2.1 顺序文件
概念:顺序文件是一种将数据按照特定的顺序存储在文件中的方式。数据在文件中的存储顺序与其在实际物理存储介质中的位置一致。
特点:
- 数据在文件中按照特定的顺序排列,通常是按照关键字的大小顺序排列。
- 顺序文件适用于一些需要频繁进行顺序访问的场景,如批量处理或报表生成等。
- 插入、删除或更新操作相对复杂,可能需要重组整个文件。
10.2.2 直接文件
概念:直接文件是一种通过使用记录的物理地址直接访问记录的文件类型。每个记录都有一个唯一的物理地址,可以通过这个地址来直接访问记录。
特点:
- 直接文件允许快速访问指定位置的记录,而无需遍历整个文件。
- 适用于需要随机访问特定记录的应用场景,如数据库系统。
- 插入、删除或更新操作可能需要重新组织文件。
10.2.3 索引文件
概念:索引文件是一种通过使用索引表(或索引项)来加速对数据的访问的文件类型。索引表中包含了关键字和相应记录的物理地址之间的映射关系。
特点:
- 索引文件可以在大型数据集合中提供快速的访问和检索。
- 索引表通常需要额外的存储空间,但可以大大提高检索效率。
- 插入、删除或更新操作需要更新索引表,可能会导致额外的开销。
10.3 文件目录
文件目录(又称文件夹)是文件系统中用于组织和存储文件的一种特殊类型的文件(文件目录本身也是文件)。它可以包含其他文件和子目录,从而形成一个层次结构,使得用户能够更方便地管理和浏览文件。
文件目录通过路径来标识,路径可以是绝对路径(从根目录开始的完整路径)或相对路径(相对于当前工作目录的路径)。
每个文件系统通常包括一些特殊的目录,如根目录(最顶层的目录)、当前目录(用户当前所在的目录)等
所有的文件目录和文件可以形成一个树状的结构,根目录是整个文件系统的顶级目录
文件目录是文件系统的重要组成部分之一,其他组件包括文件、文件属性、文件系统的管理模块等。
10.3.1 目录结构
不同的文件系统可以采用不同的目录结构来组织文件和目录,这些结构包括单层、双层、树形、无环图和通用图等。
单层目录结构:
-
概念:单层目录结构是最简单的一种目录组织方式,所有的文件和目录都在同一个层次上。
-
特点:
- 所有的文件和目录都存在于同一个目录层级中,没有子目录的概念。
- 文件名必须唯一,否则会发生命名冲突。
- 这种结构适合于小型系统或者只有少量文件的情况,管理相对简单。
/ (根目录)
|- file1
|- file2
|- file3
双层目录结构:
-
概念:双层目录结构引入了子目录的概念,使得文件和目录可以被分组和组织。
-
特点:
- 目录可以包含子目录和文件,形成了两层的结构。
- 文件名必须在其所在的目录中唯一。
- 双层目录结构提供了一定程度的组织和管理。
/ (根目录)
|- dir1
| |- file1
| |- file2
|
|- dir2
|- file3
|- file4
树形目录结构:
-
概念:树形目录结构是一种层次化的组织方式,其中的每个目录都可以包含其他子目录或文件,形成一个树状结构。
-
特点:
- 目录可以嵌套包含子目录和文件,形成了多层次的树状结构。
- 每个目录下的文件名必须在该目录下唯一。
- 树形目录结构提供了灵活的组织和管理方式。
/ (根目录)
|- dir1
| |- sub_dir1
| | |- file1
| |
| |- sub_dir2
| | |- file2
|
|- dir2
|- file3
|- file4
无环图目录结构:
-
概念:无环图目录结构允许目录之间形成复杂的关系,可以有多个路径可以到达同一个目录。
-
特点:
- 目录之间的关系可以非常复杂,可以形成任意的有向无环图。
- 这种结构提供了高度的灵活性,但也可能导致较为复杂的管理和维护。
/ (根目录)
|- dir1
| |- dir2
| | |- file1
|
|- dir2
| |- file2
|
|- dir3
|- file3
通用图目录结构:
-
概念:通用图目录结构是最灵活的一种目录组织方式,允许目录之间形成任意的有向图,包括可能存在环路的情况。
-
特点:
- 目录之间的关系可以非常复杂,包括可能存在环路。
- 这种结构提供了最高的灵活性,但也可能导致最为复杂的管理和维护。
/ (根目录)
|- dir1
| |- dir2
| | |- file1
|
|- dir2
| |- dir3
| | |- dir1 (环路)
|
|- dir3
|- file2
十一、 文件系统实现
文件系统(File System)是计算机系统中用于组织、存储和管理文件的一套机制或软件。它负责将数据以文件的形式存储在存储介质(如硬盘、固态硬盘等)中,并提供了一组接口和功能,使用户或程序可以对这些文件进行访问、操作和管理。
文件系统 | 系统角度 | 用户角度 |
功能 | 对存储设备的空间进行组织和分配 负责文件检索、读写等操作 | 提供按名存取的文件访问机制 文件的组织管理 |
目的 | 存取速度和存储空间效率 | 方便的文件存取机制 |
11.1 基本概念
文件系统的层次架构
- 逻辑文件系统:文件按名存取,文件目录组织管理,把文件名转换为文件ID,文件句柄
- 文件组织模块:管理文件、逻辑块和物理块,把文件的逻辑地址转换为物理地址
- 基本文件系统:物理块读写、向设备驱动程序发送控制命令
物理块(簇):一个或多个(2n)扇区组成,基本文件读写单位,也是存储设备的基本分配单位
分区(Partition):磁盘分割成若干个独立的空间,每个空间称为分区,可分为主分区和拓展
- 主分区:能够安装操作系统的启动分区
- 扩展分区:不能直接使用,必须分成若干逻辑分区
卷(逻辑磁盘)(Volume):磁盘上的逻辑分区,建立在物理分区上。每个卷可建立一个文件系统
两种文件系统实现方式:磁盘文件系统、内存文件系统
磁盘文件系统结构:
虚拟文件系统(Virtual File System):把多个文件系统整合成一个目录结构,为用户屏蔽各个文件系统的差异。
11.2 存储空间分配
文件系统中的存储空间分配方式是将文件在物理存储介质(如硬盘)上的空间如何分配给文件的方法。常见的存储空间分配方式有连续分配、链接分配和索引分配三种。连续分配是连续的存储空间,而链接和索引是离散的存储空间。
11.2.1 连续分配
概念:连续分配将文件存储在物理介质上的一系列连续的存储块中。这意味着文件的所有数据都被存储在物理上相邻的位置上。
特点:
- 适用于小文件,可以有效利用磁盘块。
- 读取速度较快,因为数据在物理上连续存储,可以顺序读取。
- 适用一次性写入操作。
- 删除文件后会产生外部碎片,可能需要进行碎片整理。
缺点:
- 浪费空间:文件需要一次性分配所有所需的空间,可能会浪费存储空间。
- 文件不能动态增长:文件的大小不能超过最大连续空闲区域的大小。
- 不利于文件的插入和删除(需要移动数据)
地址映射:
- 逻辑地址LA:文件内相对地址(一维)
- 物理地址(B,D):存在在物理块中的地址(二维)
- 物理块大小:S
- LA/S = Q...D
- B= Q + 起始地址
11.2.2 链接分配
概念:链接分配将文件分散存储在存储介质上的不同位置,每个文件包含一个指向下一个存储块的链接。
特点:
- 适用于较大文件,可以有效克服连续分配的限制。
- 可以动态地分配和释放存储块,可以处理变化大小的文件。
- 避免了外部碎片的问题,但可能会产生内部碎片。
缺点:
- 由于数据分散存储,可能会导致访问文件时的磁盘寻道时间增加,读取速度相对较慢。
- 需要记录每个文件的链接关系,可能会增加管理的复杂性。
地址映射:
- 指针大小:P
- LA/(S-P) = Q...D
- B = 链表中第Q项对应的物理块块号
链接表一般在文件系统装载时装入内存
链接表大小
- 表项16位:最大216*2Bytes=128KB
- 表项32位:最大232*4Bytes=16GB
链接分配不适合大容量磁盘:
- 如4TB磁盘,物理块4KB,链接表大小=(4TB/4KB)*4Bytes=4GB
11.2.3 索引分配
概念:索引分配使用一个索引表来存储文件的地址信息,索引表中包含了指向文件存储块的指针。
特点:
- 可以快速地定位和访问文件的存储块,因为索引表中存储了指向数据块的指针。
- 适用于大型文件系统,能够高效地处理大文件。
缺点:
- 需要额外的存储空间来存储索引表,可能会增加存储开销。
- 索引表的更新和维护可能会引入一些开销。
地址映射:
- LA/S = Q...D
- B = 索引表中第Q项存放的块号
假如物理块大小S=4KB,索引项(块号)大小:4Bytes
n级索引文件大小=4*(1K)^nKB
- 单级索引: =4*(1K)^1KB=4MB
- 二级索引: =4*(1K)^2KB=4GB
- 三级索引: =4*(1K)^3KB=4TB
- 四级索引: =4*(1K)^4KB=4PB
十二、 磁盘
磁盘是计算机系统中常用的外部存储设备,用于存储数据、程序和文件等信息。它是一种非易失性存储介质,意味着即使断电,磁盘上的数据也会保持不变。
磁盘类型:
-
硬盘驱动器(HDD):使用旋转的磁性圆盘来存储数据,具有较大的存储容量,但读写速度相对较慢。
-
固态硬盘(SSD):使用闪存芯片来存储数据,相对于HDD,它具有更快的读写速度和更高的抗震性,但存储容量相对有限。
-
混合硬盘:结合了HDD和SSD的优点,具有较大的存储容量和相对快速的读写速度。
磁盘管理:磁盘分区、格式化、挂载、复制、移动
12.1 磁盘结构
物理结构:
-
磁盘通常由一个或多个圆盘(磁盘片)组成,这些圆盘叠放在一起并通过一个轴固定在一起形成磁盘组。
-
每个圆盘都被划分成许多同心圆的磁道,每个磁道又被划分成若干个扇区(通常是512字节或4KB),这是磁盘上的最小数据存储单元。
-
数据的读写是通过磁头实现的,磁头会在磁道上移动并在特定的扇区上进行数据读写。
12.1.1 地址映射关系
- 块号:LBA
- SPT:每个磁道最大扇区数
- HPC:最大磁头(盘面)数
- 磁盘地址(C,H,S):
- Cylinder(柱面/道C) C = LBA ÷ (HPC × SPT)
- Head(磁头/面H) H = (LBA ÷ SPT) mod HPC
- Sector(扇区S) S = (LBA mod SPT) + 1
12.1.2 磁盘访问时间
- RPM:每分钟旋转次数,如:7200RPM
- 寻道时间:移动磁臂到所需磁道时间。平均寻道时间:1/3 磁道移动(1-4ms)
- 旋转延迟:等待扇区移动到磁头下时间。平均旋转1/2圈时间:1/(2*RPM/60)
例子:4KB块, 7200 RPM磁盘, 5ms平均寻道时间, 1Gb/sec传输率,0 .1ms 控制开销:
5ms + ½*1/(7200/60)sec + 4KB / 1Gb/sec + 0.1ms
=5.1ms + 4.17ms+0.04ms
=9.31ms
12.2 磁盘调度
调度目标:减少磁盘访问时间,寻道时间最小化。寻道时间≈寻道距离
假定有一个请求序列(0-199道):98, 183, 37, 122, 14, 124, 65, 67。磁头当前位置在53
12.2.1 先来先服务 FCFS
先提交先访问,后提交后访问
简单、公平,易实现;但是寻道时间长。
12.2.2 最短寻道时间优先 SSTF
每次移动到离现在位置最近的磁道,类似于最短作业优先(SJF)
寻道距离短;存在饥饿、磁头频繁变换移动方向,增加寻道时间
12.2.3 扫描算法 SCAN
磁头从磁盘一端向另一段移动,沿途响应服务请求。即电梯算法
同一方向扫描,寻道时间短;有的请求等待时间长。
12.2.4 循环扫描算法 C-SCAN
磁头从磁盘外道(0道)移到内道过程中处理请求。内道移动到外道的过程中不处理请求。
更均匀的等待时间
12.2.5 循环Look算法 C-LOOK
磁头只移动到一个方向上最远请求为止,而不是继续到磁盘尽头。
十三、 I/O系统
I/O(输入/输出)系统是计算机系统中的一个重要组成部分,它负责管理计算机与外部设备之间的数据传输和通信。其主要功能是协调和控制数据在CPU、内存和外部设备之间的传递,以满足用户和程序的输入输出需求。
13.1 基本概念
对象:I/O设备和对应的设备控制器
任务:完成用户提出的I/O请求;提高I/O速率;改善I/O设备的利用率
功能:
-
连接外部设备:I/O系统负责管理计算机与外部设备(如键盘、鼠标、磁盘、打印机等)的连接和通信。
-
数据传输:I/O系统控制数据在内存、CPU和外部设备之间的传递,确保正确、高效地完成数据的输入和输出操作。
-
缓存管理:为了提高性能,I/O系统通常会使用缓存技术来暂存数据,减少与外部设备的频繁交互。
-
错误处理:I/O系统负责处理可能出现的错误,如设备故障、数据传输错误等,以保证数据的完整性和可靠性。
-
提供抽象接口:I/O系统提供了一套抽象的接口,使得应用程序可以通过相同的方式与不同类型的设备进行交互,而不需要了解具体硬件细节。
组成:
-
设备控制器:设备控制器是连接计算机和外部设备的硬件组件,负责管理设备的工作状态、数据传输等。
-
设备驱动程序:设备驱动程序是软件组件,用于控制和管理设备控制器,使其与操作系统能够正确地通信和交互。
-
中断处理程序:中断处理程序负责响应外部设备的中断信号,将控制权转移到相应的设备处理程序。
-
I/O缓冲区:I/O缓冲区用于暂存数据,以平衡CPU和设备之间的速度差异,提高数据传输效率。
-
设备管理器:设备管理器是I/O系统的一个核心组件,负责协调和管理所有连接的外部设备。
13.2 I/O控制
I/O控制方式主要有以下三种:
-
程序控制I/O:由CPU直接控制I/O操作,需要等待I/O操作完成后再继续执行程序(轮询)。
-
中断驱动I/O:程序发送I/O请求后,CPU继续执行其他任务,当设备完成操作时,会发送一个中断信号,通知CPU进行后续处理。
-
直接内存访问(DMA):通过DMA控制器,数据可以在设备和内存之间直接传递,减轻了CPU的负担。
程序控制I/O由CPU定时发出询问,询问设备是否忙,进程进入忙等。不忙即进行I/O,否则转1
这种方式实现容易,但效率偏低,CPU会长期处于忙等待。
13.2.1 中断驱动I/O
中断驱动I/O允许程序在发起I/O请求后不必等待操作完成,而是可以继续执行其他任务。当I/O操作完成时,外部设备会发送一个中断信号给CPU,通知它可以处理I/O结果。
中断I/O工作流程:
优点:
-
异步性:相比于程序控制I/O,中断驱动I/O允许程序在I/O操作进行的同时继续执行其他任务,从而提高了系统的并发性。
-
提高CPU利用率:在I/O操作的等待期间,CPU可以执行其他任务,有效地提高了CPU的利用率。
-
降低响应时间:中断驱动I/O可以更快地响应设备的状态变化,从而减少了对设备状态的轮询。
中断处理程序(ISR):
-
检测是否有未响应的中断信号
-
保护被中断进程的CPU环境
-
转入相应的设备处理程序
-
中断处理
-
恢复CPU的现场并退出中断
中断向量:
- 中断向量是一个唯一的标识符,用于指示中断源的类型。它可以是一个整数或一个指向ISR的地址。
中断控制器:
-
中断控制器负责管理和分发中断信号,以确保CPU能够正确地响应中断。
-
在多设备系统中,中断控制器会根据优先级或其他策略来决定哪个中断信号优先被处理。
中断屏蔽:
- 中断屏蔽是一种机制,可以用来禁用或启用特定中断,以控制哪些中断可以被CPU响应。
13.2.2 直接内存访问DMA
DMA允许外部设备直接访问内存,而无需通过CPU的中介,从而减轻了CPU在数据传输过程中的负担,提高了系统的性能。
DMA控制器:
-
DMA控制器是一种硬件组件,它负责管理DMA操作。它通常包括多个通道,每个通道可以同时管理一个DMA传输任务。
-
DMA控制器会根据应用程序的配置来进行数据传输,包括源地址、目的地址、数据长度等。
工作原理:
-
应用程序首先通过DMA控制器配置一个数据传输任务,包括源地址、目的地址和数据长度。
-
DMA控制器会在后台自动执行数据传输,将数据从外部设备读取到内存,或从内存传输到外部设备,而不需要CPU的直接参与。
-
当数据传输完成时,DMA控制器会发出一个中断信号,通知CPU数据准备好可以进行处理。
优点:
-
减轻CPU负担,降低系统延迟
-
提高数据传输效率:相比于由CPU控制的传输,DMA通常更快。
-
并行处理:DMA可以在后台执行数据传输,CPU可以同时执行其他任务,实现并行处理。
缺点:
-
需要专门的硬件支持,因此并非所有计算机系统都支持DMA。
13.3 I/O内核子系统
I/O内核子系统提供了与I/O有关的服务,建立在硬件和设备驱动程序结构之上,还负责保护自己免受错误进程和恶意用户的危害。以下是I/O内核子系统的功能:
I/O调度:按设备队列排序,按照先来先服务完成设备I/O请求
缓冲区:I/O设备在与CPU交换数据时的内存地带。解决设备之间的速度差异和协调传输数据大小不一致的问题。
错误处理:
- OS可以从磁盘读、设备无效、暂时写失败等错误中恢复
- 当出现I/O请求失败时,多数情况返回一个错误号
- 系统出错日志记录了错误报告
I/O保护: 防止非法I/O指令的执行
- 定义I/O指令为特权指令
- 应用程序I/O操作必须通过系统调用实现
内核数据结构: 内核保存了I/O组件的状态信息,包括文件打开表、网络连接、字符设备状态等
13.3.1 假脱机 SPOOLing
目的: 为了缓和CPU的高速性与I/O设备的低速性间的矛盾。
- 程序模拟脱机输入,把低速I/O设备上的数据传送到高速磁盘上
- 另一程序模拟脱机输出,把数据从磁盘传送到低速输出设备
系统特点:
- 提高了I/O的速度
- 将独占设备改造为共享设备
- 实现了虚拟设备功能