操作系统之进程(续)

一个进程需要同时做多件事,从而引入了线程

引入了线程之后,线程成为了程序执行流的最小单位,线程是基本的CPU执行单元

引入线程后进程是资源分配的基本单位,而线程是调度的基本单位

线程的属性

每个线程都有一个线程ID,线程控制块(TCB),线程几乎不拥有系统资源,所有的系统资源都在进程那里

调度

  • 确定某种规则来决定处理多个任务的顺序

高级调度(也称作业调度)

  • 外存与内存之间的调度,因为内存空间有限,不能马上执行的作业存放在外存上的后备队列中

引入虚拟的存储技术后,可将暂时不能运行的进程调度到外存等待(挂起)【在这个过程中PCB并不一起被调到外存,而是一直留在内存中,并且记录所有有关进程的信息,如进程在外存中所处位置信息等】,等它重新具备运行处理机且内存有空间,重新调入内存

中级调度(也称内存调度)

  • 决定将哪个处于挂起的进程重新调入内存

在这里插入图片描述

低级调度(也称进程调度)

  • 按照某种方法和策略从就绪队列中还原一个进程,将处理机分配给它。

进程调度的时机

进程调度

  • 按照某种算法从就绪队列中选择一个进程为其分配处理机

需要进行进程调度与切换的情况

  1. 当前运行的进程主要放弃处理机(中断/异常/主动阻塞)
  2. 当前运行的进程被动放弃处理机(时间片到/IO中断/优先级)

不能进行进程调度与切换的情况

  1. 在处理中断的过程中,因为中断处理很复杂
  2. 进程在操作系统内核临界区中
  3. 在原子操作的进程中

临界资源

  • 一个时间段内只允许一个进程使用的资源,各进程需要互斥地访问临界资源

临界区

  • 访问临界资源的那串代码

内核程序临界区一般是用来访问某种内核数据结构的。 例如:就绪队列

进程调度的方式

  1. 非剥夺调度方式(也称非抢占式方式):进程主动放弃处理机
  2. 剥夺调度方式(也称抢占式方式):进程被动放弃处理机,适用于分时操作系统和实时操作系统

进程的切换与过程

  • 狭义的进程调度是指从就绪队列中选中一个要运行的进程
  • 进程切换指一个进程让出处理机,另一个进程占用处理机的过程
  • 广义的进程调度是:包含进程调度和进程切换

进程切换过程要完成

  1. 对原来运行进程各种数据进行保存
  2. 对新进程各种数据的恢复
  • 但是进程切换所需时间与空间的代价

CPU利用率

指CPU"忙碌"时间与总时间的比例

系统吞吐量

  • 单位时间内完成作业的数量=总完成作业数量/总花费时间

周转时间

  • 从作业被提交给系统开始到作业完成为止这段时间间隔

平均周转时间

  • 各作业周转时间之和/作业数

作业时间长短不尽相同,因此在相同周转时间内给用户的体验感是不同的

带权周转时间

  • 作业周转时间/作业实际运行时间
  • 结果>=1

平均带权周转时间

  • 各作业带权周转时间/作业数

等待时间

  • 各作业/进程处于等待处理机状态时间之和
  • 对于进程,等待时间是指进程被建立以后等待被服务的时间之和,在等待IO完成期间进程其实是被服务的
  • 对于作业,不考虑进程等待时间,还要加上一个作业在外存后备队列中等待的时间

响应时间

  • 从用户提交请求到首次连接产生响应所用时间

调度算法

Tips对于各种调度算法的学习思路

  1. 算法的思想
  2. 算法的规则
  3. 用于进程调度还是作业调度
  4. 进程调度方式
  5. 算法的优缺点
  6. 是否会产生饥饿

先来先服务(FCFS,first come first serve)

  1. 从公平的角度去考虑,等待时间最少的优先

  2. 按照作业/进程到达的先后顺序进行服务

    • 进程调度:考虑到达就绪队列的先后顺序
    • 作业调度:考虑到达后备队列的先后顺序
  3. 非抢占式

    • 优点:公平,算法实现简单
    • 缺点:对运行时间长的体验较好,对运行时间短的体验差,因为大多时间都在等待的过程中
  4. 不会导致饥饿

饥饿:就是指长期得不到服务

抢占式的最短剩余时间优先算法SRTN

每当有进程加入,就绪队列改变时就需要调度,如果新到达的进程剩余时间较之当前正在运行的进程剩余时间更短,则新进程抢占处理机,当前运行的进程回到就绪队列等待。另外当一个进程完成也需要进程调度

高响应比优先(HRRN,highest response ratio next)

  1. 综合考虑等待时间和服务时间

  2. 在每次进行进程调度时,先计算各个进程/作业的响应比,选择响应比最高的为其服务

    • 响应比=(等待时间+要求服务的时间)/ 要求服务的时间
    • 结果是>=1
  3. 作业、进程都适用

  4. 非抢占式

以上的几个都是早期的多道批处理系统用的

时间片轮转法(RR,Round-Robin)

  • 按照各进程到达就绪队列的顺序,轮流让各个进程运行一个时间片,若进程未在一个时间片内完成,则剥夺处理机,将进程重新放回就绪队列尾部重新排序,继续执行下一个进程
  • 常用于分时操作系统,更注重“响应时间”
  • 若时间片大,使得每个进程都在一个单独的时间片内就完成,就变成了FCFS并且会增大进程响应时间,所以不能太大
  • 若时间片太小,又会导致进程切换过度频繁,在保存与恢复进程的运行环境会花费太大的时间与空间代价,所以也不宜太小
  • 一般来说,时间片要让切换进程的开销占比 不超过1%

优先级调度算法

一般用于实时操作系统,根据进程需要执行的紧急程度不同,指定不同的优先级,调度时选择优先级最高的进程去执行

既有抢占式的也有非抢占式的

优先级又可以分为动态优先级与静态优先级

下列有几种常见的优先级比较

  • 系统进程 > 用户进程
  • 前台进程 > 后台进程
  • 操作系统更偏好于IO型进程(或称IO繁忙型进程)
  • 注:与IO型相对的是计算型进程(或 称CPU繁忙型进程)

IO设备可以与CPU并行工作,如果 设IO繁忙型进程的优先工作的话,则越有可能让IO设备更早进入工作状态,这样会资源的利用率和系统的都会得到提升

多级反馈队列调度算法

  1. 设置多级就绪队列,优先级从高到低,并且为每个就绪队列都确定时间片 ,时间片从小到大
  2. 新进程到达时先进入1级队列,按FCFS调度,若单个时间片内还未处理完就进入主下一级就绪队列队尾
  3. 只有k级队列为空时,才会为k+1级队列分配时间片用于进程调度
  4. 抢占式

,这样会资源的利用率和系统的都会得到提升==**

多级反馈队列调度算法

  1. 设置多级就绪队列,优先级从高到低,并且为每个就绪队列都确定时间片 ,时间片从小到大
  2. 新进程到达时先进入1级队列,按FCFS调度,若单个时间片内还未处理完就进入主下一级就绪队列队尾
  3. 只有k级队列为空时,才会为k+1级队列分配时间片用于进程调度
  4. 抢占式
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值