最近学习了LINUX内核进程管理,这里随意的回忆一下:
LINUX是一个多任务多进程的操作系统,在LINUX中进程和线程其实是没有太多区别的。只是多个线程可以同时访问同一块内存区域叫做共享内存。LINUX是一个支持抢占式的操作系统,什么是抢占,其实就是高优先级的进程抢占低优先级进程的资源,比如CPU时间片。
那如何判定一个进程的优先级级别哪?其实LINUX有自己的一套算法。内核代码写的很清楚,意思就是根据进程的平均休眠时间来确定LINUX进程的优先级别,LINUX认为I/O型操作需要的睡眠时间长,需要相应及时,比如我通过键盘打字需要很快的让字显示到屏幕上,这就是一次I/O,而且需要及时,这样的进程往往优先级比较高。而CPU密集型的操作,优先级低,因为这种操作往往经历的时间叫长,所以我们可能时效性要求不高,所以它的资源经常被抢占。
那什么是时间片哪?时间片就是通过优先级而分配进程的一个CPU处理时间,通常高优先级的时间片长,低优先级的时间片短。当时间片用完过后,LINUX会重新计算然后分配新的时间片,这个过程在LINUX内核代码中也有。
如果查看进程的优先级?使用TOP就可以看到 NICE 一列就是 -20-19 越低优先级越高。
为何LINUX要涉及为抢占式的?其实就是为了防止每个进程平等的获得资源,加快重要进程的相应时间。
这里只是回忆一下。。其实还有很多概念比如进程队列。