0


Linux进程概念

文章目录

前言

好久没有更新有关和Linux系统相关的知识了。 先前我们简单了解了Linux操作系统。也能够在Linux下进行基本的指令操作,也能够在Linux下写代码,编译代码,调试代码。我们已经可以在Linux下进行很多基本的操作了。但是,我们对Linux的理解不能仅仅只停留在这一个层面。 今天,我们从更深一个层面来理解操作系统,并且引入操作系统中一个很重要的概念---->进程

冯诺依曼体系

谈及现代计算机,就不得不谈到冯诺依曼体系 下面这张图就可以很好体现冯诺依曼体系的内容:
在这里插入图片描述
下面我们对图中的设备进行解释:

1.输入设备:键盘,网卡…
2.输出设备:显示器,打印机
3.存储器:内存
4.中央处理器(cpu) ->运算器和控制器

而冯诺依曼体系中最重要的就是引入了存储器作为存储单元!那么存储器有什么优点呢?

1.从技术角度来看,cpu和输入,输出设备的速度严重不匹配,cpu如果直接和输入输出设备进行数据方面的交互会严重影响cpu的工作效率。为了提高效率,引进了存储器。cpu在数据层面直接和存储器打交道
2.成本角度:从访问速度来看: 寄存器> cache > 内存,相对应的前二者的造价高,所以从成本的角度来看,引入内存是十分有必要的。

这就是整个冯诺伊曼体系的简单认识,重点就是:cpu在数据层面不直接和输入输出设备(准确一点叫做外设)打交道,而是只从存储器当中存取!

感性认知操作系统

接下来,我们来感性认知一下操作系统。我们知道,计算机本质是由一堆硬件组成的 。硬件是没有任何独立自主的思考能力的,而一台计算机如果需要很好工作就需要各个硬件直接很好配合。而很好的配合的前提就是需要一个统一的管理者。而操作系统就是充当这样的一个角色!
用一句话总结操作系统的角色:对下协调处理好各种软硬件资源,而对上(用户层面)为用户提供服务。
关于操作系统如何为用户提供服务,我们后面会进行详细的介绍,这里先感性认知一下操作系统。

理性认知操作系统

然而,仅仅停留在感性认知操作系统的工作是远远不够的。我们下面从理性分析的角度来认知操作系统! 我们知道,操作系统对下协调软硬件资源,对上提供服务。那么操作系统在整个体系中充当的就是管理者的角色。 那么应该如何理解这个管理呢?或者换句话说,管理的本质是什么呢?

校长、辅导员和我

来看看这么一个例子:
在这里插入图片描述
这就是整个学校的管理体系:那么又会存在一个问题,校长连我的脸都没有见过,那么他怎么管理到我的呢?

人是如何认识世界的

要回答这个问题,我们要先联想一下。我们想要把一个事物准确地描述出来,无非就需要:这个事物的属性是什么,这个事物有哪些行为。 对应到计算机的世界就是,这个类有哪些属性,哪些方法:

//c语言的视角structObj{//...属性//...方法};//c++的视角classObj{//属性//方法};

那么在学校的管理系统。校长认识你这个学生也是同样的道理。校长无需对你本人进行管理,而是通过对你本人的数据进行了管理!换言之,对人的管理本质就是对人数据的进行有效的管理! 那么我需要管理学生,我就需要描述一个学生的属性,行为,接下来就是如何把学生的数据给组织起来(数据结构),也就是说所有的管理最后都会变成对某一个管理角色的数据的数据结构增删查改! 操作系统的管理理念也是如此! 管理的本质就是先描述,再组织!

认识进程

有了前面的知识的铺垫,下面我们就来引出进程的概念。在今天之前,我们所写的代码都是以程序称呼。包括运行起来以后,我们也叫它叫做程序。 但其实这是不正确的。准确来说,程序是一个在磁盘上的文件。而进程的前提就是它需要被加载到内存(体系结构规定)。 认识事物都要从属性和行为来分析,那么进程究竟是什么呢?

进程=程序代码+数据+对应的内核数据结构

因为操作系统也必须对进程进行管理,所以也需要对进程创建对应的数据结构进行管理。对应的内核数据结构在Linux下就叫做task_struct。 我们可以简单看一看源码:

structtask_struct{volatilelong state;/* -1 unrunnable, 0 runnable, >0 stopped */structthread_info*thread_info;atomic_t usage;unsignedlong flags;/* per process flags, defined below */unsignedlong ptrace;int lock_depth;/* Lock depth */int prio, static_prio;structlist_head run_list;prio_array_t*array;unsignedlong sleep_avg;unsignedlonglong timestamp, last_ran;int activated;unsignedlong policy;cpumask_t cpus_allowed;unsignedint time_slice, first_time_slice;//.......还有很多,这里就不列出了}

操作系统对于进程的管理,本质上就是对于这些进程的内核数据结构(PCB,Linux下具体的是task_struct)进行管理.


以上就是本文的主要内同,如有不足之处还望指出。

标签: linux 运维 服务器

本文转载自: https://blog.csdn.net/qq_56628506/article/details/127158071
版权归原作者 __cplusplus 所有, 如有侵权,请联系我们删除。

“Linux进程概念”的评论:

还没有评论