Linux:冯诺依曼系统和操作系统的概念

文章目录

  • 冯诺依曼体系结构
    • 冯诺依曼体系的理解
  • 操作系统
    • 操作系统的基本定位
    • 操作系统的理解1
  • 操作系统的理解2
  • 总结

本篇主要总结的是操作系统的基本认知和一些概念

冯诺依曼体系结构

在这里插入图片描述
那么上图表示的就是冯诺依曼体系结构,那这个体系结构是什么?为什么要先介绍它?

截止目前来说,常见的计算机都是遵循着冯诺依曼体系组成的,可以说有了冯诺依曼体系才能让计算机变得这么普及,才有了现在的互联网的概念,那么他是如何做到的?

在生活中我们遇到的计算机,都是由一个一个的硬件拼接而成的,从大类上来说,一般包括有输入单元,输出单元,中央处理器三个部分,而冯诺依曼体系的基本理解就是,让CPU与内存做交互,也就是图中的存储器这个区域,而不是让CPU与输入单元直接进行交互;输入单元给出的内容和信号传到内存后,内存将信号传递给CPUCPU进行一些数据处理后再传递回内存,内存再传递给输出单元

关于为什么要采用这样的方式的原因,要从下图说起

在这里插入图片描述
计算机中有很多的存储器,而每个存储器对应的存储大小和存储速度也是不一样的,比如对于CPU来说,它的传递速度相当的快,可能是以纳秒为单位进行的计时,而对于内存来说,可能就是微秒或者纳秒的概念,但对于输入单元来说,就可能到达毫秒的概念上了,那么如果让输入单元直接和CPU进行交互,带来的一定是输入单元无法跟得上CPU的速度,导致电脑的效率极低,甚至无法进行正常的工作

那么上图表示的就是存储器的层次结构,说是层次结构不如说是运行速度结构,从某种意义上来说也是造价结构,寄存器的运行速度相当的快,但是它可以存储的内容大小可能只有几十字节,造价也特别高,但对于Web服务器来说,可能只需要几十块或者几百块就可以存储很大的数据了,但进行数据交互的速度和寄存器是不可以比的,那么如何把计算机中的各个存储器合理的分配才能利益最大化?这就成了最大的问题,那么这个时候冯诺依曼就提出了这样的体系,给未来的计算机的整体设计提供了全新的思路

按照冯诺依曼的体系结构来看就能看出,让存储器和CPU进行交互是最合理的,在这里可以近似的把内存看成是一个硬件级别的缓存,它并不直接存储数据,而是作为一个把输入数据和中央处理器进行交互的一个中间单元,因此基于冯诺依曼的体系设计出的计算机是最合理的,因此这个体系才能被保留至今,被大多数计算机进行广泛的应用

因此我们说,基于冯诺依曼体系结构的计算机,是用最少的钱做出最高效的计算机,这样才能让计算机走进普通人的家中,才能让互联网开始发展到现在的盛世,可以说没有冯诺依曼的体系结构是不会有现在的互联网的

上面只是对冯诺依曼体系的概念理解,那么具体来说,根据这个体系可以解释下面的一些现象

冯诺依曼体系的理解

通过社交平台发送消息的过程

从上面的概念来解释:输入设备比如发送了一个你好的字样,现在这个字样要被发送出去,首先要传递到存储器中被加载,在存储器中这个消息被送到了CPU中进行了处理,处理后通过输出设备,比如说网卡,就能通过网络发送到另外一台电脑上,而与此同时在我们的这台电脑上的输出设备,比如说显示器,会显示出发送成功或者失败的提示

对于另外一个设备,作为接受我们消息的设备,首先有一个输入设备来接受消息,比如说网卡来接收消息,然后接收到的消息被传递到了存储器,存储器再传递到CPU中,CPU进行数据的处理后,将数据显示到输出设备上,这里就是显示器,因此就形成了我发了一个你好,远在很远处的人就可以看到这条你好的句子

程序被运行前,为什么要加载到内存?

程序其实就是代码和数据,那么最后都要交给CPU进行处理,而CPU需要先读取到这些代码和数据,而在CPU内存之间有一个二进制层次的交互,形成了一个可执行程序,本质上来说这其实也是一个文件,这个文件只能在磁盘中读取,而磁盘本质上就是一个外部的输出或者输入设备,因此要被加载到内存当中

通过社交平台发送文件的过程

和上面的理解类似,只不过区别是在输入输出设备上略有不同,文件的存储是在磁盘上的,而磁盘就是这里的输入设备,经过网络的传递后可以传递到对方的电脑上,此时数据就被存储到了输出设备上,这里的输出设备也是磁盘

那么到这里就结束了冯诺依曼体系结构的认识,下面就要引入正经内容:操作系统

操作系统

操作系统的基本定位

操作系统其实并不陌生,经常会听说有Windows操作系统,Mac操作系统,甚至有Linux操作系统,但是操作系统到底是什么?操作系统是如何运作的?它的工作原理和核心目的是什么?这些就并没有了解过多,那么下面开始对操作系统的概念有一个基础的认知

操作系统是什么?

直观的下定义来说,操作系统是一款软件,它的作用是用来进行软硬件的资源管理,也是打开电脑后第一个进行加载的软件

操作系统为什么要存在?

如果没有操作系统,计算机只是几个比较精美的废铁,并没有什么实质性的作用,它无法像现在的电脑一样进行运转,因此操作系统是十分重要的,操作系统将软硬件资源进行管理给用户提供良好的使用环境,这里的良好主要体现在要稳定,高效,安全,易用:用这个操作系统不会突然挂掉,可以合理的使用;用这个操作系统处理问题可以很高效的解决,帮助人缩小工作量;有一定的数据防护性,不会被偷取数据

操作系统是如何进行管理的?

关于操作系统如何进行管理,是一个很宏观的概念,这里把操作系统的管理模式放到理解篇进行阐述

操作系统的理解1

讲到操作系统,就离不开下面的这张图,整个操作系统都将围绕下面这张图进行阐述
在这里插入图片描述

那么前面对操作系统进行了一个基本的概念,操作系统是一个进行管理的软件,那么这个管理具体表现在什么地方?如何理解管理这个词呢?

管理的本质是管理数据

接触到管理,在实际生活运用中有很多和管理挂钩的概念,大到管理一个国家,小到管理自己的一日安排,那么对于管理一词的认知,也应该要进行一定的理解

所谓管理,管理的是什么?管理的是人,还是物还是什么,实际上,看似管理的是人或者是其他性质,其实管理的都是一条一条的数据,比如银行管理的是你有多少钱,就是资金数据,学校管理的是你的信息,也是数据,学校对你的行为做管理,其实也是在管理你在什么时候做什么事,其实也是管理的范畴,而这些管理的内容从计算机的角度来讲,其实是事物的属性

那事物的属性如何理解?管理的内容通常就是事物的一条条信息,也就是属性,因此上面的那句话其实可以更变为:管理的本质是管理属性

先描述,再组织

那现在已经理解了管理的含义,那么现在再看编程语言就知道了,在写日期类的时候会先定义日期,在写顺序表的时候会先定义顺序表的下标容量数组等,完成链表前要先定义链表的节点,再将节点穿起来等,这些都说明,当我们需要做一件事的时候,会先从属性的角度思考问题,因为人其实就是通过属性来认识世界上的各种事物,那重要的属性的集合,也就代表了要研究的对象,因此才会出现C++Java这样的语言,它们之所以选择面向对象的编程语言,其实本质就是这方面的原因,因此本段话要引出的观点是,在完成一件事前要先描述,再组织,当知道了要做的事物的具体属性后,才能针对事物做出组织的动作

操作系统的理解2

那么现在就要看下面的这张图来进行操作系统的全面理解

在这里插入图片描述

首先这张图的右侧划分出了三个部分,分别是用户部分,系统软件部分,硬件部分,那么如何理解这三个部分?

用户的访问内容是有限的

从上面的图中可以看出,用户其实所拥有的范围是很小的,只有最上面的两层,用户和用户接口,下来是系统软件的部分,那么这个部分的意义是什么?应该如何理解除了用户部分外的这些部分?

其实,在电脑中用户可以访问的内容是有限的,比如说,用户是不可以直接对网卡,硬盘进行控制的,都是用户向操作系统发出询问,操作系统再向我们反馈,比如该部分硬件是正常运行的还是非正常运行,有没有接入某个驱动,用户或者说开发人员是不可以直接进行访问的,都是对操作系统发出的指令,操作系统再予以反馈,因此就引入了系统调用接口的概念,用户的操作实际上只能局限于对接口进行调用,而当用户发出了这个调用后,操作系统才能根据用户的需求进行反馈所需要的信息,这其实也是表现了操作系统的安全性,如果没有这层保护,可以让用户或开发人员直接访问底层的内容或驱动程序等,那对于操作系统来说就是不可控的行为,由于操作系统是一个用来管理的软件,那么它就必定不会让用户的随机访问和随意改动对于整个系统的稳定造成威胁,因此操作系统拒绝对于用户的直接访问,而是采用操作系统管理后搜索到用户需要的数据后,将数据进行一定的反馈

操作系统管理的核心

  1. 进程管理
  2. 内存管理
  3. 文件以及IO管理
  4. 驱动管理

上面的内容就是操作系统进行管理的内容,当然这些内容也是用户不可以进行直接访问的,但是可以借助操作系统的力量完成这些管理,使得整个系统变得井井有条,这也是操作系统存在的意义和价值,那么对于操作系统的初步理解就是上面的理解,但是上图中还有一些部分没有阐述

在这里插入图片描述

现在已经理解了上图中的绝大部分内容:

  1. 操作系统是一个纯粹进行管理的内容,它可以管理我们电脑中的各个模块,并且管理驱动程序和底层硬件
  2. 操作系统不允许外界进行内部的直接访问,如果想要访问内部的数据可以借助接口来实现,操作系统可以将需要的内容传递到外界中
  3. 操作系统进行访问是需要进行逐层访问的,一般想要访问到底层的硬件或者驱动程序,需要从上到下依次访问到最底层才能访问到内容

那么现在还有一块:用户操作接口

这个模块的内容是用来做什么的?对于用户来说,想要调用系统的接口其实并不容易,系统的接口的调用不管从难度还是繁琐度来说,都不算一个容易的事,但是在实际开发中是需要进行经常调用的,因此就有了用户操作接口的内容,可以将繁琐的接口进行简化,下面举几个例子来理解这个概念:

  1. Linux中的bashshell的概念:Linuxbash作为命令行解释器,可以帮助我们进行一些命令的调用和解释,而bash实际上就是shell的一种,shell外壳就是面向用户的,将用户的指令翻译成操作系统可以听懂的语言,再执行后返回给用户
  2. Windows中的图形化界面的概念:在Windows中,看似是双击了文件夹,可以看到文件夹的管理等操作,实际上这个过程是很复杂的,图形化界面其实就相当于是上面的shell的概念,对于用户来说降低了使用成本,使得使用变得简单
  3. C语言中的很多库函数:当使用C语言写的第一个程序就会用到printf函数,那么这个函数是如何将我们写的代码中的信息打印到显示器上的?其实这个过程说白了也离不开操作系统的,因为没有操作系统的支持是不可能访问到底层硬件的,函数也就不可能执行后将信息打印到显示器上

那么到这里,对于操作系统的基本理解就告一段落,这是对操作系统的基本理解,后面还有很多的深入理解需要结合其他内容来解释

总结

总结一下操作系统的基本理解吧:

  1. 为什么会出现用户操作接口?因为系统调用起来太麻烦了,一般人调用起来的成本太高,作为用系统的人的角度,借助shell或者图形化界面可以更好地使用系统,作为开发的角度可以节约开发成本
  2. CC++的标准库实际上一定有系统调用的概念,否则就无法在屏幕上显示或在磁盘中的写入和读取
  3. 先描述再组织,先用struct对于事物的属性进行描述,再用一些其他的手段将这些内容组织起来,那么对于如何组织起来,就需要进行后面的学习总结了

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

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

相关文章

客户端和服务端信息交互模型

什么是客户端和服务端? 客户端:可以向服务器发请求,并接收返回的内容进行处理 服务器端:能够接收客户端请求,并且把相关资源信息返回给客户端的 当用户在地址栏中输入网址,到最后看到页面,中间都…

配置OSPFv3基本功能 华为笔记

1.1 实验介绍 1.1.1 关于本实验 OSPF协议是为IP协议提供路由功能的路由协议。OSPFv2(OSPF版本2)是支持IPv4的路由协议,为了让OSPF协议支持IPv6,技术人员开发了OSPFv3(OSPF版本3)。 无论是OSPFv2还是OSPFv…

服务器新建FTP文件备份的地址

步骤1:远程桌面连接 步骤2:输入服务器地址,账号,密码 服务器地址:IP地址 账号:Administrator 密码:123456 步骤3:点击这个一个小人的图标 步骤4:General–>Add–&g…

R语言进行孟德尔随机化+meta分析(1)---meta分析基础

目前不少文章用到了孟德尔随机化meta分析,今天咱们也来介绍一下,孟德尔随机化meta其实主要就是meta分析的过程,提取了孟德尔随机化文章的结果,实质上就是个meta分析,不过多个孟德尔随机化随机化的结果合并更加加强了结…

【数据链路层】网络基础 -- MAC帧协议与ARP协议

数据链路层认识以太网以太网帧格式(MAC帧)认识MAC地址对比理解MAC地址和IP地址认识MTUMTU对IP协议的影响MTU对UDP协议的影响MTU对于TCP协议的影响 再谈局域网转发原理(基于协议)ARP协议ARP协议的作用ARP协议的工作流程ARP数据报的格式 数据链路层 用于两…

《DevOps实践指南》- 读书笔记(九)

DevOps实践指南 25. 附录附录 1 DevOps 的大融合精益运动敏捷运动Velocity 大会运动敏捷基础设施运动持续交付运动丰田套路运动精益创业运动精益用户体验运动Rugged Computing 运动 附录 2 约束理论和核心的长期冲突附录 3 恶性循环列表附录 4 交接和队列的危害附录 5 工业安全…

【Java 基础篇】Java并发包详解

多线程编程是Java开发中一个重要的方面,它能够提高程序的性能和响应能力。然而,多线程编程也伴随着一系列的挑战,如线程安全、死锁、性能问题等。为了解决这些问题,Java提供了一套强大的并发包。本文将详细介绍Java并发包的各个组…

基于SpringBoot的在线商城系统设计与实现

目录 前言 一、技术栈 二、系统功能介绍 用户信息管理 商品分类管理 商品信息管理 轮播图管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储&#xff…

http的网站进行访问时候自动跳转至https

通常情况下我们是用的都是http的路径,对于https的使用也很少,但是随着https的普及越来越多的域名访问需要用到https的,这个我们就演示怎么设置在我们对一个http的网站进行访问时候自动跳转至https下。 用到的工具及软件: 系统:wi…

构建自动化测试环境:使用Docker和Selenium!

随着软件开发的日益复杂和迭代速度的加快,自动化测试被越来越广泛地应用于软件开发流程中。它能够提高测试效率、减少测试成本,并保证软件质量的稳定性。在构建自动化测试环境方面,Docker 和 Selenium 是两个非常有用的工具。下面将介绍如何使…

asp.net网站的建立及运行

点击创建新项目 在输入框中输入asp.net,并选择图中的 点击下一步 点击创建 然后,右键,添加,新建项 选择web窗体 点击添加 点击视图,工具箱 选择一个label,记住这个id 空白处右键,查看代码 添…

CIIS 2023丨聚焦文档图像处理前沿领域,合合信息AI助力图像处理与内容安全保障

近日,2023第十二届中国智能产业高峰论坛(CIIS 2023)在江西南昌顺利举行。大会由中国人工智能学会、江西省科学技术厅、南昌市人民政府主办,南昌市科学技术局、中国工程科技发展战略江西研究院承办。本次大会重点关注AI大模型、生成…

第七天:gec6818开发板QT和Ubuntu中QT安装连接sqlite3数据库驱动环境保姆教程

sqlite3数据库简介 帮助文档 SQL Programming 大多数关系型数的操作步骤:1)连接数据库 多数关系型数据库都是C/S模型 (Client/Server)sqlite3是一个本地的单文件关系型数据库,同样也有“连接”的过程 2)操作数据库 作为程序员&am…

大数据(九):数据可视化(一)

专栏介绍 结合自身经验和内部资料总结的Python教程,每天3-5章,最短1个月就能全方位的完成Python的学习并进行实战开发,学完了定能成为大佬!加油吧!卷起来! 全部文章请访问专栏:《Python全栈教…

Vue之vue-cli搭建SPA项目

目录 ​编辑 前言 一、vue-cli简介 1. 什么是vue-cli 2. vue-cli的重要性 3. vue-cli的应用场景 二、Vue-cli搭建SPA项目 1. 构建前提(node.js安装完成) 2. 安装vue-cli 3. 使用脚手架vue-cli(2.X版)来构建项目 4. 分析创建spa项目的八个问题 …

Android:创建jniLibs的步骤

一、前言: android libs,jniLibs库的基本使用 libs,jniLibs用来存放各种.so库文件。如果没有jniLibs目录需要自己手动创建,并且库名称也不能随便更改。 二、解决方案: 我之前弄了好久也弄不出来,之前有说…

学习记忆——宫殿篇——记忆宫殿——记忆桩——工人宿舍

脸盆铁盒白色泡沫绳子电热炉 6. 椅子 7. 门帘 8. 塑料 9. 书 10.安全帽 11. 凳子 暖壶烟灰缸计算器水杯刷子

selenium+python实现基本自动化测试

安装selenium 打开命令控制符输入:pip install -U selenium 火狐浏览器安装firebug:www.firebug.com,调试所有网站语言,调试功能 Selenium IDE 是嵌入到Firefox 浏览器中的一个插件,实现简单的浏览器操 作的录制与回…

会C++还需要再去学Python吗?

提到的C、数据结构与算法、操作系统、计算机网络和数据库技术等确实是计算机科学中非常重要的基础知识领域,对于软件开发和计算机工程师来说,它们是必备的核心知识。掌握这些知识对于开发高性能、可靠和安全的应用程序非常重要。Python作为一种脚本语言&…

【每日一题】74. 搜索二维矩阵

74. 搜索二维矩阵 - 力扣(LeetCode) 给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非递减顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返…