操作系统考研笔记

本文最后更新于:2024年9月1日 晚上

计算

计算文件占多少个簇号

先找到起始号然后一直往下找,直到遇到值为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体交叉编址模块序号

模块序号 = 访存地址 % 存储器交叉模块数

系统调用

  1. 当操作系统完成用户请求的“系统调用”后,应使CPU从内核态转到用户态工作
  2. 用户程序设计,使用系统调用命令,经过编译后,形成若干参数和陷入(trap)指令,现有参数再执行trap指令。
  3. 用户程序创建一个新进程,需使用操作系统提供的系统调用接口

微内核

  1. 当前比较流行的能支持多处理机运行的OS,几乎全都采用微内核结构
  2. 模块化OS结构的原则是:分解和模块化
  3. 微内核结构能有效支持多处理机运行,故非常适合于分布式系统环境
  4. 微内核设计并不会让系统更高效

SPOOLing

  1. SPOOLing技术是将独占设备改成共享设备,所以肯定要独占设备
  2. SPOOLing技术通过在磁盘上开辟存储空间模拟脱机输出,可以减少作业输出等待时间,加快作业完成速度
  3. 目的是在输入设备忙时,进程不必等待IO操作的完成
  4. 用户的输出数据先送入输出井,即磁盘固定区域。

需要用到缓冲技术的场景

  1. 图形用户界面下使用鼠标(如果有高优先级的操作产生就要记录)
  2. 在多任务操作系统下的磁带驱动器
  3. 包含用户文件的磁盘驱动器
  4. 使用存储器映射I/O,直接和总线相连的图形卡

I/O控制方式

程序查询方式

优点:实现简单。缺点:需要消耗大量CPU时间来查询,无法发现程序错误,且CPU和设备,设备和设备之间无法并行工作

中断方式

优点:可以并行工作,能检测错误。缺点:CPU仍要花费大量时间来处理中断,且并行程度受中断处理时间的限制

DMA方式

优点:采用了外设和内存直接交换数据的方式,因此CPU对于IO的时间开销少。缺点:传输结束后仍需要用中断,增加了硬件开销。

通道方式

优点:CPU对于IO的时间开销更少。缺点:硬件开销大,通道程序复杂,增加了实现难度

一些单句的做题点

  1. 只要是固定的分配就会产生内部碎片,其余的都会产生外部碎片。(分页虚拟、固定分区、段页式分区是固定的,分段虚拟是不固定的)
  2. 虚拟页式管理的系统,在其地址变化过程中,进程可能发生被撤销(超越进程的地址空间)和变为阻塞(缺页)
  3. Linux主机允许root和guest同时登录,因为Linux支持多用户;允许多个客户端通过root账号登录
  4. 互斥信号量的初值一般为1;同步信号量初值不确定(因为互斥是只有一个资源,而同步要看消息是否已经存在,如果尚未存在应该设为0,已经存在应该设为非0的正整数)
  5. 文件控制块就是文件目录项
  6. 操作系统必须提供的功能是处理中断
  7. 忙等待即执行IO操作室进行不能继续执行
  8. 共享资源可以是进程代码和进程所拥有的已打开文件

新考点

第二章进程

线程的状态与转换

与进程类似:就绪、运行、阻塞

线程组织和控制

线程是TCB

线程切换时要保存和恢复:PC、其他寄存器和堆栈指针

调度器和调度程序

进程和线程要了解的都是这样,支持内核级线程就会最小线程是线程

让谁去运行(先来先服务,短作业优先)

什么事件会触发:创建新进程、进程退出、运行进程阻塞、IO中断

非抢占:运行阻塞或退出才触发

抢占:每个时钟中断或k个时钟中断会触发调度程序工作

闲逛进程

调度程序永远的备胎,没有其他就绪进程时就会运行闲逛进程

特点:优先级最低、可以是0地址指令,末尾也会执行检查中断、能耗低

上下文及其切换机制

context:其实就是内存环境的切换

地址切换代价巨大:

  1. 保存恢复页表寄存器
  2. TLB全部失效
  3. Cache全部失效
  4. 新进程运行初期缺页率高

多级队列调度算法

每种类型的进程就是一个队列

系统

交互式大于批处理,因为交互性比如说打游戏肯定需要更高的即时率

每种队列的调度算法可以不同

互斥锁的主要缺点是忙等待,自旋锁:TSL指令、swap指令、单标志法

优点:不会一直占用处理机,会有中断让他下处理机,并且等待的期间不用切换上下文(切换的代价很高)。

常用于多处理器系统,一个核忙等,其他照常工作,并快速释放临界区

第三章

内存共享

通过内存映射实现的

内存映射文件

如果用传统的open read来读文件,往回读的时候必须要用seek,缺点:写代码不方便、open read必须启动磁盘非常慢。

mmap:memory map

虚拟存储器的影响因素及改进方式

image-20211125154544479

页面大就说明页面数量会少,想一个极端的情况,只有一个当然不会缺页

固态硬盘(OS和计组都加了,很可能出现选择题)

SSD

读写性能特性

image-20211125154820578

读写以页为单位

因为写之前必须要先擦除,所有必须先把同一块的其他东西复制到其他块,再往里面写;所以读很快, 但是写很慢。然后挪了之后怎么保持翻译正确,闪存翻译层会保证正确!

支持随机访问,磁盘不行,磁盘需要什么移动磁臂什么的,所以很慢

磨损均衡技术

不要总磨一个地方,平均分布,以提升使用寿命,

动态:优先选择累积次数少的新闪存块

静态:读多写少的东西迁移到老块,因为读不用擦,这个是后台悄悄监视的

理想情况下固态硬盘的寿命


操作系统考研笔记
https://rorschachandbat.github.io/考研/os/
作者
R
发布于
2021年11月30日
许可协议