操作系统考研笔记
本文最后更新于:2024年12月27日 下午
计算
计算文件占多少个簇号
先找到起始号然后一直往下找,直到遇到值为FFT的表项号为止
缺页次数
CLOCK页面淘汰算法
页式存储管理系统
比如说一个块是4KB,那么也就是2^12次方,所以要用16位,这是块内地址尾数,然后块号要用4位来表示
比如说逻辑地址是[0,72],但是第一位对应的是主存的第9块,那么实际内存地址就是1001 0000 0000 0100 1000
磁盘各种调度算法汇总
FCFS(先来先服务 First Come First Serve)(只有这个是不偏心的)
SSTF(最短寻找时间优先 Shortest Seek Time First)
SCAN(扫描)
先找最近的,然后直接移动到那一端
C-SCAN(循环扫描)
单向服务,走完一端快速到另一端啥也不服务,然后再走过去
LOOK
改进了SCAN和C-SCAN,不用非得到另一端,只用到最远的那个即可
磁盘存取时间
存取时间 = 寻到时间 + 延迟时间 + 传输时间
平均延迟时间为旋转半周的的时间
文件系统最大文件可以达到多少
会有各种什么直接索引,二次间接索引什么的。
例:物理块大小是2KB,每个索引项占用4个字节(即4B),有8个直接索引项,1个一次间接索引项,1个二次间接索引项,最大怎么算?
$$
8*2KB + (2KB/4B)2KB + (2KB/4B)(2KB/4B)*2KB\
2KB/4B代表一个物理块能有多少个索引
$$
段页式存储系统访问内存次数
段页式如果想成功拿出数据要访问三次内存,第一次访问段表,得到页表地址;第二次访问页表,取得该页所在的物理地址;第三次访问物理地址拿到数据;但是,如果发生了越界就会次数变少,比如段越界,比如段只有0-7你想访问8,那就访问0次;如果页越界,就只访问1次。
n体交叉编址模块序号
模块序号 = 访存地址 % 存储器交叉模块数
背
系统调用
- 当操作系统完成用户请求的“系统调用”后,应使CPU从内核态转到用户态工作
- 用户程序设计,使用系统调用命令,经过编译后,形成若干参数和陷入(trap)指令,现有参数再执行trap指令。
- 用户程序创建一个新进程,需使用操作系统提供的系统调用接口
微内核
- 当前比较流行的能支持多处理机运行的OS,几乎全都采用微内核结构
- 模块化OS结构的原则是:分解和模块化
- 微内核结构能有效支持多处理机运行,故非常适合于分布式系统环境
- 微内核设计并不会让系统更高效
SPOOLing
- SPOOLing技术是将独占设备改成共享设备,所以肯定要独占设备
- SPOOLing技术通过在磁盘上开辟存储空间模拟脱机输出,可以减少作业输出等待时间,加快作业完成速度
- 目的是在输入设备忙时,进程不必等待IO操作的完成
- 用户的输出数据先送入输出井,即磁盘固定区域。
需要用到缓冲技术的场景
- 图形用户界面下使用鼠标(如果有高优先级的操作产生就要记录)
- 在多任务操作系统下的磁带驱动器
- 包含用户文件的磁盘驱动器
- 使用存储器映射I/O,直接和总线相连的图形卡
I/O控制方式
程序查询方式
优点:实现简单。缺点:需要消耗大量CPU时间来查询,无法发现程序错误,且CPU和设备,设备和设备之间无法并行工作
中断方式
优点:可以并行工作,能检测错误。缺点:CPU仍要花费大量时间来处理中断,且并行程度受中断处理时间的限制
DMA方式
优点:采用了外设和内存直接交换数据的方式,因此CPU对于IO的时间开销少。缺点:传输结束后仍需要用中断,增加了硬件开销。
通道方式
优点:CPU对于IO的时间开销更少。缺点:硬件开销大,通道程序复杂,增加了实现难度
一些单句的做题点
- 只要是固定的分配就会产生内部碎片,其余的都会产生外部碎片。(分页虚拟、固定分区、段页式分区是固定的,分段虚拟是不固定的)
- 虚拟页式管理的系统,在其地址变化过程中,进程可能发生被撤销(超越进程的地址空间)和变为阻塞(缺页)
- Linux主机允许root和guest同时登录,因为Linux支持多用户;允许多个客户端通过root账号登录
- 互斥信号量的初值一般为1;同步信号量初值不确定(因为互斥是只有一个资源,而同步要看消息是否已经存在,如果尚未存在应该设为0,已经存在应该设为非0的正整数)
- 文件控制块就是文件目录项
- 操作系统必须提供的功能是处理中断
- 忙等待即执行IO操作室进行不能继续执行
- 共享资源可以是进程代码和进程所拥有的已打开文件
新考点
第二章进程
线程的状态与转换
与进程类似:就绪、运行、阻塞
线程组织和控制
线程是TCB
线程切换时要保存和恢复:PC、其他寄存器和堆栈指针
调度器和调度程序
进程和线程要了解的都是这样,支持内核级线程就会最小线程是线程
让谁去运行(先来先服务,短作业优先)
什么事件会触发:创建新进程、进程退出、运行进程阻塞、IO中断
非抢占:运行阻塞或退出才触发
抢占:每个时钟中断或k个时钟中断会触发调度程序工作
闲逛进程
调度程序永远的备胎,没有其他就绪进程时就会运行闲逛进程
特点:优先级最低、可以是0地址指令,末尾也会执行检查中断、能耗低
上下文及其切换机制
context:其实就是内存环境的切换
地址切换代价巨大:
- 保存恢复页表寄存器
- TLB全部失效
- Cache全部失效
- 新进程运行初期缺页率高
多级队列调度算法
每种类型的进程就是一个队列
系统
交互式大于批处理,因为交互性比如说打游戏肯定需要更高的即时率
每种队列的调度算法可以不同
锁
互斥锁的主要缺点是忙等待,自旋锁:TSL指令、swap指令、单标志法
优点:不会一直占用处理机,会有中断让他下处理机,并且等待的期间不用切换上下文(切换的代价很高)。
常用于多处理器系统,一个核忙等,其他照常工作,并快速释放临界区
第三章
内存共享
通过内存映射实现的
内存映射文件
如果用传统的open read来读文件,往回读的时候必须要用seek,缺点:写代码不方便、open read必须启动磁盘非常慢。
mmap:memory map
虚拟存储器的影响因素及改进方式
页面大就说明页面数量会少,想一个极端的情况,只有一个当然不会缺页
固态硬盘(OS和计组都加了,很可能出现选择题)
SSD
读写性能特性
读写以页为单位
因为写之前必须要先擦除,所有必须先把同一块的其他东西复制到其他块,再往里面写;所以读很快, 但是写很慢。然后挪了之后怎么保持翻译正确,闪存翻译层会保证正确!
支持随机访问,磁盘不行,磁盘需要什么移动磁臂什么的,所以很慢
磨损均衡技术
不要总磨一个地方,平均分布,以提升使用寿命,
动态:优先选择累积次数少的新闪存块
静态:读多写少的东西迁移到老块,因为读不用擦,这个是后台悄悄监视的
理想情况下固态硬盘的寿命