您的位置:首页 > 运维架构 > Linux

Linux进程管理及作用详解

2017-08-23 21:01 239 查看
大纲
一、进程、线程、程序概念
二、进程相关知识
三、进程管理相关命令
四、作业管理相关命令

一、进程、线程、程序概念
1、进程(Process)
从名字上就可以看出来,process是一个处理过程,既然是处理过程,那么它就有生命周期,从进程的启动、运行,直到运行结束,进程终止。那么什么是进程呢,简单的说,进程是程序的执行实例,即运行中的程序,同时也是程序的一个副本;程序是放置于磁盘的,而程序是位于内存中的。

2、线程(Thread)
一个进程至少包括一个线程,通常将该线程称为主线程,所以线程是比进程更小的单位,是系统分配处理器时间资源的基本单元。一个进程要想同时在多颗CPU上运行,必须得分成互不影响的多个执行流,而后每组单独在各自所分配的CPU上运行,这种分化后的执行流且有着比进程更小资源分配单位称之为线程。线程之间可以共享内存空间,当一个文件需要被打开多次时,线程模型可以节省很大的内存空间,但是得避免因资源征用造成死锁问题。并且线程在运行过程当中,如果某一个线程崩溃或是出现意外情况,会影响同个进程内其它线程,比单进程模型稳定性差。

3、程序(Program)
程序只是一个普通文件,是一个机器代码指令和数据的集合,这些指令和数据存储在磁盘上的一个可执行映象(Executable Image)中,所以,程序是一个静态的实体。程序是位于磁盘上的,磁盘没有损坏或是程序没有被删除,则它是一只都会存在的。简单点可以理解是程序员写好之后存储于外设之上的代码。它是"死"的,而进程和程序都是"活"的。

二、进程相关知识
1、虚拟地址空间
在内存中,每个程序的运行都是孤立的,每个程序只知道当前内存空间只运行了自己和内核,而看不到其它的进程。



2、内核模式与用户模式
以32bit系统为例,Linux的虚拟地址空间为0~4G。Linux内核将这4G字节的空间分为两部分。将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为“内核空间”。而将较低的3G字节(从虚拟地址0x00000000到0xBFFFFFFF),供各个进程使用,称为“用户空间)。Linux使用两级保护机制:0级供内核使用,3级供用户程序使用。

3、Linux进程/线程状态模型




可运行状态(Ready)处于这种状态的进程,要么正在运行、要么正准备运行。正在运行的进程就是当前进程(由current所指向的进程),而准备运行的进程只要得到CPU就可以立即投入运行,CPU是这些进程唯一等待的系统资源。系统中有一个运行队列(run_queue),用来容纳所有处于可运行状态的进程,调度程序执行时,从中选择一个进程投入运行。在后面我们讨论进程调度的时候,可以看到运行队列的作用。当前运行进程一直处于该队列中,也就是说,current总是指向运行队列中的某个元素,只是具体指向谁由调度程序决定。
等待状态(Waiting)处于该状态的进程正在等待某个事件(event)或某个资源,它肯定位于系统中的某个等待队列(wait_queue)中。Linux中处于等待状态的进程分为两种:可中断的等待状态和不可中断的等待状态。处于可中断等待态的进程可以被信号唤醒,如果收到信号,该进程就从等待状态进入可运行状态,并且加入到运行队列中,等待被调度;而处于不可中断等待态的进程是因为硬件环境不能满足而等待,例如等待特定的系统资源,它任何情况下都不能被打断,只能用特定的方式来唤醒它,例如唤醒函数wake_up()等。暂停状态(Stopped)此时的进程暂时停止运行来接受某种特殊处理。通常当进程接收到SIGSTOP、SIGTSTP、SIGTTIN或 SIGTTOU信号后就处于这种状态。例如,正接受调试的进程就处于这种状态。僵死状态(Zombie)进程虽然已经终止,但由于某种原因,父进程还没有执行wait()系统调用,终止进程的信息也还没有回收。顾名思义,处于该状态的进程就是死进程,这种进程实际上是系统中的垃圾,必须进行相应处理以释放其占用的资源。

4、Nice值
Nice值是类UNIX操作系统中表示静态优先级的数值。每个进程都有自己的静态优先级,优先级高的进程得以优先运行。用户可控制的优先级范围为100-139,0-99为内核控制。Nice值的范围是-20到19,拥有Nice值越大的进程的实际优先级越小(即Nice值为19的进程优先级最小,为-20的进程优先级最大),默认的Nice值是0。由于Nice值是静态优先级,所以一经设定,就不会再被内核修改,直到被重新设定。Nice值只起干预CPU时间分配的作用,实际中的细节,由动态优先级决定。“Nice值”这个名称来自英文单词nice,意思为友好。Nice值越高,这个进程越“友好”,就会让给其他进程越多的时间。
5、可中断睡眠与不可中断睡眠Interruptible sleep:可中断睡眠,随时来请求,随时能唤醒,比如处理完当前请求后暂时还没有更多请求下,这种sleep就是可中断
Uninterruptible sleep:不可中断的睡眠,就是当前请求的资源比如文件加载到内存耗时较长,即使当前CPU继续分配时间片给当前进程,因为需要文件还没有加载进来因此进程依旧不可唤醒

6、优先级高的特权

①获得更多的CPU运行时间

②更优先获得运行机会

7、进程的状态
SystemV风格:
D:不可中断的睡眠
R:运行或就绪
S:可中断的睡眠
T:停止
Z:僵死
BSD风格

<:高优先级进程
N: 低优先级进程
+:前台进程组中的进程
l: 多线程进程
s: 会话进程首进程

8、进程间通信方式(IPC: Inter Process Communication)
共享内存

信号: Signal

Semaphore

三、进程管理相关命令
1、pstree
2、ps
3、pgrep
4、pidof
5、kill

6、skill
7、pkill
8、killall
9、renice
10、nice
11、uptime
12、top

13、vmstat
四、作业管理相关命令
前台作业:占据了命令提示符

后台作业:启动之后,释放命令提示符,后续的操作在后台完成

前台-->后台:
①Ctrl+z: 把正在前台的作业送往后台,并且作业处于Stopped状态
②COMMAND &:让命令在后台执行

1、bg
2、fg
3、jobs
补充:task_struct:http://oss.org.cn/kernel-book/ch04/4.3.htm
虚拟地址空间:http://oss.org.cn/kernel-book/ch06/6.4.2.htm
本文出自 “Hello,Linux” 博客,请务必保留此出处http://soysauce93.blog.51cto.com/7589461/1717954
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  进程
相关文章推荐