我的一位同事正在从软件开发人员处获得涉及串行通信的引用,并且在他们的引用中,开发人员发表以下声明:
... Windows 7操作系统,它使用非实时串行通信设置。
Windows 7是否支持实时串行通信?为了澄清“实时”的含义,该项目涉及机器人自动化,任何通信延迟(例如缓冲)都可能导致产品损坏或停止生产线。我找不到任何支持或否认这种说法的证据。我不相信它是真的,我认为它可能更多地与他们使用VB.Net进行开发。
答案 0 :(得分:2)
此处使用的“实时”术语实际上并不是指串行通信总线中的任何内容。
但是,它确实与Windows多任务调度程序不能用于允许具有硬截止期限的实时任务这一事实有关。
请参阅此问题以获取一些信息Why is Windows not considered suitable for real time systems/high performance servers?
让我们假设您的计算机上连接了一个粒子加速器,您必须确保每隔10微秒磁铁列车切换到下一组单元的电源,但Windows确定是时候应用一些Windows Update补丁了。您的光子流不会被正确重定向,并可能导致系统损坏。
答案 1 :(得分:2)
这是一个相当荒谬的陈述,Windows本身并不是一个实时操作系统。它无法提供用户模式代码足够快速响应的硬保证。除了线程调度延迟之外,像将进程页面交换到页面文件这样的简单事故就足以导致任意延迟再次运行。任何按需分页的虚拟内存操作系统的属性。当然,假设您没有考虑编写ring 0内核代码,那么“串行通信设置”也不可能。没有人这样做。
这不是一个实际问题,使用串口的唯一要点是与机器人的控制器通信。这提供了实时保证。
当您命令机器人进行不受限制的移动并使用外部传感器使其停止时,您才会遇到麻烦。当您需要找到一个您不知道位置的对象时,这种情况并不少见。一个不错的控制器知道如何做到这一点,避免在Windows代码中实现它。无论如何,必须在机器人本身内置固定超程保护以触发急停,您也不能相信该传感器。
答案 2 :(得分:2)
不,Windows 7(实际上所有主流Windows版本)都不是Real-time operating systems。澄清实时操作系统的含义:
实时操作系统(RTOS)是一个操作系统(OS) 旨在提供实时应用程序请求。它必须能够 处理数据,通常没有缓冲延迟。 处理时间要求(包括任何操作系统延迟)以 十分之几秒或更短。
RTOS的一个关键特性是其一致性水平 关于接受和完成一个人的时间 应用程序的任务;变化是抖动。[1]一个艰难的实时 操作系统比软实时操作具有更少的抖动 系统。主要的设计目标不是高吞吐量,而是一个 保证软性或硬性能类别。一个可以的RTOS 通常或一般满足截止日期是一个软实时操作系统,但如果它 可以确定地满足截止日期它是一个硬实时操作系统。 [2]
RTOS具有用于调度的高级算法。调度 灵活性可以实现更广泛的计算机系统流程编排 优先级,但实时操作系统更常用于a 狭窄的应用程序集。实时操作系统中的关键因素很少 中断延迟和最小的线程切换延迟;一个实时操作系统 更重要的是它的响应速度或可预测性的响应速度 因为它可以在给定的时间内完成的工作量。[3]
请注意,大多数情况下实时操作系统的效率较低(即吞吐量较低),这就是为什么主流操作系统都不是实时的(例如Linux的实时版本完全使用{{3 }} - 只有在非常精确的时间绝对至关重要的情况下,它才有价值。
Windows CE 是实时操作系统different kernels