冯·诺依曼体系结构:计算机科学的奠基石

ops/2025/1/17 13:25:47/

在这里插入图片描述

文章目录

  • 前言
    • 🎷一、冯诺依曼体系结构(Von Neumann Architecture)
      • 🎸1.1 硬件介绍
        • 🥁1. 输入设备
        • 🥁2. 输出设备
        • 🥁3. 输入输出一体化设备
        • 🥁4. 存储器
        • 🥁5. 中央处理器CPU
        • 🥁6. 总线
      • 🎸1.2 内存的重要性
        • 🥁1. 为什么CPU只能和内存打交道?
        • 🥁2. 为什么程序必须先加载到内存?
    • 🎷二、操作系统(Operating System)
      • 🎸2.1 设计操作系统的目的
        • 🥁1. 什么是驱动程序?
        • 🥁2. 操作系统为什么要进行软硬件资源的管理?
        • 🥁3. 系统调用接口的理解
      • 🎸2.2 操作系统是如何进行管理的?
        • 🥁1. 如何理解管理?
        • 🥁2. 操作系统是如何维护硬件信息的?
  • 结语


前言

冯·诺依曼体系结构是现代计算机科学的基石之一,深刻影响了我们今天所使用的计算机硬件和软件的设计。自20世纪40年代冯·诺依曼提出这一理论以来,它成为了大多数计算机架构的核心理念。通过对冯·诺依曼体系结构的深入探讨,我们可以了解计算机的工作原理以及如何通过硬件和软件的协同作用提升计算效率和性能。本文将从冯·诺依曼体系结构的基本概念入手,详细阐述其核心组成部分及其对计算机技术发展的深远影响。


🎷一、冯诺依曼体系结构(Von Neumann Architecture)

冯·诺依曼体系结构是一种计算机设计模型,由数学家和计算机科学家冯·诺依曼在1945年提出。这一模型奠定了现代计算机体系结构的基础,其核心思想是将程序和数据存储在同一个存储器中,并通过控制单元执行指令。
在这里插入图片描述

🎸1.1 硬件介绍

🥁1. 输入设备

定义

输入设备是用户与计算机之间的桥梁,负责将外界信息(如文本、图像、信号等)转化为计算机能够识别的二进制数据,并传输给计算机处理。

主要功能

  1. 数据采集:从外部接收用户的指令或数据。
  2. 信号转换:将人类可理解的信息(如文字、声音)转化为计算机的二进制数据。
  3. 传递数据:将转换后的数据送入计算机存储或处理单元。

常见输入设备

设备功能
键盘输入字符、命令和控制操作。
鼠标输入位置和动作信息(点击、拖动等)。
扫描仪将纸质图像或文字数字化并输入计算机。
摄像头捕捉图像或视频输入计算机。
麦克风捕捉声音信号并输入(音频输入)。
触摸屏用户直接通过触摸操作进行输入。
传感器设备输入物理信号(如温度、压力)转化为数字数据。
🥁2. 输出设备

定义

输出设备是计算机与用户之间的另一桥梁,负责将计算机处理后的二进制结果转化为用户可理解的形式(如文字、图像、声音)。

主要功能

  1. 数据转换:将计算机内部的二进制数据转化为人类可理解的信息。
  2. 结果展示:将处理结果展示给用户,供进一步使用或分析。
  3. 交互桥梁:作为用户了解计算结果的重要窗口。

常见输出设备

设备功能
显示器以图形或文本形式展示处理结果。
打印机输出物理文本或图片到纸张上。
扬声器输出声音信号(如语音、音乐)。
耳机提供私人化的音频输出。
投影仪将计算机图像输出到投影屏幕上。
触觉反馈设备输出触觉信号(如振动)增强交互体验。
🥁3. 输入输出一体化设备
设备类型输入功能输出功能
触摸屏捕捉用户触摸操作,输入位置信息或手势数据显示图像、文字或操作反馈
VR/AR设备捕捉用户动作、手势或语音作为输入输出视觉、听觉或触觉信号增强交互体验
磁盘接收来自系统的写入请求,将数据存储到磁盘扇区读取存储数据并输出给系统
网络接口卡接收网络数据包作为输入发送网络数据包作为输出
🥁4. 存储器

这里的存储器就是我们平时所说的内存,它是一种硬件级别的缓存空间,在冯诺依曼体系结构中占据核心地位。

🥁5. 中央处理器CPU

中央处理器(CPU)是计算机的核心部件,被称为“计算机的大脑”。它负责解释和执行指令,控制计算机硬件设备并进行算术和逻辑运算。它由运算器和控制器共同组成。在不考虑缓存的情况下,CPU只能对存储器(内存)进行读写,不能访问外设(输入、输出设备)。其中运算器是对用户输入的数据执行计算任务,分为算数运算和逻辑运算,前者就是加减乘除,后者就是真假判断。控制器是对计算过程,即硬件流程进行控制,协调各组件与各单元间的工作。

🥁6. 总线

总线(Bus)是计算机系统中用于在各硬件设备之间传输数据、地址和控制信号的公共通信通道。它是连接CPU、内存、外设等组件的关键部件,确保计算机的各个部分可以协同工作。冯诺依曼体系结构中涉及的五大模块,输入设备、存储器、运算设备、控制器、输出设备,都是独立的个体,有各自独立的功能,这些独立的个体要共同组成一个计算机,就必须要将它们组织联系起来。输入设备需要把数据交给内存,CPU再从内存中读取数据进行运算,将运算结果再写入内存,内存最终再把数据交给输出设备,为了实现数据在五大模块间的流动,就需要把用“线”把各个硬件单元连接起来,这个“线”在计算机中就被称作总线,总线可分为系统总线和IO总线。前者是用于连接CPU和内存,后者是连接内存和外设(输入、输出设备)。有些总线在我们拆开计算机后可以直接看到,有些则是直接集成在硬件电路上。

🎸1.2 内存的重要性

冯诺依曼体系结构要求,数据必须先从输入设备写入存储器,CPU再从存储器读取数据进行运算,CPU不能直接从输入设备读取数据,同样CPU的运算结果也不能直接写入到输出设备,而是要先写入存储器,再从存储器中将结果刷新到输出设备。

🥁1. 为什么CPU只能和内存打交道?

一台计算机中,可以用来存储数据的硬件有多种,例如:寄存器、缓存、内存、硬盘、网盘等,它们按照访问速度的快慢形成了一个存储金字塔,如下图所示:

寄存器的读取速度是纳秒级别,内存的读取速度是微秒级别,外部设备(磁盘)的读取速度是毫秒级别的。由于CPU和外设之间的速度代差比较大,如果将CPU与外设直接进行连接,那么在木桶效应的影响下,会导致计算机整体的运算速度下降。

🥁2. 为什么程序必须先加载到内存?
  1. CPU只能访问内存
    • CPU的工作机制决定了它只能直接读取内存中的指令和数据。
    • 磁盘的速度远低于内存,CPU无法直接从磁盘高效地读取数据。
  2. 内存速度远高于磁盘
    • 内存(如RAM)可以快速响应CPU的请求,满足指令和数据的高速传输需求。
    • 如果程序不加载到内存,而是直接从磁盘读取,计算机会变得非常缓慢。
  3. 提供程序运行所需的环境
    • 内存为程序提供一个隔离的运行环境,包括:
      • 可用的指令空间。
      • 存储运行时变量的空间。
    • 这种隔离性避免了程序之间的相互干扰。
  4. 支持多任务并行运行
    • 多任务操作系统需要将多个程序同时加载到内存中,并为每个程序分配独立的内存空间,以实现任务间的独立性和安全性。
  5. 动态内存分配支持
    • 程序运行期间,可能会动态申请内存(如堆区内存分配),这些都必须通过内存完成。

🎷二、操作系统(Operating System)

操作系统是计算机系统中的核心软件,通过管理好底层的软硬件资源(手段)为用户提供一个良好的执行环境(目的)。它是计算机系统中最重要的基础软件之一,起着承上启下的作用。

概念

任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括下面两个部分:

  • 内核(进程管理、内存管理、文件管理、驱动管理)
  • 其他程序(例如函数库、shell程序等等)

🎸2.1 设计操作系统的目的

  • 与硬件交互,管理所有的软硬件资源。
  • 为用户程序(应用程序)提供良好的执行环境。

计算机的层状结构

在这里插入图片描述

🥁1. 什么是驱动程序?

所有的硬件要想被软件去访问,都必须配上相应的驱动程序,没有驱动程序是无法使用硬件的。举个例子:在电脑刚开机的时候,我们的鼠标,键盘虽然在物理上已经和电脑建立起了连接,但并不是直接就可以使用,往往需要等上几秒,等待的过程就是加载驱动的过程。所有的硬件都有它自己的驱动程序,一般的驱动程序操作系统会自带,也有的需要我们自行下载。

🥁2. 操作系统为什么要进行软硬件资源的管理?

以银行为例,在银行中有保安、保洁阿姨、柜员、行长等几种角色,其中保安负责维护银行秩序,保洁阿姨负责银行的卫生,柜员负责办理业务,行长负责管理银行的各种事务。前三种角色就对应计算机中的各种硬件,行长就对应于计算机中的操作系统。假如行长不履行他的管理职责,那么这家银行就很可能出现,安保措施不到位,柜员办理业务不积极,保洁阿姨不认真打扫卫生等各种问题,反正行长啥也不管,大家都开始摆烂,这样就会导致客户体验变差,大家都不想再到这家银行办理业务。

计算机也一样,假如操作系统不对各种软硬件资源进行管理,那么用户在使用该电脑的时候,就可能出现一会儿蓝屏、一会儿卡顿、一会儿没声音等各种各样的问题,这样一来会导致用户体验变差,最终就没有人想用这台电脑。而电脑作为工具,生产出来的目的就是让用户使用,因此操作系统对软硬件资源的管理,本质上是为了给用户提供一个良好的运行环境,这里的良好包括不限于稳定、高效、安全。

🥁3. 系统调用接口的理解

用户在计算机上的各种操作,最终都会被转换成硬件行为,例如用QQ发送消息,本质上会调用键盘、显示器、网卡等硬件设备;听歌,本质上会调用音响设备。这些硬件都是由操作系统进行调度的,这就意味着,当我们想用计算机干一些事情的时候,必须先经过操作系统。但是我们作为用户是无法直接去和操作系统进行交互的,因为操作系统本质是一款软件,它里面也会有各种信息,它不希望用户直接对这些信息进行随意的访问改动,因此操作系统为了保证自己的数据安全,也为了保证给用户能够提供服务,操作系统以接口的形式给用户提供调用的入口,来获取操作系统内部的数据。就像银行不允许我们直接到金库去拿钱一样,它给我们提供了很多办理业务的窗口,我们只能通过窗口去取钱,操作系统也是这样,我们只能通过系统调用接口去和操作系统进行交互。

操作系统是用C语言写的,所谓的接口本质上就是操作系统提供的一个函数,这个函数是在操作系统的内部具体实现的。既然是函数调用,那就需要有参数和返回值,就像去银行取钱,我们要把自己的身份证、银行卡等证件交给柜员,柜员确认无误后再将钱交给我们,系统调用接口也一样,它会对用户传递的参数进行合理性检查,确认无误后操作系统再去执行相应的操作,这样既保护了操作系统,也为用户提供了服务。

有了这些系统调用接口,就允许用户对底层的软硬件资源进行间接的管理。用户可以通过系统调用接口去要求操作系统调用某个硬件设备,所以就可以基于系统调用接口来设计实现各种各样的软件,例如shell外壳程序,用户可以在上面执行指令,而指令本质上也是可执行程序存储在磁盘上,要执行指令就需要把可执行程序从磁盘加载到内存,把数据从磁盘加载到内存这个动作,本质上是shell外壳程序调用系统接口来实现的。

直接使用系统调用接口是比较困难的,因此有人又对系统调用接口进行了上层封装,例如我们C语言中平时使用的scanf,它可以从键盘中读取数据到内存,本质上是scanf函数中通过系统调用接口去访问硬件。在同一台计算机上可以使用不同的编程语言来开发,这些语言只要是涉及到硬件的,都是通过系统调用接口来实现的,所有的语言都是在系统调用接口之上的。因此,语言可以发生变化,但是系统调用接口是永远不变的。我们把这种基于系统调用接口的开发,称作系统编程。

  • 在开发角度,操作系统对外会变现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用,它是操作系统的一部分。

  • 系统调用在使用上,功能比较基础,对用户的要求也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或开发者进行二次开发。

  • 库函数和系统调用之间是上下层的调用和被调用的关系,库函数在上,系统调用在下。

🎸2.2 操作系统是如何进行管理的?

🥁1. 如何理解管理?

以校园管理为例,在大学里我们就是最典型的被管理者——学生,校长就是最典型的管理者,但是学生基本上毕业了都见不到校长一两面。但是校长在不见学生的情况下,是如何做好管理的呢?其实他只需要得到管理信息,就可以在未来进行管理决策。因此我们可以得出下面的结论:

  • 管理者和被管理者并不需要见面。
  • 管理本质是通过对数据的管理,达到对人的管理。

但是问题来了,管理者和被管理者面都不见,怎么拿到对应的数据呢?

比如在学校中,校长是如何知道学生的各种信息的呢?答案是通过执行者——辅导员,辅导员将学生的信息统计起来发给校长,校长就轻而易举的拿到学生的信息啦。因此我们可以得出下面的结论:

  • 管理者和执行者的本质区别在于,管理者拥有决策权,而执行者是没有决策权的,执行者只能按照管理者的要求去执行任务。

在这里插入图片描述

**总结:**我们就可以将这三种角色一一映射出操作系统的管理行为了

  • 校长——操作系统
  • 辅导员——驱动程序
  • 学生——软硬件资源
🥁2. 操作系统是如何维护硬件信息的?

上面我们知道了管理的本质就是对信息的维护,那操作系统是如何对硬件信息进行维护的呢?首先我们需要定义一个结构体,结构体里面是硬件设备的各种属性,这样以来,一个结构体对象就表示一个硬件,计算机中的所有硬件都可以在操作系统中以结构体对象来描述,接下来需要把这些结构体对象组织起来,一般采用链表或其他高效的数据结构。至此,操作系统对硬件设备的管理就变成了对一个链表的管理。

**结论:**计算机对硬件设备的管理,分为以下两步:

**先描述:**用struct结构体。(因为操作系统使用C语言写的)。

**再组织:**用链表或其他高效的数据结构,将描述硬件设备的结构体对象组织起来。

**注意:**操作系统对硬件设备的管理最终都会转换成对某种数据结构的增删查改。这种管理方式就决定了操作系统中含有大量的数据结构。


结语

冯·诺依曼体系结构的提出,不仅为计算机的设计和发展指明了方向,也为现代信息技术的革命奠定了基础。尽管随着技术的进步,出现了许多与冯·诺依曼架构不同的计算模型,但它依然是当今计算机系统的核心框架之一。了解冯·诺依曼体系结构的基本原理和历史意义,能帮助我们更好地理解计算机技术的发展脉络,并为未来的新技术提供启发。

今天的分享到这里就结束啦!如果觉得文章还不错的话,可以三连支持一下,17的主页还有很多有趣的文章,欢迎小伙伴们前去点评,您的支持就是17前进的动力!

在这里插入图片描述


http://www.ppmy.cn/ops/150814.html

相关文章

【linux性能优化】系统启动参数

grubby -c /boot/grub2/grub.cfg --update-kernelALL --args“raidnoautodetect swiotlb16384 crashkernel16M,low crashkernel512M,high modprobe.blacklistvirtio_net transparent_hugepagenever acpi_force_table_verification” grubby:该工具用于更新和管理GR…

web前端第六次作业---制作网页页面

制作网页页面 代码: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><s…

数据结构学习记录-数据结构概念

1 数据结构&#xff1a; 数据结构是计算机存储&#xff0c;管理数据的方式。 数据必须依据某种逻辑联系组织在一起存储在计算机内 数据结构研究的就是这种数据的存储结构和数据的逻辑结构。 1.1 数据的逻辑结构&#xff1a; 逻辑结构指的是数据本身之间的关系 集合&#x…

zustand 切片模式使用,persist 中间件持久化状态

zustand - npm 安装 npm i zustand 创建切片目录&#xff1a; 创建切片 channelStore.js import { getChannelsAPI } from "/apis/article"; const channelStore (set) > {return {channelList: [],fetchChannelList: async () > {const res await getChanne…

传统数据湖和数据仓库的“中心化瓶颈”

传统数据湖和数据仓库的**“中心化瓶颈”**&#xff0c;主要是由于其架构设计和治理模式的局限性&#xff0c;无法有效应对现代企业中数据规模的快速增长和组织复杂性。以下是具体表现&#xff1a; 1. 单点瓶颈&#xff08;Single Point Bottleneck&#xff09; 传统数据湖/仓…

阀井可燃气体监测仪,开启地下管网安全新篇章-旭华智能

在城市的脉络中&#xff0c;地下管网犹如隐秘的动脉&#xff0c;支撑着现代生活的运转。而在这庞大网络的关键节点上&#xff0c;阀井扮演着不可或缺的角色。然而&#xff0c;由于其密闭性和复杂性&#xff0c;阀井内部一旦发生可燃气体泄漏&#xff0c;将对公共安全构成严重威…

2025年01月16日Github流行趋势

项目名称&#xff1a;tabby 项目地址url&#xff1a;https://github.com/TabbyML/tabby 项目语言&#xff1a;Rust 历史star数&#xff1a;27449 今日star数&#xff1a;1439 项目维护者&#xff1a;wsxiaoys, apps/autofix-ci, icycodes, liangfung, boxbeam 项目简介&#xf…

Spring Cache

Spring Cache缓存框架 ‌Spring Cache‌是Spring框架提供的一种缓存抽象机制&#xff0c;用于简化应用中的缓存操作。它通过将方法的返回值缓存起来&#xff0c;当下次调用同一方法时&#xff0c;如果传入的参数与之前的调用相同&#xff0c;就可以直接从缓存中获取结果&#x…