导图社区 操作系统程序进程考试知识点背记
操作系统程序进程考试知识点背记,一张图带你完全了解相关内容,通过思维导图帮你提高效率,赶紧来试一试吧~
网店详情页排版方法分享~包括中心页面组成,优质详情必备,详情页的排版参考方法。感兴趣的小伙伴可以看看哦~
喷绘色彩基础培训方案,内容涵盖色彩基础,喷绘写真。框架清晰,内容丰富,希望对小伙伴有所帮助哦~
酒窖营销计划方案,包括结果目标,过程目标。框架清晰,内容丰富,有需要的小伙伴可以看看哦~ 可供大家参考,借鉴,交流。
社区模板帮助中心,点此进入>>
论语孔子简单思维导图
《傅雷家书》思维导图
《童年》读书笔记
《茶馆》思维导图
《朝花夕拾》篇目思维导图
《昆虫记》思维导图
《安徒生童话》思维导图
《鲁滨逊漂流记》读书笔记
《这样读书就够了》读书笔记
妈妈必读:一张0-1岁孩子认知发展的精确时间表
操作系统程序进程考试知识点背记
基础知识
操作系统的特征
并发
概念
两个或多个事件在同一时间间隔发生
为什么重要
正是由于并发特性,OS才能有效利用系统资源,提高系统吞吐率
操作系统最重要的特征
共享
虚拟
同步
进程相关
进程
基本状态
就绪
阻塞
执行
相互转化
就绪状态在调度程序为之分配了处理机后便可执行,转为执行态
执行的进程因为时间片已完而被剥夺处理机暂停执行时,转为就绪态
发生某事件,当前进程执行受阻(如访问临界资源,该资源被其他进程访问),无法继续执行,转为阻塞态
概要
PV操作
死锁相关
死锁
预防死锁的方法
破坏“请求和保持”条件
进程在请求资源时,不能持有不可抢占资源
第一种协议
所有进程在开始运行前,必须一次性地申请其在整个运行过程中所需的全部资源
可避免死锁的原因
进程运行期间,不会再申请资源,破坏了“请求”条件
进程运行前,只要有一种资源不能满足进程要求,即使其他资源满足需求,也不将资源分配给该进程,破坏“保持”条件
优点
简单、易行、安全
缺点
资源浪费严重
并不是所有申请到的资源会在进程运行的所有时间都被使用
进程经常发生饥饿现象
由于获取所有资源才会运行,有可能某几个进程一直得不到满足,则该进程一直不能运行
第二种协议
允许进程只获得初期所需的资源后便开始运行,在运行中逐步释放分配给自己的所有资源后再申请新的资源
可以快速完成任务
避免饥饿现象
提高设备利用率
对第一种协议的改进
破坏“循环等待”条件
对所有资源类型进行线性排序,给每个资源类型赋予唯一序号,当进程要申请比其所有已持有资源序号都小的资源时,必须先释放其持有的大于等于新申请资源序号的资源,然后才能申请低序号资源
避免死锁的原理
避免了资源的环路等待
资源利用率和系统吞吐量都有较为明显的改善
各类资源的序号必须相对稳定,限制了新类型设备的增加
作业使用的各类资源的序号与系统指定的资源序号不一致,造成资源浪费
按照这种顺序申请资源,势必会限制用户简单、自主地编程
破坏“不可抢占”条件
当已经持有了不可抢占资源的进程提出新的资源请求但不能得到满足时,它必须释放已经保持的所有资源,待以后需要时再重新对之前持有的资源进行申请,相当于该进程已经持有的资源被抢占
延长了进程的周转时间
增加了系统开销
降低了系统吞吐量
可能会造成前一阶段工作的失效
避免死锁
利用银行家算法避免死锁
算法思想
1:每一个新进程进入系统时,必须申明运行过程中可能需要的每种资源类型的最大数目
2:系统首先判断是否有足够资源分配给该进程
无:进程无法执行
有:判断将这些资源分配该该进程后是否会使系统处于不安全状态
会:不分配资源
不会:将资源进行分配
算法所需的数据结构
系统可用资源向量Available,含有m个元素的数组
Available[j]=k表示第j个资源当前有k个
最大需求矩阵Max,n*m矩阵
Max[i,j]=K表示第i个进程对第j个资源的需求数为k
分配矩阵Allocation,n*m矩阵
Allocation[i,j]=k表示第i个矩阵已经拥有的j类资源数为k
需求矩阵Need,n*m矩阵
Need[i,j]=k表示第i个进程目前还需的j类资源数为k
Need[i,j]=Max[i,j]-Allocation[i,j]
银行家算法
Request[i,j]<=Need[i,j]
否
认为出错,因为它需要的资源数已经超过它所宣布的最大值
是
Request[i,j]<=Available[j]
尚无足够资源,第i个进程需等待
尝试将资源分配给进程i
Avaliable[j]=Avaliable[j]-Request[i,j]; Allocation[i,j]=Allocation[i,j]+Request[i,j]; Need[i,j]=Need[i,j]-Request[i,j];
系统执行安全性算法,检查此次资源分配后系统是否处于安全状态
非安全态
本次尝试作废,恢复原来的资源分配状态,让进程i等待
安全态
正式将资源分配给i进程,完成此次分配
Request[i,j]表示进程 i对资源 j的请求数
安全性算法
所需数据类型
工作向量work,含有m个元素的数组
表示系统可提供给进程继续运行所需的资源数目,执行安全性算法时work=Available
Finish
表示系统是否有足够资源分配给该进程,开始时Finish[i]=false,获取到足够资源后,再令Finish[i]=false
算法流程
从进程集合中找出一个进程i,满足: Finish[i]=false; Need[i,j]<=work[j];
未找到
找到
进程i获得该资源后可顺利执行,直到完成,释放之前占用的资源,即执行: Work[j]=Work[j]+Allocation[i,j]; Finish[i]=true;
如果所有进程的Finish[i]=true都满足
系统处于安全态
系统处于不安全态
程序的链接
静态链接方式
程序运行前将各目标模块及他们所需的库函数链接成一个完整的装配模块,以后不再拆开
装入时动态链接
装入内存时采用边装入边链接的链接方式
便于修改和更新
便于实现对目标模块的共享
实现无法知道哪些模块要运行,所以采用全部链接的方法,资源浪费
运行时动态链接
程序执行时再按需进行链接
连续分配存储管理方式
基于顺序搜索的动态分区分配算法
首次适应算法
从链头开始找
循环首次适应算法
从上一次找到空闲分区的下一个空闲分区开始找
最佳适应算法
分区链从小到大排序,每次找到的都是符合条件的最小分区
最坏适应算法
与最佳适应算法策略相反
适用于不太大、内存分区不多、相应空闲链较短的系统
局部性
局部性原理
定义
程序执行时呈现出局部性规律,即在一较短时间内,程序的执行仅局限于某个部分,它所访问的存储空间也局限于某个区域。
具体体现
时间局限性
如果程序中某条指令(数据)被执行(访问),则不久后该指令可能再次执行(访问)
空间局限性
一旦程序访问某个存储单元,在不久之后,其附近的存储单元将被访问
保证虚拟内存的性能不会有太大影响