基本概念

操作系统组成

  • 操作系统是由最底层的硬件和软件组成,即 硬件+内核(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 操作静态优先级

  • 进程内存是虚拟的,

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

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

  • 一次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:runningS: interruptable sleepingD: uninterruptable sleepingT: stoppedZ: 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,commaxo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm

进程优先级

  • 进程优先级 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

NAMEnice - 改变执行程序的优先级总览 (SYNOPSIS)nice [OPTION]... [COMMAND [ARG]...]描述 (DESCRIPTION)以 调整过的 调度优先级 运行 COMMAND. 如果 没给出 COMMAND, 就 显示 当前的 优先级. ADJUST 缺省为 10, 范围 从 -20 (最高级) 到 19 (最低级).-ADJUST优先级 调整到 ADJUST-n, --adjustment=ADJUST和 -ADJUST 一样# 范例
nice -5 sleep 60 #########################################################
# renice
NAMErenice - alter priority of running processesSYNOPSISrenice [-n] priority [-gpu] identifier...DESCRIPTIONrenice  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 asprocess 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 prioritySpecify  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 thefirst 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系统进程及作业管理相关推荐

  1. Linux系统--Linux进程与作业管理(2)

    Linux系统--Linux进程与作业管理(2) Linux进程相关的基本概念已经了解,Linux进程管理的一些命令: pstree,ps,pidof,pgrep,top,htop,glance,pm ...

  2. linux进程及作业管理实验,Linux 进程及作业管理(示例代码)

    Linux 进程及作业管理 概述: 一.进程的相关概念: 1.相关定义:内核的功用:   进程管理.文件系统.网络功能.内存管理.驱动程序.安全功能等: 通俗的来说进程是运行起来的程序.唯一标识进程的 ...

  3. Linux系统进程类型有哪些?进程状态有哪几种?常见的进程有哪些?

    一.linux系统进程类型有 :交互进程 :批处理进程 :监控进程(守护进程): 交互进程:由一个shell启动的进程.交互进程既可以在前台运行,也可以在后台运行. 批处理进程:这种进程和终端没有联系 ...

  4. 实验四 linux进程控制实验报告,Linux系统进程控制操作系统实验报告4

    实验课程名称:操作系统 实验项目名称Linux系统进程控制实验成绩 实验者专业班级组别 同组者实验日期年月日第一部分:实验分析与设计(可加页) 实验内容描述(问题域描述) 要求:掌握Linux系统中进 ...

  5. linux进程及作业管理实验,Linux 进程及作业管理(一)

    Linux 进程及作业管理 ============================================================================== 概述: 我们在 ...

  6. linux进程管理内存管理,Linux专业知识四:Linux系统进程管理及查看内存

    本文主讲Linux专业知识之Linux系统进程管理及查看内存的情况,以Redhat RHEL7操作系统为例. 一.进程 程序与进程:程序是静态的(文件),进程是动态的(运行的程序). 进程和线程:一个 ...

  7. linux进程笔记,Linux自学笔记——linux进程及作业管理

    内核的功用主要有进程管理.文件系统.网络功能.内存管理.驱动程序.安全功能这几个方面,本文主要讨论linux进程及作业管理. 进程管理: 进程,process,运行中程序的一个副本,且存在生命周期: ...

  8. linux 进程及作业管理

    linux进程有作业管理 linux内核的功能: 进程管理,硬件驱动,文件系统,网络管理,安全管理,内存管理. 把一切硬件抽象为系统调用. 进程 (process) : 运行中的程序的一个副本. 进程 ...

  9. Linux系统进程停止的方法

    文章目录 Linux系统进程停止的方法 检查进程是否存在 停进程 使用tomcat脚本进行停止 超常规的停止方式 进阶版停止方式 飞哥超神版本 检查进程是否还存在 Linux系统进程停止的方法 情景描 ...

  10. Linux系统进程查看命令

    今天继续给大家介绍Linux基础知识,本文主要内容是Linux的进程管理相关命令. 一.静态查看进程 在使用Linux系统的时候,我们时常要查看系统进程情况,主要是了解进程的PID.状态.内存分配.C ...

最新文章

  1. 39个超实用jQuery实例应用特效
  2. 简单读!tomcat源码(一)启动与监听
  3. Nginx版本无缝升级
  4. mac mysql-python 失败_MAC OS安装MySQL-python总是失败,请帮忙看看什么原因?
  5. 腾讯开源手游热更新方案,Unity3D下的Lua编程
  6. Seata-Server安装_以及工作原理---微服务升级_SpringCloud Alibaba工作笔记0058
  7. Python进阶(十四) logging标准库
  8. Linux pthread_mutex_init()函数 [转]
  9. TortoiseGit保存用户名及密码
  10. Linux CentOS 7安装Oracle11g超完美教程
  11. Navicat Premium 12.0.29中文版64位+破解补丁
  12. 搜狗微信文章url解码
  13. cisco 路由器时区设置
  14. midl会议_医学图像分析相关的会议
  15. 关于选牛和选马的问题
  16. 新中产人群生活态度及网络理财安全行为研究报告
  17. 巨蟹座 vs 狮子座
  18. Arcgis利用dem数据生成等高线
  19. 找不到或无法加载主类 com.xxx.xxxxApplication
  20. 用实际例子详细探究OpenCV的轮廓检测函数findContours(),彻底搞清每个参数、每种模式的真正作用与含义

热门文章

  1. keil编译器CODE、RO、RW、ZI的含义
  2. word 2013 尾注后继续添加正文的方法
  3. CentOS Steam 9 安装测试
  4. 如何编辑微信文章(微信文章导出word)
  5. 高薪职业,英年早秃?关于程序员,多的是你不知道的事……
  6. [乡土民间故事_徐苟三传奇]第廿三回_吃蒸肉财主受捉弄
  7. BTA12A-ASEMI高效mos管BTA12A
  8. 借助YunOS ,开发技术、运营能力大幅提升
  9. ensp三层交换机配置实验
  10. MATLAB机器人工作空间三轴机器人scara