进程管理

1、内核数据结构(task structure)

   包含了:PID PPID 进程上一次的运行状态 相关数据 名称等信息

堆:动态增加的内存,可以简称为堆

stack:栈,用于存储本地变量

MMU:内存管理单元(CPU中的设备)

进程切换:也叫上下文切换(

进程包含的信息

   进程号

   内存空间

   用户

   父进程

   CPU time


VSZ:虚拟内集,即进程的虚拟内存大小,包含了共享库的内存大小,栈,堆,data,程序命令本身

RSS:常住内存集(residentsize)

多线程:thread,多线程需并行编程模型编写,即可以使用多线程处理任务


进程状态

   stopped:停止,不会被调试

   ready:就绪,排队中

   executing:正在运行,

   uninterruptible:睡眠状态(sleep),不可中断的睡眠,需等待IO的资源

      sleep:当一个进程需要与IO设备读取文件时,等待文件的读取过程,需要交出CPU运行时间,给予

            其他进程运行,故睡眠

   interruptible:睡眠状态(sleep),可中断的睡眠

   zombie:僵尸进程


kernel-->init-->生成任务进程


pstree


大O标准:

    o(1)

    o(n)

    0(logn)

    o(n^2)

    o(2^n)

进程知识

    进程状态

    父子关系

    优先级关系:0-139,一共140个优先级,数值越小优先级越高,100-139用户可控制的,0-99内核调                 整的

                高优先级的特性:1、获得更多的CPU运行时间,2、更优先获得运行的机会。

                每个进程都有一个nice值:优雅的,友好的,nice值从-20到19分别对应100-139,默                 认每个程序的nice都为0,普通用户只能调大自己的进程的nice值,管理可以随意调整

    进程号:process ID 

         在/proc/目录下,以数字开头的文件夹就为一个进程,数字为PID,其中init进程号永远为1

命令

   ps :process state

      BSD风格:不需要加横线

      a:显示所有跟终端有关的进程

      u:显示进程由哪个用户启动的

      x:所有与终端无关的进程

      system V风格:选项需要加横线

      -e:显示所有进程

      -l:长格式

      -F:显示完全字段

   ps -o property1,property2:指定显示的字段

进程的分类:

     跟终端相关的进程:

     跟终端无关的进程

进程状态:

    D:不可中断的睡眠

    R:运行或就绪

    S:可中断的睡眠

    T:停止

    S:僵死态

    <:高优先级的进程

    N:低优先级进程

    +:前台进程组中的进程

    l:多线程进程

    s:会话进程首进程,会话进程的领导者

  COMMAND进程,如果加[],说明是一个内核线程

   pstree:显示进程数

   pgrep:以指定字段显示进程

       pgrep -u root bash

   pidof:查找某进程的ID号

       pidof sshd

   top:动态显示进程信息

      load average:平均队列长度 1,5,10分钟,值越小CPU负载就越低

      us:用户空间所占的百分比

      sy:系统空间所占的百分比

      ni:调整优先级所占的百分比

      id:空闲的百分比

      wa:等待IO完成的所占的百分比

      hi:硬件中断所占的百分比

      si:软中断所占的百分比

      st:被偷走的时间

      virt:虚拟内存集

      res:常驻内存集

      shr:共享内存大小

    top的交互子命令

        M:根据驻留内存大小进行排序

        P:根据CPU使用百分比进行排序

        T:根据累计时间进行排序

        l:是否显示平均负载和启动时间

        t:是否显示进程和CPU状态相关信息

        m:是否显示内存相关信息

        c:是否显示完整的命令行信息

        q:退出top

        k:终止某个进程

    top选项

       -d #:设置刷新时长

       -b:以批处理模式刷新显示

       -n #:在批处理模式显示几屏


进程间通信(IPC : Inter process communication)

   共享内存机制

   信号机制:signal

   Semaphore:旗语机制


kill -l:显示所有的信号,重要的信号如下:

    1:SIGHUP:让一个进程不用重启,就可以重读其配置文件,并让新的配置信息生效

    2:SIGINT:ctrl+c,中断一个进程

    9:SIGKILL:杀死一个进程 

    15:SIGTERM:杀死或中止一个进程,给时间,让其保存工作,默认指定的信号

调用或指定信号:

    信号号码:kill -1

    信号名称:kill -SIGKILL

    信号名称简写:kill -KILL

kill 命令:

kill PID

killall COMMAND


调整用户的nice值:

 1、调整已经启动的进程的nice值:

     renice NI PID

 2、启动时指定nice值

    nice -n NI COMMAND


后台运行任务:

    Command & ,将命令放到后台运行

    ctrl+z,前台调到后台,但任务会被挂起

bg:让后台的停止作业继续运行

    bg [%]JOBID

Jobs:查看后台的所有作业,作业号不同于进程号

   +:命令将默认操作的作业

   -:命令将第二个默认操作的作业

fg:让后台运行的作业调回前台

   fg [%]JOBID

杀死后台进程

kill %JOBID


vmstat命令,系统状态查看命令

r:运行队列长度

b:阻塞队列长度

in:中断的个数

us:用户空间占用的百分比

sy:内核空间占用的百分比

id:空闲

wa:等待IO

CS:上下文切换的次数

vmstat # :每隔#秒刷新一次

vmstat # #1:每隔#秒钟显示一次,只显示#1次

uptime命令:查看系统运行信息


/proc/meminfo 查看内存的相关信息

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。