`
jishublog
  • 浏览: 870353 次
文章分类
社区版块
存档分类
最新评论

进程调度

 
阅读更多

前言

吐嘈抱怨的话不多说了,总之很多笔试题目上都有讲到进程调度,我也只能深入学习一下了

概述

Linux与任何分时系统一样,通过一个进程到另一个进程的快速切换,达到表面上看来多个进程同时执行的神奇效果。我们假定系统采用统一内存访问模型(uniform memory access),而且系统时钟设定为1ms

调度策略

Linux的调度基于分时技术(time-sharing):多个进程以“时间多路复用”方式运行,因为CPU的时间被分为“片”,给每个可运行进程分配一片。当然,单处理器在任何给定的时刻只能运行一个进程。如果当前进程的时间片到期时,该进程还没有运行完毕,进程切换就可以发生。分时依赖于定时中断,因此,对进程是透明的,不需要在程序中插入额外的代码来保证CPU分时。

调度策略也是根据进程的优先级对它们进行分类。有时用复杂的算法求出进程当前的优先级,但最后的结果是相同的:每个进程都与一个值相关联,这个值表示进程如何适当的分配给CPU。

在linux中,进程的优先级是动态的。调度程序跟踪进程正在做什么,并周期性地调整它们的优先级。在这种方式下,在较长的时间间隔内没有使用cpu的进程,通过动态地增加它们的优先级来提升它们。相应的,对于已经在CPU上运行了较长时间的进程,通过减少它们的优先级来处罚它们。

当谈及有关调度问题时,传统上把进程分类为“I/O受限”或“CPU受限”。前者频繁的使用I/O设备,并花费很多时间等待I/O操作完成。而后者需要大量CPU时间的数值计算应用程序。

进程的抢占

Linux的进程是抢占式的。如果进程进入TASK_RUNNING状态,内核检查它的动态优先级是否大于当前正在运行进程的优先级。如果是,current的执行被中断,并调用调度程序选择另一个进程运行(通常是刚刚变为可运行的进程)。当然,进程在它的时间片到期时也可以被抢占。

一个时间片必须持续多长

时间片的长短对系统性能是很关键的:它既不能太长,也不能太短。

如果平均时间片太短,由进程切换引起的系统额外开销就变得非常高。例如,假定进程切换需要5ms,如果时间片也是5ms,那么,CPU至少把50%的时间花费在进程切换上。

如果平时时间片太长,进程看起来就不再是并发执行。例如,让我们假定把时间片设置为5s,那么,每个可运行的进程大约5s,但是暂停的时间更长

调度算法

每个linux进程总是按照下面的调度类型被调度:

SCHED_FIFO
先进先出的实时进程。当调度程序把cpu分配给进程的时候,它就把该进程描述符保留在运行队列链表的当前位置。如果没有其他可运行的高优先权实时进程,进程就继续使用cpu,想用多久就用多久,即使还有其他具有相同优先权的实时进程处于可运行状态

SCHED_RR
时间片轮转的实时进程。当调度程序把cpu分配给进程的时候,把该进程的描述符放在运行队列链表的末尾。这种策略保证对所有具有相同优先权的SCHED_RR实时进程公平地分配CPU时间

SCHED_NORMAL
普通的分时进程


分享到:
评论

相关推荐

    进程调度程序模拟 进程调度程序模拟 进程调度程序模拟

    进程调度程序模拟 进程调度程序模拟 进程调度程序模拟 进程调度程序模拟 进程调度程序模拟 进程调度程序模拟

    进程调度的设计与分析实验报告

    综合应用下列知识点设计并实现操作系统的进程调度:邻接表,布尔数组,非阻塞输入,图形用户界面GUI,进程控制块,进程状态转换,多级反馈队列进程调度算法。 2、 加深理解操作系统进程调度的过程。 3、 加深理解...

    单处理器系统的进程调度

    实验二 单处理器系统的进程调度 1.实验目的 加深对进程概念的理解,明确进程和程序的区别; 深入了解系统如何组织进程、创建进程; 进一步认识如何实现处理器调度。 2.实验预备知识 进程的概念; 进程的组织方式...

    实验一 进程调度实验报告

    进程调度课程设计 给需要的人 呵呵 实验一 进程调度实验 一、实验目的 通过对进程调度算法的模拟加深对进程概念和进程调度算法的理解。 二、实验要求 编写程序实现对5个进程的调度模拟,要求至少采用两种不同的...

    操作系统进程调度实验

    进程调度模拟程序:假设有10个进程需要在CPU上执行,分别用: 先进先出调度算法; 基于优先数的调度算法; 最短执行时间调度算法 确定这10个进程在CPU上的执行过程。要求每次进程调度时在屏幕上显示: 当前...

    操作系统进程调度算法 c语言实现

    实现进程调度算法,具有后备序列的调度 题目:设计一个有 N个进程共行的进程调度程序。 进程调度算法:采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法。 每个进程有一个进程...

    设计一个有 N个进程共行的进程调度程序

    1、进程调度算法:采用动态最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)。 2、每个进程有一个进程控制块( PCB)表示。进程控制块可以包含如下信息: 进程名---进程标示数 ID 优先数 PRIORITY ...

    模拟进程调度(程序+代码+完整报告)

    设计、编写一个进程调度程序,允许多个进程共同运行的进程调度程序。 (1)进程调度算法:采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法。 (2)每个进程有一个进程控制块( ...

    进程调度模拟程序 图形演示

    这就要求系统能按某种算法,动态地把处理机分配给就绪队列中的一个进程,使之运行,分配处理机的任务是由进程调度程序完成的。一个进程被创建后,系统为了便于对进程进行管理,将系统中的所有进程按其状态,将其组织...

    广东工业大学操作系统实验一进程调度

    广东工业大学 操作系统 实验一 进程调度 一、 实验目的 用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解. 二、 实验内容和要求 设计一个有 N个进程共行的进程调度程序。 进程调度...

    进程调度模拟-优先级和最高响应比调度算法

    题 目: 进程调度模拟设计——优先级法、最高响应比优先调度算法 初始条件: 1.预备内容:阅读操作系统的处理机管理章节内容,对进程调度的功能以及进程调度算法有深入的理解。 2.实践准备:掌握一种计算机高级...

    模拟的进程调度程序,采用“轮转法”调度算法

    编写并调试一个模拟的进程调度程序,采用“轮转法”调度算法对五个进程进行调度。  轮转法是简单轮转法。 简单轮转法的基本思想是:所有就绪进程按 FCFS排成一个队列,总是把处理机分配给队首的进程,各进程占用CPU...

    使用动态优先权的进程调度算法的模拟

    通过动态优先权算法的模拟加深对进程概念和进程调度过程的理解。 2、实验内容 (1)用C语言来实现对N个进程采用动态优先算法的进程调度; (2)每个用来标识进程的进程控制块 PCB用结构来描述,包括以下字段: 进程...

    操作系统课程设计大作业C++进程调度算法的模拟实现源码.zip

    操作系统课程设计大作业C++进程调度算法的模拟实现源码,实现了 动态优先级、先来先服务、时间片轮转 三个算法 安装教程 下载到本地,然后直接用VS打开运行即可 操作系统课程设计大作业C++进程调度算法的模拟实现...

    操作系统实验一: 进程调度

    实验1 进程调度(2学时) 一、实验目的 通过实验加强对进程调度算法的理解和掌握。 二、实验内容 编写程序实现基于优先级的时间片轮转调度算法。 三、实验要求 1、假定系统有5个进程,每个进程用一个进程...

    进程调度算法模拟程序设计

    进程调度算法模拟程序设计,利用优先级进行调度, (1)用C语言(或其它语言,如Java)实现对N个进程采用某种进程调度算法(如动态优先权调度)的调度。 (2)每个用来标识进程的进程控制块PCB可用结构来描述,包括...

    【C语言源代码】 操作系统-短进程优先-进程调度算法

    C语言实现:短进程优先-进程调度算法 1. 采用“短进程优先”调度算法对五个进程进行调度。每个进程有一个进程控制块( PCB)表示。进程控制块可以包含如下信息:进程名、到达时间、需要运行时间、已用CPU时间、进程...

    C#进程调度模拟算法

    C#进程调度模拟算法C#进程调度模拟算法C#进程调度模拟算法

    os实验 进程调度算法模拟

    进程调度算法模拟,采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法。  每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要...

    实现单处理机下的进程调度程序

    编写一个单处理机下的进程调度程序,模拟操作系统对进程的调度。 要求: 能够创建指定数量的进程,每个进程由一个进程控制块表示。 实现先来先服务调度算法:进程到达时间可由进程创建时间表示。 实现短作业...

Global site tag (gtag.js) - Google Analytics