中级软考(软件工程师)第四章知识点——操作系统

中级软考(软件工程师)第四章知识点------操作系统

  • 一、OS概述

    • [1. OS的两大作用](#1. OS的两大作用)
    • [2. OS的特征](#2. OS的特征)
    • [3. OS的功能](#3. OS的功能)
    • [4. OS的分类](#4. OS的分类)
    • [5. 核心知识点补充(重点)](#5. 核心知识点补充(重点))
  • 二、进程管理

    • [1. 进程的状态](#1. 进程的状态)
      • [1.1 三模态](#1.1 三模态)
      • [1.2 五模态](#1.2 五模态)
    • [2. 进程间通信](#2. 进程间通信)
      • [2.1 同步与互斥](#2.1 同步与互斥)
      • [2.2 信号量](#2.2 信号量)
      • [2.3 PV操作](#2.3 PV操作)
    • [3. 进程调度](#3. 进程调度)
      • [3.1 调度层次------三级调度](#3.1 调度层次——三级调度)
      • [3.2 调度算法](#3.2 调度算法)
    • [4. 死锁](#4. 死锁)
      • [4.1 四大必要条件](#4.1 四大必要条件)
      • [4.2 死锁的处理策略](#4.2 死锁的处理策略)
      • [4.3 银行家算法简介](#4.3 银行家算法简介)
  • 三、存储管理

    • [1. 存储结构和地址](#1. 存储结构和地址)
      • [1.1 层次结构](#1.1 层次结构)
      • [1.2 地址](#1.2 地址)
    • [2. 分区存储管理](#2. 分区存储管理)
    • [3. 分页存储管理](#3. 分页存储管理)
    • [4. 分段存储和段页式](#4. 分段存储和段页式)
    • [5. 虚拟存储与页面置换](#5. 虚拟存储与页面置换)
      • [5.1 程序局部性原理](#5.1 程序局部性原理)
      • [5.2 页面置换算法](#5.2 页面置换算法)
    • [6. 扩展缺页中断](#6. 扩展缺页中断)
    • [7. 经典题目](#7. 经典题目)
  • 四、设备管理

    • [4.1 I/O软件的操作过程(重点)](#4.1 I/O软件的操作过程(重点))
    • [4.2 四大关键技术](#4.2 四大关键技术)
    • [4.3 磁盘调度算法](#4.3 磁盘调度算法)
    • [4.4 经典题目](#4.4 经典题目)
  • 五、文件管理

  • 六、作业管理

  • 下一章:软件工程基础知识

  • 分值占比:大约7分左右

  • 题型:单选 & 多选

  • 注意点: 这一章节比较重要,大多都是一些框架知识

一、OS概述

1. OS的两大作用

  • 通过资源管理提高计算机系统的效率。
  • 改善人际页面,给用户提供良好的工作环境。

2. OS的特征

  • 并发性
  • 共享性
  • 虚拟性
  • 不确定性

3. OS的功能

  • 进程管理
  • 文件管理
  • 存储管理
  • 设备管理
  • 作业管理

4. OS的分类

  • 批处理
  • 分时
  • 实时
  • 网络(集中、C/S、对等)
  • 分布式
  • 微型
  • 嵌入式

5. 核心知识点补充(重点)

简单说一下几种系统的区别

  • 批处理: 用户无法干预程序运行,一般用于规范的计算,只能等待结果。
  • 分时: 代表就是我们使用的手机电脑,一人独占CPU和资源,但是开销比较大。
  • 实时系统: 导弹、航班等是代表,特点就是响应速度极快,而且要求安全可靠,就是资源利用率不一定高,毕竟重点还是快、安全。

注意一下并发和并行的区别

  • 并发: 宏观上同步执行,微观实际上在不同进程之间来回切换。
  • 并行: 多核CPU支持,不同的核运行不同的程序。

二、进程管理

1. 进程的状态

1.1 三模态

  • 就绪态: 所有已准备好,等待CPU。
  • 运行态: CPU执行代码。
  • 阻塞态: 正在等待某个事件(比如键盘输入、硬盘读写),或者挂起

1.2 五模态

📝 在上面的基础上增加了出生和死亡

  • 创建态: 进程的创建。
  • 终止态: 进程的结束。

2. 进程间通信

2.1 同步与互斥

  • 互斥: 只有一个设备(厕所),同一时间只能有一个人使用。
  • 同步: 有顺序要求,A完成之后才能运行B。

2.2 信号量

📝 S S S是一个整数变量

  • S > 0 S > 0 S>0:表示当前可用的资源数量
  • S = 0 S = 0 S=0:表示资源刚好用完,且没有人排队
  • S < 0 S < 0 S<0:表示当前正在排队等待该资源的进程数(绝对值就是排队人数)

2.3 PV操作

📝 这是两个原语,也就是原子操作,执行过程不允许被中断

  • P操作:申请资源
  • V操作:释放资源

3. 进程调度

3.1 调度层次------三级调度

  • 作业调度(高级):将程序从硬盘调入内存(频率低)
  • 内存调度(中级):当内存紧张时,将不重要的进程阻塞(挂起),放入外存中。
  • 进程调度(低级):决定哪个就绪进程抢到CPU(发生频率极高,毫秒级别)

3.2 调度算法

  • 先来先服务(FCFS):

    • 特点:那就是先到先得呗
    • 缺点:对于耗时比较短的作业不公平,因为耗时长的会消耗很多时间
  • 时间片轮转:

    • 特点:轮转顾名思义就是,每个人咱都来运行一下子,时间到了你就撤退
    • 优点:公平,适合分时系统,也就是我们常用的PC手机等
  • 优先级调度:

    • 静态优先级:创建时定义好,之后不会改变优先级
    • 动态优先级:等待时间越长优先级越高,防止饿了(等的时间太长)
  • 多级反馈队列:

    • 集万众宠爱于一身,拥有多个队列,优先级不同,时间片也不一样,需求兼容性很好。
  • 周转时间: 就是等待 + 服务时间
    周转时间 = 完成时间 − 到达时间 周转时间 = 完成时间 - 到达时间 周转时间=完成时间−到达时间

  • 带权周转时间: 其实就是效率,看看是不是在规定时间内完成任务

带权周转时间 = 周转时间 / 服务时间 带权周转时间 = 周转时间 / 服务时间 带权周转时间=周转时间/服务时间

4. 死锁

4.1 四大必要条件

  1. 互斥: 资源独占
  2. 保持请求: 占有资源的同时申请新的资源
  3. 不可剥夺: 只能等对方主动释放
  4. 环路等待: A等B,B等C,C等A,闭环

4.2 死锁的处理策略

  • 预防: 比如一次性申请所有资源,但是代价很大
  • 避免死锁: 银行家算法,在分配下一个资源的时候查看当前系统资源是否足够,足够了再分配。
  • 检测与解除: 允许死锁发生,但定期检查,一旦发现就杀死进程,直接干掉干掉。

4.3 银行家算法简介

📝 首先记住一个公式:
N e e d = M a x − A l l o c a t i o n Need = Max - Allocation Need=Max−Allocation

之后的核心就是拿着剩下的Allocation慢慢算,直到有一个安全序列,只不过我们要注意计算P1的时候,归还的资源是减去请求后的新[3,0,2]就行。

三、存储管理

1. 存储结构和地址

1.1 层次结构

📝 层次结构生效的基础:局部性原理

  • 寄存器: 最快、最贵
  • Cache: 很快、也很贵
  • 主存: 正常、价钱适中
  • 外存: 一般、价钱合适

寄存器------Cache------主存------外存

1.2 地址

  • 逻辑地址(相对地址): CPU生成的、程序里写的地址,比如变量a的地址。
  • 物理地址(绝对地址): 内存条上真实的地址,我们也可以通过程序打印出变量的物理地址。
  • 重定位: 逻辑地址和物理地址的映射过程

2. 分区存储管理

  • 固定分区: 死板,存在内部碎片(也就是无法完整利用存储空间)
  • 可变分区: 按需分配,存在外部碎片(不同分区之间的空隙)
  • 四大分配算法:
    • 首次适应: 从头开始找能放下的,最快,但是会破坏低地址空间(因为不一定完全适应,然后导致内存切割)
    • 最佳适应:大小最合适的最烂,因为会留下无数极小且无法利用的外部碎片。
    • 最差适应:最大的一块切割。适用于大作业
    • 循环首次适应:上次找的地方接着找,分布均匀

3. 分页存储管理

  • 原理: 把物理内存切成一块块(页帧),把逻辑程序切成大小一样的一页页。

  • 地址结构:
    逻辑地址 = 页号 P + 页内偏移量 W 逻辑地址 = 页号P + 页内偏移量W 逻辑地址=页号P+页内偏移量W
    物理地址 = 块号 ∗ 页面大小 + 页内偏移量 W 物理地址 = 块号 * 页面大小+ 页内偏移量W 物理地址=块号∗页面大小+页内偏移量W

  • 页表: 记录"页号和物理块号"的映射表。

  • 块表(TLB): 放在寄存器 / 高度缓存里的"精简版页表",用来加速查表。

4. 分段存储和段页式

  • 分段:逻辑功能分(主函数一段、子函数一段、数据一段)。利于共享和保护
  • 段页式: 先分段,段内在分页。结合了段的共享和页的内存利用率优点。

5. 虚拟存储与页面置换

5.1 程序局部性原理

  • 时间局部性: 刚访问过的指令马上又访问(循环结构
  • 空间局部性: 访问了某个位置,马上访问它隔壁(数组遍历

5.2 页面置换算法

  • OPT(最佳置换): 踢出未来最久不用的,无法实现,因为谁也不知道。
  • FIFO(先进先出)
  • LRU(最近最少使用): 踢掉最近一段时间没有使用过的。
  • NRU(最近未使用): 成本相比LRU低一些

6. 扩展缺页中断

  • 这是当访问的页面不在内存中,可能因时间太长被清理出内存了,然后产生了所谓的"缺页中断"现象,这时候会阻塞进程,然后重新调入页面,修改页表,重新执行指令。

7. 经典题目

  • 分页地址计算
  • 页面置换LRU

四、设备管理

4.1 I/O软件的操作过程(重点)

4.2 四大关键技术

  • DMA(直接存储器读取):
    • 原理: 数据在内存和I/O设备之间成块传输,不需要CPU搬运,这个之前说过。
    • 特点: 减少CPU干预,只在申请总线和释放总线的时候干预。
  • Spooling(假脱机):
    • 原理: 在磁盘上开辟输入井/输出井,先存盘在排队处理。
    • 作用: 将独占设备(打印机) 改造成共享设备
  • 缓冲:
    • 目的: 缓和CPU和设备速度不匹配的问题。
  • 通道: 一种比DMA更加高级的手段,有一个专门的硬件来处理IO。

4.3 磁盘调度算法

  • 先来先服务(FCFS):公平,但效率低。
  • 最短寻道时间优先(SSTF):谁距离磁头近就去哪儿,但可能导致饥饿现象,因为排队远的就耗时长。
  • 扫描算法(SCAN / 电梯算法):先规定一个方向,扫描结束后换一个方向
  • 循环扫描(C-SCAN):单向扫描,到终点之后直接从头开始再次扫描

4.4 经典题目

  • 磁盘调度计算

五、文件管理

5.1 文件和文件系统

  • 文件: 具有名称和后缀名的一组相关信息的集合,对用户来说这是存取数据的基本单位。
  • 文件系统: 操作系统中负责管理和存取文件的软件机构,负责把用户的文件名对应到硬盘上的物理地址。

5.2 文件结构和组织

(1)逻辑结构

  • 流式文件: 看做是一串字符流,没有结构,类似我们常见的txt文件。
  • 记录式文件: 由若干条记录组成,每条记录有固定的字段,也就是数据库类似的。

(2)物理结构

  • 连续结构: 文件存放在连续的物理块中。优点 是顺序读取快,缺点是不能灵活扩展。
  • 链接结构: 文件离散存放,用指针串联优点 是容易扩展,缺点是随机访问慢。
  • 索引结构: 为每个文件建立一张索引表,记录逻辑块到物理块的映射。支持随机访问,而且易于扩展,是现代的主流。

(3)目录

  • 文件控制块(FCB): 由FCB组成的表,里面记录了文件大小、物理位置、创建时间等等各种信息。
  • 目录结构:
    • 一级目录: 最开始的划分,所有文件在一张表里,不能重名。
    • 二级目录: 按照用户划分目录,但也只是解决了不同用户文件重名的问题。
    • 多级目录: 树形结构,目录按照理论来说可以无限嵌套,层次清晰,便于分类。

(4)存储方法与空间

📝 思考:当硬盘上有很多空位,怎么管理这些空位?

  • 空闲区表: 用一张表来记录哪一段是空的(起始位置+长度),适用于连续分配。
  • 位示图(重点中的重点): 用二进制位构成的地图来表示磁盘块的使用情况,1代表占用,0代表空闲
  • 空闲块链: 把空闲的块向链条一样串起来。
  • 成组链接法: unix系统专用。把空闲块分成组,每一组的第一个块记录下一组的地址。结合了空闲表和链表的优点,适合大型的系统。

(5)共享与保护

  • 文件共享:

    • 硬链接: 利用索引节点共享,多个文件名指向同一个物理索引。删除时通过计数器判断,计数器为0时才真的删除。
    • 符号链接(软链接): 通俗的就是快捷方式,这是一个存储了另一个文件地址的文件,如果源文件删除,这个链接就失效了。
  • 文件保护:

    • 存取控制矩阵/表: 一张二维表,记录哪个用户对哪个文件有什么权限

(6)安全和可靠性

  • 系统安全: 分级管理(系统级,用户级),防止未授权访问。
  • 可靠性:
    • 转储和恢复: 定期备份(全量备份和增量备份)
    • 日志文件: 记录每一次操作,系统奔溃重启后,根据日志系统重做或者撤销未完成的操作,保证一致性(类似强制重启后打开浏览器,还能恢复之前的页签的功能)

5.3 真题解析

(1)索引结构计算

📝 首先要记住两个公式:

N ( 地址数量 ) = 物理块大小 / 地址项大小 N(地址数量) = 物理块大小 / 地址项大小 N(地址数量)=物理块大小/地址项大小
索引容量 = N ∗ 物理块大小 索引容量 = N * 物理块大小 索引容量=N∗物理块大小

题目:某文件系统采用索引节点管理,直接索引10个,一级间接索引1个,二级间接索引1个。物理块大小4KB,地址项大小4字节。

问:该系统支持的最大文件长度是多少

(2)位示图计算

题目:某系统字长32位,位示图从0开始编号(字号0,位号0)。若物理块号为 4195,它对应位示图的位置是?

(3)硬链接与软链接

题目:用户A对文件F创建了硬链接H,用户B对文件F创建了软链接S。

六、作业管理

📝 作业管理主要解决的是:"系统如何接纳用户的任务,并决定先干哪一个"

6.1 作业与作业控制

  • 作业: 用户提交的一个任务,对于计算机来说是一个各种工作的集合。(相当于说我打开了微信,那后台可能分为好几个进程,这个进程对于计算机来说才是一个一个任务)
  • 作业状态:
    • 提交: 用户正在进行数据的准备,比如正在键盘输入或者其它的数据输入。
    • 后备: 提交后作业存放在"后备队列"中,等待内存的调度(所谓的作业调度就发生在这里)
    • 执行: 作业被调入内存之后就变成了进程,然后开始执行。
    • 完成: 任务完成,输出结果。

6.2 作业调度

  • 先来先服务(FCFS): 自己感悟吧,这个说太多了。
  • 短作业有限(SST): 谁运行时间短谁先来,但容易出现长作业饥饿现象,因为短的老是插队。
  • 响应比高优先(HRRN): 折中方案,具体就是你等的时间太长把你放前面。
    响应比 = 1 + 等待时间 / 服务时间 响应比=1+等待时间 / 服务时间 响应比=1+等待时间/服务时间
  • 优先级调度: 根据用户指定的优先级或者系统内置的优先级调度。

6.3 衡量指标

  • 周转时间: 完成时间 - 提交时间
  • 带权周转时间: 周转时间 / 服务时间。(且必定大于1,越接近1越好)

6.4 真题解析

(1)调度算法特性

(2)计算必考(响应比)

(3)周转时间计算

下一章:软件工程基础知识

相关推荐
西岸行者6 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意6 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码6 天前
嵌入式学习路线
学习
毛小茛7 天前
计算机系统概论——校验码
学习
babe小鑫7 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms7 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下7 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。7 天前
2026.2.25监控学习
学习
im_AMBER7 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J7 天前
从“Hello World“ 开始 C++
c语言·c++·学习