操作系统面试题
2026/1/15大约 2 分钟
操作系统面试题
进程与线程
1. 进程和线程的区别?
| 特性 | 进程 | 线程 |
|---|---|---|
| 定义 | 资源分配单位 | CPU 调度单位 |
| 资源 | 独立地址空间 | 共享进程资源 |
| 开销 | 创建/切换开销大 | 开销小 |
| 通信 | IPC | 共享内存 |
| 影响 | 独立 | 一个崩溃影响整个进程 |
2. 进程间通信方式?
- 管道:半双工,父子进程
- 命名管道:无亲缘关系进程
- 消息队列:消息链表
- 共享内存:最快,需同步
- 信号量:用于同步
- 信号:异步通知
- Socket:可跨主机
3. 死锁的条件和预防?
四个必要条件:
- 互斥
- 占有并等待
- 不可抢占
- 循环等待
预防: 破坏任一条件
避免: 银行家算法
4. 进程调度算法?
| 算法 | 说明 |
|---|---|
| FCFS | 先来先服务 |
| SJF | 短作业优先 |
| 优先级 | 按优先级调度 |
| 时间片轮转 | 固定时间片 |
| 多级反馈队列 | 综合性能好 |
内存管理
5. 虚拟内存的作用?
- 扩展可用内存空间
- 进程隔离,保护安全
- 简化内存管理
- 支持内存共享
6. 页面置换算法?
| 算法 | 说明 |
|---|---|
| OPT | 最优,无法实现 |
| FIFO | 先进先出 |
| LRU | 最近最少使用 |
| Clock | LRU 近似 |
7. 分页和分段的区别?
| 特性 | 分页 | 分段 |
|---|---|---|
| 目的 | 内存管理 | 逻辑划分 |
| 大小 | 固定 | 可变 |
| 碎片 | 内部碎片 | 外部碎片 |
8. 什么是缺页中断?
访问的页面不在内存中,触发缺页中断:
- 保存现场
- 查找页面在磁盘位置
- 若内存满,执行页面置换
- 将页面调入内存
- 更新页表
- 恢复现场,重新执行
文件系统
9. 文件分配方式?
- 连续分配:顺序访问快,有外部碎片
- 链接分配:无碎片,随机访问慢
- 索引分配:支持随机访问,索引占空间
10. 磁盘调度算法?
| 算法 | 说明 |
|---|---|
| FCFS | 先来先服务 |
| SSTF | 最短寻道时间优先 |
| SCAN | 电梯算法 |
| C-SCAN | 循环扫描 |
其他
11. 用户态和内核态的区别?
| 特性 | 用户态 | 内核态 |
|---|---|---|
| 权限 | 受限 | 完全 |
| 资源访问 | 通过系统调用 | 直接访问 |
| 切换 | 系统调用、中断、异常 | - |
12. 什么是上下文切换?
保存当前进程/线程状态,恢复另一个进程/线程状态的过程。
开销:
- 保存/恢复寄存器
- 切换地址空间
- 刷新 TLB
- 缓存失效