当前位置: 首页 > news >正文

嵌入式常见面试题——操作系统与RTOS篇

1、进程和线程的区别?

  • 进程是程序的一次执行实例,拥有独立的地址空间和系统资源,进程间隔离性强、开销大。

  • 线程是进程内的执行单元,多个线程共享所属进程的资源,但各自拥有独立的栈和寄存器状态。线程轻量、通信高效,但需同步机制保障安全。

2、RTOS与一般操作系统的区别?

RTOS强调确定性的响应时间,确保任务在规定时间内完成(实时性);而一般操作系统更关注吞吐量和多任务处理。

硬实时系统:任务必须在严格时间限制内完成,任何延迟都不可接受(如汽车安全气囊、工业控制)。软实时系统:任务应尽量在时间限制内完成,偶尔延迟可容忍(如多媒体播放)。

3、FreeRTOS是什么?有什么特点?

FreeRTOS是一个开源、轻量级、可裁剪的实时操作系统内核,专为资源受限的微控制器设计,支持任务管理、调度、同步、通信、内存管理等核心功能。

特点

  • 开源免费(MIT协议),社区活跃,文档丰富。

  • 轻量级,最小可裁剪至几KB的RAM和ROM。

  • 支持抢占式调度、时间片轮转、协作式调度。

  • 提供丰富的任务间通信机制(队列、信号量、互斥量、事件组等)。

  • 支持任务通知(Task Notifications)等高效通信方式。

4、FreeRTOS中任务有哪几种状态?

任务有4种状态:

  • 运行态(Running):当前正在执行的任务。

  • 就绪态(Ready):已准备就绪,等待CPU执行。

  • 阻塞态(Blocked):等待某个事件(延时、信号量、队列等),不占用CPU。

  • 挂起态(Suspended):被挂起的任务,不参与调度,需显式恢复。

5、FreeRTOS支持哪些调度策略?

FreeRTOS默认支持:

  • 抢占式调度:高优先级任务可随时打断低优先级任务。

  • 协作式调度:任务主动让出CPU(如调用taskYIELD()),不支持抢占。

  • 时间片轮转:相同优先级任务按时间片轮流执行。

调度器触发时机:系统节拍中断(SysTick)发生时、任务主动阻塞时、中断中唤醒高优先级任务时、任务删除或优先级变更时。

6、什么是死锁?如何预防?

死锁是多个进程/线程互相等待对方释放资源,形成循环依赖,导致所有任务都无法继续执行。

死锁的四个必要条件(互斥、持有并等待、不可剥夺、循环等待),破坏任一即可预防死锁。

预防方法

  • 按固定顺序加锁,所有任务以相同顺序请求资源。

  • 一次性请求所有需要的资源(资源一次性分配)。

  • 使用超时机制,在请求锁时设置超时,超时则放弃并处理错误。

  • 使用银行家算法等动态分配算法。

7、信号量(Semaphore)和互斥锁(Mutex)的区别?

  • 互斥锁:用于保护共享资源,确保一次只有一个任务访问,避免数据竞争。具有优先级继承机制防止优先级反转。

  • 信号量:用于任务间同步和资源管理。分为计数信号量(管理多个资源实例)和二进制信号量(功能类似互斥锁,但无优先级继承)。

核心区别:互斥锁用于资源互斥访问,有优先级继承机制;信号量用于同步和资源计数,更灵活。

8、什么是优先级反转?如何解决?

优先级反转是指低优先级任务持有资源时阻塞了高优先级任务,而中等优先级任务抢占CPU使低优先级任务无法释放资源,导致高优先级任务被间接阻塞。

解决方案

  • 优先级继承:持有资源的低优先级任务暂时继承等待它的最高优先级任务的优先级,直到释放资源。

  • 优先级天花板协议:将共享资源的优先级设为系统中可能访问该资源的最高优先级。

9、什么是任务切换?任务切换时发生了什么?

任务切换是操作系统将处理器从一个任务切换到另一个任务的过程:

  1. 保存当前任务上下文(寄存器、PC、栈指针等)到任务栈中。

  2. 选择下一个要运行的任务(按优先级调度算法)。

  3. 从新任务栈中恢复其上下文。

  4. 执行新任务。

10、Linux内核空间和用户空间的通信方式有哪些?

系统调用、ioctl、netlink、mmap共享内存、管道/命名管道、消息队列、信号、socket。

11、Linux内核的内存分配方式有哪些?

  • 伙伴系统:管理物理页框,分配大内存,通过合并相邻空闲块解决外部碎片。

  • slab/slub/slob:基于伙伴系统,分配小内存,缓存常用内核对象。

  • vmalloc:分配虚拟地址连续但物理地址可能不连续的内存。

  • kmem_cache:slab的专用对象缓存池。

12、FreeRTOS中任务间通信有哪些方式?

  • 队列(Queue):任务间传递数据,支持FIFO,可阻塞等待。

  • 信号量(Semaphore):任务同步和资源管理(二进制信号量、计数信号量、互斥量)。

  • 事件组(Event Groups):一个任务等待多个事件,支持“与/或”条件。

  • 任务通知(Task Notifications):轻量级、高效的同步方式,每个任务自带通知值。

  • 消息缓冲区(Message Buffer)/流缓冲区(Stream Buffer):用于变长数据传输。

http://www.jsqmd.com/news/637904/

相关文章:

  • # 发散创新:基于Python与ROS的具身智能机器人控制实战 在人工智能快速演进的今天,**具身智能
  • 告别Launch套娃!手把手教你整合Cartographer的Launch与Lua文件(基于Gazebo仿真)
  • 2026年靠谱的纺丝组件真空清洗炉/真空清洗炉/真空煅烧炉定制加工厂家推荐 - 行业平台推荐
  • ShardingSphere 5.x 扩展达梦数据库:从源码解析到实战避坑
  • CLIP-GmP-ViT-L-14图文匹配测试工具学术写作:使用LaTeX撰写技术报告与论文
  • 2026年质量好的网片真空清洗炉/真空清洗炉/盐城卧式真空清洗炉生产厂家推荐 - 品牌宣传支持者
  • 别再只盯着GPU了!用FPGA加速MobileNetV2推理,实测功耗和延迟有多香?
  • 深入解析x86控制寄存器CR0:从分页机制到写保护的关键作用
  • Qwen-Image-Layered应用案例:电商海报分层设计实战演示
  • Llama-3.2V-11B-cot保姆级教学:GPU温度监控与过热降频应对方案
  • 2026年评价高的卡套球阀/内螺纹球阀/盐城卡套球阀/卡套式球阀厂家对比推荐 - 行业平台推荐
  • Qwen3-Embedding-4B降本部署案例:RTX 3060单卡跑800 doc/s成本省60%
  • CS146S课程第3周:AI IDE与开发者体验
  • 2026年知名的焊接球阀/盐城卡套球阀/电动球阀定制加工厂家推荐 - 品牌宣传支持者
  • 自动化图片采集实战:从零构建一个高效、可配置的爬虫工具
  • 5分钟跑通VoxCPM-1.5:零配置部署,即刻生成专属语音
  • SDMatte企业级应用:某服装品牌接入SDMatte实现商品图去背景提效300%
  • SeaTunnel + SeaTunnel-Web 安装部署
  • 深入解析:使用Apache POI与Hutool高效提取WPS Excel中的嵌入式图片
  • Qwen3.5-4B模型处理数据库课程设计报告自动生成
  • 大模型中的Function_call与Agent:从功能调用到智能决策的演进
  • 简约中的精准逻辑:三轴滑台的结构哲学
  • 微信小程序的精品课程在线学习平台
  • 如何处理Data Guard环境的口令更换_SYS密码修改后的主备库密码文件分发机制
  • Aldoview:高选择性醛固酮合成酶PET示踪剂
  • 展锐平台 Sensor Hub 驱动开发与内存优化实战
  • CnOpenData A股上市公司退市整理期公告数据
  • AI头像生成器应用案例:为MySQL数据库用户自动生成统一风格头像
  • Nano-Banana性能对比测试:不同GPU配置下的生成速度与质量评估
  • TRAE + Bmad 极速开发实战:20分钟构建治愈风待办清单全栈应用