目录

Linux冯诺依曼体系与操作系统理解

【Linux】冯诺依曼体系与操作系统理解

https://i-blog.csdnimg.cn/direct/c344ef600f044c059c9f08abc3d6be91.png

🌟🌟 作者主页:

🌟🌟 所属专栏:


前言

在数字时代,计算机早已渗透进我们生活的方方面面。从智能手机到超级计算机,这些强大的机器背后,都离不开两个至关重要的概念: 冯诺依曼体系结构操作系统 。理解这两者,对于学习Linux系统编程、深入理解计算机体系至关重要,它将帮助你编写更高效、稳定的程序,并解决更复杂的系统问题。本文将带你深入浅出地探索冯诺依曼体系的精髓,并解析操作系统如何在其之上构建起庞大的软件生态,最终让冰冷的硬件焕发出无限的可能。

一、冯诺依曼体系结构

冯诺依曼体系结构(Von Neumann Architecture) 是一种经典的计算机设计模型,由数学家约翰·冯·诺依曼提出。其具有 中央处理器、存储器和输入输出设备 三个主要组成部分,共同完成对程序的控制和执行。尽管存在瓶颈问题,大多数现代计算机仍基于冯诺依曼体系结构,并通过缓存、多核等技术优化性能。

https://i-blog.csdnimg.cn/direct/94a4d8ebd0b4425eb30d3b9a4a8875a4.png

注意:冯诺依曼体系结构当中,CPU(中央处理器)在数据层面只能对内存进行读写,不能直接访问输入和输出设备;输入和输出设备也只可和内存打交道

由于CPU只能通过内存来读取和写入数据,所以一个程序在运行之前必须先加载到内存。

不难发现,有了输入输出设备和中央处理器之后,就可以确保程序的执行了(让处理器直接访问输入输出设备)。为什么还需要内存呢?实际上,CPU对数据的处理速度是远远大于输入输出设备的。如果直接让CPU直接访问输入输出设备,那么根据木桶效应,整体结构的运行效率将由输入输出设备决定,就无法发挥出CPU的性能。加入了内存之后,其可以一次性存储输入设备提供的大量数据,交给CPU去处理,然后再通过它统一传输给输出设备。这样就 对CPU和输入输出设备的运行速度差进行适配,提升整体效率

在冯诺伊曼体系结构中,数据传输的本质是从一个设备“拷贝”到另一个设备,整个结构的运行效率由“拷贝”效率决定。

二、操作系统

了解了冯诺依曼体系结构之后,我们再来谈另一个概念: 操作系统 。 操作系统是计算机的灵魂,它决定了计算机的功能、性能和用户体验。无论是对编程、软件开发、大数据、人工智能的学习,都离不开对操作系统的理解。深入学习操作系统,能够帮助我们在各个技术领域打下坚实基础,提高编程能力和解决问题的能力。

1. 操作系统的概念

用通俗的话来讲, 操作系统(OS)就是一款对各种软硬件进行管理的软件 。它可以控制各种硬件与软件资源,确保其高效执行,为用户提供了更便捷的计算机使用方式。

操作系统包括:

1. 内核(进行内存管理、文件管理、进程管理、驱动管理等)

2. 其他程序(例如函数库、shell外壳等)

https://i-blog.csdnimg.cn/direct/c56e92b9453340e99df51ef229a51bc7.png

2. 操作系统存在的意义

先看一张图:

https://i-blog.csdnimg.cn/direct/a613f6356eb34b55a1f4f7d7b6f0532d.png

如上图所示 , 软硬件体系结构是一种层状结构,对各种资源进行分级管理 。分级管理只能由上到下顺序进行。用户要对计算机进行各种操作,就需要通过一系列的 分级管理流程 。而在整个 软硬件管理体系 当中,操作系统起着至关重要的作用。想要对访问底层硬件,就 一定 需要先访问操作系统,由操作系统对硬件进行控制。因此, 操作系统的存在意义 是:

1. 对下,与硬件进行交互,管理所有的软硬件资源(手段)

2. 对上,为用户程序提供良好的运行环境(目的)

除此之外, 我们还可以由图得出以下结论:

1. 若要访问操作系统,就必须使用系统调用(操作系统提供的接口)

2. 一个程序只要访问了硬件,就必须贯穿整个软硬件体系结构,不可能跳跃进行

3. 一些库文件中的函数具备输入输出功能,说明其在底层封装了系统调用

3. 操作系统的管理方式

操作系统是如何对软硬件进行管理的呢?

我们拿 学校的管理模式 举例:

一个学校的校长需要对校领导、教师以及学生进行管理。但是学校有很多人,校长无法一一管理,此时就需要实行分级管理制度: 校长管理校领导,校领导管理教师、教师管理学生

所以校长想要管理学生,不必和每个学生进行面对面接触,而是通过教师,再通过校领导, 获取学生的各项数据 ,然后分级管理。

那么校长是如何通过数据,达到管理学生的目的呢?

从编程的角度来讲,校长可以将学生的各项数据(如年龄、性别、身高体重、成绩等)包装成一个类,然后通过创建对象,设置成员变量的值来 描述 不同的学生。之后使用数组、链表或其他容器对学生进行 组织 ,通过对容器进行 增删查改 操作来实现对学生的管理。

操作系统就好比这里的校长,它对软硬件的管理方式就是 **通过驱动程序或系统调用获取软硬件的数据,然后对数据进行

描述、组织**

操作系统管理的本质: 对数据的增删查改

4. 补充:理解系统调用

之前提到: 若要访问操作系统,就必须使用系统调用 。为了打好 Linux系统编程 的基础,我们通过一些知识补充来加深对系统调用的理解。

系统调用是什么?

系统调用是操作系统提供给用户的 接口 ,供上层开发使用。

系统调用的作用?

方便用户与操作系统之间进行 数据交互。

一般来讲,系统调用的功能较为基础,且实现要求较高。开发者会对系统调用进行一系列封装,形成库,便于二次开发。

判断库函数是否封装了系统调用的方法: 判断该函数是否访问了硬件 ,因为一个程序只要访问了硬件,就必须贯穿整个软硬件体系结构,不可能跳跃进行。

总结

通过对冯诺依曼体系结构的理解,我们掌握了计算机的基本工作原理,而操作系统的概念、存在意义及管理方式的学习,则为我们揭开了计算机资源管理的核心机制。特别是对系统调用的深入理解,为我们后续学习Linux系统编程奠定了坚实的基础。如果你觉得博主讲的还不错,就请留下一个小小的赞在走哦,感谢大家的支持❤❤❤