冯诺依曼体系与操作系统

devtools/2025/2/12 5:16:19/

目录

1.冯诺依曼体系结构

认识冯诺依曼体系结构

冯诺依曼体系中为什么要有存储器

2.操作系统

操作系统如何管理硬件

操作系统如何管理软件


1.冯诺依曼体系结构

认识冯诺依曼体系结构

所有的计算机都是由各种各样的硬件组成的,这些硬件可以概括为输入设备、输出设备、存储器、运算器、控制器:

  • 常见的输入设备有:键盘、鼠标、网卡等等……
  • 常见的输出设备有:显示器、声卡、网卡的等等……
  • 存储器通常指的是 内存
  • 运算器和控制器共同组成了 中央处理器(CPU)。

这么多的硬件,需要根据特定的结构组织在一起,才能够进行数据在不同设备之间的传递,才能够稳定且协调的运行。在历史上,也诞生了许多的计算机体系结构,但是经过岁月的洗礼,最终保留下来的并且最常用的体系结构就是冯诺依曼体系结构。

冯诺依曼体系结构如下所示:

冯诺依曼体系中为什么要有存储器

在冯诺依曼体系结构中,常见的数据流动过程如下:

  • 数据经过输入设备输入到存储器中,经过CPU的处理之后,将返回的数据重新写入存储器中,然后存储器中的数据经过输出设备输出。

这时,我们不免疑惑,数据直接从输入设备输入到CPU,经过CPU处理之后通过输出设备输出;这样不是更快吗?

其实并不是这样的,CPU的工作速度是很快的,而输入输出设备的工作速度是很慢的,如果让输入输出设备直接和CPU进行数据之间的传递,必然会导致CPU大部分时间都在等待,这也就算是对CPU的一种浪费。

这时,计算机科学家通过引入存储器解决了这个问题,存储器提供了预先加载的功能,CPU从存储器中拿数据,当CPU还在处理数据的时候,输入设备可以向存储器中进行写入;CPU处理好的数据不直接给输出设备,而是放在存储器中,CPU在继续自己的工作时,输出设备从存储器中拿数据进行输出;可以看出,存储器的引入缓解了CPU和输入输出设备之间工作速度差距大的问题。从而从整体上提高了计算机处理数据的能力。

因此,在所有使用冯诺依曼体系结构的计算机中,CPU都只能和存储器,也就是内存进行数据的传递,输入输出设备也只能和内存进行数据的传递。因此,程序在运行的时候,都必须先加载到内存。既然程序在运行的时候,都必须先加载到内存,那么第一个被加载到内存的程序是什么呢?就是操作系统。

2.操作系统

操作系统是什么呢?操作系统是一款进行软硬件资源管理的软件。操作系统只有管理好了软硬件资源,才能保证计算机对用户提供良好稳定的运行服务。

软硬件层次结构图:

对于底层的硬件,每个硬件都有自己的驱动程序,操作系统通过调用驱动程序就能驱动底层硬件进行工作;操作系统内部的功能有很多,但是不能被用户直接使用,因为这样是不安全的;因此,操作系统提供系统调用接口给外部,以此来使用操作系统的功能,但是有的系统调用接口比较难用,一些有心的开发者便将系统调用接口进行了封装,形成了库函数、部分指令等等……

操作系统如何管理硬件

操作系统管理硬件的时候,必须要先描述底层硬件,比如这个硬件的名字、状态、功能等等……Linux操作系统是用大量的C语言写的,要想描述硬件只能使用结构体;一台计算机运行起来,必然需要启动多个硬件,将所有描述不同硬件的结构体以特定的数据结构组织起来,就能够实现对底层硬件的管理,我们假设以链表的形式组织起来;

我们可以写出类似于以下的代码描述硬件:

组织起来:

这样,就实现了对硬件的管理工作。 

操作系统如何管理软件

首先,我们要明白的是,软件是一个个的程序,计算机运行起来的其实是该程序的可执行文件,要运行一个可执行文件首先要将可执行文件加载到内存中,当该程序的可执行文件加载到内存中之后,就会形成一个进程;所以,计算机对软件的管理其实是对进程的管理

同理,要管理进程,首先要使用结构体描述进程,我们可以写出类似于下面这样的代码:

  • 描述进程的结构体叫做PCB,叫做进程控制块,Linux中的进程控制块就叫做 task_struct。 

以链表的形式组织起来:

这样,就能实现对进程的管理了,也就是对软件的管理。


http://www.ppmy.cn/devtools/157643.html

相关文章

uniapp中使用uCharts折线图X轴数据间隔显示

1、先看官网 https://www.ucharts.cn/ 2、设置代码 "xAxisDemo3":function(val, index, opts){if(index % 2 0){return val}else {return }}, 再在数据中引入设置好样式

苹果公司宣布正式开源 Xcode 引擎 Swift Build145

2025 年 2 月 1 日,苹果公司宣布正式开源 Xcode 引擎 Swift Build145。 Swift 是苹果公司于 2014 年推出的一种开源编程语言,用于开发 iOS、iPadOS、macOS、watchOS 和 tvOS 等平台的应用程序。 发展历程 诞生:2014 年,苹果在全球…

【学术投稿-第六届新材料与清洁能源国际学术会议(ICAMCE 2025)】组织与结构:HTML中的<fieldset>与<legend>标签解析

官网:www.icceam.com 简介 第六届新材料与清洁能源国际学术会议(ICAMCE 2025)将于2025年2月21-23日在郑州隆重举行。清洁能源、新材料是当今工业发展中最重要、最有潜力的领域之一。而新型材料又是新能源的基础和保证。本会议主要围绕“清洁…

常见的排序

1.排序的稳定性: 简单地说就是原来这两个相等的数假设为5第一个5记为5a第二个记为5b此时他们下标分别为0和1,当排序之后他们的下标就发生了变化,5a的下标为1,5b的下标为0,此时就是不稳定的。如果排完序之后的5a和5b的下…

7.Python文件操作:文件的打开与关闭、文件的读写、文件读写应用

1. 文件的打开与关闭 打开文件 在 Python 中,使用 open() 函数来打开文件。open() 返回一个文件对象,允许我们进行读写操作。它接受两个主要参数:文件路径和模式(r、w、a 等)。 # 以只读模式打开文件 file open(&q…

MCU应用踩坑笔记(ADC 中断 / 查询法)

问题描述 IC:SC92F7596,在使用过程中,发现一个问题,就是我们使用到了ADC功能,程序的代码如下: ADC采样周期200ms ,采样个数:4 在使用过程中,因配置了ADC中断使能,在中断…

C++20新特性

作者:billy 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 前言 C20 是 C 标准中的一个重要版本,引入了许多新特性和改进,包括模块(Modules)、协程…

打造高效Facebook矩阵账号运营策略

随着社交媒体的蓬勃发展,Facebook作为全球用户最多的平台之一,已成为品牌和个人开展线上营销的重要阵地。为了在这个竞争激烈的市场中脱颖而出,许多营销人员开始利用Facebook矩阵账号进行精准的内容推广和粉丝管理。所谓“矩阵账号”是指通过…