Linux 系统的结构可以划分为 用户空间 和 内核空间 两大部分,采用分层设计,各层协同工作。以下是详细分解:
Linux 内核是操作系统的核心,负责资源管理和硬件抽象:
- 进程管理:进程调度、创建/终止进程(通过 fork()
、exec()
等系统调用)。
- 内存管理:虚拟内存、分页、交换(通过 mmap()
、malloc()
等)。
- 文件系统:支持 ext4、XFS 等文件系统,提供 VFS(虚拟文件系统)抽象层。
- 设备驱动:与硬件交互的驱动模块(如网卡、显卡驱动)。
- 网络协议栈:实现 TCP/IP、套接字(Socket)通信。
- 系统调用(Syscall):用户程序访问内核功能的接口(如 open()
、write()
)。
用户程序运行的环境,通过系统调用与内核交互:
- 系统工具:GNU Coreutils(ls
、cp
、bash
等)。
- 库函数:Glibc(提供 printf()
、fopen()
等标准库函数)。
- Shell:命令行解释器(如 Bash、Zsh),调用其他程序。
- 桌面环境:GNOME、KDE 等(可选)。
- 服务/守护进程:systemd
、sshd
等后台服务。
Linux 文件系统采用标准化的目录结构:
目录 | 用途 |
---|---|
/ |
根目录,所有其他目录的起点。 |
/bin |
基本用户命令(如 ls 、cat ),所有用户可用。 |
/sbin |
系统管理命令(如 iptables 、fdisk ),需 root 权限。 |
/etc |
系统配置文件(如 /etc/passwd 、/etc/network/interfaces )。 |
/dev |
设备文件(如 /dev/sda 表示磁盘,/dev/null 虚拟设备)。 |
/proc |
虚拟文件系统,实时进程和内核信息(如 /proc/cpuinfo )。 |
/lib |
共享库文件(如 .so 文件)和内核模块。 |
/usr |
用户程序和数据(二级目录,含 /usr/bin 、/usr/lib 等)。 |
/var |
可变数据(日志 /var/log ,缓存 /var/cache )。 |
/home |
普通用户的家目录(如 /home/alice )。 |
/root |
root 用户的家目录。 |
/tmp |
临时文件,所有用户可读写(通常定期清理)。 |
ls -l
) → Shell 解析命令。execve()
加载 /bin/ls
,内核执行文件操作。modprobe nvidia
加载显卡驱动)。httpd
)提供网络服务。Linux 的层级结构清晰,从硬件到应用层层抽象:
用户程序 → Glibc → 系统调用 → 内核 → 硬件驱动 → 物理设备
这种设计保证了稳定性、安全性和灵活性,适用于从嵌入式设备到超级计算机的各种场景。