Linux进程管理、作业及相关工具

2016-03-07  本文已影响391人  魏镇坪

Linux进程管理原理

Linux的进程管理,就是对硬件各资源进行分配、调度、销毁等工作,其主要部件的管理为:CPU、内存、IO的分配和调度工作。其CPU的指令执行又分为特权指令、普通指令级别,而在linux系统层面将其对应为内核空间、用户空间。系统运行之上的程序通常只能执行普通指令,如果需要管理硬件,与硬件相关的读、写、删除操作(即面向硬件层面的请求),需要向init进程提交请求,再由Init进程发送给内核,由内核调用CPU完成其指令,这个过程被称作为系统调用,也被称为软中断。而系统调用在用户空间的表现形式为各种函数,即程序内部代码调用了其对应的函数模块。从用户模式切换到内核模式,或者从内核模式到用户模式,这个过程就称之为模式切换。当发起一个系统调用,通常被称之为一个软中断. 当IO或者其他的硬件完成操作,需要将其结果发送给CPU处理时,CPU此时将暂停其他工作,接手其IO的中断请求,这过程被称之为硬中断.
CPU是将其计算能力划分为以时间为单位的时间片,再将时间片发配给进程使用,以此来完成程序的响应。由于各进程会抢用时间片,以造成其他进程不能正常工作的情况,此时将由内核管理进程的运行状态、优先级、进程的生命周期等工作,此过程被称之为进程调度。当计算机只有一颗物理CPU时,意味着正在运行的情况只能有一个,多任务处理的情况会面临抢占资源。故需要将多个等待处理的进程状态保存至内存中,Linux内核存储进程的结构体被称之为task struct,每个task struct都保存了其进程名,存储位置,进程的优先级等信息,多任务的task struct存储被称之为链表结构(task list),即内核把物理内存分成大小为4k的页框,再将页框分配给进程的虚拟内存(vritual size,虚拟内存集),让每个进程都工作在虚拟内存集中,从虚拟层面感知自己可用空间为系统的剩余空间。当系统启用时会加载很多的基本库glic或者其他的程序所共同依赖的库文件,都会一次性加载到内存中,这部分被称之为共享内存集(shared size),如果每个内存将使用共享内存中的库文件,会在自己的虚拟内存中添加其所需的文件内存地址指针.而不是把所需要的文件都加载到其进程空间中。
共享内存集又被分为常驻内存和不常驻内存,常驻内存一般是系统调用所需要的库文件,故是不能被交换到交换分区的。当内存负荷比较大的情况下,内核会通过LRU算法将不常用的内存空间交换到交换分区,如果需要重新使用此进程时,内核又会将其调入到内存中加载被使用。
内存管理中,每个进程又被分优先级。内核将进程划分为280个队列,其中140个队列存放过期队列(被调度过的进程),140个队列存放运行的进程,当下次调用进程的时候,只需要扫描140个运行的进程队列首部即可,以此完成快速调用。其每个队列有其对应的优先级,表示范围为『0-139』。「0-99」是实时优先级,数值越大,优先级越大。「100-139」是静态优先级,其中可通过管理命令调整,使用nice值表示为-20,19,并对应100-139的优先级。其nice值越小表示优先级越高。越高优先级的进程会被优先调用执行。当一个进程正在运行时,此时一个高的优先级进程需要先执行,CPU将暂停正在运行的进程,将CPU的运行状态保存至寄存器,这个过程称之为保存现场。这种进程与进程之间的切换,也被称之为上下文切换。
内存存放数据格式
进程间通信机制IPC (inter process communication):
进程的类型
进程的状态及其就对的代码
进程标识符代码:
查看内核中进程的相关信息
进程IO调用的过程:
Centos各版本的守护进程

=========

Linux下进程管理各工具

ps命令
工作原理:

ps命令

ps - ps - report a snapshot of the current processes.
            1 UNIX options, which may be grouped and must be preceded by a dash. 
            2 BSD options, which may be grouped and must not be used with a dash. 
            3 GNU long options, which are preceded by two dashes.

* `a` : 所有与终端相关的进程
* `x` : 所有与终端无关的进程
* `u` : 以用户为中心来组织状态信息显示,其是以PID进行排序
* `-e` : 显示所有进程
* `-f` : 显示完整格式的进程信息
* `-F` : 显示完整格式
* `-H` : 以层级结构显示进程的相关信息
* `o` : 自定义要显示的字段列表,以逗号分隔
    * ps axo pid,cmommand
常用组合:
ps中常用的命令字段
ps命令显示中的字段名称含义

pgrep命令

功能
pgrep - pgrep, pkill - look up or signal processes based on name and other attributes

pkill命令

pidof命令

top命令

top - display Linux processes
top中显示名称含义解释
htop命令

=========

Linux性能查看工具

vmstat命令
vmstat - Report virtual memory statistics
各种选项字段说明
dstat命令:
dstat - versatile tool for generating system resource statistics
iostat
iostat - Report Central Processing Unit (CPU) statistics and input/output statistics for devices and partitions
pmap命令
功能:
synopsis: pmap [option] PID [...]
注意:可以 cat /proc/1/maps,也可以查看进程的内存使用情况
glances 命令
内建命令
glances的C/S模式
kill命令
kill - kill - terminate a process
常用信号
调整进程优先级
nice命令
nice - run a program with modified scheduling priority
nice [option] [COMMAND][ARGU….]
renic命令
renice - alter priority of running processes
renice [-n] NICE PID

================

Linux上的作业控制

作业的分类
如果将作业运行于后台
显示当前系统上的所有作业
jobs 命令
    root@zhenping ~]# jobs
    [1]-  已停止               vim a.sh
    [2]+  已停止               ping 202.96.209.5
将作业从后台调回到前台
将后台作业从停止状态变成运行状态
结束作业
上一篇下一篇

猜你喜欢

热点阅读