【Linux】进程概念 —— PCB

目录

一.基本概念

二.系统如何管理进程

三.PCB

1.PCB的概念

2.task_struct概念

3.task_struct内容分类

四.查看进程

五.系统调用获取进程标识符


一.基本概念

启动一个软件,本质就是启动了一个进程

例如,在Linux下运行了一条命令,运行时,其实就是在系统层面创建了一个进程

平时我们都在说,把代码编译好,然后把程序运行一下,其实这种说法是错的!当程序需要运行时,系统会将程序加载到内存,而程序加载到内存准备运行的那一时刻,它就是一个进程了!所以不是把程序运行起来,而是把进程运行起来。

只有将程序加载进内存,形成进程之后,才能被操作系统管理,操作系统只能对进程做调度

二.系统如何管理进程

Linux是可以同时加载多个程序的,Linux是可能同时存在大量进程在系统中的。

那Linux系统就一定会将这些进程管理起来,如何管理:先描述,再组织

【Linux】进程概念 —— PCB_第1张图片

这里所谓的先描述,就是由程序的属性,创建出的进程PCB

再组织,就是将所有的PCB以链表等数据结构组织起来,对进程的管理,就变成了对PCB链表的增删查改

进程 = 对应的代码和数据 + 进程对应的结构体

补充几点:

程序(本身就是文本)是静态的

进程(本身就是进程加载到内存后,要在内存中被CPU处理)是动态的

进程与程序并不是一一对应的,因为同一个程序可以同时被执行多次

进程与作业并不是一一对应的,一个作业至少要包含一个进程,可能由多个进程组成一个作业

三.PCB

1.PCB的概念

PCB(process control block):进程控制块

PCB的本质是一个结构体

不同的操作系统中PCB的名字不同

Linux中,PCB名为 struct task_struct

2.task_struct概念

在Linux中描述进程的结构体被叫做task_struct

task_struct是Linux内核的一种结构体,它会被装载到RAM(内存)里并且包含进程属性信息

可以在内核源代码里找到,所有运行在系统里的进程都以task_struct双链表的形式在内核里

3.task_struct内容分类

【Linux】进程概念 —— PCB_第2张图片

四.查看进程

1.可以通过 /proc系统文件查看

例如:要获取PID为1的进程信息,需要查看/proc/1这个文件

指令:ls -l /proc/1

例如:查看所有进程

指令 ls /proc

2.ps

指令:ps/ps -l,只能查看当前终端下且是我自己的进程

指令:ps -a/ps -al,查看所有终端下自己的进程

指令:ps axj,查看所有终端所有进程

3.top

相当于windows下的任务管理器,并不常用

五.系统调用获取进程标识符

1.getpid() —— 获取进程代号

2.getppid() —— 获取这个进程的父进程代号

【Linux】进程概念 —— PCB_第3张图片

必须包含两个头文件,其返回值pid_t本质是int类型

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