进程管理

1. 进程相关概念
    a. 应用程序被用户提请给内核,并得以执行便变成了进程,进程只是被调入内存的应用程序的一个副本。
    b. 进程都具有统一的数据结构称为task struct用于存储进程的元数据信息,如进程的名称、PID、优先级等,也就是ps 命令看到的那些进程属性字段,应用程序被提请给内核变为进程后,该应用程序对应进程的父进程就会复制一份自己的task struct,给
2. 进程内存管理
    a. CPU中指令分为普通指令和特权指令,用户空间的应用进程就都可以执行普通指令,特权指令只能被内核执行
    b. 用户空间
    c. 内核空间
3. 进程优先级
    Ø 对于进程数量来说CPU计算资源是有限的,如果没有一套有效的资源分配机制进程就会出现争抢资源的现象,为了确保进程高效稳定有序的运行,操作系统设计了140个队列并将进程分别放入这140个队列之间,通通调度策略为队列中的进程分配CPU资源,使得所有进程能够按系统规定的制度有序运行。这里的资源分配机制有两个重要的术语:队列和调度策略
    Ø 进程优先级 :Linux操作系统为提供了140个队列来调度进程使用CPU资源,队列就是我们常说的进程优先级,进程优先级的取值范围是0-139,值越小优先级越高,优先级按取值范围还分为实时优先级和非实时优先级
    Ø 进程优先级调整 :
        ü 严格来讲优先级对用户来说是不可以修改的,用户只能通过nice值来干预静态优先级
        ü 实时优先级:能过内核动太调整也称为动态优先级,取值范围0-99,用户不可以过通nice值调整,但可以通过其它命令调整。
        ü 非实时优先级:用户可以过程nice值来干预非实时优先级也称为静态优先级,取值范围100-139。
        ü nice值:nice值的取值范围是:-20到19,分别对应非实时优先级的100-139,因此nice越小优先级越高。仅管理员可以调低nice值,普通用户不能调低nice值。
            □ 调整原理:一个进程启动默认nice值为0,对应优先级为120,调整后的优先级=当前优先级+nice值,因此用户以指定nice值启动进程就可以达到调整优先级的效果。
            □ nice进程具备继承性,子进程继承父进程 
            
        ü 调整优先级:
            ü nice以指定nice值启动进程:nice -n -5 ping 192.168.39.2
            ü renice修改已运行进程的优先级:renice -n -5 `pidof ping`
    Ø 调度策略:操作系统如何为队列内的进程分配CPU资源,操作系统提供了5种调度策略来管理队列内的进程,通过命令chrt可以查看和修改每个进程进的调度策略
        ü 实时进程调度策略:SCHED_FIFO(先进先出调度算法)、SCHED_RR(默认策略,以时间片轮询调度,一个时间片为100ms)
        ü 非实时进程调度策略:SCHED_OTHER, SCHED_IDLE,SCHED_BATCH
4. 命令选项风格:
    Ø Unix/Posix风格
        ü 命令后的选项,可以分组,便必须以连字符开头,如ps -aux。
        ü 选项无需加参数的,可以组合在一起,如:sed -n -r 可以写成 sed -nr
    Ø BSD风格,即命令后的选项,不可以与连字符同用,多个选项可以分组输写
    Ø GNU风格
        ü 即长选项,命令后的参数,可以分组,但必须以双横线开头,如:ps --help。
        ü 命令行选项以两个连字符'--'开头,后跟选项名称,选项后面使用空格或者等号 紧接着取值
5. 查看进程树
    a. pstree -p显示进程名后附加PID
    b. pstree -u显示进程名后附加用户名
    c. {}代表线程
6. 基于程序名查询进程编号
    a. pidof 进程名
7. 进程查询工具ps命令
    Ø BSD风格选项
        ü ps 不加任何选项则仅显示当前登录会话shell环境下的进程列表
        ü ps a 选项包括所有终端中的进程
        ü ps x 选项包括不链接终端的进程(显⽰当前⽤户所运⾏的所有进程,包括前台和后台守护进程)
        ü ps u 选项显示进程所有者的信息 
        ü f 选项显示进程树,相当于 --forest  
        ü k|--sort  属性 对属性排序,属性前加- 表示倒序 
        ü o 基于进程struck数据结构中的属性字段 定制显示的字段信息 
        ü L 显示支持的进程属性字段列表 (该选项下列出的进程属性字段可以供o选项字制显示输出)
        ü 实例:利用o选项字制显示字段,并结合k选项基于指定字段排序,如基于%mem字段排序
        ü ps o pid,%cpu,%mem,size k %mem
        ü 
    Ø UNIX风格
        ü -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命令输出字段
        ü USER :进程执行用户
        ü PID:进程ID
        ü %CPU:CPU利用率
        ü %MEM:内存利用率
        ü VSZ:内核承诺分配给进程的虚似存内存(KB)
        ü RSS:进程占用的真正物理内存(KB)
        ü TTY:终端号 ?号与终端无关的
        ü STAT:进程状态
        ü START:进程启动到PS命令查询时所使用的时间
        ü TIME:进程实际占用CPU运行的时间(获取的时间分)
        ü COMMAND:进程执行的命令行
        ü EUESR:进程生效用户effect user(例:passwd被设置了SUID权限,则在进程发起者执行的进程实际生效用户上下文件为passwd文件所属组的)
        ü RUSER:进程的发起者real user
    Ø STAT进程状态
        ü R 处理运行状态,正在被CPU执行或在可执行队列中的进程处于该状态
        ü S 处于睡眠状态(Sleep可中断睡眠)等待事件或信号触发唤醒,S状态进程task_struct结构被放入对应事件的等待队列中,一旦事件触发则会被唤醒
        ü D 处于深度睡眠状态(Deep sleep不可中断睡眠)
        ü T 暂停状态或跟踪状态,
        ü Z 僵死状态,
        ü X 死亡状态,
        ü Z: zombie
        ü +: 前台进程
        ü l: 多线程进程
        ü L:内存分页并带锁
        ü N:低优先级进程
        ü <: s: session leader kill signal reload sigquit core ctrl stopped fg bg eof killall httpd pgrep pattern uid: effective user real terminal: pid: pkill pid ping>
        </:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值