我偶然发现了一个叫做LatencyMon,它显然可以进行延迟监控。
我一直认为,处理器的负载越大,系统响应越慢,或者延迟越大。然而,在 LatencyMon 页面的第二部分,第一句话说:“Windows 不是实时操作系统”(RTOS)。这让我开始思考。我的意思是,这与其他操作系统(如 Linux、Unix 或 Mac OS X)有什么不同吗?
有“实时”操作系统吗?或者这只是一个让你购买其产品的营销手段?
编辑:
另外,有没有 RTOS 的例子?
答案1
实时操作系统 (RTOS) 是一种用于满足实时应用程序请求的操作系统 (OS)。
RTOS 的一个关键特性是其在接受和完成应用程序任务所用时间方面的一致性水平;这种可变性就是抖动。硬实时操作系统的抖动比软实时操作系统要小。主要设计目标不是高吞吐量,而是保证软或硬性能类别。通常或一般能够满足截止期限的 RTOS 是软实时操作系统,但如果它能够确定地满足截止期限,则它就是硬实时操作系统。
RTOS 具有先进的调度算法。调度程序灵活性使计算机系统能够更广泛地协调进程优先级,但实时操作系统通常专用于一组狭窄的应用程序。实时操作系统的关键因素是最小的中断延迟和最小的线程切换延迟;实时操作系统的价值更多地在于其响应速度或可预测性,而不是其在给定时间段内可以执行的工作量。
实际上,很少有操作系统会这样做,因为对于很多工作负载来说,这样做效率较低。目前,主流消费级操作系统都不是实时的(或者就我所知,从未是实时的)。不幸的是,这确实意味着非实时环境中的某些事物有时必须等待其他事物。一般来说,只有当某事物无法在合理的时间内产生结果时,这才会成为问题。
目前最著名、应用最广泛的实时操作系统是:
LynxOS OSE QNX RTLinux VxWorks Windows CE
查看实时操作系统列表以获取完整列表。
答案2
实时操作系统通常用于嵌入式系统,它们可能负责诸如指导或系统监控之类的工作。关于实时系统(以及它与非实时系统的区别)需要记住的关键一点是在实时系统中,如果答案迟了,这是不对的。 你可以很容易地看到这是如何运作的,想象一下在 Excel 中将一系列数字相加(如果操作延迟,则不会产生实际影响)与在汽车上踩刹车(延迟可能会造成灾难性的后果)。
答案3
基本上,RTOS 可以保证在特定(通常很短)的时间范围内处理 IRQ(中断请求)。标准操作系统没有这样的保证。
在大多数现代系统中,大多数设备都可以生成 IRQ。这会导致 CPU 停止(即中断)其正在执行的操作并运行中断服务程序。这个想法是,这个服务程序会执行设备需要的任何操作,即将数据从设备中取出并放入 RAM,告诉设备下一步要做什么,等等。
在 x86 上,由于 CPU 上只有 1 条 IRQ 线,因此当它收到中断时,其他中断将自动禁用(NMI、RESET 和 SMI 除外),直到 CPU 确认中断源并重新启用它们。因此,标准 i386/amd64 Windows 下的良好设备驱动程序将在此状态下进行最少的处理,足以重新启用中断,然后将中断的完整处理推迟到稍后(因为系统在技术上每次只能为每个 CPU 核心处理 1 个中断)。我不确定,但我相信 Linux 也是这样做的。尽管如此,并没有硬性保证中断将在何时得到处理。
对于大多数 PC 设备(例如磁盘、键盘、网卡),如果在处理 IRQ 时出现轻微延迟,除了性能下降外,不会发生任何不良情况。对于音频和视频输入等设备,这可能是一个更大的问题,因为这些设备不会缓冲任何内容,而 PC 确实需要跟上传入的数据流。