Linux系统简介

Linux 本质上是一个内核(kernel),但通常我们说的“Linux 系统”是指 内核 + 各种工具/软件包的集合。Linux内核是开源的,允许软件被自由地使用、修改和再发布,因此许多公司和组织都会基于Linux内核,来开发自己的系统,即发行版,如:

  • Ubuntu(用户友好,适合入门)
  • CentOS / RHEL(服务器常用)
  • Debian(稳定性高)
  • Arch Linux(极度自定义)
  • Kali Linux(渗透测试、安全研究)

Linux系统结构(从底层到高层)

  1. 硬件层
    • 就是物理设备,例如:CPU、内存、硬盘、网卡、外设等。
    • Linux通过驱动程序控制和管理这些硬件
  2. Linux内核(Kernel)
    内核是Linux系统最重要的部分,关键模块
    |模块|功能|
    |—-|—-|
    |进程管理| 负责进程调度、创建、终止(多任务能力)|
    |内存管理| 管理虚拟内存、物理内存分配等|
    |文件系统| 支持各种文件系统(ext4、NTFS、FAT等)|
    |设备驱动| 管理硬件设备,如鼠标、硬盘、摄像头等|
    |网络协议栈| 提供 TCP/IP、UDP 等协议通信|
    |安全模块| 权限控制、SELinux、防火墙等|

  3. 系统库

    • 系统库 是连接应用程序和操作系统内核之间的重要桥梁。可以把它们理解为一组预先写好的“功能函数”集合,应用程序通过调用这些库函数来完成常见的任务(比如读文件、分配内存、创建进程),而不是直接操作内核。
    • 分类
      |类型|说明|实例|
      |—-|—-|—-|
      |标准C库(libc)| 提供最基本的函数,如 printf、malloc、open 等| glibc, musl|
      |数学库| 提供数学函数如 sin、cos、sqrt |libm.so|
      |动态链接库(.so)| 运行时动态加载的共享库,节省内存| /lib/libc.so.6|
      |静态库(.a)| 编译时嵌入到程序里,独立运行| /usr/lib/libm.a|
      |第三方库| 由社区或开发者提供的功能包| OpenSSL、SQLite、curl 等|
    • 系统库是 Linux 中的“工具箱”,程序只要打开它,就能轻松完成文件操作、网络通信、内存管理等底层操作。
  1. Shell(命令行解释器)

    • Shell 是一种程序,它翻译用户输入的命令,并执行。
    • 常见的 Shell 有:bash(最常用)、zsh、sh 等。
    • Shell 也支持编程(Shell 脚本)用于自动化任务。
  2. 应用程序

    • 用户实际使用的软件:如 vim、gcc、git、浏览器等
    • 这些程序运行在用户空间,调用内核功能完成实际工作。

为什么使用Linux

  • 安全稳定:服务器崩溃很少见。
  • 资源占用低:适合老电脑或嵌入式设备。
  • 自动化强:Shell 脚本强大,适合 DevOps。
  • 开发友好:几乎是编程环境的标配(尤其是 Python、C/C++)。