进程与线程进程是资源分配的基本单位拥有独立地址空间线程是CPU调度的基本单位同一进程内线程共享代码段、数据段和打开文件等资源但有独立栈和寄存器上下文。线程切换开销远小于进程切换无需TLB刷新、页表切换等。PCB进程控制块操作系统感知进程的唯一数据结构包含进程ID、状态、程序计数器、CPU寄存器、内存管理信息页表基址、优先级、记账信息、I/O状态打开文件列表、等待事件等。进程状态三态模型就绪已获除CPU外所有资源等待调度、运行正在CPU执行、阻塞等待某事件如I/O完成主动放弃CPU。扩展五态含新建New和终止TerminatedLinux中还有不可中断睡眠D、僵尸Z等状态。进程调度算法算法特点缺陷FCFS简单公平非抢占平均等待时间长存在“护航效应”SJF非抢占/抢占→SRTF最小平均等待时间最优需预知运行时间易导致长作业饥饿RR时间片轮转响应及时公平时间片过小→频繁上下文切换过大→退化为FCFS优先级调度支持实时/交互/批处理混合负载可能饥饿低优先级永远不执行需老化Aging机制死锁四个必要条件缺一不可互斥、占有并等待、非抢占、循环等待。银行家算法安全性检测算法基于资源最大需求与当前分配属死锁避免策略需预先声明最大资源需求不适用于动态申请场景。内存管理分页逻辑地址→页号页内偏移物理地址→帧号页内偏移消除外部碎片引入内部碎片与页表开销。分段按逻辑模块主程序、栈、堆、数据段划分支持共享与保护但产生外部碎片。段页式先分段再分页结合二者优点逻辑清晰 无外部碎片地址变换需查段表页表二级甚至多级。虚拟内存核心思想以磁盘为扩展内存仅将活跃页装入物理内存通过局部性原理实现高效运行。关键机制请求调页Demand Paging、写时复制Copy-on-Write、页表项中的有效位/修改位/访问位。页面置换算法算法特点实现难度FIFO简单用队列实现Belady异常增加页框数反而缺页率上升OPT最优理论下限替换最久不用页不可实现需预知未来LRU近似OPT替换最久未使用页硬件支持如访问位定时清零扫描或软件近似Clock算法文件系统FATFile Allocation Table以链式索引簇号链管理磁盘块简单高效但不支持权限、硬链接、日志FAT32支持最大4GB单文件。NTFSWindows支持ACL权限、加密EFS、压缩、日志$LogFile、硬/软链接、稀疏文件、事务语义TxF。inodeUnix/Linux每个文件唯一inode号存储元数据权限、所有者、大小、时间戳、块指针目录本质是“文件名→inode号”的映射表支持硬链接同inode、软链接独立inode存路径字符串。磁盘调度算法算法特点问题SSTF类似SJF选最近柱面可能饥饿远离当前磁头的请求长期等待SCAN电梯算法往复扫描双向服务中间区域响应较好两端延迟高C-SCAN单向扫描至端点后立即返回起点空载更均匀吞吐量略低于SCAN但响应更公平# 示例LRU缓存基于OrderedDict实现O(1) get/putfromcollectionsimportOrderedDictclassLRUCache:def__init__(self,capacity:int):self.cacheOrderedDict()self.capacitycapacitydefget(self,key:int)-int:ifkeynotinself.cache:return-1self.cache.move_to_end(key)# 移至末尾表示最近使用returnself.cache[key]defput(self,key:int,value:int)-None:ifkeyinself.cache:self.cache.move_to_end(key)self.cache[key]valueiflen(self.cache)self.capacity:self.cache.popitem(lastFalse)# 弹出最久未用头部