简介
本章简单介绍计算机系统的构成,引出 OS(本书即 Linux) 的作用,核心功能等。
计算机系统概貌
虽然计算机形态各异,但硬件结构大致如下:
计算机系统的常见运行过程类似:
- 通过输入设备或者网络适配器向计算机发起请求
- 计算机读取内存中的命令,在 CPU 上执行,将结果写入内存
- 将内存中的数据写入 HDD/SSD 硬盘或者通过网络适配器发送给其它计算机。
- 继续执行步骤 1
这些步骤由程序控制,程序可以分成几类:
- 应用程序:直接给用户使用
- 中间件:辅助应用运行的,如 Web 服务器、数据库,
- OS:直接控制硬件设备,为应用程序和中间件提供运行环境的程序,比如 Linux
Linux 作用
程序在 OS 上以进程为单位运行。一个程序可以对应运行 1 个或多个进程。Linux 也支持多进程。
OS 起到「虚拟机」、资源管理等作用。假设没有 OS,每个进程都需要直接操作设备,即对应的每个程序都需要编写对接设备的代码。
这就导致如下缺点:
- 应用程序员必须精通各类设备的调用对接方式
- 开发成本高
- 多个进程同时调用设备,会引起各种预料之外的问题(比如资源冲突)
Linux 的解决方式是提供设备驱动程序来简化抽象,同一类型的设备通过同一接口进行调用。(更进一步可以通过文件系统接口来操作。后续会提到。)由设备驱动程序来解决同时访问设备冲突的问题。
但这样,如果程序有 bug 或者恶意绕过设备驱动程序直接操作设备,依然会导致多个进程同时访问设备的问题。
解决方案是,软硬配合。CPU存在内核模式和用户模式两种模式,只有处于内核模式时才允许访问设备。另外,使设备驱动程序在内核模式下运行,使进程在用户模式下运行。
除去设备驱动,许多不应被普通进程调用的处理程序,也是在内核模式运行,比如:
- 进程管理系统
- 进程调度器
- 内存管理系统
把这些在内核模式下运行的OS的核心处理整合在一起的程序就叫作内核,进程要使用内核提供的功能,需要通过系统调用向内核发起请求。
OS 除了内核,还有用户态模式下运行的程序,后续章节会介绍。
虽然可以通过设备驱动程序访问外部存储器中的数据,但为了简化这一过程,通常会利用被称为文件系统的程序进行访问。文件系统的相关内容将在第7章详细说明。