- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
操作系统面试题及详细答案
一、进程与线程核心问题
1.请解释进程和线程的区别,以及分别在什么场景下使用?
答案:核心区别在于资源分配和调度单位的不同。
首先,进程是操作系统进行资源分配的基本单位,每个进程都有自己独立的地址空间、文件描述符、内存资源等,进程之间的资源是隔离的;而线程是操作系统进行调度的基本单位,它属于某个进程,共享该进程的所有资源,线程自己只拥有少量独立资源,比如程序计数器、寄存器集合和栈。
其次,进程切换的开销很大,因为要切换整个进程的资源上下文;线程切换开销小,只需要切换线程自身的少量上下文信息。
使用场景:
-用进程的场景:需要资源隔离的情况,比如打开多个独立的应用程序(浏览器、微信、编辑器),每个应用对应一个进程,一个应用崩溃不会影响其他应用。
-用线程的场景:同一任务内部需要并发执行的子任务,比如浏览器加载网页时,一个主线程负责渲染页面,同时多个子线程分别负责加载图片、解析脚本,这些子线程共享浏览器进程的资源,协作完成任务,提升响应速度。
2.进程有哪些状态?状态之间的转换条件是什么?
答案:进程核心有5种状态,分别是:新建态、就绪态、运行态、阻塞态(等待态)、终止态。
状态转换条件:
1.新建态→就绪态:进程创建完成,操作系统为其分配了必要的资源(除了CPU),等待CPU调度。比如双击打开一个软件,进程创建后进入就绪态排队。
2.就绪态→运行态:CPU空闲时,进程调度器从就绪队列中选中一个进程,为其分配CPU,进程开始执行。
3.运行态→就绪态:时间片用完,或者有更高优先级的进程进入就绪态,当前进程被抢占CPU,回到就绪态等待下一次调度。比如在玩游戏时,突然收到微信消息,微信进程优先级更高,游戏进程从运行态回到就绪态。
4.运行态→阻塞态:进程执行过程中需要等待某个事件发生(比如等待I/O完成、等待信号量、等待消息),主动放弃CPU,进入阻塞态。比如进程执行读取文件操作,需要等待硬盘读写完成,此时进程进入阻塞态。
5.阻塞态→就绪态:进程等待的事件发生(比如I/O完成、拿到信号量),由操作系统将其从阻塞态唤醒,进入就绪态等待CPU调度。
6.运行态→终止态:进程执行完成(正常退出)或出错(异常退出),操作系统回收其资源,进程结束。
3.什么是进程同步和互斥?常见的同步机制有哪些?
答案:先明确两个概念的核心目的:
-进程互斥:多个进程竞争同一临界资源(比如打印机、共享内存块)时,保证同一时间只有一个进程能访问该资源,避免资源竞争导致的数据错误或混乱。比如两个进程同时往一个文件写数据,必须互斥访问,否则内容会错乱。
-进程同步:多个协作进程之间,按照预定的顺序执行,比如一个进程需要等待另一个进程完成某个操作后才能继续执行。比如一个“读取数据”进程和一个“处理数据”进程,处理进程必须等待读取进程完成数据读取后才能开始处理。
常见的同步机制:
1.信号量:是一个计数器,用于控制多个进程对临界资源的访问。分为互斥信号量(初始值为1,用于实现互斥)和同步信号量(初始值为0或n,用于实现同步)。P操作(申请资源,计数器减1,若小于0则阻塞)和V操作(释放资源,计数器加1,若大于0则唤醒一个阻塞进程)是信号量的核心操作。
2.互斥锁(Mutex):专门用于实现互斥的机制,本质是特殊的信号量(初始值为1)。相比信号量,互斥锁更简单,只能由持有锁的进程释放,避免了信号量可能出现的误释放问题。
3.条件变量:通常和互斥锁配合使用,用于实现同步。当进程满足某个条件时才能继续执行,否则阻塞在条件变量上,等待其他进程发送信号唤醒。比如生产者-消费者模型中,消费者进程发现缓冲区为空时,阻塞在条件变量上,等待生产者进程生产数据后唤醒。
4.管道/消息队列:通过传递消息的方式实现进程间同步,一个进程发送消息,另一个进程接收消息后才继续执行,间接实现顺序控制。
二、内存管理核心问题
1.什么是分页存储管理和分段存储管理?两者的区别是什么?
答案:两者都是为了解决内存碎片问题、提高内存利用率而设计的内存管理方案。
-分页存储管理:将物理内存和逻辑地址空间都划分为大小相等的块(物理块、页面),比如每个块4KB。进程的逻辑地址分为页号和页内偏移量,通过页表将页号映射到物理块号,页内偏移量直接使用,实现地址转换。分页是按“大小”划分,与程序的逻辑结构无关。
-分段存储管理:将程序的逻辑地址空间按功能划分为不同的段(比如代码段、数据段、栈段、堆段),每个段的大小不固定,由程序的逻辑结构决定。逻辑地址分为段号和段内偏移量,通过段表映射到物理内存的起始地址,段表中还会记录段的长度,防止越界访问。分段是按“逻辑功能”划分,符合程序的自然结构。
两者核心区别:
1.划分依据不同:分页
原创力文档


文档评论(0)