- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
操作系统高频面试题及参考答案
一、基础概念类
问题:进程和线程的核心区别是什么?实际开发中怎么选择用多进程还是多线程?
答案:核心区别在资源分配和调度单元——进程是资源分配的最小单位(有独立地址空间、文件描述符等),线程是CPU调度的最小单位(共享所属进程的资源,仅占少量栈空间)。实际选择看场景:①需隔离资源(如多任务处理不同任务,避免崩溃扩散)用多进程,比如浏览器的多标签进程;②任务间需频繁通信、共享数据,且追求高效(减少进程切换开销)用多线程,比如后端服务处理并发请求、GUI程序的后台任务。
问题:什么是临界资源?如何解决临界区问题?
答案:临界资源是多个进程/线程能共享但不能同时访问的资源(比如打印机、共享内存中的变量),临界区就是访问这些资源的代码段。解决核心是“互斥访问”,常用三种方式:①软件方法(如Peterson算法),靠逻辑判断实现互斥;②硬件方法(如禁用中断、Test-and-Set指令),效率高但依赖硬件;③同步机制(信号量、互斥锁mutex、条件变量),实际开发中最常用(比如Java的synchronized、Linux的pthread_mutex),能兼顾安全性和易用性。
二、进程与调度类
问题:常见的进程调度算法有哪些?实时系统和批处理系统分别适合用哪种?
答案:常见算法分五类:①先来先服务(FCFS):按请求顺序调度,简单但易产生“饥饿”(短任务等长任务);②短作业优先(SJF):优先执行短任务,提高吞吐量,但长任务可能饥饿;③高响应比优先(HRRN):综合任务长度和等待时间(响应比=1+等待时间/运行时间),兼顾公平和效率;④时间片轮转(RR):给每个进程分配固定时间片,轮流执行,适合分时系统(如桌面OS);⑤优先级调度:按任务优先级分配CPU,又分抢占式(高优先级任务可打断低优先级)和非抢占式,适合实时系统(如工业控制、医疗设备)——实时系统需保证关键任务及时响应,抢占式优先级调度更合适;批处理系统追求吞吐量和资源利用率,SJF或HRRN更优。
问题:什么是死锁?产生死锁的四个必要条件是什么?如何避免死锁?
答案:死锁是多个进程因互相等待对方占有的资源,导致所有进程都无法继续执行的状态。四个必要条件:①互斥条件(资源只能被一个进程占用);②持有并等待条件(进程持有部分资源,同时等待其他资源);③不可剥夺条件(资源不能被强制从进程手中夺走);④循环等待条件(多个进程形成资源等待循环)。避免死锁的核心是破坏任意一个必要条件,常用方法:①破坏“持有并等待”:进程启动前一次性申请所有所需资源,要么全拿到要么等待(比如数据库事务的资源预分配);②破坏“循环等待”:给资源按类型编号,进程必须按编号递增顺序申请资源(比如内存块按地址排序,进程只能先申请低地址再申请高地址);③银行家算法:动态检测资源分配状态,确保分配后系统仍处于安全状态(存在一个进程执行序列,所有进程都能完成),只在安全时分配资源;④实际开发中更常用“超时重试”(简单但可能浪费资源)或“资源有序申请”(低成本高有效)。
三、内存管理类
问题:分页和分段存储的区别是什么?为什么现代OS大多用分页+分段的混合模式?
答案:核心区别在“划分依据”和“目的”:①分页:按固定大小划分内存(比如4KB一页),与程序逻辑无关,目的是解决内存碎片问题,提高内存利用率;②分段:按程序逻辑划分(比如代码段、数据段、栈段),段大小不固定,目的是满足程序的模块化需求(比如共享代码段、动态链接),方便程序调试和保护(比如代码段只读、数据段可读写)。混合模式的原因是互补优势:分页解决分段的“外碎片”问题(分段后内存剩余空间可能因大小不匹配无法利用),分段解决分页的“内碎片”问题(分页后最后一页可能用不完,浪费空间),同时兼顾模块化和内存利用率——比如x86架构的段页式存储,先按分段划分程序,再将每个段分页管理内存。
问题:虚拟内存的工作原理是什么?为什么需要虚拟内存?
答案:虚拟内存的核心是“局部性原理”(程序运行时只需要部分代码和数据在内存中),通过“内存-外存(硬盘)”的置换机制,让程序以为拥有比实际内存更大的地址空间。工作原理:①操作系统为每个进程分配独立的虚拟地址空间,虚拟地址通过页表映射到物理内存地址;②程序运行时,只将当前需要的页面载入物理内存,未用到的页面存放在硬盘的交换分区(Swap);③当访问的虚拟地址对应的页面不在内存时,触发“缺页中断”,操作系统会将该页面从硬盘调入内存(若内存已满,按置换算法淘汰不常用页面)。需要虚拟内存的原因:①解决“内存不足”问题:让大程序能在小内存中运行(比如
原创力文档


文档评论(0)