当前位置: 首页 > article >正文

操作系统学习(十三)——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 协议栈;
  • 支持路由、防火墙(iptablesnftables)、VPNSocket通信等。

四、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
  • 编程支持:GCCMakeGDBstracelsofvim/emacs
  • Shell 编程:bash/zsh
http://www.lryc.cn/news/2400765.html

相关文章:

  • NLP学习路线图(二十二): 循环神经网络(RNN)
  • 每日一C(1)C语言的内存分布
  • Photoshop使用钢笔绘制图形
  • 应用层协议:HTTP
  • 复习——C++
  • SPI通信协议(软件SPI读取W25Q64)
  • PostgreSQL-基于PgSQL17和11版本导出所有的超表建表语句
  • JavaWeb:前后端分离开发-部门管理
  • ArcGIS计算多个栅格数据的平均栅格
  • 字节开源FlowGram:AI时代可视化工作流新利器
  • 如何选择合适的分库分表策略
  • (LeetCode 每日一题)3403. 从盒子中找出字典序最大的字符串 I (贪心+枚举)
  • GPIO的内部结构与功能解析
  • Python训练打卡Day42
  • 深度学习中的负采样
  • php7+mysql5.6单用户中医处方管理系统V1.0
  • Java 大视界 — Java 大数据在智能安防视频监控中的异常事件快速响应与处理机制
  • 智慧物流园区整体解决方案
  • 审批流程管理系统开发记录:layui前端交互的实践
  • 【会员专享数据】1960—2023年我国省市县三级逐年降水量数据(Shp/Excel格式)
  • 2025年精通MVCC
  • 硬路由与软路由
  • OpenCV C++ 心形雨动画
  • Fullstack 面试复习笔记:Java 基础语法 / 核心特性体系化总结
  • 安卓Compose实现鱼骨加载中效果
  • 使用qt 定义全局钩子 捕获系统的键盘事件
  • FreeType 字体信息检查工具 - 现代C++实现
  • el-table 树形数据,子行数据可以异步加载
  • 【使用JAVA调用deepseek】实现自能回复
  • 【Linux系列】rsync命令详解与实践