文章目录

  • 1 处理机调度
    • 1.1 处理机调度概念
    • 1.2 处理机调度三大层次
    • 1.3 处理机三层调度的联系、对比
    • 1.4 处理机调度小结
  • 2 进程调度
    • 2.1 进程调度、进程切换时机
    • 2.2 进程调度方式
    • 2.3 进程的切换与过程
    • 2.4 进程切换与调度小结
  • 3 典型的调度算法
    • 3.1 先来先服务 FCFS
    • 3.2 短作业优先 SJF
    • 3.3 FCFS 和 SJF说明
    • 3.4 高响应比优先算法
    • 3.5 FCFS 、SJF和高响应比优先算法比较

1 处理机调度

1.1 处理机调度概念

在多道程序系统中,进程的数量往往是多于处理机的个数的,这样不可能同时并行地处理各个进程。 处理机调度,就是从就绪队列中按照一定的算法选择一个进程并将处理机分配给它运行,以实现进程 的并发执行。

1.2 处理机调度三大层次

1. 高级调度:

由于内存空间有限,有时无法将用户提交的作业全部放入内存,因此就需要确定某种规则来决定将作业调入内存的顺序。

高级调度(作业调度):按一定的原则从外存上处于后备队列的作业中挑选一个(或多个)作业, 给他们分配内存等必要资源,并建立相应的进程(建立PCB),以使它(们)获得竞争处理机的权利。

高级调度是辅存(外存)与内存之间的调度。每个作业只调入一次,调出一次。作业调入时会建立相应的PCB,作业调出时才撤销PCB。高级调度主要是指调入的问题,因为只有调入的时机需要操作系统来确定,但调出的时机必然是作业运行结束才调出。

2. 中级调度:

引入了虚拟存储技术之后,可将暂时不能运行的进程调至外存等待。等它重新具备了运行条件且内存又稍有空闲时,再重新调入内存。

这么做的目的是为了提高内存利用率和系统吞吐量。 暂时调到外存等待的进程状态为挂起状态。
值得注意的是,PCB并不会一起调到外存,而是会常驻内存。PCB中会记录进程数据在外存中的存放位置,进程状态等信息,操作系统通过内存中的PCB 来保持对各个进程的监控、管理。被挂起的进程PCB会被放到的挂起队列中。

中级调度(内存调度),就是要决定将哪个处于挂起状态的进程重新调入内存。 一个进程可能会被多次调出、调入内存,因此中级调度发生的频率要比高级调度更高。

暂时调到外存等待的进程状态为挂起状态(挂起态,suspend) 挂起态又可以进一步细分为就绪挂起、阻塞挂起两种状态;

五状态模型 → 七状态模型

3. 低级调度:

低级调度(进程调度),其主要任务是按照某种方法和策略从就绪队列中选取一个进程,将处理机分配给它。
进程调度是操作系统中最基本的一种调度,在一般的操作系统中都必须配置进程调度。

1.3 处理机三层调度的联系、对比

1.4 处理机调度小结

2 进程调度

2.1 进程调度、进程切换时机

内核程序临界区访问的临界资源如果不尽快释放的话,极有可能影响到操作系统内核的其他管理工作。
因此在访问内核程序临界区期间不能进行调度与切换;

普通临界区访问的临界资源不会直接影响操作系统内核的管理工作。
因此在访问普通临界区时可以进行调度与切换。

进程在普通临界区中是可以进行调度、切换,在内核程序临界区期间不能进行调度与切换。

2.2 进程调度方式
  1. 非剥夺调度方式

又称非抢占方式。只允许进程主动放弃处理机。在运行过程中即便有更紧迫的任务到达,当前进程依然会继续使用处理机,直到该进程终止或主动要求进入阻塞态。

特点:实现简单,系统开销小但是无法及时处理紧急任务,适合于早期的批处理系统。

  1. 剥夺调度方式

又称抢占方式。当一个进程正在处理机上执行时,如果有一个更重要或更紧迫的进程需要使用处理机,则立即暂停正在执行的进程,将处理机分配给更重要紧迫的那个进程。

特点:可以优先处理更紧急的进程,也可实现让各进程按时间片轮流执行的功能(通过时钟中断)。适合于分时操作系统、实时操作系统。

2.3 进程的切换与过程
  1. 狭义的进程调度指的是从就绪队列中选中一个要运行的进程。(这个进程可以是刚刚被暂停执行的进程, 也可能是另一个进程,后一种情况就需要进程切换) 进程切换是指一个进程让出处理机,由另一个进程占用处理机的过程。
  2. 广义的进程调度包含了选择一个进程和进程切换两个步骤。
  3. 进程切换的过程主要完成了:
    (1)对原来运行进程各种数据的保存
    (2)对新的进程各种数据的恢复 (如:程序计数器、程序状态字、各种数据寄存器等处理机现场信息,这些信息一般保存在进程控制块PCB

注意:进程切换是有代价的,因此如果过于频繁的进行进程调度、切换,必然会使整个系统的效率降低, 使系统大部分时间都花在了进程切换上,而真正用于执行进程的时间减少。

2.4 进程切换与调度小结

3 典型的调度算法

重点学习和比较算法以下思路:

3.1 先来先服务 FCFS

3.2 短作业优先 SJF

3.3 FCFS 和 SJF说明

FCFS算法是在每次调度的时候选择一个等待时间最长的作业(进程)为其服务。但是没有考虑到作业的运行时间,因此导致了对短作业不友好的问题;

SJF算法是选择一个执行时间最短的作业为其服务。但是又完全不考虑各个作业的等待时间,因此导致了对长作业不友好的问题,甚至还会造成 饥饿问题

能不能设计一个算法,即考虑到各个作业的等待时间,也能兼顾运行时间呢?

高响应比优先算法

3.4 高响应比优先算法

3.5 FCFS 、SJF和高响应比优先算法比较

注:这几种算法主要关心对用户的公平性、平均周转时间、平均等待时间等评价系统整体性能的指标,但是不关心“响应时间”,也并不区分任务的紧急程度,因此对于用户来说,交互性很糟糕。
因此这三种算法一般适合用于早期的批处理系统,当然,FCFS算法也常结合其他的算法使用,在现在也扮演着很重要的角色。

6 操作系统第二章 进程管理 处理机调度相关推荐

  1. 笔记篇:操作系统第二章 进程管理

    笔记篇:操作系统第二章 进程管理 目录 笔记篇:操作系统第二章 进程管理 2.1 进程的基本概念 2.1.1 程序的顺序执行及其特征 2.1.2 前驱图 2.1.3 程序的并发执行及其特征 2.1.4 ...

  2. (王道408考研操作系统)第二章进程管理-第三节10:经典同步问题之哲学家进餐问题

    本文接: (王道408考研操作系统)第二章进程管理-第三节6:经典同步问题之生产者与消费者问题 ((王道408考研操作系统)第二章进程管理-第三节7:经典同步问题之多生产者与多消费者问题 (王道408 ...

  3. (王道408考研操作系统)第二章进程管理-第三节8:经典同步问题之吸烟者问题

    本文接: (王道408考研操作系统)第二章进程管理-第三节6:经典同步问题之生产者与消费者问题 ((王道408考研操作系统)第二章进程管理-第三节7:经典同步问题之多生产者与多消费者问题 文章目录 一 ...

  4. (王道408考研操作系统)第二章进程管理-第三节7:经典同步问题之多生产者与多消费者问题

    注意:生产者与消费者问题Linux系统编程专栏有案例讲解 Linux系统编程39:多线程之基于阻塞队列生产者与消费者模型 Linux系统编程40:多线程之基于环形队列的生产者与消费者模型 本文接:(王 ...

  5. 操作系统第二章 进程管理

    写在前面:本文参考王道论坛的 操作系统考研复习指导单科书 文章目录 第二章 进程管理 进程同步 读者写者问题 哲学家就餐问题 练习题 哲学家就餐:加碗(2019真题) 既是生产者又是消费者 和尚取水( ...

  6. 操作系统 第二章 进程管理

    2.1 进程与线程 第一节零碎知识比较多,关键在于进程状态的切换.进程线程的关系. 第一章中提到过的多道程序环境,由于程序的特点,不能让程序并发,所以引入了进程的概念,让进程来并发,从而实现了多道程序 ...

  7. (王道408考研操作系统)第二章进程管理-第一节3:进程控制(配合Linux讲解)

    文章目录 一:如何实现进程控制 二:进程控制原语 (1)进程创建 A:概述 B:补充-Linux中的创建进程操作 ①:fork() ②:fork()相关问题 (2)进程终止 A:概述 B:补充-僵尸进 ...

  8. 3 操作系统第二章 进程管理 进程定义、特征、组织、状态与转换

    文章目录 1 进程的定义和特征 2 进程的组织 3 进程的状态与转换 3.1 进程的状态 3.2 进程状态转换 1 进程的定义和特征 引入进程的原因 为了使程序能够并发执行,并且可以对并发执行的程序加 ...

  9. (王道408考研操作系统)第二章进程管理-第一节4:进程通信(配合Linux)

    文章目录 一:什么是进程通信 二:如何实现进程间通信及其分类 三:通信方式1-共享存储(共享内存) (1)课本基础内容 (2)补充-Linux中的进程通信 四:通信方式2-管道 (1)管道是什么 (2 ...

最新文章

  1. POJ 1704 Georgia and Bob (Nim游戏变形)
  2. 如果你的男朋友使用linux
  3. C 类INI文本,可以添加注释(初步实现,可以添加更加复杂的通用化设计)
  4. 用Tensorflow搭建第一个神经网络
  5. java getdelay_java中DelayQueue的一个使用陷阱分析
  6. 苹果cms V8模板 价值200RMB时尚大气功能超强模板
  7. java spring 配置词典_java之spring mvc之拦截器
  8. 一分钟理解handler机制
  9. Better And Better for Mac(Mac手势神器BAB)中文版
  10. Python3爬取人人网(校内网)个人照片及朋友照片,并一键下载到本地~~~附源代码...
  11. 聊聊校招内推,意义/优缺点/如何抓住机会等
  12. word强调文字颜色在哪,强调文字颜色2 word2010如何将文字设置成红色,强调文
  13. 服务器应用程序不可用解决方案!
  14. 【计算机·科技】互联网的黑科技来啦
  15. 18天精读掌握《费曼物理学讲义卷一》 第11天 2019/6/27
  16. ElementUI自定义主题报错“primordials is not defined”最佳解决方案
  17. 自由职业者要当心如何保护自己免遭身份盗用
  18. 5分钟看懂区块链-区块链技术最最最好使用技巧
  19. 【网络通信 -- 直播】网络通信协议简介 -- SSL/TLS 与 DTLS
  20. PASS云计算书(不是云计算paas)支持mathcad prime、ansys和excel计算书模板

热门文章

  1. android系统开发(六)-HAL层开发基础
  2. 每日一题(10)—— 数组与指针
  3. saltstack php,Saltstack快速入门简单汇总
  4. 天然气表怎么看多少方_上海考大学难度怎么样?看2019上海高考“成绩分布表”和“本科分数线”就知道了!...
  5. python输出进度条 tqdm_python-tqdm进度条
  6. Python缓存类实例
  7. 四、scrapy爬虫框架——scrapy管道的使用
  8. LeetCode 298. 二叉树最长连续序列(自顶向下)
  9. LeetCode 921. 使括号有效的最少添加(栈)
  10. LeetCode 1171. 从链表中删去总和值为零的连续节点(哈希表)