·作业管理之进程调度
进程的调度
- 进程调度概述
- 进程调度算法
多道程序设计
进程调度是指计算机通过决策决定那个就绪进程可以获得CPU使用权
多道程序设计
- 保留旧进程的运行信息,请出旧进程(收拾包袱)
- 选择新进程,准备运行环境并分配CPU(新进驻)
进程的调度
-
就绪队列的排队机制
-
选择运行进程的委派机制
-
新老进程的上下文切换机制
进程的调度
- 非抢占式的调度
- 抢占式的调度
非抢占式的调度
抢占式的调度
进程调度算法
-
先来先服务调度算法
-
短进程优先调度算法
-
高优先权优先调度算法
-
时间片轮转调度算法
先来先服务调度算法
短进程优先调度算法
- 调度程序优先选择就绪队列中估计运行时间最短的进程
- 短进程优先调度算法不利于长作业进程的执行
高优先权优先调度算法
- 进程附带优先权,调度程序优先选择权重高的进程
- 高优先权优先调度算法使得紧迫的任务可以优先处理
时间片轮转调度算法
-
按先来先服务的原则排列就绪进程
-
每次从队列头部取出待执行进程,分配一个时间片执行
-
是相对公平的调度算法,但不能保证及时响应用户。
作业管理之死锁
死锁是指两个或两个以上的进程在执行进程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
- 死锁的产生
- 死锁的处理
死锁的产生
- 竞争资源
- 进程调度顺序不当
竞争资源
- 共享资源数量不满足各个进程需求
- 各个进程之间发生资源进程导致死锁
进程调度顺序不当
死锁的必要条件
-
互斥条件
-
请求保持条件
-
不可剥夺条件
-
环路等待条件
互斥条件
- 进程对资源的使用是排他性的使用
- 某资源智能由一个进程使用,其他进程需要使用只能等待
请求保持条件
-
进程至少保持一个资源,又提出新的资源请求
-
新资源被占用,请求被阻塞
-
被阻塞的进程不释放自己保持的资源。
不可剥夺条件
- 进程获得的资源在未完成使用前不能被剥夺
- 获得的资源只能由进程本身释放
环路等待条件
死锁的处理
- 预防死锁的方法
- 银行家算法
预防死锁的方法
摈弃请求保持条件
- 系统规定进程运行之前,一次性申请所有需要的资源
- 进程在运行期间不会提出资源请求,从而摒弃请求保持条件。
摒弃不可剥夺条件
- 当一个进程请求新的资源得不到满足时,必须释放占有的资源
- 进程运行时占有的资源可以被释放,意味着可以被剥夺
摒弃环路等待条件
- 可用资源线性排序,申请必须按照需要递增申请
- 线性申请不再形成环路,从而摒弃了环路等待条件
银行家算法
- 是一个可操作的著名的避免死锁的算法
- 以银行借贷系统分配策略为基础的算法
银行家算法
-
客户申请的贷款是有限的,每次申请需声明最大资金量
-
银行家在能够满足贷款时,都应该给用户贷款
-
客户 在使用贷款后,能够及时归还贷款
存储管理之内存分配与回收
早期计算机编程并不需要过多的存储管理
随着计算机和程序越来越复杂,存储管理成为必要
-
确保计算机有足够的内存处理数据
-
确保程序可以从可用内存中获取一部分内存使用
-
确保程序可以归还使用后的内存以供其他程序使用
内存分配的过程
单一连续分配
这里如果为0代表没有使用
为1的话代表已经被使用
动态分区分配算法
-
首次适应算法(FF算法)
-
最佳适应算法(BF算法)
-
快速适应算法(QF算法)
内存回收的过程
内存回收的过程
存储管理之内存分配与回收
- 内存分配的过程
- 内存回收的过程
-
页式存储管理
-
段式存储管理
-
段页式存储管理
页式存储管理
-
将进程逻辑空间等分成若干大小的页面
-
相应的把物理内存空间分成与页面大小的物理块
-
以页面为单位把进程空间装进物理内存中分散的物理块
段式存储管理
-
将进程逻辑空间划分成若干段(非等分)
-
段的长度由连续逻辑的长度决定
-
主函数MAIN、子函数X、子函数Y等
段页存储和页式存储都离散地管理了进程的逻辑空间
-
页是物理单位,段是逻辑单位
-
分页是为了合理利用空间,分段是满足用户要求
-
页大小由硬件固定,段长度可动态变化
-
页表信息是一维的,段表信息是二维的。
段页式存储管理
-
分页可以有效提高内存利用率(虽然说存在页内碎片)
-
分段可以更好满足用户需求
-
两者结合,形成段页式存储管理
存储管理之虚拟内存
一个游戏十几G,物理内存只有4G,那这个游戏是怎么运行起来的?
-
虚拟内存概述
-
程序的局部性原理
-
虚拟内存的置换算法
虚拟内存概述
-
有些进程实际需要的内存很大,超过物理内存的容量
-
多道程序设计,使得每个进程可用物理内存更加稀缺
-
不可能无限增加物理内存,物理内存总有不够的时候
-
虚拟内存是操作系统内存管理的关键技术
-
使得多道程序运行和大程序运行成为现实
-
把程序使用内存划分,将部分暂时不适用的内存放置在辅存。
程序的局部性原理
局部性原理是指CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中。
虚拟内存的置换算法
-
先进先出算法(FIFO)
-
最不经常使用算法(LFU)
-
最近最少使用算法(LRU)
-
替换策略发生在Cache-主存层次、主存-辅存层次
-
Cache-主存层次的替换策略主要是为了解决速度问题
-
主存-辅存层次主要是为了解决容量问题
Linux的存储管理
- Buddy内存管理算法
- Linux交换空间
Buddy内存管理算法
-
Buddy 算法是经典的内存管理算法
-
算法基于计算机处理二进制的优势具有极高的效率
-
算法主要是为了解决 内存外碎片 的问题
Linux交换空间
1.交换空间(Swap)是磁盘的一个分区
2.Linux物理内存满时,会把一些内存交换至Swap空间
3.Swap空间是初始化系统时配置的
查看系统Swap空间
-
冷启动内存依赖
-
系统睡眠依赖
-
大进程空间依赖