社团课程

操作系统
简介

从零理解操作系统的核心概念,探索 Linux 的魅力世界

向下滚动
Part 01

什么是操作系统?

Common OS

常见的操作系统

我们日常接触的电子设备中,运行着不同类型的操作系统

🪟

Windows

全球最流行的个人电脑操作系统

由 Microsoft 开发,拥有最广泛的桌面市场份额

🍎

macOS

Apple 电脑专属系统

以设计和创意见长,为 Mac 系列产品提供流畅体验

🐧

Linux

开源 · 自由 · 高度定制

开发者和服务器的首选,自由且强大

🤖

Android

移动系统全球市场份额第一

基于 Linux,由 Google 主导开发

📱

iOS

Apple 移动设备专属

以流畅和安全著称,iPhone/iPad 的灵魂

Definition

操作系统的定义

📖 Operating System

操作系统(OS)是指控制和管理整个计算机系统的硬件和软件资源, 并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境。 它是计算机系统中最基本的系统软件

⚙️
核心职能一
管理硬件及软件资源
🔌
核心职能二
用户/程序与硬件之间的接口
Resource Management

管理硬件和软件资源

操作系统作为资源管家,负责四大核心管理任务

🧠

处理器管理

  • 进程控制
  • 进程同步
  • 进程通信
  • 作业进程调度
💾

存储器管理

  • 内存分配
  • 内存保护
  • 地址映射
  • 内存扩充
🖨️

设备管理

  • 缓冲管理
  • 设备分配
  • 设备处理
📁

文件管理

  • 存储管理
  • 目录管理
  • 读写管理和保护
Interface

用户/程序与硬件之间的接口

系统调用
命令接口
GUI

系统调用 (System Call)

系统调用是操作系统提供给应用程序使用的接口,是应用程序与操作系统内核交互的唯一方式。 当用户程序需要访问硬件资源时,必须通过系统调用向内核提出请求。

系统调用示意
// 用户程序请求读取文件 用户态 → open("file.txt", O_RDONLY) ↓ 触发系统调用(软中断) 内核态 → 执行文件操作,返回文件描述符 ↓ 返回结果 用户态 ← fd = 3 (获得文件描述符)
⌨️

命令接口 (CLI)

命令行接口是用户通过文本命令与操作系统交互的方式。Linux 中最常用的是 Shell(如 Bash、Zsh), 用户输入命令,系统执行并返回结果。这是高效、强大的交互方式。

终端 Terminal
user@linux:~$ ls -la drwxr-xr-x 5 user user 4096 Apr 26 10:00 . drwxr-xr-x 3 root root 4096 Apr 25 08:00 .. -rw-r--r-- 1 user user 220 Apr 25 08:00 .bashrc user@linux:~$ echo "Hello, Linux!" Hello, Linux!
🖥️

图形用户界面 (GUI)

图形用户界面提供了直观的窗口、图标、菜单等可视化元素,让用户可以通过鼠标点击、拖拽等方式操作计算机。 Linux 有多种桌面环境可选,如 GNOME、KDE Plasma、XFCE 等。

🎨
GNOME
简洁现代
💎
KDE Plasma
高度定制
XFCE
轻量快速
Part 02

操作系统发展史

History

三代演进

从穿孔卡片到多道程序设计,操作系统经历了革命性的发展

第一代 · 1940s-1950s

真空管和穿孔卡片

没有操作系统的时代,程序员直接与硬件打交道。通过纸带输入程序和数据,程序运行完毕后才能取回结果。

👤 程序员 📜 纸带 📼 纸带机 🖥️ 计算机 📼 纸带机 📜 纸带
第二代 · 1950s-1960s

晶体管和批处理系统

出现了监控程序(早期操作系统雏形),用户将作业提交给操作员,操作员将一批作业用磁带收集后统一处理,提高了 CPU 利用率。

👤×n 程序员 📜 纸带 📼 磁带 🖥️ 计算机 📼 磁带 📜 纸带
第三代 · 1960s-

集成电路芯片和多道程序设计

集成电路带来了更强大的计算能力。多道程序设计技术让内存中同时存在多个程序,CPU 在它们之间切换,大幅提高了效率。这是现代操作系统的基石。

📂 程序A 🧠 CPU 📂 程序B ← 多道程序并发执行
Part 03

Linux

Unix Philosophy

Unix 哲学

Linux 继承了 Unix 的设计哲学,这九条原则深刻影响了软件工程

1
小即是美 — 小程序更易理解、维护和组合
2
让程序只做好一件事 — 专注单一功能,做到极致
3
尽可能早地建立原型 — 快速验证想法,迭代改进
4
可移植性比效率更重要 — 优秀的算法不会因移植而变差
5
数据应该保存为文本文件 — 文本是通用接口
6
尽可能地榨取软件的全部价值 — 好工具值得深度利用
7
使用 Shell 脚本提高效率和可移植性 — 脚本是胶水语言
8
避免使用可定制性低下的用户界面 — 灵活性是关键
9
所有程序都是数据的过滤器 — 输入→处理→输出
About Linux

认识 Linux

GNU/Linux

Linux,一般指 GNU/Linux,是一种免费使用和自由传播的类 UNIX 操作系统。 其内核由 Linus Torvalds 于 1991 年 10 月 5 日首次发布, 主要受到 Minix 和 Unix 思想的启发。

Linux 是一个基于 POSIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。 它支持 32 位和 64 位硬件,能运行主要的 Unix 工具软件、应用程序和网络协议。 Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

───────────────────────── / \_____/ \______/ \ \ / / \ \ / \ \ | | O | | | | O | || | |_____| | | |____| || \ / \ / / / \ / \/_______\/__/ \/______\/ ┌──────────────────────┐ │ 🐧 Tux the Penguin │ │ Linux 吉祥物 │ │ Linus Torvalds (1969-)│ └──────────────────────┘
Distributions

Linux 发行版一览

Linux 有众多发行版,满足不同需求

🔴

Ubuntu

最流行的桌面发行版,适合新手入门

🔵

Debian

稳定可靠,Ubuntu 的上游发行版

🟡

Fedora

前沿技术,Red Hat 的试验田

🟢

Arch Linux

极简主义,高度自定义

🟣

CentOS

企业级服务器,长期支持

File System

Linux 目录结构

在 Linux 里面,一切皆文件

File System Hierarchy
/ ← 根目录,一切起始 ├── bin ← 基本命令二进制文件 ├── boot ← 启动加载器与内核 ├── dev ← 设备文件 ├── etc ← 系统配置文件 ├── home ← 用户主目录 ├── lib ← 共享库文件 ├── mnt ← 临时挂载点 ├── opt ← 可选应用软件包 ├── proc ← 进程和内核信息 ├── root ← root 用户主目录 ├── sbin ← 系统管理命令 ├── tmp ← 临时文件 ├── usr ← 用户程序和数据 └── var ← 可变数据(日志等)
Commands

命令行基础

CLI Basics

常用命令速查

掌握这些基础命令,开启你的 Linux 之旅

cd
df
rm
dpkg

cd 切换目录

cd [目录路径]
cd .. 返回上一级目录(.. 代表父目录)
cd ~ 快速回到当前用户的家目录(如 /home/用户名)
cd - 回到上一次所在的目录,类似"后退"功能
Terminal — cd 示例
user@linux:~$ cd /var/log user@linux:/var/log$ pwd /var/log user@linux:/var/log$ cd .. user@linux:/var$ cd ~ user@linux:~$ pwd /home/user user@linux:~$ cd - /var user@linux:/var$

df 查看磁盘空间

df [选项]
df -h 最常用!以人类可读格式显示磁盘空间
功能说明 显示磁盘分区的总容量、已用空间、可用空间和挂载点
Terminal — df 示例
user@linux:~$ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 50G 20G 28G 42% / /dev/sda2 200G 80G 110G 42% /home tmpfs 3.9G 1.2M 3.9G 1% /tmp

rm 删除文件或目录

rm [选项] [文件或目录名]
rm remove,删除文件
-r / -R 递归删除(删除目录及其内容)
-f 强制删除(不提示确认)
⚠️ 危险命令警告
rm -rf / 彻底摧毁整个系统!现代系统通常有保护,但依然极其危险
rm -rf * 删除当前目录下所有文件和目录
rm -rf . 删除当前目录本身及其所有内容
Terminal — 安全替代方案
# 推荐使用 trash-put 移动到回收站 user@linux:~$ trash-put old_file.txt # sudo: 以超级用户权限执行某一条命令 user@linux:~$ sudo apt update # su: 切换用户身份 user@linux:~$ su - root

dpkg Debian 软件包管理器

dpkg [选项] [软件包名/文件名]
sudo dpkg -i file.deb 安装 .deb 软件包
dpkg -l | grep name 查看已安装的软件包
sudo dpkg -r name 移除软件包(Remove)
sudo dpkg -P name 清除软件包及配置(Purge)
Terminal — dpkg vs apt
# dpkg 是底层工具,只处理单个 .deb 文件,不解决依赖关系 user@linux:~$ sudo dpkg -i package.deb # apt 基于 dpkg,能自动下载并解决依赖关系 user@linux:~$ sudo apt install package 💡 建议优先使用 apt,它会自动处理依赖问题
Resources

学习资源

Learn More

继续深入学习

推荐以下资源帮助你进一步掌握 Linux

🎬

韩顺平 Linux 教程

小白入门 通俗易懂,一周学会 Linux

📖

菜鸟教程 Linux

系统化 Linux 教程,适合查阅学习

🔧

The Linux Kernel Archives

Linux 内核官方源码与文档

🟠

Canonical Ubuntu

Ubuntu 官方网站,最流行的 Linux 发行版

🪟

WSL 安装指南

如何在 Windows 上安装 Linux 子系统