操作系统学习(十三)——Linux
一、Linux
Linux 是一种类 Unix 的自由开源操作系统内核,由芬兰人 Linus Torvalds 于 1991 年首次发布。如今它广泛应用于服务器、桌面、嵌入式设备、移动设备(如 Android)等领域。
设计思想:
原则 | 描述 |
---|---|
模块化与可移植性 | Linux 内核高度模块化,可运行在多种硬件架构上(x86, ARM, RISC-V 等) |
一切皆文件 | 包括设备、进程、网络连接,都抽象为文件接口 |
多用户、多任务 | 同时支持多个用户和进程,彼此独立 |
开源与协作开发 | 遵循 GNU GPL 协议,全世界开发者可参与贡献 |
安全与权限控制 | 严格的访问权限和用户隔离机制 |
稳定与高性能 | 尤其在服务器环境中表现优越 |
二、Linux 系统结构
整体架构图:
三、Linux 内核关键子系统
1. 进程管理
- 支持 进程、线程(轻量级进程);
- 使用 CFS(完全公平调度器) 实现调度;
- 通过
fork()
、exec()
等创建和控制进程。
2. 内存管理
- 支持分页、虚拟内存、内存映射(
mmap()
); - 提供交换空间(Swap);
- 高效的内存分配器(如 SLAB)。
3. 文件系统(VFS)
- 虚拟文件系统(VFS)将具体文件系统(
ext4
,xfs
,FAT32
)抽象统一接口; - 所有资源(文件、设备、网络)通过统一的文件描述符访问;
- 支持挂载机制、权限控制、缓存机制。
4. 设备管理
- 使用字符设备、块设备模型;
- 所有设备映射为
/dev/
下的特殊文件; - 支持驱动模块动态加载(
modprobe
,insmod
)。
5. 中断与系统调用
- 异步设备通过中断处理器触发响应;
- 用户空间通过系统调用接口(如
read()
,write()
)访问内核服务。
6. 网络栈
- 完善的 TCP/IP 协议栈;
- 支持路由、防火墙(
iptables
、nftables
)、VPN
、Socket
通信等。
四、Linux 内核开发模型
-
内核源码托管在 kernel.org;
-
使用
Git
进行协作,主要分支由 Linus 主持; -
采用“补丁提交 + 审核合并”方式,全球开发者可贡献代码。
-
内核版本:
- LTS(长期支持版);
- 主线版(每 2-3 月更新一次)。
五、Linux 的发行版(Distros)
Linux 并不是一个完整操作系统,而是内核。
各发行版将内核与各种用户空间工具组合,形成完整系统。
类型 | 代表发行版 | 特点 |
---|---|---|
通用桌面 | Ubuntu , Fedora , Debian | 适合普通用户,有图形界面 |
服务器 | CentOS , RHEL , Ubuntu Server | 稳定、安全、适合服务部署 |
滚动更新 | Arch , Manjaro | 包新、自由度高,适合高级用户 |
极简嵌入式 | OpenWRT , BusyBox , Alpine | 轻量、适合IoT和容器 |
六、Linux 的优势与挑战
优势:
- 开源免费,灵活定制;
- 安全性好(多用户、权限严格);
- 社区支持强大,驱动更新快;
- 大量企业应用与云计算依赖(如 Docker、Kubernetes)。
挑战:
- 初学者学习曲线相对陡峭;
- 驱动支持相较 Windows 少(部分专有硬件);
- 桌面体验(GUI)部分仍不如 macOS/Windows 统一。
七、应用领域
领域 | 说明 |
---|---|
服务器/数据中心 | 超过 90% 的 Web 服务器、云计算平台使用 Linux |
嵌入式系统 | 路由器、智能电视、工业控制系统广泛使用 |
Android 手机系统 | Android 基于 Linux 内核 |
超级计算机 | 全球前 500 台超级计算机几乎全部运行 Linux |
开发环境 | 稳定高效、开发工具丰富,是程序员首选 |
八、典型命令与工具
- 文件操作:
ls
,cp
,mv
,rm
,find
; - 权限管理:
chmod
,chown
; - 软件管理(以 Debian 为例):
apt-get
,dpkg
; - 系统查看:
top
,ps
,df
,du
,free
,uptime
; - 编程支持:
GCC
、Make
、GDB
、strace
、lsof
、vim/emacs
; - Shell 编程:
bash/zsh
。