计算机操作系统基础(六)---作业管理之进程调度

文档客
• 阅读 2178

引言

本文为第六篇,作业管理之进程调度,本文主要介绍进程调度的概述和进程调度的算法

一、进程调度概述

进程调度是指计算机通过决策决定哪个就绪进程可以获得CPU使用权。也就是说,进程调度指的是计算机选择哪一个进程可以使用CPU,前提是这个进程的状态为就绪状态

进程调度有两个步骤:

  • 保留旧进程的运行信息,请出旧进程
  • 选择新进程,准备运行环境并分配CPU

为了实现进程调度的这两个步骤,就需要了解三种重要的机制:

  • 就绪队列的排队机制
  • 选择运行进程的委派机制
  • 新老进程的上下文切换机制

就绪队列的排队机制

(1)就绪队列的排队机制

就绪队列中摆放着所有的就绪状态的进程

计算机操作系统基础(六)---作业管理之进程调度

就绪队列的排队机制就是为了提高进程调度的效率,事先将就绪进程按照一定的方式排成队列,以便调度程序可以最快找到就绪进程

(2)选择运行进程的委派机制

这个机制就要求可以从就绪队列中选出一个进程,然后让去CPU中进行执行。调度程序以一定的策略选择就绪进程,将CPU资源分配给它

(3)新老进程的上下文切换机制

如果要将新的进程调度到CPU中,就需要将老的进程的CPU环境备份出来,然后将新的进程的CPU环境切换进去。它保存当前进程的上下文信息,装入被委派执行进程的运行上下文

计算机操作系统基础(六)---作业管理之进程调度

在CPU里面有一个高速缓存,这个机制就是首先将老进程的上下文备份到主存中,接着将新的进程的上下文放入到CPU中,准备环境,让新的进程可以运行起来,这个就是新老进程的上线文切换机制。这三个就是进程调度所需要的三个基本的机制

思考一个问题,如果进行调度的时候,老的进程还没有执行完,这个时候怎么办?

按照老的进程有没有执行完,将进程调度的方法分为两大类:

  • 非抢占式的调度
  • 抢占式调度

非抢占式的调度

  • CPU一旦分配给某个进程,就让该进程一直使用下去
  • 调度程序不以任何原因抢占正在被使用的CPU
  • 直到进程完成工作或因为IO阻塞才会让出CPU

抢占式调度

  • 允许调度程序以一定的策略暂停当前运行的进程
  • 保存好旧进程的上下文信息,分配CPU给新进程

两种方式进行一个对比

计算机操作系统基础(六)---作业管理之进程调度

进程调度的算法

  • 先来先服务调度算法
  • 短进程优先调度算法
  • 高优先权优先调度算法
  • 时间片轮转调度算法

先来先服务调度算法

在就绪队列中,按照先来先服务的原则,优先选择队列前面的进程进行调度

计算机操作系统基础(六)---作业管理之进程调度

短进程优先调度算法

  • 调度程序优先选择就绪队列中估计运行时间最短的进程
  • 短进程优先调度算法不利于长作业进程的执行

高优先权优先调度算法

这个算法是以优先级为基础的

  • 进程附带优先权,调度程序优先选择权重高的进程
  • 高优先权优先调度算法使得紧迫的任务可以优先处理

前边文章中有说到,前台进程的优先级要高于后台进程的优先级,因为前台进程是与用户进行交互的,为了保证用户在使用系统的时候不会卡顿,因此前台进程权重就要高于后台进程

时间片轮转调度算法

按先来先服务的原则排列就绪进程

每次从队列头部取出待执行进程,分配一个时间片执行(把这个时间片用完了,不管这个进程有没有执行完,都会将这个进程重新的插到队列的尾部。每个进程分配的时间片都是一样的)。是相对公平的调度算法,但不能保证及时响应用户

在快速变化的技术中寻找不变,才是一个技术人的核心竞争力。知行合一,理论结合实践
计算机操作系统基础(六)---作业管理之进程调度

站在了巨人的肩膀上学习,向前辈致敬

参考:https://coding.imooc.com/clas...

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
3年前
java 面试知识点笔记(七)多线程与并发 上篇
问:进程和线程的区别?!(https://oscimg.oschina.net/oscnet/fe2c4d0bc8505c5df1b4fc6199d4f028572.jpg)进程是资源分配的最小单位,线程是CPU调度的最小单位!(https://oscimg.oschina.net/oscnet/971d1d6c10695c984
限时发布!非科班程序员金三银四求职经历
进程和线程的概念进程是具有独立功能的程序在一个数据集合上运行的过程。进程是系统进行资源分配的单位,实现的操作系统的并发。线程是比进程更小的能独立运行的单位,是  调度的基本单位,实现了进程内部的并发。线程成为了程序执行流的最小单位。进程状态转换图1.创建状态:进程正在被创建。2.就绪状态:进程已经分配到了除  之外的所有资源,只要分配到  就可以开
Wesley13 Wesley13
3年前
4、jstack查看线程栈信息
1、介绍利用jps、top、jstack命令找到进程中耗时最大的线程,以及线程状态等等,同时最后还可以显示出死锁的线程查找:FoundoneJavaleveldeadlock即可1、jps获得进程号!(https://oscimg.oschina.net/oscnet/da00a309fa6
Stella981 Stella981
3年前
Android IPC(跨进程通信)之AIDL
AndroidIPC(跨进程通信)之AIDLIPC——跨进程通信,是指两个进程之间的数据交换过程。在说IPC的同时我们要知道什么是进程,什么是线程。线程是CPU调度的最小单元,进程可以理解为一个程序或者一个应用。一个进程中可以运行多个线程,而在Android程序中有一个主线程,也叫UI线程。在And
Wesley13 Wesley13
3年前
CPU调度
1.CPU调度程序  每当CPU空闲时,OS必须从就绪队列选择一个进程来执行。进程选择由短期调度程序或CPU调度程序执行。调度程序从内存中选择一个能执行的进程,并为之分配CPU。2.抢占:可以选择       (1)当一个进程从运行状态切换到就绪状态;(eg:当出现中断时)       (2)当一个进
Stella981 Stella981
3年前
Python 浅析线程(threading模块)和进程(process)
    线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务进程与线程什么是线程(threading)?Athreadisanexecutioncontext,whichisall
Wesley13 Wesley13
3年前
Java中多线程并发体系知识点汇总
一、多线程1、操作系统有两个容易混淆的概念,进程和线程。进程:一个计算机程序的运行实例,包含了需要执行的指令;有自己的独立地址空间,包含程序内容和数据;不同进程的地址空间是互相隔离的;进程拥有各种资源和状态信息,包括打开的文件、子进程和信号处理。线程:表示程序的执行流程,是CPU调度执行的基本单位;线程有自己的程序计数器、寄存器、堆栈和帧。同一进
Wesley13 Wesley13
3年前
Java 基础夺命连环16问(面试硬核敲门砖 )
说说进程和线程的区别?进程是程序的一次执行,是系统进行资源分配和调度的独立单位,他的作用是是程序能够并发执行提高资源利用率和吞吐率。由于进程是资源分配和调度的基本单位,因为进程的创建、销毁、切换产生大量的时间和空间的开销,进程的数量不能太多,而线程是比进程更小的能独立运行的基本单位,他是进程的一个实体,可以减少程序并发执行时的时间和空间开销,
深入浅出线程池 | 京东云技术团队
一、线程1、什么是线程线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。2、如何创建线程2.1、JAVA中