【Linux系统编程】第十六弹---冯诺依曼体系结构与操作系统

个人主页: 熬夜学编程的小林

💗系列专栏: 【C语言详解】 【数据结构详解】【C++详解】【Linux系统编程】

目录

1、冯诺依曼体系结构

2、操作系统原理

2.1、什么是操作系统?

2.2、用图解释操作系统

2.3、理解操作系统

总结


1、冯诺依曼体系结构

 冯·诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。在冯诺依曼体系中,程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同,如英特尔公司的8086中央处理器的程序指令和数据都是16位宽。

 冯诺依曼体系结构是计算机科学中的一个基本理论,它提出了计算机制造的三个基本原则,即采用二进制逻辑程序存储执行以及计算机由五个部分组成(运算器、控制器、存储器、输入设备、输出设备),这套理论被称为冯·诺依曼体系结构。

此外,这种体系结构以运算器为中心,并且数字计算机的数制采用二进制。自1951年第一台电子计算机 EDVAC(离散变量自动电子计算机)开始,不论是最原始的还是最先进的计算机,使用的仍然是冯诺依曼最初设计的计算机体系结构。

截至目前,我们所认识的计算机,都是有一个个的硬件组件组成。
 

输入设备:

键盘,鼠标,摄像头,话筒,硬盘,网卡...

输出设备:

显示器,声卡,硬盘,网卡...

CPU(中央处理器):

运算器,控制器。

存储器:

此处指的是内存。

关于冯诺依曼,必须强调几点:

★ 设备是互相链接的。

★ 数据要在计算机的体系结构中进行流动,流动过程中,进行数据的加工处理。

★ 数据从一个设备到另一个设备,本质是一种拷贝!!!因此数据设备间的拷贝的效率,决定了计算机整机的基本效率。

★ 这里的存储器指的是内存。
★ 不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)
★ 外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。
一句话,所有设备都只能直接和内存打交道

存储器金字塔如下:

结论: 

存储器距离CPU越近,效率越高,成本越高。

1. 为什么在输入与输出设备之间要加一个存储器(内存),而不是直接将输入设备,输出设备和CPU直接连接起来呢???

如果将输入设备,输出设备与CPU直接连接起来,CPU处理数据的速度确实很快,但是输入设备和输出设备相较于CPU处理数据的速度相差很大,根据木桶效应(强调了一个系统或组织的整体性能取决于其最弱的部分),计算机最终的效率还是取决于输入设备与输出设备

★ 这时候加上存储器(内存)的话,让输入设备给存储器拷贝数据,存储器给CPU拷贝数据,CPU对数据紧进行处理后,返回给存储器,然后存储器将数据拷贝到输出设备上。以前CPU是直接在外设上拷贝数据,现在变成了CPU直接从存储器上拷贝数据,而外设的拷贝只用作用到存储器就可以了。而存储器一次性可以存储大量的数据,再将大量的数据给CPU进行处理,大大提高了运行的效率。

★ 存储器有很多选择,用户可以根据自己的需求选择不同的存储器。

★ 根据存储金字塔可知,距离CPU越近的存储器越贵,那么为了让更多的用户能够用得起计算机,因此需要性价比较高的存储器。也只有让用户买得起,才会有更多的人购买,进一步推动计算机行业的发展。

结论:

在硬件数据流动角度,在数据层面:

1、CPU不和外设直接打交道,CPU只和存储器(内存)打交道;

2、外设(输入和输出设备)的数据,不是直接给CPU的,而是要先放入到内存中。

2. 程序运行,为什么要加载到内存?(冯诺依曼体系规定这么做的!!!)

程序=代码+数据,程序的“代码和数据”都要被CPU访问,CPU只会从内存中读取代码和数据。

3. 程序还没有加载到内存中的时候,在哪里?

在硬盘(外部设备),并且是二进制文件。

4. 你与朋友使用QQ聊天,整个消息流动过程是怎样的呢???

登录上QQ,就代表着QQ的 .exe 可执行程序被加载到内存当中了。

我们发的信息“你好!”,在输入设备上会直接拷贝到内存中 ------> 存储器将数据拷贝到CPU ----> CPU对数据进行加密运算 -----> 再返回到存储器中 ------> 拷贝到输出设备(网卡) ------> 通过网络传到你朋友的输入设备(网卡) -----> 拷贝到内存的可执行程序中 ------> 拷贝到CPU来进行解密运算 -------> 再拷贝到内存当中 -----> 拷贝到输出设备(显示器)上。

2、操作系统原理

2.1、什么是操作系统?

操作系统(英语:Operating System,缩写:OS)是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件程序。简而言之,操作系统是进行软硬件资源管理的软件。

广义的认识:操作系统 == 操作系统的内核(进程管理,内存管理,文件管理,驱动管理) + 操作系统的外壳周边程序(给用户提供使用操作系统的方式,比如:图形化界面)

狭义的认识:只是操作系统的内核。

根据运行的环境,操作系统可以分为桌面操作系统,手机操作系统,服务器操作系统,嵌入式操作系统等。

2.2、用图解释操作系统

1. 为什么要有操作系统?

手段:对下管理好软硬件资源。
目的:对上提供一个良好的运行环境-->(为用户提供稳定的、高效的、安全的 执行环境)

2. 为什么要操作系统与底层硬件之间要有驱动程序呢?

如果操作系统直接去管理硬件的话,比如:操作系统直接管理硬盘,那么当硬盘更换或更新时,操作系统不一定还能管理硬盘,此时只能修改操作系统了,好让操作系统能继续管理硬盘,这是非常不好的。

★ 所以有了驱动层程序的出现,也就是说每一个硬件都有属于自己的驱动程序,驱动层给操作系统提供一个接口,操作系统就通过接口来管理硬件了。那么当硬件变更的时候,只需要接上硬件匹配的驱动程序就可以了,不用在对操作系统做修改了。

注意:驱动程序大部分是由厂商来提供的。

2.3、理解操作系统

定义:

操作系统是进行软硬件资源管理的软件。

通过学校的实例来解释"管理":

校长管理的是谁,如何进行管理,管理的本质是什么???

★ 很显然,校长管理的是本校的学生老师以及学校相关人员。

★ 但是学校有很多人,校长不可能一一进行管理,只能对部分人进行管理,然后让这部分人去进一步的进行管理,例如:校长对院主任进行管理,院主任对辅导员进行管理,辅导员对学生进行管理。

★ 校长对学生的管理不是直接与学生进行接触,而是对学生的数据进行管理,所以管理的本质是数据的管理。

 1. 最终校长如何管理大量学生的数据呢???

先描述  -------> 再组织

比如:校长要管理好10000名学生,校长可以用C语言中的结构体,先对学生进行描述,学生的类别都是一样的,都是人,但是人们的属性不一样,有男有女,有高有低,有年纪的区别,学习成绩的好坏等等,属于C语言中相同类型或不同类型的集合,所以用结构体来描述学生,结构体的成员有性别、年龄、身高、成绩、年级等等,描述完成之后;可以把每一个学生的结构体当作一个节点对象,用链表来将他们组织起来。最后对链表进行增删查改的运算操作,就是对学生数据的管理。

2. 理解了管理之后,那么用户可以跳过操作系统直接访问底层硬件吗?

不能,这就好比其他学校的校长可以直接在自己本学校随意指挥学生吗?其他学校的校长要想要使用本学校的学生,只能找本地学校的校长来进行沟通。

所以,我们的用户想要访问底层硬件,只能通过操作系统来访问。

3. 用户能直接使用操作系统内的数据吗?

不能,这就好比,你在银行里存钱、取钱的操作,能让你一个人来完成吗?很显然,银行不会相信任何人,他们会设一个窗口,来进行业务的完成。

所以,出现了系统调用接口,就相当于系统调用接口是函数声明,而操作系统是函数的实现,用户要通过调用函数(系统调用接口)来访问函数的实现(操作系统)。

补充(系统调用和库函数):

在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用


系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。此处的库指的就是库函数

总结


本篇博客就结束啦,谢谢大家的观看,如果公主少年们有好的建议可以留言喔,谢谢大家啦!

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

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

相关文章

上班工资太低了,哪些副业可以多赚钱?

今天给各位分享最赚钱的副业方式的知识,其中也会对比较赚钱的副业进行解释. 1、网站接单 一般20页左右的PPT报价基本在200-400元。如果能每周接单,一个月就有接近1000元的副业收入。提交摄影和绘画作品 比起画画,靠摄影赚点外快更容易一点。…

11.买卖股票的最佳时机Ⅰ

文章目录 题目简介题目解答解法一:一次遍历代码:复杂度分析: 题目链接 大家好,我是晓星航。今天为大家带来的是 买卖股票的最佳时机面试题Ⅰ 相关的讲解!😀 题目简介 题目解答 解法一:一次遍历…

蓝桥杯成绩已出

蓝桥杯的成绩早就已经出来了,虽然没有十分惊艳 ,但是对于最终的结果我是心满意足的,感谢各位的陪伴,关于蓝桥杯的刷题笔记我已经坚持更新了49篇,但是现在即将会告别一段落,人生即将进入下一个规划。我们一起…

代码随想录训练营Day28:贪心算法06

1.738单调递增的数字 贪心策略&#xff1a;如果strNum[i]<strNum[i-1]那么strNum[i] 9,strNum[i-1]--;//比如87对应的最大的单调递增的就是79. 具体实现&#xff1a; 对于遇到小于的情况&#xff1a;如果strNum[i]<strNum[i-1]那么strNum[i] 9,strNum[i-1]--;遍历顺…

学习Java的日子 Day44 初识前端

Day44 HTML 学习路线&#xff1a; 前端&#xff1a;展示页面、与用户交互 — HTML 后端&#xff1a;数据的交互和传递 — JavaEE/JavaWeb 1.B/S和C/S B/S&#xff1a;浏览器/服务器 教务系统 C/S&#xff1a;客户端/服务器 优缺点 1.开发/维护成本&#xff1a;B/S相对低 2.运算…

【江科大STM32学习笔记】新建工程

1.建立工程文件夹&#xff0c;Keil中新建工程&#xff0c;选择型号 2.工程文件夹里建立Start、Library、User等文件夹&#xff0c;复制固件库里面的文件到工程文件夹 为添加工程文件准备&#xff0c;建文件夹是因为文件比较多需要分类管理&#xff0c;需要用到的文件一定要复…

服务器2080ti驱动的卸载与安装

服务器2080ti驱动的卸载与安装 前言1、下载驱动2、驱动卸载与安装2.1 卸载原来驱动2.2 安装新驱动 3、查看安装情况 前言 安装transformers库&#xff0c;运行bert模型时出错&#xff0c;显示torch版本太低&#xff0c;要2.0以上的&#xff0c;所以更新显卡驱动&#xff0c;重…

爬虫学习:XPath提取网页数据

目录 一、安装XPath 二、XPath的基础语法 1.选取节点 三、使用XPath匹配数据 1.浏览器审查元素 2.具体实例 四、总结 一、安装XPath 控制台输入指令&#xff1a;pip install lxml 二、XPath的基础语法 XPath是一种在XML文档中查找信息的语言&#xff0c;可以使用它在HTM…

百度公关一号位翻车的本质是,“精英主义”已经没有市场了 | 最新快讯

“精英主义”没市场了。 文&#xff5c;商隐社&#xff0c;作者 | 浩然 01 这几天商业圈持续发酵的热点新闻就是百度“公关一号位”璩静的“短视频翻车事件”。 一个名为“我是璩&#xff08;q&#xff09;静”&#xff0c;在自我介绍中标注了“百度副总裁”“公关一号位”“…

SpringAop详解

文章目录 一、Spring自定义注解1、什么是注解&#x1f468;‍&#x1f3eb;2、注解的目的或作用&#x1f49e;3、JDK内置注解&#x1f4ab; 【内置元注解 一共八个固定注解】4、元注解 &#x1f3af;5、自定义注解&#x1f4f8;5、Java反射API和类加载过程51、什么是反射基本原…

46 udp网络程序

查询网络服务的命令 netstat -nlup n: 显示数字 a&#xff1a;显示所有 u&#xff1a;udp服务 p&#xff1a;显示pid Recv-Q收到的数量&#xff0c;本地ip和远端ip&#xff0c;00表示可以收到任何地址 网络聊天 服务端 定义一个server类&#xff0c;成员保存ip地址&#xff…

Required:(String) → String Found:String

报错 Function invocation summaryFu(...) expected No value passed for parameter msg Type mismatch. Required: (String) → String Found: String class FunTest {/*参数包含函数的调用者* */fun funAndFunPropTest() { // 调用下面的test()//创建一个函数&#xff0…

Colab/PyTorch - 002 Pre Trained Models for Image Classification

Colab/PyTorch - 002 Pre Trained Models for Image Classification 1. 源由2. 图像分类的预训练模型3. 示例 - AlexNet/ResNet1013.1 模型推断过程3.2 使用TorchVision加载预训练网络3.3 使用AlexNet进行图像分类3.3.1 Step1&#xff1a;加载预训练模型3.3.2 Step2&#xff1a…

Redis 基础之常用数据类型及命令

常用数据类型及命令 String&#xff08;字符串&#xff09;Hash&#xff08;哈希&#xff09;List&#xff08;列表&#xff09;Set&#xff08;集合&#xff09;zset ( sorted set&#xff1a;有序集合 )Redis setbit 命令HyperLogLogs ( 基数统计 ) Redis 比 Memcached 更优秀…

HTTP 1.1 与 HTTP 1.0

什么是HTTP HTTP 就是一个 超文本传输协议 协议 : 双方 约定 发送的 域名 数据长度 连接(长连接还是短连接) 格式(UTF-8那些) 传输 :数据虽然是在 A 和 B 之间传输&#xff0c;但允许中间有中转或接力。 超文本:图片、视频、压缩包,在HTTP里都是文本 HTTP 常见状态码 比如 20…

Python中的数据可视化:阶梯图matplotlib.pyplot.step()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 Python中的数据可视化&#xff1a; 阶梯图 matplotlib.pyplot.step() [太阳]选择题 matplotlib.pyplot.step()的功能是&#xff1f; import matplotlib.pyplot as plt import numpy as…

linux - 搭建部署ftp服务器

ftp 服务: 实现ftp功能的一个服务,安装vsftpd软件搭建一台ftp服务器 ftp协议: 文件传输协议 (file transfer protocol),在不同的机器之间实现文件传输功能, 例如 视频文件下载,源代码文件下载 公司内部:弄一个专门的文件服务器,将公司里的文档资料和视频都存放…

企业网络需求及适合的解决方案

近年来&#xff0c;企业网络通信需求可谓五花八门&#xff0c;变幻莫测。它不仅为企业的生产、办公、研发、销售提供全面赋能&#xff0c;同时也让企业业务规模变大成为了可能。 在当前的技术格局下&#xff0c;中大型企业常见的技术方案有很多&#xff0c;而同时也有各自不可替…

武汉星起航:掌握亚马逊关键节日,抢占销售制高点

在电子商务的浪潮中&#xff0c;亚马逊平台以其卓越的服务和庞大的用户基础&#xff0c;成为全球卖家争相入驻的热门选择。对于卖家而言&#xff0c;了解并掌握亚马逊的各大促销节日&#xff0c;无疑是提升销售业绩、扩大品牌影响力的重要一环。武汉星起航在这里将详细解析亚马…

Leetcode—295. 数据流的中位数【困难】

2024每日刷题&#xff08;132&#xff09; Leetcode—295. 数据流的中位数 实现代码 class MedianFinder { public:MedianFinder() {}void addNum(int num) {if(maxHeap.empty() || num < maxHeap.top()) {maxHeap.push(num);} else {minHeap.push(num);}if(maxHeap.size(…