第12章 · 播客 第8集

嵌入式系统设计 · 实时系统与嵌入式操作系统

🎙️ 本集播客第8集:实时系统的正确性不只看逻辑还看时间;强、一般、弱三级实时和硬实时软实时的划分依据;嵌入式操作系统五大特点里没有「集中式管理」;商业型与免费型、实时与非实时的分类;最后是 RTEOS 的两种类型和最考人的时间性能指标——中断响应时间到底是哪一段。 语音由微软 Edge 神经网络语音预生成(女声·晓伊,男声·云希)。点击下方任意对话可直接从该句开始播,当前句朗读时下一句已预先加载,无缝衔接。
🎙️ 第12章播客 第8集
⬇ 下载本集 点击播放
阿明
实时系统这个词天天听,正式定义是什么?
小雅
简单地说,实时系统可以看成对外部事件能够及时响应的系统。这种系统最重要的特征是时间性,也就是实时性。必背句:实时系统的正确性不仅依赖于系统计算的逻辑结果,还依赖于产生这些结果的时间。这句是实时系统的灵魂,选择题反复考。另外,目前大多数实时系统都是嵌入式的,实际运行中的嵌入式系统也都有实时性的需求,所以实时嵌入式操作系统是最具代表性的一类嵌入式操作系统。
小雅
但注意原文的严谨限定:现实世界中,并非所有的嵌入式系统都具有实时特性,所有的实时系统也不一定都是嵌入式的;这两种系统并不互相排斥,兼有这两种系统特性的系统称为实时嵌入式系统。判断题问「所有嵌入式系统都是实时系统」,答错。
阿明
先把几个基本词的定义抠准吧,逻辑正确、时间正确这些。
小雅
四个定义。逻辑或功能正确,是指系统对外部事件的处理能够产生正确的结果。时间正确,是指系统对外部事件的处理必须在预定的周期内完成。死线 Deadline,或叫时限、死限、截止时间,是指系统必须对外部事件进行处理的最迟时间界限,错过此界限可能产生严重的后果,通常计算必须在到达时限前完成。实时系统,是指功能正确和时间正确同时满足的系统,二者同等重要。换言之,实时系统有时间约束并且是时限驱动的;但是在某些系统中,为了保证功能正确性,有可能牺牲时间正确性。
阿明
那实时系统怎么分级?我记得有按强弱分的,还有按软硬分的。
小雅
两套分法,别混。第一套按实时性的强弱,即系统必须对外部事件做出响应的时间长短分三级:强实时系统,响应时间非常短,通常在毫秒或微秒级;一般实时系统,响应时间要求比强实时低,通常在秒级;弱实时系统,响应时间可以更长,也可以随系统负载的轻重而变化。
小雅
第二套根据对错失时限的容忍程度或后果的严重性,分为软实时系统和硬实时系统。硬实时系统,指系统必须满足其灵活性接近零时限要求的实时系统,时限必须满足否则就会产生灾难性后果,并且时限之后得到的处理结果或是零级无用,或是高度贬值。软实时系统,指必须满足时限的要求但有一定灵活性的实时系统,时限可以包含可变的容忍等级、平均的截止时限,甚至是带有不同程度可接受性的响应时间的统计分布;在软实时系统中,时限错失通常不会导致系统失败等严重后果。
阿明
练习题问「硬实时系统与软实时系统的主要区别在于」,怎么答?
小雅
答案是错过时限后果的严重程度。四个选项:响应速度的快慢、错过时限后果的严重程度、系统规模的大小、是否使用操作系统——只有第二个对。「响应速度」是最强的干扰项,因为听起来很合理,但注意强弱实时那套分法才是看响应时间的,硬软分法看的是后果。原文还有一句补充:软实时系统不必预测是否可能有悬而未决的时限错失,在探知到错失一个时限后可以启动一个恢复进程。
阿明
还有一句「时限问题演变成了资源的调度问题」?
小雅
对,这句理解型考点:在实时系统中,任务的开始时间跟时限或完成时间同样重要,由于任务缺少需要的资源,如 CPU 和内存,就有可能阻碍任务执行的开始并直接导致错失任务的完成时限,因此时限问题演变成了资源的调度问题。这一点对调度算法和任务设计都有至关重要的影响。
阿明
转到嵌入式操作系统本身,它和通用操作系统差在哪?
小雅
先背定义:嵌入式操作系统是运行在嵌入式计算机系统上支持嵌入式应用程序的操作系统,是用于控制和管理嵌入式系统中的硬件和软件资源、提供系统服务的软件集合。与通用操作系统相比有五个特点:第一,微型化,运行平台不是通用计算机,一般没有大容量的内存,几乎没有外存,必须做得小巧以尽量少占用系统资源;为提高执行速度和可靠性,软件一般都固化在存储器芯片中,而不是存放在磁盘等载体中。第二,代码质量高,存储空间宝贵,代码要尽量精简。第三,专业化,要有很好的适应性和移植性,支持多种开发平台。第四,实时性强。第五,可裁减、可配置,能根据应用的特点和具体要求进行灵活配置和合理裁减。
阿明
练习题问「以下不属于嵌入式操作系统特点的是」,选项有实时性、可裁剪性、可移植性、集中式管理,选集中式管理?
小雅
选集中式管理,前三项都在五特点里,微型化、代码质量高、专业化、实时性强、可裁减可配置——原文没有任何一条叫集中式管理。嵌入式系统恰恰是分散嵌入到各种设备里的,跟集中式不沾边。分类上还有两套:从获得形式上分商业型和免费型——商业型功能稳定可靠,有完善的技术支持、齐全的开发工具和售后服务,如 WindRiver 公司的 VxWorks、pSOS 和 Palm 公司的 Palm OS 等,但价格昂贵,用户通常得不到源代码;免费型优势在价格,可获得系统源代码,但功能简单、技术支持差、稳定性不够好,典型代表有嵌入式 Linux、uC/OS 等。
小雅
从实时性上分实时嵌入式操作系统 RTEOS 和非实时嵌入式操作系统:RTEOS 支持实时系统工作,其首要任务是调度一切可利用资源,以满足对外部事件响应的实时时限,其次才是着眼于提高系统的使用效率,主要用在控制、通信等领域,目前大多数商业嵌入式操作系统都是实时操作系统;非实时的不特别关注单个任务响应时限,平均性能、系统效率和资源利用率一般较高,适合实时性要求不严格的消费类电子产品,如个人数字助理、机顶盒等。
阿明
RTEOS 本身还有两种类型?
小雅
对,按驱动程序的位置分:实时内核型的 RTEOS,驱动程序传统嵌在内核之中,应用程序和中间件实现在标准的应用程序接口 APIs 之上;实时通用型的 RTEOS,驱动程序并非深度嵌入到内核中,而是在内核之上实现,并且仅包含少数必要的驱动程序,应用程序和中间件可以直接在驱动程序之上实现,而不必在标准的 APIs 实现。另外,实时嵌入式操作系统和通用操作系统之间功能有很多相似之处,例如都支持多任务、支持软硬件资源管理、都为应用提供基本的操作系统服务。
阿明
强实时、一般实时、弱实时这三级会不会拿数字出题?
小雅
会,而且就考数量级:强实时系统响应时间非常短,通常在毫秒或微秒级;一般实时系统响应时间要求低一些,通常在秒级;弱实时系统响应时间可以更长,也可以随系统负载的轻重而变化。配对题把「秒级」配给强实时就是错的,毫秒微秒才是强实时的量级。
阿明
商业型和免费型的代表系统,配对题是不是也常出?
小雅
常出。商业型:WindRiver 公司的 VxWorks、pSOS 和 Palm 公司的 Palm OS,特点是功能稳定可靠、有完善技术支持和齐全开发工具、价格昂贵、通常得不到源代码;免费型:嵌入式 Linux、uC/OS,优势是价格和源代码,缺点是功能简单、技术支持差、稳定性不够好。坑法是把嵌入式 Linux 塞进商业型选项,或者把 VxWorks 说成免费型。
阿明
实时内核型和实时通用型 RTEOS 的区别,会不会出「驱动程序在哪」这种题?
小雅
就考这个:实时内核型的驱动程序传统嵌在内核之中,应用程序和中间件实现在标准的应用程序接口 APIs 之上;实时通用型的驱动程序并非深度嵌入到内核中,而是在内核之上实现,仅包含少数必要的驱动程序,应用程序和中间件可以直接在驱动程序之上实现而不必在标准的 APIs 实现。问「驱动程序嵌在内核之中的是哪种类型」,答实时内核型 RTEOS。
小雅
嵌入式实时操作系统的关键特性八条:满足嵌入式应用的高可靠性;满足应用需要的可裁减能力;内存需求少;运行的可预测性;采用实时调度策略;系统的规模紧凑;支持从 ROM 或 RAM 上引导和运行;对不同的硬件平台均有更好的可移植性。这八条是 RTEOS 区别于通用操作系统的关键,问「实时嵌入式操作系统特有的关键特性」就从里面选。
阿明
接下来是最难啃的吧,时间性能指标,中断那几个时间名字我到现在都分不清。
小雅
本集先立框架,细算下集专门过。常用的时间性能指标三大块:任务切换时间、中断处理相关的时间指标、系统响应时间。先记最容易考的中断响应时间:是指从中断发生到开始执行用户中断服务例程的时间——练习题问「中断响应时间是指」,四个选项里「从中断发生到开始执行用户中断服务例程的时间」就是答案,注意不是「中断处理程序的执行时间」,也不是「从中断发生到中断返回的时间」。
小雅
本集必背第一段:实时系统正确性不仅依赖于逻辑结果还依赖于产生结果的时间;四个定义——逻辑正确、时间正确、死线 Deadline、实时系统是功能正确和时间正确同时满足;强弱分三级:强实时毫秒或微秒级、一般实时秒级、弱实时随负载变化;硬软的区别在错失时限后果的严重程度,硬实时错失产生灾难性后果、结果零级无用或高度贬值,软实时可启动恢复进程;时限问题演变成资源的调度问题。
小雅
第二段:嵌入式操作系统五特点:微型化、代码质量高、专业化、实时性强、可裁减可配置,没有集中式管理;商业型代表 VxWorks、pSOS、Palm OS,免费型代表嵌入式 Linux、uC/OS;RTEOS 首要任务是调度一切可利用资源满足实时时限,其次才是提高使用效率;分实时内核型和实时通用型两种,区别在驱动程序嵌不嵌在内核里;中断响应时间是从中断发生到开始执行用户中断服务例程的时间。
阿明
中断响应时间这句总算是钉进脑子了。
小雅
下一集把性能指标一次算清:任务切换时间包含哪三段、中断延迟和最大关中断时间的关系、中断恢复时间、任务响应时间、系统响应时间怎么跟调度延迟挂上钩,把每个「从哪到哪」都画成一条线来记。