操作系统面试高频(操作系统基础)

操作系统基础

1 操作系统基本特性⭐⭐⭐⭐⭐

并发,并发是系统中程序能够并发执行的特征,可使得操作系统有效提高系统中的资源利用率,增加系统的吞吐量

并发和并行

  • 并发:两个或者多个事件在同一时刻发生。
  • 并行:两个或者多个时间在同一时间间隔内发生。在多道程序下,并发性是指在一段时间内宏观上有多道程序同时运行,但是单处理机系统中,每一时刻只能有一道程序执行。

共享 在操作系统环境下的资源共享成为资源复用,是指系统中资源可供内存中多个并发执行的进程共同使用

互斥共享和同时访问

  • 互斥共享:系统的某些资源,虽然可以提供给多个进程使用,但应规定在一段时间内,只允许一个进程访问资源。
  • 同时访问:系统中还有另一类资源,允许在一段时间内由多个进程同时对他们进行访问

并发和共享是操作系统的两个最基本的特征,它们互为存在的条件。一方面资源共享是以进行并发执行作为条件的,若系统不允许并发执行也就不存在资源共享问题;另一方面,若系统不能对资源共享实施有效管理,以协调好诸进程对资源共享的访问,也必然会影响到诸进程并发执行的程度,甚至无法并发执行。

虚拟 通过某种技术将一个物理实体变为若干个逻辑上对应的物的功能。在操作系统中可以通过时分复用技术和空分复用技术来实现虚拟的

  • 时分复用技术:可利用某设备为一用户服务的空闲时间,又转去为其他用户服务,使设备得到最充分的利用。
  • 空分复用技术:利用存储器的空闲空间分区域存放和运行其他的多道程序,以此来提高内存的利用率。

异步 在多道程序环境下,系统允许多个进程并发执行。在单处理机程序环境下,由于系统只能运行一个进程,其余进程只能等待。由于资源等因素的限制,使进程的执行通常不是一气呵成的,而是走走停停的方式运行。

2 操作系统主要功能⭐⭐⭐⭐⭐

操作系统主要包括以下几个方面的功能 :

(1)CPU管理:其工作主要是进程调度,在单用户单任务的情况下,处理器仅为一个用户的一个任务所独占,进程管理的工作十分简单。但在多道程序或多用户的情况下,组织多个作业或任务时,就要解决处理器的调度、分配和回收等问题。

(2)存储管理,分为几种功能:存储分配、存储共享、存储保护、存储扩张。

(3)设备管理,分为以下功能:设备分配、设备传输控制、设备独立性。

(4)文件管理:文件存储空间的管理、目录管理、文件操作管理、文件保护。

(5)作业管理,是负责处理用户提交的任何要求。

3 CPU工作原理⭐⭐⭐⭐⭐

CPU 的工作原理

CPU(中央处理器)是计算机的核心部件,负责执行指令和处理数据。其工作原理可分为以下几个关键环节:

1. 指令获取(Fetch)

  • 从内存读取指令:CPU 通过地址总线从内存中读取当前要执行的指令,指令地址由程序计数器(PC)指定。
  • 指令缓存优化:现代 CPU 会将常用指令预先加载到高速缓存(L1/L2/L3)中,减少内存访问延迟。

2. 指令解码(Decode)

  • 解析指令内容:控制单元(CU)将二进制指令分解为操作码(操作类型)和操作数(数据或地址)。
  • 确定执行路径:根据操作码确定需要调用的功能单元(如算术逻辑单元 ALU、浮点运算单元 FPU 等)。

3. 指令执行(Execute)

  • 运算处理:运算单元(ALU)对操作数进行算术运算(如加减乘除)或逻辑运算(如与、或、非)。
  • 地址计算:地址生成单元负责计算内存地址,用于读取或写入数据。

4. 结果写回(Write Back)

  • 存储结果:将运算结果写回寄存器或内存(通过数据总线)。
  • 更新状态:根据运算结果更新标志寄存器(如进位标志、溢出标志等)。

5. 流水线技术

  • 并行处理:现代 CPU 采用流水线技术,将指令执行分为多个阶段(如取指、解码、执行、写回),各阶段同时处理不同指令,提升效率。

6. 控制流管理

  • 分支预测:通过预测分支指令(如 if 语句)的执行方向,提前加载可能需要的指令,减少流水线停顿。
  • 异常处理:当遇到错误(如除数为零)或中断请求时,CPU 暂停当前任务,跳转至异常处理程序。

4 CPU流水线⭐⭐⭐⭐⭐

阶段划分与并行执行典型的五级流水线将指令执行分为:

  • 取指(IF):从内存或缓存读取指令,地址由程序计数器(PC)确定。
  • 译码(ID):解析指令操作码和操作数,计算有效地址。
  • 执行(EX):通过算术逻辑单元(ALU)完成运算,或生成访存地址。
  • 访存(MEM):访问内存读取数据(Load)或写入结果(Store)。
  • 写回(WB):将结果存入寄存器或内存,更新标志位。

例如,当第一条指令处于执行阶段时,第二条指令可能正在译码,第三条指令已完成取指,形成 “指令流” 的连续处理。

5 内核态和用户态的区别⭐⭐⭐⭐⭐

内核态和用户态是操作系统中的两种不同的运行态,它们的主要区别在于权限和特权级

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

嵌入式/C++面试八股文 文章被收录于专栏

#承诺提供免费技术答疑# 本专栏主要是介绍嵌入式开发岗位相关知识和学习攻略。“C/C++软件开发岗位”也可以参考。 该专栏覆盖了嵌入式求职过程中99%常见面试题,详细讲解了嵌入式软件开发岗位、学习攻略、项目经验分享、面试心得,从技术面,HR面,主管面,谈薪一站式服务。订阅即赠送简历模板、内推机会,需要的同学点击我头像私信即可!

全部评论

相关推荐

实话说,回答的不是很好,不过面试官真的有一种靠谱的中年男性的感觉,说话比较沉稳。这个公司给我的第一印象很不错,在发面试通知的时候顺便发了公司介绍的ppt,我顺着他的ppt做了个自我介绍大致描述了一下我的研究可以应用在公司哪些方面。然后,他逮着我实习提到的机器学习相关算法,问了很多,实在是有点招架不住,这东西我简历上一句话就带过了来着(主要是用来处理和筛选特征),简历大部分都是讲的多模态和大模型,结果他没怎么问然后是算法,k个无序数组合并成一个有序数组,我说,这个看着像是先在内部排序,形成k个有序数组,然后进一步处理,比如定义k个指针,类似二有序合一有序那种,他说要不你写一下代码,我说其实我还有思路,这个看着像归并排序,但是,归并的递归我太久没写了不太熟练,于是说了下思路就结束这一个环节了。最后他问我pytorch代码水平咋样,我说代码我看得懂,但要我写的话,我可能会借助gpt之类的工具辅助完成,他说你不借助ai可以完成吗,我说ai这东西用了就回不去了,主要是生成的又快又好,我只需要稍微改改就能用,他有点质疑,我觉得他有点小看gpt了,但是又不好反驳,只能说我学习能力没啥问题,基础的代码我跟着敲几次就会了。最后是反问,感觉这岗位不好进啊,作为一个小厂,有两轮技术面,平时周一到周四加班,9点前能走。另外这个面试官说可以手把手带两周熟悉流程,唉,我也不知道说啥,说了些表忠心的话结束了。
查看5道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务