【Linux】系统初识之冯诺依曼体系结构与操作系统
👀樊梓慕:个人主页
🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C++》《Linux》
🌝每一个不曾起舞的日子,都是对生命的辜负
目录
前言
1.冯诺依曼体系结构
2.操作系统(OS)
(1)用户到操作系统再到底层是如何组织的?
(2)计算机是如何管理软硬件资源的?
前言
本篇文章主要与大家说明硬件层面与软件层面上计算机运行的一些机制。
- 硬件上主要带大家认识冯诺依曼体系结构
- 软件层面对应操作系统的相关概念
本篇文章也是为后面学习系统其他知识打基础,有关系统的学习大家需要翻越三座大山:进程周边、文件周边以及线程周边。
欢迎大家📂收藏📂以便未来做题时可以快速找到思路,巧妙的方法可以事半功倍。
=========================================================================
GITEE相关代码:🌟fanfei_c的仓库🌟
=========================================================================
1.冯诺依曼体系结构
我们知道计算机的产生是为了解决人的问题,也就意味着计算机要有人机交互的功能,即输入与输出,人类发明计算机其实就如上面图片所表达的意思一样:人输入一个数据,经过计算机的处理,让我们得到一个结果数据,即输出。
计算机通过输入设备得到数据,数据在计算机当中进行一系列的算术运算和逻辑运算后,并且经过控制(何时从输入设备获取数据,何时输出数据到输出设备等),最终通过输出设备进行输出。
算逻运算和控制的过程是由中央处理器完成的,也就是我们俗称的CPU。
计算机的诞生是为了计算庞大的数据,但是对于数据的传输不同的存储器又具备不同的效率,数据的传输过程,即拷贝的整体速度,是决定计算机效率的重要指标,在未提出冯诺依曼体系结构之前,我们往往需要造价高昂的寄存器来组成整个计算机,来达到高速运算的目的。
但是,现在的计算机我们发现早已进入千家万户,已然不是曾经的“奢侈品”,这一切就要归功于冯诺依曼体系结构,如今的计算机大部分都遵守冯诺依曼体系结构。
冯诺依曼体系结构是如何降低成本的呢?
中央处理器显然是需要高速计算的,所以中央处理器内部就是由各种寄存器构成,所以CPU的价格一般很高。
当然寄存器不仅存在于CPU中,其他设备中也可能存在寄存器。
来看下物理存储金字塔:
可以总结为:
- 靠近CPU的存储单元(寄存器),效率高,造价贵,单体容量小;
- 远离CPU的存储单元(服务器),效率低,造价低,单体容量大;
输入设备与输出设备对于数据的处理很慢,如果直接与CPU相连,根据木桶效应,整个计算机的运行速度会被输入输出设备所拖累,那就不让输入输出设备与CPU直接交互,冯诺依曼引入了内存的概念,在CPU与输入输出设备之间设计了一个存储器,即内存。
内存有个特点就是,比输入设备和输出设备要快很多,但是比CPU又要慢。现在内存就处于慢设备和快设备之间,是一个不快也不慢的设备,能够在该体系结构当中就起到一个缓冲的作用。
从此以后,CPU只能对内存进行读写,不能直接访问外设。
外设要输入或输出数据时,也只能写入内存或者从内存中读取。
总结一下现在整个数据流动的过程
用户输入的数据先放到内存当中,CPU读取数据的时候就直接从内存当中读取,CPU处理完数据后又写回内存当中,然后内存再将数据输出到输出设备当中,最后由输出设备进行输出显示。
疑问:数据的流动过程中多了一个内存,不应该更慢了么?
局部性原理:根据统计学原理,当一个数据正在被访问时,那么下一次有很大可能会访问其周围的数据。所以当CPU需要获取某一行数据时,内存可以将该行数据之后的数据一同加载进来,而CPU处理数据和内存加载数据是可以同时进行的,这样下次CPU就可以直接从内存当中获取数据。
输出数据的时候也一样,CPU处理完数据后直接将数据放到内存当中,当输出设备需要时再在内存当中获取即可,这也就有了我们平常所说的缓冲区的概念。
例如,缓冲区满了才将数据打印到屏幕上,使用fflush函数将缓冲区当中的数据直接输出,都是将内存当中的数据直接拿到输出设备当中进行显示输出。
2.操作系统(OS)
操作系统是进行软硬件资源管理的软件。
当我们开机时,计算机第一个加载的软件就是操作系统。
我们可以将操作系统抽象理解为管理者。
那在现实生活中一个好的管理者必须具有如下素质:管理好下属,服务好客户。
映射到操作系统:
- 对下管理好软硬件资源
- 对上提供良好(稳定、高效、安全)的运行环境
(1)用户到操作系统再到底层是如何组织的?
首先我们从操作系统层向下研究:
如图,很显然校长不会直接对你进行管理,一般在你和校长之间还有一层甚至几层的次级管理者,比如辅导员。
那映射到计算机也是同样的:
在操作系统与底层硬件之间存在着驱动程序,由驱动程序来控制硬件的一些操作,并且驱动程序一般都是由硬件的生产商提供,这样在硬件的操作方式改变时,我们只需要对驱动程序进行相应的更改,而无需对操作系统进行重新设计。
然后我们向上研究:
在用户与操作系统之间又存在怎样的设计呢?
首先用户一定是好人么,操作系统我们可以抽象为金库,当用户需要取钱时,我们可以让用户自己到金库中取么,当然不能,群众中有坏人怎么办?
所以操作系统为了保护自己,隔绝用户的危险操作,设计出了系统调用接口。
但普通用户怎么知道如何使用这些接口呢,因为要使用系统调用前提条件是你得对系统有一定了解。
所以在系统调用接口之上又构建出了一批库,例如libc和libc++,我们可以称之为用户操作接口。
实际上在语言级别上使用的各种库,就是封装了系统调用接口的,我们就是通过调用这些库当中的各种函数(例如printf和scanf)进行各种程序的编写。
(2)计算机是如何管理软硬件资源的?
首先什么是管理?
校长管理你需要和你见面么?
答案当然是不需要,因为管理的本质不是对人进行管理,而是对信息的管理。
描述
那你的信息如何用计算机语言来描述呢?
在C语言中,我们一般使用结构体。
在C++、JAVA这种面向对象的高级语言中,我们使用类和对象。
组织
那当学生数量很多的时候,校长就需要将这些学生用某种数据结构(STL容器)组织起来。
- 所以管理我们可以总结为:先描述,再组织。
所有的计算机语言都遵循这一规则。
那计算机是如何管理软硬件资源的呢?
我相信大家肯定已经猜到了,一样的道理,我们可以把软硬件资源也描述为一个结构体或者类和对象,然后利用某种数据结构将他们组织起来,就在计算机层面上实现了对软硬件资源的管理。
=========================================================================
如果你对该系列文章有兴趣的话,欢迎持续关注博主动态,博主会持续输出优质内容
🍎博主很需要大家的支持,你的支持是我创作的不竭动力🍎
🌟~ 点赞收藏+关注 ~🌟
=========================================================================
相关文章:

【Linux】系统初识之冯诺依曼体系结构与操作系统
👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.冯诺依曼体系结构 2.操作…...

【PyTorch】模型训练过程优化分析
文章目录 1. 模型训练过程划分1.1. 定义过程1.1.1. 全局参数设置1.1.2. 模型定义 1.2. 数据集加载过程1.2.1. Dataset类:创建数据集1.2.2. Dataloader类:加载数据集 1.3. 训练循环 2. 模型训练过程优化的总体思路2.1. 提升数据从硬盘转移到CPU内存的效率…...

GO -- 设计模式
整篇文档参考了各大神对设计模式的总结,然后整理的一篇关于使用GO来实现设计模式的文档,如有问题,请批评指正! 目录 设计模式的优点 设计模式的六大原则 设计模式,即Design Patterns,是指在软件设计…...

angular状态管理方案(ngrx)
完全基于redux的ngrx方案,我们看看在angular中如何实现。通过一个简单的计数器例子梳理下整个流程 一 安装 :npm i ngrx/store 这里特别要注意一点:安装 ngrx/store的时候会出现和angular版本不一致的问题 所以检查一下angular/core的版本…...

EPICS modbus 模块数字量读写练习
本文使用modbus slave软件模拟一个受控的modbus设备,此模拟设备提供如下功能: 1、线圈组1,8个线圈,起始地址为0,数量为8,软件设置如下(功能码1),用于测试功能码5,一次写一个线圈&am…...

万界星空科技低代码平台:搭建MES系统的优势
低代码MES系统:制造业数字化转型的捷径 随着制造业的数字化转型,企业对生产管理系统的需求逐渐提高。传统的MES系统实施过程复杂、成本高昂,已经无法满足现代企业的快速发展需求。而低代码搭建MES系统的出现,为企业提供了一种高…...

【ArcGIS微课1000例】0078:创建点、线、面数据的最小几何边界
本实例为专栏系统文章:讲述在ArcMap10.6中创建点数据最小几何边界(范围),配套案例数据,持续同步更新! 文章目录 一、工具介绍二、实战演练三、注意事项一、工具介绍 创建包含若干面的要素类,用以表示封闭单个输入要素或成组的输入要素指定的最小边界几何。 工具位于:数…...

五花八门客户问题(BUG) - 数据库索引损坏
问题 曾经有个客户问题,让我们开发不知所措了很久。简单点说就是客户的index周期性的损坏,即使全部重建后经历大约1~2周数据update后也会坏掉。导致的直接结果:select出来的数据不对。问题很严重。 直接看损坏的index文件看不出什么蛛丝马迹…...

mysql select count 非常慢
MySQL select count 性能分析 问题:mysql 在count时发现非常慢 select count(*) from xxx; 无论执行多少次,查询速度基本稳定在10-12秒之间 环境说明 windows11 x64SSD硬盘MySQL8.0.35数据库引擎为InnoDB数据行数不到3万行,但是数据量将近…...

Tomcat管理功能使用
前言 Tomcat管理功能用于对Tomcat自身以及部署在Tomcat上的应用进行管理的web应用。在默认情况下是处于禁用状态的。如果需要开启这个功能,需要配置管理用户,即配置tomcat-users.xml文件。 !!!注意:测试功…...

kyuubi整合flink yarn session mode
目录 概述配置flink 配置kyuubi 配置kyuubi-defaults.confkyuubi-env.shhive 验证启动kyuubibeeline 连接使用hive catlogsql测试 结束 概述 flink 版本 1.17.1、kyuubi 1.8.0、hive 3.1.3、paimon 0.5 整合过程中,需要注意对应的版本。 注意以上版本 配置 ky…...

err_connect_length_mismatch错误
原因: 官网解释为:err_content_length_mismatch:错误的内容长度不匹配(请求的Heather 里content-length长度与返回的content-length不一致) 问题截图: 分析: 由截图可见,静态资源加载错误,提示err_content_length_mismatch,经排查,网络页签…...

dva的学习总结
公司的项目源码用的是react和dva,所以我必须抓紧时间学习一下dva了,一天时间,看看我学到了什么(dva官网DvaJS)[这是很久之前就打算写的了,一直没时间,一直存着草稿,今天发出来吧] 1…...

Docker部署.NET6项目
Docker的三大核心概念 1、docker仓库(repository) docker仓库(repository)类似于代码库,是docker集中存放镜像的场所。实际上,注册服务器是存放仓库的地方,其上往往存放着很多仓库。每个仓库集…...

Pandas 打开有密码的Excel
安装包 pip isntall msoffcrypto-tool msoffcrypto库的简单介绍 msoffcrypto提供了对Microsoft Office文件进行加密和解密的功能。它支持对Word、Excel和PowerPoint文件进行加密和解密操作。 msoffcrypto的原理是利用Microsoft Office文件的加密算法对文件进行加密和解密。它能…...

CCF 202104-2:邻域均值--C++
#include<iostream> #include<bits/stdc.h>using namespace std;int A[601][601]; int n;//长宽都为n个像素double FindNeighborSum(int i,int j,int r,int A[][601]) {int sum0;//像素和 int gs0;//领域 中的像素个数 for(int xi-r;x<ir;x)//找到每一个领域像素…...

基于JAVA+SpringBoot+Vue的前后端分离的医院信息智能化HIS系统
✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 随着科技的不断发展&a…...

Kotlin Flow 操作符
前言 Kotlin 拥有函数式编程的能力,使用Kotlin开发,可以简化开发代码,层次清晰,利于阅读。 然而Kotlin拥有操作符很多,其中就包括了flow。Kotlin Flow 如此受欢迎大部分归功于其丰富、简洁的操作符,巧妙使…...

HarmonyOS4.0从零开始的开发教程08构建列表页面
HarmonyOS(六)构建列表页面 List组件和Grid组件的使用 简介 在我们常用的手机应用中,经常会见到一些数据列表,如设置页面、通讯录、商品列表等。下图中两个页面都包含列表,“首页”页面中包含两个网格布局ÿ…...

分布式环境下的session 共享-基于spring-session组件和Redis实现
1、问题概述 不是所有的项目都是单机模式的,当一个项目服务的局域比较广,用户体量比较大,数据量较大的时候,我们都会将项目部署到多台服务器上,这些个服务器都是分布在不同的区域,这样实现了项目的负载和并…...

docker基本管理和相关概念
docker是什么? docker是开源的应用容器引擎。基于go语言开发的。运行在Linux系统当中开源轻量级的“虚拟机”。 docker的容器技术可以在一台主机上轻松的为任何应用创建一个轻量级的,可移植的,自给自足的容器。 docker的宿主机是Linux系统…...

Linix服务器添加dns解析
Linix开通互联网域名地址出现,如下错误: 需要访问的服务器上添加dns解析 vim /etc/sysconfig/network-scripts/ifcfg-ens192 添加如下配置: DNS1202.96.134.13 重启网卡: systemctl restart network 注意如果是docker服务部署…...

llama.cpp部署(windows)
一、下载源码和模型 下载源码和模型 # 下载源码 git clone https://github.com/ggerganov/llama.cpp.git# 下载llama-7b模型 git clone https://www.modelscope.cn/skyline2006/llama-7b.git查看cmake版本: D:\pyworkspace\llama_cpp\llama.cpp\build>cmake --…...

STM32CubeMX+micro_ros_stm32cubemx_utils库
GitHub - micro-ROS/micro_ros_stm32cubemx_utils at humble 这个就是下载这个代码库以后的文件结构。其中sample_project.ioc就是平时STM32CubeMX的工程文件。类似于visual studio里面的项目文件 。打开以后是这个样子的: 可以看到跟本文后面的那些配置是几乎一模一…...

C语言有哪些预处理操作?
C语言的预处理是在编译之前对源代码进行处理的阶段,它主要由预处理器完成。预处理器是一个独立的程序,它负责对源代码进行一些文本替换和处理,生成经过预处理的代码。以下是C语言预处理的一些重要特性: 1,头文件包含 #…...

数据结构算法-希尔排序算法
引言 在一个普通的下午,小明和小森决定一起玩“谁是老板”的扑克牌游戏。这次他们玩的可不仅仅是娱乐,更是要用扑克牌来决定谁是真正的“大老板”。 然而,小明的牌就像刚从乱麻中取出来的那样,毫无头绪。小森的牌也像是被小丑掷…...

php使用vue.js实现省市区三级联动
参考gpt 有问题问gpt 实现效果 现省市区三级联动的方法可以使用PHP结合AJAX异步请求来实现。下面是一个简单的示例代码: HTML部分: <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>省市区三级联动…...

软件测试:测试用例八大要素模板
一、通用测试用例八要素 1、用例编号; 2、测试项目; 3、测试标题; 4、重要级别; 5、预置条件; 6、测试输入; 7、操作步骤; 8、预期输出 二、具体分析通用测试用例八要素 1、用例编号 一般是数字…...

C语言进阶之路之顶峰相见篇
目录 一、学习目标 二、宏定义 预处理 宏的概念 带参宏 无值宏定义 三、条件编译 条件编译 条件编译的使用场景 四、头文件 头文件的作用 头文件的内容 头文件的基础语句: GCC编译器的4个编译步骤: 总结 一、学习目标 掌握宏定义含义和用…...

第76讲:MySQL数据库中常用的命令行工具的基本使用
文章目录 1.mysql客户端命令工具2.mysqladmin管理数据库的客户端工具3.mysqlbinlog查看数据库中的二进制日志4.mysqlshow统计数据库中的信息5.mysqldump数据库备份工具6.mysqllimport还原备份的数据7.source命令还原SQL类型的备份文件 MySQL数据库提供了很多的命令行工具&#…...