Linux基础-----进程管理

进程:运行中的程序

程序:指令+数据组成

执行某个程序,将程序的指令加载到内存,CPU从内存中逐条执行指令,并处理数据输出至IO

程序实现并行的方式:

CPU:使用分时操作,随着时间的流逝,将CPU分割成时间片,给某个程序几毫秒的时间片,时间片耗尽,程序暂停,保存现场

然后给下个程序分配时间片

内存

有CPU的MMU功能将内存真实的空间化成多个页框,然后内核给程序虚拟出内存空间.每个程序认为自己是独立占用内存,程序的真实数据

有内核分配在物理内存的某个页框内,在物理内存中,同一个程序的页框可能不连续,由于程序看到的是虚拟内存空间,在虚拟内存空间,

程序的具体占用页框是连续的。

有内核根据进程的优先级,来分别执行程序

程序的虚拟内存空间

32位CPU的寻址单元 2的32次方 =  4G空间

1G是内核占用,剩下3G由程序使用

程序知道内核的存在,需要和内核之间交互,如执行某些敏感指令或特权指令时,有内核代替程序去CPU中执行,并且将相关结果反馈给程序,程序继续执行

进程分两类:

CPU密集型进程

IO密集型进程

进程分三类

批处理进程

实时进程

交互式进程

进程优先级

动态优先级:

优先级是由内核动态分配

静态优先级

100--139:数字越小优先级越小

通过进程的nice值来调整进程的优先级

-20,19   nice取值范围

100,139

实时优先级:

1-99:数字越大优先级越大

Linux 2.6之后的内核使用O(1)的调度方式

无论进程队列如果增长,都是一个长定值

如级别0到级别139,共有140个级别

每个级别会有好的进程,每次只需要

执行第一排的0到139,每次只执行140个进程

不管多少进程,选择进程的时间是恒定的

进程切换:上下文切换

保存现场:分配给某个进程时间片,时间片消耗完毕,进程没有执行结束,进程暂停,并保存进程的当时的状态,如打开了哪些文件,加载了哪些库等

恢复现场:将暂停的进程,有保存现场那一刻加载至CPU继续执行

抢占:一些特殊的进程,比较紧急,CPU会将正在执行的进程暂停,执行紧急的进程

IO交互:

轮询执行

中断执行

有CPU的中断控制器,连接所有IO设备,如网卡有请求过来,中断控制器就知道是网卡的数据报文过来,然后让内核来处理

中断的上半部:将中断先接进来,如果中断不是特别紧急,先将请求接近来,放在缓存中

中断的下半步:处理中断的过程

进程的状态:

Ready:进程已经准备完毕,等待加载至CPU执行

Running:运行态

Ready:时间片消耗完毕,但没有运行完,被切换出去

Sleeping:运行过程中,在等待I/O的过程中被切换出去

可中断睡眠:睡眠过程中可以唤醒,唤醒后继续执行

非可中断睡眠:睡眠过程中不可唤醒,进程在等待I/O处理等

stopped:停止状态:内核不会主动唤醒,有用户手动唤醒

Zombie:僵死态:子进程运行中,父进程结束,而子进程又无新的父进程,子进程就会变成非正常僵死状态

多线程:一个进程有多个执行流,让多个执行流同时执行.把指令分类,每一类是一个执行流,每一个执行流运行在一个CPU上

线程:一个进程可以分成多个执行单位,每一个执行单位可以在不同CPU上运行,这个执行单位就是进程的线程(进程的子单位,可以运行在不同的CPU上)

pstree:显示进程树

ps:显示系统当前的进程状态

a:所有跟终端相关的进程

x:所有跟终端无关的进程

STAT:进程状态

S:可中断睡眠

D:不可中断睡眠

R:运行或可运行

T:停止

Z:僵死

s:某进程的主要进程

l:多线程进程

+:前台进程

N:低优先级进程

<:高优先级进程

ps -aux

u:以用户为中心显示进程相关信息

user:进程的属主

PID:进程的ID号

%cpu:CPU运行以来,进程占用的百分比

%MEM:进程所占用内存的百分比

VSZ:虚拟内存空间大小(线性地址空间),单位是KB

RSS:进程占用固定内存(不可被交互至交互分区)的内存空间(KB)

TTY:进程在那个终端上运行,如何终端无关显示?

START:进程的启动时间

TIME:该进程使用CPU的运行时间

COMMAND:命令的名称

ps -ef

e:显示所有进程

f:完整格式列表

UID:进程是属主

PID:进程的ID号

PPID:进程的父进程号

C:进程CPU利用率

STIME:启动时间

TTY:相关终端

TIME:进程运行时间

CMD:哪个命令启动的进程

-F:显示额外信息

-H:显示进程层次关系

-o 要显示的字段:自定义显示格式

ps axo  pid,command

top:动态显示进程

第一行(CPU相关):系统时间,运行时长,当前登录的用户数,cpu的平均队列长度(1分钟平均,5分钟平均,15分钟平均)

top命令中load average显示的是最近1分钟、5分钟和15分钟的系统平均负载。系统平均负载表示

系统平均负载被定义为在特定时间间隔内运行队列中(在CPU上运行或者等待运行多少进程)的平均进程数。

如果一个进程满足以下条件则其就会位于运行队列中:

- 它没有在等待I/O操作的结果

       - 它没有主动进入等待状态(也就是没有调用’wait’)

       - 没有被停止(例如:等待终止)

  Update:在Linux中,进程分为三种状态,一种是阻塞的进程blocked process,一种是可运行的进程runnable process,另外就是正在运行的进程running process。当进程阻塞时,进程会等待I/O设备的数据或者系统调用。

  进程可运行状态时,它处在一个运行队列run queue中,与其他可运行进程争夺CPU时间。 系统的load是指正在运行running one和准备好运行runnable one的进程的总数。比如现在系统有2个正在运行的进程,3个可运行进程,那么系统的load就是5。load average就是一定时间内的load平均数量。

  例如:

# uptime
   7:51pm up 2 days, 5:43, 2 users, load average: 8.13, 5.90, 4.94

 命令输出的最后内容表示在过去的1、5、15分钟内运行队列中的平均进程数量。

  一般来说只要每个CPU的当前活动进程数不大于3那么系统的性能就是良好的,如果每个CPU的任务数大于5,那么就表示这台机器的性能有严重问题。对于上面的例子来说,假设系统有两个CPU,那么其每个CPU的当前任务数为:8.13/2=4.065。这表示该系统的性能是可以接受的。

 在Linux系统中,uptime、w、top等命令都会有系统平均负载load average的输出

第二行:进程数,运行状态,睡眠状态,停止状态,僵死状态

第三行(所有CPU的平均利用率,键盘1显示所有CPU平均值):用户空间占用比例,系统空间占用比例,调整nice值所占用的百分比,CPU空闲比例,等待IO完成所占用的比例,

硬件中断所占据的百分比,软中断占据的百分比,被虚拟机占用的百分比

PID:用户的进程号

USER:进程属主

PR:优先级

NI:nice值

VIRT:虚拟内存集(进程的虚拟内存空间大小)

RES:实际内存集(进程实际占用物理内存空间)

SHR:共享内存集(进程共享内存占用空间)

S:状态

%CPU:从上次更新,到现在进程占用CPU的百分比

%MEM:进程占据物理内存的百分比

TIME+:进程使用CPU时间总计(单位:百分之1秒)

COMMAND:由哪个命令启动的这个进程

-----------------------------------------------------------------------

M键:根据内存占用大小排序

P键:按CPU时间占用大小排序

T键:根据累计时间排序

k:杀死一个进程

k 进程号

选项

-d 数字:刷新延迟

-b :批次显示

-n 数字:指定批次显示的次数

-------------------------------------------------------------

htop:进化版top,用法和top类似

iotop:I/O统计工具

vmstat: 3 5

procs

r:运行队列长度:(正在运行或等待CPU时间片的进程个数)

b:被阻塞(通常等待IO完成)的进程队列长度

memory

swpd:从物理内存交换至交换分区的内存数据量

free:未使用的物理内存空间

buff:buffer cache的空间大小:通常用来缓存写操作的相关数据

cache:page cache的空间大小:通常来缓存读操作的相关数据

swap

si:swap in:数据从物理内存调入交换分区的数据量

so:swap out:数据从交换分区调入物理内存的数据量

io

bi:block in :从块设备读入的数据量(kb/s)

bo:block out :保存在块设备的数据量(kb/s)

systenm

in:interruput;中断发生速率,通常意为每秒多少次中断请求发送;

cs:通常意为每秒多少次上下文切换

cpu

us:用户进程所占用CPU时间的百分比

sy: 内核所占用CPU时间的百分比

id:CPU空闲百分比

wa:CPU用户等待IO完成的时间的百分比

st:被虚拟化占用的CPU时间百分比

sar

tsar:淘宝开源sar工具

dstat  更直观的显示

---------------------------------------------------------------

进程间通信:IPC

共享内存:SHM

信号:signal

kill -l 查看信号

1:SIGHUP:让进程不用中止,而重读其配置文件

2:SIGINT:中断正在运行的进程,相当于CTRL+C

9:SIGKILL:杀死一个进程

15:SIGTERM:终止一个进程

kill -信号  PID

killall -信号  进程名

调整进程的nice值

普通用户;调大数字,降低优先级

-20 19

100 139

nice -n 数字值  命令

nice -n -20 top

renice 数字值 PID

renice 0 PID

Linux作业控制

前台:进程占据着终端:前台作业

后台:进程无需占用终端:后台作业

jobs:查看后台正在运行的作业

前台---->后台 :Ctrl+z

后台----前台:fg 作业号

bg 作业号:让进程在后台继续运行

进程启动时直接运行在后台

命令 &

终止作业

kill %作业号

终端退出后,后台进程扔然可运行

nohup 命令  &

cat /proc/PID/maps

pmap  PID:查看进程运行的物理地址空间映射

时间: 2024-10-08 15:18:31

Linux基础-----进程管理的相关文章

Linux基础--进程管理相关命令介绍(2)

本文主要介绍了Linux中进程管理的相关命令,涉及到的主要命令有top,vmstat等. (1)top ①功能:用来查看CPU,内存以及进程的状态. ②用例: ③相关注释: load average表示负载,三个数值分别表示第1分钟,第5分钟,第10分钟 Cpu中us表示用户空间程序占用百分比,sy表示内核模式占用百分比,ni表示调整NICE值所占用的    CPU百分比,id表示CPU的空闲比例,wa表示等待磁盘IO完成所占用的时间比例,hi表示硬件中断占     据的百分比,si表示软中断所

Linux基础--进程管理相关命令介绍(1)

本文主要介绍了Linux中进程管理的相关命令,涉及到的主要命令有pstree,ps. (1)pstree ①功能:用来查看进程树 ②用例: (2)ps ①功能:用来显示系统当前进程状态的命令 ②用例: ③相关用法: ps a:显示所有跟终端相关的进程 ps x:显示所有跟终端无关的进程 相关注释: STAT各代码含义: S:可中断的睡眠态 D:不可中断的睡眠态 R:运行或可运行 T:停止 Z:僵死 s:session leader l:多线程进程 +:前台进程 N:低优先级进程 <:高优先级进程

Linux基础--进程管理及其基本命令

本文主要讲解Linux中进程管理的基本命令使用方法. 1. top命令 作用: 动态显示进程状态 格式: top [options] 常用选项: -d: 后面可以接秒数,就是整个程序画面更新的秒数, 默认是5秒 -b: 以批次的方式执行 top -p: 指定对某个PID进行观察 字段意义: top - 23:52:38 up 19:58,  2 users,   load average: 0.00, 0.00, 0.00 过去1分钟,5分钟,15分钟的系统平均负载: 如果高于1表示系统繁忙 T

Linux基础进程管理优先级

一.进程优先级 Linux进程调度及多任务 每个cpu(或者cpu核心)在一个时间点上只能处理一个进程,通过时间片技术,Linux实际能够运行的进程(和线程数)可以超出实际可用的cpu及核心数量.Linux内核进程调度程序将多个进程在CPU核心上快速切换,从而给用户多个进程在同时运行的印象: 相对优先级nice 由于不是每个进程都与其他进程同样重要,可告知进程调度程序为不同的进程使用不同的调度策略,常规系统上运行的大多数进程所使用的调度策略为 SCHED_OTHER(也称为SCHED_NORMA

linux系统-进程管理-计划任务

linux系统-进程管理-计划任务 一 计划任务命令 1 at 某一时刻执行任务 2 batch 在系统负载不重的时候执行 3 cron 周期性执行 二 at命令及使用 1 at [-f文件名]时间 2 at [-d删除任务] 3 at [-l查看任务] 4 绝对计时法:hh:mm MM/DD/YY at 17:30 4/18/15 5 交互方式:at 9:00 6 使用命令文件的方式:生成文件at.script 使用at命令 at -f at.srcipt 9:00 4/18/15 or at

Linux基础-----磁盘管理

文件系统 Windows NTFS FAT32 Linux VFS:虚拟文件系统:将底层文件系统的不同,通过统一的接口,输出给上层应用 ext2 ext3 ext4 xfs 文件系统:对分区文件就行组织管理,并建立索引表,文件系统有内核提供 格式化:创建文件系统 低级格式化:创建磁道.扇区 高级格式化:创建文件系统 分区是按柱面来划分 磁道:数据存储在磁道上 扇区:将磁道划分成扇状用于管理 柱面:多个盘片,相同位置的扇区,形成柱面 0磁道的0扇区:(不属于任何分区)MBR 512字节   主引导

Linux基础-----内存管理

free -m 查看内存大小 Mem:物理内存统计 total 物理内存大小 used  以使用内存(包含buffers;bached) free  空闲内存 shared 共享内存 buffers 缓冲(用于写操作) cached  缓存(用于读操作) -+ buffers/cached used (不包含buffers和cached;实际内存使用量) free  (包含buffers和cached;实际空闲内存) 根据以上分析,可以得出一下结论: 1.  实际可用内存大小: Free= Fr

Linux之进程管理(1)基本介绍

Linux之进程管理(1)基本介绍 什么是进程: linux系统中,进程管理相当重要.所谓进程,就是相当于触发任何一个事件时,系统都会将此事件当成一个角色定义成为一个进程,并且给予这个进程一个IP,成为PID,同时依据启发这个进程的用户与相关属性关系,给予这个PID一组有效的权限设定.然后这个PID能够在linux上面进行的各种动作,这个PID代表一个角色. PID的产生: 在linux中执行此程序文件中,内核并不是马上进行执行,而是根据程序文件的执行者的选项和一些相应的属性等参数,然后包括其中

Linux之进程管理及Shell脚本

使用!来调用过往命令 !! 重复执行上一条指令 !a 重复执行上一条以a为首的指令 !nubmer 重复执行上一条在history表中记录号码为number的指令 !-number重复执行前第number条指令 ailas abc='cd xxxxxxxxxxx/xxxxxxxx/xxxxxxxxxxxxx' unalias abc " "将一串字符当成字符串来看,可以转译特殊字符 ' '将一串字符当成字符串来看,无法转译特殊字符 ·能够返回命令执行的结果 echo `uname -a