操作系统知识点总结
Posted 阿呆狐狸
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统知识点总结相关的知识,希望对你有一定的参考价值。
第二章:进程管理
1、什么是进程:
- 进程的基本概念
- 进程的结构和特征
- 进程与线程
2、进程是怎样运行的:
- 进程控制
- 即os对进程实现有效的管理,包括创建、撤销、挂起、阻塞、唤醒、进程切换,os通过原语操作实现进程控制
- 原语:
- 原语由若干条指令组成,完成特定的功能,是一种原子操作
- 原语的特点:
- 原子操作,要么全做,要么全不做,操作过程不会被中断
- 在管态/内核态/系统态下执行,常驻内存
- 是内核三大支撑功能之一(中断处理、时钟处理、原语操作)
- 整个操作系统所有的操作都是基于中断的
- 每一个原语都是一小段程序
- 专门用于控制进程的四种原语(原语有很多种,但是控制进程的有四种)
- 创建原语 create
- 阻塞原语 block
- 唤醒原语 wakeup
- 撤销原语 destroy
- 挂起原语 suspend
- 激活原语 active
- 阻塞:当前进程调用阻塞原语(注意:阻塞是一种主动行为)
- 阻塞状态没有人去唤醒就是死锁
- 阻塞和唤醒是成对出现的,有阻塞就有唤醒,不然就成了死锁
- 处理机调度:
- 根据一定的算法和原则,将处理机资源进行重新分配的过程
- 前提:进程数或者作业数远远大于处理机数
- 目的:提高资源利用率,减少处理机空余时间
- 调度程序:一方面要满足系统用户需求(快速响应),另一方面要考虑系统整体效果(系统平均周转时间)和调度算法本身的开销
- 处理机调度的层次:
- 高级调度/作业调度
- 把后备作业调进内存(在内存中运行的是进程,没有运行的叫做作业)
- 调入一次、调出一次
- 调度频率最低
- 中级调度/内存调度:
- 将进程调致外存(挂起操作),条件合适在调回内存(激活操作)
- 在内外存对换区进行内存对换(对换区是指在外存划出一片空间供内存使用,也叫做虚拟内存)
- 低级调度/进程调度
- 从就绪队列选取进程分配给处理机
- 最基本的调度,频率非常高(相当于一个cpu时间片)
- 处理机调度方式:
- 抢占式(剥夺式)调度:
- 立即暂停当前进程
- 将CPU分配给另外一个进程
- 原则:优先权/短进程优先/时间片原则
- 非抢占式(非剥夺式)调度:
- 若有进程请求执行
- 等待当前进程完成或者阻塞
- 适用于批处理,不适用于分时、实时系统。
- 处理机调度时机:
- 进程运行完毕
- CPU时间片用完
- 执行io操作
- 执行某种原语操作
- 高优先级进程申请运行(剥夺式调度)
- 处理机调度过程:
- 保存镜像:记录进程现场信息
- 调度算法:确认处理机分配原则
- 进程切换:分配处理机给其他进程
- 处理机回收:从进程回收处理机
- 进程调度:
- 调度算法指标:
- cpu利用率 = cpu使用时间/系统总时间
- 系统吞吐量 = CPU完成作业数/总时间(单位时间内完成作业的数量),如果长作业执行得多短作业执行得少,吞吐量就不高;如果长作业执行得少,短作业执行得多,则吞吐量高
- 周转时间 = 作业完成时间 - 作业提交时间
- 带权周转时间 = 周转时间/实际运行时间
- 等待时间:作业等待处理机调度的时间
- 响应时间:首次提交请求到响应的时间间隔
- 调度算法:
- 作业调度:
- 先来先服务:(FCFS)
- 短作业优先 :(SJF)
- 高响应比优先调度(HRRN)
- 优先级调度:(PSA)
- 时间片轮转调度:(RR)
- 多级反馈调度:(MFQ)
- 进程是怎样运行的
- 进程调度:(先来先服务)
- 算法内容:调度作业/就绪队列中最先入队者,等待操作完成或者阻塞
- 算法原则:按照作业或者进程到达顺序服务(执行)
- 调度方式:非抢占式调度
- 适用场景:作业/进程调度
- 优缺点:
- 有利于cpu繁忙型作业。充分利用cpu资源
- 不利于i/o繁忙型作业,使它饥饿
- 进程调度(短作业优先)
- 算法内容:所需要服务时间最短的作业或者进程优先服务(调度之前先估算不同的作业运行的时间)
- 算法原则:追求最少的平均带权周转时间(带权周转时间 = 周转时间/实际运行时间)
- 调度方式:非抢占式
- 特例:最短剩余时间优先:(SRTN抢占式):有的时候很短进程都完成了一半多,看看谁的剩余时间最少谁就优先执行
- 适用场景:作业/进程调度
- 优缺点:
- 平均等待/周转时间最少
- 长作业周转时间会增加或者饥饿
- 估算时间不准确,不能保证紧迫任务及时执行
- 进程调度:(高相应比优先调度 HRRN)
- 算法内容:结合FCFS和 SJF ,综合考虑等待时间和服务时间计算相应比,高的优先服务
- 算法原则:综合考虑作业/进程的等待时间和服务时间
- 调度方式:非抢占式
- 适用场景:作业/进程
- 相应比计算:
- 相应比 = (等待时间+服务时间)/服务时间 >1
- 只有当前进程放弃执行权(完成/阻塞)时,重新计算相应比(计算相应比也是需要时间成本的)
- 长作业等待越久,相应比越高,越容易获得执行权
- 但是不能解决紧迫任务的情况
- 进程调度:优先级调度
- 算法内容:又叫优先权调度,按照作业/进程的优先级调度(紧迫程度)
- 算法原则:优先级越高的作业/进程先调度
- 调度原则:抢占/非抢占式(并不能获得及时执行)
- 适用场景:作业/进程调度
- 优先级设置原则:
- 静态/动态优先级(静态优先级是在程序员编写程序时给的优先级,进程创建时给的优先级,动态优先级是进程运行过程中动态的调整优先级)
- 系统进程优先级>用户进程优先级
- 交互型优先级>非交互型优先级 (交互型操作用户在等待结果,所以优先级要高 )
- I/O型优先级>计算型优先级
- 低优先级进程可能产生饥饿
- 进程调度:时间片轮流调度
- 算法内容:按照进程到达就绪序列的顺序,轮流分配时间片去执行,时间用完则剥夺cpu执行权,如果时间片执行完程序还没执行完,则将程序放到就绪队列队尾继续排队等待执行,又时钟中断信号提醒cpu时间到了
- 算法原则:公平、轮流为每个进程服务,进程在一定时间都会得到响应
- 调度方式:抢占式:由时钟中断确定时间到达
- 使用场景:进程
- 优缺点:
- 公平、响应快、适用于分时系统
- 时间片决定因素:系统响应时间、就绪队列进程数量、系统处理能力(可能会考到)
- 时间片太大:相当于FCFS(先来先服务),太小,处理机切换频繁,系统开销大
- 注意:不同的进程得到的时间片不一样
- 进程调度:多级反馈调度算法(MFQ)
- 算法内容:
- 设置多个按照优先级排序的就绪队列
- 优先级从高到低,时间片从小到大
- 新进程采用队列降级法
- 进入第一级队列,按照FCFS分时间片
- 没有执行完,移到下一级等待执行
- 前面队列不为空,则不执行后续队列进程
- 算法原则:集前几种算法优点,相当于 PSA+RR(优先级算法+时间片调度算法)
- 调度方法:抢占式
- 适用场景:进程调度
- 优缺点:
- 对各种类型相对公平;快速响应
- 终端型作业用户,短作业优先
- 批处理作业用户:周转时间短
- 长批处理作业用户:在前几个队列部分执行,不会产生长期饥饿的情况,有可能导致一定程度的饥饿,但是不会一直饥饿
3、进程之间是怎样协作的:
- 进程协作的方式:
- 进程通信
- 进程同步
- 进程通信:
- 进程通信的概念:进程之间的信息交换
- 进程是资源分配的独立单位,各进程内存空间彼此独立
- 一个进程不能随意访问其他进程的地址空间
- 进程通信的特点:
- 共享存储
- 消息传递
- 管道通信
- 共享存储:有一个存储空间是多个进程可以同时访问的:(注意:这里的存储空间并不属于哪个进程,而是属于操作系统,如果进程与进程之间想要通信,就向操作系统申请一块内存空间,这个空间多个进程都可以操作它)
- 基于共享数据结构的通信方式:
- 多个进程共用某个数据结构(os提供并控制)
- 由用户(程序员负责同步处理)
- 低级通信:可以传递少量数据,效率低
- 基于共享存储区的通信方式:
- 多个进程共用内存中的存储区域(这里的内存由操作系统提供的、固定大小的区域)
- 由进程控制数据的形式和操作方式
- 实际操作过程中进程会将那块共享的内存空间并到自己的进程内部,别的进程也会将那块空间看做自己的地址空间,最终。如果所有的进程都完成后,会将那块内存空间释放掉,还给操作系统
- 数据收发双方不可见,存在安全隐患
- 高级通信,可以传递大量数据,效率高
- 注意:无论是哪种通信方式都是由操作系统去分配和管理的
- 消息传递:
- 直接通信:点到点发送
- 发送和接收时指明双方进程ID
- 每个进程指明一个消息缓冲队列
- 真正操作收发消息动作的是操作系统,用发送和接收的两个原语
- 间接通信:广播信箱
- 以信箱位媒介,作为中间实体
- 发进程将消息发送到邮箱,收进程从邮箱读取
- 可以广播,容易建立双向通信链
以上是关于操作系统知识点总结的主要内容,如果未能解决你的问题,请参考以下文章