1.什么是进程
进程:是运行起来的程序
2.进程的生命周期
3.进程的状态
- R:运行状态(runing):并不意味着进程一定在运行中,也可以在运行队列里;
- S:睡眠状态(sleeping):进程在等待事件完成;(浅度睡眠,可以被唤醒)
- D:磁盘睡眠状态(Disk sleep):不可中断睡眠(深度睡眠,不可以被唤醒,通常在磁盘写入时发生)
- T:停止状态(stopped):可以通过发送SIGSTOP信号给进程来停止进程,可以发送SIGCONT信号让进程继续运行
- X:死亡状态(dead):该状态是返回状态,在任务列表中看不到;
- Z:僵尸状态(zombie):子进程退出,父进程还在运行,但是父进程没有读到子进程的退出状态,子进程进入僵尸状态;
- t:追踪停止状态(trancing stop)
- s:Ss的领导者,父进程
- <:优先级高的进程,S<优先级较高的进程
- N:优先级低的进程,SN优先级较低的进程
- +:当前运行进程在前台运行
|:进程是多线程的
4.进程的静态ps与动态的top
[root@wxb ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER 进程的属主;
PID 进程的ID;
PPI 父进程;
%CPU 进程占用的CPU百分比;
%MEM 占用内存的百分比;
NI 进程的NICE值,数值大,表示较少占用CPU时间;
VSZ 进程使用的虚拟內存量(KB);
RSS 该进程占用的固定內存量(KB)(驻留中页的数量);
TTY 该进程在那個終端上運行(登陸者的終端位置),若與終端無關,則顯示(?)。若为pts/0等,则表示由网络连接主机进程
WCHAN 当前进程是否正在進行,若为-表示正在進行;
START 該進程被觸發启动时间;
TIME 該进程實際使用CPU運行的时间;
COMMAND 命令的名称和参数;
[root@wxb ~]# top
top - 15:37:24 up 5:56, 2 users, load average: 0.00, 0.01, 0.05
当前时间
系统已运行的时间
当前登录用户的数量
相应最近5、10和15分钟内的平均负载。
Tasks: 101 total, 1 running, 100 sleeping, 0 stopped, 0 zombie
Tasks 任务(进程),系统共有101个进程,正在运行的有1个,100个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。
%Cpu(s): 0.3 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
us, user: 运行(未调整优先级的) 用户进程的CPU时间
sy,system: 运行内核进程的CPU时间
ni,niced:运行已调整优先级的用户进程的CPU时间
wa,IO wait: 用于等待IO完成的CPU时间
hi:处理硬件中断的CPU时间
si: 处理软件中断的CPU时间
st:这个虚拟机被hypervisor偷去的CPU时间(译注:如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的)。
5.软中断与硬中断
(1) 硬中断
由与系统相连的外设(比如网卡、硬盘)自动产生的。主要是用来通知操作系统系统外设状态的变化。比如当网卡收到数据包的时候,就会发出一个中断。我们通常所说的中断指的是硬中断(hardirq)。
(1) 软中断
软中断是一组静态定义的下半部接口,可以在所有处理器上同时执行,即使两个类型相同也可以。为了满足实时系统的要求,中断处理应该是越快越好。linux为了实现这个特点,当中断发生的时候,硬中断处理那些短时间就可以完成的工作,而将那些处理事件比较长的工作,放到中断之后来完成,也就是软中断(softirq)来完成。但一个软中断不会抢占另一个软中断,唯一可以抢占软中断的是硬中断。
(3)硬中断和软中断的区别
- 软中断是执行中断指令产生的,而硬中断是由外设引发的。
- 硬中断的中断号是由中断控制器提供的,软中断的中断号由指令直接指出,无需使用中断控制器。
- 硬中断是可屏蔽的,软中断不可屏蔽。
- 硬中断处理程序要确保它能快速地完成任务,这样程序执行时才不会等待较长时间,称为上半部。
- 软中断处理硬中断未完成的工作,是一种推后执行的机制,属于下半部。