最近在计算机操作系统这门课中学到了进程。在操作系统中,进程是操作系统为了管理程序设置的一种管理机制。
简单的说,进程可以具象成一个结构体,我们称它为PCB,在进程结构体内包含了进程的所有内容,就好像流水线上的包裹,然后我们通过这个PCB结构体来管理程序。
在管理过程中,多个不同进程可能会交替运行。所以我们对进程设置不同的状态来方便运行。
对于进程的状态,可以分为五个,创建-就绪 - 执行 - (阻塞)- 终止
其中核心的三种状态是:就绪,阻塞和执行,他们有着下图所示的关系。
ps:当然,这只是最简单的模型,实际情况下,还会有挂起队列等状态。
除了进程的状态外,我们还要区分进程和线程两个不同的概念
进程的概念包括两个特点:
1.资源所有权:进程具有一个虚拟的内存空间用来访问程序和数据。
2.调度/执行:在进程执行时,进程具有不同的执行状态和分配优先级。
这两个特点相互独立,所以为了区分,我们把没有资源所有权的“进程”称为线程或叫做轻量级进程
也就是说,一个进程可以分为很多的线程,所有线程全部共享它的虚拟内存空间(因为线程没有资源所有权)。
我做了一张图,可以让大家更方便的理解一下线程和进程
接下来,我们探讨PCB的内容
以linux中的PCB进程结构体task_struct为例,参考大佬的PCB讲解
我们可以看到pcb的详细内容,其中大部分都是指针,这些指针指向的,就是pcb控制的一个个子模块
参考资料:
鸟哥的linux私房菜,操作系统精髓与设计原理,计算机操作系统