嵌入式操作系统和桌面操作系统之间的区别

时间:2011-05-04 08:29:59

标签: windows operating-system embedded

  1. 嵌入式操作系统和桌面操作系统有什么区别?

  2. 是否可以在嵌入式操作系统中加载在Desktop Operating System中创建的应用程序?

  3. 假设我在vc ++和C#中创建应用程序以使用Visual Studio和WindowXp Pro进行图像处理是否可以在嵌入式操作系统中加载应用程序?

5 个答案:

答案 0 :(得分:154)

桌面操作系统是一个软件执行程序,通常还有用于运行任意软件的用户工具,通常是交互式的(尽管并非总是如此)。 倾向(重要的是,那个)涉及大量资源使用,强大的保护机制(无论是在安全性方面还是在编写糟糕的应用程序方面,都不会破坏其他应用程序和/或系统)和一些用户界面的标准化形式。

嵌入式操作系统运行频谱。对于大型,重量级嵌入式系统,核心可以是实际的桌面系统(例如嵌入式Linux系统)。然而,大多数嵌入式操作系统较小,使用的资源少得多,可能有更少(甚至没有)保护机制,并且在许多(大多数?)情况下对用户界面没有特别要求。

这些后来的“操作系统”品种通常被称为“执行”(如“实时多任务执行”或RMX),因为它们通常只是桌面系统中称为内核的功能,并且只启用了功能您需要在嵌入式系统中运行的通常固定的应用程序集。它们提供任务切换,中断处理和优先级方案,而不是其他,其余由一组执行问题域的实际任务的固定应用程序提供。

回答以后的编辑,无论是否可以在嵌入式操作系统上运行为桌面操作系统创建的软件,都取决于几个因素。如果目标嵌入式系统与您开发的操作系统相同,并且已激活应用程序使用的所有功能(例如CLR,使用您的C#示例),则可能可以本机运行您的应用程序。但这不太可能。

答案 1 :(得分:19)

  

嵌入式操作系统和桌面操作系统有什么区别?

虽然可以嵌入通用操作系统,例如Linux或Windows 7 Embedded,但通常嵌入式系统运行实时操作系统(RTOS)。这些首先支持硬实时响应和调度。它们通常非常小或至少可扩展性更高。

大多数情况下(尽管并非总是如此)嵌入式操作系统实际上是一个与应用程序代码静态链接的库,用于创建单片应用程序映像。这与可以动态加载和执行从文件系统加载的任意应用程序代码的桌面操作系统不同。显然嵌入式Linux或Windows Embedded不属于这一类。

典型的RTOS内核仅提供调度,同步和进程间通信服务。其他所有内容必须由应用程序或可选或第三方附加库和驱动程序提供。


  

是否可以在嵌入式操作系统中加载在Desktop Operating System中创建的应用程序?

通常,嵌入式系统的应用程序是通过称为交叉编译的过程在桌面系统上创建的。此类应用程序不会在开发主机上运行。类似地,在桌面系统上执行的应用程序不会在嵌入式系统上运行,除非它运行相同的操作系统和微处理器体系结构。也就是说,如果目标系统具有适当的资源,Windows 7桌面应用程序可以在Windows 7 Embedded上运行(例如,GUI应用程序在没有显示器或指点设备的系统中使用不多)。

开发主机和嵌入式目标通常不兼容,无论是操作系统还是硬件架构,通常都是。


  

假设我在vc ++和C#中创建应用程序以使用Visual Studio和WindowXp Pro进行图像处理是否可以在嵌入式操作系统中加载应用程序?

如果目标是运行WindowsXP Embedded或Windows 7 Embedded,是的,否则没有。

您还可以使用VC ++或C#开发目标WindowsCE,并使用C#开发.NET Micro以用于有限范围的非x86目标,但在这些情况下,目标可执行文件不会作为设备在开发主机上运行模拟。


  

这两种操作系统的优点和缺点是什么?

嵌入式操作系统:

  • 可扩展性
  • 实时性能(在RTOS的情况下)
  • 广泛的架构支持
  • 文件系统,网络,GUI,USB,WiFi等功能通常通过附加选项或第三方库提供,可能并非适用于所有系统,或者需要通过以下方式实现或移植:开发者。
  • 许多不同且很不兼容的系统。

桌面操作系统

  • 可扩展性较低
  • 不具备实时性或有限的实时能力。
  • 广泛的应用支持
  • 大量开发人员
  • 只有三个主要参与者,其中只有两个是可嵌入的。
  • 广泛的开发语言和工具选择
  • 广泛的标准外围硬件,文件系统和通信支持。
  • 开发主机和目标环境可能相同。

答案 2 :(得分:4)

嵌入式操作系统是为其他目的而设计的,通常用于控制某些(非计算机)设备或进程。一些嵌入式系统有特殊要求,例如支持某种实时处理。 您通常会在台式计算机上为嵌入式系统创建应用程序,但您需要使用针对嵌入式操作系统/硬件的工具(通常是交叉编译器等)。

答案 3 :(得分:4)

嵌入式往往更简单,因为它只有执行任务所需的软件。该任务通常定义明确,但随着手机和可下载的应用程序的规则正在发生变化。嵌入式设备需要更加可靠,人们可以容忍重新启动或更换损坏的计算机,但不能容忍重新启动或更换他们的汽车计算机或飞机控制系统用于客机。

桌面是超级通用的,需要运行当前的应用程序以及尚未编写的驱动程序和应用程序。由于功能更广等,它们体积更大,可靠性更低。

嵌入式产品往往拥有更多有限的静态资源,桌面拥有更多的资源和动态,您可以随意添加或更改硬盘驱动器,内存和视频,您的期望是它将继续工作。嵌入式供应商通常会控制所有这些,部分可靠性和性能来自于限制软件支持仅限于一个视频驱动程序或整个产品线中的一小部分设备(相比桌面必须支持从1980年代到现在的所有设备) )。

很有可能编写适用于两种环境的应用程序,无论是桌面Linux还是嵌入式Linux或桌面Windows与嵌入式Windows。通常情况下,您应该计划可移植性,并将自己限制为两个平台共有的功能。如果您使用任何旧的桌面应用程序,然后尝试在类似的嵌入式平台上运行它,我不希望它始终有效,我希望有一些调整,在某些情况下重新编写。

答案 4 :(得分:2)

桌面操作系统是专为在台式计算机上运行而设计的操作系统。它具有供桌面使用的驱动程序,优化和接口(API和用户界面)。

嵌入式操作系统与嵌入式设备相同,但用于嵌入式设备。

可以在嵌入式操作系统上加载在桌面操作系统上创建的应用程序,具体取决于应用程序,操作系统,硬件,使用的开发工具以及可能的其他因素。但除非该应用程序旨在应对差异,否则它可能不会。

桌面操作系统的优势在于它在桌面硬件上运行良好。嵌入式操作系统的优势在于它在嵌入式硬件上运行良好。两者的缺点是它们可能无法扩展到其他硬件。