2019-08-21

day21-进程

1、什么是进程

当我们运行一个开发的程序,我们将运行的程序叫做进程,当程序运行为进程后,系统会为该进分配内存,以及进程运行的身份和权限,在进程运行的过程中,系统会有各种指标来表示当前运行的状态。

2、程序和进程的区别

1.程序是数据和指令的集合,是一个静态的概念。同时进程可以长期存在系统中。
2.进程是程序运行的进程,是一个动态的概念。进程是存在生命周期的概念的,也是说进程随着程序的终止而销毁,不会永久存在系统中。

3、进程的生命周期

当父进程收到任务调度时,会通过fock派生出进程来处理,那么子进程会继承父进程属性
1.子进程在处理任务代码时,父进程会进入等待状态中.....
2.子进程在处理任务代码后,会执行退出,然后唤醒父进程来回收子进程的资源。
3.如果子进程在处理任务过程中,父进程退出,子进程没退出,那么这些子进程就没有父进程来管理了,就变成僵尸进程
ps:每个进程父进程的PPID......子进程则叫PID.

4、进程状态

程序在运行后,我们需要了解进程的运行状态。查看进程的状态分为:静态和动态
使用ps命令查看当前的进程状态(静态)

USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
1566372507648.png
STAT状态的显示 S、 Ss、Ss+、S<、S、S+、R、R+、D、T、Z
1566371117309.png

5、如何监控进程的状态、静态ps、动态top


1566372742684.png
Tasks: 146 total,   1 running, 145 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  2028116 total,  1534552 free,   107776 used,   385788 buff/cache
KiB Swap:  1052668 total,  1052668 free,        0 used.  1735580 avail Mem
#Tasks: 154 total 任务总数
#2 running     有两个进程正在运行
#151 sleeping   151个睡眠
#1 stopped     1个挂起 停止
#0 zombie      僵尸进程
#0.3 us       进程占用cpu的百分比(用户进程)
#0.0 sy       内核进程 (硬件)
#0.0 ni       优先级的进程占用cpu的百分比
#99.7 id      空闲的进程
#0.0 wa       大量的等待 -->
#0.0 hi       硬中断
#0.0 si       软中断
#0.0 st       虚拟机占用物理CPU的时间

top常见指令


1566373245350.png

6、进程中的iowait 软中断 硬中断
中断是指CPU在执行程序的过程中,出现了某些突发事件急需处理,CPU暂停当前程序的执行,转去处理突发事件,处理完后又返回原程序被中断的地方继续执行。
软中断:
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.硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等。每个设备或设备集都有它自己的IRQ(中断请求)。基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核中的一个子程序,而不是一个独立的进程)。
2.处理中断的驱动是需要运行在CPU上的,因此,当中断产生的时候,CPU会中断当前正在运行的任务,来处理中断。在有多核心的系统上,一个中断通常只能中断一颗CPU(也有一种特殊的情况,就是在大型主机上是有硬件通道的,它可以在没有主CPU的支持下,可以同时处理多个中断。)。
3.硬中断可以直接中断CPU。它会引起内核中相关的代码被触发。对于那些需要花费一些时间去处理的进程,中断代码本身也可以被其他的硬中断中断。
4.对于时钟中断,内核调度代码会将当前正在运行的进程挂起,从而让其他的进程来运行。它的存在是为了让调度代码(或称为调度器)可以调度多任务。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容