学习Linux运维的个人笔记:进程管理——上(二十八)

一、进程基本概述

  • 什么是进程
    比如: 开发写的代码我们称为程序,那么将开发的代码运行起来。我们称为进程。
    总结一句话就是: 当我们运行一个程序,那么我们将运行的程序叫进程。
  • 程序和进程的区别
    程序: 静态的概念,可以永久存储在系统中。
    进程: 动态的概念,程序运行的过程,当我们结束该进程,进程就随之的销毁了,但是程序还存储在系统中。
  • 进程的生命周期
    在这里插入图片描述
    当父进程接收到任务调度时,会通过fock派生子进程来处理,那么子进程会继承父进程属性。
    1.子进程在处理任务代码时,父进程会进入等待状态中…
    2.子进程在处理任务代码后,会执行退出,然后唤醒父进程来回收子进程的资源。
    3.如果子进程在处理任务过程中,父进程退出了,子进程没有退出,那么这些子进程就没有父进程来管理了,就变成僵尸进程。
    PS: 每个进程都父进程的PPID,子进程则叫PID。
  • 孤儿进程和僵尸进程
    孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。

僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。(会占用资源)

二、监控进程状态

  • 输入ps aux
    在这里插入图片描述
    含义:

      USER   	进程运行的用户身份( 每一个进程,都需要一个特定的用户身份来运行 )
      PID		子进程的身份标识 ( 就是一种标识,用来区分不同的进程 )
      %CPU		该进程占用CPU的百分比是多少
      %MEM		该进程占用内存的百分比是多少
      VSZ		虚拟内存
      RSS		实际占用内存   
      TTY		该进程是哪个终端运行的  ? 表示是系统运行的	pts/0 pts/1 来源的终端是哪一个
      STAT		进程所表示的状态( 运行 暂停 停止 .......)
      START		进程启动时间
      TIME		进程占用CPU的时间
      COMMAND	运行该进程需要执行的命令	[ ] 表示内核启动的进程
    
  • STAT进程状态详解
    进程状态例:R、S、Ss、SN、S<…

STAT基本状态 描述 STAT状态+符号 描述
R 进程运行 s 进程是控制进程, Ss进程的领导者,父进程
S 可中断进程 < 进程运行在高优先级上,S<优先级较高的进程
T 进程被暂停 N 进程运行在低优先级上,SN优先级较低的进程
D 不可中断进程 + 当前进程运行在前台,R+该表示进程在前台运行
Z 僵尸进程 l 进程是多线程的,Sl表示进程是以线程方式运行
  • 输入top实时监视进程
    在这里插入图片描述
    含义:

      us:	用户进程占用cpu百分比( 视频加密、视频解码 )
      sy:	内核进程占用cpu百分比 ( 比如 网卡、硬件设备、硬盘 )
      ni:	优先级高的进程占用cpu百分比  
      id:	空闲的百分比 ( 值越大、说明服务器越空闲 )
      wa:	用户请求磁盘资源,磁盘很慢慢慢,请求的资源很多,会造成大量的等待程序    ( 数据库 )
      hi:	硬中断
      si:	软中断
      st:	当该服务器运行了很多的虚拟机,这些虚拟机总共占用当前物理服务器的百分比是多少
    

不可能用top去每台服务器观察,后期将所有的服务器通过监控,统一的监控起来

  • top常见指令
字母 含义
h 查看帮出
1 数字1,显示所有CPU核心的负载
z 以高亮显示数据
b 高亮显示处于R状态的进程
M 按内存使用百分比排序输出
P 按CPU使用百分比排序输出
q 退出top

中断

  • 中断是系统用来响应硬件设备请求的一种机制,它会打断进程的正常调度和执行,然后调用内核中的中断处理程序来响应设备的请求。
  • 由于中断处理程序会打断其他进程的运行,所以,为了减少对正常进程运行调度的影响,中断处理程序就需要尽可能快地运行。 如果中断本身要做的事情不多,那么处理起来也不会有太大问题;但如果中断要处理的事情很多,中断服务程序就有可能要运行很长时间。 特别是,中断处理程序在响应中断时,还会临时关闭中断。这就会导致上一次中断处理完成之前,其他中断都不能响应,也就是说中断有可能会丢失。
  • 硬中断和软中断
    网卡接收到数据包后,会通过硬件中断的方式,通知内核有新的数据到了。这时,内核就应该调用中断处理程序来响应它。 对上半部来说,既然是快速处理,其实就是要把网卡的数据读到内存中,然后更新一下硬件寄存器的状态(表示数据已经读好了),最后再发送一个软中断信号,通知下半部做进一步的处理。 而下半部被软中断信号唤醒后,需要从内存中找到网络数据,再按照网络协议栈,对数据进行逐层解析和处理,直到把它送给应用程序。

所以,这两个阶段你也可以这样理解: 上半部直接处理硬件请求,也就是我们常说的硬中断,特点是快速执行; 而下半部则是由内核触发,也就是我们常说的软中断,特点是延迟执行。

  • 硬软中断小结
    Linux 中的中断处理程序分为上半部和下半部: 上半部对应硬件中断,用来快速处理中断。 下半部对应软中断,用来异步处理上半部未完成的工作。 Linux 中的软中断包括网络收发、定时、调度、等各种类型,可以通过查看 /proc/softirqs 来观察软中断的运行情况。
    (为什么大量的网络小包会导致性能问题?因为大量的网络小包会导致频繁的硬中断和软中断,所以大量网络小包传输很慢,但如果将网络包一次传递,会快很多。)
发布了34 篇原创文章 · 获赞 10 · 访问量 2329

猜你喜欢

转载自blog.csdn.net/weixin_44903608/article/details/105366886
今日推荐