【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容器)组织起来。

  • 所以管理我们可以总结为:先描述,再组织。 

所有的计算机语言都遵循这一规则。

那计算机是如何管理软硬件资源的呢?

我相信大家肯定已经猜到了,一样的道理,我们可以把软硬件资源也描述为一个结构体或者类和对象,然后利用某种数据结构将他们组织起来,就在计算机层面上实现了对软硬件资源的管理。


=========================================================================

如果你对该系列文章有兴趣的话,欢迎持续关注博主动态,博主会持续输出优质内容

🍎博主很需要大家的支持,你的支持是我创作的不竭动力🍎

🌟~ 点赞收藏+关注 ~🌟

=========================================================================

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《考虑电力-交通交互的配电网故障下电动汽车充电演化特性》

这个标题涉及到电力系统、交通系统和电动汽车充电的复杂主题。让我们逐步解读: 考虑电力-交通交互的配电网故障: 电力-交通交互: 指的是电力系统和交通系统之间相互影响、相互关联的关系。这可能涉及到电力需求对交通流量的影响,反…

爬虫解析-jsonpath (六)

jsonpath只能解析本地文件 jsonpath的使用: obj json.load(open(.json文件,r,encodingutf-8))place_name jsonpath.jsonpath(obj, json语法) 目录 1.安装jsonpath 2.Xpath和jsonpath的语法对比 练习:使用jsonpath解析JSON文件 3.使用jsonpath抓取…

C语言实现快速排序

完整代码&#xff1a; #include<stdio.h>//用第一个元素将待排序序列划分成左右两个部分&#xff0c;返回排序后low的位置&#xff0c;即枢轴的位置 int partition(int arr[],int low,int high){//让待排序序列中的第一个元素成为基准int pivotarr[low];//lowhigh代表一…

计算机科学与技术认识实习【报告】

一、实习目的 此次认识实习主要面对计算机科学与技术专业的同学&#xff0c;了解专业在未来的发展趋势&#xff0c;通过观看公司的介绍视频和技术发展情况招聘信息后的感想和学习体会等多种方式&#xff0c;使我们了解本专业相关领域的发展现状&#xff0c;让我们在校园内课堂上…

【动态规划】【广度优先】LeetCode2258:逃离火灾

作者推荐 本文涉及的基础知识点 二分查找算法合集 动态规划 二分查找 题目 给你一个下标从 0 开始大小为 m x n 的二维整数数组 grid &#xff0c;它表示一个网格图。每个格子为下面 3 个值之一&#xff1a; 0 表示草地。 1 表示着火的格子。 2 表示一座墙&#xff0c;你跟…

极智一周 | AI 算力国产化、通义开源、Gemini、鸿蒙、蔚来 And so on

欢迎关注我的公众号 [极智视界]&#xff0c;获取我的更多技术分享 大家好&#xff0c;我是极智视界&#xff0c;带来本周的 [极智一周]&#xff0c;关键词&#xff1a;AI 算力国产化、通义开源、Gemini、鸿蒙、蔚来 And so on。 邀您加入我的知识星球「极智视界」&#xff0c;…

【Linux】make/Makefile --- 自动化构建项目的工具

目录 一、make/Makefile的简单使用 二、Makefile 的语法规则 三、实现的原理 3.1 make/Makefile识别文件新旧 3.2 .PHONY修饰的伪目标总是被执行 3.3 make/Makefile是具有依赖性的推导能力的 四、语法技巧 五、注意事项 Linux中自动化构建项目最简单的方式&#xff1a;…

Linux系统---简易伙伴系统

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C/C》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 一、题目要求 1.采用C语言实现 2.伙伴系统采用free_area[11]数组来组织。要求伙伴内存最小为一个页面&#xff0c;页面大小为4KB…

C语言习题

写一个函数&#xff0c;输入一个四位数字&#xff0c;要求输出这四个数字字符&#xff0c;但每两个数字间空一个空格。如输入1990&#xff0c;输出1 9 9 0 如下&#xff1a; #include<stdio.h> void Print(int n) { if(n>9) { Print(n/10); } printf("%d "…

ssm的健身房预约系统(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; ssm的健身房预约系统&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring Spring…

【trino权威指南】使用trino详解:trino client安装、查询sql、DBeaver连接trino、java通过JDBC连接trino

文章目录 一. Trino CLI1. 安装client2. 使用client执行sql 二. JDBC driver 连接Trino1. 通过DBeaver用户界面连接2. JDBC Driver in java2.1. 环境配置2.2. 注册和配置driver2.3. 连接参数2.4. 查询例子 一. Trino CLI 1. 安装client Trino CLI提供了一个基于终端的交互式s…

H264之NALU结构详解

摘要&#xff1a;本文详细描述了AVC的NALU的码流结构&#xff0c;以及各个层面上NALU详细的构成。   关键字&#xff1a;AVC&#xff0c;NALU 1 NALU简介 NAL层即网络抽象层&#xff08;Network Abstraction Layer&#xff09;&#xff0c;是为了方便在网络上传输的一种抽象…

tomcat篇---第四篇

系列文章目录 文章目录 系列文章目录前言一、为什么我们将tomcat称为Web容器或者Servlet容器 ?二、tomcat是如何处理Http请求流程的?三、tomcat结构目录有哪些?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这…

Mysql索引一篇就够了

索引 定义 索引是对数据库表中一列或者多列的值进行排序的结构。 目的 数据库索引好比一本书的目录&#xff0c;提高查询效率。但是为表设置索引要付出相应的代价&#xff1a; 增加了数据库的存储空间 在插入和修改时需花费更多的时间&#xff08;因为索引也要随之变动&#…

带有 RaspiCam 的 Raspberry Pi 监控和延时摄影摄像机

一、说明 一段时间以来&#xff0c;我一直想构建一个运动激活且具有延时功能的树莓派相机&#xff0c;但从未真正找到我喜欢的案例。我在thingiverse上找到了这个适合树莓派和相机的好案例。它是为特定的鱼眼相机设计的&#xff0c;但从模型来看&#xff0c;我拥有的廉价中国鱼…

【基于Python的二手车数据可视化平台的设计与实现】

基于Python的二手车数据可视化平台的设计与实现 前言数据获取与处理网络爬虫数据存储 可视化平台的设计与实现Flask框架数据可视化 创新点结语 前言 随着社会的不断发展&#xff0c;二手车市场也逐渐成为一个备受关注的领域。为了更好地为二手车的买家和卖家提供信息&#xff…

Pycharm设置为中文版

文章目录 关注公众号&#xff1a;『AI学习星球』 算法学习、4对1辅导、论文辅导或核心期刊可以通过公众号或CSDN滴滴我 在使用Pycharm的时候&#xff0c;会发现里面的菜单栏以及内容都是英文为主。 英文版的优点是&#xff1a;比较稳定&#xff0c;其次大家都在用英文版&…

MobaXterm成功连接到开发环境后,过一段时间会自动断开。

问题现象 MobaXterm成功连接到开发环境后&#xff0c;过一段时间会自动断开。 原因 配置MobaXterm工具时&#xff0c;没有勾选“SSH keepalive”或专业版MobaXterm工具的“Stop server after”时间设置太短。

Android 样式小结

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业变现、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、概览三、使用3.1 创建并应用样式3.2 创建并…

zabbix 通过 odbc 监控 mssql

1、环境 操作系统&#xff1a;龙蜥os 8.0 zabbix&#xff1a;6.0 mssql&#xff1a;2012 2、安装odbc 注意&#xff1a;需要在zabbix server 或者 zabbix proxy 安装 odbc驱动程序 dnf -y install unixODBC unixODBC-devel3、安装mssql驱动程序 注意&#xff1a;我最开始尝试…