进程、系统性能和计划任务

进程、系统性能和计划任务

  • 进程管理和内存分配
  • 进程管理工具
  • 进程管理和性能相关工具

进程管理和内存分配

进程概念

  1. 内核功用:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等
  2. Process: 运行中的程序的一个副本,是被载入内存的一个指令集合
    1. 进程ID(Process ID,PID)号码被用来标记各个进程
    2. UID、GID、和SELinux语境决定对文件系统的存取和访问权限
    3. 一般从执行进程的用户来继承
    4. 存在生命周期
  3. task struct:Linux内核存储进程信息的数据结构格式
  4. task list:多个任务的的task struct组成的链表
  5. 进程建立:
    1. init:第一个进程
    2. 进程:都由其父进程建立,父子关系,CoW
      fork(), clone()

进程,线程和协程

进程相关概念

  1. Page Frame: 页框,用存储页面数据,存储Page 4k
  2. 物理地址空间和线性地址空间
  3. MMU:Memory Management Unit 负责转换线性和物理地址
  4. TLB:Translation Lookaside Buffer 翻译后备缓冲器
    1. 用于保存虚拟地址和物理地址映射关系的缓存
  5. LRU:Least Recently Used 近期最少使用算法,释放内存

用户和内核空间

进程的基本状态和转换

进程的基本状态

  1. 建立状态:进程在建立时须要申请一个空白PCB(process control block进程控
    制块),向其中填写控制和管理进程的信息,完成资源分配。若是建立工做没法完
    成,好比资源没法知足,就没法被调度运行,把此时进程所处状态称为建立状态
  2. 就绪状态:进程已准备好,已分配到所需资源,只要分配到CPU就可以当即运行
  3. 执行状态:进程处于就绪状态被调度后,进程进入执行状态
  4. 阻塞状态:正在执行的进程因为某些事件(I/O请求,申请缓存区失败)而暂时
    没法运行,进程受到阻塞。在知足请求时进入就绪状态等待系统调用
  5. 终止状态:进程结束,或出现错误,或被系统终止,进入终止状态。没法再执行

状态之间转换六种状况

  1. 运行——>就绪:1,主要是进程占用CPU的时间过长,而系统分配给该进程占
    用CPU的时间是有限的;2,在采用抢先式优先级调度算法的系统中,当有更高
    优先级的进程要运行时,该进程就被迫让出CPU,该进程便由执行状态转变为
    就绪状态
  2. 就绪——>运行:运行的进程的时间片用完,调度就转到就绪队列中选择合适
    的进程分配CPU
  3. 运行——>阻塞:正在执行的进程因发生某等待事件而没法执行,则进程由执
    行状态变为阻塞状态,如发生了I/O请求
  4. 阻塞——>就绪:进程所等待的事件已经发生,就进入就绪队列
  5. 如下两种状态是不可能发生的:
    1. 阻塞——>运行:即便给阻塞进程分配CPU,也没法执行,操做系统在进行调
      度时不会从阻塞队列进行挑选,而是从就绪队列中选取
    2. 就绪——>阻塞:就绪态根本就没有执行,谈不上进入阻塞态

LRU算法

  1. 假设序列为 4 3 4 2 3 1 4 2
    物理块有3个,则
    1. 第1轮 4调入内存 4
    2. 第2轮 3调入内存 3 4
    3. 第3轮 4调入内存 4 3
    4. 第4轮 2调入内存 2 4 3
    5. 第5轮 3调入内存 3 2 4
    6. 第6轮 1调入内存 1 3 2
    7. 第7轮 4调入内存 4 1 3
    8. 第8轮 2调入内存 2 4 1

IPC进程间通讯

  1. IPC: Inter Process Communication
    1. 同一主机:
      1. pipe  管道
      2. socket 套接字文件
      3. signal 信号
      4. shm  shared memory
      5. semaphore  信号量,一种计数器
    2. 不一样主机:
      1. socket IP和端口号
      2. RPC  remote procedure call
      3. MQ  消息队列,如:Kafka,RabbitMQ,ActiveMQ

进程优先级

 

 

修改 nice 值ios

nice -10 ping 127.2 表示nice的优先级改成10算法

nice --10 ping 127.2 表示 nice的优先级改成-10缓存

taskset -p 12243 //查看进程号为12243的程序在哪几颗cpu上运行安全

taskset -cp 0,1 12243 //进程号为12243的程序只能在第0或1颗cpu上运行网络

  • 进程优先级:
    • 系统优先级:数字越小,优先级越高
      0-139:各有140个运行队列和过时队列
      实时优先级: 99-0 值最大优先级最高
      nice值:-20到19,对应系统优先级100-139
    • Big O:时间复杂度,用时和规模的关系
      O(1), O(logn), O(n)线性, O(n^2)抛物线, O(2^n)

进程状态

  1. Linux内核:抢占式多任务
  2. 进程类型:
    1. 守护进程: daemon,在系统引导过程当中启动的进程,和终端无关进程
    2. 前台进程:跟终端相关,经过终端启动的进程
    3. 注意:二者可相互转化
  3. 进程状态:
    1. 运行态:running
    2. 就绪态:ready
    3. 睡眠态:
      1. 可中断:interruptable
      2. 不可中断:uninterruptable
    4. 中止态:stopped,暂停于内存,但不会被调度,除非手动启动
    5. 僵死态:zombie,结束进程,父进程结束前,子进程不关闭

进程管理工具

  1. 进程的分类:
    1. CPU-Bound:CPU密集型,非交互
    2. IO-Bound:IO密集型,交互
  2. Linux系统状态的查看及管理工具:
    1. pstree, ps, pidof, pgrep, top, htop,
      glance, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohup
  3. pstree命令:
    1. pstree display a tree of processes
  4. ps: process state
    1. ps  report a snapshot of the current processes
    2. Linux系统各进程的相关信息均保存在/proc/PID目录下的各文件中

查看进程 ps

  1. ps [OPTION]...
  2. 支持三种选项:
    1. UNIX选项 如-A -e
    2. BSD选项  如a
    3. GNU选项 如--help
  3. 选项:默认显示当前终端中的进程
    1. 选项:默认显示当前终端中的进程
    2.  x 选项包括不连接终端的进程
    3. u 选项显示进程全部者的信息  有效用户
    4. f 选项显示进程树,至关于 --forest
    5.  k|--sort 属性 对属性排序,属性前加- 表示倒序
    6.  o 属性… 选项显示定制的信息 pid、cmd、%cpu、%mem
    7. ps axo %cpu,%mem,tty,cmd k -%mem(按内存倒序排列)
    8. ps axo pid,%cpu,%mem,tty,cmd --sort -%cpu

ps常见选项

ps 输出属性

进程管理和性能相关工具

搜索进程

  1. pgrep -t pts/1
  2. pgrep -lt pts/1
  3. pgrep -lU zhangsan
  4. pgrep -lu zhangsan
  5. pgrep -l 'ba.*'
  6. pgrep -al '^ba.*'
  7. pgrep -P 1

系统工具

进程管理工具

 

内存空间

 

 

系统监控工具

iostat、iftop、pmap、strace、lstrace

  1. strace 跟踪某个程序运行时所调用的系统调用
  2. strace /bin/cat 这个命令用了哪部分系统调用
  3. ltrace /bin/cat cat程序运行时所调用的函数库

glances

 

dstat

iotap

nload 查看网络实时吞吐量

lsof

相关文章
相关标签/搜索