软件设计师备考笔记【day3】-操作系统
目录
一,进程
1. 进程三大核心
- 进程定义:系统资源分配和调度的基本单位;线程是调度执行最小单位,共享进程资源。
- 进程五状态:就绪,运行,阻塞(等待),挂起就绪,挂起阻塞
- 状态转换核心:
(1)运行→就绪:时间片到 / 有更高优先级进程运行
(2)阻塞:请求 I/O、等待资源阻塞
(3)就绪:I/O 完成、资源到达
2,死锁
死锁四大必要条件(同时满足才会死锁)
- 互斥:资源同一时刻仅一个进程使用
- 请求与保持:进程已持有资源,又申请新资源
- 不剥夺:资源不能被强行抢占
- 环路等待:进程间形成资源循环等待
3. PV 操作(同步 + 互斥,高频计算题)
(1)P 操作(申请资源)
- S=S−1
- S≥0 正常运行
- S<0 阻塞等待,绝对值 = 等待进程数
(2)V 操作(释放资源)
- S=S+1
- S≤0 唤醒 1 个等待进程
互斥信号量初值固定 = 1
同步信号量初值一般 = 0
(3)箭头 A → B,A 做完写 V,B 开头写 P
举例子:
P1→P2
- P1 结束:V (S1)
- P2 开头:P (S1)
二,存储管理
1. 离散存储三大方式
(1)分页存储
- 页号 =逻辑地址 ÷ 页面大小
- 偏移量 =逻辑地址 % 页面大小
- 物理地址 = 物理块号 × 页面大小 + 偏移量
- 页面大小固定,无内部碎片、有外部碎片,对用户透明
- 依靠页表实现地址映射
(2)分段存储
- 按逻辑功能划分(代码段、数据段),段长不固定
- 逻辑地址 = 段号 + 段内偏移,用户可见,方便共享、保护
- 存在外部碎片
(3)段页式存储:先分段、再分页;结合两者优点,系统开销最大,企业级系统常用。
2. 虚拟内存
- 虚拟内存一定不是连续分配
- 一定要 分页、分段、段页 这种不连续的
- 虚拟内存大小 看系统地址线,不是看硬盘、不是看内存
3. 页面置换算法
(1)最优 OPT:淘汰最久不使用页面,理论最优,无法实现
(2)FIFO 先进先出:按进入内存顺序淘汰,简单,存在Belady 异常(页面增多,缺页率反而上升)
(3)LRU 最近最少使用:淘汰最久未访问页面,性能接近 OPT,硬件开销大(真题最爱考)
(4)时钟算法 CLOCK:LRU 简易实现,性价比最高
三,文件管理
1,文件物理结构顺序结构
顺序结构:连续存放,读写快,增删慢,易产生碎片
链接结构:离散存放,分为隐式链接、显式链接(FAT 表)
索引结构:单独建立索引表,随机访问效率高,占用额外存储空间
2,文件权限常规权限
读(4-r)、写(2-w)、执行(1-x)
Linux 权限:所有者、同组用户、其他用户 三类权限分开控制
3,磁盘调度算法(减少磁头寻道时间)
(1)FCFS 先来先服务:按请求顺序访问,无优化,寻道时间长
(2)SSTF 最短寻道优先:优先访问磁道距离最近请求,易产生饥饿
(3)SCAN 电梯算法:磁头单向移动,到边界折返,均衡性能,考试高频
(4)C-SCAN 循环扫描:单向循环访问,只单向折返,请求等待时间更均匀
4,位示图
(1) 计算位示图的大小
要计算管理整个磁盘需要多大的位示图(以“字”为单位),可以遵循以下步骤:
- 计算物理块总数:
磁盘总容量 / 物理块大小 - 计算所需字数:
物理块总数 / 字长(结果通常需要向上取整)
举个例子:
一个磁盘容量为1024GB,物理块大小为4MB,计算机字长为64位。
- 物理块总数 = (1024 GB × 1024 MB/GB) / 4 MB = 262144 个
- 位示图所需字数 = 262,144 / 64 = 4096 个字
(2)物理块号与位示图位置的转换
即已知物理块号,求它在位示图中的具体位置(哪个字的哪一位)。
通用公式(假设所有编号均从0开始):
- 块号 → 字号和位号:
字号 i = b / n(整除)位号 j = b % n(取余)
- 字号和位号 → 块号:
块号 b = i * n + j
举个例子:
系统字长为32位,物理块和字号都从0开始编号。请问2053号物理块在位示图的什么位置?
字号 i = 2053 / 32 = 64位号 j = 2053 % 32 = 5
所以,2053号物理块的状态由位示图中第64号字的第5位来描述。
5,inode 文件系统
(1)固定套路
- 一个磁盘块 1KB 或 4KB(1KB = 1024 字节 (Byte))
- 每个地址项占 4 字节
- 一块能放多少地址 = 块大小 ÷ 4
- 1KB 块 → 256 个
- 4KB 块 → 1024 个
(2)直接、一级、二级分界
1KB 版本
- 0~4 号块:直接地址
- 5~260:一级间接
- 再往后:二级间接
4KB 版本
- 0~5:直接
- 6~1029:一级
- 1030 往后:二级
(3)文件最大长度
总块数 = 直接个数 + 一级个数 + 二级个数
总大小 = 总块数 × 每块大小
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)