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

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

  • 一、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)周转时间计算

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

相关推荐
SenChien2 小时前
Java大模型应用开发day06-天机ai-学习笔记
java·spring boot·笔记·学习·大模型应用开发·springai
Z_W_H_2 小时前
MyBatis-Plus 详细学习文档
学习·mybatis
青衫码上行2 小时前
maven依赖管理和生命周期
java·学习·maven
小六花s2 小时前
渗透测试前四天PHP文件包含笔记
android·学习·渗透测试
秋深枫叶红2 小时前
嵌入式第四十七篇——ARM汇编
汇编·arm开发·学习
rannn_1112 小时前
【Javaweb学习|Day7】事务管理、文件上传
后端·学习·javaweb
好奇龙猫3 小时前
大学院-筆記試験練習:数据库(データベース問題訓練) と 软件工程(ソフトウェア)(12)
学习
皮蛋sol周3 小时前
嵌入式学习数据结构(二)双向链表 内核链表
linux·数据结构·学习·嵌入式·arm·双向链表
代码游侠3 小时前
应用——基于 51 单片机的多功能嵌入式系统
笔记·单片机·嵌入式硬件·学习·51单片机