【程序员必备小知识-进程知识27】Linux的进程到底存了啥?

122 阅读2分钟

引言

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动

昨天我们聊了父子进程,相信大家也都知道了父子进程的来源与实现,那这篇文章呢,我们就深入看一下Linux进程的里面到底存了什么吧。

问题背景

假如说我们没有Linux的知识,就让你设计一个进程,里面装啥呢?或者我们换个话题:你的卧室都有啥呢?可能有床、枕头、背子,桌子,电脑,还有其它的你喜欢的东西,那Linux的进程喜欢啥呢?枕头?桌子?不不,它要这些没有用,它要什么取决于进程干什么,进程是执行我们程序的,那肯定得有程序吧,那进程还需要给结果,那得储存数据吧,进程执行肯定是有计划的,不能随便执行吧,那得有控制信息吧。

进程的内存资源

好了,前面我们知道了进程需要的三个东西:程序,运行结果和控制信息,然后我们用通用的Linux语言重新翻译一下,我们的程序就是进程里的正文段,里面存储的是待运行的机器指令,权限是只读,但多进程之间可以共享。

那程序的运行会有输入参数和运行结果,这些都是以数据结构的数据保存的对应进程的用户数据段,此外还有动态分配对象的等等。

那最后的控制信息是对应进程里的系统数据段,系统数据段里面存储进程的控制信息,操作系统也是通过这个信息管理和控制进程的。