【Linux】冯.诺依曼体系结构与操作系统

简介: 【Linux】冯.诺依曼体系结构与操作系统

冯.诺依曼体系结构



什么是冯诺依曼体系结构?


我们如今的计算机比如笔记本,或者是服务器,基本上都遵循冯诺依曼体系结构,所谓冯诺依曼体系实际上就是我们的计算机是由以下这些硬件构成:输入设备、存储器、运算器、控制器、输出设备。


输入设备:计算机的本质实际上就是 对数据进行计算,通过 输入设备来采集信息。常见的输入设备比如:键盘、鼠标、网卡、磁盘...

存储器:这里主要是指 内存,它的存在能 大大的提高计算机的运行效率。

运算器+控制器:即 中央处理器CPU,对数据进行计算

输出设备: 将数据提供给用户,常见的比如:显示器、磁盘、网卡等

我们一般将输入设备与输出设备统称为外设。并且同一个设备既可以是输入设备,也可以是输出设备(比如磁盘、网卡等)


1.png


上面说了,正是因为存储器,也就是内存的存在,所以我们的计算机的整体效率才会整体得到提升,那么为何会这样呢?接下来我们谈一谈内存存在的意义。


为什么要有内存


假如没有内存的存在,实际上我们的外设的运行效率(比如磁盘)相较于cpu来说,是非常慢的,而此时计算机的整体效率并不是以cpu为主,而是以外设为主。举个例子来说,一桶水,最多能装多少水并不是由最长的那块木板所决定的,而是由最短的那块木板决定。


2.png


内存存在的意义


内存可以存储数据,正是因为内存的存在,使得OS可以对数据做预加载。这样CPU后面再进行计算时,就不需要访问外设,只需要伸手向内存要数据就可以了,这样计算机的整体运行效率就会以内存的运行效率为主。而内存的运行效率是大于外设的,因此,我们计算机的运行效率由于内存的存在,得到了很大的提升。因此,我们也可以这么说:内存的存在是为了适配外设与CPU的速度不匹配问题。


得到结论:


在数据层面,一般CPU不会直接和外设进行直接沟通,而是直接只和内存打交道!也就是说,我们的程序在运行时,必须要将数据加载到内存中,这是由硬件体系结构决定的。(用硬件的方案来解释软件的行为)


在数据层面,外设只和内存打交道


了解冯诺依曼体系结构后,我们便可以回答这么一个问题:


在硬件层面,单机和跨主机之间数据流是如何流向的?


在单机方面很好理解,遵循 冯诺依曼体系,在跨主机之间,数据流又是如何流向的呢?就比如说,张三给李四通过qq,发送信息,不考虑网络的情况下,那么数据流的流向是什么?其实也是遵循冯诺依曼体系,两台计算机之间的数据流向,我们可以 将这两台计算机看作两个冯诺依曼体系。


张三通过键盘(外设)输入信息,信息加载到内存,被cpu经过计算后再返回给内存,再从内存输出到显示器,此时张三自己的计算机上面就可以看到自己发送的信息。该信息通过网卡,被李四接收,再被加载到内存,然后cpu进行计算,再返回给内存,然后输出到李四的显示器上,此时李四就可以看到张三发送的信息。


跨主机之间数据流流向


3.png


我们知道,计算机的效率得到提升得益于数据会被预加载到内存,那么这个预加载是由谁来完成的呢?实际上就是我们的操作系统,接下来我们来谈一谈操作系统。


操作系统(os)



什么是操作系统?


任何计算机系统都包含一个基本的程序集合,即操作系统。笼统的说,操作系统包含:操作系统内核(进程管理、内存管理,文件管理,驱动管理)与其它程序(函数库、shell程序等)。


我们所知的常见的有Linux、Windows、unix、MAC等


4.png


操作系统的作用


操作系统是一款软件,为我们人服务的,OS对软硬件资源进行管理,从而为用户提供良好(安全、稳定、高校、功能丰富)的执行环境。


这里我们来谈一谈什么是管理?


先来说结论:管理的本质就是:先描述,再组织(这六个字将贯穿以后的学习)


任何一个庞大的系统,都需要有特定的人或事物进行管理。就比如说我们的学校系统,这里不考虑一些官方因素。整个学校是由我们的校长来进行管理,而我们作为学生,只是作为被管理的对象。我相信大家肯定没怎么见过校长,那么他是如何对我们进行管理呢?答案是 通过管理我们学生录入到教务系统的数据,从而达到管理我们学生。那么校长又是如何拿到我们的数据的呢?答案是通过 辅导员。

因从我们可以说,校长想要管理我们,并不需要与我们直接沟通,而是通过辅导员拿到我们的数据,从而通过管理这些数据来达到管理我们。这里,校长就相当于 操作系统,这些 学生就相当于软硬件资源。


5.png


这里再来总结一下:


管理的本质:先描述,再组织。


管理与被管理者之间不需要直接沟通


操作系统如何管理软硬件资源?答案:先描述,再组织(获取软硬件资源的内容和属性到某种特定的结构体里,再通过某种数据结构进行组织。这样对软硬件资源的管理就变成了对数据结构的增删查改)


系统调用


虽然 操作系统为我们提供功能丰富的服务,但是操作系统并不信任我们,也就是说 我们无法直接使用操作系统。就好比整个银行系统,银行为人类提供服务,但是银行并不信任人们,我们在存钱的时候银行总不能说:哎伙计,我信任你,你登录我们的系统自己修改一下数据吧。或者干脆你直接来我们金库,把你的二百元放在旁边人家的二百万附近。这肯定是不现实的。

那么银行是怎么供人使用的呢?答案 是通过一个个的窗口,不同的使用需求去不同的窗口。 操作系统也是如此,会往外提供各种接口,来供人们使用。这就是系统调用!


6.png


但是由于系统调用的使用成本过高,因为并不是人人都懂如何使用,所以那些大牛们就往上又设计出来了比如图形化界面、shell外壳等,然后再往上,就是程序员开发好的简洁高效的执行环境以提供群体用户使用。


7.png


计算机软硬件体系结构


系统调用的好处:保证了OS的封装性,使用户不能直接访问OS,但同时又保证了OS可以给人提供特定的功能!


相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
8天前
|
存储 安全 Linux
探索Linux操作系统的心脏:内核
在这篇文章中,我们将深入探讨Linux操作系统的核心—内核。通过简单易懂的语言和比喻,我们会发现内核是如何像心脏一样为系统提供动力,处理数据,并保持一切顺畅运行。从文件系统的管理到进程调度,再到设备驱动,我们将一探究竟,看看内核是怎样支撑起整个操作系统的大厦。无论你是计算机新手还是资深用户,这篇文章都将带你领略Linux内核的魅力,让你对这台复杂机器的内部运作有一个清晰的认识。
25 3
|
8天前
|
存储 数据挖掘 Linux
服务器数据恢复—Linux操作系统网站服务器数据恢复案例
服务器数据恢复环境: 一台linux操作系统服务器上跑了几十个网站,服务器上只有一块SATA硬盘。 服务器故障: 服务器突然宕机,尝试再次启动失败。将硬盘拆下检测,发现存在坏扇区
|
24天前
|
存储 缓存 Linux
深度探索Linux操作系统 —— Linux图形原理探讨3
深度探索Linux操作系统 —— Linux图形原理探讨
28 9
|
20天前
|
安全 Linux 开发工具
探索Linux操作系统:从命令行到脚本编程
【8月更文挑战第31天】在这篇文章中,我们将一起潜入Linux操作系统的海洋,从最基础的命令行操作开始,逐步深入到编写实用的脚本。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供新的视角和实用技能。我们将通过实际代码示例,展示如何在日常工作中利用Linux的强大功能来简化任务和提高效率。准备好了吗?让我们一起开启这段旅程,探索Linux的奥秘吧!
|
21天前
|
存储 人工智能 数据管理
深入理解Linux操作系统之文件系统管理探索人工智能:从理论到实践的旅程
【8月更文挑战第30天】在探索Linux的无限可能时,我们不可避免地会遇到文件系统管理这一核心话题。本文将深入浅出地介绍Linux文件系统的基础知识、操作命令及高级技巧,帮助你更有效地管理和维护你的系统。从基础概念到实践应用,我们将一步步揭开Linux文件系统的神秘面纱。
|
6天前
|
存储 监控 安全
探究Linux操作系统的进程管理机制及其优化策略
本文旨在深入探讨Linux操作系统中的进程管理机制,包括进程调度、内存管理以及I/O管理等核心内容。通过对这些关键组件的分析,我们将揭示它们如何共同工作以提供稳定、高效的计算环境,并讨论可能的优化策略。
13 0
|
20天前
|
网络协议 Linux Shell
探索Linux操作系统:从基础到高级编程
【8月更文挑战第31天】本文旨在为读者提供一条清晰的路径,从Linux操作系统的基础知识出发,逐步深入到高级编程技巧。我们将一起揭开Linux神秘的面纱,了解其内部工作原理,并通过实际代码示例加深理解。无论你是初学者还是有一定经验的开发者,这篇文章都将为你带来新的视角和技能提升。
|
20天前
|
Linux
探索Linux操作系统:命令行与脚本编程基础
【8月更文挑战第31天】在这篇文章中,我们将一起踏上一段旅程,深入探索Linux操作系统的奥秘。通过学习命令行的使用和编写简单的脚本,你将能够更高效地与你的计算机进行交流。无论你是新手还是有经验的用户,本文都将为你打开一扇通往Linux世界的大门。准备好了吗?让我们开始吧!
|
20天前
|
Linux
探索Linux操作系统的启动过程
【8月更文挑战第31天】本文将深入探讨Linux系统从按下电源键到登录界面出现之间的神秘世界。我们将一步步揭开内核加载、初始化进程启动和系统服务运行的面纱,同时通过实际代码示例,揭示这一切是如何精妙地编织在一起的。无论你是系统管理员还是对操作系统感兴趣的爱好者,这篇文章都将给你带来新的视角和深刻的见解。
|
20天前
|
存储 Linux 调度
深入理解Linux操作系统的启动过程
【8月更文挑战第31天】本文将深入探讨Linux操作系统的启动过程,包括BIOS、内核、init进程等关键步骤。我们将通过实际代码示例,揭示Linux启动过程中的奥秘,帮助读者更好地理解和掌握Linux系统。