处理器(CPU):控制操作,执行功能
内存(Main memory):存储数据和程序
输入输出模块(I/O module):辅助内外的数据移动
系统总线(System,bus):模块之间的通信
中断:提高CPU效率(进程替换),使CPU在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
Minix
进程的概念、目标、定义
进程是正在运行的程序;可分配给处理器并由处理器执行的一个单元
进程、程序(在磁盘上的永恒的存在)、线程的关系和异同点
程序是永存的;进程是暂时的,是程序在数据集上的一次执行,有创建有撤销,存在是暂时的
进程有一定的生命期,而程序是指令的集合
多个切换的关系:进程状态切换、进程切换、CPU mode的切换
时钟中断:避免进程超时后仍要继续运行,当前进程切回就绪态,调入下一个进程执行
模式切换:操作系统和用户程序切换
进程:程序代码段、与代码相关联的数据集(两个基本元素)和进程控制块
进程控制块:一种数据结构,存放进程相关信息,可以中断和恢复进程的执行
上下文切换:保存当前进程的状态,恢复另一个进程的状态
进程控制块PCB
五状态图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LG07o4nO-1655216503142)(OS_Note.assets/image-20220612143746577.png)]
单挂起模型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d94tQRG5-1655216503143)(OS_Note.assets/image-20220612143817297.png)]
进程的理解
进程切换的理解
进程状态的切换:状态图,切换时系统状态会发生改变(进程不能自己改变自己的状态)
系统状态的切换不一定导致进程状态的切换(进程请求系统调用接口)
进程的切换:复杂成本更高,产生中断不一定有进程的切换
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
银行家算法(动态)
过程
特点
过程
检测后处理
处理原则
鸽笼原理求最大资源进程数
术语
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AUcCSvG6-1655216503147)(OS_Note.assets/image-20220612144246010.png)]
重定向(重新定位物理地址)
(进程挂起等状态后改变,进程相关数据的地址变化)
作业的逻辑地址翻译成内存的物理地址(重定位寄存器)
基址寄存器
限界寄存器
逻辑组织
保护(运行时进行地址安全检查)
共享
物理组织
术语:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TA7AsIRf-1655216503148)(OS_Note.assets/image-20220419111925082.png)]
固定分区:内部碎片,利用率低
两种分配方式:1.时间换空间;2.空间换时间
动态分区:外部碎片(内存划分切换时,需要的内存不同)
空闲分区表:
空闲分区链:
适配规则
最佳适配:大小最接近的区域(从头到尾,但容易导致外部碎片)
首次适配:遍历发现的第一个(头部容易形成很多的外部碎片)
邻近适配:上一次的适配地址开始(查找指针)
快速适应:分类链表,空间换时间
外部碎片压缩技术
拼接和紧凑
动态重定位技术
缺点:需要对程序和数据的地址加以修改,故程序当前无法执行(需要等待,CPU时间浪费)
关键:一劈两半,释放后合并,迭代伙伴,严格大于一半才可以分配
实例:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bC5rczEX-1655216503148)(OS_Note.assets/image-20220419114459394.png)]
页帧:内存块
页号+页帧推算物理地址:
缺页:所需要的页不在CPU中
抖动:连续的缺页造成的情况
页表:每个进程加载都有一个页表
段号和偏移量
根据段号划分段的数量,根据偏移量划分段页内偏移量(不会影响可寻址空间的大小)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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)]
评判标准:
分派器发生事件
功能:选择、保护、恢复上下
文
准则:面向用户(关注响应时间)、面向系统(关注吞吐率)、可预测性
优先级:静态优先级和动态优先级
决策模式:抢占和非抢占式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ogydy8qE-1655216503155)(OS_Note.assets/image-20220506084910246.png)]
FCFS:先来先服务;静态优先级;对短进程不利;用户交互体验差
轮转:划分短的时间片计时并到时切换(排到就绪队列的末尾);动态;时间片如何选择?(平衡CPU切换时间,进程数量);
虚拟轮转:面向I/O密集的进程,引入辅助队列
SPN:最短进程优先;静态;难以预测需要的时间
SRT:最短剩余时间优先;动态;时间片到时选择
HRRN:最高响应比优先;动态;非抢占;w是等待时间,s是服务时间
反馈:处罚运行时间较长的作业(进程处于优先级最低的队列中后了就不会再降低,但会重复返回该队列);动态
进阶反馈机制:时间片的设置基于所处队列的序号q;
计算:Tr为周转时间或驻留时间,是在系统中的时间、等待时间和执行时间的总和;Ts为平均服务时间,是运行状态的平均时间: p 为处理器的利用率,归一化周转时间=Tr÷Ts
公平共享调度(针对不同的用户)
磁头定位到磁道所需要的时间称为寻道时间(seek time)
到达扇区开始位置的时间称为旋转延迟(rotational delay)
存取时间=旋转延迟+寻道时间
传输时间:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WXtIh5IR-1655216503156)(OS_Note.assets/image-20220517113046625.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2q1IKEuu-1655216503156)(OS_Note.assets/image-20220517111918487.png)]
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角度来讲解
线程的解释,和进程的关系
解释:OS能运算和调度的最小单位
线程:操作系统能够进行运算调度的最小单位
关系:
线程的实现方法(3类)
ULT和KLT的优缺点
概念:
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)]
讲述并发性要解决的四个问题(同步互斥,饥饿死锁)
(同步互斥,饥饿死锁)
解决同步互斥的几类方法(软件、硬件、系统提供的信号量和管程)
硬件:
软件: int turn表示该谁进入临界区,boolean flag【】表示某进程是否准备好进入临界区
信号量:
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)]
死锁的概念并举例描述
(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)]
特点:
死锁解除
常用的方法是撤销或挂起一些进程,以便回收一些资源,再将这些资源分配给已经处于阻塞状态的进程,使之转为就绪态,以继续运行。
局部性原理:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hthcENIS-1655216503166)(OS_Note.assets/image-20220614153752408.png)]
虚拟内存的实现流程(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)]
三个调度
概念:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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)]
文件结构:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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和其安全机制