进程相关基础:

    Linux中的每个进程都是由其父进程创建的.init是内核启动后第一个运行的进程.之后从init创      建出各种进程.

    进程相关:htop,dstat,top,ps_空间通过pstree命令可以查看当前进程情况

    CoW机制:当父进程创建了一个子进程的时候开始 两个进程指向的内存空间是一样的.子进程需      要修改数据时. 会把父进程的数据复制一份到别的内存空间中修改

    

    进程有优先级的概念 等级从0到139   


1-99实时优先级 数字越大 优先级越高
100-139静态优先级 数字越小 优先级越高

    优先级有有NICE值的概念. 可以通过nice值调整进程的优先级


    NICE值的范围是从-20到+19  -20对应100 +19 对应139

    大家应该知道CPU时分时工作模式.在CPU中的某个时刻 CPU只能处理一个进程.并且为了防止进      程死锁和一个进程占用太长时间的CPU导致后面的任务无法执行.所以CPU采用分时机制.每个进      程占用CPU一段时间后就推出进程 由下一个进程再占用CPU一段时间执行任务

    进程相关:htop,dstat,top,ps_优先级_02

    此时不知道有没有人会和我当初一样有这种疑问.如果没处理完的数据接着按照优先级排队的话会     不会有优先级低的进程等不到处理.我觉得可能是为了解决这个问题:

    进程有两个队列:

        运行队列:等运行队列中的进程都运行过一遍之后 过期队列变为运行队列

        过期队列:在同一个运行队列中已经运行调度过的进程在这里排队

    进程内存:内核知道每个进程需要多少内存运行.内核会把自身占据内存之外的其余部分分为页框     (page frame) 一个页框4kb. 并且把页框分给进程 页框不一定是连续的. 但是在进程眼里自己     使用的内存空间是连续的

        进程相关:htop,dstat,top,ps_优先级_03

    

  

      常驻内存集: 不能被交换 只能存在于物理空间的

     虚拟内存集: 可以被交换的  

        

      进程的状态有:

        运行态: running

        就绪态: ready

        睡眠态: 

          可中断: interruptable 随时可中断

          不可中断:uninterruptable 不可随时中断. 如正在进行的IO

        停止态: 暂停于内存中,但不会被调度 除非手动启动

        僵死态: 父进程挂了 子进程还没挂的状态

     进程分为:

        CPU-Bound : DUI cpu占用大 IO不怎么占用的

        IO-Bound : 对IO占用大 对CPU不大的  交互式进程大多属于这一类

      在I/O执行过程中.进程要访问的数据不再内存中时,要从磁盘读入步骤为

     1.装载至内核内存

     2.从内核内存装载至进程内存


一些经常用来查看进程的命令

ps命令  把当前执行的命令显示出来

   ps [options]

      选项风格:

(1) 必须带-

(2) 不能带-

(3) 必须--

      选项:

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

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

        组合: ax 显示所有进程

        u:以用户为中心 排序显示 

        在查询结果中

        进程相关:htop,dstat,top,ps_空间_04

        STAT:当前进程的运行状态有


R

RUNNING

S可中断睡眠
D不可中断睡眠
T

stopped

Zzombie
+前台线程
l多线程进程
N低优先级进程
<高优先级进程
s会话主导者
        s-会话主导者: 如当前shell开启了诺干子shell 那么当前shell即为会话主导者


    -e : 显示所有进程

-f : 显示完整格式的进程信息

    进程相关:htop,dstat,top,ps_优先级_05

    -F : 显示完整格式的进程信息

-H : 以层级结构显示进程的相关信息

常用组合: -eFH

o: 自定义要显示的字段 以逗号分隔各字段

ps axo pid,command

常用字段 : pid,ni,pri,psr,pcpu,stat,comm,tty,ppid,rtprio

ni : 表示nice值

priority : priority 优先级

rtprio : real time priority 时时优先级



top:  类似于Windows中的进程管理器

    默认按占用CPU百分比显示

    实时更新 按q退出 

    top [option]

        P: 默认 以占据CPU百分比的排序

M: 以占据内存百分比排序

T: 累计占用CPU时间进行排序

        -d # : 指定刷新时间间隔

-b : 以批次方式显示 刷屏方式

-n # : 显示多少批次 显示完后

        -u : -u username 显示指定用户的进程信息

    在首部信息中 load average : 之后的三组数字表示过去1,5,15分钟的平均负载数

    子命令:

        tacks,cpu : t命令关闭/开启

     内存: m 关闭/开启

     退出命令: q

     默认刷新时间 :3 秒  s 命令之后输入秒数

     k命令 输入PID 关闭指定进程

     1  开启/关闭CPU 多核显示

     d # : 指定刷新时间间隔


htop : 界面更好看 进化版的top 支持鼠标点击

    -d # : 指定刷新时间间隔

    -u Username : 进现实指定用户的进程;

-s COLUME : 以指定字段进行排序

子命令

       可以鼠标点击每个进程

l 跟踪一个进程所打开的文件  

s 跟踪一个进程发起的系统调用

t 以树状格式显示各进程

a 将选定的进程绑定至某CPU

    按F2可进入设置 可以调整显示方式

     进程相关:htop,dstat,top,ps_优先级_06

dstat   强大的实时监控工具  需要自行安装

    界面不是动态刷新 而是以滚动刷屏方式显示

dstat [-afv] [options..][delay[count]]

常用选项:

-c --cpu 显示cpu相关信息

    -C #,#...total  分别显示每颗CPU  total 显示总的

-d --disk 显示磁盘的相关信息

    -D sda,sdb,...tobal  显示指定磁盘  total 显示总的

-g 显示page相关的速率数据

-m Memory的相关统计数据

-n Interface的相关统计数据

-p 显示process的相关统计数据

-r 显示io请求的相关统计数据

-s 显示swapped的相关统计数据


--tcp

--udp

--raw

    --socket


--ipc


--top-cpu : 显示最占用cpu的进程

--top-io : 最占用io的进程

--top-mem : 最占用内存的进程

--top-lantency : 延迟最大的进程

    进程相关:htop,dstat,top,ps_空间_07