【Linux进程篇】冯诺依曼体系

news2024/9/28 5:28:20

【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上发送文件呢?(不考虑网络情况)
  1. 登录QQ软件(将软件加载到内存)
  2. 将消息放到内存
  3. CPU将数据进行打包计算,将数据包写回内存,再把数据传给输出设备(网卡、显示器)。
  4. 网卡作为输入设备接收信息
  5. 信息传给内存
  6. CPU对数据进行计算
  7. 将数据返回给内存
  8. 内存将数据给输出设备

如果给对方发送文件,输入设备为磁盘(从磁盘上读取)CPU,内存为掉电易失性存储介质

操作系统(Operator System)

概念

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

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

计算机的层状结构:
在这里插入图片描述

设计OS的目的

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

定位

  • 在整个计算机软硬件架构中,操作系统的定位是:一款纯正的“搞管理”的软件

操作系统其实是一款进行(硬件、软件)管理的软件,为用户提供一个良好(稳定,高效,安全)的运行环境(后者是重点)

如何理解“管理”

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

总结

计算机管理硬件

  1. 描述起来,用struct结构体
  2. 组织起来,用链表或其他高效的数据结构

系统调用和库函数的概念

操作系统里面会有各种数据。但是操作系统不相信任何用户!

    • 在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。
    • 系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。
    • 操作系统为了保证自己数据安全,也为了保证给用户能够提供服务,操作系统以接口的方式给用户提供调用的入口,来获取操作系统内部的数据
    • 接口是操作系统提供的用C语言实现的自己内部的函数调用。所有访问操作系统的行为,都只能通过系统调用来完成

所以我们把基于系统接口上的开发叫做系统编程,这也是我们之后的开发——基于系统接口之上。


冯诺依曼体系(1/3的内容)

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

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

相关文章

EMO:重新思考高效的基于注意力的移动块模型

文章目录 摘要1、介绍2、方法论:归纳法和演绎法2.1、通用效率模型标准2.2、元移动块2.3、微设计:倒置残余移动块2.4、面向密集预测的EMO宏观设计 3、实验3.1、图像分类3.2、下游任务3.3、额外的消融和解释分析 4、相关工作5、结束语及未来工作 摘要 论文链接:https…

【ray】 分布式计算的搭建和调用以及项目实践

目录 0 RAY相关资料1 ray的简要介绍2 ray的搭建3 ray的调用4 实践代码分析4.1 ray的配置4.2 代码中使用ray 0 RAY相关资料 ray 官网:https://docs.ray.io/en/latest/index.html Ray分布式计算框架详解:https://zhuanlan.zhihu.com/p/460600694 b站视频…

OpenLayers入门,地图全图显示经纬度网格标记线

专栏目录: OpenLayers入门教程汇总目录 前言 使用OpenLayers实现地图全图显示经纬度网格标记线。方便查看可视区域所处的经纬度区间。 二、依赖和使用 "ol": "^6.15.1"使用npm安装依赖npm install ol@6.15.1使用Yarn安装依赖yarn add olvue中如何使用…

MODBUS-TCP转Ethernet IP 网关连接空压机 配置案例

本案例是工业现场应用捷米特JM-EIP-TCP的Ethernet/IP转Modbus-TCP网关连接欧姆龙PLC与空压机的配置案例。使用设备:欧姆龙PLC,捷米特JM-EIP-TCP网关, ETHERNET/IP 的电气连接 ETHERNET/IP 采用标准的 T568B 接法,支持直连和交叉接…

github Recv failure: Connection reset by peer

Recv failure: Connection reset by peer 背景处理ping一下github网页访问一下github项目git配置git ssh配置再次尝试拉取 疑惑点待研究参考 背景 晚上敲着代码准备提交,执行git pull,报错Recv failure: Connection reset by peer。看着这报错我陷入了沉…

Spring Cloud Eureka 服务注册和服务发现超详细(附加--源码实现案例--及实现逻辑图)

文章目录 EurekaEureka组件可以实现哪些功能什么是CAP原则?服务注册代码实战搭建注册中心服务A搭建服务B搭建启动服务启动注册中心启动服务A启动服务B 结束语 Eureka 这篇文章先讲述一下Eureka的应用场景、代码实现案例,多个服务模块注册到Euraka中&…

QT多线程的示例

想象现在有一个场景,一共有三个线程线程A需要产生1000以内的随机数,线程B需要对这些随机数进行冒泡排序,线程C需要对这些随机数进行快速排序,主线程用来显示线程A的随机数,并且显示线程A和线程B的处理结果,…

机器学习 | Python实现NARX模型预测控制

机器学习 | Python实现NARX模型预测控制 目录 机器学习 | Python实现NARX模型预测控制效果一览基本介绍研究内容程序设计参考资料效果一览 基本介绍 机器学习 | Python实现NARX模型预测控制 研究内容 贝叶斯黑盒模型预测控制,基于具有外源输入的非线性自回归模型的预期自由能最…

后端通过CorsRegistry对象配置了全局跨域,但是前端仍然报CORS跨域错误

后端通过CorsRegistry配置了全局跨域,但是前端仍然报CORS跨域错误 问题背景 在实现登录功能时,我先是通过CorsRegistry配置了全局跨域,然后配置了一个登录拦截器后前端就报错CORS跨域错误 问题原因 前置知识 首先我们来了解一下什么是跨域错误…

hw技战法整理参考

目录 IP溯源反制 账户安全策略及预警 蜜罐部署联动方案

【42万字,2902页】全网最全《零基础网络安全/黑客自学笔记》,爆肝分享!

这次为大家带来一份零基础也能学会的《全网最全黑客自学笔记》,“全网最全”可不是吹牛的,整个笔记一共42万字,2902页,95个章节。 这份笔记涵盖了网络安全导论、渗透测试基础、网络基础、Linux操作系统基础、web安全等等入门知识…

基于应用值迭代的马尔可夫决策过程(MDP)的策略的机器人研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【SSM】问题集锦(持续更新)

目录 1.错误500:Servlet.init() for servlet DispatcherServlet threw exception Error creating bean with name ‘sqlSessionFactory’ defined in class path reso 主要解决方法可参考这篇文章 我自己的问题是因为spring上下文应用程序关联问题 2.org.apache.c…

带你了解什么是XxxxMapper.xml-SQL 映射文件

文章目录 XxxxMapper.xml-SQL 映射文件官方文档XxxMapper.xml-基本介绍SQL 映射文件常用的几个顶级元素(按照应被定义的顺序列出): XxxMapper.xml-详细说明新建Module xml-mapper代码准备基本使用parameterType(输入参数类型)parameterType(输…

新产品:Stimulsoft Forms 2023.3.1 Crack

Stimulsoft Forms 是一个用于交互式收集和处理用户数据的组件。表单工具可以轻松集成到您的项目或应用程序中,具有直观且用户友好的界面,并允许您创建丰富的表单模板。Stimulsoft Forms 是应用程序中与用户交互的新水平 什么是 Stimulsoft Forms&#xf…

[JAVAee]文件操作-IO

本文章讲述了通过java对文件进行IO操作 IO:input/output,输入/输出. 建议配合文章末尾实例食用 目录 文件 文件的管理 文件的路径 文件的分类 文件系统的操作 File类的构造方法 File的常用方法 文件内容的读写 FileInputStream读取文件 构造方法 常用方法 Scan…

VLAN原理(Virtual LAN 虚拟局域网)

VLAN(Virtual LAN 虚拟局域网) 1、广播/广播域 2、广播的危害:增加网络/终端负担,传播病毒, 3、如何控制广播?? ​ 控制广播隔离广播域 ​ 路由器物理隔离广播 ​ 路由器隔离广播缺点&…

BLE配对和绑定

参考:一篇文章带你解读蓝牙配对绑定 参考:BLE安全之SM剖析(1) 参考:BLE安全之SM剖析(2) 参考:BLE安全之SM剖析(3) 目录 前言基本概念解读Paring(配对)Bonding(绑定)STK短期秘钥、LTK长期秘钥等 …

通过案例实战详解elasticsearch自定义打分function_score的使用

前言 elasticsearch给我们提供了很强大的搜索功能,但是有时候仅仅只用相关度打分是不够的,所以elasticsearch给我们提供了自定义打分函数function_score,本文结合简单案例详解function_score的使用方法,关于function-score-query…

const对象不能调用其他非const成员函数,const成员函数不能调用其他非const成员,

在C语言中我们知道const关键字修饰的变量具有常量属性,简称常变量。即修饰后的变量不能再次修改,而C中是兼容C语言的,同样具备该特性,但C引入了引用(&)所以const的用法就更多了。 我们知道引用的对象必…