计算机体系的粗鄙理解

计算机体系的理解


开始的点

 这个发散思维是从哈工大李治军老师讲述操作系统接口开始的,当他讲到第八分钟的时候,突然感觉到了一个点,应该梳理一下自己的知识体系。先是在脑海里梳理了一遍,梳理的过程中好似一个对话,教课。最后才整理出来(这是传说的意识流??)

先谈谈接口

 既然是从操作系统开始的,那就先谈谈操作系统。上层的应用和下层的硬件之间是操作系统。那为什么要有接口和这个层次呢?
 如果没有这个层次的话操作系统和应用,是, 他们是可以杂糅在一起并实现一些功能,但是这些东西杂糅在一起,会很乱,不容易管理、开发、维护、实现的功能也并不会很好。但是我们采用分层的话,他们就独立了起来。独立,封闭连接两个异构,信息转换,屏蔽细节。
IEEE(POSIX)定义了统一的接口,方便移植。插座的标准一样,插头一样,笔记本就可以在北京,上海不同的地方工作。跟IEEE(RFC)定义网络协议一样。

请添加图片描述
 他们独立起来有巨大的优势,内部怎么进行改变对外部来说都无关紧要。如果将应用和操作系统杂糅在一起,不好改动,这会牵一发而动全身,会造成很大的影响。独立起来后应用和操作系统可以各自的进行分支,对各自功能进行深入发展。也就是将功能分开,并且会在这个分支上越走越远,最终变成两个不同的东西。解耦也就是增加独立性的过程。两个不同的个体之间进行交流,要通过媒介、接口,才能通信、交流,需要一个中转。
 打个比方,两个人的交流,要通过语言,这个语言就是信息。一个人的声音经过耳朵等接口的 接收、解释、处理、变成大脑能识别的脑电波,让大脑这个CPU进行信息的处理然后产生相应的动作(好比一个计算机和另一个计算机进行通信)。再打个比方,一个人眼睛看到了屏幕的文字,光信号,经过眼球的处理,解释,变成大脑能处理的电信号, 电信号通过神经(也就是总线)传输给大脑CPU,CPU进行处理,然后在通过神经输出电信号,电信号在肌肉。肌肉产生动作,可以看做外设打印机打印文件
 而接口在哪里呢?眼球就是上层应用——wps,眼球后面的视网膜,什么的就是接口;接口进行信息的转化通信。
 因为分层了,把功能进行了分割(上层应用不再关心最底层硬件),所以要通过接口,操作系统通过接口对上层的应用提供服务。上层应用自然就是调用接口喽。
 接口自然而然的就要有,接收口,参数,返回,参数——信息传递嘛,接收信息的位置,信息是最重要的喽
 操作系统和应用之间的关系大概就是这样了。

再谈谈驱动

 世上的东西都是如此,两个异构的东西,想要交流,相互影响,那他们就必须通过一个中介;接口,驱动,都是中介。不过有的接口厉害,实现的东西多,有的接口实现的少。
 而驱动,则是一个很厉害的中介,他能把软件和硬件(外设)(从字面上看是对立的)联系起来,让他们进行交流、通信。当然外设也都有自己的处理器来处理接口传输过来的信号。现在都有自己的CPU。

操作系统是必要的

 我们的应用也是要运行在硬件上的,并通过操作系统来实现它。为什么通过操作系统?如果没有操作系统,应用直接在硬件上运行 ,那么要多多多恶心啊,安全,兼容,资源分配,多应用,并发,显示,这些硬件到底怎么分配、怎么用、怎么定义接口,不同应用还会出现冲突,一堆问题玩不起来。贼麻烦,所以抽象出操作系统,让操作系统这个大层次来解决这些问题(问题太多就分块分层,有点分治的意思,计算机网络分层同样的思想)

这里就引出了操作系统的功能现在知道了操作系统对上,对下很厉害,现在从宏观跳进操作系统里面来,看看他内部怎么个管理法

操作系统内部的管理

 操作系统是一个超级强大的软件。我们上层应用程序都是代码嘛,并实现一些功能。但是我们知道的是,这些功能会分为模块进行功能之间的解耦。各个函数之间通信,通过接口进行调用传递参数信息,来完成一个任务,进而实现一个功能。操作系统内部也是如此,分成许多模块,然而现在Linux操作系统非常复杂(700w行),因此需要一些其他的代码和方式来管理他们。
 操作系统内部非常复杂因此也需要划分从层次和模块,但是即使划分了他也还是非常的庞大,因此需要规划出别的模块来管理其他的部分,这样操作系统才能有效的运行。
 从代码执行层面说:操作系统内部的各个功能也是通过接口调用来组织管理的。可以这么说,操作系统内部到处都是接口。这是对操作系统进行管理的方法。
 从某个功能代码内部具体管理的东西说:操作系统管理怎么具体的组织管理硬件和其他东西,就要用到数据结构了。例如:linux0.11 memory是采用数组的形式。

 以上就是操作系统的管理大致思想,有点类似于计算机网络分层、接口、宏观管理,和微观数据结构算法的实现、等一些思想)其实生活处处都在体现这种思想

请添加图片描述

总结

 对于编程来说到处都是接口,我们anytime,anywhere都在编写接口和进行接口的调用。整个编程可以说就是由接口组成的。而在某些具体实现接口的内部,则是用数据结构和一些逻辑来实现。而接口外部则更多的是逻辑调用。以前听过面向接口编程,现在终于体会到了。在宏观和微观之间反复穿梭,拿起,又放下。宏观和微观互相嵌入。(操作系统,应用,硬件,其他计算机,os内部,应用内部,内部之间的组合,内部之间的管理组织)
 对于编写我们只要掌握了思想和计算机的基础,就可以不用被框架所束缚。例如,我学习java,掌握了java基础,数据库,操作系统,计算机网络等等一些我们就不怕框架的束缚,不用被框架所限制。根据这些,并结合思想外加一些管理的技术可以自己进行开发。框架也就是对这些的合理组合,而我们所学习的流行的框架就是一些技术的当前最合理组合。框架不过就是在骨干里面添加血肉,随着新技术的发展和基础知识的进步,这个骨干终有会被淘汰的时候,在淘汰的过程中也会随大势出现新的框架,而我们对根本的、基础的东西和一些思想掌握的足够好,我们就可以很快的适应新出的框架。拿得起放得下,能拿多高,放多低(不论是宏观把控还是微观实现)都尽在掌握。
小菜鸟语言匮乏乱写一通,大佬有指教,感激不尽

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值