操作系统:单处理机调度

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


单处理机调度

一、实验目的

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

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

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)算法等,它们针对不同的场景和需求,具有不同的特点和优劣势。

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

目录
相关文章
|
9天前
|
算法 调度 UED
深入理解操作系统:进程调度与优先级队列
【10月更文挑战第31天】在计算机科学的广阔天地中,操作系统扮演着枢纽的角色,它不仅管理着硬件资源,还为应用程序提供了运行的环境。本文将深入浅出地探讨操作系统的核心概念之一——进程调度,以及如何通过优先级队列来优化资源分配。我们将从基础理论出发,逐步过渡到实际应用,最终以代码示例巩固知识点,旨在为读者揭开操作系统高效管理的神秘面纱。
|
6天前
|
算法 调度 UED
深入理解操作系统:进程管理与调度策略
【10月更文挑战第34天】本文旨在探讨操作系统中至关重要的一环——进程管理及其调度策略。我们将从基础概念入手,逐步揭示进程的生命周期、状态转换以及调度算法的核心原理。文章将通过浅显易懂的语言和具体实例,引导读者理解操作系统如何高效地管理和调度进程,保证系统资源的合理分配和利用。无论你是初学者还是有一定经验的开发者,这篇文章都能为你提供新的视角和深入的理解。
23 3
|
12天前
|
消息中间件 算法 调度
深入理解操作系统:进程管理与调度策略
【10月更文挑战第29天】本文将带领读者深入探讨操作系统中的核心组件之一——进程,并分析进程管理的重要性。我们将从进程的生命周期入手,逐步揭示进程状态转换、进程调度算法以及优先级调度等关键概念。通过理论讲解与代码演示相结合的方式,本文旨在为读者提供对进程调度机制的全面理解,从而帮助读者更好地掌握操作系统的精髓。
26 1
|
12天前
|
算法 调度 UED
深入理解操作系统中的进程调度
【10月更文挑战第29天】探索进程调度的奥秘,本文将带你深入了解在操作系统中如何管理和控制多个并发执行的程序。从简单的调度算法到复杂的多级反馈队列,我们将逐步揭示如何优化系统性能和提高资源利用率。准备好一起揭开进程调度的神秘面纱吧!
|
17天前
|
算法 大数据 Linux
深入理解操作系统之进程调度算法
【10月更文挑战第24天】本文旨在通过浅显易懂的语言,带领读者深入了解操作系统中的进程调度算法。我们将从进程的基本概念出发,逐步解析进程调度的目的、重要性以及常见的几种调度算法。文章将通过比喻和实例,使复杂的技术内容变得生动有趣,帮助读者建立对操作系统进程调度机制的清晰认识。最后,我们还将探讨这些调度算法在现代操作系统中的应用和发展趋势。
|
30天前
|
分布式计算 算法 大数据
探索操作系统的核心:调度与内存管理机制
【10月更文挑战第11天】 本文深入探讨了操作系统中两大核心功能——调度与内存管理机制。通过分析调度算法、进程状态转换及内存分配策略等关键方面,揭示了它们如何共同维护系统性能和稳定性。旨在为读者提供对操作系统内部运作的深刻理解,同时引起对优化策略的思考。
56 5
|
8天前
|
算法 调度 UED
深入浅出操作系统调度策略
【10月更文挑战第33天】在数字时代的心脏,操作系统扮演着至关重要的角色。本文将探讨操作系统的核心功能之一——进程调度策略的设计与影响。我们将从理论到实践,通过浅显易懂的语言和具体代码示例,揭示如何通过不同的调度算法来优化系统性能和用户体验。无论你是技术新手还是资深开发者,这篇文章都将为你提供新的视角和深入的理解。
|
9天前
|
算法 Linux 调度
深入理解操作系统之进程调度
【10月更文挑战第31天】在操作系统的心脏跳动中,进程调度扮演着关键角色。本文将深入浅出地探讨进程调度的机制和策略,通过比喻和实例让读者轻松理解这一复杂主题。我们将一起探索不同类型的调度算法,并了解它们如何影响系统性能和用户体验。无论你是初学者还是资深开发者,这篇文章都将为你打开一扇理解操作系统深层工作机制的大门。
19 0
|
12天前
|
算法 调度 开发者
探索操作系统的核心:进程管理与调度
【10月更文挑战第29天】本文深入探讨了操作系统中至关重要的一环——进程管理。通过浅显易懂的语言,我们将了解到什么是进程,进程如何被创建和管理,以及操作系统如何决定哪个进程应该获得CPU时间。文章还将揭示进程调度对系统性能的影响,并分享一些优化技巧。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供宝贵的知识。
|
1月前
|
算法 Unix Linux
深入理解操作系统:进程管理与调度策略
【10月更文挑战第9天】本文将带你进入操作系统的核心,探索进程管理的奥秘。我们将从基础的概念出发,逐步深入到进程的创建、调度和同步等关键机制。通过理论与实际代码示例的结合,你将获得对操作系统中进程管理更深层次的理解和应用能力。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供新的视角和知识,让你在操作系统的学习之旅上更进一步。

热门文章

最新文章