Skip to content

操作系统简介

什么是操作系统?

操作系统(Operating System,OS)是管理计算机硬件和软件资源的程序,为用户和应用程序提供简单、一致的接口。

操作系统的功能

1. 进程管理

  • 进程创建和终止
  • 进程调度
  • 进程同步和通信
  • 死锁处理

2. 内存管理

  • 内存分配和回收
  • 地址映射
  • 内存保护
  • 虚拟内存

3. 文件管理

  • 文件的创建、删除、读写
  • 目录管理
  • 文件系统
  • 访问权限控制

4. 设备管理

  • 设备驱动
  • I/O管理
  • 缓冲和缓存

操作系统分类

按使用环境分类

类型特点示例
桌面操作系统图形界面,易用Windows、macOS、Linux
服务器操作系统高可靠、高性能Linux、Windows Server
移动操作系统触摸屏,低功耗Android、iOS
嵌入式操作系统实时性,资源受限RTOS、FreeRTOS

按架构分类

  • 单用户单任务:DOS
  • 单用户多任务:Windows、macOS
  • 多用户多任务:Unix、Linux

主流操作系统

1. Linux

  • 开源免费
  • 稳定可靠
  • 安全性高
  • 适合服务器

主要发行版

  • Ubuntu
  • CentOS/RHEL
  • Debian
  • Fedora
  • Arch Linux

2. Windows

  • 用户友好
  • 软件丰富
  • 游戏支持好
  • 办公场景

3. macOS

  • Unix基础
  • 设计优雅
  • 开发友好
  • 苹果生态

4. Unix

  • 历史悠久
  • 设计优秀
  • 影响深远
  • 商业系统

内核类型

宏内核(Monolithic Kernel)

所有系统服务都在内核空间运行。

优点

  • 性能高
  • 通信效率高

缺点

  • 代码复杂
  • 稳定性差

示例:Linux、Unix

微内核(Microkernel)

只有最基本的功能在内核空间,其他服务在用户空间。

优点

  • 稳定性好
  • 易于维护
  • 安全性高

缺点

  • 性能较低
  • 通信开销大

示例:Minix、QNX

混合内核(Hybrid Kernel)

结合宏内核和微内核的优点。

示例:Windows NT、macOS

系统调用

系统调用是用户程序与操作系统内核之间的接口。

常见系统调用

进程控制

c
fork()    // 创建进程
exec()    // 执行程序
exit()    // 退出进程
wait()    // 等待子进程

文件操作

c
open()    // 打开文件
read()    // 读文件
write()   // 写文件
close()   // 关闭文件

设备管理

c
ioctl()   // 设备控制
read()    // 读设备
write()   // 写设备

信息维护

c
getpid()  // 获取进程ID
time()    // 获取时间

通信

c
pipe()    // 创建管道
shmget()  // 获取共享内存
msgget()  // 获取消息队列

中断和异常

中断(Interrupt)

外部事件触发,打断CPU执行。

类型

  • 硬件中断:键盘、鼠标、网卡等
  • 软件中断:系统调用

异常(Exception)

程序执行过程中的错误。

类型

  • 故障(Fault):可以修复,如缺页异常
  • 陷阱(Trap):有意触发,如断点
  • 终止(Abort):严重错误,无法恢复

中断处理流程

1. 硬件检测到中断信号
2. 保存当前程序状态
3. 查找中断向量表
4. 执行中断处理程序
5. 恢复程序状态
6. 继续执行

特权级别

用户态和内核态

┌─────────────────────┐
│    用户程序          │  用户态(Ring 3)
├─────────────────────┤
│    系统调用接口      │
├─────────────────────┤
│    操作系统内核      │  内核态(Ring 0)
├─────────────────────┤
│    硬件             │
└─────────────────────┘

用户态

  • 权限受限
  • 不能直接访问硬件
  • 需要通过系统调用访问内核

内核态

  • 权限最高
  • 可以执行任何指令
  • 可以访问所有资源

Shell

Shell是用户与操作系统交互的命令行界面。

常见Shell

  • Bash:Linux默认Shell
  • Zsh:功能强大,可扩展
  • Fish:用户友好
  • PowerShell:Windows Shell

Shell脚本

bash
#!/bin/bash

# 变量
name="GlowXQ"
echo "Hello, $name"

# 条件判断
if [ $age -gt 18 ]; then
    echo "成年人"
fi

# 循环
for i in {1..5}; do
    echo $i
done

# 函数
function greet() {
    echo "Hello, $1"
}
greet "World"

虚拟化技术

虚拟机(VM)

完整的操作系统虚拟化。

特点

  • 隔离性好
  • 资源开销大
  • 启动慢

示例:VMware、VirtualBox、KVM

容器(Container)

操作系统级虚拟化。

特点

  • 轻量级
  • 启动快
  • 资源利用率高

示例:Docker、Podman、LXC

虚拟机 vs 容器

虚拟机架构:
┌─────┬─────┬─────┐
│ App │ App │ App │
├─────┼─────┼─────┤
│ OS  │ OS  │ OS  │
├─────┴─────┴─────┤
│   Hypervisor    │
├─────────────────┤
│   Host OS       │
└─────────────────┘

容器架构:
┌─────┬─────┬─────┐
│ App │ App │ App │
├─────┼─────┼─────┤
│  Container Eng  │
├─────────────────┤
│   Host OS       │
└─────────────────┘

常用命令

文件操作

bash
ls          # 列出文件
cd          # 切换目录
pwd         # 当前目录
mkdir       # 创建目录
rm          # 删除文件
cp          # 复制文件
mv          # 移动文件
cat         # 查看文件
less/more   # 分页查看
head/tail   # 查看文件头/尾
find        # 查找文件
grep        # 搜索文本

进程管理

bash
ps          # 查看进程
top         # 实时进程监控
kill        # 终止进程
killall     # 终止同名进程
bg          # 后台运行
fg          # 前台运行
jobs        # 查看后台任务

系统信息

bash
uname       # 系统信息
hostname    # 主机名
uptime      # 运行时间
free        # 内存使用
df          # 磁盘使用
du          # 目录大小
iostat      # IO统计
vmstat      # 虚拟内存统计

网络命令

bash
ifconfig/ip # 网络接口
ping        # 测试连通性
netstat     # 网络连接
ss          # Socket统计
traceroute  # 路由追踪
nslookup    # DNS查询
curl/wget   # 网络请求

权限管理

bash
chmod       # 修改权限
chown       # 修改所有者
chgrp       # 修改组
sudo        # 以管理员身份执行
su          # 切换用户

文件权限

权限表示

-rwxr-xr--
 │││││││││
 │││└┴┴┴┴┴─ 其他用户权限(r--)
 ││└┴┴┴┴─── 组权限(r-x)
 │└┴┴┴───── 所有者权限(rwx)
 └────────── 文件类型(-=文件,d=目录)

权限数字表示

  • r(读)= 4
  • w(写)= 2
  • x(执行)= 1
bash
chmod 755 file   # rwxr-xr-x
chmod 644 file   # rw-r--r--
chmod 777 file   # rwxrwxrwx

💡 提示

这是一个demo文档,欢迎补充更多操作系统相关内容。

深入学习

基于 VitePress 构建