初识Linux · 历程(1)

打印 上一主题 下一主题

主题 830|帖子 830|积分 2490

目次
媒介:
1 冯诺依曼体系
2 实验明白操纵体系

媒介:

都说类和对象是C++中的第一个里程碑节点,那么Linux体系编程部门的第一个里程碑节点就是历程的引入,可以说我们前面的所有学习,都没有真正的开始学习Linux,我们只不过是从0开始相识一个新的软件的最根本使用而已,我们如今开始相识的是更深条理的东西,以是学习历程之前,我们应该具备一定的准备知识,以是本文留意的是准备知识,背面再先容历程。

1 冯诺依曼体系


这位科学家是一位十分伟大的科学家->冯诺依曼,是他创建了冯诺依曼体系,让盘算机超过了一个新的时代,那么什么是冯诺依曼布局体系呢?

如图以是,就是冯诺依曼布局体系,乍一看似乎也没有什么大不了的,我们不妨扼要分析一下这个布局图,一共有5个元件,这5个元件拉通了大部门盘算机的布局。
输入装备就像键盘,鼠标,话筒等,输出装备比如显示器,扬声器等,存储器的概念是十分广泛的,严谨起见,这里的存储器我们看作内存,实际上存储器分为一个金字塔,主存储器是内存而已:


我们从最上往下看,这就是存储的金字塔,从上往下一次是寄存器,一级缓存,二级缓存,三级缓存,内存,不同类别的硬盘,有人就问了,为什么存储器要那么复杂?
我们先从造价来看,当我们在市面上买内存条或者是硬盘的时间,都会发现内存的价格往往比硬盘的价格要高,我们结合内存金字塔,不难发现,从下往上,就越靠近Cpu,也就是和cpu接洽更紧密,而且从冯诺依曼布局体系中Cpu分为控制器和运算器,那么Cpu要进行运算,运算的数据从那里来呢?
答案就是从存储器,那么也就是说,越靠近Cpu要求的读写速度就越高,以是寄存器的容量很小,只有几个字节,但是速度确实非常的快。
以是我们能得出一个答案就是,越靠近CPU的存储器越贵,越快,容量越小。
这是冯诺依曼布局体系的一个简单先容,但是这还不足以说明,为什么这个体系足以让众人铭记于此。

是这样的,冯诺依曼引入了存储器的概念,也就是说,在没有存储器之前,Cpu要进行运算只能从输入装备读取数据,可我们都知道cpu的运行速度是不可思议的快,我们从键盘一个一个的输入数据,是不是太难为Cpu了?
最开始盘算机被发明就是用来进行盘算的,但是奈何背面的cpu的盘算速度实在太快了,二者的速度不对等,冯诺依曼引入了存储器,也就是说,解决了木桶效应:

我们都知道,整个木桶能装的水都是看木桶最短的板子是多长,那么盘算机同理,整机的速度是取决于速度最慢的硬件。
那么引入了存储器,就能解决速度不对等的问题,具体是因为,cpu盘算数据的时间,不再需要等候键盘输入数据,它只需要去内存内里进行读取数据进行,也就是存储器,存储器内里预先加载好数据,然后CPU进行运算即可。那么存储器也不可能全部上最快的,以是存在金字塔的概念,一级一级的递增,从而使盘算机跨入了一个新的时代。
而由冯诺依曼布局知道,cpu是不直接和外设打交道的,不管是读取数据还是干什么,cpu能直接打交道的只有存储器,体系中有数据流和控制流,固然cpu和输入装备存在控制流,但是并不是直接的控制,以是有一个重要结论就是cpu不能直接和外设打交道。
运算也是,运算器从存储器读取数据,然后返回给存储器,此时就完成了cpu的工作。
对于冯诺依曼体系的简单相识我们就到这里。

2 实验明白操纵体系

欸有人就有迷惑了,这和操纵体系有什么关系?不要忘记了,操纵体系是可以直接杀死历程或者直接回收历程的。
以是我们应该实验明白操纵体系。
从概念上看,我们在最开始已经先容了操纵体系是一个软件,进行软硬件资源管理的软件,那么在Linux最开始的部门,我们知道从广义上来看,操纵体系不仅包罗了操纵体系的内核,还包罗了外壳步调(使用户不能直接进行访问操纵体系内核的),那么狭义上来看,操纵体系就是操纵体系的内核,欸?这样是不是很容易让人空中楼阁,是这样的,操纵体系不止是操纵体系,它是盘算机中的一个大类,内里不仅有操纵体系的内核,还有驱动步调,外壳步调,操纵体系提供的体系接口等,以是我们知道会有一个布局是关于操纵体系的,那么我们先来看一下操纵体系的不完备的布局:

这是最简单的一个概念图,从冯诺依曼布局体系,我们知道最底层的应该是硬件部门,那么往上应该是操纵体系的内核,以是操纵体系的内核就出来了,内里进行了一些管理,比如历程管理,内存管理,文件体系管理等,在网上就是shell指令了,那么肯定有人好奇为什么操纵体系和硬件之间夹杂着驱动步调?
你想,操纵体系是进行软硬件资源管理的一个软件,那么硬件的数据进行了改变,是不是要在操纵体系层面进行更新?但是从冯诺依曼布局体系我们知道,能直接和外设打交道的只有存储器,操纵体系是存储器吗?不是吧?那么我们怎么进行管理呢?
我们首先明白一个问题,操纵体系管理硬件,是管理的硬件本身还是硬件的数据?是数据吧?以是我们只需要将硬件的数据进行管理即可。那么怎么拿到数据呢?此时驱动步调就有了,又驱动步调获取硬件的数据,驱动步调的来源不是盘算机本身有的:

像这种,甚至连接了新的外设之后,我们还需要本身更新驱动,驱动步调是厂商本身写的,比如雷蛇鼠标,第一次连接鼠标之,体系会自动安装驱动,这个过程的本质就是将鼠标的数据拿到,从而实现管理。
如今不难明白,驱动步调就是辅助操纵体系实现硬件的管理的。驱动步调有了数据,会将数据以内存块的情势打包给操纵体系,操纵体系以链表的情势管理硬件,以是操纵体系管理硬件,从硬件本身到硬件的数据,实际上就是管理的链表,这是操纵体系在硬件方面要做的管理事。
如今我们引入一个问题,C语言和C++语言的区别是什么?信赖大部门人都能知道C语言是一门面向过程的语言,C++是一门面向对象的语言。
那么具体体如今那里呢?C语言解决问题往往是通过一个一个的函数来解决的,C++解决问题的时间,第一件变乱往往都是创建一个类,通过面向对象的特点,封装继续多态,封装类内里的函数等,派生类继续父类,一个函数多种实现方法来解决。
那么我们从C++的解决来看,不丢脸出,我们都是先创建一个类,给类一定的成员变量和一定的成员函数,从而实现解决。
再引入一个问题,你怎样证明你是某所高校的学生?难道是直接去给别人说,我是某某高校的学生就可以了吗?当然不可以,这样的话校长也蒙了,我怎么不知道?
校园承认你是它内里的学生往往只会通过一个点,就是,你有对应的数据,比如你的学号,你的宿舍号,你的高中档案等。
这些才气证明,以是!!!结合操纵体系,操纵体系就是校长,他要对你进行管理,需要的是你的数据,数据怎么来?数据通过描述得来,就像C++一样,通过描述类,来创建对象的来。
那么校长有了对应的数据,就来开始组织了,比如知道你是大一的,那就把你组织成大一的,这就是一种组织方式。
以是,操纵体系管理的本质,就是先描述,再组织
需要有各个数据,然后才气进行对应的管理。这6个字会贯通整个操纵体系。

那么我们再来看看操纵体系较为完备的布局图:
这里就简单提及一点,如果整个盘算机是银行,我们就是老大爷,不知道怎样存取钱,以是需要客服带我们去柜台进行相干操纵,体系调用布局就是同理,是操纵体系提供给用户的函数,那么这势必会暴露操纵体系内核,以是有的时间体系被攻击了,部门原因就是因为这个。
以是用户想要访问操纵体系,访问操纵体系中的历程管理等,就必须需要操纵体系提供的体系调用函数

感谢阅读!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

吴旭华

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表