进程管理
进程就是运行的程序
程序:静态的概念,可以永久储存在系统中
进程:动态的概念,程序运行的过程,运行的程序被终止,进程就被销毁,不会储存
进程的生命周期:
父进程PPID收到任务调度是,会通过fork派生子进程PID
子进程处理任务时,父进程不会进入等待,运行过程由Linux系统 进行调度
子进程完成任务后,会执行退出,父进程会回收子进程的资源
僵尸进程:子进程异常退出,而父进程没有进行回收资源,导致子进程虽然运行但没有实体,在内核的进程表中占据一条记录,对
系统资源造成浪费
孤儿进程:子进程执行过程中,父进程退出,子进程没有退出,子进程就由系统的system进程管理
监控进程状态
静态监控:监控某一刻的进程状态,ps -aux命令查看
USER:进程运行的用户身份(每一个进程都需要一个特定的用户身份来运行)
PID:子进程的身份标识
%CPU:进程占用CPU的百分比
%MEM:进程占用内存的百分比
VSZ:虚拟内存
RSS:实际占用的内存
TTY:该进程是哪个终端运行的 ?标识系统运行
STAT:进程所表示的状态
START:进程启动时间
TIME:进程占用CPU的总时间
COMMAND:运行进程需要用到的命令 []表示内核启动的进程
其中的STAT(重点)
基本状态:
R 运行中的进程
S 可中断的进程
T 被暂停的进程
D 不可中断的进程
Z 僵尸进程
状态加符号:
s 该进程是控制进程,比如Ss 是父进程
< 该进程运行在高优先级上
N 该进程运行在低优先级上
+ 该进程运行在前台
l 该进程是多线程的
动态监控
top命令
第一行:up(系统运行时间) user(用户数) load average (平均负载)
第二行:total(进程数) running(正在运行的进程数) sleeping(暂停的进程数) stopped(停止的进程数) zombie (僵尸进程)
第三行:us(用户进程占用的CPU百分比) sy(内核进程占用的CPU百分比) ni(优先级高的进程占用的CPU百分比)
id(空闲的CPU百分比) wa(需要等待的进程占用的CPU百分比,在数据库场景常见)
hi (硬中断) si(软中断) st(当服务器中运行虚拟机的时候,虚拟机占用的物理CPU百分比)
中断程序
中断是系统用来响应硬件设备请求的一个机制,会打断进程的正常调度和执行,然后调用内核中的中断程序来响应设备的请求
有了中断程序,可以提高系统的并发处理能力
中断带来的问题:由于中断程序会打断其他进程的运行,所以中断程序本身需要尽可能快地运行,如果中断要处理的事情很多,中断程序
会运行很长时间,注意,中断程序在响应中断的时候,会临时关闭中断,当第一次的中断还没有处理完,其他的中断都不能响应,中断也就丢失了
为了解决中断处理时间过长和中断丢失的问题,Linux将中断处理过程分成了两个阶段,
上半部:用来快速处理中断,在中断关闭时运行,主要处理跟硬件紧密相关的工作,这就是硬中断,快速执行
下半部:用来延迟处理上半部未完成的工作,通常以内核线程的方式运行,这就是软中断,延迟执行