概念

内核管理进程靠内核数据结构

task structure(内核中的一段内存空间,保存描述信息)

MMU转换线性地址跟地址对应关系,每一次转换都需要时间

TLB把MMU此前转换过的数据条目缓存至CPU中更快的缓存当中

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

VSZ(虚拟内存集)  栈 堆 bss date text libraries

RSS(常驻内存集) 处于物理内存不能被swap交换出去

并行编程模型可以让一个进程跑在不同CPU核心上

进程是多线程的时候一个进程可以运行在多个CPU上

为了避免进程等待IO,于是睡眠交出CPU由其他进程运行,避免浪费时间

睡眠:1、进程所需要的资源没有被正常获取到

         2、进程没有事情做

一个处于睡眠中的进程可以被唤醒

不可中断睡眠:进程所需要的资源依然无法正常获取,终端睡眠也没有意义

可终端睡眠:它可能不需要任何IO资源,执行完自己就睡了,用户来随时可以唤醒

僵尸进程:运行了,也结束了,所占据内存不释放。

Uninterruptible sleep        不可中断睡眠

Interruptible sleep            可中断睡眠

Zombie                            无法回收内存的进程(每个进程结束由其父进程回收其资源)

kernel                              上帝(由内核负责第一个进程)

init第一个人

优先级                            0-139     (100-139用户控制;0-99内核调整)

O:

       取值时间随着队列长度的变化的曲线

       O(1)        队列无论多长取值都不变

       O(n)        取值的增加随着队列长度增长而增长

       O(logn)   随着队列增加取值时间成倍增加

       O(2^n)    队列所谓大一点,取值时间急剧增长

高优先级的特点:

   1、获得更多的CPU运行时间

   2、更优先获得运行的机会

       100-139

       nice值:有雅致,友好的

           -20-19对应100-1390变为-5等于120变为116

           普通用户仅能够调大自己的Nice值

           管理员则可以随便调


COMMAND

PS    Process State

       SysV风格

       BSD

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

   u    进程是有哪个用户启动

   x    显示所有跟终端无关的进程(未必都是跟终端无关)


进程状态

   D     不可中断的睡眠

   R     运行或就绪

   S     可停止中断的睡眠

   T     停止

   Z     僵死

   <    高优先级进程

   N    低优先级进程

   +    前台进程组中的进程

   l     多线程进程

   s    会话进程首进程

  []    内核线程

ps

   -elF

   -ef

   -eF

ps

   -o       pid,comm,ni制定要显示的字段

   -axo    pid,comm,ni显示所有进程

pgrep

   -u    username    显示用户进程号(uid以什么身份运行)

   -U    username    显示用户进程号(euid谁发起的)

pidof    根据进程名查找进程号

pidof   httpd(查看多少进程,每个用户会有一个进程)

top

   -d 1 设置刷新秒

   -b 批模式(能看到后面的)

   -n 3 在批模式下,共显示多少批

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

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

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

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

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

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

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

       q:退出top

       k:终止某个进程

进程间通信    (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         PID

   killall     COMMAND(killall httpd)

   调整已经启动进程的nice值

   renice NI PID

   启动时制定nice值

   nice -n NI COMMAND  (nice -n -3 useradd hbase)


前台作业:占据了命令提示符

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

前台-->后台

   Ctrl+z    正在前台的作业送往后台

   COMMAND &     开始直接到前台

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

   bg[JOBID]      缺省是加号作业

fg:将后台作业调回前台

   fg  [JOBID]     缺省是加号作业

kill     %JOBID     终止某作业

   jobs    查看后台所有作业

   作业号,不同于进程号

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

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

vmstat     系统状态查看命令

       num每2秒钟的数据

       1     5    每隔一秒钟显示一次 只显示五次

uptimetop    第一行的内容一样

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