1. 冯·诺依曼体系结构

在这里插入图片描述

1.1 核心组件与数据流

  • 核心思想:采用存储程序方式,指令和数据以二进制形式存放在存储器中。

  • 五大部件

    • 输入设备:用于向计算机输入数据和指令。

      • 例如:键盘、鼠标、话筒、摄像头、网卡、磁盘(兼具输入/输出功能)。
    • 输出设备:用于输出计算机的处理结果。

      • 例如:显示器、打印机、磁盘、网卡(兼具输入/输出功能)。
    • 存储器:存放程序和数据。CPU只能直接与内存交互

      • 内存 (主存, DRAM):速度快,用于存放正在运行的程序和数据。

      • 外存 (辅存):容量大、速度慢、非易失,用于长期存储。如磁盘。

    • 运算器 (ALU):执行算术和逻辑运算。

    • 控制器 (CU):指挥协调各部件工作,取出并解释指令。

    • 中央处理器 (CPU) = 运算器 + 控制器

1.2 核心原则与理解

  • 程序运行的前提:程序(文件)必须先由磁盘加载到内存中。这是体系结构的规定。

  • CPU的工作方式

    • CPU执行指令、读写数据只能直接与内存(主存)打交道

    • 数据流动的本质是“拷贝”:数据在不同设备(如磁盘到内存、内存到CPU)间的移动,实质是数据的复制。

    • 体系结构的效率瓶颈:由数据在不同层级设备间的“拷贝”效率决定。

  • 站在内存看I/O
    在这里插入图片描述

    • Input (输入):数据从外部设备(如键盘、磁盘)“拷贝”到内存。

    • Output (输出):数据从内存“拷贝”到外部设备(如显示器、磁盘)。

    • 所有外设都只与内存进行数据交换,不直接与CPU交换数据。

二、当代计算机的存储层次结构(内存金字塔)

现代计算机是性能与成本权衡的产物,遵循摩尔定律,形成了层次化的存储体系。

2.1 层次结构特点(自上而下)

2.2 数据流动规律

每一级存储都作为下一级存储的“缓存”,数据按照以下规律流动:

  • CPU寄存器 ← L1缓存 ← L2缓存 ← L3缓存 ← 主存 ← 本地磁盘 ← 远程存储

  • 这种结构有效缓解了CPU高速与主存相对低速之间的速度矛盾,是系统性能优化的关键

3. 操作系统的核心角色

3.1 什么是操作系统 (OS)

  • 定义:操作系统是一个基本的、庞大的软件程序集合

  • 核心本质:是一款进行软硬件资源管理的系统软件

  • 核心问题:是什么 (What)?为什么 (Why)?怎么办 (How)?

3.2 操作系统的组成

在这里插入图片描述

  • 广义操作系统:包括内核和一系列支撑软件。

    • 外壳 (Shell):提供用户界面(命令行或图形界面)。

    • 系统库 (如 glibc):为应用程序提供通用功能的函数集合。

    • 系统级软件:如编译器、系统工具等。

  • 狭义操作系统:特指内核 (Kernel),是操作系统的核心。

    • 进程管理:管理程序的执行(进程/线程的创建、调度、同步、通信)。

    • 内存管理:分配和回收内存空间,实现虚拟内存等。

    • 文件管理:组织和管理磁盘上的文件和目录。

    • 驱动管理:管理和控制各种硬件设备(驱动)。

  • 示例printf 函数的本质是将用户数据通过操作系统,最终写入显示器硬件

3.3 操作系统的设计目的

  • 对上 (为用户):为应用程序提供一个稳定、高效、安全的执行环境。

    • 用户/应用程序 → 用户接口/系统调用 → 操作系统内核。
  • 对下 (为硬件):与硬件交互,管理所有的软硬件资源

    • 操作系统内核 → 驱动 → 冯诺依曼硬件体系(CPU、内存、磁盘、网卡等)。
  • 核心定位:在整个计算机软硬件架构中,操作系统是一款纯正的 “管理”软件

4. 操作系统的管理哲学:“先描述,再组织”

  1. 先描述:用数据结构(如C语言的struct)来刻画被管理对象的属性。
struct student {
    char name[20];
    int age;
    char gender;
    // ... 其他属性
    struct student* next; // 用于组织
};
  1. 再组织:用数据结构(如链表)将所有这些“描述体”组织起来。
struct student* stu_list; // 学生链表头
  1. 管理的本质:校长(操作系统)对学生的管理工作,就转化为对这条链表 (stu_list)增、删、查、改操作。

  2. 操作系统对任何软硬件资源(进程、文件、内存块、设备…)的管理,都遵循 “先描述(创建数据结构),再组织(形成链表等数据结构)” 的基本范式。

5. 用户与操作系统的接口:系统调用

在这里插入图片描述

5.1 什么是系统调用 (System Call)

  • 定义:操作系统内核提供给用户程序(应用程序)的一系列接口/函数

  • 目的:让用户程序能够安全、受控地使用内核提供的服务(如操作硬件、申请资源)。

  • 本质:是一些C语言函数,但由操作系统实现并提供。

    • 例如:read(), write(), fork(), open()
  • 关键特性操作系统不相信任何用户。系统调用是用户程序访问内核服务和硬件资源的唯一合法入口

5.2 结论

  1. 访问路径:任何程序,只要想访问硬件(如读写文件、发送网络数据),其操作必须贯穿整个软硬件体系结构,即:用户程序 -> 系统调用 -> 操作系统内核 -> 驱动程序 -> 硬件

  2. 封装关系:常见的库函数(如 fprintf, fread)可能在底层封装了一个或多个系统调用,为用户提供了更便捷的接口。但最终所有硬件操作都必须通过系统调用完成。

  3. 层次结构:理解计算机系统,必须建立起清晰的软硬件层次结构观念。系统调用是连接用户层和内核层的关键桥梁

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐