【Linux进程篇】冯诺依曼体系
【Linux进程篇】冯诺依曼体系
目录
- 【Linux进程篇】冯诺依曼体系
- 冯诺依曼体系结构(1/3内容 )
- 操作系统(Operator System)
- 概念
- 设计OS的目的
- 定位
- 如何理解“管理”
- 总结
- 系统调用和库函数的概念
作者:爱写代码的刚子
时间:2023.7.28
前言:本篇博客主要介绍Linux中进程概念之前的冯诺依曼体系,深入了解系统编程。本篇博客将带你深入了解计算机的冯诺依曼体系。
注意:我们在Linux上的编程叫做系统和网络编程,是Linux接口上的,所以Linux上的代码一般不能在VS上运行,除非是纯C/C++代码,因为平台不一样
冯诺依曼体系结构(1/3内容 )
当代的计算机基本是按照冯诺依曼体系构成的

- 计算机硬件组成(五大单元):
a. 存储器是什么?就是内存。磁盘等外部存储的设备叫外存。
b.输入单元(输入设备):包括键盘,摄像头,鼠标,话筒,扫描仪,写板,磁盘,网卡等.
c.输出单元(输出设备):显示器,播放器硬件,打印机,磁盘,网卡等
输入输出设备都叫做外设,有的设备既是输入设备又是输出设备( 比如磁盘,网卡等 )
d.运算器:对输入的数据进行计算任务(算数运算,逻辑运算)
e.控制器:对我们的计算硬件流程进行一定的控制
中央处理器(CPU)含有运算器和控制器等(还有很多寄存器)
硬件和硬件之间并不是毫无章法地组合在一起, 虽然它们都是一个个独立的个体,但 硬件与硬件之间需要有协同的能力,硬件和硬件之间需要组织好,构建一个系统才能对外服务输出计算服务。
- 硬件如何进行连接?
各个硬件单元必须用“线”链接起来,总称为:总线(硬件之间用线链接):
1.系统总线(CPU和内存交互的线 )
2.IO总线(内存和外设,输入输出设备之间的线 )
有的线是暴露的,有的线是集成在主板上的。
- 各个模块之间是如何协作的?

在冯诺依曼体系中,输入设备将数据交到存储器,然后中央处理器在存储器中拿数据(中央处理器不能直接从输入设备拿数据),中央处理器再将数据交给存储器(中央处理器不能直接将数据交给输出设备),存储器再将数据交给输出设备。
- 存储金字塔(存储是分级的):

- 中央处理器能代替存储器直接处理输入输出设备的数据吗?
不能,因为中央处理器和外设速度代差太大了,如果直接处理,那速度就以输入输出设备的速度为主了。 所以内存起到了一个调和的作用(速度适中,存储大小适中),适配硬件层面上CPU和外设之间的速度差,有了内存,整机的速度就以内存为主了。
- 但是可能有人会说:这些动作不是串行的吗,只要是串行,即使有了内存速度也不会快多少吧?
由于CPU的存储空间是有限的,整个计算过程大概率是串行的,但有了存储器,不要以为输入设备将数据交给了存储器,CPU才运算,可能是输入设备它把数据已经预加载到存储器,CPU在内存读取数据时,该数据早已经全部加载到内存了
也就是说CPU的计算和加载同时运行,这样就由串行变成并行,通过对数据的加载调度,可以保证各个硬件之间可以并行跑起来(以上所有工作都是由操作系统来完成的)所以我们可以将存储器看成硬件级别的缓存空间,存储器(内存)在冯诺依曼体系中处于核心地位有了冯诺依曼体系以及存储器,才让计算机价格变低,使计算机得以普及。
- 一个程序要运行,必须先加载到内存中运行,为什么?
因为CPU只在内存中拿数据,而程序是在外设当中的,注定了必须将数据从外设加载到内存,然后才被计算机使用。这是由冯诺依曼体系规定的。所有的软件设计必须遵守对应的硬件结构,硬件是整个计算机的下限和边界,软件是上限和天花板,硬件规定必须加载到内存,软件也必须这么干
- 我们曾经写过的代码发现,数据是可能被缓存起来的,在哪里缓存?
我们在缓存的时候一定是在内存中缓存,缓存的本质就是按照冯诺依曼体系的正常写回流程,把它写到了我们的存储器,只不过我们没有将它进行刷新。
- 输入设备和CPU之间并不是完全没有交互,在数据上不需要交互,但是在信号控制上是需要交互的
有关冯诺依曼需要强调的地方:
- 这里的存储器指的是内存
- 不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)
- 外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。
- 一句话,所有设备都只能直接和内存打交道。
- 对冯诺依曼的理解,不能停留在概念上,要深入到对软件数据流理解上,请解释,从你登录上qq开始和某位朋友聊天开始,数据的流动过程。从你打开窗口,开始给他发消息,到他的到消息之后的数据流动过程。如果是在qq上发送文件呢?(不考虑网络情况)
- 登录QQ软件(将软件加载到内存)
- 将消息放到内存
- CPU将数据进行打包计算,将数据包写回内存,再把数据传给输出设备(网卡、显示器)。
- 网卡作为输入设备接收信息
- 信息传给内存
- CPU对数据进行计算
- 将数据返回给内存
- 内存将数据给输出设备
如果给对方发送文件,输入设备为磁盘(从磁盘上读取)CPU,内存为掉电易失性存储介质
操作系统(Operator System)
概念
任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括:
- 内核(进程管理,内存管理,文件管理,驱动管理)
- 其他程序(例如函数库,shell程序等等)
计算机的层状结构:

设计OS的目的
- 与硬件交互,管理所有的软硬件资源
- 为用户程序(应用程序)提供一个良好的执行环境
定位
- 在整个计算机软硬件架构中,操作系统的定位是:一款纯正的“搞管理”的软件
操作系统其实是一款进行(硬件、软件)管理的软件,为用户提供一个良好(稳定,高效,安全)的运行环境(后者是重点)
如何理解“管理”
- 管理的例子
- 描述被管理对象
- 组织被管理对象
总结
计算机管理硬件
- 描述起来,用struct结构体
- 组织起来,用链表或其他高效的数据结构
系统调用和库函数的概念
操作系统里面会有各种数据。但是操作系统不相信任何用户!
-
- 在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。
-
- 系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。
-
- 操作系统为了保证自己数据安全,也为了保证给用户能够提供服务,操作系统以接口的方式给用户提供调用的入口,来获取操作系统内部的数据
-
- 接口是操作系统提供的用C语言实现的自己内部的函数调用。所有访问操作系统的行为,都只能通过系统调用来完成
所以我们把基于系统接口上的开发叫做系统编程,这也是我们之后的开发——基于系统接口之上。
冯诺依曼体系(1/3的内容)
相关文章:
【Linux进程篇】冯诺依曼体系
【Linux进程篇】冯诺依曼体系 目录 【Linux进程篇】冯诺依曼体系冯诺依曼体系结构(1/3内容 )操作系统(Operator System)概念设计OS的目的定位如何理解“管理”总结系统调用和库函数的概念 作者:爱写代码的刚子 时间:2023.7.28 前言…...
陕西师范大学大学:融合传统与创新的学府之旅
前言 > 📕作者简介:热爱跑步的恒川,致力于C/C、Java、Python等多编程语言,热爱跑步,喜爱音乐的一位博主。 > 📗本文收录于恒川的日常汇报系列,大家有兴趣的可以看一看 > Ὅ…...
HTML <progress> 标签
实例 正在进行的下载: <progress value"22" max"100"></progress> 浏览器支持 元素ChromeIEFirefoxSafariOpera<progress>8.010.016.06.011.0 定义和用法 <progress> 标签标示任务的进度(进程…...
常用测试工具汇总
目录 1.Web页面检查器 2.客户端-代理抓包 3.自动化测试工具 3.1接口自动化测试 3.2webUI自动化测试 3.3客户端UI自动化测试 4.手机模拟器测试工具 5.阿里云测试工具 1.Web页面检查器 F12查看html页面,查看页面大小和加载时间 2.客户端-代理抓包 Charles&a…...
【爬虫逆向案例】某道翻译js逆向—— sign解密
声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢! 【爬虫逆向案例】某道翻译js逆向—— sign解密 1、前言2、步骤3、源码4、号外 1、前言 相信各位小伙伴在写…...
Verilog语法学习——LV9_使用子模块实现三输入数的大小比较
LV9_使用子模块实现三输入数的大小比较 题目来源于牛客网 [牛客网在线编程_Verilog篇_Verilog快速入门 (nowcoder.com)](https://www.nowcoder.com/exam/oj?page1&tabVerilog篇&topicId301) 题目 描述 在数字芯片设计中,通常把完成特定功能且相对独立的…...
YAML+PyYAML笔记 7 | PyYAML源码之yaml.compose_all(),yaml.load(),yaml.load_all()
7 | PyYAML源码之yaml.compose_all,yaml.load,yaml.load_all 1 yaml.compose_all()2 yaml.load()3 yaml.load_all() 1 yaml.compose_all() 源码: 作用:分析流中的所有YAML文档,并产生相应的表示树。解析: # -*- codi…...
(css)列表点击前后样式
(css)列表点击前后样式 效果: html <ul v-show"rightOne" class"one-content"><liv-for"(item,index) in exampleList":key"index"click"searchHandle(item,index)"class"liClass":class&qu…...
Redis服务优化
目录 一.Rde高可用 二.Rdies持久化 2.1持久化的功能 2.2Redis 提供两种方式进行持久化 三.RDB持久化 3.1触发条件 3.1.1手动触发 3.1.2自动触发 3.1.3其他自动触发机制 3.1.4执行流程 3.1.5启动时加载 四.AOF持久化 4.1开启AOF 4.2执行流程 4.2.1命令追加(append) 4.2.2文件写…...
uniAPP 浙政钉 入门手册
uniAPP 如何运行钉钉小程序: 运行钉钉小程序 调试工具导入项目 及 相关平台使用: 专有钉钉 浙政钉 前端 对接流程 常见调试工具,遇到的问题: 采坑记录 下载小程序 IDE 环境配置文件 专有钉钉–环境配置文件...
flask处理文件上传
flask处理文件上传 在Flask框架中,你可以使用request.files对象来处理文件上传。以下是一个简单的文件上传的示例: from flask import Flask, request from werkzeug.utils import secure_filename import osapp Flask(__name__)# 定义文件上传的路径…...
教雅川学缠论04-笔
笔由3部分组成: 顶分型K线底分型,或者 底分型K线顶分型 注意:笔加一起至少7根K线,因为一个底分型至少3根,K先至少1个,顶分型至少3根 下图中红色线段就是一个标准的笔,它始于一个底分型ÿ…...
Unity3d_post process layer 抗锯齿设置
1、 2、 3、 4、 5、...
基于FPGA实现OSD功能
简介 基于FPGA平台实现简单的OSD的功能,对于FPGA实现OSD只能实行简单的画框和文字叠加,如果实现复杂的车道线画框,则没法实现(起码我个人感觉,这个功能没有思路执行)。 FPGA实现OSD功能需要7系列平台,以及VDMA、OSD等Xilinx公司的IP使用(本功能工程采用Vivado2017.4平台…...
Java019-1——面向对象的三大特性
一、封装性 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。(这里说的信息就是类中的属性和方法) 1.1、封装性的体现 想要通过代码体现封装性之前,需要先…...
2023年的深度学习入门指南(22) - 百川大模型13B的运行及量化
2023年的深度学习入门指南(22) - 百川大模型13B的运行及量化 不知道上一讲的大段代码大家看晕了没有。但是如果你仔细看了会发现,其实代码还是不全的。比如分词器我们就没讲。 另外,13B比7B的改进点也没有讲。 再有,对于13B需要多少显存我们…...
无涯教程-jQuery - empty( )方法函数
empty()方法删除所有匹配的子节点。 empty( ) - 语法 selector.empty( ) empty( ) - 示例 以下是一个简单的示例,简单说明了此方法的用法- <html><head><title>The jQuery Example</title><script type"text/javascript"…...
微信小程序实现蓝牙开锁、开门、开关、指令发送成功,但蓝牙设备毫无反应、坑
文章目录 开源htmlJavaScript 开源 wx联系本人获取源码(开源): MJ682517 html <view><view class"p_l_36 p_r_36"><input class"w_100_ h_80 lh_80 ta_c b_2s_eee radius_20" value"{{instructVal}}" type"text" plac…...
微信小程序中使用echarts方法
小程序中使用echarts echarts是一个基于JS的数据可视化图标库,它提供了直观,生动,可交互,可个性定制的数据可视化图表。一般在vue中会使用到,并且官网也详细的说明了如何在vue中使用,但是今天我想来探讨的…...
【面试题】前端中 JS 发起的请求可以暂停吗?
这个问题非常有意思,我一看到就想了很多可以回复的答案,但是评论区太窄,就直接开一篇文章来写了。 审题 JS 发起的请求可以暂停吗?这一句话当中有两个概念需要明确,一是什么样的状态才能称之为 暂停?二是…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...
CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!
本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...
vue3 daterange正则踩坑
<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...
Windows电脑能装鸿蒙吗_Windows电脑体验鸿蒙电脑操作系统教程
鸿蒙电脑版操作系统来了,很多小伙伴想体验鸿蒙电脑版操作系统,可惜,鸿蒙系统并不支持你正在使用的传统的电脑来安装。不过可以通过可以使用华为官方提供的虚拟机,来体验大家心心念念的鸿蒙系统啦!注意:虚拟…...
