免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1224 | 回复: 0
打印 上一主题 下一主题

Linux进程调度(1) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-07 20:29 |只看该作者 |倒序浏览
    Linux是一个多任务的操作系统,可以同时执行多个进程。但这里所说的“同时”并不是真正的同一时刻,实际上,不可能有多于CPU数量的进程在真正的同一时刻被执行,而是通过复杂的调度策略或算法让多个进程看起来好像是在同时执行。这个调度策略的核心思想是尽量让更重要的进程优先执行。
    调度的对象是进程。进程是程序的动态实现的称呼,也叫任务。一个不太恰当的比方,套用面向对象的观点看,如果把程序比作类的话,那么进程就是这个类的实现对象。和一个类可以有多个独立的实现对象一样,一个程序也可以有多个实现进程。如果把操作系统比作一个生态系统的话,那么进程就是个其中的生命个体,task_struct这个结构框架是它的存在形式,里面的数据是它的存在本质。
    Linux的进程调度是基于分时机制。一个不太恰当的比方,就好像一个圆盘,像切蛋糕一样切成若干块,其中每一块就是一个时间片,每一块里放一个进程,在圆盘中心处插一个指针,这就是CPU;转动圆盘,指针所指向的那个进程就是当前执行进程。和切蛋糕不同的是,圆盘上的每一块大小不是固定不变的,里面的进程也不是永远占有时间片,进程调度者时刻都在监视着每个进程,并每隔一定周期重新计算进程的优先度,由此觉定哪些进程进入圆盘,哪些进程暂时退出,进而每个进程占有的时间片大小。
    从进程调度的角度可以把进程分成三大类,交互进程,批处理进程,实时进程。交互进程是和用户打交道的进程,比如shell,编辑器等,所以要保证其响应速度,不然用户会烦躁。批处理进程往往不会被用户直接感觉到,常常运行于后台,所以它们的优先度可以放低些,比如编译程序。实时进程对调度的即时性要求最高,因为它们往往涉及到系统的安全或任务的能否完成。它们一般属于来也匆匆,去也匆匆的主。实时进程很好区别于其他进程,但交互进程和批处理进程的区分界线往往很模糊,Linux的识别方法是根据其过去的行为表现为其分类。
一个进程占领了CPU期间,如果世界和平,那么它将在其执政期满后自动下台(不管它的任务是否完成,当然它还有重新上台的机会),如果世界不那么和平,而有个更“强势”的进程将其赶下台去,送入栈中,自己登上宝座。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/91477/showart_1817791.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP