初识进程——进程的基本概念

在正式了解进程之前,我们先通过最直接的方式,在windows环境看一下身边的进程:

我们可以看到,实际上电脑中跑的一个个应用/程序都是一个进程。

我们都知道操作系统是一个进行“管理”的软件,那 操作系统是如何管理进程的呢?  
其实很简单,描述进程 + 组织进程

1 描述进程 PCB
说到进程,不得不说的一样就是进程控制块PCB, 进程的所有信息都被放在PCB这样一个数据结构中。
而在Linux操作系统下的PCB是task_struct,是描述进程的结构体

task_struct结构体中的内容:
(1) 标识符 :(进程ID)用来唯一标识该进程,区别其他进程;
(2) 状态 :每个进程都有自己的状态,还有退出码、退出信号等;
(3) 优先级 :相对于其他进程的优先级,标识CPU资源分配的先后顺序;
(4)程序计数器:程序中下一条被执行指令的地址;
(5)内存指针:内存代码和进程相关数据的指针,还有和其他进程共享的内存块的指针;
(6) 上下文数据 :进程执行过程中寄存器中的数据;
(7)I/O状态信息:I/O请求,分配的I/O设备等;
(8)其他信息...

我们通过指令查看一下进程的信息:

2 组织进程
所有运行在系统里的进程都以task_struct链表的形式存在内核中

3 进程和程序的区别
(1)程序是永恒静止的,是存放在磁盘上的普通文件;
(2)进程是暂时动态的,只有将程序的代码和数据加载到内存上才会变成进程,进程有创建和撤销;
(3)进程有调度,程序没有,这也印证了进程是动态,程序是静态;
(4)一个程序可以对应多个进程,一个进程只能对应一个程序;
(5)进程是系统进行资源分配的基本实体
(6)进程可以并发执行,程序不行;
(7)程序:代码段 + 数据段
   进程:代码段 + 数据段 + 堆栈 + PCB

猜你喜欢

转载自blog.csdn.net/weixin_39294633/article/details/80157230