进程
进程的基本概念
PCB通常记载进程之相关信息,包括:
程序计数器:接着要运行的指令地址。
进程状态:可以是new、ready、running、waiting或 blocked等。
CPU暂存器:如累加器、索引暂存器(Index register)、堆栈指针以及一般用途暂存器、状况代码等,主要用途在于中断时暂时存储数据,以便稍后继续利用;其数量及类因电脑架构有所差异。
CPU排班法:优先级、排班队列等指针以及其他参数。
存储器管理:如标签页表等。
会计信息:如CPU与实际时间之使用数量、时限、账号、工作或进程号码。
输入输出状态:配置进程使用I/O设备,如磁带机。
进程控制块PCB的组织方式:
1.线性表方式:不论进程的状态如何,将所有的PCB连续地存放在内存的系统区。这种方式适用于系统中进程数目不多的情况。
2.索引表方式:该方式是线性表方式的改进,系统按照进程的状态分别建立就绪索引表、阻塞索引表等。
3.链接表方式:系统按照进程的状态将进程的PCB组成队列,从而形成就绪队列、阻塞队列、运行队列等。
如果想查看包含其他使用者的进程,和PID,CPU占有率,记忆体使用情况,运行状态等,可以输入ps -au
USER:进程拥有者,示例中是root。
PID:进程ID,用户ID为UID,父进程ID为PPID
%CPU:占用的CPU使用率,ID号为1的进程为0
%MEM:占用的物理内存百分比,ID号为1的进程为0
VSZ:占用的虚拟内存量,ID号为1的进程为194184
RSS:占用的固定的内存量,ID号为1的进程为6536
TTY:终端的次要装置号码(minor device number of tty),示例中的TTY列都是“?”,是表示这些进程不属于任何TTY,因为它们是由系统启动的,tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
STAT:该进程的状态,有下一个板块的几个状态,D,R,S,T,Z是ps指令标识进程的5种状态码
TIME:进程已消耗的CPU时间
CMD:启动进程的命令
其中
NI:谦让度
WCHAN:正在等待的进程资源
Linux上进程的五种状态:
1.R——Runnable(运行):正在运行或在运行队列中等待
2.S——sleeping(中断):休眠中,受阻,在等待某个条件的形成或接收到信号
3.D——uninterruptible sleep(不可中断):收到信号不唤醒和不可运行,进程必须等待直到有中断发生
4.Z——zombie(僵死):进程已终止,但进程描述还在,直到父进程调用wait4()系统调用后释放
5.T——traced or stoppd(停止):进程收到SiGSTOP,SIGSTP,SIGTOU信号后停止运行
状态后缀表示:
<:优先级高的进程
N:优先级低的进程
L:有些页被锁进内存
s:进程的领导者(在它之下有子进程)
l:ismulti-threaded (using CLONE_THREAD, like NPTL pthreads do)
+:位于后台的进程组
一、 僵尸进程
僵尸进程: 一个父进程利用fork创建子进程,如果子进程退出,而父进程没有利用wait 或者 waitpid 来获取子进程的状态信息,那么子进程的状态描述符依然保存在系统中。
二、孤儿进程
孤儿进程:一个父进程退出, 而它的一个或几个子进程仍然还在运行,那么这些子进程就会变成孤儿进程,孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集的工作