Linux - 冯-诺依曼体系结构、初始操作系统

目录

冯•诺依曼体系

  结构推导

  内存提高效率的方法

  数据的流动过程

  体系结构相关知识

初始操作系统

  定位

  设计目的

  操作系统之上之下分别有什么

  管理精髓:先描述,再组织


冯•诺依曼体系

  结构推导

计算机基本工作流程图大致如下:

  1. 输入设备:接受用户输入的数据或指令,例如键盘、鼠标、扫描仪等。
  2. 中央处理器(CPU):负责执行数据的算术和逻辑运算。包括:
    • 算术逻辑单元(ALU):执行所有算术和逻辑操作。
    • 控制单元(CU):负责指挥整个计算机系统各个部件的工作。
  3. 内存:用于存储数据和指令的临时存储区域。包括:
    • 随机存取存储器(RAM):存储当前正在使用的数据和指令。
    • 只读存储器(ROM):存储重要的固件和系统启动程序。
  4. 外部存储设备:用于长期存储数据,例如硬盘、光盘、U盘等。
  5. 输出设备:将处理结果输出显示给用户,例如显示器、打印机、音响等。

        计算机的主要作用是解决人们的问题。为了实现这一目标,首先需要将数据或问题输入到计算机中,因此计算机必须配备输入设备。在计算机处理完问题后,还需要将结果显示出来,所以计算机必须配备输出设备。通过输入设备获取数据后,计算机会对这些数据进行一系列的算术运算和逻辑运算,最后通过输出设备将结果输出。整个过程可以总结为以下流程图。

        然而,计算机不仅仅需要具备算术运算和逻辑运算功能,还需要具备控制功能,以便控制何时从输入设备获取数据,何时将数据输出到输出设备等。在C语言中,算术运算对应一系列的加、减、乘、除操作,逻辑运算对应一系列的逻辑与、逻辑或等操作,而控制功能则对应于C语言中的条件判断、循环结构以及各个函数之间的跳转等。

        因此,我们将这个具有算术运算功能、逻辑运算功能以及控制功能的模块称为中央处理器,简称CPU。 

        然而,相对于中央处理器,输入设备和输出设备的速度非常慢。因此,在当前的计算机体系中,输入设备和输出设备的速度显得很慢,而CPU的速度非常快。根据木桶原理,整体系统的速度最终会受到最慢部分的限制,因此整个系统的表现速度将会是很慢的。

        因此,当前的体系结构显然是不合适的。为了解决这个问题,我们不再让输入设备和输出设备直接与CPU交互,而是在它们之间加入了内存。

        内存的一个特点是其速度远快于输入设备和输出设备,但又比CPU慢。因此,内存处于慢设备和快设备之间,作为一个不快也不慢的设备,能够在这个体系结构中起到缓冲作用。

        现在的体系运行流程如下:用户输入的数据首先被存放到内存中,CPU需要读取数据时直接从内存中读取。CPU处理完数据后将其写回内存,然后内存再将数据传输到输出设备,最后由输出设备进行输出显示。

        这就形成了最终的冯诺依曼体系结构。 

注意: 这里存储器只是内存,不包括外存。 

  内存提高效率的方法

        很多人有一个疑惑:先将输入设备的数据交给内存,再由内存将数据交给CPU,这个过程真的比CPU直接从输入设备获取数据更快吗?

        在解释这个问题之前,我们首先需要了解:内存具有数据存储的能力。虽然内存的容量只有4G或8G,但既然内存有容量,就意味着它具有预装数据的能力,而这正是提高该体系结构效率的秘诀。

        这里不得不提到局部性原理:根据统计学原理,当一个数据正在被访问时,下次很可能会访问其周围的数据。因此,当CPU需要获取某一行数据时,内存可以将该行数据及其周围的数据一同加载进来。CPU处理数据和内存加载数据可以同时进行,这样下次CPU就可以直接从内存中获取数据。

        输出数据时也是如此:CPU处理完数据后直接将数据放到内存中,当输出设备需要时再从内存中获取。这就引出了我们常说的缓冲区的概念。例如,缓冲区满了才将数据打印到屏幕上,使用fflush函数将缓冲区中的数据直接输出等,都是将内存中的数据直接传递到输出设备进行显示输出。

  数据的流动过程

        要使用QQ,首先需要联网。你和你朋友的电脑都采用冯诺依曼体系结构。在你向朋友发送消息的过程中,你的电脑中键盘充当输入设备,显示器和网卡充当输出设备;而你朋友的电脑中,网卡充当输入设备,显示器充当输出设备。

        首先,你在键盘上输入消息,键盘将消息加载到内存。此时,你的显示器可以从内存获取消息并显示在你自己的屏幕上,这样你就能看到自己所发送的消息。

        当键盘将消息加载到内存后,CPU从内存获取消息并对其进行各种封装,然后将封装好的消息写回内存。接下来,你的网卡可以从内存获取已封装的消息,并在网络中经过一系列处理(此处忽略网络处理细节)。之后,你朋友的网卡从网络中获取到你发送的消息,并将该消息加载到内存中。

        然后,你朋友的CPU从内存中获取消息并进行解包操作,将解包好的消息写回内存。最后,你朋友的显示器从内存中获取消息,并将其显示在他的电脑上。

  体系结构相关知识

        根据冯诺依曼体系结构,从硬件角度或数据层面来看,CPU只能直接与内存交互,外设也只能通过内存来进行数据交换。这也解释了为什么程序在运行之前必须先加载到内存中:因为可执行程序(文件)存储在硬盘上(外设),而CPU只能从内存中获取数据,所以必须先将程序加载到内存中才能执行。

常见的输入设备和输出设备包括:

  • 输入设备:键盘、鼠标、网卡、硬盘、话筒、摄像头、扫描仪等。
  • 输出设备:显示器、音响、网卡、硬盘、打印机等。

注意:同一种设备在不同情境下可能作为输入设备或输出设备。

        在硬件层面上,各个硬件单元之间通过总线连接。外设与内存之间的总线称为I/O总线,而内存与CPU之间的总线称为系统总线

        在实际操作中,例如键盘输入,键盘会先将获取到的内容存储在自己的寄存器中,然后通过寄存器将数据写入内存。

        这种体系结构确保了数据在各个硬件设备之间的有效交换和协作,同时提供了高效的数据传输和处理能力。

初始操作系统

  定位

        操作系统在计算机系统中的定位非常重要,它是控制和管理计算机硬件与软件资源的核心软件。

  设计目的

操作系统设计的目的包括:

  1. 资源管理和优化:有效管理和优化计算机系统中的硬件资源。

  2. 用户接口:提供良好的用户界面和应用程序运行环境。

  3. 执行环境:确保程序安全、稳定地执行。

  4. 多任务和并发支持:支持多任务处理和并发执行。

  5. 文件和数据管理:有效组织、存储和保护文件和数据。

  6. 安全性和隔离:保护系统和用户数据的安全,提供合适的权限控制。

  7. 网络和通信:支持网络连接和数据传输。

  8. 可扩展性和灵活性:适应不同需求和硬件平台的扩展和定制化配置。

  操作系统之上之下分别有什么

        首先,我们所看到的是计算机的实体部分,即底层的硬件。这些硬件看似单独罗列,实际上在底层都遵循冯诺依曼的组织结构。

        除了硬件部分,单靠这些硬件是不够的,还需要软件来管理它们。例如,确定内存何时从输入设备读取数据、读取多少数据,以及何时将数据刷新到输出设备的缓冲区,是由软件来控制的。这个软件就是操作系统(Operating System)。 

        在操作系统与底层硬件之间确实存在一层驱动层。操作系统不直接与底层硬件打交道,而是通过驱动程序来管理和控制硬件。例如,键盘有键盘驱动程序,网卡有网卡驱动程序,硬盘有硬盘驱动程序等。这些驱动程序负责直接与硬件通信,执行读取、写入以及获取硬件状态等操作。驱动程序通常由硬件制造商提供,或者由操作系统开发者针对特定硬件开发。

        通过引入驱动层,操作系统不需要直接关心具体的硬件细节和操作方式。操作系统只需关注何时需要读取数据或执行操作,而不必关心这些操作是如何在硬件层面实现的,从而实现了操作系统与硬件之间的解耦。

 

操作系统主要进行以下四项管理:

  1. 内存管理:负责内存的分配、共享、保护和扩展等操作。

  2. 驱动管理:管理计算机设备的驱动程序,包括分类、更新和删除等操作。

  3. 文件管理:管理文件的存储空间、目录结构、文件操作和保护等。

  4. 进程管理:负责进程的创建、调度和管理。

        在操作系统的顶层是用户层,这里我们可以通过命令行或图形界面进行各种操作。 

        为了保护自身安全性,操作系统不直接让用户访问其内部,而是通过一系列接口暴露给用户,这些接口被称为系统调用接口。 

        然而,对于普通用户来说,直接使用系统调用接口的成本较高,因为这需要对系统有一定的了解。因此,在系统调用接口之上,开发出了一批库,如libc和libc++。这些库实际上是对系统调用接口的封装,在语言级别上提供了各种函数(如printf和scanf),我们可以通过调用这些函数来编写各种程序。 

  管理精髓:先描述,再组织

        要理解操作系统的管理概念,可以通过实际角色来解释。

        举个例子:假设有三个角色,学生、辅导员和校长。在这个例子中,校长是管理者,学生是被管理者。那么,辅导员则充当中间角色,负责在校长和学生之间传递信息和执行指示,以确保学生得到适当的指导和支持。

        深入思考后可以得出,完成任何事情通常需要经历两个关键过程:首先是决策阶段,即确定是否要做某件事以及如何做;其次是执行阶段,即实际去做这件事情。

        在校长管理学生的例子中,校长作为管理者负责做出决策,确定学校的方向和政策。然而,校长不会直接执行这些决策,而是委派辅导员作为执行者来实施这些决策,确保学生按照学校规定的方向行事。

        因此,辅导员的角色主要是执行者,负责执行管理者(校长)制定的决策和方针。

        尽管我们很少在学校看到校长本人,但校长如何在没有直接接触我们的情况下管理我们呢?

举例来说,假设校长要求辅导员提供计算机课程排名前十的学生的成绩和表现记录。校长会从这些数据中选择三名学生参加编程大赛,然后委派老师对这三名学生进行强化训练。在这个过程中,校长从未亲自见过这些学生,而是基于什么进行管理呢?校长主要依赖数据。

        实际上,学校对每位学生的各种信息进行管理,包括基本信息、成绩、健康状况等等。校长通过这些数据来做出决策和管理安排,而不必直接与每个学生互动。

        每个学生的信息可以看作是一套数据,通过这些数据,校长能够有效地进行学生管理。在C语言中,我们将这种数据组织方式称为抽象结构体;而在C++中,则称为面向对象。

        随着学生数量的增多,校长可以将所有学生的信息组织起来。组织的方式有多种选择,如链表、顺序表或树结构,每种方式都有其独特的优势。因此,就有了一门专门教授如何有效管理数据的课程,称为数据结构。例如,假设校长使用双链表来组织学生的信息。

        在这种情况下,校长对各个学生的管理实际上就是对这个双链表进行增删查改操作。例如,当有新生时,直接将一个新的节点加入到双链表中;而当学生毕业时,直接从双链表中移除该学生的信息即可。 

总结:

        管理者管理被管理者的过程实际上包括以下几个步骤:

  •         首先描述被管理者的各种信息;
  •         然后根据某种数据结构将多个被管理者的描述信息组织起来;
  •         最终,管理者通过对这个数据结构进行操作来管理被管理者。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vscode 打开远程bug vscode Failed to parse remote port from server output

vscode 打开远程bug vscode Failed to parse remote port from server output 原因如图: 解决:

【数学建模】技术革新——Lingo的使用超详解

目录 基础知识 1. 变量声明 示例 2. 常量声明 语法格式 示例 3. 目标函数 语法格式 示例 4. 约束条件 语法格式 示例 5. 完整的Lingo模型示例 示例 解释 6. 整数变量声明 语法格式 示例 7. 非线性规划 示例 8. 多目标优化 语法格式 示例 9. 数据输入与…

TypeScript 函数类型 (二)

函数类型 函数有两种方式定义 function 关键字来定义函数 function a(){}表达式定义(箭头函数的形式) const a()>{}函数需要定义类型的有三个地方 入参 和 返回值 以及 函数本身 的类型, 函数本身的类型常用于表达式定义的函数 function sum(a:stri…

洛谷 P1056 [NOIP2008 普及组 T2]:排座椅 ← 贪心算法

【题目来源】https://www.luogu.com.cn/problem/P1056https://www.acwing.com/problem/content/436/【题目描述】 上课的时候总有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情。 不过,班主任小雪发现了一些有趣的现象&#xff0c…

Ubuntu Desktop Docker 配置代理

Ubuntu Desktop Docker 配置代理 主要解决 docker pull 拉取不了镜像问题. Docker Desktop 配置代理 这个比较简单, 直接在 Docker Desktop 里设置 Proxies, 示例如下: http://127.0.0.1:7890 Docker Engine 配置代理 1.Docker Engine 使用下面配置文件即可, root 用户可…

Git的基础操作

环境:Linux操作系统-Centos 创建本地仓库 首先创建一个目录,命名为:gitcode mkdir gitcode进入gitcode目录,创建本地仓库 git init此时,就会创建出了一个空的仓库在当前目录下了,此时目录下就有git的目录了 配置Git 首先重要的…

科技出海|百分点科技智慧政务解决方案亮相非洲展会

近日,华为非洲全联接大会在南非约翰内斯堡举办,吸引政府官员行业专家、思想领袖、生态伙伴等2,000多人参会,百分点科技作为华为云生态合作伙伴,重点展示了智慧政务解决方案,发表《Enable a Smarter Government with Da…

which 命令在Linux中是一个快速查找可执行文件位置的工具

文章目录 0、概念1、which --help2、which命令解释 0、概念 which命令用于查找命令的可执行文件的路径which 命令在 Linux 中用于查找可执行命令的完整路径。当你在 shell 中输入一个命令时,shell 会在环境变量 $PATH 定义的目录列表中查找这个命令。which 命令可以…

【Neural signal processing and analysis zero to hero】- 1

The basics of neural signal processing course from youtube: 传送地址 Possible preprocessing steps Signal artifacts (not) to worry about doing visual based artifact rejection so that means that before you start analyzing, you can identify those data epic…

SQL Server Query Store Settings (查询存储设置)

参考:Query Store Settings - Erin Stellato 在 SQL Server 2017 中,有九 (9) 个设置与查询存储相关。虽然这些设置记录在sys.database_query_store_options中,但我经常被问到每个设置的值“应该”是多少。我在下面列出了每个设置&am…

[Vulnhub] devt-improved slog_users+vim权限提升+nano权限提升+passwd权限提升+Lxc逃逸权限提升

信息收集 IP AddressOpening Ports192.168.101.149TCP:22,113,139,445,8080 $ nmap -p- 192.168.101.149 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | …

【GPT4充值】WildCard虚拟卡

绑定流程 官网:WildCard | 一分钟注册,轻松订阅海外软件服务 1、使用手机号验证码注册、可以使用zfb快捷认证 2、填写身份信息后,然后根据流程验证即可。 3、选择卡片使用期限,填入邀请码【PEACEFUL】可立减$2。 4、打开openAI开发…

leetcode热题100.分割等和子集(动态规划)

分割等和子集 Problem: 416. 分割等和子集 思路 我选择使用动态规划的方法来解题。我们需要判断是否可以将数组分割成两个子集,使得这两个子集的和相等。这个问题可以转化为在数组中找到一个子集,使得其和等于数组总和的一半。 解题过程 首先&#xf…

卷积神经网络-猫狗识别实战

课程来自bilibiliMomodel平台 全长只有两个小时,理论部分讲得很粗糙 1 人的视觉和计算机视觉 人的大脑:神经元细胞,轴突发送信号,树突接收信号,互相连接,连接的强度和状态会随着新的经历刺激而变化。 用…

GitHub+Picgo图片上传

Picgo下载,修改安装路径,其他一路下一步! 地址 注册GitHub,注册过程不详细展开,不会的百度一下 地址 新建GitHub仓库存放图片 ——————————————————————————————————————————…

【贪心算法】贪心算法30题

一、贪心算法简介 证明贪心策略正确性的常用方法:直接证明、交换论证法、反证法、分类讨论… 二、相关编程题 2.1 柠檬水找零 题目链接 860. 柠檬水找零 - 力扣(LeetCode) 题目描述 算法原理 提示:最优解和贪心解唯一可能不同…

Java IO流(详解)

目录 1.概述 2.File文件类 2.1 文件的创建操作 2.2 文件的查找操作 3. File里面一些其他方法 3.1 经典案例 4. IO流 4.1 概念 4.2 IO分类 4.3 字节输出流 4.4 字节输入流 4.5 案例 4.6 字符输出流 4.7 字符输入流 4.8 案例 4.9 处理流--缓冲流 4.10 对象流: 1.…

IP地址定位与智慧城市和智能交通

智慧城市和智能交通是现代城市发展的关键领域,通过先进技术提升城市管理和居民生活质量。IP地址定位在交通监控、智能路灯管理等方面发挥了重要作用,本文将深入探讨其技术实现及应用。 交通监控与优化 通过IP地址连接交通传感器和摄像头,可…

useState函数

seState是一个react Hook(函数),它允许我们像组件添加一个状态变量,从而控制影响组件的渲染结果 数据驱动试图 本质:和普通JS变量不同的是,状态变量一旦发生变化组件的视图UI也会随着变化(数据驱动试图) 使用 修改状态 注意&am…

H5 Svg 半圆圆环占比图

效果图 主逻辑 /* 虚线长度 */ stroke-dasharray /* 偏移 */ stroke-dashoffset 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge&qu…