冯诺依曼体系结构 与 操作系统

一、冯诺依曼体系结构

深入理解冯诺依曼体系结构

计算机的出现就是为了解决实际问题, 所以把问题交给计算机,计算机经过处理,得到一个结果反馈给我们,所以这中间就必然涉及到了输入设备,中央处理器(包括运算器和控制器)和输出设备

运算器主要用于进行各种数值和逻辑运算,包括加减乘除、与或非等操作;控制器则负责从主存中获取指令及相关数据,并决定如何对这些指令进行翻译和执行,以维持计算机系统的正常运行,后面我们就把运算器和控制器统称为中央处理器(cpu), 所以按照我们的理解,体系结构应该如下:

但是由于外部设备(输入设备和输出设备)相对于cpu来说速度很慢,根据木桶原理,计算机呈现出的整体的效率就很低, 所以我们又加入了内存这个设备

内存速度虽然比不上cpu,但是比外设快很多,因此最终呈现出的计算机效率还是不错的,所以内存相当于起到了缓冲的作用,根据该体系结构,计算机处理问题的流程如下:

输入数据到输入设备,将数据从外设加载到内存中,cpu从内存中读取数据进行处理,处理完之后写回到内存,内存再把数据交给输出到输出设备上,最终显示给用户,就有了最终的冯诺依曼体系

值得一提的是把外设的数据加载到内存和cpu读取内存数据是完全可以同时进行的,效率就更高了,所以内存可以理解为一个很大的缓存

冯诺依曼体系结构的价值

计算机中的存储结构是呈现金字塔状的,既然磁盘便宜,为啥不全部搞成瓷盘呢??因为速度太慢了,计算机基本没法运行;那既然寄存器速度快,为啥不全部搞成寄存器呢??因为造价太高了,注定大多数人买不起,计算机也就无法普及开来;所以冯诺依曼体系结构的巨大意义在于用较少的钱造出效率不错的计算机,让普通老百姓用的起计算机,技术改变世界!

冯诺依曼补充内容

1.图中的存储器指的就是内存

2.计算机中几乎所有的设备都具备数据存储能力,只是存储能力强弱的区别

3.内存是掉电易失性存储介质,磁盘相对来说是永久存储性介质

4.设备之间交互的本质是把数据从一个设备拷贝到另一个设备,存储的效率决定了拷贝的效率,决定了设备和设备之间通信的效率

5.把数据从一个设备搬运到另外一个设备这个工作是由操作系统来完成的

6.除了cpu和内存之外计算机中的大部分设备都叫做输入输出单元

输入单元:键盘,话筒, 摄像头, usb, 鼠标, 磁盘/ssd, 网卡

输出单元:显示器,喇叭,打印机,磁盘,网卡,显卡等等各种设备

7.同一个设备既可以是输入设备也可以是输出设备(比如网卡)

冯诺依曼体系的应用

1.解释"程序在运行之前,先要被加载到内存中"这句话

程序是保存在磁盘上的,也就是外部设备,而由冯诺依曼体系结构知道,cpu在数据层面上是不和外设交互的,而是和内存交互,所以必须先把程序加载到内存,cpu才能读取数据,运行程序, 所以是由体系结构决定的!

2.你和qq好友发消息的过程

你输入"在吗"到键盘后,操作系统将数据从键盘加载到内存中,cpu从内存中读取数据并处理(比如打包"在吗"和你的头像,发送时间等等), 处理完之后写入到内存中,然后通过网卡(输出设备)传输到网络上,经过传送,你朋友的网卡(输入设备)接收到你的消息,然后加载到内存,经过cpu的处理(解包等)写回内存,然后从内存输出到显示器上,你就看到了"在吗"这条消息以及发送时间等其他信息,

但是你发送的"在吗"也会显示到你的显示器上,这是为什么?

因为你的内存数据输出到网卡的同时也输出到了你的显示器上,输出设备是不唯一的!

二、操作系统(OS)

OS定位

操作系统是一款进行软硬件管理的软件

当你电脑开机时,操作系统就是第一个加载起来的软件

OS存在的目的

1.将软硬件资源管理好(手段)

2.给用户提供一个良好(稳定,高效,安全,易用)的使用环境(目的)

OS管理的精髓

···管理

以下是通过学校模型来深入理解管理

简化学校的模型,假如只有校长,辅导员和学生,校长是管理者,学生是被管理者,辅导员是什么角色呢???  学校的管理者是校长,但是我们基本很少和校长见面,校长如何做管理??

所有的事情无外乎是在做决策或者是做执行,真正的管理者是做决策的, 而如何做决策??

根据完善的数据做决策! 但是校长和学生很少见面,如何拿到数据?? 辅导员可以拿到学生数据反馈给校长, 辅导员核心工作是做执行!

所以管理的本质不是管人,而是管理数据!

当学生多了起来,这么多的学生信息量是很大的,如何管理这些数据呢???

学生虽然很多,但是要收集的学生的信息种类都一样,比如说姓名,性别,年龄,身高,成绩等等,统计到excel表格里,就变成了对结构化数据的管理!

后来校长把每一个学生的属性抽象出来,成为结构体类型(C++中的类), 于是每个学生都有自己的结构体变量了,但是这些变量是独立的,为了把这些变量关联起来,于是校长用链表把结构体变量连接起来,对学生信息的管理就变成了对链表的增删查改!!! 这就完成了对学生管理的建模过程!

 ···先描述,再组织

任何管理工作都可以经过先描述,再组织来完成计算机建模!

人是通过属性认识世界的,所以“先描述"如何描述?? 通过提炼属性!属性的集合就代表了事物

上述对学生属性进行抽象,形成结构体的过程就是"先描述",然后把一个个结构体变量用数据结构连接起来的过程就是"再组织"

我们之前在写C语言项目/数据结构/,开始写代码的时候总是先写class/struct, 再写其他代码,这就是先描述,再组织!

C++中类和对象有封装继承多态, STL中有各种容器,这就是先描述再组织的体现,所以C++能解决现实中的问题!

计算机的层状结构

我们从两部分来理解计算机的层状结构,第一部分是操作系统以下的部分,也就是OS存在目的中的第1点,把软硬件资源管理好;第二部分是操作系统以上的部分,也就是OS存在目的中的第2点,为用户提供良好的使用环境

···管理好硬件资源

1.底层硬件是以冯诺依曼的形式进行组织的

2.操作系统是要管理底层硬件的,但是操作系统并不直接和硬件交互,如何管理??

只需要拿到硬件相关的数据即可,比如磁盘有几个分区,一共多少容量,当前使用了多少,还剩多少?磁盘状态(休眠/运行/挂掉了)? 这些都是数据,所以只需要对数据做管理,如何拿数据??

OS和底层硬件之间还有一层叫做驱动程序,驱动程序帮助OS获得底层硬件的各种数据,而要管理,就要先描述后组织!Linux是用C语言写的,所以在OS内要出现struct harddev{ 设备属性...}  类似内容,采集到硬件的数据之后形成对硬件管理的数据结构(比如单链表),于是OS对硬件的管理就变成了对硬件对应的数据结构的增删查改!

硬件物理上连接到了电脑并不意味着就被OS管理起来了(比如鼠标插到了电脑上), 必须是OS内存在管理这个硬件的数据对象和数据结构,才叫硬件被OS管理起来了!

操作系统的管理

1.进程管理

2.内存管理

3.文件/IO管理

4.驱动管理

···为用户提供良好的环境

用户广义指所以使用电脑的人,狭义指的是开发者, 首先得让开发者用起来,否则开发者就没法开发出各种软件了,下面的用户默认指的是开发者

用户要访问硬件或者其他信息,直接访问OS不就行了吗??  因为用户也有坏人,所以不让用户直接访问OS内的数据!所有操作系统不相信用户但是必须给用户提供给服务

银行系统和操作系统的设计就很相似:

银行的小窗口就类似于OS的系统调用接口,系统调用接口是OS自己提供的,其实就是OS把自己内部很多有价值的东西封装成函数,  用户要访问操作系统内部的软硬件信息,就得调用系统调用接口,这是用户获取系统数据的唯一方式!

再回顾一下C语言中的printf函数,而printf是将数据打印到了显示器上,而用户是没有能力直接访问硬件的,所以printf必定封装了系统调用! 

但是系统调用使用起来比较麻烦,用系统的人并不善于使用, 开发的人频繁一些系统调用, 为了更加方便使用以及开发:

用系统的人的角度: 提供外壳程序(shell, 图形化界面)(外壳程序一定会调用系统调用)

系统上开发的人的角度: 将系统接口封装成各种各样好用的函数,打包形成库,直接调用函数即可,所以库和系统调用是上下层关系

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

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

相关文章

【读后感】《枪炮、病菌与钢铁》人类社会的命运

初看这个书名其实感到困惑,风马牛不相及的三个名词怎么就凑到一起了,这书是讲什么的。 先说结论,讲的是人类历史,具体是1.3万年前开始至今的历史以及现代世界格局的形成,1.3万年前从这个时间节点以后,不论…

勇宝趣学JavaScript ES6第二章(解构赋值)

在ES6中,我们经常使用到解构赋值这个知识点,今天我们就来好好讲讲这一小部分知识点。咱们争取这回一次性讲明白。 今天是元宵节,祝大家节日快乐,只有我自己还在无聊的码字。 给我点个赞吧,嘿嘿!&#xff01…

MySQL数据库进阶第四篇(视图/存储过程/触发器)

文章目录 一、视图简单介绍与基础语法二、视图的检查选项三、视图的更新四、视图的作用五、存储过程的概念与特点六、存储过程的 创建,调用,查看,删除七、存储过程 — 系统变量八、存储过程 — 用户定义变量九、存储过程 — 局部变量十、存储…

acwing算法学习笔记 ------ 双链表

1、定义 这里可以做一个投机取巧,我们不再像单链表去用head去存头和尾,直接让r[0] 1,l[1] 0; idx 2.进行初始化, 解释一下l[N] 和 r[N] l[N]:是表示指向左面下一个节点下标, r[N]:表示指向下一个节点的下标。大家不用担心i…

[VNCTF2024]-PWN:shellcode_master解析(orw,用mmap代替read读文件)

查看保护 查看ida 在sandbox函数中,函数先使用了seccomp_init初始化,允许了所有系统调用,再用seccomp_rule_add来禁用掉了部分系统调用,其中包括execve和read seccomp_init函数可以进行系统调用全禁用和全允许初始化 seccomp_ru…

《高质量的C/C++编程规范》学习

目录 一、编程规范基础知识 1、头文件 2、程序的板式风格 3、命名规则 二、表达式和基本语句 1、运算符的优先级 2、复合表达式 3、if语句 4、循环语句的效率 5、for循环语句 6、switch语句 三、常量 1、#define和const比较 2、常量定义规则 四、函数设计 1、参…

python_pyecharts绘制漏斗图

python-pyecharts绘制漏斗图 from pyecharts.charts import Funnel from pyecharts import options as opts# 数据 data [("访问", 100), ("咨询", 80), ("订单", 60), ("点击", 40), ("展现", 20)]# 创建漏斗图 funnel …

uvloop,一个强大的 Python 异步IO编程库!

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站零基础入门的AI学习网站~。 目录 ​编辑 前言 什么是uvloop库? 安装uvloop库 使用uvloop库 uvloop库的功能特性 1. 更…

【信息提取】FindSomething 浏览器插件

下载地址 FindSomething 浏览器插件 概述 在网页的源代码或js中找到一些有趣的东西 FindSomething 用于快速在网页的html源码或js代码中提取一些有趣的信息,包括可能请求的资源、接口的url,可能请求的ip和域名,泄漏的证件号、手机号、邮箱…

程序员可以做什么副业呢?

如果你经常玩知乎、看公众号(软件、工具、互联网这几类的)你就会发现,好多资源连接都变成了夸克网盘、迅雷网盘的资源链接。 例如:天涯神贴,基本上全是夸克、UC、迅雷网盘的资源链接。 有资源的前提下,迅雷…

2024年云南事业单位报名流程!明天就开始报名啦,千万不要错过哦

注意啦!注意啦!2024年云南事业单位报名即将开始! ▶️公告已发布,2月26日上午9:00开始报名‼️ 相关时间节点 **报名时间:**2024年2月26日9:00至3月1日18:00 **资格初审时间:**2024年2月26日…

【Python】Windows本地映射远程Linux服务器上的端口(解决jupyter notebook无法启动问题)

创作日志: 学习深度学习不想在本地破电脑上再安装各种软件,我就用实验室的服务器配置环境,启动jupyter notebook时脑子又瓦特了,在自己Windows电脑上打开服务器提供的网址,那肯定打不开啊,以前在其它电脑上…

【服务发现--service】

1、service的定义 "Service"简写"svc”。Pod不能直接提供给外网访问,而是应该使用service。Service就是把Pod暴露出来提供服务,Service才是真正的“服务”,它的中文名就叫“服务”。可以说Service是一个应用服务的抽象&#…

校园微社区微信小程序源码/二手交易/兼职交友微信小程序源码

云开发校园微社区微信小程序开源源码,这是一款云开发校园微社区-二手交易_兼职_交友_项目微信小程序开源源码,可以给你提供快捷方便的校园生活,有很多有趣实用的板块和功能,如:闲置交易、表白交友、疑问互答、任务兼职…

C++ //练习 8.9 使用你为8.1.2节(第281页)第一个练习所编写的函数打印一个istringstream对象的内容。

C Primer(第5版) 练习 8.9 练习 8.9 使用你为8.1.2节(第281页)第一个练习所编写的函数打印一个istringstream对象的内容。 环境:Linux Ubuntu(云服务器) 工具:vim 代码块 /*****…

NATS学习笔记(一)

NATS是什么? NATS是一个开源的、轻量级、高性能的消息传递系统,它基于发布/订阅模式,由Apcera公司开发和维护。 NATS的功能 发布/订阅:NATS的核心是一个发布/订阅消息传递系统,允许消息生产者发布消息到特定的主题…

制作ai语音助手

目录 一、总体介绍 二、唤醒 http://t.csdnimg.cn/3mf18 三、将语音唤醒和aiui结合 (1)项目合并 (2)修改CMakeList.txt (3)demo代码修改 1.添加库 2.在demo中添加唤醒功能的代码 3.尝试运行代码&am…

【数据结构和算法初阶(c语言)】数据结构前言,初识数据结构(给你一个选择学习数据结构和算法的理由)

1.何为数据结构 数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的 数据元素的集合。本质来讲就是在内存中去管理数据方式比如我们的增删查改。在内存中管理数据的方式有很多种(比如数组结构、链式结构、树型结…

基于Pytorch的猫狗图片分类【深度学习CNN】

猫狗分类来源于Kaggle上的一个入门竞赛——Dogs vs Cats。为了加深对CNN的理解,基于Pytorch复现了LeNet,AlexNet,ResNet等经典CNN模型,源代码放在GitHub上,地址传送点击此处。项目大纲如下: 文章目录 一、问题描述二、数据集处理…

智能SQL生成:后端技术与LLM的完美结合

文章目录 引言一、什么是大模型二、为什么选择LLM三、开发技术说明四、系统架构说明五、编码实战1. Maven2. 讯飞大模型配置类3. LLM相关的封装4. 编写LLM的service5. 编写controller6. 运行测试 六、总结 引言 本篇文章主要是关于实现一个类似Chat2DB的根据自然语言生成SQL的…