【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. 用户能直接使用操作系统内的数据吗?

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

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

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

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


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

总结


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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT的TcpServer

Server服务器端 QT版本5.6.1 界面设计 工程文件&#xff1a; 添加 network 模块 头文件引入TcpServer类和TcpSocket&#xff1a;QTcpServer和QTcpSocket #include <QTcpServer> #include <QTcpSocket>创建server对象并实例化&#xff1a; /*h文件中*/QTcpServer…

NAND Flash 与 NOR Flash间的区别

非易失性存储器是一种即使未通电也能保持其内容的存储器。非易失性存储器可以有不同的形式: ROM – 只读存储器&#xff0c;数据写入一次&#xff0c;允许多次读取访问。 PROM – 可编程只读存储器&#xff0c;数据写入一次&#xff08;不是在制造过程中&#xff0c;而是以后的…

【论文速读】| LLM4FUZZ:利用大语言模型指导智能合约的模糊测试

本次分享论文&#xff1a;LLM4FUZZ: Guided Fuzzing of Smart Contracts with Large Language Models 基本信息 原文作者&#xff1a;Chaofan Shou, Jing Liu, Doudou Lu, Koushik Sen 作者单位&#xff1a;加州大学伯克利分校&#xff0c;加州大学欧文分校&#xff0c;Fuzz…

15 华三华为链路聚合综述

1 链路聚合简介 以太网链路聚合通过将多条以太网物理链路捆绑在一起形成一条以太网逻辑链路&#xff0c;实现增加链路带宽的目的&#xff0c;同时这些捆绑在一起的链路通过相互动态备份&#xff0c;可以有效地提高链路的可靠性。 2 成员端口的状态 聚合组内的成员端口具有以下…

2024年,Web开发新趋势!

随着我们迈入新的一年&#xff0c;现在正是审视2024年网页开发领域开始流行哪些趋势的绝佳时机。回顾2023年的一系列更新&#xff0c;以下是来年一些热门话题的概览。 自主托管有回归的趋势 近些年&#xff0c;自主托管一直是网页开发者和公司托管其应用程序的默认方式。开发…

蓝桥杯13届JAVA A组 国赛

​​​​​​​ package 蓝桥杯国赛; // 贪心选个数最少的进行摆 // 2:1 ,3:1, 4:1,5 : 3,6:3,7:1 // 选 1&#xff0c;7&#xff0c;4&#xff0c;2&#xff0c;3&#xff0c;5&#xff0c;9 // 然后都选满10个 public class 火彩棒数字 {public static void main(String[] a…

游戏行业被攻击的原因、攻击种类及合适的服务器

很多游戏刚上线没多久就频繁遭到同行恶意攻击。在相关数据报告中&#xff0c;2023年上半年遭受DDoS攻击的行业中&#xff0c;游戏行业占到40%&#xff0c;而且攻击方式、攻击频率、攻击峰值呈明显上升趋势。很多充满创意的游戏开发公司刚才开发上线一个很有特色的产品&#xff…

安卓实现视频录制与显示和翻转摄像头

权限&#xff1a; <!-- 相机权限 --> <uses-featureandroid:name"android.hardware.camera"android:required"false" /> <uses-permission android:name"android.permission.CAMERA" /><!-- 录音权限&#xff08;包括麦克…

Centos 7.9 配置VNCServer实现远程vnc连接

文章目录 1、Centos安装图形界面1.1、安装X Windows System图形界面1.2、安装GNOME图形界面 2、VNC SERVER配置2.1、VNC SERVER安装2.2、VNC SERVER配置1&#xff09;创建vnc配置文件2&#xff09;修改配置文件内容3&#xff09;完整配置文件参考 2.3、设置vnc密码2.4、配置防火…

网络编程套接字和传输层tcp,udp协议

认识端口号 我们知道在网络数据传输的时候&#xff0c;在IP数据包头部有两个IP地址&#xff0c;分别叫做源IP地址和目的IP地址。IP地址是帮助我们在网络中确定最终发送的主机&#xff0c;但是实际上数据应该发送到主机上指定的进程上的&#xff0c;所以我们不仅要确定主机&…

虚拟化技术 分离虚拟机数据流量与ESXi的流量管理

一、实验内容 为ESXi主机添加网卡通过vClient查看已添加的网卡信息为ESXi添加网络&#xff0c;创建标准交换机修改网络配置&#xff0c;实现虚拟机数据流量与ESXi的管理流量分离 二、实验主要仪器设备及材料 安装有64位Windows操作系统的台式电脑或笔记本电脑&#xff0c;建…

泰达克仿钻点水晶饰品包装印刷防滑UV胶特性及应用场景

仿钻点UV滴胶是一种特殊的胶水 常用于模拟钻石的效果 它是一种透明的胶水 具有高光泽度和折射率 可以在物体表面形成类似钻石的亮闪效果 仿钻点UV滴胶通常由紫外线固化胶组成 需要通过紫外线照射来固化和硬化 它具有以下特点&#xff1a; 1. 透明度&#xff1a;仿钻点UV滴胶具有…

使用 OpenCV 创建视频(74)

返回:OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇:OpenCV 库来捕获和处理视频输入和相似度测量(73) 下一篇&#xff1a;OpenCV使用 Kinect 和其他兼容 OpenNI 的深度传感器(75) 目标 每当您使用视频源时&#xff0c;您最终可能希望将图像处理结果保…

Zabbix6.0容器化部署(Docker-Composed)

Zabbix 为每个 Zabbix 组件提供 Docker image 作为可移植和自给自足的容器&#xff0c;以加快部署和更新过程。 Zabbix 组件在 Ubuntu、Alpine Linux 和 CentOS 基础 image 上提供:Zabbix 组件支持 MySQL 和 PostgreSQL 数据库、Apache2 和 Nginx Web 服务器。 1. Zabbix 组件…

ASP.NET网上车辆档案管理系统

摘 要 本文采用基于Web的Asp.net技术&#xff0c;并与sql server 2000数据库相结合&#xff0c;研发了一套车辆档案管理系统。该系统扩展性好&#xff0c;易于维护。简化了车辆档案设计流程&#xff0c;去除了冗余信息。汽车销售企业可以通过本系统完成整个销售及售后所有档案…

C语言指针的初级练习

前言 从0开始记录我的学习历程&#xff0c;我会尽我所能&#xff0c;写出最最大白话的文章&#xff0c;希望能够帮到你&#xff0c;谢谢。 提示&#xff1a;文章作者为初学者&#xff0c;有问题请评论指正&#xff0c;感谢。 哥们嗷 不知道你和我是否一样在学习C语言指针的时…

【ZZULI数据结构实验】压缩与解码的钥匙:赫夫曼编码应用

&#x1f4c3;博客主页&#xff1a; 小镇敲码人 &#x1f49a;代码仓库&#xff0c;欢迎访问 &#x1f680; 欢迎关注&#xff1a;&#x1f44d;点赞 &#x1f442;&#x1f3fd;留言 &#x1f60d;收藏 &#x1f30f; 任尔江湖满血骨&#xff0c;我自踏雪寻梅香。 万千浮云遮碧…

使用 Docker 部署 TaleBook 私人书籍管理系统

1&#xff09;项目介绍 GitHub&#xff1a;https://github.com/talebook/talebook Talebook 是一个简洁但强大的私人书籍管理系统。它基于 Calibre 项目构建&#xff0c;具备书籍管理、在线阅读与推送、用户管理、SSO 登录、从百度/豆瓣拉取书籍信息等功能。 友情提醒&#x…

工业交换机外壳材质大比拼,看看哪种外壳适合你

在工业领域里&#xff0c;交换机就像我们的网络心脏&#xff0c;时刻跳动着确保信息畅通无阻。而它的外壳&#xff0c;就是保护这颗“心脏”的铠甲。今天&#xff0c;咱们就来聊聊这些铠甲——工业交换机外壳的材质和防护等级&#xff0c;看看它们如何守护我们的网络世界。 首…

网络编程基础回顾

计算机网络&#xff08;5&#xff09;&#xff1a;运输层 OSI 模型与 TCP/IP 协议 OSI七层协议模型 (open system interconnection) 应用层&#xff1a;为应用数据提供服务表示层&#xff1a;数据格式转化&#xff0c;数据加密会话层&#xff1a;建立、维护和管理会话传输层&…