今日内容
1.什么是进程
进程是指在系统中正在运行的一个应用程序;线程是系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元。
2.程序与进程之间有什么区别
1、进程是动态的,而程序是静态的。
2、进程有一定的生命期,而程序是指令的集合,本身无“运动”的含义。没有建立进程的程序不能作为1个独立单位得到操作系统的认可。
3、1个程序可以对应多个进程,但1个进程只能对应1个程序。进程和程序的关系犹如演出和剧本的关系。
4、进程和程序的组成不同。从静态角度看,进程由程序、数据和进程控制块(PCB)三部分组成。而程序是一组有序的指令集合。
5.程序是对于用户而言,也可以叫做软件。进程是对于程序员而言,是操作系统的概念。
6.进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
7.程序,是管理方式的一种,是能够发挥出协调高效作用的工具,在我们的社会主义建设事业或者说现代化建设中,应该充分重视它的作用,应该不断地将我们的工作从无序整改到有序。
3.进程的生命周期
就是从进程的创建到进程的结束 ,即ready(就绪),running(运行),wait(等待).
当父进程接收到任务调度时,会通过fock 派生子进程来处理,那么子进程会继承父进程属性
1.子进程在处理任务代码时,父进程会进入等待状态中
2.子进程在处理任务代码后,会执行退出,然后唤醒父进程来回收子进程的资源
3.如果子进程在处理任务过程中,父进程退出了,子进程没有退出,那么这些子进程就没有父进程来管理,父进程退出了,子进程没有退出,那么这些子进程就没有父进程来管理了,就变成僵尸进程。
PS:每个进程的父进程PPID,子进程叫PID
4.进程运行的状态指示
user :启动进程的用户
PID :进程运行的ID号
%CPU :进程占用CPU百分比
%MEM :进程占用内存百分比
VSZ :进程占用虚拟内存大小(单位KB)
RSS :实际占用内存
TTY :进程是由哪个终端运行启动的tty1、pts/0等,表示内核程序与终端无关
STAT :进程运行过程中的状态 man ps
START : 进程的启用时间
TIME :进程占用CPU的总时间(为0表示还没超过秒)
5.如何监控进程的状态、静态ps、动态top
静态方式: ps aux , ps -ef 会显示PPID父进程
动态方式: top htop (负载状态 w uptime)
STAT的基本状态
使用top命令查看当前的进程状态(动态)
任务 含义
Tasks:108 total 当前进程的总数
1 running 正在运行的进程数
106sleeping 睡眠的进程数
1 stopped 停止的进程数
0 zombie 僵尸进程数
%CPU(s):0.0 us 系统用户进程使用CPU的百分比
0.7 sy 内核中的进程占用CPU百分比,通常内核是于硬件进行交互
98.7 id id空闲CPU的百分比
0.0 wa waCPU等待IO完成的时间
0.0 hi 硬中断,占的CPU百分比
0.0 si 软中断,占的CPU百分比
0.0 st 比如虚拟机占用物理CPU的时间
top常见指令
top 常见指令
字母 含义
h 查看帮出
1 数字1,显示所有CPU核心的负载
z 以高亮显示数据
b 高亮显示处于R状态的进程
M 按内存使用百分比排序输出
P 按CPU使用百分比排序输出
q 退出top
6.进程中的iowait软中断、硬中断
1.什么是中断
中断是系统用来响应硬件设备请求的一种机制,它会打断进程的正常调度和执行,然后调用内核中的中断处理程序来响应设备的请求。
2.硬中断
1. 硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等。每个设备或设备集都有它自己的IRQ(中断请求)。基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核中的一个子程序,而不是一个独立的进程)。
2. 处理中断的驱动是需要运行在CPU上的,因此,当中断产生的时候,CPU会中断当前正在运行的任务,来处理中断。在有多核心的系统上,一个中断通常只能中断一颗CPU(也有一种特殊的情况,就是在大型主机上是有硬件通道的,它可以在没有主CPU的支持下,可以同时处理多个中断。)。
3. 硬中断可以直接中断CPU。它会引起内核中相关的代码被触发。对于那些需要花费一些时间去处理的进程,中断代码本身也可以被其他的硬中断中断。
4. 对于时钟中断,内核调度代码会将当前正在运行的进程挂起,从而让其他的进程来运行。它的存在是为了让调度代码(或称为调度器)可以调度多任务。
3.软中断
1. 软中断的处理非常像硬中断。然而,它们仅仅是由当前正在运行的进程所产生的。
2. 通常,软中断是一些对I/O的请求。这些请求会调用内核中可以调度I/O发生的程序。对于某些设备,I/O请求需要被立即处理,而磁盘I/O请求通常可以排队并且可以稍后处理。根据I/O模型的不同,进程或许会被挂起直到I/O完成,此时内核调度器就会选择另一个进程去运行。I/O可以在进程之间产生并且调度过程通常和磁盘I/O的方式是相同。
3. 软中断仅与内核相联系。而内核主要负责对需要运行的任何其他的进程进行调度。一些内核允许设备驱动的一些部分存在于用户空间,并且当需要的时候内核也会调度这个进程去运行。
4. 软中断并不会直接中断CPU。也只有当前正在运行的代码(或进程)才会产生软中断。这种中断是一种需要内核为正在运行的进程去做一些事情(通常为I/O)的请求。有一个特殊的软中断是Yield调用,它的作用是请求内核调度器去查看是否有一些其他的进程可以运行。
软中断和硬中断可以这样理解分为两部分理解
1.上半部对应硬中断,用来快速处理中断
2.下半部对应软中断,用来异步处理上半部未完成的工作
Linux中的软中断包括网络收发、定时、调度、等各种类型,可以通过查看/proc/softirqs 来观察软中断的运行情况