进程与程序:
程序:储存在磁盘上的文件,包含可执行指令和数据的静态实体。
进程:运行的程序(一个程序可以执行多次,加载出多个进程)。处于活动状态的计算机程序
进程的分类:
交互进程:有输入,输出,用户可以根据自己的情况输入数据,得到想要的结果
批处理进程:有脚本加载执行的程序(LINUX下的shell, windows 的bat);
守护进程:总是活跃的,后台运行,一般由系统开机时加载执行或root用户主动加载执行
查看进程:
简单方式:ps(显示当前用户有终端控制权的程序)
列表方式:ps -aux(以列表方式显示详细信息)
进程的详细列表信息:
` USER:进程的属主
PID:进程的id
%CPU:CPU使用率
%MEM:内存使用率
VSZ:占用虚拟内存的大小
RSS:占用物理内存的大小
TTY:终端的次设备号,如果无终端控制显示?
STAT:进程的状态(o 就绪 ,r 运行态(Linux 没有就绪态,就绪态也用r表示),s表示休眠态(可以被系统中断或者信 号唤醒,醒后转入运行态),t 暂停态(被SIGSTOP信号暂停的,当受到SIGCONT信号,才能在转入运行态)
Z 僵尸态,已经结束停止运行,但父进程还没有回收。
带< 表示高优先级的 N低优先级 小L多线程化的进程。 +在前台进程组中的进程 s会话的首进程
START TIME:进程的开始时间
COMAND:进程的可执行文件名
父进程,子进程,孤儿进程,僵尸进程
如果子进程先于父进程结束,会向父进程发送SIGCHLD信号,父进程收到信号后,就应该去回收子进程的相关资源,在默认情况下,父进程忽略该信号,这个时候子进程就成了僵尸进程
如果父进程先于子进程结束,子进程就成了孤儿进程,然后变成init的子进程
进程标识符
操作系统会为每个进程分配一个唯一的标识符,采用无符号整数表示,即进程id;
进程id在任何时候都是唯一的,但是可以重用,当一进程结束,新创建的进程才可以使用它的进程id(延时重用)
获取进程id :
getpid获取进程id
getppid获取父进程id
getuid当前进程的用户id
getgid获取当前进程的组id