面试八股-操作系统

1.通用概念

1.1.基本特征

  • 并发:宏观上一段时间同时运行多个程序,并行则是指同一时刻运行多个指令,操作系统中引入进程和线程来实现并发。
  • 共享:系统中资源可以被多个并发进程共同使用。互斥共享同一时刻只能让一个进程访问,同时共享则是可多个进程访问。
  • 虚拟:把物理实体转换为多个逻辑实体。进程上采用时分复用技术,让每个进程轮流占用处理器,虚拟内存使用了空分复用技术,执行页面置换算法,让逻辑上可以容纳比内存更大的页。
  • 异步:进程不是一次性执行完毕,而是走走停停,以不可知速度前进。

1.2.系统调用

如果一个进程在用户态需要使用内核态度功能,就进行系统调用从而陷入内核,由操作系统代为。

Linux的系统调用主要有以下这些功能

  • 进程控制 fork;exit;wait
  • 进程通信 pipe;shmget;mmap
  • 文件操作 open;read;write
  • 设备操作 ioctl;read;write
  • 信息维护 getpid;alarm;sleep
  • 安全 chmod;unmask;chown

1.3.宏内核和微内核

  • 宏内核 将操作系统作为一个紧密结合的整体放到内核,各模块共享信息,性能高
  • 微内核 将部分操作系统功能移出内核,划分成相互独立的服务,只有微内核在内核态,其余在用户态。内核复杂性低,性能有一定损失。

1.4.中断分类

  • 外中断 由CPU执行指令之外的事件引起,如I/O完成中断,时钟中断、控制台中断等。
  • 异常 由CPU执行指令的内部事件引起,如非法操作码、地址越界等
  • 陷入 在用户程序中使用系统调用

2.进程管理

2.1.进程控制

进程控制块描述进程的基本信息和运行状态,所谓创建进程和撤销进程,都是对PCB的操作。

2.2.进程线程比较

进程 线程
拥有资源 资源分配基本单位 不拥有资源,可以访问进程资源
调度 进程切换引起线程切换 调度基本单位,线程切换不会引起进程切换
系统开销 需要分配/回收资源,开销较大,需要刷新TLB并获取新的地址空间 只需要保存和设置少量寄存器内容,开销很小
通信
### 操作系统面试常见问题及答案 #### 面试技巧题 (主观题) ##### 如何在技术不够强的情况下给面试官留下好印象? 即使技术水平不是特别高超,在面对面试时也可以通过展现积极的学习态度、团队合作精神以及解决问题的能力来赢得好感。例如,可以分享过去克服困难的经历,强调持续学习的重要性,并展示对新技术的好奇心和探索欲[^1]。 ##### 怎样巧妙回避不懂的问题并转换话题? 当遇到不知道如何作答的情况时,不妨诚实地承认自己的不足之处,同时表达愿意进一步了解该领域知识的愿望;还可以尝试将讨论引向更熟悉的话题方向上,比如提及曾经参与过的项目经验或是个人擅长的技术栈等方面的内容。 ##### 自我介绍应该怎么说?三分钟时间是否足够? 一份好的自我介绍应当简洁明了地概括求职者的教育背景、工作经验和个人特点等重要信息。一般来说,控制在一至两分钟左右较为合适,这样既能全面覆盖要点又不至于让听众感到冗长乏味。如果确实有非常突出的工作成果或成就想要重点说明,则可以根据实际情况适当延长一些时间。 ##### 测试人员能为小组带来什么价值? 作为测试工程师,主要职责在于发现产品缺陷以提高软件质量。具体来说,这包括但不限于制定详细的测试计划、编写高效的自动化脚本、执行各类功能性验证工作等等。除此之外,良好的沟通能力和协作意识也是不可或缺的一部分——能够及时反馈问题并与开发团队紧密配合共同推进项目的顺利进展。 ##### 成功胜任这份工作的核心竞争力有哪些? 优秀的测试人才往往具备以下几个方面的特质:扎实的专业基础(如掌握多种编程语言)、敏锐的质量敏感度(善于捕捉潜在风险点)、严谨细致的态度(对待每一个细节都不放过)以及快速适应变化环境的能力(随时准备迎接新的挑战)。这些素质有助于确保交付高质量的产品和服务满足客户需求的同时也为公司创造更大的商业价值。 #### 技术类问题 ##### 读写者问题是属于进程同步还是线程同步机制的应用场景之一? 这个问题涉及到并发编程中的经典案例分析。“读者-写者”模型描述了一种允许多个阅读者同时访问共享资源但只允许单个写入者独占修改权限的情形。无论是采用进程级还是轻量级的线程方式都可以用来解决此类竞争条件下的互斥与协调需求,不过实际应用中更多见于后者由于其较低开销特性更适合频繁交互的操作场合[^2]。 ##### 中断的概念及其作用是什么? 当中断发生时意味着当前正在运行的任务被迫暂停以便立即处理更为紧急的新请求。这种机制使得计算机能够在多任务环境中灵活切换注意力从而提高了整体效率。举例而言,键盘按键触发信号就会引起一次硬件级别的中断通知处理器立刻响应用户的输入动作而不是等待下一个轮询周期到来再做判断[^3]。 ##### 虚拟内存的作用原理简介 虚拟地址空间提供了应用程序独立寻址范围内的连续逻辑视图而不受物理RAM大小限制的影响。每当程序试图访问某个特定位置的数据时操作系统负责映射到真实的存储单元上去完成最终定位过程。这样一来不仅简化了程序员的设计思路而且有效提升了系统的稳定性和安全性因为非法越界操作可以在早期阶段就被检测出来加以阻止[^4]。 ```python def virtual_memory_example(): """ 这是一个简单的函数用于解释虚拟内存在Python中的体现形式。 Python本身具有垃圾回收机制自动管理对象生命周期, 用户无需关心具体的分配释放策略但是理解背后运作规律仍然很有帮助。 """ large_list = list(range(int(1e8))) # 创建一个占用大量内存的大列表 del large_list # 删除变量引用使其成为可回收状态 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值