Linux系统进程及作业管理

基本概念

操作系统组成

Linux系统进程及作业管理_第1张图片

  • 操作系统是由最底层的硬件和软件组成,即 硬件+内核(kernel)+库文件(lib)+ 用户程序

  • 内核的功用:进程管理,文件系统,网络功能,内存管理,驱动程序,安全功能

  • 进程运行在操作系统之上,是程序运行中的一个副本;他有生命周期的。

  • 用户程序由一个或多个指令集组成,指令是由内核调度到CPU上运行,Intel的CPU将特权级别分为4个级别:RING0、RING1、RING2、RING3
    R0 为特权指令(内核指令),在内核中执行,R3 为普通用户指令,当用普通用户程序要更高级别的权限操作时(如写数据到硬盘),则需要发起一次软中断,从环3切换到环0,然后指令再执行,这个过程叫做CPU的模式切换,即从普通用户模式切换到内核模式。整个过程称之为系统调用库调用

  • 进程在CPU上运行是以时间片运行,多个进程运行时,需要内核进行调度,进行的运行状态保存在CPU的寄存器中。如使用内存等信息,保存现场,待再次恢复调度时,则恢复现场,寄存器按照上次的位置进行running

  • 寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果以及一些CPU运行需要的信息。

  • Linux内核存储进程信息的固定格式为task struct。 多个任务的task struct组件的链表为task list

  • 进程的创建时由父进程创建,由内核fork(),clone()函数调用。centos 6 init centos 7为systemd

  • 进程优先级 0-139。1-99为实时优先级(数字越大,优先级越高)。100-139为静态优先级(数字越小,优先级越高)

  • Nice值 -20 ,19 操作静态优先级

Linux系统进程及作业管理_第2张图片

  • 进程内存是虚拟的,

  • 进程运行时需要指令+数据

  • 进程分为守护进程(在系统引导中启动的进程,跟终端无关)和前台进程

  • 一次IO分为两段操作,一段为硬盘中复制到内核内存,再从内核内存中复制到进程内存

  • 进程状态 running , ready, 睡眠态 分为可中断睡眠与不可中断 (interruptable \ uninterruptable)、停止态 stop 暂存于内存中,但不会被调度,除非手动启动 、僵死态 zombie

system call 系统调用、系统调用  Lib call 库调用
环0指令,特权指令,内核操作,内核指令,环3指令,用户指令
用户模式,内核模式、模式切换
CPU寄存器、保存现场 、恢复现场

进程管理和性能相关工具

pstree, ps, pidof, pgrep, top, htop, glance, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohup

ps 即proces state,可以进程当前状态的快照,默认显示当前终端中的进程,Linux系统各进程的相关信息均保存在/proc/PID目录下的各文件中

ps - report a snapshot of the current processes.

ps [options]

支持三种选项:

  • UNIX选项 如: -A -e
  • BSD选项 如: a
  • GNU选项 如: –help

常用选项

a 选项包括所有终端中的进程
x 选项包括不链接终端的进程
u 选项显示进程所有者的信息
f 选项显示进程树,相当于 --forest
k|--sort  属性 对属性排序,属性前加- 表示倒序
o 属性… 选项显示定制的信息 pid、cmd、%cpu、%mem
L 显示支持的属性列表
-C cmdlist 指定命令,多个命令用,分隔
-L 显示线程
-e 显示所有进程,相当于-A
-f 显示完整格式程序信息
-F 显示更完整格式的进程信息
-H 以进程层级格式显示进程相关信息
-u userlist  指定有效的用户ID或名称
-U userlist 指定真正的用户ID或名称
-g gid或groupname  指定有效的gid或组名称
-G gid或groupname  指定真正的gid或组名称
-p pid 显示指pid的进程
--ppid pid  显示属于pid的子进程 
-t  ttylist  指定tty,相当于 t
-M  显示SELinux信息,相当于Z

ps 输出属性

C :  ps -ef 显示列 C 表示cpu利用率
VSZ: Virtual memory SiZe,虚拟内存集,线性内存
RSS: ReSident Size, 常驻内存集
STAT:进程状态
    R:running
    S: interruptable sleeping
    D: uninterruptable sleeping
    T: stopped
    Z: zombie
    +: 前台进程
    l: 多线程进程
    L:内存分页并带锁
    N:低优先级进程
    <: 高优先级进程
    s: session leader,会话(子进程)发起者
ni: nice值
pri: priority 优先级
rtprio: 实时优先级
psr: processor  CPU编号

常用组合:

aux
-ef
-eFH
-eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm
 axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm

进程优先级

Linux系统进程及作业管理_第3张图片

  • 进程优先级 0-139。1-99为实时优先级(数字越大,优先级越高)。100-139为静态优先级(数字越小,优先级越高)

  • Nice值 -20 ,19 操作静态优先级

  • top中的PR表示优先级,在top中,实时优先级的[0,99]没有具体的表示,统一用RT来表示。而静态优先级和top中的优先级关系为top_PR = static_Priority - 100,也就是说,top中的PR取值为[0,39],对应图中的优先级[100,139]

  • top中的NI表示nice等级,nice的取值为[-20,19],对应图中的优先级为[100,139],也就是说nice等级可以改变用户进程(非实时进程的优先级)。在top界面中,输入r即可启动nice系统,先输入进程id,回车后再输入nice等级即可修改。

  • top命令可用于通过交互式查看管理进程,在默认配置中,top将显示与nice级别有关的两列:NI表示实际的nice级别,而PR和nice级别显示为映射到更大优先级队列:nice级别-20映射到优先级0,而nice级别+19映射到优先级39。

  • ps中的PRI也是表示优先级,通过ps -el可以显示出来,这里的PRI与图中的优先级关系为 ps_PRI =static_priority - 40

  • PRI的取值范围为[-40,99],也就是说,ps中PRI值为80等价于nice值为0,等价于静态优先级的120

    ps中部分FLAGS:

    <,高优先级(其他用户不能nice)

    N,低优先级(其他用户可以nice)

Nice 范例

nice -5 sleep 60 
renice -5 -p 22835

CLI -Help

NAME
       nice - 改变执行程序的优先级

总览 (SYNOPSIS)
       nice [OPTION]... [COMMAND [ARG]...]

描述 (DESCRIPTION)
       以 调整过的 调度优先级 运行 COMMAND. 如果 没给出 COMMAND, 就 显示 当前的 优先级. ADJUST 缺省为 10, 范围 从 -20 (最高级) 到 19 (最低级).

       -ADJUST
              优先级 调整到 ADJUST

       -n, --adjustment=ADJUST
              和 -ADJUST 一样
              
# 范例
nice -5 sleep 60 

#########################################################
# renice 
NAME
       renice - alter priority of running processes

SYNOPSIS
       renice [-n] priority [-gpu] identifier...

DESCRIPTION
       renice  alters  the  scheduling  priority  of  one  or more running processes.  The first argument is the priority value to be used.  The other arguments are interpreted as
       process IDs (by default), process group IDs, user IDs, or user names.  renice'ing a process group causes all processes in the process group to have their scheduling  prior‐
       ity altered.  renice'ing a user causes all processes owned by the user to have their scheduling priority altered.

OPTIONS
       -n, --priority priority
              Specify  the  scheduling  priority  to be used for the process, process group, or user.  Use of the option -n or --priority is optional, but when used it must be the
              first argument.

       -g, --pgrp pgid...
              Force the succeeding arguments to be interpreted as process group IDs.

       -u, --user name_or_uid...
              Force the succeeding arguments to be interpreted as usernames or UIDs.

       -p, --pid pid...
              Force the succeeding arguments to be interpreted as process IDs (the default).


其他cmd

pgrep

pkill

pidof

htop

vmstat

pmp

glances

dstat

kill

killall

bg Crtl+z

fg

jobs -l

ping \ hping\ traceroute

参考

CPU 的 ring0、ring1、ring2和ring3

一口气看完45个寄存器,CPU核心技术大揭秘

操作系统内核框架图整理

RHCE7 第二十二篇 Linux进程的优先级

你可能感兴趣的:(操作系统,linux,运维,服务器)