软考高级系统架构设计师备考,只是写着方便自己看,如果有发现不对或少得的地方可以多多指正,谢谢各位兄弟。

一、操作系统概述

1.1 核心定义与作用

操作系统是管理软硬件资源、控制程序执行、提供用户接口的底层系统软件,两大核心价值:

  • 效率提升:通过CPU、内存、设备等资源的统一调度,最大化硬件利用率

  • 体验优化:封装硬件操作细节,提供图形/命令行等友好交互界面

1.2 四大基本特征

特征

核心含义

并发性

多个程序在同一时间段内交替执行(区别于并行的同时执行)

共享性

系统资源被多个进程共同使用(互斥共享/同时访问)

虚拟性

通过时分复用/空分复用,将一个物理实体映射为多个逻辑对应物(如虚拟内存)

不确定性

进程执行速度受调度策略影响,相同输入可能产生不同执行时序

1.3 五大核心功能

  1. 进程管理:进程创建/销毁、状态切换、调度与同步

  2. 文件管理:文件存储、目录组织、权限控制与空间分配

  3. 存储管理:内存分配、地址映射、碎片回收与扩充

  4. 设备管理:I/O设备分配、驱动控制、缓冲管理与虚拟设备实现

  5. 作业管理:作业调度、状态监控与资源分配

二、操作系统分类与嵌入式系统专项

2.1 常见操作系统类型

类型

典型场景

代表系统

批处理OS

大规模科学计算

IBM OS/360

分时OS

多用户交互

UNIX、Linux

实时OS

工业控制、航空航天

VxWorks、RTEMS

网络OS

服务器集群

Windows Server

分布式OS

分布式计算

Hadoop生态

微机OS

个人电脑

Windows、macOS、Linux

嵌入式OS

智能设备、工业终端

嵌入式Linux、FreeRTOS

2.2 嵌入式操作系统五大特性

  1. 微型化:代码量与资源占用极低,适配微小型硬件(如低功耗MCU)

  2. 可定制:支持跨平台移植,可通过配置裁剪功能适配不同硬件

  3. 实时性:硬实时响应要求,满足工业控制、数据采集等场景的确定性延迟需求

  4. 可靠性:内置容错机制,关键场景支持防故障与冗余设计

  5. 易移植性:通过硬件抽象层(HAL)和板级支撑包(BSP)降低硬件依赖

2.3 嵌入式初始化流程(自底向上)

片级初始化(CPU核心配置)→ 板级初始化(外设驱动加载)→ 系统初始化(内核启动)

三、进程管理核心考点

3.1 进程基础

  • 组成:程序(代码段)+ 数据(数据段)+ 进程控制块(PCB,进程唯一标识)

  • 三态模型:运行态(占用CPU)、就绪态(等待CPU)、阻塞态(等待I/O等资源)

  • 五态模型:新增新建态(进程创建中)、终止态(进程执行结束)

3.2 进程通信:同步与互斥

概念

核心区别

典型案例

同步

合作进程间的直接制约,需按序执行

生产者-消费者模型中,消费者需等待生产者产出数据

互斥

竞争临界资源的间接制约,同一时间仅一个进程访问

多进程争抢打印机,需互斥使用

临界资源:一次仅允许一个进程使用的资源(如打印机、共享变量)

3.3 PV操作与信号量机制

信号量分类
  • 公用信号量(互斥信号量):初值为1(或资源数量),用于互斥访问临界资源

  • 私有信号量(同步信号量):初值为0(或正整数),用于进程间同步协作

信号量物理意义
  • S≥0:当前可用资源数量

  • S<0:|S|为等待该资源的进程数

PV操作规则(原子操作,不可中断)
  • P操作(申请资源):S = S-1;若S≥0继续执行,否则阻塞当前进程

  • V操作(释放资源):S = S+1;若S>0继续执行,否则唤醒一个阻塞进程

典型应用
  1. 互斥实现:设置mutex初值=1,临界区前后分别执行P(mutex)和V(mutex)

  2. 生产者-消费者同步(单生产者单消费者,缓冲区容量n):

    • mutex(互斥信号量):初值1,保护缓冲区访问

    • S1(空缓冲区信号量):初值n,控制生产节奏

    • S2(满缓冲区信号量):初值0,控制消费节奏

3.4 前趋图

有向无环图(DAG),用于表示任务间的执行顺序约束:→={(Pi,Pj)|Pi必须在Pj开始前完成}。例如P1→P2表示P1是P2的前趋,P2需等待P1执行完毕。

3.5 进程调度

调度方式
  • 可剥夺:高优先级进程到来时,立即暂停当前进程,分配CPU给高优先级进程

  • 不可剥夺:高优先级进程需等待当前进程主动释放CPU

三级调度体系

调度级别

别名

核心作用

高级调度

作业调度

从后备队列选择作业调入内存,做好运行准备

中级调度

对换调度

将内存中暂时不用的进程换出到交换区,腾出内存空间

低级调度

进程调度

从就绪队列选择进程分配CPU,是OS中最活跃的调度

经典调度算法

算法

核心逻辑

优缺点

先来先服务(FCFS)

按进程到达顺序分配CPU

利于长作业、CPU繁忙型作业,不利于短作业、I/O繁忙型作业

时间片轮转

为每个进程分配固定时间片,轮流执行

提高并发性,响应速度快,时间片过大会退化为FCFS

优先级调度

选择优先级最高的进程执行

需防止低优先级进程饥饿,可动态调整优先级

多级反馈调度

设置多个优先级队列(优先级从高到低),高优先级队列时间片短,未执行完的进程降级到低优先级队列

综合FCFS和时间片轮转优势,兼顾长短作业,是目前主流调度算法

3.6 死锁

死锁定义

两个及以上进程因争夺资源陷入无限等待的状态(如进程A持有资源1等待资源2,进程B持有资源2等待资源1)。

死锁四必要条件(缺一不可)
  1. 互斥条件:资源只能被一个进程独占

  2. 请求保持条件:进程持有资源的同时等待其他资源

  3. 不可剥夺条件:进程已获得的资源不能被强制剥夺

  4. 环路条件:进程资源图中存在环形等待链

死锁处理策略

策略

核心思路

典型方法

死锁预防

破坏死锁四必要条件之一

资源一次性分配(破坏请求保持)、可剥夺资源设计(破坏不可剥夺)

死锁避免

动态检查资源分配安全性,避免进入死锁状态

银行家算法

死锁检测

允许死锁发生,定期检测并解除

资源分配图化简法

死锁解除

死锁发生后恢复系统正常运行

资源剥夺法(剥夺部分进程资源)、撤销进程法(终止死锁进程)

死锁资源计算公式
  • 发生死锁的最大资源数:n*(R-1)(n为进程数,R为每个进程所需资源数)

  • 不发生死锁的最小资源数:n*(R-1)+1

3.7 线程

  • 定位:线程是进程内的执行单元,是CPU调度的最小单位;进程是资源分配的最小单位

  • 优势:相比进程,线程创建、切换开销更小,可提高系统并发度

  • 资源共享:同一进程内的线程共享代码段、数据段、打开的文件、全局变量等进程资源;但线程私有栈指针、程序计数器等上下文信息,互不共享

四、存储管理核心考点

4.1 地址相关概念

  • 逻辑地址(虚拟地址):程序编译后生成的地址,不直接对应物理内存

  • 物理地址:内存单元的实际地址,CPU通过地址总线访问

  • 地址重定位:将逻辑地址转换为物理地址的过程

    • 静态重定位:程序装入内存时一次性完成转换

    • 动态重定位:程序运行过程中边执行边转换(支持内存紧凑、虚拟内存)

4.2 分区存储管理

分区类型

核心特点

优缺点

固定分区

内存预先划分为固定大小的分区

实现简单,但产生内部碎片(分区大于作业需求),空间利用率低

可变分区

按作业实际需求动态划分分区

无内部碎片,但会产生外部碎片(零散空闲分区无法使用)

可重定位分区

通过移动已分配分区,合并零散空闲空间

解决外部碎片问题,但移动开销大

可变分区分配算法
  1. 首次适应算法:从内存低地址开始查找,选择第一个足够大的空闲分区

  2. 循环首次适应算法:从上次分配结束的位置开始查找空闲分区

  3. 最佳适应算法:选择最接近作业需求的空闲分区,易产生大量小碎片

  4. 最差适应算法:选择最大的空闲分区分配,可减少小碎片产生

4.3 分页存储管理

  • 核心思想:将进程地址空间划分为大小相等的页,内存划分为与页大小相等的块,进程页可装入不相邻的内存块

  • 地址结构页号 + 页内地址(页大小决定页内地址位数,如4K页面对应12位页内地址)

  • 页表:记录页号到物理块号的映射关系

  • 快表(TLB):缓存常用页表项的高速缓存,加速地址转换

页面置换算法(内存不足时淘汰页面的策略)

算法

核心逻辑

特点

最佳置换算法

淘汰未来最长时间不再访问的页面

理论最优,但无法实现,作为评价基准

先进先出(FIFO)

淘汰最早进入内存的页面

实现简单,可能出现Belady异常(分配更多内存反而缺页率上升)

最近最少使用(LRU)

淘汰最近一段时间内最久未使用的页面

基于局部性原理,性能接近最佳置换,但实现开销大

最近未用(NRU)

优先淘汰未访问、未修改的页面

综合访问位和修改位,实现成本较低

4.4 分段存储管理

  • 核心思想:按逻辑功能将进程地址空间划分为段(如代码段、数据段、堆栈段),每段大小不等,对应完整逻辑单元

  • 地址结构段号 + 段内地址

  • 与分页的区别:分页是物理单位(提高内存利用率),分段是逻辑单位(便于共享和保护,如共享代码段)

4.5 段页式存储管理

  • 核心思想:结合分页和分段优势,先将进程按逻辑分段,每段再划分为固定大小的页

  • 地址结构段号 + 段内页号 + 页内地址

  • 优缺点:空间利用率高、支持共享保护,但地址转换开销大,需硬件支持

五、设备管理核心考点

5.1 I/O系统组成

设备(I/O硬件)+ 控制器 + 通道 + 总线 + I/O软件

5.2 核心管理技术

技术

核心作用

典型应用场景

通道技术

专用I/O处理器,独立执行I/O指令,完成后才中断CPU

大型机、服务器,解放CPU,提高并行度

DMA技术

数据在内存与设备间直接传输,无需CPU干预

磁盘、网卡等高速设备,减少CPU中断次数

缓冲技术

通过硬件/软件缓冲区匹配CPU与I/O设备速度差异

缓解速度不匹配、减少CPU中断频率、提高并行性

Spooling技术

用磁盘空间模拟独占设备,将物理独占变为逻辑共享

虚拟打印机,多进程共享打印机,形成输出队列依次打印

5.3 缓冲技术计算(高频考点)

  • 单缓冲总时间(T+M)*n + C(T=读入缓冲区时间,M=缓冲区送用户区时间,C=处理时间,n=块数)

  • 双缓冲总时间max(T,M+C)*(n-1) + T + M + C(当T>M+C时,为T*n + M + C)

六、文件管理核心考点

6.1 文件逻辑结构

类型

核心特点

典型案例

流式文件

无结构,由字节流组成

文本文件、二进制可执行文件

记录式文件

由若干逻辑记录组成,记录包含多个数据项

数据库表、Excel文件

6.2 文件物理结构(存储结构)

结构

核心特点

优缺点

连续结构

文件连续存储在相邻物理块中

访问速度快,但易产生外部碎片,文件长度难动态增长

链接结构

文件存储在不连续物理块中,块间通过指针链接

无外部碎片,文件可动态增长,但访问需遍历指针,可靠性低

索引结构

为每个文件建立索引表,记录逻辑块到物理块的映射

支持随机访问,无外部碎片,但索引表占用额外空间

UNIX三级索引

直接索引(0-9号块)+ 一级间接索引 + 二级间接索引 + 三级间接索引

兼顾小文件访问速度和大文件存储能力

6.3 文件目录

  • 文件控制块(FCB):记录文件名、物理地址、权限、时间戳等信息的结构体,是文件存在的唯一标识

  • 目录结构

    • 一级目录:单用户系统,所有文件在同一目录,易重名

    • 二级目录:主文件目录(MFD)+ 用户文件目录(UFD),支持多用户

    • 多级目录(树形目录):主流OS采用(如Windows、Linux),支持文件分类,便于共享和权限控制

6.4 空闲存储空间管理

方法

核心逻辑

适用场景

空闲区表

记录所有连续空闲区的起始块号和长度

连续文件结构

位示图

用二进制位(0=空闲,1=占用)表示物理块状态

各类文件系统,支持快速查找连续空闲块

空闲块链

将所有空闲块通过指针链接成链表

实现简单,无需额外元数据,但遍历效率低

成组链接法

空闲块分组,每组首块记录下一组信息

UNIX系统采用,兼顾效率与空间利用率

位示图计算(高频考点)
  • 物理块号k对应的字序号:⌊k / 字长⌋ + 1(物理块编号从0开始,字编号从1开始)

  • 位示图大小(字数):⌈总物理块数 / 字长⌉

七、作业管理核心考点

7.1 作业基础

  • 组成:程序 + 数据 + 作业说明书(描述作业执行步骤)

  • 状态转换:提交(用户提交作业)→ 后备(进入作业队列)→ 执行(调入内存运行)→ 完成(输出结果,释放资源)

  • 作业控制块(JCB):记录作业名、优先级、资源需求等信息,是作业存在的唯一标识

7.2 作业调度算法

算法

核心逻辑

特点

先来先服务

按作业提交顺序调度

实现简单,利于长作业,不利于短作业

短作业优先

优先调度运行时间短的作业

平均周转时间最短,但长作业可能饥饿

响应比高优先

响应比Rp=1+等待时间/运行时间,优先调度Rp高的作业

兼顾短作业(运行时间短)和长作业(等待时间长),避免饥饿

优先级调度

优先调度优先级高的作业

可根据作业类型、用户需求动态调整优先级

均衡调度

按作业特性分类(如I/O型、CPU型),均衡使用系统资源

提高系统整体吞吐量

7.3 性能指标

  • 周转时间:作业从提交到完成的时间 = 等待时间 + 运行时间

  • 带权周转时间:周转时间 / 运行时间(反映作业等待的相对代价)

  • 平均周转时间:所有作业周转时间的平均值,越小说明调度算法性能越好

  • 平均带权周转时间:所有作业带权周转时间的平均值,越小说明短作业等待代价越低

八、常考题

  1. 前趋图题目:根据前趋图确定逻辑关系,核心原则是“箭头指向的后继节点,其前趋必须全部执行完毕”,解题时优先排查缺失或多余的逻辑对。

  2. 银行家算法题目:通过计算进程最大需求、已分配资源和可用资源,判断是否存在安全序列。

  3. 线程资源共享题目:同一进程内线程共享进程资源(如打开的文件),但私有栈指针等上下文信息互不共享。

  4. 分页地址转换题目:例如页大小4K→页内地址12位,逻辑地址1B1AH中低12位B1AH为页内地址,高1位为页号1,查表得物理块号6,最终物理地址6B1AH。

  5. 页面置换题目:访问逻辑地址5148H,页号5对应物理块3,物理地址3148H;淘汰页面优先选状态位0(不在内存),其次访问位0(未访问),最后修改位0(未修改)。

  6. 双缓冲计算题目:双缓冲时间=10 * 10+6+2=108us,单缓冲时间=(10+6)*10+2=162us,节约54us。

  7. 三级索引题目:例如逻辑块号4属于直接索引(i_addr[0]-i_addr[4]),逻辑块号5属于一级间接索引;单个文件最大长度=5 * 1KB + 2(1KB/4B)1KB + (1KB/4B)(1KB/4B)1KB=66053KB。

  8. 位示图计算题目:例如4096号块对应字序号=4096/32+1=129;200GB磁盘共200 * 1024MB/1MB=204800块,位示图大小=204800/32=6400字。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐