返回首页
操作系统核心原理
操作系统核心功能
操作系统是计算机硬件和应用程序之间的桥梁,主要功能包括:
- 进程管理:进程创建、调度、同步和通信
- 内存管理:内存分配、虚拟内存、页面置换
- 文件系统:文件存储、目录管理、权限控制
- 设备管理:设备驱动、I/O调度
- 安全管理:用户认证、访问控制
进程与线程
进程概念:
进程是程序的一次执行,拥有独立的内存空间和系统资源。
线程概念:
线程是进程内的执行单元,共享进程的内存空间和资源。
进程与线程对比:
| 特性 | 进程 | 线程 |
|---|---|---|
| 资源开销 | 大(独立内存空间) | 小(共享内存空间) |
| 通信方式 | 进程间通信(IPC) | 共享内存 |
| 创建销毁 | 慢 | 快 |
| 独立性 | 独立,崩溃不影响其他进程 | 依赖进程,线程崩溃可能导致进程崩溃 |
进程调度算法
- 先来先服务(FCFS):按到达顺序执行
- 短作业优先(SJF):执行时间短的进程优先
- 优先级调度:按优先级执行
- 轮转调度(RR):每个进程分配时间片轮流执行
- 多级反馈队列:结合多种调度策略
内存管理
虚拟内存:
虚拟内存使程序可以使用比物理内存更大的地址空间。
页面置换算法:
- 最优置换(OPT):淘汰未来最长时间不被访问的页面
- 先进先出(FIFO):淘汰最早进入内存的页面
- 最近最久未使用(LRU):淘汰最近最久未使用的页面
- 时钟算法(Clock):近似LRU,性能较好
内存分配策略:
// C语言中的动态内存分配
#include <stdlib.h>
int main() {
// 分配内存
int *arr = (int*)malloc(10 * sizeof(int));
if (arr == NULL) {
// 处理分配失败
return 1;
}
// 使用内存
for (int i = 0; i < 10; i++) {
arr[i] = i * i;
}
// 释放内存
free(arr);
return 0;
}
死锁与处理
死锁是指多个进程因竞争资源而相互等待的现象。
死锁产生的四个必要条件:
- 互斥条件:资源只能被一个进程占用
- 占有并等待:进程已占有资源,同时请求新资源
- 不可剥夺:资源不能被强制剥夺
- 循环等待:进程间形成资源请求的循环链
死锁处理方法:
- 预防:破坏死锁产生的必要条件
- 避免:银行家算法,确保系统处于安全状态
- 检测与恢复:定期检测死锁,发现后采取措施恢复
- 忽略:鸵鸟策略,假设死锁不会发生