当前位置: 首页 > news >正文

深度理解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指令等,它们通过对系统调用的封装,让我们不知道系统调用的情况下,也可以使用计算机,访问操作系统。

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

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

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

相关文章:

  • Maven的概念与初识Maven
  • Android JIT( ART即时编译器),Just In Time Compiler,即时编译技术
  • 【大模型】Coze AI 智能体工作流从配置到使用实战详解
  • Simulink 数据存储机制:Base Workspace、Model Workspace 与 Data Dictionary 的核心区别
  • Python + Playwright:如何在Docker 容器运行测试?
  • docker容器运维工具——ctop
  • 基于Spring AI Alibaba + Spring Boot + Ollama搭建本地AI对话机器人API
  • node入门和npm
  • 当自动驾驶遇上“安全驾校”:NVIDIA如何用技术给无人驾驶赋能?
  • java智慧城管综合管理系统源码,前端框架:vue+element;后端框架:springboot;移动端:uniapp开发,技术前沿,可扩展性强
  • 图像处理——边缘检测
  • RASP技术在DevOps中的安全应用
  • 冯·诺依曼和哈佛架构​​​​两种架构的总线组成及核心特点
  • Flink反压问题解析
  • 1--Python基础课程实验指导书
  • linux blueZ 第四篇:BLE GATT 编程与自动化——Python 与 C/C++ 实战
  • CSS3布局方式介绍
  • 性能提升手段--池化技术
  • PySpark实现ABC_manage_channel逻辑
  • 精益数据分析(25/126):关键指标驱动业务发展
  • 第一集丨《无尽的尽头》值得关注,《榜上佳婿》平平无奇
  • 广州一人均500元的日料店回收食材给下一桌?市场监管部门介入调查
  • 民航局:预计五一假期民航旅客运输量创同期历史新高,将加强价格管理
  • 驻美国使馆发言人就美方希就关税问题与中方对话答记者问
  • 财政部部长蓝佛安:中国将采取更加积极有为的宏观政策
  • 铜钴巨头洛阳钼业一季度净利润同比大增九成,最新宣布首度进军黄金矿产