对于Linux系统管理员来说 , 对Linux进程的相关知识需要有一定的了解 , 进程和线程很容易被混淆 , 只有充分了解了Linux进程才不会弄错 , 下面小编就给大家详细介绍下Linux进程吧 。
计算机实际上可以做的事情实质上非常简单 , 比如计算两个数的和 , 再比如在内存中寻找到某个地址等等 。这些最基础的计算机动作被称为指令 (instruction) 。所谓的程序(program) , 就是这样一系列指令的所构成的集合 。通过程序 , 我们可以让计算机完成复杂的操作 。程序大多数时候被存储为可执行的文件 。这样一个可执行文件就像是一个菜谱 , 计算机可以按照菜谱作出可口的饭菜 。
那么 , 程序和进程(process)的区别又是什么呢?
进程是程序的一个具体实现 。只有食谱没什么用 , 我们总要按照食谱的指点真正一步步实行 , 才能做出菜肴 。进程是执行程序的过程 , 类似于按照食谱 , 真正去做菜的过程 。同一个程序可以执行多次 , 每次都可以在内存中开辟独立的空间来装载 , 从而产生多个进程 。不同的进程还可以拥有各自独立的IO接口 。
操作系统的一个重要功能就是为进程提供方便 , 比如说为进程分配内存空间 , 管理进程的相关信息等等 , 就好像是为我们准备好了一个精美的厨房 。
看一眼进程
首先 , 我们可以使用$ps命令来查询正在运行的进程 , 比如$ps -eo pid , comm , cmd , 下图为执行结果:
(-e表示列出全部进程 , -o pid , comm , cmd表示我们需要PID , COMMAND , CMD信息)

【Linux进程的相关知识介绍】 每一行代表了一个进程 。每一行又分为三列 。第一列PID(process IDentity)是一个整数 , 每一个进程都有一个唯一的PID来代表自己的身份 , 进程也可以根据PID来识别其他的进程 。第二列COMMAND是这个进程的简称 。第三列CMD是进程所对应的程序以及运行时所带的参数 。
(第三列有一些由中括号[]括起来的 。它们是kernel的一部分功能 , 被打扮成进程的样子以方便操作系统管理 。我们不必考虑它们 。)
我们看第一行 , PID为1 , 名字为init 。这个进程是执行/bin/init这一文件(程序)生成的 。当Linux启动的时候 , init是系统创建的第一个进程 , 这一进程会一直存在 , 直到我们关闭计算机 。这一进程有特殊的重要性 , 我们会不断提到它 。
如何创建一个进程
实际上 , 当计算机开机的时候 , 内核(kernel)只建立了一个init进程 。Linux kernel并不提供直接建立新进程的系统调用 。剩下的所有进程都是init进程通过fork机制建立的 。新的进程要通过老的进程复制自身得到 , 这就是fork 。fork是一个系统调用 。进程存活于内存中 。每个进程都在内存中分配有属于自己的一片空间 (address space) 。当进程fork的时候 , Linux在内存中开辟出一片新的内存空间给新的进程 , 并将老的进程空间中的内容复制到新的空间中 , 此后两个进程同时运行 。
老进程成为新进程的父进程(parent process) , 而相应的 , 新进程就是老的进程的子进程(child process) 。一个进程除了有一个PID之外 , 还会有一个PPID(parent PID)来存储的父进程PID 。如果我们循着PPID不断向上追溯的话 , 总会发现其源头是init进程 。所以说 , 所有的进程也构成一个以init为根的树状结构 。
推荐阅读
- 三个摄像头的手机有哪些
- x60和x60pro的区别
- 孩子应该如何补钙好?不懂的赶紧过来了解下
- 宝宝入睡难题,妈妈如何解决
- 圣诞老人的鹿叫麋鹿还是驯鹿
- 蛭石是什么材料做的
- 通马桶的那个东西叫啥
- 马住的地方叫什么
- 免费查酒店开的房记录查询 淘宝查宾馆入住记录查询
- 如何查询自己去过的酒店 自己查自己宾馆记录查询
