首先回顾下内核kernel的功能,负责整个计算机系统相关的资源分配和管理,而整部计算机系统最重要的是cpu和内存,至少有以下功能:
1.系统调用接口
2.程序管理,linux是多任务环境,同时间有多个工作再等待cpu运算处理,内核调度分配管理cpu的资源。
3.内存管理
4.文件系统管理
5.设备驱动
进程的管理
进程:运行中的程序的一个副本
每个进程是有生命周期的,在用户空间,进程是由PID标识。在生命周期中PID是唯一且不变的。
进程的描述符:在linux内核中,进程是由task_struct结构表示(linux内核存储进程信息的固定格式),此结构中包含此进程所需要的所有数据,如进程的状态、运行的时间、堆栈、父进程、执行的线程等。
linux将多个进程(task_struct结构)放在任务队列的双向链表中(task_list)中。
进程的创建:
当启动linux时,加载完内核后,会创建第一进程init。之后所有的进程都是由init或父进程向内核发起调用fork()自身而来,再而克隆clone()自身的数据给子进程。
进程的优先级:
系统中同时有大量的进程需要执行时,是需要优先级来先后处理的。task_struct中是有记录优先级的,内核是如何知道哪个优先级高哪个低,遍历。内核2.6将进程优先级划分位固定的个数。
0~139个优先级
0~99实时优先级(数字越大,优先级越高)
100~139 动态优先级(数字越小,优先级越高)
priority 这个值越低代表越优先执行,这个值是由内存动态调整的,用户无法调整
nice值 可调整范围是 -20~19
priority(new)=priority(old)+nice值,越小越优先执行。
修改nice值:
nice命令:新执行的命令即给予新的nice值
选项 -n
renice:已存在的进程修改nice值
原文地址:http://blog.51cto.com/12107790/2092134