📙 作者简介 :RO-BERRY
📗 学习方向:致力于C、C++、数据结构、TCP/IP、数据库等等一系列知识
📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持
冯·诺依曼体系结构,也被称为普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。在这种结构中,程序指令和数据在内存中是没有区别的,它们都是内存中的数据。当EIP指针指向哪CPU就加载那段内存中的数据,如果是不正确的指令格式,CPU就会发生错误中断。在现在CPU的保护模式中,每个内存段都有其描述符,这个描述符记录着这个内存段的访问权限(可读,可写,可执行)。这就变相的指定了哪些内存中存储的是指令哪些是数据。指令和数据都可以送到运算器进行运算,即由指令组成的程序是可以修改的。
冯·诺依曼体系结构还包括以下特点:
- 存储器是按地址访问的线性编址的一维结构,每个单元的位数是固定的。
- 指令由操作码和地址组成。操作码指明本指令的操作类型,地址码指明操作数和地址。操作数本身无数据类型的标志,它的数据类型由操作码确定。
- 通过执行指令直接发出控制信号控制计算机的操作。指令在存储器中按其执行顺序存放,由指令计数器指明要执行的指令所在的单元地址。指令计数器只有一个,一般按顺序递增,但执行顺序可按运算结果或当时的外界条件而改变。
- 以运算器为中心,I/O设备与存储器间的数据传送都要经过运算器。
- 数据以二进制表示。冯·诺依曼提出的计算机制造的三个基本原则,即采用二进制逻辑、程序存储执行以及计算机由五个部分组成(运算器、控制器、存储器、输入设备、输出设备),这套理论被称为冯·诺依曼体系结构。

cpu:运算器&&控制器
输入设备:话筒、摄像头、键盘、鼠标、磁盘等
输出设备:声卡、显卡网卡、磁盘、显示器、打印机等
存储器:内存—掉电易失
手机制造商们把CPU、内存、网络通信,乃至摄像头芯片,都封装到一个芯片,然后再嵌入到手机主板上,即SoC,System on a Chip(系统芯片)。但无论是PC/服务器/手机都遵循冯·诺依曼体系结构(Von Neumann architecture),也叫存储程序计算机,意味着“可编程”、“存储”计算机。
计算机由各种门电路组成完成计算程序。一旦需要修改功能,就要重新组装电路。这样的话,计算机就是“不可编程”的,因为程序在计算机硬件层面是“写死”的。最常见的就是老式计算器,电路板设好了加减乘除,做不了任何计算逻辑固定之外的事情。
再看“存储”计算机。程序存储在计算机内存,可通过加载不同程序解决不同问题。
不能存储程序的计算机
早年“Plugboard”这种插线板计算机,在板子上不同的插头或者接口的位置插入线路实现不同功能。这样的计算机“可编程”,但编写好的程序不能存储下来供下一次加载使用,不得不每次要用到和当前不同的“程序”的时候,重新插板子,重新“编程”。
为了效率,有了“存储程序计算机”。冯基于在秘密开发的EDVAC写了一篇报告First Draft of a Report on the EDVAC,描述了一台计算机什么样。
算术逻辑单元(Arithmetic Logic Unit,ALU)
处理器寄存器(Processor Register)
完成各种算术和逻辑运算。
因为它能够完成各种数据的处理或者计算工作,因此也有人把这个叫作数据通路(Datapath)或者运算器。
指令寄存器(Instruction Reigster)
程序计数器(Program Counter)
控制程序的流程,通常就是不同条件下的分支和跳转。
算术逻辑单元和控制器单元组成CPU。
关于冯诺依曼,必须强调几点:
这里的存储器指的是内存
不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)
外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。
一句话,所有设备都只能直接和内存打交道
内存,也称为内存储器,是计算机系统中用于暂时存放CPU中的运算数据以及与硬盘等外部存储器交换的数据的硬件组件。内存的存在主要有以下几个原因:
计算机是一台机器,它按照用户的要求接收信息、存储数据、处理数据,然后再将处理结果输出(文字、图片、音频、视频等)。计算机由硬件和软件组成:
硬件是计算机赖以工作的实体,包括显示器、键盘、鼠标、硬盘、CPU、主板等;
软件会按照用户的要求协调整台计算机的工作,比如 Windows、Linux、Mac OS、Android 等操作系统,以及 Office、QQ、迅雷、微信等应用程序。
操作系统(Operating System,OS)是软件的一部分,它是硬件基础上的第一层软件,是硬件和其它软件沟通的桥梁(或者说接口、中间人、中介等)。
操作系统会控制其他程序运行,管理系统资源,提供最基本的计算功能,如管理及配置内存、决定系统资源供需的优先次序等,同时还提供一些基本的服务程序,例如:
打个比方,操作系统就好像是一个政府,其它软件都会被它管控;操作系统在给其他软件提供各种便利的同时,还会约束其他软件不能为所欲为。
目前流行的服务器和 PC 端操作系统有 Linux、Windows、UNIX 等,手机操作系统有 Android、iOS、Windows Phone(简称 WP),嵌入式操作系统有 Windows CE、PalmOS、eCos、uClinux 等。
我们宏观地看待从用户到底层硬件的交互如下图:

操作系统在计算机系统中扮演着至关重要的角色。它不仅管理着计算机硬件资源的分配和调度,而且为上层应用软件提供了方便的接口,确保了计算机系统的安全和稳定。具体来说:
那么操作系统如何对它们进行管理呢?首先,对一个事务进行管理,我们首先要对它进行建模,即先描述,再组织;先描述,就要先对它的属性进行分析,重要属性的分析就代表这个事务;所以,操作系统要管理某个资源,就要先对它描述,即分析它的属性,对它建模,再进行组织,组织后进行管理。假设操作系统要管理某一个资源,可以将它描述成一个链表,那么就可以看成操作系统对这个链表进行资源管理。
总结,计算机管理硬件/操作系统管理资源