1.冯诺依曼体系结构
截至目前,我们所认识的计算机,都是有一个个的硬件组件组成 ,(按照冯诺依曼体系结构组装)。
1.1独立的硬件
1.2设备之间是相互连接的
设备之间的数据流动,本质上是设备之间的数据的相互拷贝
那么,拷贝的整体速度不就是决定计算机效率的整体指标 。
1.3为什么要存在内存
1.3.1如果没有内存直接让CPU勾连设备。 那么cpu直接勾连设备又会发生什么呢?
1.3.2为什么要引入内存呢?内存三问
引入内存为什么会让计算机运行速度变快呢?
就冲木桶原理来看,那最慢的外设不是还在吗?
内存的引入使得数据,不仅要从外备拷贝到内存,内存又拷贝到CPU上,反而还多了一层拷贝,速度不是应该更加慢了吗?
1.3.3内存是怎么提高计算机效率的呢?
内存就是一个非常大的缓存,介于CPU和外设之间。
所以,在这个体系结构下,计算机的效率就以内存为主。
1.3.4那么为什么不将所有的储存设备都用寄存器呢?
1.3.5为什么程序运行的时候要加载到内存里??
2.操作系统(软件上)
2.1操作系统是什么?
操作系统就是计算机第一个加载的软件。
操作系统是一个进行软硬件资源管理的软件。
2.2什么是驱动?
2.3先描述,在组织
操作系统是一个对软硬件做管理的软件。
那么怎么理解这个管理呢?
管理层面就有三个层面:做决策,做决策+做执行,做决策。
就相当于:校长(做决策),辅导员(执行校长的决策+对学生下决策),学生(做执行)
这也就对应着我们计算机的结构:操作系统,驱动程序,硬件。
在校长管理我们的时候(也就是希望对我们下决策的时候),他需要我们的信息,来帮助他对于我们来下决策(类似于这学期逃课超过五次的直接回家)。
在这种情况下,校长就需要通过逃课次数来锁定一个人,这时候也就是需要结构体,大量的数据方便存储,以及方便查阅,就需要数据结构。
结构体的引入就是先描述需要管理的数据的属性,再组织就是将数据放到合适的数据结构中。
那么如何管理驱动程序呢?当然也和上面的过程一样啦。
2.4为什么要有操作系统?
操作系统本质就是做管理工作 。为什么要有操作系统?也就转变成了为什么要有操作系统的管理?
为什么要有?就是希望操作系统能够管理好软硬件资源,给用户提供良好的使用环境。
2.5系统调用接口
所以,就有一个结论,就是任何人都不能越过系统调用接口直接访问操作系统的数据。
越级访问是绝对不被允许的。
2.6库函数VS系统调用接口
系统调用和库函数一般就是上下层的关系。
一部分,会影响到硬件的库函数,都在实现的时候封装了系统调用接口。
2.7补充知识:重新理解printf&&scanf
所以,这类会直接影响到硬件的函数,其实上都是通过系统调用接口来实现功能的。
2.8补充知识:语言的跨平台性
这套逻辑是每个操作系统的底层逻辑。
那么在写C语言时,无论是那个平台都可以使用printf和scanf,那是因为函数库在实现的时候就考虑到了,不同操作系统的兼容性,在不同平台下,调用的是不同的系统调用接口。 这就是语言的跨平台性、可移植性。