描述进程
进程信息被放在一个叫做进程控制块的数据结构中,称之为PCBLinux中描述进程PCB的结构体为task_struct,是内核的一种数据结构,会被装载到RAM中,并包含着进程的信息task_struct内容
标识符pid:描述本进程的唯一标识符,区别其他进程状态:任务状态、退出代码、退出信号等优先级:相对于其他进程的优先级程序计数器:程序中即将被执行的下条指令地址,CPU里的重要寄存器PC指针内存指针:包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针上下文数据:进程执行时处理器的寄存器中的数据,包括通用寄存器、程序计数器、程序状态字PSW(如执行方式、中断屏蔽字等)、用户栈指针(存放过程调用和系统调用参数和调用地址)I/O状态信息:包括显示的I/O请求、分配给进程的I/O设备和被进程使用的文件列表记账信息:可能包括处理器时间总和,使用的时钟数总和、时间限制、记账号等其他信息组织进程
所有运行在系统的进程都以task_struct链表的形式存在内核中
修改进程状态
kill -l:查看系统支持的信号列表kill -SIGSTOP pid:使pid号进程停止kill -SIGCOUT pid:使pid号进程继续运行僵尸进程
僵尸状态(Z)是一个比较特殊的状态,当进程退出并且父进程没有读到子进程的退出代码就会产生僵尸进程僵尸进程会以终止状态保持在进程表中,并且会一直等待父进程读取子进程的退出代码当子进程提前退出,父进程还在运行但是没有读取子进程的退出代码,子进程进入僵尸状态危害
子进程的退出状态会一直维护下去,维护退出状态本身就是要用数据维护,也属于进程基本信息,保存在task_struct中所以僵尸状态不退出,PCB要一直维护退出信息,如果一个父进程创建了许多子进程,都不进行回收,会造成内存资源的极大浪费,也会造成内存泄漏孤儿进程
父进程提前退出,子进程就是孤儿进程,孤儿进程会被1号init进程领养,由init进程回收
CPU资源分配的顺序就是进程的优先级
查看系统进程
可以通过ps -l来查看
UID:执行者身份PID:子进程的pidPPID:父进程的pidPRI:进程的优先级NI:进程的nice值PRI和NI
PRI是进程的优先级,值越小优先级越高NI是进程的nice值,表示进程可被执行的优先级修正数值,nice值取值范围是[-20,19]这40个级别,存在上下限是为了让调度器调度资源均衡进程的优先级PRI(new) = PRI(old) + nice,所以调整进程的优先级就是调整nice值nice值不是进程的优先级,但是nice值会影响进程的优先级修改进程优先级
nice -n x ./test:启动前调整test进程的nice值为xrenice x -p xxxx:将pid为xxxx的已存在进程nice值设为x用top修改已存在进程的nice:top->进入top后按"r"->输入进程pid->输入nice值