我正在为一项学校作业研究 TinyOS,并读到“核心操作系统为 400 字节”,另一个消息来源说“TinyOS 的占用空间为 400 字节”这到底是什么意思?它是它在硬盘驱动器上占用的实际空间吗?Windows 等“传统”操作系统有多大?
我发现“足迹”实际上意味着什么的答案也令人困惑。因为它似乎意味着实际的物理空间和内存/磁盘空间。
我正在为一项学校作业研究 TinyOS,并读到“核心操作系统为 400 字节”,另一个消息来源说“TinyOS 的占用空间为 400 字节”这到底是什么意思?它是它在硬盘驱动器上占用的实际空间吗?Windows 等“传统”操作系统有多大?
我发现“足迹”实际上意味着什么的答案也令人困惑。因为它似乎意味着实际的物理空间和内存/磁盘空间。
只是为了解释一点背景,TinyOS 的作者自己解释说TinyOS 并不是真正的操作系统:
TinyOS 有一个基于组件的编程模型,由 nesC 语言编写,是 C 的一种方言。TinyOS 不是传统意义上的操作系统;它是嵌入式系统的编程框架和一组组件,可以在每个应用程序中构建特定于应用程序的操作系统。一个典型的应用程序大小约为 15K,其中基本 OS 约为 400 字节;最大的应用程序,一个类似数据库的查询系统,大约 64K 字节。
TinyOS 是一个软件构建系统,旨在让软件工程师更轻松地为没有硬盘的微型设备(如无线传感器)构建软件。相反,程序通常存储在设备的微控制器内——例如,我链接的设备有 48k 字节的闪存(像这样的小型嵌入式设备通常使用闪存来存储他们的程序)。48k 的代码并不算多,因此当您制作要加载到设备上的软件时,它占用尽可能少的空间非常重要。
因此,“400 字节的基本占用空间”意味着,除了您(软件工程师)编写的用于完成您的微型设备需要执行的任何操作的代码之外,TinyOS 框架(它支持并为您的代码提供服务)仅为您的程序代码添加额外的 400 字节(这真是太棒了!),这些代码实际上将加载到设备的闪存中。然而,这并不是唯一的开销——根据设备的不同,TinyOS 还可能包括各种不同的支持驱动程序,用于该设备上存在的任何芯片和组件。
有关实际程序大小的一些示例,请参见本文中的图 6 。
因此,我发现使用 TinyOS 为不同设备构建相同的应用程序会产生非常不同的结果。例如,如果我为 MicaZ 无线传感器构建一个非常简单的程序,我会得到:
compiled NullAppC to build/micaz/main.exe
610 bytes in ROM
4 bytes in RAM
这意味着总程序代码加上基本操作系统(400 字节)为 610 字节(程序还将使用 4 字节的 RAM)。但是,如果我为 TelosB 构建相同的程序:
compiled NullAppC to build/telosb/main.exe
1328 bytes in ROM
6 bytes in RAM
1328 字节!显然 TelosB 需要更多的附加软件,大概是因为 TelosB 上的组件需要更复杂的附加驱动软件。