深入了解Linux系统—— 操作系统

一、冯诺依曼体系结构

在这里插入图片描述

现在我们常见的计算机(笔记本电脑等)和不常见的计算机(服务器)它们都满足冯诺依曼体系。

我们可以把计算机理解成一个个硬件组成的

  • 输入设备:键盘、鼠标、摄像头、网卡、磁盘等
  • 输出设备:显示屏、打印机、网卡、磁盘等
  • 中央处理器CPU: 运算器+控制器
  • 存储器:本质就是内存

理解输入输出IO Input/Output <-> IO,我们要站在内存的角度去理解,将数据输入到内存这是输入Input;将数据从内存输出,这是输出Output

在这里插入图片描述

1. 理解软件(程序)运行为什么要加载到内存?

我们知道软件(程序)在运行之前,必须要先加载到内存,但是我们不知道这为什么?

了解了冯诺依曼体系结构,就知道了为什么,因为体系结构规定了。

程序在加载到内存之前,在哪?很显然在磁盘中(也就是外存)

通过观察冯诺依曼体现结构,我们能够发现,CPU只能在内存中读取和写入数据;那我们的程序要像在CPU中运行,那就必须要先加载到内存中。

那程序要加载到内存中,这不就是将数据(我们写的代码也是数据)输入到内存(Input)操作吗(简单来说,就是将数据拷贝到内存中)。

在这里插入图片描述

3. 内存

看到这里,我们可能有一个疑问:为什么要有内存呢?CPU直接从输入设备中读取数据,然后将数据输出到输出设备不也可以吗?

对于整个问题,我们要考虑一个问题,我们CPU处理数据是速度是很快的,如果我们CPU直接和输入输出设备进行数据交互,那我们整体效率就取决于输入输出设备的效率的;

所以要存在内存,我们CPU从内存中读取数据,这样可以平衡我们输入输出设备和CPU之间的速度差距(在程序运行之前通过特定的算法将数据先加载到内存)。

那这里我们理解了,还有一个疑问,CPU之和内存进行数据交互,那为什么不直接使用内存来存储数据呢?

简单来说,就是内存太贵了,如果全部使用内存来存储数据,那一台计算机的价格就非常高了。

2.理解数据流动

在冯诺依曼体系结构中,存在数据信号控制信号;这里我们抛开控制信号不谈,现在来了解一下数据,以及数据流动。

现在我们想象一个场景,和你的女朋友在微信上聊天,你发送的信息是如何显示到你女朋友是显示器上的呢?

简单来说,这简单啊:我通过键盘将信息输入到微信中,然后微信通过网络将信息发送到我女朋友的微信中,然后显示到她的显示器上。

但是微信又是如何将数据发送的呢?

这里我们站在硬件的角度,从冯诺依曼体系结构来理解这个数据是如何传输的。

首先,我们将你女朋友使用的两台计算机设备想象成两个冯诺依曼体系;

我们要像使用微信发送信息,那就一定要让微信运行起来(就是将微信程序加载到内存,在CPU中执行);

对于你的这个冯诺依曼体系来说:

输入设备:就是键盘,你通过键盘输入信息。

信息从输入设备加载到内存,然后通过微信这一个程序对数据进行一系列操作(加密等操作),然后数据由内存到输出设备。(此时你的输出设备就是网卡

然后数据通过网络(一系列操作),将数据传输到你女朋友的计算机(冯诺依曼体系结构中);

对于女朋友的计算机冯诺依曼体现结构来说:

此时输入设备就是网卡;

数据从网卡(输入设备),然后加载到内存中,再通过微信这一个程序,对数据进行一系列操作(解密),然后数据从内存中到输出设备中。

此时输出设备就是显示器。

这样你发送的信息就显示到了你女朋友的显示器上。

看到这里,应该多多少少有一点理解数据流动了。

这里我们发送信息之后,我们的显示器中也可以看到发送的信息,那就是我们的输出设备还用显示器

这里如果我们发送的是一个文件呢?

此时你的输入设备就是磁盘(我们将文件拖拽到微信聊天框中这一操作,本质上就是从从磁盘中读入数据)

而此时你女朋友的输出设备就是磁盘(接收文件就是将文件保存到磁盘中)

在这里插入图片描述

二、操作系统

就目前来说,我们并不知道操作系统是什么,是干什么;

简答来说,操作系统是一个基本的程序集合;

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

从广义上来说,操作系统包括:内核(进程管理、文件管理、内存管理和驱动管理);其它程序(函数库、shell程序等)

但是狭义上我们也可以认为操作系统内核就是操作系统;

在这里插入图片描述

理解了操作系统是什么,我们现在来看操作系统是干什么的:

这里先说结论:

  • 为用户程序(应用程序)提供一个良好的运行环境。
  • 与硬件交互,管理所有的硬件资源。

试想一下,如果没有操作系统,就一堆硬件摆在我们面前,我们能不能使用?显然是不能的

软硬件体系结构

在这里插入图片描述

看上图,这是计算机软硬件体系结构;我们可以看到它分为三个部分用户部分系统软件部分硬件部分

之前我们使用计算机,都是通过操作系统,来进行我们的一系列操作;就比如linux中的基本命令,这是shell外壳为我们包装好的指令,方便我们使用。

通过观察上图,我们可以发现系统调用接口驱动程序这些我们之前听都没听过;

系统调用

通过这个名字,就感觉好高级,我们是不是不能随意的使用系统调用,准确来说是的;

系统调用其实就是函数,只不过是操作系统提供的函数。

我们如果访问操作系统,就必须通过系统调用

这个理解起来应该很简单,操作系统不想我们之间去访问它,所以提供了系统调用;我们可以通过系统调用来访问操作系统。

一个程序,如果访问了硬件,那么它一定贯穿整个体系结构

什么意思呢,就比如我们通过指令向文件中写入数据,指令是shell外壳提供的,它对系统调用进行封装形成指令供我们使用,而操作系统呢,通过驱动程序,来访问硬件资源进行操作。

库里面就可能进行了系统调用的封装

我们C语言中的printfscanfprintf是将数据输出到显示器,scanf是从键盘中读取程序,它们底层就是对系统调用进行了封装。

理解操作系统

这里简单来说,在整个计算机软硬件架构中,操作系统的定位是:⼀款纯正的搞管理的软件

理解管理

操作系统在管理软硬件资源的软件,那如何去理解这个管理呢?

在我们日常生活中也存在很多管理的实例,那这个管理和操作系统管理软硬件一样吗?

博主是一名大学生,在大学中,我们简化成学生老师校长

那在这个管理实例中,是谁在管理谁呢?

一个事情,可以分为决策和执行;

在上面例子中,我们学生肯定就是被管理者,而老师是执行者,校长则是决策者。

  • 管理者和被管理者不需要见面(简单来说就是,我们学生不需要见到校长,也能被管理起来)
  • 如何管理?这很简单,通过信息(数据)管理
  • 如何得到数据?(通过中间层获取,每个学校都有学生管理系统,我们在这个系统中可以查到我们的所有信息)

我们学校刚成立不久,学生很少,校长管理起来非常容易,搞一个execl表格,这个表格中存储着我们所有学生的信息;

这样校长管理我们学生,就直接对这些数据进行管理:简单来说就是对这些数据增删查改。

但是随着学校发展,学生越来越多,这个表格中数据太多了,校长管理不过来了;

如果让我们去解决,把我们是不是就要搞一个数据结构(链表/顺序表),将这些信息存储到计算机里面(学生的信息无非就是姓名、学号、性别、年龄等等)我们搞一个结构体来存储这些信息;那这样我们就可以使用数据结构将这些学生的信息存储起来;

那我们就可以将这些信息存储到计算机中,然后对这些数据结构进行增删查改操作,不就将学生管理起来了吗。

那对于学生的管理工作,不就转化成对链表的增删查改操作了吗(这里过程也称为建模)

建模的过程其实就是先描述、再组织

我们将学生信息使用一个struct结构体存储起来,这不就是对学生信息的描述吗;

我们将数据存储到数据结构中,这不就是将数据组织起来吗。

在这里插入图片描述

先描述、在组织

说了这么多,我们这里只需要知道先描述、在组织就OK了。

那我们生活中的实例和操作系统管理硬件一样吗?

可以说是一样的

我们操作系统管理硬件资源,是不是也是对硬件资源信息的管理,只需要知道硬件的信息,就可以对硬件进行管理。

理解系统调用

操作系统要对上提供对应的服务,但是呢,操作系统有不信任任何人;(这句话听起来很别扭,操作系统要给我们提供对应的服务,又不信任我;这就跟我们生活中的银行一样,它要给我们提供相应的服务(存钱、取钱、转账等),但同时它又不信任我们,只是通过柜台窗口,让我们进行存钱、取钱等。)

那操作系统如何提供对应的服务呢? 就是系统调用

系统调用其实就是函数,函数要有参数和返回值吧,用户就可以通过这些参数和返回值来实现用户和操作系统之间的数据交互。

**但是这里有疑问:**我们不了解系统调用, 不会使用系统调用啊?

这就像一个不认识字的人去银行,银行通过了窗口来办理业务,但是这个人不会,不知道要做什么,这时,我们银行内的工作人员就会帮助这个人去办理业务;

这就祥我们一样,我们不了解系统调用,我们该如何去使用呢?

这是就有shell指令等,它们通过对系统调用的封装,让我们不知道系统调用的情况下,也可以使用计算机,访问操作系统。

到这里,本篇文章就已经接近尾声了,现在来做一个简单总结:

冯诺依曼体系结构:理解数据流动,内存等

操作系统:操作系统是什么,理解管理

这时,我们银行内的工作人员就会帮助这个人去办理业务;

这就祥我们一样,我们不了解系统调用,我们该如何去使用呢?

这是就有shell指令等,它们通过对系统调用的封装,让我们不知道系统调用的情况下,也可以使用计算机,访问操作系统。

到这里,本篇文章就已经接近尾声了,现在来做一个简单总结:

冯诺依曼体系结构:理解数据流动,内存等

操作系统:操作系统是什么,理解管理

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

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

相关文章

RPG7.准备GAS的工作

1.启动项目&#xff0c;为项目添加gameplayability插件 2.添加abilitysystemcomponent的c类 3.添加attributeset的c类 4.往build.cs内添加模块 5.进入CharacterBase内&#xff0c;添加gameplayasystem和attributbeset&#xff0c;覆写PossessedBy()和GetAbilitysystemcomponent…

使用gitea发布软件包

1、新建hello工程 &#xff08;1&#xff09;HelloApplication.java package cn.ac.trimps.sv;import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplicati…

从请求到响应:初探spring web

引入&#xff1a; 首先小编想分享下一些开发小知识 2000年——手写servlet/JSP时代 在这个阶段中&#xff0c;那时候写后端代码&#xff0c;可谓是个麻烦事。 毕竟什么都要自己干 发来的请求都要写extends HttpServlet的类&#xff0c;手动在web.xml配置 <servlet>…

Redis从入门到实战实战篇2

面试重点&#xff1a;本篇包含悲观锁&#xff0c;乐观锁&#xff0c;多线程以及分布式锁的知识 目录 3.优惠卷秒杀 3.1 -全局唯一ID 3.2 -Redis实现全局唯一Id 3.3 添加优惠卷 3.4 实现秒杀下单 3.5 库存超卖问题分析 3.6 乐观锁解决超卖问题 3.7 优惠券秒杀-一人一单 …

LabVIEW实验室项目中使用类模块与仿真

在 LabVIEW 程序开发过程中&#xff0c;借鉴面向对象的类思想进行模块化架构设计&#xff0c;并结合仿真功能&#xff0c;能够高效应对不同场景的开发需求。 ​ 以实验室场景为例&#xff0c;LabVIEW 开发常面临设备种类繁多、调试周期漫长&#xff0c;且硬件难以一次性到位的情…

ES6入门---第二单元 模块三:对象新增、

一&#xff1a;对象简洁语法&#xff1a; 1、变量简洁 <script>let name Strive;let age 18;let json {name, //name:name,age //age:age};console.log(json);</script> 2、函数简洁 let json {name, //name:name,age, //age:age/* showA:functi…

Python创意:AI图像生成——用代码绘制未来艺术

当代码邂逅艺术:AI图像生成的革命 在数字艺术领域,一场由Python和AI技术引领的革命正在悄然发生。无需专业绘画技巧,仅凭几行代码,普通人也能创造出令人惊叹的艺术作品。AI图像生成技术打破了艺术创作的门槛,让想象力成为唯一的限制。 核心技术方案 1. 技术架构 我们采…

一、Shell 脚本基础

一、Shell 简介 1.Shell 的定义与作用 Shell&#xff0c;通常被称为命令行解释器 (Command Line Interpreter)&#xff0c;是用户 &#x1f464; 与 Linux/Unix 操作系统内核进行交互 ↔️ 的“桥梁” &#x1f309;。它扮演着翻译官 &#x1f5e3;️ 的角色&#xff1a; 接…

青少年编程与数学 02-018 C++数据结构与算法 21课题、机器学习与人工智能算法

青少年编程与数学 02-018 C数据结构与算法 21课题、机器学习与人工智能算法 一、线性回归算法二、逻辑回归算法三、K近邻算法&#xff08;K-Nearest Neighbors, KNN&#xff09;四、决策树算法五、支持向量机&#xff08;SVM&#xff09;六、神经网络算法七、聚类算法八、降维算…

【数据结构】——单链表练习(1)

一、移除链表元素 题目链接&#xff1a; 移除链表元素 那么根据题目的要求我们大致明白这道题要做什么&#xff0c;就是将一个链表中&#xff0c;和指定的值相等的元素的节点删除&#xff0c;然后返回删除后的新的链表&#xff0c;然后题目给我们传入的参数是链表的头节点和指…

AI大模型基础设施:主流的几款开源AI大语言模型的本地部署成本

以下是对目前主流开源AI大语言模型&#xff08;如DeepSeek R1、LLaMA系列、Qwen等&#xff09;本地部署成本的详细分析&#xff0c;涵盖计算机硬件、显卡等成本&#xff0c;价格以美元计算。成本估算基于模型参数规模、硬件需求&#xff08;GPU、CPU、RAM、存储等&#xff09;以…

AI生成视频检测方法及其相关研究

目录标题 【1】AI-Generated Video Detection via Spatio-Temporal Anomaly Learning【2】DeCoF: Generated Video Detection via Frame Consistency【2.1】Spatiotemporal Convolutional Neural Networks (STCNN) rely on spatial artifacts【2.2】Capturing Universal Spatia…

仿腾讯会议——服务器注释

目录 1、修改协议 2、修改登录请求结构体 3、修改登录回复结构体 4、修改注册请求结构体 5、修改发送登录请求函数 6、实现发送注册请求函数 7、修改mysql存储数据格式 8、自己完成部分 1、修改协议 2、修改登录请求结构体 3、修改登录回复结构体 4、修改注册请求结构体…

list的迭代器详讲

1.list的迭代器就是封装了节点指针的类 2.迭代器失效 迭代器失效即迭代器封装的节点指针无效 。因为 list 的底层结构为带头结点的双向循环链表 &#xff0c;因此 在 list 中进行插入时是不会导致 list 的迭代 器失效的&#xff0c;只有在删除时才会失效&#xff0c;并且失效的…

deepSeek论文写作提示词指令大全(覆盖选题、写作、润色到投稿全流程)

一、选题与框架设计 1、跨学科选题突破 指令:"结合[领域A]与[领域B]的前沿理论,生成5个交叉创新性论文选题,要求每个选题包含可行性评估。"(支持跨学科研究创新) 示例:"在人工智能与教育心理学领域生成选题,分析理论适用性与资源获取难度。" 2、…

win11安装WSL(创建用户、更改或重置密码)

文章目录 win11安装WSL设置 Linux 用户名和密码更改或重置密码更新和升级软件包WSL 命令互操作性WSL 的基本命令安装列出可用的 Linux 发行版列出已安装的 Linux 发行版将 WSL 版本设置为 1 或 2设置默认 WSL 版本设置默认 Linux 发行版将目录更改为主页通过 PowerShell 或 CMD…

Vue.js 与 Ajax (vue-resource) 的深入解析

Vue.js 与 Ajax (vue-resource) 的深入解析 引言 在Web开发中,前后端的交互是不可或缺的。Ajax(异步JavaScript和XML)技术允许我们在不重新加载整个页面的情况下,与服务器交换数据和更新部分网页内容。Vue.js 作为一种流行的前端框架,提供了多种方式来处理Ajax请求。其中…

第十三章-PHP MySQL扩展

第十三章-PHP与MySQL 一&#xff0c;连接数据库 1. 使用 MySQLi&#xff08;面向对象方式&#xff09; <?php // 数据库参数 $host localhost; $username root; $password ; $database test_db;// 创建连接 $conn new mysqli($host, $username, $password, $databa…

【文献阅读】全球干旱地区植被突变的普遍性和驱动因素

一、研究背景 全球干旱区&#xff08;drylands&#xff09;覆盖了陆地面积的40%以上&#xff0c;承载了全球约三分之一人口&#xff0c;是生态系统脆弱性较高的区域。这些地区对气候变化和人类干扰尤其敏感。近年来&#xff0c;干旱区发生了大量植被突变现象&#xff0c;即生态…

【Vue3-Bug】中路由加载页面直接显示空白

Vue3中路由加载页面直接显示空白 没有子路由 路由定义不能重复&#xff0c;请自己查看数据在main.js(或者)mina.ts入口文件中&#xff0c;需要将router的注入到vue中的执行放在&#xff0c;vue挂在元素之前 // 顺序不能变 app.use(router) app.mount(#app)在App.vue中 // 在…