Linux系统结构(概要)
一个最基本的、可用的Linux系统,由 Linux内核 和 GNU核心工具 两大部分构成的。这个组合有一个专有名称,叫做 GNU/Linux系统。而Ubuntu、Debian等都是在GNU/Linux系统基础上开发的发行版。我们日常所说的“Linux系统”,在技术上大多指的是“基于Linux内核的GNU操作系统”。
它们之间的关系可以用如下图表示
Linux内核
Linux内核是系统的核心程序,本质是一个用 C 语言和汇编语言编写的特殊程序,它直接管理硬件,是硬件和软件之间的唯一桥梁。
它的工作可以归纳为以下几个核心模块:
- 进程管理:CPU调度员。创建、销毁进程,为所有正在运行的程序(进程)公平地分配CPU时间片,确保多个任务能“同时”运行而不卡顿。
- 内存管理:内存分配大师。为每个进程分配独立的内存空间,并高效地使用物理内存和交换空间,确保进程不会互相干扰或崩溃。
- 文件系统:磁盘大管家。提供EXT4、Btrfs、XFS等一种或多种方式来组织和管理磁盘上的数据。它负责文件的读写、权限控制和组织结构。
- 设备驱动:硬件翻译官。内核包含了或能加载大量硬件的驱动程序(Drivers),使得CPU能听懂显卡、声卡、网卡、键盘等硬件的“语言”,并控制它们。
- 网络通信:网络总枢纽。实现了TCP/IP等网络协议栈,负责处理所有网络数据的发送和接收(比如你浏览网页的数据包)。
- 安全与权限:安全警卫。实施基本的 security policy,例如根据文件权限(读、写、执行)来决定某个用户或程序能否访问特定资源。
只有内核是不行的,因为内核只负责管理硬件资源,用户无法直接与之交互。这就好比拥有一个无比强大的“大脑”(内核),但没有眼睛、耳朵、手脚,也无法与外界交流的“躯体”。要想从只管理硬件的内核变为用户能直接操作的系统就需要GNU来发挥作用(GNU 提供了构建一个完整操作系统所需的所有周边工具和库)
GNU
GNU项目包含的核心组件如下图片所示:
Ubuntu、Debian等发行版
它们的核心工作如下:
总的来说,发行版是产品和生态。它们选择不同的基础组件版本、不同的默认软件、不同的包管理工具,从而形成了各有特色的发行版