| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> Linux —— 让我们来聊聊进程1(进程的概念) -> 正文阅读 |
|
[系统运维]Linux —— 让我们来聊聊进程1(进程的概念) |
在阅读这篇文章之前,相信各位读者对程序的概念已经有了一定的了解了。一个程序就是编译生成后的可执行文件,说到底它只是一个二进制文件,只是一堆指令而已。 它没有被加载到内存里面,就没有什么意义。那如果一个程序被加载到内存当中呢? 那它就称为了一个进程。上次在聊到冯诺依曼体系结构的时候我们已经说到了,操作系统是帮我们管理软硬件资源的,它其中的一部分工作就是进程管理。 因为大量的进程载入到内存当中后,一定是杂乱无章的,它需要被操作系统管理。我们也说过操作系统的管理方式是先描述,再组织。那么对于单个进程而言,它的描述方式自然是用结构体来存储它的各种属性(这些属性我们后面会聊到的),这个结构体称为PCB(Process Control Block)——进程控制块。 对于大量的进程而言,操作系统则需要把它用数据结构组织起来,其中一种方式就是以链表的形式。用链表将每个PCB链接在一起,链表的数值域自然是PCB结构体。 说到这里,大家相信对进程有个大概的认识了,那我们就该对进程下一个很好的定义了!
?在window下我们可以在任务管理器中查看当前的进程,它包括了进程的名字,以及进程的各种属性。? ?一、Linux下的进程 在Linux下我们又该如何查到当前存在的进程呢?可以输入ps+axj查看 ?其中的PID是进程号,每一个进程都有其独立的PID,Linux一般要求PID数量小于32767,如果有一个新的进程创建的时候,内核会按照顺序为其分配PID。如果PID数量大于32767,内核会重置PID,从300开始,寻找可用的PID分配给新进程。 后面我们会了解到,进程间存在父子关系,即一个进程可以通过创建子进程的方式为其完成特定的任务,PPID就是进程的父进程的PID。 ?二、进程的文件 在Linux下,内核会为进程在proc目录下创建一个独立的文件,里面保存着进程的信息。 其中蓝色的就是进程的文件夹,文件名是进程的PID。我们可以进入proc中,打开某个进程对应的文件夹查看进程的信息。 ?图中的cwd称为Current Work Directory(当前工作目录),exe后表示可执行程序的存储路径。 本次的介绍较为简短,主要集中于概念,希望大家多看,多操作,多理解。 下次我会介绍fork函数创建子进程的方式,以及一般进程的状态,最后落实到Linux下的具体进程。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 11:52:12- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |