操作系统简介
什么是操作系统?
操作系统(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文档,欢迎补充更多操作系统相关内容。