进程管理

进程管理

进程,内核


 

进程与内核的联系-粗

当启动一个进程的时候,将进程的一些指令和数据装载到内存空间中,但进程要和硬件打交道的时候,进程通过系统调用,向内核发出操作硬件的申请,内核收到后,转入内核模式,进程需要退出。这是有与系统中的特权级别决定的,内核在Rank0层,而用户程序在Rank3层,中间的没有使用。

CPU是采取时间片的形式,当一个进程退出之后,重新执行的时候,进程是怎么知道从哪里开始运行?

这些就是靠内核的数据结构来记录,这个数据结构被称为任务结构Taskstructure,它追踪每一个进程的状态信息记录着进程的的一些信息。

 

线性地址和物理地址:

> 在每一个进程看来,只有它自己和内核,而且在进程自己看来,它的内存是连续的,但是在物理内存中就不一定是连续的。通过线性地址和物理地址区分,实现了虚拟内存。

在上图中,线性地址部分有一个逻辑的视图:


 

进程管理的相关命令:

  • ps:Process State,进程的状态信息 
    ps命令分有BSD风格的和SysV风格:

      • BSD风格 
        BSD风格用常有的选项组合:aux 
         
        参数: 
        USER::由哪一个用户发起的 
        PID:进程号 
        %CPU:占据CPU的百分比 
        %MEM:占据物理内存的百分比 
        VSZ:虚拟内存大小 
        RSS:常驻内存大小 
        TTY:关联到哪一个终端,?表示与终端无关 
        STAT:表示进程状态 
          D:不可中断的睡眠 
          R:运行或就绪 
          S:可中断的睡眠 
          T:停止 
          Z:僵死 
          <:高优先级进程 
          N:低优先级进程 
          +:前台进程组中的进程 
          l:多线程进程 
          s:会话进程的首进程 
        START:启动时间 
        TIME:表示运行时长,真正占据CPU的时长,而是挂表时长 
        COMMAND:表示相关的进程名,如果外面加了中括号[],表示这是一个内核线程

    • SysV风格 
      SysV风格用常有的选项组合:-elF 
       
      常用参数: 
        UID:用户 
        PID:进程号 
        PPID:父进程号 
        PRI:优秀级 
        NI:nice值 
        RSS:常驻内存大小 
        PSR:正在运行在哪一个CPU 
        STIME:启动时间 
        TTY:关联到哪一个终端,?表示与终端无关 
        TIME:表示运行时长,真正占据CPU的时长,而是挂表时长 
        CMD:表示命令,如果外面加了中括号[],表示这是一个内核线程

  • pstree: 显示当前系统上的进程树 

  • pgrep:找符合某种特性的风格,并显示出来,只显示进程号 
  • pidof: 根据程序名称,查找其相关进程的ID号 
  • top: 

    拿上面的来做例子: 
      第一行: 
        09:45:55: 当前时间 
        up 49 min:运行时长 
        2 users:登录的用户 
        Load average:平均1分,5分,15分队列长度,值越小,CPU的负载越低 
      第二行: 
        Tasks:显示所有进程的相关信息的 
        431 total:一共有多少个进程 
        2 running:一共有多少个处于运行态 
        429 sleeping:有多少个处于睡眠的 
        0 stopped:有多少个处于停止的 
        0 zombie:有多少个处于僵死的 
      第三行: 
        %CPU(s):每一个CPU的负载情况,如果有多个的CPU的话,这个可能显示多个,默认情况显示CPU的平均的,按1可以展开所有CPU 
        0.5 us:占据用户空间百分比 
        1.2 sy:占据内核空间百分比 
        0.0 ni:nice值 
        97.5id:空闲百分比 
        0.2 wa:等待IO完成的时间 
        0.0 hi:硬件中断占据的时间 
        0.6 si:软中断占据的时间 
        0.0 st:被偷走的时间 
      第四五行:表示内存和交换空间的情况 
      PID:进程号 
      USER:用户 
      PR:优先级,RT表示实时优先级 
      NI:nice值 
      VIRT:虚拟内存值 
      RES:常驻内存值 
      SHR:共享内存值 
      S:状态 
      %CPU:占CPU百分比 
      %MEM:占内存百分比 
      TIME+:运行时长 
      COMMAND:相关的进程名

常有选项:
M:根据驻留内存大小进行排序
P:根据CPU使用百分比进行排序
T:根据累计时间进行排序

l:是否显示平均负载和启动时间
t:是否显示进程和CPU状态信息
m:是否显示内存相关信息

c:是否显示完整的命令信息
q:退出top
k:终止某个进程

+ vmstat:系统状态查看命令,Vmstat [m] [n] 
    m:表示多少时间刷新一次 
    n:表示显示多少次 
     
  参数: 
    r :运行队列长度 
    b :阻塞队列长度 
    swpd:交换大小 
    Free:空闲内存 
    Buff:缓冲的大小 
    Cache:缓存的大小 
    Si:swap in,动态值,表示有多少内存放到交换内存上去了 
    So:swap out,表示有多少页面调回内存中 
    Bi:有多少block块调入内存中了 
    Bo:有多少block块从内存中同步到硬盘了 
    In:中断的个数 
    Cs:进程切换的次数 
    Us:用户空间百分比 
    sy:占据内核空间百分比 
    id:空闲百分比 
    wa:等待IO完成的时间 
    st:被偷走的时间

  • free :显示内存的信息
  • kill: 杀死进程或作业
      kill %JOBID: 终止某作业,%不能省

  • bg:让后台的停止作业继续运行 
    用法:bg [[%]JOBID]

    • fg:将后台的作业调回前台 
        fg [[%]JOBID]
  • jobs: 查看后台的所有作业 
      作业号,不同于进程号 
        +:命令将默认操作的作业 
        -:命令将第二个默认操作的作业

前台作业:占据了命令提示符 
后台作业:启动之后,释放命令提示符,后续的操作在后台完成

前台-->后台: 
Ctrl+z: 把正在前台的作业送往后台 
COMMAND &:让命令在后台执行 
后台-->前台:使用fg命令


 

posted @ 2017-11-15 15:37  菜鸟也有高飞的时候  阅读(176)  评论(0编辑  收藏  举报