操作系统面试高频(操作系统基础)
操作系统基础
1 操作系统基本特性⭐⭐⭐⭐⭐
1 并发,并发是系统中程序能够并发执行的特征,可使得操作系统有效提高系统中的资源利用率,增加系统的吞吐量。
并发和并行
并发:两个或者多个事件在同一时刻发生。
并行:两个或者多个时间在同一时间间隔内发生。在多道程序下,并发性是指在一段时间内宏观上有多道程序同时运行,但是单处理机系统中,每一时刻只能有一道程序执行。
2 共享 在操作系统环境下的资源共享成为资源复用,是指系统中资源可供内存中多个并发执行的进程共同使用。
互斥共享和同时访问
互斥共享:系统的某些资源,虽然可以提供给多个进程使用,但应规定在一段时间内,只允许一个进程访问资源。
同时访问:系统中还有另一类资源,允许在一段时间内由多个进程同时对他们进行访问
并发和共享是操作系统的两个最基本的特征,它们互为存在的条件。一方面资源共享是以进行并发执行作为条件的,若系统不允许并发执行也就不存在资源共享问题;另一方面,若系统不能对资源共享实施有效管理,以协调好诸进程对资源共享的访问,也必然会影响到诸进程并发执行的程度,甚至无法并发执行。
3 虚拟 通过某种技术将一个物理实体变为若干个逻辑上对应的物的功能。在操作系统中可以通过时分复用技术和空分复用技术来实现虚拟的。
时分复用技术:可利用某设备为一用户服务的空闲时间,又转去为其他用户服务,使设备得到最充分的利用。
空分复用技术:利用存储器的空闲空间分区域存放和运行其他的多道程序,以此来提高内存的利用率。
4 异步 在多道程序环境下,系统允许多个进程并发执行。在单处理机程序环境下,由于系统只能运行一个进程,其余进程只能等待。由于资源等因素的限制,使进程的执行通常不是一气呵成的,而是走走停停的方式运行。
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++,操作系统,ARM架构、RTOS、Linux基础、Linux驱动、Linux系统移植、计算机网络、数据结构与算法、数电基础、模电基础、5篇面试题目、HR面试常见问题汇总和嵌入式面试简历模板等文章。超全的嵌入式软件工程师面试题目和高频知识点总结! 另外,专栏分为两个部分,大家可以各取所好,为了有更好的阅读体验,后面会持续更新!!!