线性内存和物理内存
进程是一个逻辑概念
保存现场

内存分段
用户空间
内核空间:进程的描述信息,户口本

内存分页
TLB
MMU:Memory Management Unit

进程

进程号
用户
内存空间
父进程
CPU time

VSZ:virtual size 虚拟内存
RSS:resident size 常驻内存(不能被交换出去的数据和变量)

多进程模型:
单进程多线程模型:节省内存空间

当一个进程需要加载I/O资源,由于I/O较慢,或者没有事情要去做,会提前释放CPU。
uninterrupted sleep 不可中断的睡眠:外部I/O资源仍未满足,打断睡眠进入CPU资源也无法使用,因为文件仍未加载完成,无法继续运行下去;
interruped sleep 可中断睡眠:例如,睡眠中的数据库,如有用户发起查询请求,则从睡眠总被打断。
zombie:僵尸进程,会导致内存泄漏,占满内存

父子关系
kernel是第一个进程 → init →子进程
优先级关系
优先级0~139
0~99:内核调整
100~139:用户可控制
O标准
    O(1)
        无论队列多长,查询时间相等,2.6内核,每次扫描140队列,扫描时间相等
    O(n)
        随着队列的延长,查询时间线性增长
    O(logn)
        
    O(n^2)
    O(2^n
优先级高的优势
    1)获得的更多的CPU运行时间
    2)更优先获得运行机会
进程nice值
范围:-20~19
          100~139
只能调大

PID:progress identifier
init:PID=1
  1. pwd
  2. /proc/1
  3. cat cmdline #查看发起进程的命令
  4. /sbin/init

ps:Process State
    SysV风格:-
    BSD风格:
进程分类:
    -au:显示所有与终端有关的进程
    -xu:显示与终端无关的进程,不严格区分
进程状态
    D:不可中断的睡眠
    S:可中断的睡眠    
    R:运行或就绪
    T:停止
    Z:僵尸态
    
    <:高优先级进程
    N:低优先级进程
    +:前台进程组中的进程,前台,从命令行输入的进程和终端相关的
    l:多线程进程
    s:会话进程的首进程
ps aux
USER   PID%CPU%MENVSZRSSTTYSTATSTARTTIMECOMMAND
进程发起者   虚拟内存常驻内存   实际占用CPU时长进程发起命令
[]表示内核进程
ps -elF

ps -axo user,pid,vsz,rss,command,cmd,ni,time,tname(TTY NAME)

pstree显示系统进程树

pgrep 查找进程树
  1. pgrep -u root bash
  2. 1855
  3. euid有效id,-U表示发起者
pidod根据进程名显示PID

top
1切换CPU显示模式
us用户空间
sy

top
  1. M: 根据驻留内存大小进行排序
  2. P:根据CPU使用百分比进行排序
  3. T: 根据累计时间进行排序
  4. l: 是否显示平均负载和启动时间
  5. t: 是否显示进程和CPU状态相关信息
  6. m: 是否显示内存相关信息
  7. c: 是否显示完整的命令行信息
  8. q: 退出top
  9. k: 终止某个进程

  1. -d: 指定延迟时长,单位是秒
  2. -b: 批模式
  3. -n #:在批模式下,共显示多少批

  1. top -d 2 -b -n 1 | grep udevd

进程间通信(IPC:Inter Progress Communication)
共享内存:一个进程写进指定内存,一个进程从指定内存读取
信号:Signal
Semophore
重要的信号
1)SIGHUB:让一个进程不用重启就可以重新读取配置文件
2)INT:Interrupt,Ctrl+c中断一个进程
9)SIGKILL:杀死一个进程
15)SIGTERM:终止一个进程,默认
指定一个信号
    信号号码:kill -9
    信号名称:kill -SIGKILL
    信号名称简写:kill -KILL
kill PID
killall COMMAND

调整nice值
进程已经启动
renice NI PID
启动进程时
renice -n NI COMMAND

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

前台-->后台:
Ctrl+z: 把正在前台的作业送往后台
COMMAND &:让命令在后台执行
bg: 让后台的停止作业继续运行
bg [[%]JOBID]
jobs: 查看后台的所有作业
作业号,不同于进程号
+:命令将默认操作的作业
-:命令将第二个默认操作的作业
fg: 将后台的作业调回前台
fg [[%]JOBID]
kill %JOBID: 终止某作业

vmstat n m
    n:显示的间隔
    m:显示的次数
  1. vmstat
  2. procs      -----------memory----------  ---swap--     -----io---- --system-- -----cpu-----
  3. r b     swpd free buff cache   si so      bi bo in cs us sy id wa st
  4. 0 0 0     811604 39656 48448 0 0     3 0 7 7 0 0 100 0 0
  5. 运行队列长度 交换空间 磁盘进入内存 进入内存 中断
  6.     阻塞队列长度 内存进入磁盘     写入磁盘 上下文切换次数

uptime

/proc/meminfo