1.什么是进程?
进程是系统正在运行的一个程序,程序一旦运行就是个进程
2.程序与进程之间有什么区别?
1.程序是数据和指令的集合,是一个静态的概念。比如/bin/ls、/bin/cp等二进制文件。同时程序可以长期存在系统中。
2.进程是程序运行的过程,是一个动态的概念。进程是存在生命周期的概念的,也就是说进程会随着程序的终止而销毁,不会永久存在系统中。
3.进程的生命周期?
当父进程接收到任务调度时,会通过fock派生子进程来处理,那么子进程会继承父进程属性。
1.子进程在处理任务代码时,父进程会进入等待状态中...
2.子进程在处理任务代码后,会执行退出,然后唤醒父进程来回收子进程的资源。
3.如果子进程在处理任务过程中,父进程退出了,子进程没有退出,那么这些子进程就没有父进程来管理了,就变成僵尸进程。
PS: 每个进程都父进程的PPID,子进程则叫PID。
4.进程运行的状态指标?
Tasks: 127 total 任务总数
2 running 有两个进程正在运行
126 sleeping 12个睡眠进程
0 stopped 0个挂起,停止
0 zombie 0 个僵尸进程
0.0 us 进程占用cpu的百分比
0.3 sy 内核进程(硬件)
0.0 ni 优先级的进程占用cpu的百分比
99.7 id 空闲的进程
0.0wa 大量的等待
0.0 hi 硬中断
0.0 si 软中断
0.0 st 虚拟机占用物理cpu的时间
5.如何监控进程的状态、静态ps、动态top?
静态ps:
USER 启动进程的用户
PID 进程运行的ID
%CPU 进程占用的CPU百分比
%MEM 进程占用内存百分比
VSZ 进程占用虚拟内存大小(单位KB)
RSS 进程占用物理内存实际大小(单位KB)
TTY 进程是由那个终端运行启动的tty1,ps/0等标识内核程序与终端无关
STAT 进程运行过程中的状态man ps (/STATE)
START 进程的启动时间
TIME 进程占用CPU的总时间(为0表示还没超过秒)
COMMAND 程序的运行指令,[方括号]属于内核态的进程,没有[ ]的是用户态进程
6.进程中的iowait 软中断 硬中断?
网卡接收到数据包后,会通过硬件中断的方式,通知内核有新的数据到了。这时,内核就应该调用中断处理程序来响应它。
对上半部来说,既然是快速处理,其实就是要把网卡的数据读到内存中,然后更新一下硬件寄存器的状态(表示数据已经读好了),最后再发送一个软中断信号,通知下半部做进一步的处理。
而下半部被软中断信号唤醒后,需要从内存中找到网络数据,再按照网络协议栈,对数据进行逐层解析和处理,直到把它送给应用程序。
所以,这两个阶段你也可以这样理解:
上半部直接处理硬件请求,也就是我们常说的硬中断,特点是快速执行;
而下半部则是由内核触发,也就是我们常说的软中断,特点是延迟执行。
Linux软中断与硬中断小结
Linux 中的中断处理程序分为上半部和下半部:
上半部对应硬件中断,用来快速处理中断。
下半部对应软中断,用来异步处理上半部未完成的工作。
Linux 中的软中断包括网络收发、定时、调度、等各种类型,可以通过查看 /proc/softirqs 来观察软中断的运行情况。