计算机基础知识-操作系统
第1章 操作系统概述
1. 操作系统的定义、目标与功能?
参考答案:
-
定义:OS 是管理和控制计算机软硬件资源的系统软件,是用户与计算机硬件之间的接口。
-
目标:方便用户使用、提高系统效率、合理分配资源。
-
功能:
- 处理机管理(进程/线程)
- 存储器管理(内存分配、保护、虚拟)
- 设备管理(I/O、缓冲、驱动)
- 文件管理(文件系统、目录、磁盘)
- 提供用户接口(命令、程序、图形)
2. 操作系统的基本特征?
参考答案:
- 并发:多个程序宏观上同时运行(区别于并行)。
- 共享:资源互斥共享或同时访问。
- 虚拟:物理实体变为多个逻辑实体(如虚拟内存、虚拟CPU)。
- 异步:进程以不可预知速度推进,但结果可再现。
3. 内核态与用户态的区别?为什么要区分?
参考答案:
-
用户态:应用程序运行,权限低,不能直接访问硬件。
-
内核态:OS 内核运行,权限高,可执行特权指令。
-
目的:保护系统安全,防止用户程序破坏硬件和内核数据。
4. 系统调用是什么?与函数调用区别?
参考答案:
-
系统调用:用户程序通过中断进入内核,请求 OS 服务(如 open、read、fork)。
-
区别:
-
系统调用:切换态,开销大,由 OS 提供。
-
函数调用:不切换态,开销小,由库/用户程序提供。
第2章 进程与线程
1. 进程定义与组成(PCB)?
参考答案:
-
进程:具有独立功能的程序在一个数据集合上的一次执行过程,是资源分配的基本单位。
-
组成:PCB(进程控制块)+ 程序段 + 数据段。
-
PCB 包含:PID、状态、寄存器、优先级、内存指针等,是进程唯一标志。
2. 进程的五种基本状态及转换?
参考答案:
- 新建态
- 就绪态:获得除CPU外所有资源
- 运行态:占有CPU
- 阻塞态(等待态):等待某事件
- 终止态
-
转换:
-
运行→就绪:时间片到、抢占
-
运行→阻塞:I/O、等待信号
-
阻塞→就绪:事件完成
3. 进程与线程的区别?
参考答案:
-
进程:资源分配单位,独立地址空间,切换开销大,通信复杂。
-
线程:调度执行单位,共享进程资源,切换开销小,通信方便。
-
同一进程内多线程共享:代码、数据、文件、地址空间;
独享:栈、寄存器、线程控制块 TCB。
4. 线程实现方式:用户级线程(ULT)与内核级线程(KLT)?
参考答案:
-
用户级线程:内核不知情,由线程库管理,切换快,不能利用多核。
-
内核级线程:内核管理,可并行多核,切换开销大。
-
组合方式:轻量级进程 LWP 连接二者。
5. 进程控制:fork 做了什么?
参考答案:
-
创建子进程,复制父进程 PCB,写时复制(Copy-On-Write)地址空间。
-
父进程返回子 PID,子进程返回 0。
第3章 处理机调度
1. 三级调度分别是什么?
参考答案:
- 高级调度(作业调度):决定外存作业调入内存。
- 中级调度(内存调度):决定进程挂起/激活(内存-外存)。
- 低级调度(进程调度):决定就绪进程上CPU(最频繁)。
2. 进程调度方式:抢占 vs 非抢占?
参考答案:
-
非抢占:进程主动放弃(结束/阻塞),实现简单,实时性差。
-
抢占:可被高优先级/时间片剥夺,实时性好,系统开销大。
3. 经典调度算法(必考)?
参考答案:
- FCFS:先来先服务,利于长作业,不利于短作业。
- SJF/SRTF:短作业优先/短剩余优先,平均等待时间最短,可能饥饿。
- 优先级调度:静态/动态,可能饥饿。
- RR 时间片轮转:公平,响应快,片大小影响效率。
- 多级反馈队列:综合,无需预知长度,实际OS常用。
4. 什么是饥饿?如何解决?
参考答案:
-
饥饿:某进程长期得不到服务。
-
解决:老化(Aging),随等待时间增加动态提升优先级。
第4章 同步互斥与死锁
1. 临界资源、临界区、互斥、同步?
参考答案:
-
临界资源:一次只允许一个进程使用的资源(如打印机)。
-
临界区:进程中访问临界资源的代码段。
-
互斥:多个进程不能同时进入临界区。
-
同步:进程间按预定次序执行(如生产者-消费者)。
2. 实现互斥的硬件方法?
参考答案:
- 关中断、Test-and-Set、Swap 指令,原子操作,实现简单。
3. 信号量机制与 P、V 操作?
参考答案:
-
信号量:表示资源数目或同步条件。
-
P 操作(wait):申请资源,s--,若 s<0 阻塞。
-
V 操作(signal):释放资源,s++,若 s≤0 唤醒。
-
用于实现互斥、同步、前驱关系。
4. 经典同步问题(生产者-消费者、读者-写者、哲学家进餐)
参考答案(口述要点):
-
生产者-消费者:互斥信号量 + 空缓冲区数 + 满缓冲区数。
-
读者-写者:读共享、写独占,分读者优先/写者优先。
-
哲学家:最多4人拿叉/先拿左右再申请,避免死锁。
5. 死锁的定义、4个必要条件?
参考答案:
-
死锁:多个进程因竞争资源而互相等待,无法推进。
-
四个必要条件:
- 互斥
- 请求并保持
- 不可剥夺
- 循环等待
- 破坏任一条件即可预防死锁。
6. 死锁处理策略:预防、避免、检测与解除、忽略?
参考答案:
-
预防:破坏必要条件,保守,资源利用率低。
-
避免:银行家算法,动态检查安全性。
-
检测与解除:允许死锁,定期检测,通过剥夺/终止解除。
-
忽略(鸵鸟算法):如 Windows/Linux,死锁概率低时用。
第5章 内存管理
1. 内存管理的功能?
参考答案:
- 内存分配与回收、地址映射、内存保护、内存扩充(虚拟内存)。
2. 连续分配方式:单一连续、固定分区、动态分区?
参考答案:
- 动态分区分配算法:
- 首次适配
- 最佳适配
- 最坏适配
- 问题:外部碎片,可用紧凑(拼接)解决。
3. 非连续分配:分页、分段、段页式?
参考答案:
-
分页:等分页与页框,地址离散,无外部碎片,有内部碎片。
-
分段:按逻辑模块分段,共享与保护方便,有外部碎片。
-
段页式:先分段再分页,结合优点,地址结构:段号+页号+页内偏移。
4. 快表 TLB 作用?
参考答案:
-
高速相联存储器,缓存常用页表项,减少访存次数。
-
有效访存时间 EAT 计算:命中率×(TLB+内存)+缺失率×(2×内存)。
5. 虚拟存储器定义、理论基础、特征?
参考答案:
-
定义:利用辅存扩充主存,用户看到的是远大于物理内存的逻辑地址空间。
-
理论:局部性原理(时间、空间局部性)。
-
特征:多次性、对换性、虚拟性。
6. 请求分页与页面置换算法?
参考答案:
-
请求分页:需要时才调入页面,缺页时中断处理。
-
置换算法:
- OPT 最优(理论)
- FIFO 先进先出(可能 Belady 异常)
- LRU 最近最少使用(实际常用,硬件支持)
- Clock 时钟算法(近似 LRU)
7. 工作集模型?
参考答案:
- 进程在一段时间内访问页面集合,用于预调页和控制缺页率,防止抖动。
8. 抖动(Thrashing)是什么?原因与解决?
参考答案:
-
抖动:频繁页面换入换出,CPU 利用率急剧下降。
-
原因:分配给进程的物理页框太少,缺页率过高。
-
解决:调整工作集、调整多道程序度、挂起进程。
第6章 文件管理
1. 文件逻辑结构与物理结构?
参考答案:
-
逻辑:无结构(流式)、简单结构、索引结构(如记录)。
-
物理:
- 连续分配
- 链接分配(隐式/显式)
- 索引分配(单级、多级、混合索引,如 UNIX inode)
2. 目录结构:单级、两级、树形、无环图?
参考答案:
-
树形目录:层次清晰,可重名,路径查找。
-
无环图:允许共享文件/子目录,需解决删除与引用计数问题。
3. 文件共享:硬链接 vs 软链接?
参考答案:
-
硬链接:多个目录项指向同一 inode,不能跨文件系统,不能链接目录。
-
软链接(符号链接):独立文件存路径,可跨区,可链接目录,源文件删除失效。
4. 文件存储空间管理(空闲块管理)?
参考答案:
- 空闲表法
- 空闲链表法
- 位示图法(常用)
- 成组链接法(UNIX 用)
5. 磁盘调度算法?
参考答案:
- FCFS
- SSTF 最短寻道优先
- SCAN 电梯算法
- C-SCAN、LOOK、C-LOOK
第7章 I/O 设备管理
1. I/O 控制方式四种?
参考答案:
- 程序查询(轮询):CPU 利用率低
- 程序中断:I/O 完成发中断
- DMA:直接访存,不占 CPU,适合块设备
- 通道:专用 I/O 处理器
2. 中断处理过程?
参考答案:
请求 → 判优 → 响应(关中断、保存断点) → 服务程序 → 恢复 → 返回。
3. DMA 工作过程?
参考答案:
CPU 预处理 → DMA 控制传输 → 传输结束发中断 → CPU 后处理。
4. 缓冲的作用与类型?
参考答案:
-
作用:缓和 CPU 与 I/O 速度矛盾、减少中断次数、提高并行。
-
类型:单缓冲、双缓冲、循环缓冲、缓冲池。
5. 设备分配:SPOOLing(假脱机)技术?
参考答案:
-
利用外存(输入井/输出井)模拟脱机 I/O,将独占设备变为共享虚拟设备。
-
组成:输入进程、输出进程、井、输入输出缓冲区。
第8章 操作系统安全(复试低频)
1. 访问控制矩阵、访问控制表、能力表?
参考答案:
-
访问控制矩阵:行主体、列客体、项权限。
-
访问控制表 ACL:按客体组织。
-
能力表:按主体组织。
2. 加密、认证、防火墙基本思想?
参考答案:
-
加密:保护数据机密性。
-
认证:验证身份(口令、数字签名)。
-
防火墙:内外网间过滤数据包。
复试口述答题模板
- 先给定义
- 再讲原理/组成/条件
- 最后说优缺点/应用/解决方法
- 对比题:分点说 A vs B,清晰不混乱