如何理解进程的概念 - Go语言中文社区

如何理解进程的概念


        最近在计算机操作系统这门课中学到了进程。在操作系统中,进程是操作系统为了管理程序设置的一种管理机制。

简单的说,进程可以具象成一个结构体,我们称它为PCB,在进程结构体内包含了进程的所有内容,就好像流水线上的包裹,然后我们通过这个PCB结构体来管理程序。

在管理过程中,多个不同进程可能会交替运行。所以我们对进程设置不同的状态来方便运行。

对于进程的状态,可以分为五个,创建-就绪 - 执行  - (阻塞)- 终止

其中核心的三种状态是:就绪,阻塞和执行,他们有着下图所示的关系。


ps:当然,这只是最简单的模型,实际情况下,还会有挂起队列等状态。

除了进程的状态外,我们还要区分进程和线程两个不同的概念

进程的概念包括两个特点:

        1.资源所有权:进程具有一个虚拟的内存空间用来访问程序和数据。

        2.调度/执行:在进程执行时,进程具有不同的执行状态和分配优先级。

这两个特点相互独立,所以为了区分,我们把没有资源所有权的“进程”称为线程或叫做轻量级进程

也就是说,一个进程可以分为很多的线程,所有线程全部共享它的虚拟内存空间(因为线程没有资源所有权)。

我做了一张图,可以让大家更方便的理解一下线程和进程



接下来,我们探讨PCB的内容

以linux中的PCB进程结构体task_struct为例,参考大佬的PCB讲解

我们可以看到pcb的详细内容,其中大部分都是指针,这些指针指向的,就是pcb控制的一个个子模块 

参考资料:

鸟哥的linux私房菜,操作系统精髓与设计原理,计算机操作系统

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/xiagu_jinchengwu/article/details/79614889
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2019-10-27 20:40:07
  • 阅读 ( 1303 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

推荐文章

猜你喜欢