前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >操作系统与冯诺依曼体系结构会擦出怎样的火花?

操作系统与冯诺依曼体系结构会擦出怎样的火花?

作者头像
南桥
发布2024-03-21 09:46:35
660
发布2024-03-21 09:46:35
举报
文章被收录于专栏:南桥谈编程南桥谈编程

冯诺依曼体系结构

如今常见的计算机都遵循一个体系结构:冯诺依曼体系结构。典型的冯诺依曼体系结构是以运算器为中心的,图示如下:

输入设备: 键盘、麦克风、摄像头、鼠标… 输出设备: 显示器、声卡、磁盘、网卡… CPU: 运算器、控制器 存储器: 内存

关于冯诺依曼,必须强调几点:

  • 这里的存储器指的是内存
  • 不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)
  • 外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。 一句话,所有设备都只能直接和内存打交道

为什么CPU只能和内存打交道?

计算机中,存储器内存有很多,例如:寄存器、内存、硬盘、网盘…他们的访问速度是不一样的,形成一个金字塔模型:

寄存器的访问速度是纳秒级别,内存的访问速度是微妙级别,外部存储设备的访问速度是毫秒级别。CPU与外部存储设备的速度差较大,如果讲CPU与外部存储设备连接,由于木桶效应,会导致整个计算机的运行速度变慢。

因此为了降低木桶效应对计算机运行速度的影响,聪明的人类引入了内存,冯诺依曼体系结构要求CPU只能和内存交互。

内存还有中转站作用,数据从输入设备预先加载到内存,等CPU空闲了,再直接到内存中读取数据。另外,CPU在运算的同时,内存是可以从输入设备中读取数据的,这样大大提高了计算机的运行速率。

一个程序要运行必须先将数据读取到内存中去

例如,我们在写完一个代码时,是一个.c的源文件,通过编译生成一个可执行文件.exe文件,然后才可以运行。源文件和可执行文件都是在磁盘上,但是根据冯诺依曼体系结构的要求,CPU只能和内存交互,因此可执行文件需要先读取到内存中,然后才可以被运行。

从你登录上qq开始和某位朋友聊天开始,数据的流动过程。

第一步打开QQ,在用户角度来看,用鼠标双击QQ的图标即可打开文件。但是在计算机看来,本质上是把QQ可执行程序加载到内存中,此时CPU可以在内存中读取内容进行运算,此时QQ才被打开。

紧接着你在对话框中输入在吗?,此时你所输入的内容被读取到内存中,然后CPU在内存中读取你所输入的内容,经过打包运算,再归还到内存中,然后内存会将这个包交给输出设备(网卡、显示器),输出设备再将内容通过网络传输给你要发的对象。

接收方要想接收你发的信息,此时显卡充当输入设备,将内容传输到内存中,CPU从内从中读取内容,解压内容然后再传输到内存中,内存会将内容传输到输出设备中(显示器)。

操作系统

底层硬件都是一个个独立的,但是要想让他们之间都有一定的联系,少不了一个管理软甲:操作性系统。

概念

任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括:

  • 内核(进程管理,内存管理,文件管理,驱动管理)
  • 其他程序(例如函数库, shell程序等等)

设计操作系统的目的

  • 与硬件交互,管理所有的软硬件资源
  • 为用户程序(应用程序)提供一个良好的执行环境

理解操作系统

计算机的层状结构

驱动程序

硬件要想被访问需要配上驱动程序,没有驱动程序硬件是无法被使用的。

专业计算机教材对驱动程序是这样定义的:“能够解释各种BIOS不能支持的硬件设备,使计算机能够认识和识别这些硬件设备,从而保证硬件设备的正常运行,以充分发挥硬件设备性能的特殊程序”。通俗地说,驱动程序就是控制计算机硬件设备的软件,操作系统通过它识别硬件设备,硬件设备通过它按操作系统发出的指令进行操作。因此把驱动程序说成是操作系统与硬件设备连接的桥梁非常合适。

操作系统为什么要充当一个管理的角色?

操作系统对软硬件资源的管理,本质上是为了给用户提供一个良好 的运行环境。

如果操作系统不对其进行管理,那么用户在使用计算机时就会出现一会蓝屏,一会出现卡顿等各种各样不稳定的现象。

操作系统是如何进行管理的?

操作系统通过驱动程序来获取到硬件个各种信息,从而对硬件进行管理。比如网卡出现了问题,那么驱动程序就会把错误信息报告给操作系统,操作系统能解决最好不过,解决不好就反馈给用户,提示用户修理网卡。

操作系统如何维护硬件信息?

操作系统管理的本质是对信息的管理,那么操作系统是如何对这些信息进行管理?

首先定义一个结构体,一个结构体对象代表一个硬件,结构体里面的内容是对应硬件的各种属性,所以计算机中所有硬件都可以在操作系统中以结构体的形式组织起来,一般采用链表或其他高效的数据结构。

计算机对硬件的管理分为以下两步:

  1. 先描述:用struct结构体
  2. 再组织:用链表或其他高效的数据结构将结构体组织起来

操作系统对硬件设备的管理最终都转换成某种数据结构的增删查改,因此这种管理方式决定了操作系统中含有大量的数据结构。

系统调用接口

我们在计算机中的各种操作,最终都会转换为在硬件上的行为,比如小编在听着音乐写博客,本质上会调用键盘、显示器、网卡、音响、鼠标等设备,这些硬件设备都是操作系统调用的,也就是说我们在使用这些硬件时,操作系统会调用。但是作为用户,无法直接与操作体统交互,操作系统里面有各种各样的信息,他不希望用户直接对信息进行访问修改,因此操作系统为了保护自身安全,操作系统以接口的形式,用户可以调用这些接口。

有了这些系统调用接口,用户就可以直接对底层硬件进行管理。例如在xshell外壳程序中,用户在上面执行指令,指令的本质一个可执行程序存储在磁盘上,如果需要执行这些指令就需要先加载到内存中。把数据加载到内存中,本质上是xshell外壳程序调用系统接口来实现的。

直接调用系统接口是比较困难的,因此用户又对系统调用接口进行了封装。例如我们在C语言中,scanf函数可以读取用户在键盘中输入的数据,本质上是scanf通过系统调用接口实现的。在同一台计算机中,可以是用不同语言进行开发,这些语言只要涉及到硬件的,都是通过系统调用实现的。语言都是在系统调用接口之上。因此语言发生变化,但是系统调用接口不会发生变化。我们把这种基于系统调用接口的开发称作系统编程

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-03-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 📷
  • 冯诺依曼体系结构
  • 操作系统
    • 概念
      • 设计操作系统的目的
        • 理解操作系统
          • 驱动程序
          • 操作系统为什么要充当一个管理的角色?
          • 操作系统是如何进行管理的?
          • 操作系统如何维护硬件信息?
          • 系统调用接口
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档