Linux进程概念和分类

Linux进程概念和分类

什么是进程

进程是系统中正在运行的一个程序,程序一旦运行就是进程。

进程可以看成程序执行的一个实例。进程是系统资源分配的独立实体,每个进程都拥有独立的地址空间。一个进程无法访问另一个进程的变量和数据结构,如果想让一个进程访问另一个进程的资源,需要使用进程间通信,比如管道,文件,套接字等

##进程分类
在Linux操作系统中,进程大致可以分为3中不同的类型,每种进程都有自己的特点和属性。

  • 交互进程:由一个Shell启动的进程,交互进程既可以在前台运行,也可以在后台运行。
  • 批处理进程:这种进程和终端没有联系,是一个进程序列。
  • 监控进程:也称守护进程,Linux系统启动是启动的进程,并在后台运行

init是Linux系统操作中不可缺少的程序之一。所谓的init进程,它是一个由内核启动的用户级进程。

内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。所以,init始终是第一个进程(其进程编号始终为1)。 其它所有进程都是init进程的子孙。init进程是不可杀的(即不能通过kill 命令杀掉进程)!

##进程的组成
一个进程包含内核中的一部分地址空间和一系列数据结构。其中地址空间是内核标记的一部分内存以供进程使用,而数据结构则用来纪录每个进程的具体信息。

最主要的进程信息包括:

  • 进程的地址空间图
  • 进程当前的状态( sleeping、stopped、runnable 等)
  • 进程的执行优先级
  • 进程调用的资源信息
  • 进程打开的文件和网络端口信息
  • 进程的信号掩码(指明哪种信号被屏蔽)
  • 进程的属主

##进程的属性

PID:进程的ID号

每个进程都会从内核获取一个唯一的 ID 值。称之为进程的ID号(PID)。
在Linux系统中,系统调用进程和绝大多数用来操作进程的命令,都需要用 PID 指定,而非进程名

PPID:父进程的PID

在Linux 系统中,除了被内核引导创建的进程外,所有的进程都必须有另一个进程创建。例如A进程创建了B进程,则A进程就是B进程的父进程,B进程就是A进程的子进程,B进程的PPID属性就是A进程的PID。
也就是说父进程的PID是其子进程的PPID,子进程的PPID就是父进程的ID

当父进程终止运行时,子进程也随之终止运行,但是当终止运行时,父进程不一定终止运行

UID和EUID:真实和有效的用户ID

  • UID:真实用户ID:表示进程的属主,也就是创建进程的用户ID
  • EUID:有效用户ID:这个特殊的UID用来确定进程对某些资源和文件的访问权限

在绝大多数情况下,进程的UID和EUID是一样的

GID和EGID:真实和有效的组群ID

  • GID:真实组群ID:表示进程的属组,也就是创建进程的用户的组群ID
  • EGID:有效组群ID:这个特殊的EGID用来确定进程对某些资源和文件的访问权限

在绝大多数情况下,进程的GID和EGID是一样的

进程的状态

  • 可运行状态:此时进程正在运行或者正在运行队列中等待准备运行
  • 等待状态(阻塞状态):此时进程在等待一个事件的发生或某种系统资源。在Linux系统中等待状态又细分为两种等待状态:可中断的等待状态和不可中断的等待状态
    • 可中断的等待状态:处于可中断的等待状态的进程可以被某一信号中断
    • 不可中断的等待状态:处于不可中断的等待状态的进程不受信号的打扰,将一直等待事件的发生或等待某种系统资源
  • 暂停状态:处于暂停状态的进程被暂停运行
  • 僵死状态:每个进程在运行结束后都会处于僵死状态,等待父进程调用进而释放系统资源,处于该状态的进程已经运行结束,但是它的父进程还没有释放其系统资源

谦让度和优先级

由于CPU资源的优先性造成了进程间需要轮流使用CPU,而Linux操作系统更倾向于让优先级更高的进程获取较多的CPU资源;而谦让度不同于优先级,谦让度和优先级刚好是一对相反的概念;谦让度反映了进程对CPU资源要求的迫切程度,高谦让度意味着低优先级,低谦让度意味高优先级。我们可以通过nice命令和renice命令来设置进程的谦让度,来达到调整进程的优先级的目的。从而让目标进程在CPU资源竞争中具备优势或劣势

你可能感兴趣的:(Linux教程,linux,centos,服务器,运维)