操作系统的中央处理器调度算法有哪些?

yizhihongxing

操作系统的中央处理器调度算法是指在多道程序环境下,为了让各个进程能够合理地使用CPU资源,从而提高CPU利用率和系统性能而采用的一种算法。下面将介绍几种常见的CPU调度算法。

先来先服务(FCFS)

FCFS是最简单的调度算法,即按照进程到达的顺序,依次分配CPU资源。被称作先来先服务,即进程按照到达时间排入一个队列,等待CPU资源。这种调度算法,容易被饥饿进程的问题所困扰,同时也没有考虑到运行时间的长短,导致一些短进程需要长时间等待。

最短作业优先(SJF)

SJF是基于预测或统计出的进程运行时间,为进程分配CPU资源。算法分为非抢占和抢占两种:

非抢占式SJF

非抢占式SJF算法,会根据进程初始运行时间对所有生成的进程进行排序,然后依次执行。在某些情况下,这种调度算法可能会导致饥饿进程。

def SJF_non_preemptive(processes):
    n = len(processes)
    processes = sorted(processes, key=lambda x: x[1])
    waiting_time = 0
    total_time = processes[0][1]
    for i in range(1, n):
        waiting_time += total_time - processes[i][0]
        total_time += processes[i][1]
    return waiting_time / n

抢占式SJF

抢占式SJF算法,会在一个进程剩余运行时间小于当前进程剩余时间时,切换到此进程。这种情况可能会导致在短进程执行时,出现调度开销太大的问题。

def SJF_preemptive(processes):
    n = len(processes)
    processes = sorted(processes, key=lambda x: x[1])
    total_time = 0
    waiting_time = 0
    for i in range(n):
        min_loc = 0
        for j in range(1, n):
            if processes[j][0] <= total_time and \
                    processes[j][1] < processes[min_loc][1]:
                min_loc = j
        waiting_time += total_time - processes[min_loc][0]
        total_time += processes[min_loc][1]
        processes[min_loc][1] = 999999999
    return waiting_time / n

轮询调度(Round-Robin)

轮询调度又叫时间片调度,是一种常见的调度算法,它将所有等待CPU的进程排成就绪队列,并让每个进程在每个“时间片”中执行。在每个时间片结束时,进程被强制切换到就绪队列的尾部,以此循环往复。

def Round_Robin(processes, quantum):
    n = len(processes)
    total_time = 0  
    waiting_time = 0  
    remaining_time = [processes[i][1] for i in range(n)]  
    waiting_for_too_long = [False for i in range(n)]  
    while True:  
        done_flag = True  
        for i in range(n):  
            if remaining_time[i] > 0:  
                # process is not completed yet
                done_flag = False
                running_time = min(remaining_time[i], quantum)
                remaining_time[i] -= running_time   
                total_time += running_time    
                if remaining_time[i] == 0:  
                    waiting_time += total_time - processes[i][1]  
                waiting_for_too_long[i] = False  
            else:  
                waiting_for_too_long[i] = True  
        if done_flag:  
            break     
    return waiting_time / n

以上就是常见的几种CPU调度算法。根据不同的场景和需求,可以选择合适的调度算法来提高系统性能和CPU利用率。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:操作系统的中央处理器调度算法有哪些? - Python技术站

(0)
上一篇 2023年4月19日
下一篇 2023年4月19日

相关文章

  • 苹果mac操作系统安装图文教程(比较详细)

    关于苹果Mac操作系统的安装,我可以提供一份比较详细的攻略,以下是详细的步骤及示例: 苹果Mac操作系统安装图文教程(比较详细) 第一步:下载操作系统 首先,你需要从苹果官网或App Store下载你想要的操作系统,通常这个下载是免费的,还可以保证下载的安全和可靠性。以下是下载链接: macOS Catalina: https://www.apple.com…

    操作系统 2023年5月15日
    00
  • Win7用户必读:Win9技术预览版发布前终极汇总

    Win7用户必读:Win9技术预览版发布前终极汇总 最近微软公司宣布将在不久的将来推出新的Windows系统——Windows 9。如果你是一位Win7的用户,并且对Windows 9很感兴趣,那么这篇文章将会是你的必读攻略。在本文中,我们将会解析Windows 9的最新功能和新特性,帮助你全面了解Windows 9的发展历程。 Windows 9的最新消息…

    操作系统 2023年5月15日
    00
  • VMware虚拟机安装苹果Mac OS的超详细教程

    VMware虚拟机安装苹果Mac OS的超详细教程 准备工作 确定计算机支持虚拟化技术并开启在BIOS或UEFI界面中进行设置,查看CPU型号是否支持虚拟化技术(Intel的CPU一般都支持VT-x技术,AMD的CPU一般都支持AMD-V技术),如支持则找到开启选项进行设置。 准备必要的软件和系统镜像需要下载并安装VMware虚拟机软件,并下载合适的Mac …

    操作系统 2023年5月30日
    00
  • 操作系统如何实现负载均衡?

    操作系统如何实现负载均衡? 负载均衡是指将多个任务或请求平均地分布到多个系统或服务器上,以达到更好的资源利用和系统性能。在操作系统中,负载均衡常常用于分散磁盘IO、网络IO、CPU等资源的使用率。 要实现负载均衡,操作系统通常需要进行以下几个步骤: 收集系统各项性能指标并计算负载评估值 负载评估值是衡量系统当前负载程度的指标。它一般由系统性能指标如CPU利用…

    操作系统 2023年4月19日
    00
  • 电脑怎么装双系统,安装双系统的各种方法步骤

    下面是电脑怎么装双系统的完整攻略。 一、背景知识 在开始安装双系统之前,我们需要了解一些背景知识。通常情况下,安装双系统分为两种情况: 已有一个系统的情况下,需要安装另一个系统。 没有操作系统的情况下,需要安装两个系统。 其中,第二种情况相对简单,只需要按照常规方式安装即可。而第一种情况需要进行分区操作,需要注意数据备份以及分区大小的控制。 二、安装双系统的…

    操作系统 2023年5月15日
    00
  • [简单]Win7/Win8.1与Win10安装双/多系统图文教程

    简单Win7/Win8.1与Win10安装双/多系统图文教程 概述 本教程将详细介绍如何在一台电脑上安装双系统或多系统。其中,我们将以安装Win7和Win10作为示例。本教程的操作过程需要进行分区操作,请您在操作前做好重要文件的备份工作,以免数据丢失。 准备工作 安装双系统或多系统需要进行分区操作,因此需要准备以下工具和软件: 一张 Win7 安装盘或 U …

    操作系统 2023年5月15日
    00
  • win10系统怎么利用cmd命令制作数字雨小程序?

    制作数字雨小程序是一种常见的命令行应用程序,下面是制作数字雨小程序的完整攻略和两个示例说明。 准备工作 首先需要确保你的电脑上安装有Windows 10系统,并打开命令提示符(cmd)。然后在cmd中输入以下命令: mode con cols=150 lines=60 此命令用于设置输出窗口的大小。150 * 60的大小为数字雨小程序提供了足够的宽度和高度。…

    操作系统 2023年5月16日
    00
  • 下载Windows 8.1 独立安ISO镜像的方法

    以下是详细的攻略步骤: 1. 打开微软官网下载页面 在浏览器中输入微软官网地址:https://www.microsoft.com/zh-cn/software-download/windows8ISO ,进入官方下载页面。可以看到:“方案 1:建议使用媒体创建工具创建 Windows 安装媒体以启动新 PC 或安装 Windows 10 专业版”和“方案 …

    操作系统 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部