Linux进程调度切换_命令行参数上
Linux:进程调度切换_命令行参数(上)
一.进程退出:
1.释放代码和数据
2.将退出信息(任务完成情况)保存在task_struct内(int code…..)
3.task_struct被维护,给父进程管理
进程创建时,先创建数据结构,再加载代码和数据,退出顺序是反的
如果进程退出前父进程已经没了,会给操作系统进程管理(systemd)
子进程退出,父进程不接收他的退出信息,子进程处于僵尸状态,造成内存泄漏(Z状态一直不退出,PCB一直不释放(必须给父进程退出信息))
二.进程优先级
意义:获得计算机资源的先后顺序,计算机资源有限,排优先级可以提高效率
表示:PCB内几个int型变量表示新的PRI=PRI(旧)+nice值 (越小优先级越高)
默认PRI为80,nice值可调【-20,19】,总PRI范围[60,99]
关联:进程PCB内有UID记录启动人,(linux一切皆文件,所有操作都是进程操作,可以通过UID判断对应文件的拥有者,所属组。。。判断权限)
查看:ps -la
修改:1.指令:top 指令进入后按r,输入pid和nice值
2.系统调用(不常用,调优先级会影响其他进程)
三.进程切换
上下文:
2.切换过程(核心:怎么保存和恢复上下文)
问题:一个进程的时间片到了,切换置另一个进程,寄存器值被覆盖。但重新排队到它,上下文数据怎么恢复(程序从哪执行(PC值和IR值),寄存器内值怎么恢复(内存中的部分没人动))
答:做保护:时间片到了将寄存器的值放入内存中操作系统的tss段内( 可理解为放入PCB内,老内核tss在PCB中 ),重新排到此进程再加载恢复。
四,进程调度
意义:解决一个进程时间片完了调哪个进程的问题。
问题:很老的内核是FIFO,一个链表拿头节点。但没用优先级,用了优先级又要遍历插入,效率低。
答:linux的调度算法:
解释了为什么优先级PRI值范围只有40