kernel学习之进程调度的目标,nice值,静态优先级,动态优先级

进程调度的目标,nice值,静态优先级,动态优先级,实时优先级,时间片

进程调度的目标:

1、高效性:高效意味着在相同的时间下要完成更多的任务。调度程序会被频繁的执行,所以调度程序要尽可能的高效。

2、加强交互性能(interactivity):在系统相当的负载下,也要保证系统的响应时间。

3、保证公平和避免饥渴。

4、SMP调度:调度程序必须支持多处理系统。系统必须追踪哪些进程在哪个cpu上运行。确保在同一时间中,一个进程不能再多于1个的cpu上运行。

5、软实时调度(soft real-timescheduling):系统必须有效的调用实时进程。

linusTorvalds 在CFS融入2.6.23时说:“我认为任何时候调度器都不是完美的 ,正确的并不是非此即彼,选择是一种平衡。在我更换调度器之前我100%确定未来我还会更换它。调度器没有想象的那么重要,它只是内核的一部分。”

进程的nice值:

nice值是每个进程的一个属性。它不是进程的优先级,而是一个能影响优先级的数字。

NI列显示的每个进程的nice值,PRI是进程的优先级。

nice是-20~~19之间的整数,默认取中间值0。

目前的内核不再存储nice值。取而代之的是static_prio(静态优先级)。nice值用户可见,静态优先级则隐藏在内核中,nice值和静态优先级可通过一定的关系进程转换。所以说nice值只是影响了静态优先级。而对于普通进程来说,动态优先级是基于静态优先级算出来的。

优先级:

普通进程有:静态优先级和动态优先级。而实时进程又增加了实时优先级。

注:进程的优先级只是一个整数,它是调度程序选择进程运行的基础。

1、静态优先级:static priority:之所以称为静态优先级是因为它不会随着时间而改变,内核不会修改它,只能通过系统调用nice去修改。静态优先级用进程描述符中的static_prio表示。它与nice的关系如图:

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/OS/unix/

时间: 2024-10-29 13:03:30

kernel学习之进程调度的目标,nice值,静态优先级,动态优先级的相关文章

kernel学习之进程调度的目标,nice值,静态优先级和动态优先

进程调度的目标: 1.高效性:高效意味着在相同的时间下要完成更多的任务.调度程序会被频繁的执行,所以调度程序要尽可能的高效. 2.加强交互性能(interactivity):在系统相当的负载下,也要保证系统的响应时间. 3.保证公平和避免饥渴. 4.SMP调度:调度程序必须支持多处理系统.系统必须追踪哪些进程在哪个cpu上运行.确保在同一时间中,一个进程不能再多于1个的cpu上运行. 5.软实时调度(soft real-timescheduling):系统必须有效的调用实时进程. linusTo

kernel学习之进程调度器简介

多任务操作系统可分为非抢占式多任务和抢占式多任务.和大多数现代操作系统一样,linux也采用了抢占式多任务模式.这也就是说任务占用cpu的时间由调度器来决定. 调度策略: 决定在什么时候用怎样的方式选择一个新的进程在哪个cpu上运行多长时间的规则称为调度策略. 通常情况下,使用什么样的调度策略与进程的类型有关.进程常分为cpu消耗型和IO消耗型. 另一种分类方式为: 1.交互式进程(interactiveprocess):此类进程需要大量的人机交互,这样的进程会不断的睡眠,等待键盘和鼠标操作将其

kernel学习之调度器发展史

调度器的主要工作是在所有 RUNNING 进程中选择最合适的一个.作为一个通用操作系统,Linux 调度器将进程分为了三类:             交互进程:此类进程有大量的人机交互,因此进程不断地处于睡眠状态,等待用户输入.典型的应用比如编辑器 vi.此类进程对系统响应时间要求比较高,否则用户会感觉系统反应迟缓. 批处理进程:此类进程不需要人机交互,在后台运行,需要占用大量的系统资源.但是能够忍受响应延迟.比如编译器. 实时进程:实时对调度延迟的要求最高,这些进程往往执行非常重要的操作,要求

kvm虚拟化学习笔记(十四)之kvm虚拟机静态迁移

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://koumm.blog.51cto.com/703525/1298852 这里提到的静态迁移同是基于KVM虚拟主机之间的迁移,非异构虚拟化平台的静态迁移. 本文出自:http://koumm.blog.51cto.com kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51cto.com/703525/1288795 kvm虚拟化学习笔记(二)之

自我参考:Java学习的30个目标

参考 本文将告诉你学习Java需要达到的30个目标,希望能够对你的学习有所帮助.对比一下自己,你已经掌握了这30条中的多少条了呢? 1.你需要精通面向对象分析与设计(OOA/OOD).涉及模式(GOF,J2EEDP)以及综合模式.你应该十分了解UML,尤其是class,object,interaction以及statediagrams. 2.你需要学习JAVA语言的基础知识以及它的核心类库(collections,serialization,streams,networking, multith

kernel学习之动手添加系统调用(ARM)

我是在linux2.6.38中添加的系统调用,在mini6410开发板上测试的. 添加系统调用: 向内核中添加系统调用,需要执行三个步骤: 1.添加新的内核函数 2.更新unistd.h 3.更新系统调用表 1. 在kernel/sys.c中添加函数 asmlinkageint sys_add(int a,int b) { return a+b; } 2. 在arch/arm/include/asm/unistd.h 添加: #define_NR_add (_NR_SYSCALL+BASE +

Java学习的30个目标

本文将告诉你学习java需要达到的30个目标,希望能够对你的学习有所帮助.对比一下自己,你已经掌握了这30条中的多少条了呢? 1.你需要精通面向对象分析与设计(OOA/OOD).涉及模式(GOF,J2EEDP)以及综合模式.你应该十分了解UML,尤其是class,object,interaction以及statediagrams. 2.你需要学习java语言的基础知识以及它的核心类库(collections,serialization,streams,networking, multithrea

一文读懂深度学习框架下的目标检测(附数据集)

从简单的图像分类到3D位置估算,在机器视觉领域里从来都不乏有趣的问题.其中我们最感兴趣的问题之一就是目标检测. 如同其他的机器视觉问题一样,目标检测目前为止还没有公认最好的解决方法.在了解目标检测之前,让我们先快速地了解一下这个领域里普遍存在的一些问题. 目标检测 vs 其他计算机视觉问题图像分类 在计算机视觉领域中,最为人所知的问题便是图像分类问题. 图像分类是把一幅图片分成多种类别中的一类.  ImageNet是在学术界使用的最受欢迎的数据集之一,它由数百万个已分类图像组成,部分数据用于Im

目标检测101:一文带你读懂深度学习框架下的目标检测

从简单的图像分类到3D位置估算,在机器视觉领域里从来都不乏有趣的问题.其中我们最感兴趣的问题之一就是目标检测. 如同其他的机器视觉问题一样,目标检测目前为止还没有公认最好的解决方法.在了解目标检测之前,让我们先快速地了解一下这个领域里普遍存在的一些问题. 目标检测 vs 其他计算机视觉问题图像分类 在计算机视觉领域中,最为人所知的问题便是图像分类问题. 图像分类是把一幅图片分成多种类别中的一类. ImageNet是在学术界使用的最受欢迎的数据集之一,它由数百万个已分类图像组成,部分数据用于Ima