在本科期间学习过进程,网上也有很多关于进程的知识,但对于进程到底是什么一直没有让我满意的解答(以下截图来自网络,感觉对进程理解有问题,说得也很虚)。
但今天找到这个博文感觉挺符合我的胃口:http://blog.csdn.net/yuqiang_ee_android/article/details/16889257
- 进程的本质
进程是Linux内核提供的一个环境(资源分配的基本单位),包括:
(1)进程控制块(用于操作系统对进程的管理)。
(2)虚拟内存(分为好几段:正文段、数据段、BBS段、堆栈段等等)。
(3)其他内核资源(打开的文件等等)。
- 进程和可执行文件的关系
前面说了,进程有正文段和数据段等,这些都是从磁盘上的可执行文件加载而来(可以通过size命令查看可执行文件分段信息)。
所以:可执行程序为进程提供必要的代码和数据等。
- 进程和线程的关系
有很多关于 进程和线程的区别及联系 的文章,但大部分和我的理解不一样。以下是我的个人理解。
(1)进程提供了环境,为谁提供?答案就是线程。进程提供资源,线程干活。
(2)进程是资源分配的基本单位,线程是CPU调度的基本单位。(有人说线程是进程的实体,我不知该怎么理解)
(3)进程创建后默认就有一个初始线程存在,以后在该进程中创建的线程都会共享进程提供的环境。