从冯诺依曼到操作系统:揭秘计算机核心架构与资源管理

215 阅读4分钟

一、冯诺依曼体系结构

我们常见的计算机,如笔记本;不常见的计算机,如服务器等都是基于冯诺依曼结构来组织起来的。

image.png 大多数我们所认识的计算机都是由一个个硬件组成:

  • 输入设备:键盘、话筒、摄像头、磁盘、网卡等。
  • 中央处理器(CPU):包含运算器和控制器等。
    • 运算器:完成算术运算、逻辑运算。
    • 控制器:执行代码、进行逻辑控制、响应外设等。
  • 输出设备:显示器、扬声器、磁盘、网卡、打印机等。

关于冯诺依曼结构,强调几点:

  • 这里的存储器指的是内存,而磁盘和ssd等一般叫做外存,属于输入输出设备的范畴。
  • 不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设。
  • 输入或输出设备要输入或者输出数据,也只能写入到内存或者从内存读取。
  • 所有设备只能和内存打交道。

在日常我们所写C/C++程序时,都需要经过编译形成可执行程序,然后加载到内存,那么为什么需要加载到内存呢?

因为从效率角度来看,输入输出设备 << 内存 << CPU。离CPU越近,效率和成本越高;反之离CPU越远、效率和成本变低。

  • CPU在数据层面不和外设直接打交道,只会和内存打交道, 因为外设的效率太低。
  • 外设不和CPU直接打交道,只和内存打交道, 与上面不同的在于,程序加载到CPU会进行 预加载,这样CPU可以随时从内存取用。
  • 内存的本质就是外设和CPU之间的缓存,所以计算机的效率以内存速度为主(这样做的意义在于引入内存,使用冯诺依曼架构,可以让用户以不怎么高的成本获得效率不错的计算机,内存让计算机更有“性价比“)。

存储金字塔图片(来源于网络):

image.png

二、操作系统

2.1 操作系统的概念

操作系统是什么?操作系统是一个进行软硬件资源管理的软件。

计算机硬件刚开始产生的时候,是没有操作系统的,当时人们需要依靠 “开关” 来控制01的输入,从而与计算机做交互。

后来随着计算任务越来越多,那么就需要有一种软件来把不同的人的计算需要调度起来,于是便写了一个专门的调度程序,随着这个程序的发展,人们开始给这个程序起名叫做操作系统

image.png

狭义上的操作系统就是操作系统内核(包括后面的文章所谈论的操作系统皆是指内核),在内核层面上操作系统主要做的工作:进程管理、文件管理、内存管理、驱动管理。

2.2 设计操作系统(OS)的目的

在计算机世界中,几乎所有的软硬件体系结构,本质都是层状的:

image.png

操作系统存在的必要性(目的):

  1. 管理好软硬件资源。
  2. 给用户提供一个稳定的、安全的、高效的运行环境。

而我们使用计算机,大部分情况是在使用计算机的什么呢? 假设写了一个C语言程序,通过调用printf()函数来向屏幕进行打印信息,就是通过函数来调用显示屏硬件;或者是写一个通信程序,当发出消息时就是调用网卡进行相应操作。

所以本质上使用计算机就是在通过软件来访问硬件资源。 但是计算机的硬件资源是有限的,而我们要完成的操作是无限的,这就要求必须要把硬件资源管理好。

2.3 如何理解“管理”

在一个学校内,存在着校长、辅导员、以及学生三个角色。此时把整个学校看做一个系统。校长显然不能进行对学生的直接管理,而是由辅导员将学生的个人信息、成绩以及日常表现上报,来让校长进行决策。

恰好这个校长以前是个程序员,于是他便使用结构体来对每个学生的个人信息、成绩、日常表现进行描述;通过某种特定的数据结构来组织起来一个个的学生节点。当一个学生需要退学或者被开除时,就不需要校长亲自找到这个学生告诉他:“你被开除了”。而是对数据结构进行增删查改便可以完成。

所以计算机管理软硬件就是这样的:

  1. 用struct结构体描述。
  2. 通过链表或其他高效数据结构组织。

而总结起来就是六个字:先描述,再组织。

所以即使我们不知道操作系统内部是怎么实现的,但可以确定,操作系统中有着大量的结构体,而对软硬件资源管理,就是对内部的数据结构进行“增删查改”。