1. 冯诺依曼体系结构
1. 存储器指的是内存。磁盘或 U 盘一般对应的是输入输出设备,是外存。 2. 外设: 输入设备:鼠标、键盘、摄像头、话筒、磁盘、网卡… 输出设备:显示器、播放器硬件、磁盘、网卡 3. 中央处理器 CPU: 运算器:对数据进行计算任务(算术运算、逻辑运算) 控制器:对计算机硬件流程进行一定的控制
总结:各硬件都是独立的个体,各个硬件单元必须用'线'连接起来才能发挥作用,线即总线。CPU 和内存交互的总线叫系统总线,内存和外设输入输出设备间的总线叫 IO 总线。
1.1 数据传输
数据是从输入设备输入到存储器(内存)当中,再交由 CPU 进行计算,完后返回传输给存储器,最后由存储器传输到输出设备。
三者的(访问/交互)时间存在巨大差距:
- 纳秒级别:CPU(0.1~10ns)、内存(50–200ns);
- 微秒级别:SSD(10~1000μs)、部分高速外设;
- 毫秒级别:机械硬盘(5~20ms)、低速外设(如鼠标、键盘响应)
为什么不去掉内存,让外设直接与 CPU 进行交互?
认为内存和 CPU 往返交互多了两个过程所以这样并没有提升多少效率,但并非如此。
- 若去掉内存,整机运行数据是串型的,而 CPU 和外设的操作时间太多数量级,导致 CPU 运行数据结束后得花远超计算所需的时间去等待外设数据的传输,从而大大降低了整机的运行效率。
- 若加上内存运行,外设中的数据可预加载到内存中,内存可以在外设加载数据的同时进行其他数据的运算,其他运算完成后就可以处理刚加载的数据,也就是加载数据可以同时进行运算,整机的数据处理是并行结构的,整机效率就以 CPU 的运行效率为主。
总结:
- 存储器(内存)是硬件级别的缓存空间,在冯诺依曼体系结构中处于核心地位。
- 这里的 CPU 能且只能对内存进行读写,不能访问外设(输入或输出设备)。外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。一句话,所有设备都只能直接和内存打交道。
- 这就决定了一个程序要运行,必须先加载到内存中运行;并且运行的结果也会在内存中缓存起来,是否显示取决于是否立马刷新出来,如进度条小程序。
事例帮助理解(忽略网络方面的知识):
- 登录软件与别人聊天:你的机器是冯诺依曼体系结构,首先你的软件会加载到内存中去,发送信息是从你的输入设备键盘上读取信息到内存,再交由 CPU 进行打包信息的计算返回给内存,最后由内存发送信息到输出设备到网卡中(顺便在显示器上打印这样自己能看到),再通过网络将网卡中信息传输给另一台冯诺依曼机器。
- 文件的传输过程:比如在软件上想将文件传输给别人,也是按照冯诺依曼体系结构来传输,与上文聊天的操作基本相同,只是文件发出者的输入设备变成磁盘,接收者的输出设备变成磁盘,总结来看就是有一个磁盘发送到另一个磁盘的过程。
2. 操作系统
概念:任何计算机系统都包含一个基本的程序集合,称为操作系统 (OS)。笼统的理解,操作系统包括:内核(进程管理,内存管理,文件管理,驱动管理),其他程序(例如函数库,shell 程序等等)。这是宏观上的说法,一般微观上仅指的是内核。
是什么:操作系统是一款进行管理的软件。
为什么需要:
- 帮助用户管理好下面的软硬件资源。
- 为了给用户提供一个稳定、高效、安全的运行环境。 二者结合,通过 1 的手段,达成 2 的目的。
系统调用和库函数概念:
- 操作系统内部会有各种数据,可操作系统不相信任何用户。
- 操作系统为保证自己的数据安全,也为了保证给用户能够提供服务,操作系统会以接口的方式给用户提供调用的入口,来获取操作系统内部的数据。这部分由操作系统提供的接口,叫做系统调用。
- 系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。 ps: 所有访问操作系统的行为,都只能通过系统调用完成。所有开发语言都建立在系统调用接口之上。


