文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Linux进程调度笔记之Linux进程

Linux进程调度笔记之Linux进程

时间:2006-03-06  来源:ChinaE_OS

一:Linux进程的四大要素

1:一段供进程执行的程序,该程序可以被多个进程执行。

2:独立的内核堆栈。

3:进程控制快(task_struct:有了这个数据结构,进程才能成为内核调度的一个基本单位接受内核的调度。同时,这个结构还记录着进程所占用的各项资源。

4:独立的存储空间:即拥有专有的用户空间,除了前面的内核空间还有用户空间。

线程:只有前三条,没有第四条。

内核线程:完全没有用户空间。

用户线程:共享用户空间。

 

二:Linux进程分类:

1:交互式进程:这些进程经常和用户发生交互,所以花费一些时间等待用户的操作。当有输入时,进程必须很快的激活。通常,要求延迟在50-150毫秒。典型的交互式进程有:控制台命令,文本编辑器,图形应用程序。

2:批处理进程(Batch Process):不需要用户交互,一般在后台运行。所以不需要非常快的反应,他们经常被调度期限制。典型的批处理进程:编译器,数据库搜索引擎和科学计算。

3:实时进程:对调度有非常严格的要求,这种类型的进程不能被低优先级进程阻塞,并且在很短的时间内做出反应。典型的实时进程:音视频应用程序,机器人控制等。

批处理进程可能与I/O或者CPU有关,但是实时进程完全通过Linux的调度算法识别。

其实交互式进程和批处理进程很难区别。

 

三:Linux进程优先级

1:静态优先级(priority): 被称为“静态”是因为它不随时间而改变,只能由用户进行修改。它指明了在被迫和其它进程竞争CPU之前该进程所应该被允许的时间片的最大值(20)。

 

每个普通进程都一个静态优先级,内核为其分配的优先级数为:100(高优先级)-139(低优先级)。数值越大,优先级越低。新创建的进程一般继承父进程的优先级,但是用户可以通过给nice()函数传递“nice value“或者setpriority()改变优先级。

 

2: 动态优先级(counter): counter 即系统为每个进程运行而分配的时间片,Linux 兼用它来表示进程的动态优先级。只要进程拥有CPU,它就随着时间不断减小;当它为0 时,标记进程重新调度。它指明了在当前时间片中所剩余的时间量(最初为20)

 

事实上,在进程在调度的时候,调度器只察看动态优先级,其值为100-139。通过下面的公式可以根据静态优先计算出相应的动态优先级。

Dynamicy priority = max (100, min (static priority - bonus + 5, 139))  

 

Bonus:0-10,比5小,降低动态优先级,反之,可以提高动态优先级。Bonus和进程的平均睡眠时间有关。

 

3: 实时优先级(rt_priority):值为1000。Linux把实时优先级与counter值相加作为实时进程的优先权值。较高权值的进程总是优先于较低权值的进程,如果一个进程不是实时进程,其优先权就远小于1000,所以实时进程总是优先。

 

4:Base time quantum:是由静态优先级决定,当进程耗尽当前Base time quantum,kernel会重新分配一个Base time quantum给它。静态优先级和Base time quantum的关系为:

(1)       当静态优先级小于120

      Base time quantum(in millisecond)= (140 – static priority) * 20

(2)     当静态优先级大于等于120

      Base time quantum(in millisecond)= (140 – static priority) * 5

相关阅读 更多 +
排行榜 更多 +
试着飞手游下载

试着飞手游下载

休闲益智 下载
血染小镇(功能菜单)中文版下载

血染小镇(功能菜单)中文版下载

飞行射击 下载
泰坦之旅高爆版下载

泰坦之旅高爆版下载

角色扮演 下载