操作系统复习题
第一章
操作系统概述
基本概念
操作系统的接口
进程与线程
进程的引入
进程的状态及转换
进程的描述
进程的控制
线程
import multiprocessing |
处理器调度
进程调度
- 周转时间: 完成时间-到达时间
- 带权周转时间: 周转时间 / 服务时间
- 等待时间:周转时间-服务时间
第一问
进程 | 到达时间 | 服务时间 | 优先级 | 开始时间 | 完成时间 | 等待时间 |
---|---|---|---|---|---|---|
P1 | 0 | 9 | 1 | 0 | 9 | 0 |
P2 | 1 | 4 | 3 | 19 | 23 | 18 |
P3 | 2 | 8 | 2 | 23 | 31 | 21 |
P4 | 3 | 10 | 4 | 9 | 19 | 6 |
P1->P4->P2->P3
第二问
进程 | 到达时间 | 服务时间 | 优先级 | 开始时间 | 完成时间 | 等待时间 |
---|---|---|---|---|---|---|
P1 | 0 | 9 | 1 | 0 | 31 | 22 |
P2 | 1 | 4 | 3 | 1 | 15 | 10 |
P3 | 2 | 8 | 2 | 15 | 23 | 13 |
P4 | 3 | 10 | 4 | 3 | 13 | 0 |
进程 | 服务时间 | 优先级 | 开始时间 | 完成时间 | 周转时间 |
---|---|---|---|---|---|
P1 | 10 | 3 | 0 | 10 | 10 |
P2 | 1 | 1 | 10 | 11 | 11 |
P3 | 2 | 3 | 16 | 18 | 18 |
P4 | 1 | 4 | 18 | 19 | 19 |
P5 | 5 | 2 | 11 | 16 | 16 |
有一个就绪队列,是按照先来先服务进行的
作业名 | 到达时间 | 运行时间 | 优先级 | 进入内存时间 | 开始时间 | 完成时间 | 周转时间 |
---|---|---|---|---|---|---|---|
P1 | 8:00 | 50 | 4 | 8:00 | 8:00 | 10:00 | 120 |
P2 | 8:20 | 40 | 5 | 8:20 | 8:20 | 9:00 | 40 |
P3 | 8:30 | 60 | 3 | 10:00 | 10:00 | 11:00 | 150 |
P4 | 8:50 | 30 | 6 | 9:00 | 9:00 | 9:30 | 40 |
进程同步与死锁
进程同步的基本概念
选B,我也不知道为啥😥😥😥😥
信号量机制
选D,Peterson算法是双标志后检查法的改进,那么turn就是避免互相谦让导致进程饥饿的关键点。
- 多个进程,先V后P
- 单个进程,先P后V
生产者消费者问题
死锁
关于第三问,在(2)的基础上,可利用的还剩下(2,3,0),小于P4所需要的,不可分配。
存储管理
存储管理的基本概念
连续存诸空间管理
分段存储管理
分页存储管理
分页是把整个虚拟和物理内存空间切成一段段固定尺寸的大小。这样一个连续并且尺寸固定的内存空间,我们叫页(Page)。在 Linux 下,每一页的大小为 4KB
。
如果内存空间不够,操作系统会把其他正在运行的进程中的「最近没被使用」的内存页面给释放掉,也就是暂时写在硬盘上,称为换出(Swap Out)。一旦需要的时候,再加载进来,称为换入(Swap In)。所以,一次性写入磁盘的也只有少数的一个页或者几个页,不会花太多时间,内存交换的效率就相对比较高。
一个页表对一块连续的内存进行随机映射,不过,要把这块内存映射满。
这里的H表示16进制
注意页号大小和页大小
一个进程一个页表,由于进程太多,会导致页表变多,页表所需要的内存会变大,引入多级页表
。
局部性原理
:程序在某个时刻很可能会访问最近已经访问过的数据或指令。
如果使用了二级分页,一级页表就可以覆盖整个 4GB 虚拟地址空间,但如果某个一级页表的页表项没有被用到,也就不需要创建这个页表项对应的二级页表了,即可以在需要时才创建二级页表。做个简单的计算,假设只有 20% 的一级页表项被用到了,那么页表占用的内存空间就只有 4KB(一级页表) + 20% * 4MB(二级页表)= 0.804MB
,这对比单级页表的 4MB
是不是一个巨大的节约?
把最常访问的几个页表项存储到访问速度更快的硬件,于是计算机科学家们,就在 CPU 芯片中,加入了一个专门存放程序最常访问的页表项的 Cache,这个 Cache 就是 TLB
(Translation Lookaside Buffer) ,通常称为页表缓存、转址旁路缓存、快表等。
TLB命中率
第一问为什么乘以2?
在页式存储技术中,我介们可看到每次存取数据,就要做两次访问内存的工作
,一次是地址转换查页表时要作一次访问内存的工作,然后是根据转换后的物理地址访问内存存取数据,这样存取速度降低一倍,将会影响整个系统的使用效率。
选做
在二级页表的分页存储管理方式下,逻辑地址结构为页表目录号、页号、页内偏移。给定逻辑地址空间大小为 (2^16) 页,我们需要确定至少有多少页目录项。
首先,计算一页的大小:
- 页大小为 1KB=2^10字节。
然后,计算一页表所能包含的页表项数:
- 页表项大小为 2 字节,因此一页表可以包含(2^10)/2=2^9 个页表项。
最后,计算整个逻辑地址空间的页目录表中包含的表项数:
- 逻辑地址空间大小为 (2^16) 页,每个页目录项对应一页表,因此至少需要 (2^16 / 2^9 = 2^7) 个页目录项。
因此,整个逻辑地址空间的页目录表中至少包含 (2^7) 个表项。
虚拟存储
局部性原理
局部性原理是计算机科学中一个基本的概念,它指出在程序执行期间,对数据或指令的访问具有一定的局部性,即程序在某个时刻很可能会访问最近已经访问过的数据或指令
。这个原理主要包含两个方面:时间局部性和空间局部性。
时间局部性(Temporal Locality): 时间局部性指的是在一段时间内,如果程序访问了某个存储位置,那么在不久的将来,程序很可能再次访问相同或附近的存储位置。这反映了很多计算机程序中循环结构的特性,即程序在执行循环时会多次访问相同的数据。
空间局部性(Spatial Locality): 空间局部性指的是如果程序访问了某个存储位置,那么在不久的将来,程序很可能会访问在物理内存中相邻的存储位置。这体现在计算机程序中的数组访问、顺序执行的代码等情况,即程序在一段时间内可能会依次访问相邻的存储单元。
页面置换算法
最佳页面算法
最佳页面算法(Optimal Page Replacement Algorithm)是一种页面置换算法,其主要思想是选择最长时间内不再被访问的页面进行置换
。
什么是缺页,就是线程加载进来的过程(交换过程)。
先进先出(FIOF)
选择最先进入内存的页面被置换
异常现象
:当分配给进程的物理页面数增加时, 缺页次数反而增加
最近最久未用置换(LRU)
选择在最近一段时间最久未使用的页面予以置换
设备管理
磁盘设备管理
磁盘组成
磁盘访问时间
磁盘调度算法
先来先服务FCFS
最短寻道时间优先SSTF
电梯调度算法
综合练习
这里就不放详细答案了,自己看
TODO
- 加入实验内容
人生是旷野而非轨道,当你有能力的时候,一定要去帮助他人。🤣🤣🤣
2023-11-28日写