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

引言

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

一、进程调度概述

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

进程调度有两个步骤:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

非抢占式的调度

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

抢占式调度

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

两种方式进行一个对比

进程调度的算法

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

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

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

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

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

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

时间片轮转调度算法

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

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

在快速变化的技术中寻找不变,才是一个技术人的核心竞争力。知行合一,理论结合实践

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

参考:https://coding.imooc.com/class/355.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
操作系统进程调度计算机操作系统中的一个重要部分,它负责协调和管理系统中的各个进程,以实现资源的有效利用和任务的高效执行。在C语言中进行操作系统进程调度实验,可以通过模拟不同的调度算法来理解和掌握进程调度的原理和实现过程。 首先,可以使用C语言编写一个简单的程序,模拟进程的创建、就绪、运行和结束等状态。通过定义进程控制块(PCB)、进程队列等数据结构,以及编写相应的进程管理函数,来实现对进程的管理和调度。例如,可以编写函数来创建新进程、将进程加入就绪队列、根据调度算法选择下一个要执行进程等。 其次,可以选择不同的调度算法来实验,如先来先服务(FCFS)、最短作业优先(SJF)、时间轮转(RR)等。针对不同的调度算法,通过C语言实现相应的调度函数,并在模拟程序中进行调用,观察不同算法对进程执行顺序和响应时间的影响。 最后,可以通过对进程调度实验的结果进行分析和比较,来深入理解各种调度算法的优缺点,以及在不同场景下的适用性。同时,也可以通过进一步的实验和优化,来改进模拟程序,增加更多的实际场景和特性,以更好地理解和应用操作系统进程调度的相关知识。 通过C语言进行操作系统进程调度实验,可以帮助我们更深入地理解和掌握操作系统的核心概念和原理,为今后的系统设计和开发打下坚实的基础

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值