【Linux】程序员的易筋经——冯诺依曼体系结构

news2025/1/18 10:05:20

文章目录

  • 👉冯诺伊曼体系结构👈
    • 概念
    • 内存的重要性
  • 👉操作系统(Operating System)👈
    • 概念
    • 目的
    • 定位
    • 特征
    • 发展和分类
    • 运行机制
    • 体系结构

👉冯诺伊曼体系结构👈

概念

下图是描述冯诺依曼体系结构的一张图。
计算机的本质是为了数据的计算处理。所以,需要有设备将数据提供给计算机,那就是输入设备。同样地,也需要有设备存放计算之后的数据或者将数据呈现给使用者,即输出设备
数据从输入设备到存储器,再由存储器到 CPU,CPU处理之后,将结果返回给存储器,存储器再将结果交给输出设备。(控制指令除外。)

我们可以看一下该体系结构下, 各个设备的一些例子。

输入设备:键盘、话筒、摄像头、网卡、磁盘等等。
输出设备:显示器、磁盘、网卡、声卡、音响等等。
存储器:内存。
CPU(中央处理器):运算器、控制器。

在这里插入图片描述

内存的重要性

在理解了各个器件的作用之后,不免疑惑,内存存在的意义是什么呢?为什么不可以让输入设备和输出设备直接和 CPU 相连,这样岂不是方便一些。

首先要了解,一般而言将 输入设备 和 输出设备 称作“外设”
其次,外设一般而言速度会比较慢

但是,CPU 的运行速度很快。所以,如果去掉存储器,只剩下CPU 和外设,这样子当然也是可以运行到,但是根据木桶效应,整个系统的运行速度就以外设的运行速度为主(前面说到,外设运行速度是比较慢的)。所以,为了防止这种现象的发生,所以就有了存储器。
在这里插入图片描述
存储器的运行速度远比外设大得多,但是比不上 CPU 。如果说外设是 毫秒级别,CPU 是纳秒级别,那么存储器就是 微秒级别 。
并且,存储器有一个特点,就是可以临时存储数据。如果 CPU 现在有两个任务A、B要处理,在处理 A 任务的同时,B任务的数据也被加载进内存(存储器),所以CPU执行完 A 任务,就可以立马向内存索要 B 任务的数据。而不是执行完A任务之后,等内存先向外设要数据,CPU再从内存要数据。

所以,有了内存之后,我们就可以对数据做预加载CPU在进行数据计算的时候,根本不需要访问外设,只需要向内存要数据就可以。解决了外设和CPU速度不匹配的问题,这就是存储器存在的意义。

结论:

  • 在数据层面,一般而言 CPU 不直接和外设直接沟通,而是和内存打交道。

到这里,我们就可以理解为什么程序在运行前,必须要被加载到内存。这是因为体系结构决定的,可执行程序是一个文件,在磁盘(外设)里面,程序要被 CPU 运行,而CPU只和内存打交道。

👉操作系统(Operating System)👈

概念

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

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

对于内核,常见的就是windows 、Mac 、Linux 、Unix 等等。

目的

设计操作系统肯定是为了达到某种功能,其目的如下:

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

定位

在整个计算机软硬件架构中,操作系统的定位是: 一款纯正的“搞管理”的软件
那么如何理解“管理”就成了理解操作系统的重中之重。

  • 管理的例子
  • 描述被管理的对象
  • 组织被管理的对象

以一个学校为例。学校里的学生就相当于计算机里面的“资源”。
要描述计算机里面的“资源”,就需要对其进行一定的描述。比如一个大学校园,每一个学生都有自己的“学号”,知道了学号,就知道了这个学生是谁,相当于是学生的唯一标识。当然,“描述”并不只是说记录一个“学号”那么简单,还要记录其他信息。
描述了对象,就要用一定的数据结构对其进行组织。比如学校里的学生信息,可以被存在一个个结构体里面,然后以链表的形式存储(当然也可以是顺序表),要找到某些学生,用一定的算法就可以。计算机里面的资源同理。

如下,操作系统对下进行硬件的管理;对上进行应用软件的管理,和对用户的交互,为上层用户、应用程序提供简单易用的服务。操作系统是一种系统软件。
请添加图片描述

特征

操作系统有如下四个特征,其中,并发和共享是操作系统最基本的两个特征。

  • 并发:指两个或多个事件在同一时间间隔内发生。宏观上是同时发生的,但微观上是交替发生的。
  • 共享
    • 互斥共享:同一个时间段只允许一个进程访问资源(摄像头/麦克风)。
    • 同步共享:允许一个时间段多个进程“同时”(宏观上)访问某些资源(微观上是分时共享),比如硬盘读写。
  • 虚拟:虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。
    • 空分复用技术(虚拟储存技术):物理4GB内存,用户看来远大于4GB。
    • 时分复用技术(虚拟处理机技术):一个CPU看上去是几个CPU,多个程序并发运行。
  • 异步:异步是指,在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,是走走停停(等待资源进程阻塞),以不可预知的速度向前推异步性。

发展和分类

早期计算机是没有操作系统的,经过一代代的优化,才有了如今各种各样的操作系统。其发展历史大概如下(从上到下 —> 从早到晚):

  • 手工操作阶段:输入输出靠纸带打孔,效率极低。
  • 批处理阶段
    • 单道批处理系统:引入了脱机输入/输出技术(磁带),通过监督程序(操作系统雏形)控制作业输入输出。缓解了人机速度矛盾,提高了资源利用率,但是CPU是串行的(处理完一个再处理下一个),大量CPU时间浪费在I/O等待。
    • 多道批处理系统:磁带往内存输入多道程序,并发执行,输入、计算、输出互不干扰。自此操作系统诞生,引入了中断技术。
  • 分时操作系统:计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互。
  • 实时操作系统:优先响应一些紧急任务,某些紧急任务不需时间片排队。
    • 硬实时系统:必需在绝对严格的时间内完成处理。
    • 软实时系统:能接受偶尔违反时间规定。
  • 网络操作系统
  • 分布式操作系统
  • PC操作系统:比如 Windows,Mac OS,Ubuntu 等等。

运行机制

  • 指令
    • 特权指令:只能在核心态下使用。比如:启动I/O 内存清零 设置时钟 允许/禁止终端 停机
    • 非特权指令:核心态、非核心态都可以使用。 比如:控制转移 算数运算 取数指令 访管指令
  • 处理器状态(用程序状态寄存器PSW中某标志位来标识,0为用户态,1为核心态)
    • 用户态:运行用户程序,只能使用非特权指令。
    • 核心态:运行操作系统程序。该状态下可以使用任何指令(唯一例外:防管指令,该指令执行后进入核心态)。
  • 程序
    • 应用程序:运行在用户态。
    • 内核程序:系统管理者,运行在核心态。

体系结构

  • 大内核:将操作系统的主要功能模块都作为系统内核,运行在核心态高性能,但是内核代码庞大难以维护
  • 微内核:只把基本概念保留在内核功能少,功能清晰方便维护,但是需要频繁的在核心态和用户态之间切换,性能低。

请添加图片描述
对于冯诺依曼体系结构和操作系统的简单理解就到这里啦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/378610.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

6天重建一遍中国台湾省,三维模型还可以这样做!

说起三维模型,大家脑海中显现的大多是一个可通过电子屏幕进行全方位展示的立体物体。一般来说,所显示的物体既可以是现实世界的实体,也可以是通过想象所创作的虚构物体。 而实景三维正是镜像作用于现实世界真实化表达的新兴技术,是…

Java中的过滤器和拦截器

Java中的过滤器和拦截器 一.应用场景 拦截器应用场景 拦截器本质上是面向切面编程(AOP),符合横切关注点的功能都可以放在拦截器中来实现,主要的应用场景包括: 登录验证,判断用户是否登录。权限验证&…

JSP的分页

分页在读取数据库里的数据需要用,在以后数据库肯定还会有很多数据,一个页面装不下,所以需要分页功能。数据库查询的分页语句是“SELECT * FROM emp LIMIT 0, 5;”这里0是指起始行,5是查询5行,第二页起始行就是5&#x…

QT 实现右键菜单

有时我们希望在窗口中右键弹出菜单,这里来介绍一下QT中怎么实现. .h 中添加事件相应函数声明和变量定义: private:// 菜单事件void contextMenuEvent(QContextMenuEvent* event) override;void initMenu();private:QMenu* m_pMenu nullptr;在构造函数中…

聊聊如何避免多个jar通过maven打包成一个jar,多个同名配置文件发生覆盖问题

前言 不知道大家在开发的过程中,有没有遇到这种场景,外部的项目想访问内部nexus私仓的jar,因为私仓不对外开放,导致外部的项目没法下载到私仓的jar,导致项目因缺少jar而无法运行。 通常遇到这种场景,常用…

HUN工训中心:开关电路和按键信号抖动

工训中心的牛马实验 1.实验目的: 1) 认识开关电路,掌握按键状态判别、开关电路中逻辑电平测量、逻辑值和逻辑函数电路。 2) 掌握按键信号抖动简单处理方法。 3) 实现按键计数电路。 2.实验资源: HBE硬件基础电路实验箱、示波器、万用表…

Java学习--网络编程

1. 网络编程入门 1.1 网络编程概述 计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统…

【GIT】git不同仓库设置不同用户名和邮箱

随着业务的拓展,工作中,我们除了要在公司的git库提交代码,还可能在阿里云效codeup、gitcode等上提交代码。 之前git安装时使用的是全局名称,导致所有的git提交都使用了相同的用户名和邮箱。 查看全局用户名和邮箱 $ git config -…

论文调研——23.2.28

文章目录Diffusion Models: A Comprehensive Survey of Methods and ApplicationsADVERSARIAL TRAINING METHODS FOR SEMI-SUPERVISED TEXT CLASSIFICATIONHuman Emotion Knowledge Representation Emerges in LargeAPI 调优上: Decoder Tuning: Efficient Language…

记录一下atlas200模块无法正常通过别的设备SSH连接192.168.1.2问题笔记粗心者用

atlas200远程登录发现登录不了 串口打印内核信息正常显示,如下几个错误记录分别在windows上和ubuntu上分别做了测试,之前都是 安装完 kex_exchange_identification: read: Connection reset 华为atlas200模块 登录显示这个目前没有解决,应该…

220V转5V非隔离2W电源--超低成本

目录 详情 产品特性和优势 设计电路 MP150芯片资料 详情 MP150 是一款原边调节器,可以在无光耦合器的条件下提供精确的恒压(CV)调节。MP150 支持降压、升降压、升压和反激拓扑。它内部集成了 500V MOSFET,可简化结构&#xff0…

HUN工训中心:三位数码管扫描显示实验报告

工训中心牛马实验 1.1操作说明及现象描述 根据老师发的安装包下载和安装好Quartus II软件。在电脑安装USB硬件驱动,再与PC接口连接好,可以打开任务管理器查看是否安装好。之后打开Quartus II软件,按照菜单Tool->programmer->add file…

6大类,不同类型单板布线策略

PCB布线策略 一、类型一主要特征如下 严格的长度规则、严格的串扰规则、拓扑规则、差分规则、电源地规则等。 二、关键网络的处理:总线定义Class 要求满足一定的拓扑结构、stub及其长度(时域)约束条件 图-1 平衡菊花链和中间驱动菊花链图 设置虚拟管脚来控制拓扑…

张驰咨询:六西格玛常见问题解答

以下是张驰咨询对一些关于六西格玛常见问题的解答: 1、六西格玛是什么? 六西格玛是一种改善企业质量流程管理的技术,以“零缺陷”的完美商业追求,带动质量大幅提高、成本大幅度降低,最终实现企业财务成效的提升与企业…

SpringCloud系列知识快速复习 -- part 1(SpringCloud基础知识,Docker,RabbitMQ)

SpringCloud知识快速复习SpringCloud基础知识微服务特点SpringCloud常用组件服务拆分和提供者与消费者概念Eureka注册中心原理Ribbon负载均衡原理负载均衡策略饥饿加载Nacos注册中心服务分级存储模型权重配置环境隔离Nacos与Eureka的区别Nacos配置管理拉取配置流程配置热更新配…

大家挤破脑袋都想进的腾讯,你为什么想要辞职?

前几天,我在网上看到一个故事。 故事的主人翁是19届的校招生,目前入职腾讯,工作了一个月。这一个月给他的感受是大量的写测试用例,感觉自己写测试用例的能力熟练了不少,测试技能倒是没有多大的提高,真正需…

一文解决Python所有报错

前言 Python是一种强大的编程语言,但是它也有一些报错,这些报错可能会让你感到困惑。本文将介绍如何解决Python中的常见报错。 首先,让我们来看看Python中最常见的报错:SyntaxError。这种报错表明你的代码中有语法错误&#xff0c…

Javaweb增删改查之【查】

Javaweb增删改查之【查】1.前端页面2.java链接数据库——集成mybatis2.1 建立层2.2 实体层entity2.3 mapper(dao层)2.4 mybatis配置文件2.5工具层util3.后台功能3.1servlet前几天跟着b站up主学javaweb登录,突然还是觉得这几年学了c是真的挺好…

对象扩展、函数的扩展、Symbol、Iterator 迭代器、Set结构、Map 数据结构——ES6+

目录 一、对象扩展 二、函数的扩展 三、Symbol 四、Iterator 迭代器 五、Set结构 六、Map 数据结构 一、对象扩展 1. 对象简写 对于对象属性,属性名与属性值对应的变量相同时,可简写为属性名 对于对象方法,将 :function…

优化基于axios接口管理的骚操作

优化基于axios接口管理的骚操作! 本文针对中大型的后台项目的接口模块优化,在不影响项目正常运行的前提下,增量更新。 强化功能 1.接口文件写法简化(接口模块半自动化生成) 2.任务调度、Loading调度(接口层…