一、冯诺依曼体系结构(Von Neumann Architecture)
冯・诺依曼体系结构是现代计算机的核心设计思想,由美籍匈牙利科学家冯・诺依曼于 1945 年提出,其核心是 "存储程序、程序控制 ",奠定了当代计算机的硬件架构基础。目前绝大多数的计算机都遵循这种结构。
冯诺依曼体系结构规定计算机由运算器,控制器,存储器,输入设备和输出设备五大部件组成:
【运算器】
• 执行算术运算(加减乘除)、逻辑运算(与 / 或 / 非、比较),是计算机的 "计算核心"。
【控制器】
• 读取存储器中的指令,译码后协调其他部件按顺序执行(如控制运算器运算、存储器读写),是 "指挥中心"。
【存储器】
• 即内存,统一存储程序(指令序列)和数据(运算对象),可随机访问(按地址读取 / 写入)。
【输入设备】
• 将外部信息(如用户操作、数据文件)转换为计算机能识别的二进制信号。
• 常见的输入设备:键盘,磁盘,网卡等。
【输出设备】
• 将计算机处理后的二进制结果转换为人类可理解的形式(如文字、图像、声音)。
• 常见的输出设备:显示器,磁盘,显卡,音响等。

补充:
• 每个硬件都是独立的存在,彼此之间传输数据其实是依赖"总线"来进行的,即各个硬件通过总线链接。总线又分为:系统总线与IO总线。
• 上述的存储器指的是 内存。
二、理解冯诺依曼体系结构
1、为什么不让IO设备直接与CPU交互?
CPU处理数据的速度太快了,输入输出设备的数据传输速度跟不上,就会导致CPU在数据处理时还要等外设(输入输出设备),那效率就大打折扣了。
类似于木桶效应,如果让IO设备于CPU直接交互,此时计算机的性能只能取决于外设。
怎么解决呢?让内存在外设和CPU之间进行一定的缓冲,即先将大量的数据加载到内存,然后让CPU 与内存之间进行数据传输,而内存的读写数据的速度更快,就可以减少CPU等待外设传输数据的时间。
同时,外设向内存传入数据和CPU从内存获取数据可以同时进行,互不干扰,也可以提高效率。
内存虽快,但与CPU还是有一定的差距,所以,又有了介于内存和CPU之间的高速存储区域,如寄存器,L1,L2和L3高速缓存。但是这类的存储数量少,空间小,也更贵。

总之:一切外设(输入输出设备)只和内存打交道。
2、数据传输实例:QQ聊天数据流动
假设你给你的对象发消息(假设有对象),其实就是两台冯诺依曼体系结构在进行数据流动。

三、操作系统的概念
操作系统是计算机软硬件管理的系统软件,是连接用户与硬件的桥梁,也是应用程序运行的基础环境。
它通过统一管理 CPU、内存、外设等资源,提供高效稳定的运行环境,实现用户与计算机的交互,并为应用程序提供标准化接口。
• 内核(进程管理,内存管理,文件管理,驱动管理)
• 其他程序(例如函数库,shell程序等等)

四、为什么要有操作系统?
• 对下,与硬件交互,管理所有的软硬件资源
• 对上,为用户程序(应用程序)提供一个良好的执行环境

不可能让用户去直接访问硬件,这样是不安全的,而且非常不方便。操作系统则可以将软硬件管理起来,更方便我们使用。操作系统其实就是管理软硬件的一种手段。

五、理解操作系统的管理方式
操作系统的核心功能就是管理,那么它是怎么管理软硬件的呢?
这个我们可以类比到学校校长是怎么管理学生的呢,首先校长(操作系统)不可能是每天面对面监督学生;实际上校长就是通过辅导员获取到学生的各个数据,比如学号,成绩,年纪等等。然后对这些数据进行管理,就相当于管理学生了。开除(删除你的学籍),当你挂科太多留级(修改你的数据)...
可是学校不止一个学生,每个学生都有各自的一份数据,所以还要把这些数据组织起来,方便管理。
最终对学生的管理就转化为了对这些数据的增删查改了,即通过数据管理实现对象管理。
对应到操作系统,其实就是先把软硬件核心属性用一个结构体 "打包",因为操作系统的底层是用C语言实现的;然后将所有的软硬件各自的结构体组织起来(可以用链表或其他更高效的数据结构组织),就可以实现统一管理了。
所以一句话就是:先描述,再组织。
后面操作系统对进程的管理利用了先描述,再组织的方式。
六、系统调用与库函数

这个不难理解,假设银行是一个操作系统,金库是硬件,它的作用就是管理每个客户的钱并为客户提供服务。那银行允许你直接访问硬件(金库)嘛,当然不能,这样非常危险。真正的是为你提供不同的窗口,你需要咋样的服务就到对应的窗口。
操作系统也一样,不允许你直接访问硬件。也是为你提供了不同的接口或者库函数:
在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用, 这部分由操作系统提供的接口,叫做系统调用。
系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部 分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开 发。
