进程管理23

一:进程基本概述

1.什么是进程

开发写的代码我们称为程序,那么将开发的代码运行起来。我们称为进程。

2.进程和程序的区别
程序: 静态的概念,可以永久存储在系统中。
进程: 动态的概念,程序运行的过程,当我们结束该进程,进程就随之的销毁了,但是程序还存储在系统中。
3.进程的生命周期

当父进程接收到任务调度时,会通过fock派生子进程来处理,那么子进程会继承父进程属性。
(1)子进程在处理任务时父进程不会进入等待
(2)子进程在处理任务代码后,会执行退出,然后唤醒父进程来回收子进程的资源。
(3)如果子进程处理任务时父进程退出了,子进程没有退出,那么这些进程没有父进程管理,就变成了孤儿进程,孤儿进程由system进行管理
(4)如果子进程退出的话,父进程还在没有收到子进程退出,那这些子进程就会变成僵尸进程

  • 僵尸进程与孤儿进程的区别:僵尸进程占用资源,而孤儿进程不会
    ps:每个进程的父进程都叫PPID,子进程则叫PID

二:监控进程状态

程序在运行后,我们需要了解进程的运行状态。查看进程的状态分为: 静态和动态两种方式

1.静态查看ps aux
USER  	 		进程运行的用户身份( 每一个进程,都需要一个特定的用户身份来运行 )
PID				子进程的身份标识 ( 就是一种标识,用来区分不同的进程 )
%CPU			该进程占用CPU的百分比是多少
%MEM			该进程占用内存的百分比是多少
VSZ				虚拟内存
RSS				实际占用内存   
TTY				该进程是哪个终端运行的  ? 表示是系统运行的	pts/0 pts/1 来源的终端是哪一个
STAT			进程所表示的状态( 运行 暂停 停止 .......)
START			进程启动时间
TIME			进程占用CPU的时间
COMMAND			运行该进程需要执行的命令	[ ] 表示内核启动的进程
  • STAT
    STAT基本状态——描述
    R :进程运行
    S :可中断进程
    T :进程被暂停
    D :不可中断进程
    Z :僵尸进程
    STAT状态+符号 —— 描述
    s :进程是控制进程, Ss进程的领导者,父进程
    < :进程运行在高优先级上,S<优先级较高的进程
    N :进程运行在低优先级上,SN优先级较低的进程
    +:当前进程运行在前台,R+该表示进程在前台运行
    l :进程是多线程的,Sl表示进程是以线程方式运行
2.动态查看top

w:
11:20:10 up 6 days, 7:46, 2 users, load average: 0.01, 0.02, 0.05
uptime:
11:20:14 up 6 days, 7:46, 2 users, load average: 0.01, 0.02, 0.05

top:查看前三行显示信息
第一行,任务对列信息同uptime命令执行结果一样

  • top - 11:18:15 up 6 days, 7:44, 2 users, load average: 0.08, 0.03, 0.06

11:18:15 当前系统时间
up 6 days,7:44 系统运行天数,小时
2 users 当前2个用户登录
load average: 0.08, 0.03, 0.06 后面三组数分别是1分钟,五分钟,十五分钟的负载情况

第二行,tasks-任务(进程)
Tasks: 112 total, 1 running, 110 sleeping, 1 stopped, 0 zombie

系统共有112个进程,其中处于运行的1个,110个在休眠(sleep),stopped状态的1个,zombie状态(僵尸)的有零个

第三行,CPU状态信息
%Cpu(s): 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

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
3.中断和软中断

1.什么是中断
中断是系统用来响应硬件设备请求的一种机制,它会打断进程的正常调度和执行,然后调用内核中的中断处理程序来响应设备的请求。

  • 为了解决中断处理程序执行过长和中断丢失的问题,Linux 将中断处理过程分成了两个阶段,也就是上半部和下半部:
    上半部:用来快速处理中断,它在中断禁止模式下运行,主要处理跟硬件紧密相关工作。
    下半部:用来延迟处理上半部未完成的工作,通常以内核线程的方式运行。
  • 所以,这两个阶段你也可以这样理解:
    上半部直接处理硬件请求,也就是我们常说的硬中断,特点是快速执行;
    而下半部则是由内核触发,也就是我们常说的软中断,特点是延迟执行。
  • Linux软中断与硬中断小结
    Linux 中的中断处理程序分为上半部和下半部:
    上半部对应硬件中断,用来快速处理中断。
    下半部对应软中断,用来异步处理上半部未完成的工作。
    Linux 中的软中断包括网络收发、定时、调度、等各种类型,可以通过查看-/proc/softirqs来观察软中断的运行情况。
4.转载的解释

硬中断:

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

软中断:

  1. 软中断的处理非常像硬中断。然而,它们仅仅是由当前正在运行的进程所产生的。
  2. 通常,软中断是一些对I/O的请求。这些请求会调用内核中可以调度I/O发生的程序。对于某些设备,I/O请求需要被立即处理,而磁盘I/O请求通常可以排队并且可以稍后处理。根据I/O模型的不同,进程或许会被挂起直到I/O完成,此时内核调度器就会选择另一个进程去运行。I/O可以在进程之间产生并且调度过程通常和磁盘I/O的方式是相同。
  3. 软中断仅与内核相联系。而内核主要负责对需要运行的任何其他的进程进行调度。一些内核允许设备驱动的一些部分存在于用户空间,并且当需要的时候内核也会调度这0个进程去运行。
  4. 软中断并不会直接中断CPU。也只有当前正在运行的代码(或进程)才会产生软中断。这种中断是一种需要内核为正在运行的进程去做一些事情(通常为I/O)的请求。有一个特殊的软中断是Yield调用,它的作用是请求内核调度器去查看是否有一些其他的进程可以运行。

问题解答:

  1. 问:对于软中断,I/O操作是否是由内核中的I/O设备驱动程序完成?
    答:对于I/O请求,内核会将这项工作分派给合适的内核驱动程序,这个程序会对I/O进行队列化,以可以稍后处理(通常是磁盘I/O),或如果可能可以立即执行它。通常,当对硬中断进行回应的时候,这个队列会被驱动所处理。当一个I/O请求完成的时候,下一个在队列中的I/O请求就会发送到这个设备上。
  2. 问:软中断所经过的操作流程是比硬中断的少吗?换句话说,对于软中断就是:进程 ->内核中的设备驱动程序;对于硬中断:硬件->CPU->内核中的设备驱动程序?
    答:是的,软中断比硬中断少了一个硬件发送信号的步骤。产生软中断的进程一定是当前正在运行的进程,因此它们不会中断CPU。但是它们会中断调用代码的流程。
    如果硬件需要CPU去做一些事情,那么这个硬件会使CPU中断当前正在运行的代码。而后CPU会将当前正在运行进程的当前状态放到堆栈(stack)中,以至于之后可以返回继续运行。这种中断可以停止一个正在运行的进程;可以停止正处理另一个中断的内核代码;或者可以停止空闲进程。
    转自: http://www.linuxidc.com/Linux/2014-03/98013.htm

硬中断是外部设备对CPU的中断,软中断是中断底半部的一种处理机制,信号则是由内核(或其他进程)对某个进程的中断。

f: 经常听同事说大量的网络小包会导致性能问题,为什么呢?
q: 因为大量的网络小包会导致频繁的硬中断和软中断?
所以大量网络小包传输很慢,但如果将网络包一次传递,是不是会快很多呢?


* 重点:

>1.进程的生命周期
	僵尸进程(会占用资源)
	孤儿进程()
2.系统指标监控
	ps  静态
	top 动态
3.中断
	软中断	硬中断
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值