文章目录
操作系统
题型分布
题型
单选20*2
多选5*3
判断5*1
大题4*10
大题23章居多
大题预测
计算
CPU利用率=忙碌时间/总时间
系统吞吐量=总共完成多少道作业/花的时间(系统每小时完成的作业数量)
周转时间=作业完成时间-作业提交时间
平均周转时间=各个作业周转时间和/作业数量
带权周转时间=作业周转时间/作业时间运行时间
平均带权周转时间=各作业带权周转时间之和/作业数
等待时间:(进程)在内存中进程创建之后等待被服务的时间之和,(作业)加上在外存后备队列中等待的时间
响应时间=提出请求到首次响应的时间
高响应比优先算法,响应比=(等待时间+要求服务时间)/要求i服务时间
页号=逻辑地址/页面长度
页内偏移量=逻辑地址%页面长度
缺页率=缺页次数/总页面数量
最佳置换算法是理论上的,无法实现
消费者分析
处理机调度算法
- 先来先服务(公平,对后面短作业不利)
- 短作业优先
-
最短剩余时间优先(就是短作业优先的抢占式)
-
时间片调度(分时操作系统,有一定开销,太小开销大,太大和先来先服务没区别)
-
高响应比
-
优先级
-
多级队列
地址转换
信号量
在具有n个进程竞争某共享资源的系统中,允许m个进程(n≥m≥1)同时使用该资源,其信号量S的值的变化范围是_
,处于等待状态的进程数最多_
个。
答案: m-n=<S<=m n-m
例如系统中有5个进程,最多允许3个进程进入临界区
页面置换
- 最佳置换(最长时间内不在访问的页面,往后扫)
- 先进先出置换(最早的拿走,性能差)
- 最近最久未使用(逆向扫描,看最久没使用的替换)
复习知识点
操作系统在什么模式下运行
保护模式
用户态
用户接口程序在用户态运行
华为鸿蒙
操作系统属于系统软件
以下关于操作系统正确的是(魔术师那里)
-
将计算机以一个更加容易,方便,强大的方式呈现给用户使用
-
差的变好、少的变多、复杂的变容易
-
屏蔽不同设备的差异性,同样的方式访问不同的设备
-
多个程序都能申请到“内存”
-
多个程序都在“同时”运行占用CPU
操作系统主要功能
-
CPU管理
-
内存管理
-
外存管理
-
I/O管理
-
健壮性管理
-
确保操作系统自身的正常运行
-
安全性管理
-
防止非法操作
操作系统对资源进程管理(有效和公平)
-
监视资源
-
实施资源分配策略
-
分配资源
-
回收资源
操作系统的作用
- 进程管理
进程的描述、同步、通信、调度,解决死锁 - 存储管理
内存、虚拟存储器和磁盘存储器的分配、保护 - 文件管理
文件结构、目录管理、文件共享和保护 - 设备管理
I/O设备的分配、缓冲、共享等
进程管理
进程的描述(PCB),进程生产者消费者同步,进程通信,调度
内核态和用户态的区别
内核态(也称为管态,核心态)这种模式下操作系统具有对所有硬件的完全访问权,可以执行机器能够运行的任何指令
用户态(也称为目态),只能使用机器指令的一个子集
他们是计算机的两种运行模式,根据CPU的状态进行划分(程序状态字PSW寄存器),即使用CPU的进程的状态
内核态进程比用户态进程有更多的权限,可以访问更多的资源
- 进程表谁能访问
- 用户程序数据谁能访问
CPU用来区分核心态还是用户态看程序状态字标记的是什么状态
cpu状态存在哪个寄存器里面
程序状态字(PSW寄存器)
操作系统的抽象1.49
进程,地址空间,文件
对处理器建立抽象—进程
对内存建立抽象—地址空间、虚拟内存
对磁盘建立抽象—文件
操作系统发展史54
真空管和穿孔卡片->晶体管和批处理系统->集成电路芯片和躲到程序设计->个人计算机,大规模集成电路
中间两个,操作系统的雏形,第二阶段晶体管和批处理系统
多道程序设计,IO密集型优先
计算机调度多个程序
批处理系统是什么,优缺点
所谓批处理系统是指加载在计算机上的一个系统软件,在它的控制下,计算机能够自动地成批地处理一个或多个用户的作业。
批处理系统的优缺点
- 优点:系统吞吐量大,资源利用率高
- 缺点:在批处理环境下,用户作业一旦投入运行就不再由用户控制,直到运行结束,所以批处理系统不具有交互性
1.71
在操作系统中引入多道程序设计技术以后,会使系统具有以下特征 (判断选择)
- 多道性
- 调度性
- 无序性
- 宏观上并行微观上串行
CPU取出指令
取指令,解码,和执行指令
寄存器
1.5
通用寄存器:保存临时文件
专门寄存器:
-
Program counter 程序计数器:下一条指令的内存地址
-
堆栈指针stack pointer :指向内存中当前栈的顶端
-
程序状态字(Program Status Word, PSW):CPU优先级、模式(用户态or 核心态)等
什么是系统调用
可以将用户态切换到内核态
MMU是什么
CPU的部件,实现虚拟地址到物理地址的转换(虚拟内存管理)
三种IO方式2.28
-
程序控制I/O (Programmed I/O) (轮询,查看状态准备好了吗)
-
中断驱动I/O (Interrupt-Driven I/O) (可以中断去做其他的,可以CPU和IO设备并行工作)
-
使用DMA的I/O (Direct Memory Access I/O ) (直接存储器存储,不经过CPU)
为什么是参与程度的不同
怎么理解,什么情况下参与
PCB
3.7
TCB和PCB的区别
线程控制块和进程控制块
fork
3.11
fork对实验结果进行解释
父进程的复制的pc值,给图解释和结果
waited(等待一个子进程终止)
https://blog.csdn.net/Dueser/article/details/120889218
https://blog.csdn.net/Dueser/article/details/120906658
操作系统两大功能
- 为应用程序提供抽象和管理计算机资源
- 对用户而言,资源管理是透明和自动完成的
内核提供一系列具备预定功能的内核函数,通过一组称为系统调用(system call)的接口呈现给用户。
系统调用把应用程序的请求传给内核,调用相应的内核函数完成所需的处理,将处理结果返回给应用程序
系统调用
3.35
转台切换,
过程库(库调用、库函数)
进行系统调用就像进行一个特殊的过程调用,只是系统调用可以进入内核态,而普通过程调用不可以
3.49
所有思考和练习
4.4进程地概念
正在执行的一个程序
- 地址空间Address space(程序,数据,堆栈)
- 相关资源集(程序计数器,堆栈指针,打开文件的清单……)
是容纳运行一个程序所需所有信息的容器
操作系统中有一个进程表(process table),每个进程占用其中的一项
一个进程包括:
- 地址空间/磁芯映像core image
- Process table(进程表项)
4.7进程的描述和理解(判断题,以下关于进程的描述正确的是)
- 进程就是为了在CPU上实现多道程序设计而出现的概念
- I/O密集型程序,提高CPU的利用率
- 多道程序设计:将多个程序同时加载到计算机内存中,并发执行
- 进程:对正在运行的程序的一个抽象,每个程序感觉自己独占CPU
4.12-13
顺序进程模型
-
一个进程就是一个正在执行程序的实例,包括程序计数器、寄存器和变量的当前值,每个进程拥有自己的虚拟CPU
-
每个程序被抽象为有自己逻辑程序计数器的进程
-
实际上只有一个物理程序计数器
-
每个程序运行时,它的逻辑程序计数器装入实际的物理程序计数器中,程序执行结束或暂停时,物理程序计数器的值被保存在内存中该进程的逻辑程序计数器中。
-
一个程序运行两遍,是两个进程,每次进程的运行情况是不可再现的
-
一张进程表中包含了各个进程状态的重要信息
-
程序是静态的,进程是动态的
-
进程是某种类型的一个活动,有程序(代码),输入,输出和状态,单个CPU被若干进程共享,使用某种调度算法决定何时停止一个进程的工作,并转而为另一个进程提供服务。
4.15(多选题)
有4种主要事件导致进程的创建:
- 用户请求创建一个新进程
交互式系统中,键入一个命令或者双击一个图标 - 一个批处理作业的初始化
创建一个新进程,运行作业队列中的下一个作业 - 系统初始化
foreground processes and daemons
ps 或者任务管理器查看 - 正在运行的进程发出系统调用创建进程
创建相关但是没有相互作用的进程协助完成任务,一个程序可以对应多个进程
如何实现进程的创建?
系统调用fork()
https://blog.csdn.net/Dueser/article/details/120889218
4.22
导致进程终止的事件:
- 正常退出 (自愿的)
exit(exitProcess),正常运行结束,或者面向屏幕的程序执行关闭或退出操作 - 出错退出 (自愿的)
例参数错误、操作对象不存在等,给用户显示错误信息 - 严重错误 (非自愿的)
例如非法指令、引用非法或者不存在的内存、除数为零,有些时候程序自行处理错误,捕获信号处理,默认结束运行 - 被其他进程杀死(非自愿的)
一个进程执行系统调用kill通知操作系统杀死某个进程
进程的状态
4.24
就绪态,运行态,阻塞态,哪些事件会使状态切换
采用多道程序设计的目的
提高IO密集型的CPU的利用率
进程和线程的区别
4.40
进程和线程的区别,进程共享进程的地址空间
进程是资源分配的最小单位,线程是CPU调度的最小单位
线程也有运行,阻塞,就绪态
4.61
5(进程通信是重点,大题)
竞争条件
5.11
两个或多个进程读写某些共享数据,而最后的结果取决于进程运行的精确时序
5.13
临界区
把对共享资源进行访问的程序片段称作临界区
5.15
避免竞争的4个条件
-
任何2个进程不能同时处于临界区
-
对CPU的速度和数量不做任何假设
-
运行在临界区外的进程不能阻塞其它进程
-
不得使进程无限期等待进入临界区(任何进程总有机会可以进入其临界区)
5.16
盲等待和互斥
- 屏蔽中断,锁变量,严格轮换法,p解法
睡眠唤醒:使用通信原语(系统调用),无法进入临界区的进程将被挂起,而不是忙等待
和信号量
生产者消费者
5.34
给你代码,是否存在竞争条件
说什么是竞争条件然后解释
互斥信号量为1,同步不一定是1
信号量
5.40
操作都是原子操作
习题
临界区是指并发进程中访问共享变量的程序
进程间通信中,共享变量是指(只能被多个进程互斥)访问的变量。
为了使A、B两个进程互斥地访问单个缓冲区,应为之设置一个互斥信号量S,初值为1,相应在的P(S),V(S)操作必须分别安排在( 两进程的临界区 )的两端。
在具有n个进程竞争某共享资源的系统中,允许m个进程(n≥m≥1)同时使用该资源,其信号量S的值的变化范围是_
,处于等待状态的进程数最多_
个。
答案: m-n=<S<=m n-m
例如系统中有5个进程,最多允许3个进程进入临界区
互换**,为什么不能互换?
睡眠
5.5n的\回答?
6(调度,重点)
选择一个调度算法,画调度序列图
- 先来先服务
- 最短作业优先
- 最短剩余时间优先(上面的抢占式版本)
经典IPC问题
- 生产者消费者哲学家
- 读者写者
- 哲学家
7.14
保护和重定位
动态重定位,用最多
7.13
保护地址,就是重定位的作用
超载:交换技术和虚拟内存
位图和链表选择
位图
-
分配内存时需查找指定长度的连续的0位串
-
提供了一种简单的利用一块固定大小的内存区就能对内存使用情况进行记录的方法
-
分配单元大小是一个重要设计因素,单元小,位图大;单元大,位图小,但可能会有浪费
链表
进程终止或者被换出时,操作比较容易,要么更改标志位(P变H),要么合并结点变成一个大的空闲结点
7.29?
比较位图和链表两种方法来记录空闲内存所需的存储空间。
128MB的内存以n字节为单元分配,对于链表,假设内存中数据段和空闲区域交替排列,长度均为64KB。并假设链表中的每个结点需要32位的内存地址,16位长度和16位下一个结点域。这两种方法分别需要多少字节的存储管理空间?哪种方法更好?位图
nbyte为分配单元
12810241024byte/nbyte=227/n个位的位图
链表
数据段和空闲区交替出现,每个长度64kb,所以需要1281024kb/64kb=2048个链表结点
一个链表结点需要32+16+16=64bit
链表所占空间204864bit=211*26=217
分配单元n为210=1K时,二者管理内存所需的空间相同
7.31?
First fit 首次适配
Next fit 下次适配
Best fit 最佳适配
Worst fit 最差适配
7.44
分页,MMU
虚拟内存,建立地址空间
7.50给虚拟地址,问物理地址
要写步骤,页面页框什么的
页表地址
7.58
虚拟地址到物理地址的映射必须非常快
一条指令会进行一次或多次内存访问,应避免映射成为主要瓶颈
如果虚拟地址空间很大,页表也会很大
32位虚拟地址空间(232=4G),页面大小4kb(212),需要约100万个页表项(232/212=220),每个表项占用一个字节,页表大小就为1M
每个程序都需要自己的页表(每个程序都有自己的虚拟地址空间)
小选择和判断, 多级页表倒排页表,很大
不用算
7.61
加速分页方案:基于“大多数程序总是对少量的页面进行多次访问”的现象
TLB,转换检测缓冲区(Translation Lookaside Buffer)
页面置换算法?
最优页面置换算法,
预先调页,请求调页
有练习,看练习
缺页中断次数
局部分配全局分配8.3?
页面大会怎么样,指令空间数据空间
方便共享节省空间(看一下)
文件系统9
9.4
什么是磁盘,映射到哪个块是
固定块大小的线性序列,支持对块的两种基本操作
文件是进程创建的信息的逻辑单元
- 对处理器建立抽象—进程
- 对内存建立抽象—地址空间、虚拟内存
- 对磁盘建立抽象—文件
长期存储信息的三个基本条件
- 能够存储大量信息
- 使用信息的进程终止时,信息仍然存在
- 必须能使多个进程并发存取有关信息
文件名是文件的内容
9.34?
选择判断
文件、目录怎么存储?
磁盘空间怎么管理?
如何有效、可靠的进行文件系统管理?
9.37?
磁盘上面有什么内容,分区里面的内容,磁盘头部的内容
哪个不是磁盘分区的内容
9.41?
各自优缺点
连续分配方式
链表分配方式
使用文件分配表的链表分配方式
i节点分配方式
9.59
日志文件系统
-
文件系统的性能依赖于CPU、内存和磁盘
-
CPU速度大幅提高
-
内存容量大幅提高
-
磁盘容量大幅提高,但寻道时间没有多大改善
9.77
在目录中删除文件对应的目录项
步骤1崩溃什么样的后果,文件不一致状态
10文件系统2
10.3
磁盘碎片整理
-
初始使用文件系统时,从磁盘的开始位置,连续的存放文件,但是随着时间的流逝,文件被不断地删除和创建,产生很多磁盘碎片
-
磁盘碎片整理程序
-
重新建立分区的文件系统
块大小
- 块大,存储小的文件会浪费磁盘空间
- 块小,大多数文件会跨越多个块,需要多次寻道和旋转延迟读写数据,浪费时间
- 做出一个好的决策需要知道有关文件大小比例的调查数据。
文件系统的一致性
解决办法
- 日志文件系统
- 检查文件系统一致性的实用程序
- 块的一致性检查、文件的一致性检查
- 其他检查,例如可疑的权限
- 防止用户误操作
块的一致性检查
- 构造两张表,每张表为每个块设立一个计数器,化为0,第一个表中的计数器跟踪该块在文件中出现的次数,第二个表中的计数器跟踪该块在空闲表中出现的次数
- 如果文件系统一致,则每个块或者在第一个表中的计数器为1,或者在第二个表中的计数器为1
删除文件步骤
删除了文件,释放了i节点,但是没有将释放的磁盘块归还到空闲磁盘块池
文件的一致性检查
一张计数器表(i节点号索引和计数器,记录每个文件被多少个目录包含),一个文件对应一个计数器
从根目录开始,沿着目录树递归下降,检查每个目录中的文件,将文件计数器加1
计数器与存储在文件i节点中的链接数目相比较
一致
小,文件都删除后,i节点不会回收
大!把计数器值同步到文件i节点中的硬链接数
10.32,第一行是回忆三个步骤
IO软件的目标
- 设备独立性
- 统一命名
- 错误处理
- 同步(阻塞)或异步(中断驱动)传输
- 缓冲
- 共享和独占设备
实现IO的三种方式
- 程序控制
- 中断控制
- DMA IO控制
死锁
什么是死锁
进程A和进程B因为等待彼此引发的事件而产生阻塞,这种情况属于通信死锁。
计算机系统中有很多独占性的资源,在任一时刻他们都只能被一个进程使用,如果同时使用会造成混乱
活锁
活锁:任务或者执行者没有被阻塞,由于某些条件没有满足,导致一直重复尝试,失败,尝试,失败
死锁的4个必要条件
- 互斥使用资源
- 占有并等待资源
- 不可抢夺资源
- 环路等待资源
怎么解决死锁
- 仔细对资源进行分配,动态的避免死锁
- 破坏死锁四个必要条件之一
鸵鸟
假装看不到
检测和恢复
-
利用抢占恢复
-
利用回滚恢复
-
通过杀死进程恢复
避免和预防
预防
-
破坏互斥条件
-
破坏占有并等待条件
-
破坏不可抢占条件
-
破坏环路等待条件