读书笔记《Linux 是怎样工作的》第一章——计算机系统的概要

82 阅读3分钟

简介

本章简单介绍计算机系统的构成,引出 OS(本书即 Linux) 的作用,核心功能等。

计算机系统概貌

虽然计算机形态各异,但硬件结构大致如下:

image.png

计算机系统的常见运行过程类似:

  1. 通过输入设备或者网络适配器向计算机发起请求
  2. 计算机读取内存中的命令,在 CPU 上执行,将结果写入内存
  3. 将内存中的数据写入 HDD/SSD 硬盘或者通过网络适配器发送给其它计算机。
  4. 继续执行步骤 1

这些步骤由程序控制,程序可以分成几类:

  • 应用程序:直接给用户使用
  • 中间件:辅助应用运行的,如 Web 服务器、数据库,
  • OS:直接控制硬件设备,为应用程序和中间件提供运行环境的程序,比如 Linux

Linux 作用

程序在 OS 上以进程为单位运行。一个程序可以对应运行 1 个或多个进程。Linux 也支持多进程。

OS 起到「虚拟机」、资源管理等作用。假设没有 OS,每个进程都需要直接操作设备,即对应的每个程序都需要编写对接设备的代码。

image.png

这就导致如下缺点:

  • 应用程序员必须精通各类设备的调用对接方式
  • 开发成本高
  • 多个进程同时调用设备,会引起各种预料之外的问题(比如资源冲突)

Linux 的解决方式是提供设备驱动程序来简化抽象,同一类型的设备通过同一接口进行调用。(更进一步可以通过文件系统接口来操作。后续会提到。)由设备驱动程序来解决同时访问设备冲突的问题。

但这样,如果程序有 bug 或者恶意绕过设备驱动程序直接操作设备,依然会导致多个进程同时访问设备的问题。

解决方案是,软硬配合。CPU存在内核模式和用户模式两种模式,只有处于内核模式时才允许访问设备。另外,使设备驱动程序在内核模式下运行,使进程在用户模式下运行。

除去设备驱动,许多不应被普通进程调用的处理程序,也是在内核模式运行,比如:

  • 进程管理系统
  • 进程调度器
  • 内存管理系统

把这些在内核模式下运行的OS的核心处理整合在一起的程序就叫作内核,进程要使用内核提供的功能,需要通过系统调用向内核发起请求。

OS 除了内核,还有用户态模式下运行的程序,后续章节会介绍。

虽然可以通过设备驱动程序访问外部存储器中的数据,但为了简化这一过程,通常会利用被称为文件系统的程序进行访问。文件系统的相关内容将在第7章详细说明。

image.png