首先回顾下内核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值