OS
一、计算机系统概述
基本构成
处理器(CPU):控制操作,执行功能
- 存储器:MAR(地址寄存器)和MBR(缓冲寄存器)
- 指令寄存器(IR)
- mode bit inCPU:
内存(Main memory):存储数据和程序
输入输出模块(I/O module):辅助内外的数据移动
系统总线(System,bus):模块之间的通信
特殊处理机制
中断:提高CPU效率(进程替换),使CPU在I/O操作执行过程中,执行其他的指令
二、操作系统概述
目标和服务
- 方便;有效;扩展性强
- 程序开发和运行,系统访问,I/O设备访问,文件访问控制,错误检测和相应记账
操作系统发展史
-
早期40-50串行处理:没有操作系统,直接和硬件打交道
存在问题:调度和准备时间
开始出现系统软件工具
-
简单批处理50-60:IBM 701/704**(没有进程)**
核心:监控程序(monitor)
利用切换来实现中断,处理器交替释放和获取权利给监控程序
-
多道批处理系统50-60
核心:足够的内存空间和多道的程序设计
-
分时系统60-70(终端):IBM 7094
核心:多个用户分享处理器的时间,有交互
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ihfB0aac-1655216503140)(OS_Note.assets/image-20220612143657733.png)]
Unix
-
最初在贝尔实验室开发,吸收了Multics的思想,1970年在PDP-7运行。
-
重点:
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-29utnb3X-1655216556292)(OS_Note.assets/image-20220614222018688.png)]
Unix系统移植到了PDP-11上,暗示着Unix将被广泛使用
C语言重写了Unix
-
后续:AT&T参与开发并且改进
1982 年,贝尔实验室将UNIX 的多个AT&T 变体合并成为了一个系统
Linux
- Linux 最初是IBM PC ( Intel 80386) 上所用的一个UNIX 变体
- Linus Torvalds 编写(1991年);网上多人作出了重大贡献
- Linux 免费且源代码公开
- 今天, Linux已成为功能全面的UNIX 系统
- Linux 高度模块化且易于配置;源代码公开易于调整
- 没有采用微类核,但是由于其特殊的模块结构,因而也具有很多微内核方法的优点。
Minix
-
三、进程(process)
产生背景
-
进程的概念、目标、定义
进程是正在运行的程序;可分配给处理器并由处理器执行的一个单元
-
进程、程序(在磁盘上的永恒的存在)、线程的关系和异同点
程序是永存的;进程是暂时的,是程序在数据集上的一次执行,有创建有撤销,存在是暂时的
进程有一定的生命期,而程序是指令的集合
-
多个切换的关系:进程状态切换、进程切换、CPU mode的切换
-
时钟中断:避免进程超时后仍要继续运行,当前进程切回就绪态,调入下一个进程执行
-
模式切换:操作系统和用户程序切换
-
进程:程序代码段、与代码相关联的数据集(两个基本元素)和进程控制块
-
进程控制块:一种数据结构,存放进程相关信息,可以中断和恢复进程的执行
-
上下文切换:保存当前进程的状态,恢复另一个进程的状态
HOW
-
进程控制块PCB
-
五状态图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LG07o4nO-1655216503142)(OS_Note.assets/image-20220612143746577.png)]
-
单挂起模型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d94tQRG5-1655216503143)(OS_Note.assets/image-20220612143817297.png)]
-
进程的理解
- OS角度:访问所需求的文件(老师,视角全面)
- CPU角度:进程的切换和OS控制(规则)
- process角度:只管执行代码(学生,视角狭窄,只管本身)
-
进程切换的理解
-
进程状态的切换:状态图,切换时系统状态会发生改变(进程不能自己改变自己的状态)
系统状态的切换不一定导致进程状态的切换(进程请求系统调用接口)
-
进程的切换:复杂成本更高,产生中断不一定有进程的切换
-
CPU mode/态切换:切换下一条指令/将程序计数器置为中断处理程序的开始地址。
-
四、线程
目标:进一步提高CPU的利用率(人为创建线程)
PCB和TCB:先有进程控制块,后有线程控制块
用户态线程ULT和内核态线程KLT
用户态线程被阻塞,那么整个进程将会被阻塞;内核态线程被阻塞,会被系统感知,从而调用下一个线程,保证进程的继续运行
五、并发性,互斥与同步
核心:进程和线程的管理
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qxhn5QP0-1655216503143)(OS_Note.assets/image-20220612143914971.png)]
临界区:并发进程中与共享变量有关的程序段称为临界区
临界资源:共享变量所代表的资源称为临界资源
进程的交互与存在的问题
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zn1pYevD-1655216503144)(OS_Note.assets/image-20220612143947159.png)]
互斥的要求
核心:驻留临界区时间有限、进程之间的干涉问题、临界区权限的分配问题
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IdUzjfQo-1655216503144)(OS_Note.assets/image-20220612144026306.png)]
互斥的实现
中断屏蔽
机械指令
信号量
分类:一般(整数类型的count)、二元(只能去0或1)、互斥(针对同一信号量)和强信号量(阻塞进程出队规则固定,弱信号量相反)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gsvb8diB-1655216503144)(OS_Note.assets/image-20220612144112859.png)]
semwait和semsignal
semwait:申请资源,-1,判断是否负数为阻塞进程
semsignal:释放资源,+1,判断是否<=0释放进程
同步和互斥并存时,先处理同步(semwait)即判断进程是否具备执行的条件(抢占临界资源的资格)
应用
进程数目,可申请资源数目mutex(仓库)、分析关系
同步信号量和互斥信号量(都要以0为判断点)
信号量的数目代表关系,信号量代数总和是资源的数量
生产者-消费者
读者-写者
引入局部变量的原因m
存在的不公平问题(饥饿的写)
Monitor管程(简化信号量)
cwait(挂起)
csignal(执行)
消息传递
分类:阻塞和非阻塞
send(des,mes)
receive(src,mes)
寻址
直接
间接(信箱)
只处理同步没处理互斥?
六、死锁和饥饿
死锁原理
死锁:相互竞争系统资源或者进行通信的进程间的永久阻塞(饥饿的一个子集)
饥饿:具备执行条件的进程得不到执行
可重用资源:指一次仅供一个进程安全使用且不因使用而耗尽的资源:、I/0 通道、内存和外存、设备,以及诸如文件、数据库和信号之类的数据结构
可消费资源:可被创建(生产)和销毁(消耗)的资源 (信号量):可消耗资源的例子有中断、信号、消息和1/0 缓冲区中的信息。
资源分配图:进程、资源、资源数量、有向箭头、方框(S)、圆圈(进程)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eCbqjEHs-1655216503145)(OS_Note.assets/image-20220614152817186.png)]
条件:
- 互斥
- 占有且等待
- 不可抢占
- 循环等待
允许发生
鸵鸟算法
死锁控制
死锁预防
互斥:临界资源的访问限制
占有且等待:一次性请求所有资源
不可占有:被拒绝后释放占有资源
消除循环等待:资源的线性顺序
死锁避免(动态)
进程启动拒绝(矩阵)
满足关系:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nAxTDrGf-1655216503145)(OS_Note.assets/image-20220612144152667.png)]
进程启动条件:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CzpwHnjs-1655216503146)(OS_Note.assets/image-20220612144219666.png)]
资源分配拒绝
状态:当前资源的分配状况
安全状态:可以找到可行的进程执行序列
需求矩阵:C-A
银行家算法(动态)
过程
- 进程请求,状态改变
- 判断改变后的状态是否安全
- 不安全的话就拒绝这个请求,回退
- 最终还是不行,会选择某个进程收回其已持有的资源
特点
- 事先声明进程请求的最大资源
- 占有资源不能退出
死锁检测
过程
- T时刻对进程的需求Q(动态需求数)矩阵
- 找全0行向量,标记
- W=V
- W更新,A更新(不能更新这表示出现死锁)
检测后处理
- 杀死所有进程
- 回退到某个检查点
- 连续退出进程
- 连续抢占资源
处理原则
- 耗费时间少
- 进程输出行数最少
- 估计剩下时间最长
- 分配资源最少
- 最低优先级
鸽笼原理求最大资源进程数
七、内存管理
术语
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AUcCSvG6-1655216503147)(OS_Note.assets/image-20220612144246010.png)]
内存管理需求
-
重定向(重新定位物理地址)
(进程挂起等状态后改变,进程相关数据的地址变化)
作业的逻辑地址翻译成内存的物理地址(重定位寄存器)
基址寄存器
限界寄存器
-
逻辑组织
-
保护(运行时进行地址安全检查)
-
共享
-
物理组织
内存分区
术语:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TA7AsIRf-1655216503148)(OS_Note.assets/image-20220419111925082.png)]
固定分区:内部碎片,利用率低
两种分配方式:1.时间换空间;2.空间换时间
动态分区:外部碎片(内存划分切换时,需要的内存不同)
![image-20220612144316586](OS_Note.assets/image-20220612144316586.png)
空闲分区表:
空闲分区链:
适配规则
最佳适配:大小最接近的区域(从头到尾,但容易导致外部碎片)
首次适配:遍历发现的第一个(头部容易形成很多的外部碎片)
邻近适配:上一次的适配地址开始(查找指针)
快速适应:分类链表,空间换时间
外部碎片压缩技术
拼接和紧凑
动态重定位技术
缺点:需要对程序和数据的地址加以修改,故程序当前无法执行(需要等待,CPU时间浪费)
伙伴系统(二叉树)
关键:一劈两半,释放后合并,迭代伙伴,严格大于一半才可以分配
实例:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bC5rczEX-1655216503148)(OS_Note.assets/image-20220419114459394.png)]
物理地址翻译过程
分页
页帧:内存块
页号+页帧推算物理地址:
![image-20220517104124330](OS_Note.assets/image-20220517104124330.png)
缺页:所需要的页不在CPU中
抖动:连续的缺页造成的情况
页表:每个进程加载都有一个页表
- valid bit:是否在CPU中
- use bit:是否最近使用
- dirty bit:是否修改
分段
段号和偏移量
根据段号划分段的数量,根据偏移量划分段页内偏移量(不会影响可寻址空间的大小)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aNGuPW8y-1655216503149)(OS_Note.assets/image-20220517103840582.png)]
八、虚拟内存
术语:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OMnMJwiq-1655216503149)(OS_Note.assets/image-20220424102620297.png)]
常驻集:进程执行的任何时候都在内存的部分称为进程的常驻集(resident set)
缺页中断:导致CPU执行两次中断,两次磁盘I/O
局部性原理:程序的指令无论是顺序、分支、循环都会在小区域内有局部性
页表指针:指向对应进程的页表的首地址
多级页表:解决单层页表浪费过多空间的问题(根页表常驻内存),但是会有多次内存访问
倒排表:
-
解决问题:页表大小和寻址空间成正比
-
哈希函数和哈希冲突
-
页号
-
进程标识符
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-koungtE9-1655216503150)(OS_Note.assets/image-20220517104904528.png)]
转换检测缓冲区(TLB):高速缓存且并发访问;最坏情况:TLB miss+Page fault;更新和更新局部性实现
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tp0iZy8Y-1655216503151)(OS_Note.assets/image-20220517104952099.png)]
页的大小设置问题
- 太大:内部碎片
- 过小:过多的页表项
缺页率增加原因:相关性变差,局部性降低
缺页率降低的原因:尺寸变大,容量增大了
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j7BEbJZI-1655216503152)(OS_Note.assets/image-20220517105119807.png)]
段页式管理
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LtC6kqQB-1655216503152)(OS_Note.assets/image-20220517105325746.png)]
置换策略
原则:换出的页应该是近期最不可能被访问的页,基于过去的访问行为
帧锁定:操作系统内核、控制指令、I/O缓冲区(不可被置换)
算法:
-
OPT(最佳):不可实现(看将来)
-
LRU(最近最少使用):看访问时间(看过去)
-
FIFO(先进先出):缺页中断
-
时钟算法(CLOCK):看使用位是否为1和查找指针(循环在新加载页后面开始遍历,遇到1后将其置为0(最多两轮遍历即可找到))
-
改进的时钟算法:添加修改位(modified)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8uI93bvH-1655216503153)(OS_Note.assets/image-20220426112017145.png)]
实例:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z0dRsP5p-1655216503154)(OS_Note.assets/image-20220426111622488.png)]
驻留集大小
固定分配、局部置换
可变分配(观察缺页中断发生的次数)
全局置换
局部变换(实时更新局部的大小)
清除策略
页缓存队列(再次使用时会重新加载到页框架):
修改队列和未修改队列(清除时批量写回磁盘)
加载控制
并发影响
进程挂起
驻留集最小
占用空间最大
最大剩余执行窗口
九、单处理器调度
调度类别
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U43b5McN-1655216503154)(OS_Note.assets/image-20220506081933394.png)]
评判标准:
- 吞吐率:单位时间完成的进程数量
- 公平性:不同等级的进程都可以在一定时间内得到执行
- 响应时间:单个进程响应用户的时间
- CPU效率:
![image-20220506082818719](OS_Note.assets/image-20220506082818719.png)
分派器发生事件
功能:选择、保护、恢复上下
文
- 时钟中断
- I/O中断
- 操作系统调用
- 信号
调度算法(important)
准则:面向用户(关注响应时间)、面向系统(关注吞吐率)、可预测性
优先级:静态优先级和动态优先级
决策模式:抢占和非抢占式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ogydy8qE-1655216503155)(OS_Note.assets/image-20220506084910246.png)]
FCFS:先来先服务;静态优先级;对短进程不利;用户交互体验差
轮转:划分短的时间片计时并到时切换(排到就绪队列的末尾);动态;时间片如何选择?(平衡CPU切换时间,进程数量);
虚拟轮转:面向I/O密集的进程,引入辅助队列
SPN:最短进程优先;静态;难以预测需要的时间
SRT:最短剩余时间优先;动态;时间片到时选择
HRRN:最高响应比优先;动态;非抢占;w是等待时间,s是服务时间
反馈:处罚运行时间较长的作业(进程处于优先级最低的队列中后了就不会再降低,但会重复返回该队列);动态
进阶反馈机制:时间片的设置基于所处队列的序号q;
计算:Tr为周转时间或驻留时间,是在系统中的时间、等待时间和执行时间的总和;Ts为平均服务时间,是运行状态的平均时间: p 为处理器的利用率,归一化周转时间=Tr÷Ts
公平共享调度(针对不同的用户)
- 进程优先级计算(优先级,进程CPU计数、组CPU计数)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pHG9Zcsl-1655216503155)(OS_Note.assets/image-20220510105300157.png)]
- 顺序
十一、I/O管理和磁盘调度
基础
磁头定位到磁道所需要的时间称为寻道时间(seek time)
到达扇区开始位置的时间称为旋转延迟(rotational delay)
存取时间=旋转延迟+寻道时间
传输时间:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WXtIh5IR-1655216503156)(OS_Note.assets/image-20220517113046625.png)]
磁盘调度算法比较
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2q1IKEuu-1655216503156)(OS_Note.assets/image-20220517111918487.png)]
期末考试重点
3.
-
PCB
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hrsnVe3k-1655216503157)(OS_Note.assets/image-20220613100459404.png)]
-
程序到进程的过程(编译、加载)
创建进程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-imsEQ3HX-1655216503157)(OS_Note.assets/image-20220613101225112.png)]
进程派生与父子进程:操作系统为进程(父)的显示请求创建一个进程(子)
新建态:程序保留在外存中,通常保留在磁盘中;进程控制块已经创建
就绪态:做好准备,分配好一定的内存
-
操作系统为了实现进程功能需要哪些硬件的支持
- 处理器状态(用户态和系统态)
- 中断
-
操作系统就进程控制提供了哪些操作,并以linux为例
5状态图
-
进程的创建流程,并以linux为例
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0Yk89IUm-1655216503158)(OS_Note.assets/image-20220613103834897.png)]
-
Mode切换、进程切换
用户模式和系统模式:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-80w1K3bo-1655216503158)(OS_Note.assets/image-20220613104222632.png)]
进程的切换一定伴随着Mode的切换
由于中断引起的Mode切换
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4HwDbyoU-1655216503159)(OS_Note.assets/image-20220613104507958.png)]
-
看图从OS/CPU角度来讲解
4.
-
线程的解释,和进程的关系
解释:OS能运算和调度的最小单位
线程:操作系统能够进行运算调度的最小单位
关系:
- 线程又称“轻量级进程”,被包含在进程之中,是进程中的实际运作单位
- 分派给处理机的单位是线程,资源所有权的单位是进程
-
线程的实现方法(3类)
-
ULT和KLT的优缺点
概念:
- ULT:纯ULT中,管理线程的所有工作都由应用程序完成,内核意识不到线程的存在
- KLT:纯KLT 中,管理线程的所有工作均由内核完成。应用级没有线程管理代码,只有一个到内核线程设施的应用编程接口(API)
ULT的优点:
- 进程不用为管理线程切换到内核模式,节省开销
- 可以做到为应用程序量身定做合适的调度算法
- ULT可以在任何操作系统中运行,不需要对底层进行修改
ULT的缺点:
- 执行系统调用时,不仅会引起本线程的阻塞,还会阻塞进程的所有线程
- 多线程程序不能使用多处理技术(内核不知道线程的存在,只分配一个处理器)
混合方法:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bKrNkqMW-1655216503159)(OS_Note.assets/image-20220613111206781.png)]
-
讲述linux的线程机制,创建销毁
创建:pthread_create[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iEIatNz4-1655216503160)(OS_Note.assets/image-20220613111802358.png)]
销毁:pthread_exit()[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IdWsqjYX-1655216503160)(OS_Note.assets/image-20220613111834588.png)]
fork:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FrOXNd9n-1655216503161)(OS_Note.assets/image-20220613112058576.png)]
5
-
讲述并发性要解决的四个问题(同步互斥,饥饿死锁)
(同步互斥,饥饿死锁)
-
解决同步互斥的几类方法(软件、硬件、系统提供的信号量和管程)
硬件:
- 中断禁用(保持进程在运行,持续占有系统服务):代价大,面对多处理器不能保证互斥
- 专用机器指令(禁止其他指令访问):简单且易于证明,但可能导致饥饿和死锁
软件: int turn表示该谁进入临界区,boolean flag【】表示某进程是否准备好进入临界区
- peterson算法
- dekkers算法
信号量:
PV操作:P:-1;V:+1
强信号量和弱信号量有什么区别?
-
强信号量:被阻塞时间最久的进程最先从队列释放(先进先出,FIFO)
-
弱信号量:没有规定进程从队列中移出顺序的信号量。
-
描述如何用硬件解决互斥,并描述其缺点(关中断。。。,特殊指令。。。)(上述已说明)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TM7Vhfg6-1655216503161)(OS_Note.assets/image-20220614134547440.png)]
-
为什么要关中断(在进程进入临界区之前关闭)
保持进程在运行,不出现上下文切换,持续占有系统服务从而实现互斥
-
信号量和中断的利用
参照梁刚老师的pdf和上面的笔记
-
条件竞争和其他的描述
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sBr4SwSp-1655216503162)(OS_Note.assets/image-20220614135453104.png)]
6
-
死锁的概念并举例描述
(deadlock)**:**一组相互竞争系统资源或进行通信的进程间的“永久”阻塞。当一组进程中的每个进程都在等待某个事件(典型情况下是等待释放所请求的资源),而仅有这组进程中被阻塞的其他进程才可触发该事件时,就称这组进程发生了死锁。
举例:
-
交通死锁,4 辆汽车都忽视这一规则而继续前行到十字路口时,每辆汽车都会占据一个资源( 一个象限) ,且由于所需要的第二个资源被另一辆汽车占有,因此它们都不能通行,千是发生真正的死锁。
-
联合进程图描述死锁:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ybuwNXTb-1655216503162)(OS_Note.assets/image-20220614141647284.png)]
死锁情况一:Q 获得B; 然后P 获得A; 由千在继续执行时, Q 阻塞在A 上而P 阻塞在B 上,因而死锁
不可避免。死锁和活锁的区别:
处于活锁的实体是在不断的进行尝试,只是每次都失败。
处于死锁的实体表现为等待,资源被占有而在进行等待。
-
-
死锁的条件
- 互斥
- 保持占有
- 非抢占
- 循环等待
-
死锁的数学描述方法(2个)
资源分配图
矩阵
-
解决死锁方法的类别(4)
-
死锁预防(静态)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PWKIrTry-1655216503163)(OS_Note.assets/image-20220614150220170.png)]
-
死锁避免
若一个进程的请求会导致死锁,则不启动该进程(进程启动拒绝)
若一个进程增加的资源请求会导致死锁,则不允许这一资源分配(资源分配拒绝:银行家算法)特点:
- 不能确切地预测死锁,它仅是预料死锁的可能性并确保永远不会出现这种可能性
- 无须死锁预防中的抢占和回滚进程,且与死锁预防相比限制较少
- 必须事先声明每个进程请求的最大资源
- 所讨论的进程必须是无关的,即它们的执行顺序必须没有任何同步要求的限制
- 分配的资源数量必须是固定的
- 在占有资源时,进程不能退出。
-
死锁检测(标记进程)
检测到后的死锁恢复:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ML8ma9ep-1655216503163)(OS_Note.assets/image-20220614145429696.png)]
特点:
- 尽早检测死锁,算法简单
- 频繁的检测会耗费较多的处理器时间
- 检测算法类似银行家(额外定义请求矩阵),但是时机不同:
-
死锁解除
常用的方法是撤销或挂起一些进程,以便回收一些资源,再将这些资源分配给已经处于阻塞状态的进程,使之转为就绪态,以继续运行。
-
7
局部性原理:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ezj4PhY2-1655216503164)(OS_Note.assets/image-20220614221341586.png)]
适配方法:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CuLXmNml-1655216503164)(OS_Note.assets/image-20220614221405403.png)]
三个地址:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fwXscE1h-1655216503165)(OS_Note.assets/image-20220614221426443.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4jJ0rICj-1655216503165)(OS_Note.assets/image-20220614153818362.png)]
- 分页
- 页表给出了该进程每页对应的页框的位置
- 逻辑地址到物理地址的转换需要由硬件完成
- 导致内部碎片(碎片属于进程)
- 对于程序员是透明的
- 分段
- 段表不仅要表明段在内存的初始位置,还要指明长度(看偏移量,判断无效地址)
- 对于程序员是可见的
- 导致外部碎片(过小,无法使用)
- 更容易实现信息的共享和保护
- 页表、段表的使用和构造的小问题
8
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hthcENIS-1655216503166)(OS_Note.assets/image-20220614153752408.png)]
-
虚拟内存的实现流程(TLB转换检测缓冲区)
每次虚存访问都可能会引起两次物理内存访问: 一次取相应的页表项,另一次取需要的数据。
因此,简单的虚拟内存方案会导致内存访问时间加倍。为克服这个问题,大多数虚拟内存方案都为页表项使用了一个特殊的高速缓存,通常称为转换检测缓冲区。
- 在缓冲区,直接命中形成物理地址
- 不再缓冲区,在内存,更新TLB,使TLB包含该页表项,命中形成物理地址
- 不在内存,缺页中断,辅存换入,更新页表,重新查询TLB
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6yRij4h0-1655216503166)(OS_Note.assets/image-20220614155100516.png)]
-
内存管理设计基于的选择
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mMw79ei6-1655216503167)(OS_Note.assets/image-20220614154630399.png)]
-
页调度算法
总体:全局和局部[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9JxJDWC4-1655216503167)(OS_Note.assets/image-20220614154730807.png)]
局部:如何选择页
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HXY9ZoRz-1655216503167)(OS_Note.assets/image-20220614154556960.png)]
9
-
三个调度
概念:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0vIIs9NM-1655216503168)(OS_Note.assets/image-20220614160126851.png)]
解释:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jNWwczbN-1655216503168)(OS_Note.assets/image-20220614160306898.png)]
-
调度规则(选择题)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TnNGQ0ak-1655216503169)(OS_Note.assets/image-20220614160353724.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vq5uOHzn-1655216503169)(OS_Note.assets/image-20220614160829896.png)]
12
-
文件结构:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-46kdUGg1-1655216503170)(OS_Note.assets/image-20220614221843458.png)]
-
文件系统软件架构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P876Cxj6-1655216503170)(OS_Note.assets/image-20220614221930318.png)]
-
五种逻辑组合方法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y3Re5ih0-1655216503171)(OS_Note.assets/image-20220614222018688.png)]
-
物理层的三种方式
-
看图说话(各种方式下的索引分配)
-
FAT
-
SElinux和其安全机制