概要:操作系统(Operating System,简称 OS)是计算机系统中最核心、最基本的系统软件,负责控制和管理计算机的硬件资源和软件资源。属于本人学习的总结,操作系统这么课的内容挺多的,以下的内容针对于软考的考点总结,如果想深入学习可以去看看bliliblili的王道考研《操作系统》,内容丰富 通俗易懂 当然所花费的学习成本更高。如果应试的小伙伴话专学考点知识,多做真题,多做真题,认真做每一道真题。加油!!
一、操作系统概念
1.什么是操作系统?
操作系统(Operating System,简称 OS)是计算机系统中最核心、最基本的系统软件,负责控制和管理计算机的硬件资源和软件资源。它的主要功能包括:
-
资源管理
操作系统管理计算机中的硬件资源(如 CPU、内存、存储设备、输入/输出设备)和软件资源,确保资源能够被有效利用,并合理分配给各个任务。
-
任务调度
操作系统根据任务的优先级和需求,调度 CPU 执行程序,确保多任务的高效运行(例如多进程或多线程)。
-
文件管理
操作系统提供文件系统,用于存储、读取和管理数据。它抽象出目录和文件的层次结构,方便用户和应用程序对数据进行操作。
-
设备驱动
操作系统通过驱动程序管理硬件设备,使用户和程序可以通过统一的接口操作不同的设备。
-
用户接口
操作系统为用户提供与计算机交互的接口,包括命令行界面(CLI)和图形用户界面(GUI),以方便用户操作系统和运行应用程序。
2.提供的功能
- 处理机管理
处理器(CPU)是计算机执行程序的核心部件。操作系统通过处理器管理实现任务调度和多任务处理。包括进程管理、线程管理、CPU 调度、中断处理/
- 存储器管理
存储器(RAM)是计算机运行程序时的重要资源。操作系统通过存储器管理实现内存分配、优化和保护。包括内存分配、地址映射、内存保护、内存优化
- 文件管理
文件系统是用户和程序存储、访问和管理数据的接口。操作系统通过文件管理提供对存储数据的高效组织和操作。包括文件组织、文件操作、文件存储、文件保护
- 设备管理
设备管理是操作系统对计算机硬件设备(如输入/输出设备)的统一管理和控制。
主要功能。包括设备启动程序、设备分配、设备操作、设备中断处理
3.常见的操作系统
桌面端的有Windows 系列(微软)、macOS 系列(苹果)、Linux 系列(开源社区)、Unix 系列
手机端的Android(谷歌)、iOS(苹果)、HarmonyOS(华为)
4.操作系统的特性
4.1并发性
这里需要先了解一个概念并发与并行,并发是指在一个时间段内,多个任务可以交替进行。这些任务可能在同一个处理器上轮流执行,也可能在多个处理器上运行。而并行是指在同一时刻,多个任务真正同时执行。通常需要多核或多处理器硬件支持。
举例子,并发就是在吃饭时只有一张嘴,可以吃口饭,再喝口汤,交替使用一只嘴。而并行就是跟同学两人一起上学,一起到学校。
并发与并行比较
4.2共享性
共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。
4.2.1 互斥共享方法
互斥共享是指某个共享资源在任意时刻只能被一个线程或进程访问,其他线程或进程必须等待,直到资源被释放。
例子:在使用微信视频聊天的时候,手机相机不能使用同一个摄像头拍照,因为相机已经被占用,需要等微信视频聊天释放了摄像头才能使用手机相机拍照。
应用场景:
数据库访问:确保多个事务不能同时修改同一条记录。
文件操作:防止多个程序同时写入文件导致数据损坏。
硬件设备:保证一个设备在任意时刻只能被一个线程控制。
4.2.1 同时共享方法
同时共享是指多个线程或进程可以在同一时间访问共享资源,但需要确保这些访问之间的操作不冲突,通常通过将资源分为多个独立部分实现。
例子:当使用电脑再玩游戏的同时使用音乐播放器发放音乐,因此电脑扬声器有游戏的声音也有音乐的声音,这种被称为同时共享方法
应用场景:
文件读取:多个用户同时读取一个文件,但写入时需要独占。
缓存系统:允许多个线程同时读取缓存,写入时加锁保护。
数据库查询:读多写少的场景中,允许并发读取。
4.3虚拟性
虚拟是指把一个物理上的实体变为若于个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。
虚拟内存将有限的物理内存抽象成几乎无限的逻辑内存,使每个进程都拥有独立的内存空间。虚拟处理器 操作系统将一个或多个物理处理器虚拟化为多个逻辑处理器,让多个进程或线程看起来像是同时运行。
虚拟存储设备将物理磁盘虚拟化为多个逻辑磁盘(如分区)或将多个物理磁盘虚拟化为一个逻辑磁盘(如 RAID)
虚拟设备通过驱动程序或模拟技术将实际设备(如打印机、网卡)虚拟化,使多个应用程序可以同时使用
既然一个程序需要被分配CPU才能正常执行,那么为什么单核CPU的电脑中能同时运行这么多个程序呢?实际上只有一个单核CPU,在用户看来似乎有答:这是虚拟处理器技术。6个CPU在同时为自己服务
4.4 异步性
异步是指,在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。
异步性在操作系统中的应用场景
-
Web 服务器:如 Nginx 和 Node.js,通过异步 I/O 处理大量并发请求,提高性能。
-
操作系统内核:异步中断机制处理硬件事件,例如磁盘读取完成、网络数据包到达等。
-
GUI 应用程序:用户界面通常通过异步事件驱动模型处理用户输入(如点击、拖动)。
-
网络通信: 异步网络编程(如 Java 的
NIO
和 Python 的asyncio
)提高了大规模并发连接的处理能力。
二、进程管理
1.基本概念
进程是操作系统中程序的一次执行实例,是资源分配和任务调度的基本单位。比如写了一个QQ.exe程序放在D盘,双击之后会把QQ在D盘加载到运行内存创建了进程,而程序是静态的,进程是动态的
PCB是操作系统用于表示和管理进程的重要数据结构,每个进程都对应一个 PCB
PCB 中包含的信息主要包括:
-
标识信息:
进程 ID(PID):用于唯一标识一个进程。
父进程 ID:指向创建该进程的父进程。
-
状态信息:
进程状态:如就绪、运行、等待等。
优先级:进程的调度优先级。
-
调度信息:
程序计数器(PC):指向下一条即将执行的指令。
CPU 寄存器:存储进程上下文,包括寄存器值、中断状态等。
-
资源信息:
内存分配信息:进程使用的内存地址范围。
打开的文件描述符:进程当前打开的文件列表。
I/O 设备分配信息。
-
统计信息:
进程的运行时间。
CPU 使用时间。
进程的创建时间等。
2. 进程的特征
2.1 就绪状态 (Ready)
-
定义:
进程已获得除 CPU 外的所有必要资源,准备好运行,等待操作系统的调度分配 CPU。 -
特点:
-
进程处于可以执行的状态,但尚未分配到 CPU。
-
多个就绪进程组成就绪队列,由调度器选择一个分配 CPU。
-
一旦获得 CPU,进程会从就绪状态转换为运行状态。
-
-
状态切换:
-
从创建状态进入就绪状态:当进程刚被创建并获得初始资源。
-
从运行状态进入就绪状态:由于时间片耗尽或被抢占,失去 CPU。
-
2. 2 运行状态 (Running)
-
定义:
进程已获得 CPU,正在执行其指令。 -
特点:
-
系统中同一时刻只有一个进程处于运行状态(在单核系统中)。多核系统可有多个运行状态的进程。
-
运行状态是进程从就绪队列中被调度器选中后进入的唯一状态。
-
-
状态切换:
-
从就绪状态进入运行状态:被调度器选中并分配到 CPU。
-
从运行状态进入就绪状态:时间片耗尽或被抢占。
-
从运行状态进入等待状态:需要等待某些事件(如 I/O 操作完成)。
-
从运行状态进入结束状态:进程执行完成或异常终止。
-
2.3 等待状态(阻塞状态 / Waiting)
-
定义:
进程因等待某些事件(如 I/O 完成、资源可用)而暂停运行。 -
特点:
-
进程暂时无法执行,会进入等待队列。
-
等待的事件完成后,进程会重新进入就绪状态。
-
等待状态的进程不会消耗 CPU 资源。
-
-
状态切换:
-
从运行状态进入等待状态:进程主动请求资源或等待外部事件(如 I/O 操作)。
-
从等待状态进入就绪状态:等待的事件完成后,由操作系统通知该进程。
-
三种状态的关系
进程的三种状态之间可以通过以下方式转换:
-
就绪 → 运行:
-
调度器选中该进程,并分配 CPU。
-
-
运行 → 就绪:
-
时间片耗尽。
-
更高优先级的进程到来(抢占式调度)。
-
-
运行 → 等待:
-
进程需要等待 I/O 或某些资源。
-
-
等待 → 就绪:
-
进程等待的事件完成,操作系统将其放入就绪队列。
-
3.进程队列
1. 线性方式
-
定义:
把所有 PCB 按顺序组织在一张线性表(如数组)中,每个 PCB 占用表中的一个位置。 -
特点:
-
存储:PCB 按照线性顺序存储在内存中,形成一个连续的区域。
-
查找:需要扫描整个线性表,逐一匹配目标进程的 PCB。
-
更新:新增或删除 PCB 时,需要移动大量数据,效率较低。
-
-
优点:
-
结构简单,便于实现。
-
适用于管理少量进程时。
-
-
缺点:
-
查找效率低(时间复杂度 O(n))。
-
当进程数量变化时,调整线性表空间较困难。
-
-
适用场景:
进程数量固定且较少时,如简单嵌入式系统。
2. 链接方式
-
定义:
把具有相同状态的 PCB 用链表链接起来,例如,把所有 "就绪" 状态的 PCB 组织成一个 "就绪队列"。 -
特点:
-
存储:PCB 不需要存储在连续的内存空间中,通过链表的指针链接成一个队列。
-
查找:通过链表头快速找到目标状态的 PCB 队列,再遍历队列。
-
更新:动态增删 PCB 较方便,只需调整指针即可。
-
-
优点:
-
动态扩展性好,无需固定大小的存储区域。
-
便于分类管理,例如就绪队列、等待队列等。
-
-
缺点:
-
链表的遍历效率较低(时间复杂度 O(n))。
-
链接指针会占用额外的存储空间。
-
-
适用场景:
多任务操作系统中,适用于动态管理 PCB,如管理 "就绪队列"、"等待队列"。
3. 索引方式
-
定义:
把具有同一状态的 PCB 放在一个索引表中,多个状态对应多个不同的索引表。每个索引表中存储了 PCB 的地址或指针。 -
特点:
-
存储:PCB 的实际存储位置与索引表分开,通过索引表记录每个 PCB 的地址或指针。
-
查找:通过索引表直接定位目标 PCB(效率高)。
-
更新:新增或删除进程时,只需修改索引表中的条目,无需直接操作 PCB 存储区域。
-
-
优点:
-
查找效率高(接近 O(1))。
-
分类清晰,便于管理。
-
-
缺点:
-
索引表需要占用额外的内存空间。
-
实现复杂度比线性方式和链接方式高。
-
-
适用场景:
大型系统中需要管理大量进程时,如现代多用户操作系统。
4. 前趋图
前趋图是一个有向无循环图,由节点和有向边组成,节点代表各程序段的操作,而节点间的有向边表示两个程序段操作之间存在的前趋关系。用于这种图可以描述多个程序或进程之间的执行顺序关系。
执行顺序为: {(P1,P2)},{(P1,P3)},{(P2,P4)},{(P3,P5)},{(P4,P5)}
5.进程通讯
5.1 互斥
进程的互斥是指系统中多个进程因争用临界资源而互斥执行。临界资源是指一次只能供一个进程使用的资源,如打印机。
5.2 同步
在系统中有一些进程是需要互相合作,协同工作的。这样的进程之间的联系就叫同步。
生产者与消费者问题是经典的多线程同步问题之一,通常用来描述一个共享资源(如缓冲区)在多个线程间的生产和消费如何协调,避免资源争夺或浪费。
-
生产者:负责生产数据,并将数据放入共享的缓冲区。
-
消费者:负责从共享的缓冲区中取出数据并处理。
-
缓冲区:是生产者和消费者之间的共享资源,通常是一个有限大小的队列。
5.3 PV操作
P操作:
①将信号量S的值减1,即S=S-1;
②如果S>=0,则该进程继续执行;否则该进程置为等待状态。
V操作:
①将信号量S的值加1,即S=S+1;
②如果S>0该进程继续执行;否则说明有等待队列中有等待进程,需要唤醒等待进程。
三、存储管理
1.基本概念
地址重定位(Address Relocation)是操作系统中的一个重要概念,用于在程序运行时将逻辑地址(虚拟地址)映射为物理地址,从而使程序可以正确访问内存。
逻辑地址(虚拟地址)
-
逻辑地址是程序在编译或加载时生成的地址,由 CPU 在运行时产生。
-
它是程序对内存的一种抽象概念,独立于实际的物理内存布局。
物理地址
-
物理地址是内存单元的真实地址。
-
它由内存管理单元(MMU,Memory Management Unit)最终解析出来,用于访问硬件内存。
例如
-
逻辑地址:就像你写信的时候,只知道收信人的名字(虚拟地址),不知道他的实际住址。
-
物理地址:是信件最终送到的具体门牌号(真实内存地址)。
-
地址重定位:就像邮局根据名字查到住址,然后把信送过去的过程。
2.存储管理方案
2.1分区存储管理
可以理解为程序A、B、C看成进程A、B、C。将内存划分为多个大小不一的区域(分区),每个程序装入一个分区。分区大小可以固定(静态分区)或动态(根据程序需要)。
存在的缺点 会产生内存碎片:如果程序比分区小,就会浪费一部分内存进程A 和 程序B之间的存储。 如果程序太大,可能没法装载。
比如:就像一个停车场,每辆车只能停在指定的停车位上。如果车小,停车位剩下的部分浪费;如果车大,停车位就不够用。
2.2 分页存储管理
将一个进程的地址空间划分成若干个大小相等的区域,称为页。相应地,将主存空间划分成与页相同大小的若干个物理块,称为块或页框。
2.3 分段存储管理
概念:
将程序按照逻辑功能划分为不同段(如代码段、数据段、堆栈段)。每个段独立分配内存。
特点:
-
每个段的大小不同,和程序的逻辑结构紧密对应。
-
需要一个段表,记录每个段的起始地址和长度。
优势:
-
符合程序设计的逻辑结构(比如代码和数据分开)。
-
方便程序模块化管理。
问题:
-
容易出现外部碎片(段的大小不固定)。
比喻:
就像你的房子有多个房间,每个房间专门用来放一种东西(厨房、书房等)。房间大小根据用途确定。
2.4 段页存式储管理
概念:
将分段管理和分页管理结合起来。
-
程序先被分成逻辑段,每个段再分页。
-
需要同时维护段表和页表。
特点:
-
结合了分页和分段的优点。
-
消除了外部碎片问题,同时保留了逻辑分段的灵活性。
优势:
适合复杂程序的存储管理,可以灵活、高效地利用内存。
问题:
-
段表和页表的管理复杂,占用更多内存。
-
地址转换耗时更高。
比喻:
就像你住的房子(段)每个房间又划分成固定的储物格子(页),不同物品分开存放。
虚拟存储
四、 设备管理
1.基本概念
操作系统中的设备管理设备是计算机系统与外界交互的工具,具体负责计算机与外部的输入/输出工作,所以常称为外部设备(简称外设)。设备管理的目标主要是如何提高设备的利用率,为用户提供方便、统一的界面。提高设备的利用率,就是提高CPU与I0设备之间的并行操作程度。在设备管理中,主要利用的技术有:中断技术、DMA技术、缓冲技术。
1.1 中断技术
中断(Interrupt)是计算机系统中非常重要的一种机制,指的是CPU在正常运行程序时被外部或内部的事件打断,转去处理其他紧急任务后,再回到原程序继续执行的过程。
中断就是计算机在运行过程中被打断去处理别的事情的一种机制。想象一下,你正在专心写作业,突然门铃响了。这时你会停下来记住刚刚写到哪里,然后去开门,和客人聊几句。等事情处理完了,你再回到桌子前继续写作业。这整个过程就像计算机的中断机制。
对于计算机来说,中断可能是因为键盘按下了一个键、硬盘完成了数据读取,或者内部发生了某种错误。中断发生后,计算机会暂时停下当前正在处理的程序,去执行一个专门的“中断处理程序”,处理完事情后再回来接着干之前的工作。
这种机制的好处是计算机不用傻傻地等设备完成任务,而是能随时响应新的事件,大大提高了效率,就像你不用盯着快递什么时候来,而是快递来了再去处理。
1.2 DMA技术
DMA(Direct Memory Access,直接内存访问)是一种计算机数据传输技术,允许硬件设备直接与内存进行数据交换,而无需经过CPU的干预。它的作用是提高数据传输效率,让CPU能够专注于更重要的计算任务。
数据块传输:如硬盘读取数据到内存、大文件从U盘传输到电脑等。
多媒体设备:如音视频设备,需要高速传输大量数据到内存。
网络通信:网卡通过DMA把接收的数据直接存入内存,提升网络吞吐量。
1.3 缓冲技术
缓冲区技术是计算机中用于协调不同速度设备之间数据传输的一种重要方法。缓冲区本质上是内存中的一个区域,临时存储数据,让生产者(如硬件设备)和消费者(如CPU)可以高效协作,减少等待时间。
某计算机系统输入/输出采用双缓冲工作方式,其工作过程如下图所示,假设磁盘块与缓冲区大小相同,每个盘块读入缓冲区的时间T为10us,缓冲区送用户区的时间M为6us,系统对每个磁盘块数据处理时间C为2us。若用户需要将大小为10个磁盘块的Docl文件逐块从磁盘读入缓冲区,并送用户区进行处理那么采用双缓冲需要花费的时间为( 问题1)us,比使用单缓冲节约了(问题2)us时间。
问题1:A. 100 B.108 C.162 D. 180
问题2:A. 0 B.8 C.54 D.62
2.磁盘调度算法
磁盘是可被多个进程共享的设备。当有多个进程请求访问磁盘时,为了保证信息的安全,系统在每一时刻只允许一个进程启动磁盘进行1/(操作,其余的进程只能等待。因此,操作系统应采用一种适当的调度算法,使各进程对磁盘的平均访问(主要是寻道)时间最小。磁盘调度分为移臂调度和旋转调度两类,并且是先进行移调度,然后进行旋转调度。由于访问磁盘量耗时的是寻道时间,因此,磁调度的目标是使磁盘的平均寻道时间最少。
盘片的表面涂有磁性物质,这些磁性物质用来记录二进制数据。因为正反两面都可涂上磁性物质,故一个盘片可能会有两个盘面。
个盘片被划分为一个个磁道(一个一个半径不同的同心圆环),每个磁道又划分为一个个扇区(磁道上的一个弧段)。扇区是磁盘的最小组成单元,通常是512字节。
2.1 移臂调度算法
优化磁头在磁道间移动的顺序,减少寻道时间。 类比为在楼层间坐电梯,尽量减少无谓的楼层切换。
2.2 旋转调度算法
优化扇区旋转顺序,减少等待目标扇区到达磁头下方的时间。类比为在电梯门打开时,先让离门近的人下电梯,节省时间。
在磁盘调度管理中,应先进行移臂调度,再进行旋转调度。假设磁盘移动臂位于21号柱面上,进程的请求序列如下表所示。如果采用最短移臂调度算法,那么系统的响应序列应为()。
A. ②⑧③④⑤①⑦⑥⑨
B. ②③⑧④⑥⑨①⑤⑦
C. ①②③④⑤⑥⑦⑧⑨
D. ②⑧③⑤⑦①④⑥⑨
磁头号不用看,动臂位于21号柱面,采用最短移臂调度算法 21距离23号最近②⑧③柱面号都是 23.再比较 扇区号谁最小 谁就排前面。
1.基本概念
文件的结构可以分为两种视角:逻辑结构和物理结构,分别对应用户对文件的操作体验和文件在存储设备上的实际存储方式。
逻辑结构是用户看到并与之交互的文件组织形式,是从用户角度出发的文件表示方式。逻辑结构的关键特性是用户不需要关心文件在存储设备上的具体存放方式,只需知道文件名或路径,就能访问文件。例如:C:\Users\Documents\File.txt
是逻辑结构的一种体现。
物理结构是指文件在存储设备(如磁盘、SSD、U盘)上的实际存放方式,涉及文件在存储介质上的布局和存取管理。从物理结构的角度,文件数据是按块或扇区组织在磁盘上的。常见形式有连续存储,链接存储,索引存储:
2.文件的索引
文件管理系统中,索引文件结构是一种常见的文件组织方式,它通过索引来实现文件内容的快速访问。在索引文件结构中,主要涉及到几个关键概念:索引结点、物理磁盘块、直接索引、一级间接索引、二级间接索引、三级间接索引。
真题1
某文件系统文件存储采用文件索引节点法。假设文件索引节点中有8个地址项iaddr[0]~iaddr[7],每个地址项大小为4字节,其中地址项iaddr[0]~iaddr[5]为直接地址索引,iaddr[6]是一级间接地址索引,iaddr[7]是二级间接地址索引,磁盘索引块和磁盘数据块大小均为4KB.该文件系统可表示的单个文件最大长度是( D )KB。若要访问iclsClient.dll文件的逻辑块号分别为6、520和1030,则系统应分别采用( C )。
A.1030 B.65796 C.1049606 D.4198424
A.直接地址索引、一级间接地址索引和二级间接地址索引
B.直接地址索引、二级间接地址索引和二级间接地址索引
C.一级间接地址索引、一级间接地址索引和二级间接地址索引
D,级间接地址索引、二级间接地址索引和二级间接地址索引
真题2
某文件系统采用多级索引结构,若磁盘块的大小为512字节,每个块号需占3字节,那么根索引采用一级索引时的文件最大长度为(请作答此空)K字节;采用二级索引时的文件最大长度为()K字节。
A.85 B.179 C. 521 D.1024
解析:设块长为512B,每个块号占3B,一个物理块可放
512/3=170个目录项:
一个一级索引可存放的文件大小为:170x512=85KB
一个二级索引可存放文件的大小为:170x170x512=14450KB
一个三级索引可存放文件的大小为:170x170x170x512=2456500KB.
3.文件存储空间管理
3.1 位示图
要将文件保存到外部存储器(简称外存或辅存)上首先必须知道存储空间的使用情况,即哪些物理块是被“占用”,哪些是“空闲”。特别是对大容量的磁盘存储空间被多用户共享时,用户执行程序经常要在磁盘上存储文件和删除文件,因此,文件系统必须对磁盘空间进行管理。常用的空闲空间管理方法中,主要掌握位示图法。这种方法是在外存上建立一张位示图(Bitmap),记录文件存储器的使用情况。每一位对应文件存储器上的一个物理块,取值0和1分别表示空闲和占用。例如,某文件存储器上位示图的大小为n,物理块依次编号为0,1,2,…..假如计算机系统中字长为32位,那么在位示图中的第0个字(逻辑编号)对应文件存储器上的0,1,2…,31号物理块;第1个字对应文件存储器上的32,33,34.,63号物理块,依此类推。
真题:
某文件管理系统在磁盘上建立了位示图(bitmap),记录磁盘的使用情况。若磁盘上物理块的编号依次为0、1、2、…。系统中的字长为64位,字的编号依次为0、1、2、…。字中的一位对应文件存储器上的一个物理块。取值0和1分别表示空闲和占用。如下图所示。假设操作系统将256号物理块分配给某文件,那么该物理块的使用情况在位示图中编号为()的字中描述,系统应该将()。
A.3 C.5 B.4 D.6
解析:要计算出256物理块分位示图中编号,系统中的字长为64位
256÷64 = 4。它是从0开始标号的。4+1 = 5
A.该字的0号位置“1” B.该字的63号位置“1 C.该字的0号位置“0 D.该字的63号位置“0’
解析:256是第5号的第0个位置,切居然要使用此编号 占用 1