操作系统:单处理机调度

简介: 操作系统:单处理机调度


单处理机调度

一、实验目的

在多道程序或多任务系统中,系统同时处于就绪态的进程有若干个。也就是说能运行的进程数远远大于处理机个数。为了使系统中的各进程能有条不紊地运行,必须选择某种调度策略,以选择一进程占用处理机。要求学生设计一个摸拟单处理机调度的算法,以巩固和加深处理机调度的概念。

二、实验要求与内容、过程与结果

1、运行例4-1程序,输入进程调度相关信息数据如表4-1:

表4-1 进程信息

进程名 运行时间 到达时间
Pro1 20 38
Pro2 80 90
Pro3 40 110

请记录运行结果,画出进程调度的时序图。

运行结果:

时序图:

2、认真阅读例4-1程序,描述程序中各函数的功能,并画出流程图。

unsigned long current; //记录系统当前时间的变量*

void inputprocess(); //建立进程函数

int readyprocess(); //建立就绪队列函数

int readydata(); //判断进程是否就绪函数

int runprocess(); //运行进程函数

流程图:

3、参照例4-1程序,编写一个程序(程序名为sy4-1.c),实现基于非抢占的优先级进程调度算法。并采用表4-2的数据运行程序,记录运行结果,画出进程调度的时序图。

表4-2 进程信息

进程名 优先级 运行时间 到达时间
Pro1 2 80 20
Pro2 4 20 30
Pro3 1 40 40
Pro4 3 60 55

注释:优先级值越大,优先级越高。

程序设计:

运行结果:

时序图:

4、修改第3题(编写的程序名sy4-2.c),实现抢占的优先级进程调度算法。并采用表4-2的数据运行程序,记录运行结果,画出进程调度的时序图。

程序设计:

运行结果:

时序图:

总结

单处理机调度是指管理和控制单个处理器执行任务的过程。在单处理机系统中,操作系统需要通过调度算法对进程进行合理的分配和调度,从而达到高效、公平、安全、准确地运行整个系统的目的。

在单处理机调度中,常用的调度算法包括以下几种:

  1. 先来先服务(FCFS)算法

FCFS算法是最简单的调度算法,即按照进入队列的先后顺序为进程分配处理器,先进入队列的进程先分配处理器。但是,这种算法存在“长作业优先”问题,即长时间执行的作业占用了大量的CPU时间,而短时间执行的作业需要等待较长的时间才能得到处理器的资源。

  1. 短作业优先(SJF)算法

SJF算法是按照作业执行时间的长度为进程分配处理器,即优先分配执行时间短的进程。这种算法实现了让短作业先完成的目标,减小了平均等待时间和平均周转时间,但是可能导致长作业永远无法获得CPU时间。

  1. 优先级调度算法

优先级调度算法将进程按照优先级大小为其分配处理器,优先级高的进程先执行。可以通过用户指定进程的优先级或者根据进程的历史行为自动调整优先级。但是,常常存在优先级反转的问题,即低优先级的进程可能在等待高优先级的进程运行时等待了很长时间。

  1. 时间片轮转(RR)算法

时间片轮转算法是将处理器时间划分为固定长度的时间片,每个进程被分配一个时间片进行执行,时间片用完后,系统将进程暂停并放回到就绪队列中,并为下一个进程分配时间片。这种算法实现了公平性,保证了每个进程都有机会获得处理器时间,但是可能存在上下文切换的开销和时间片长度的选择问题。

除了以上四种常见的调度算法外,还有一些变种算法,如多级反馈队列调度算法、最高响应比优先(HRRN)算法等,它们针对不同的场景和需求,具有不同的特点和优劣势。

总的来说,单处理机调度算法需要考虑诸多因素,如公平性、执行效率、等待时间、响应时间等,不能只兼顾其中之一,需要通过不同的算法进行权衡和选择。同时还需要结合实际应用场景,灵活运用调度算法,从而提高单处理机系统的整体性能和稳定性。

目录
相关文章
|
1月前
|
算法 调度 UED
深入理解操作系统:进程调度与优先级队列
【10月更文挑战第31天】在计算机科学的广阔天地中,操作系统扮演着枢纽的角色,它不仅管理着硬件资源,还为应用程序提供了运行的环境。本文将深入浅出地探讨操作系统的核心概念之一——进程调度,以及如何通过优先级队列来优化资源分配。我们将从基础理论出发,逐步过渡到实际应用,最终以代码示例巩固知识点,旨在为读者揭开操作系统高效管理的神秘面纱。
|
16天前
|
存储 算法 调度
深入理解操作系统:进程调度的奥秘
在数字世界的心脏跳动着的是操作系统,它如同一个无形的指挥官,协调着每一个程序和进程。本文将揭开操作系统中进程调度的神秘面纱,带你领略时间片轮转、优先级调度等策略背后的智慧。从理论到实践,我们将一起探索如何通过代码示例来模拟简单的进程调度,从而更深刻地理解这一核心机制。准备好跟随我的步伐,一起走进操作系统的世界吧!
|
28天前
|
消息中间件 算法 调度
深入理解操作系统:进程管理与调度
操作系统是计算机系统的核心,负责管理和控制硬件资源、提供用户接口以及执行程序。其中,进程管理是操作系统的重要组成部分,它涉及到进程的创建、调度、同步和通信等方面。本文将深入探讨进程管理的基本概念、进程调度算法以及进程间的同步和通信机制。通过本文的学习,读者将能够更好地理解操作系统的工作原理,并掌握进程管理的基本技能。
42 11
|
22天前
|
算法 调度 UED
深入理解操作系统:进程管理与调度策略
操作系统作为计算机系统的核心,其进程管理和调度策略对于系统性能和用户体验至关重要。本文将通过直观的代码示例和浅显易懂的语言,带领读者了解操作系统如何有效管理进程以及常见的进程调度算法。我们将从进程的基本概念出发,逐步深入到进程状态、进程控制块(PCB)的作用,最后探讨不同的调度算法及其对系统性能的影响。无论您是初学者还是有一定基础的开发者,都能从中获得有价值的信息。
|
21天前
|
负载均衡 算法 调度
深入理解操作系统:进程管理与调度
在数字世界的心脏,操作系统扮演着至关重要的角色。它如同一位精明的指挥家,协调着硬件资源和软件需求之间的和谐乐章。本文将带你走进操作系统的核心,探索进程管理的艺术和调度策略的智慧。你将了解到进程是如何创建、执行和消亡的,以及操作系统如何巧妙地决定哪个进程应该在何时获得CPU的青睐。让我们一起揭开操作系统神秘的面纱,发现那些隐藏在日常计算背后的精妙机制。
|
23天前
|
调度 开发者
深入理解操作系统之进程调度
在计算机科学领域,操作系统是核心的一环,它管理着计算机硬件资源,并提供接口供上层软件运行。本文将通过深入浅出的方式,探讨操作系统中至关重要的一个概念——进程调度。我们将从基础理论出发,逐步展开讲解进程调度的原理和实现,并配以实际代码示例,旨在帮助读者更好地理解和掌握这一主题。文章不仅适合初学者建立基础,也适合有一定基础的开发者深化理解。
|
1月前
|
算法 调度 UED
深入理解操作系统:进程管理与调度策略
【10月更文挑战第40天】在数字世界中,操作系统是连接硬件与软件的桥梁,它管理着计算机资源和提供用户服务。本文将深入探讨操作系统中的进程管理与调度策略,揭示它们如何协调多任务运行,保证系统高效稳定运作。通过代码示例,我们将展示进程创建、执行以及调度算法的实际应用,帮助读者构建对操作系统核心机制的清晰认识。
|
1月前
|
算法 调度 UED
深入理解操作系统:进程管理与调度策略
【10月更文挑战第34天】本文旨在探讨操作系统中至关重要的一环——进程管理及其调度策略。我们将从基础概念入手,逐步揭示进程的生命周期、状态转换以及调度算法的核心原理。文章将通过浅显易懂的语言和具体实例,引导读者理解操作系统如何高效地管理和调度进程,保证系统资源的合理分配和利用。无论你是初学者还是有一定经验的开发者,这篇文章都能为你提供新的视角和深入的理解。
42 3
|
1月前
|
算法 调度 UED
深入浅出操作系统调度策略
【10月更文挑战第33天】在数字时代的心脏,操作系统扮演着至关重要的角色。本文将探讨操作系统的核心功能之一——进程调度策略的设计与影响。我们将从理论到实践,通过浅显易懂的语言和具体代码示例,揭示如何通过不同的调度算法来优化系统性能和用户体验。无论你是技术新手还是资深开发者,这篇文章都将为你提供新的视角和深入的理解。
|
1月前
|
算法 Linux 调度
深入理解操作系统之进程调度
【10月更文挑战第31天】在操作系统的心脏跳动中,进程调度扮演着关键角色。本文将深入浅出地探讨进程调度的机制和策略,通过比喻和实例让读者轻松理解这一复杂主题。我们将一起探索不同类型的调度算法,并了解它们如何影响系统性能和用户体验。无论你是初学者还是资深开发者,这篇文章都将为你打开一扇理解操作系统深层工作机制的大门。
36 0