Linux系统进程管理详解

今天继续给大家介绍Linux基础知识,本文主要内容是Linux的进程管理。

一、什么是进程

在计算机中,存在着很多的可执行程序,而这些程序在电脑上运行起来,我们就将其称之为进程。简单来看,进程是已经启动的可执行程序的运行实例。从技术角度看,计算机为了执行特定的指令,需要将该段程序加载到内存中,并调度CPU进行计算,有时还需要调用外部输入输出设备。计算机科学发展到现在,计算机都是多用户多进程的,计算机操作系统对进程的调度成为操作系统的基本任务之一。
今天,我们要学习的就是Linux系统对于进程的调度。

二、Linux进程

通常来说,一个进程可以复制自己的地址空间以创建一个新的进程,操作系统为每个进程分配一个唯一的进程ID,称为PID。当一个进程创建新的进程时,我们把该进程称为父进程,新创建出来的进程称为子进程。如果父进程中止或结束,则子进程也会相应中止,但是如果子进程中止,则不会对父进程造成影响。
在CentOS5和CentOS6系统中,系统的第一个进程是init,而在CentOS7系统中,系统的第一个进程是systemd。Linux系统的所有其他进程都是由systemd进程创建的,或者由该进程创建的进程所创建的,所有的进程都可以追溯到该进程。
在Linux系统中,执行命令pstree可以查看系统的进程树。(不知道这个命令如何安装的同学可以查看文章Linux系统如何安装不知名称的软件?)
Linux系统进程管理详解_第1张图片

三、进程的状态

当前的计算机都是多进程计算机,这样的好处就是即使计算机只有一个处理器(CPU),计算机也可以通过在极短的时间内调度进程以实现多个进程同时运行的效果。一般而言,计算机上的进程会根据资源的占有情况而处于不同的状态。
进程的状态及变化如下图所示:
Linux系统进程管理详解_第2张图片
图中状态解释如下:
fork:fork函数用于创建一个新的进程
schedule:进程通过调度进入就绪态
Runable:表示此时进程处于就绪态,正在等待操作系统赋予CPU资源
Running:表示进程已经获得CPU,正在执行,Running状态有两种——user用户态和kernel内核态。在用户态下,进程可以获得优先的执行权限,一些对计算机底层硬件的操控就要求系统进入内核态来完成。从操作系统源码角度讲,内核态其实是一种特殊的终端,为了避免进程直接操作计算机的硬件,导致造成不必要的后果,操作系统会对进程进行限制,采用的方法是提供一些接口供进程调用,当进程调用这些接口时,就会进入内核态。
syscall:系统调用,用户态的进程通过syscall进程内核态
return:进程从内核态返回用户态
stopped:停止态,Linux的进程在遇上Ctrl+C时就会进入这种状态
Zombie:僵死态,分为EXIT_ZOMBIE和EXIT_DEAD两种状态,EXIT_ZOMBIE是一个子进程向其父进程发信号,通知除了PID之外的所有进程资源可以回收。EXIT_DEAD是EXIT_ZOMBIE的下一步,此时父进程已经收回了子进程的所有资源,子进程已经结束。
Sleeping:睡眠态,表示进程在等待信号被唤醒。比如当进程需要调度磁盘时,由于磁盘调度速度较慢(相比于CPU来说),此时操作系统就不会允许进程此时调度CPU,此时进程就会等待,知道磁盘调度完毕,该进程才获得调度CPU的权利。此外,如果有进程与进程之间的合作,有时为了防止操作系统对进程调度的不可控性,有的进程也会主动进入这种状态,等待其他进程完成某项工作后,唤醒此进程。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200/article/details/120621987

你可能感兴趣的:(Linux,linux,运维,系统进程,进程,进程状态)