1. 操作系统概述与核心概念
操作系统是计算机系统中最基础、最核心的软件,它就像计算机系统的"大管家",负责协调硬件和软件资源。想象一下,如果没有操作系统,我们每次使用电脑都需要手动管理内存、CPU等资源,那将是多么可怕的事情。在考研复试中,这部分内容虽然基础,但却是面试官最喜欢考察的"开胃菜"。
操作系统的四大特征中,并发性和共享性是最容易混淆的。我当年备考时就经常搞混这两个概念。并发性强调的是"同一时间间隔"内多个任务交替执行(注意不是同时执行),而共享性则是指多个任务可以共同使用系统资源。举个生活中的例子:你在用电脑同时听歌和写文档,这就是并发性;而这两个程序都在使用电脑的内存和CPU,这就是共享性。
操作系统的运行机制涉及到用户态和内核态的转换,这个知识点在面试中出现的频率极高。当我们的应用程序需要执行一些特权操作(比如读写文件)时,就必须通过系统调用从用户态切换到内核态。这个过程就像普通员工需要申请特殊权限才能进入公司机房一样。记住一个关键点:系统调用的执行过程是"用户态→内核态→用户态"的完整循环。
2. 进程管理与调度算法
进程管理是操作系统中最复杂的部分之一,也是考研复试的重中之重。很多同学容易把进程和程序混为一谈,其实它们最大的区别在于:程序是静态的代码集合,而进程是动态的执行过程。这就好比菜谱和做菜的过程——菜谱只是文字说明,而真正动手做菜才是动态的过程。
在进程状态转换中,阻塞态和就绪态的区别经常被问到。简单来说,就绪态是"万事俱备只欠CPU",而阻塞态是"缺东少西没法运行"。比如进程等待键盘输入时就会进入阻塞态,而当输入完成后,它不会直接变成运行态,而是先进入就绪态排队。
处理机调度算法是必考的重点,我建议用表格对比记忆:
| 调度算法 | 特点 | 优缺点 | 适用场景 |
|---|---|---|---|
| FCFS | 先来先服务 | 实现简单,但长作业会导致平均等待时间长 | 批处理系统 |
| SJF | 短作业优先 | 平均等待时间最短,但难以预测作业长度 | 交互式系统 |
| 时间片轮转 | 公平分配CPU时间 | 响应时间快,但上下文切换开销大 | 分时系统 |
| 多级反馈队列 | 综合多种算法 | 兼顾长短作业,实现复杂 | 通用系统 |
3. 内存管理关键技术
内存管理就像给程序分配宿舍,既要考虑空间利用率,又要保证各个程序互不干扰。在连续分配方式中,动态分区分配是最常见的考点。它有四种分配算法,我当年用一句话就记住了它们的区别:"首次适应从头找,最佳适应找最小,最坏适应找最大,邻近适应接着找"。
分页和分段的区别是高频考点,我总结了一个对比表:
| 比较项 | 分页 | 分段 |
|---|---|---|
| 目的 | 系统管理需要 | 用户编程需要 |
| 大小 | 固定 | 可变 |
| 可见性 | 对用户透明 | 对用户可见 |
| 碎片 | 内部碎片 | 外部碎片 |
| 地址 | 一维 | 二维 |
虚拟内存是解决内存不足的"黑科技",它通过请求分页机制实现了"小内存跑大程序"的魔法。在准备复试时,一定要掌握页面置换算法。LRU算法(最近最久未使用)是最理想的算法之一,但实现成本高;而Clock算法则是它的近似实现,兼顾了效果和性能。
4. 文件系统与磁盘管理
文件系统就像图书馆的管理员,负责把杂乱的数据有序地存储在磁盘上。在复试中,文件的物理结构是常考点。三种主要结构各有特点:
- 连续分配:文件占据连续的磁盘块,访问速度快,但会产生外部碎片
- 链接分配:通过指针连接非连续的磁盘块,无外部碎片,但随机访问效率低
- 索引分配:通过索引块记录文件位置,兼具前两者的优点,但需要额外空间存储索引
磁盘调度算法直接影响着系统的I/O性能。在准备这部分内容时,建议重点掌握以下四种算法:
- 先来先服务(FCFS):简单但性能差,磁头移动距离大
- 最短寻道时间优先(SSTF):服务最近的请求,可能导致饥饿
- 扫描算法(电梯算法):单向移动服务沿途请求,公平但响应时间不均
- 循环扫描(C-SCAN):单向移动且快速返回,响应时间更均匀
5. I/O系统与死锁处理
I/O控制方式的演进反映了计算机系统的发展历程。从程序直接控制到中断驱动,再到DMA和通道控制,CPU的干预程度越来越低,系统效率越来越高。这部分内容可以结合历史发展来理解,重点掌握每种方式的特点和适用场景。
死锁是系统中最棘手的问题之一。在复试中,面试官可能会让你举例说明死锁的四个必要条件。我常用的例子是十字路口的四辆车:每辆车都需要其他车让路(互斥条件),司机都不愿倒车(不可剥夺),都在等别人先动(请求并保持),形成了循环等待。解决死锁的策略中,银行家算法是最经典的死锁避免算法,它通过预判分配是否会导致不安全状态来避免死锁。