footprint/core OS 是 400 字节是什么意思?
What does it mean that footprint/core OS is 400 bytes?
我正在为一项学校作业研究 TinyOS,并读到 "core OS is 400 bytes",另一个来源说 "The footprint of TinyOS is 400 bytes" 这到底是什么意思?它是它在硬盘驱动器上实际占用的 space 吗?
有多大 "traditional" OS 比如 windows?
我找到的关于 "footprint" 实际含义的答案也令人困惑。因为它似乎意味着实际物理 space 和 memory/disk space.
只是为了解释一些背景知识,authors of TinyOS themselves have explained that TinyOS 并不是真正的操作系统:
TinyOS has a component-based programming model, codified by the
nesC language, a dialect of C. TinyOS is not an OS in the traditional
sense; it is a programming framework for embedded systems and set of
components that enable building an application-specific OS into
each application. A typical application is about 15K in size, of which
the base OS is about 400 bytes; the largest application, a
database-like query system, is about 64K bytes.
TinyOS 是一个软件构建系统,旨在让软件工程师更轻松地为没有硬盘的微型设备 (like this wireless sensor) 构建软件。相反,程序通常存储在设备的微控制器内——例如,我链接到的设备有 48k 字节的闪存(像这样的小型嵌入式设备通常使用闪存来存储它们的程序)。 48k 的代码并不多,所以当您将软件加载到设备上时,它占用的代码尽可能少 space 是非常重要的。
因此,'base footprint of 400 bytes' 意味着,在您(软件工程师)编写的代码之上来完成您的微型设备需要做的任何事情,TinyOS 框架(支持并为您的代码提供服务)只会向您的程序代码添加额外的 400 字节(这真是太神奇了!),这些代码实际上将被加载到设备的闪存中。然而,这并不是唯一的开销 - 根据设备的不同,TinyOS 还可能包括各种不同的支持驱动程序,适用于该设备上存在的任何芯片和组件。
有关实际程序大小的一些示例,请参阅 figure 6 in this paper。
因此,我发现使用 TinyOS 为不同的设备构建相同的应用程序会产生截然不同的结果。例如,如果我为 MicaZ 无线传感器构建一个非常简单的程序,我会得到:
compiled NullAppC to build/micaz/main.exe
610 bytes in ROM
4 bytes in RAM
这意味着总的程序代码加上基数 OS(400 字节)是 610 字节(该程序还将使用 4 字节的 RAM)。但是,如果我为 TelosB 构建相同的程序:
compiled NullAppC to build/telosb/main.exe
1328 bytes in ROM
6 bytes in RAM
1328 字节!显然 TelosB 需要更多的附加软件,大概是因为 TelosB 上的组件需要更复杂的附加驱动软件。
我正在为一项学校作业研究 TinyOS,并读到 "core OS is 400 bytes",另一个来源说 "The footprint of TinyOS is 400 bytes" 这到底是什么意思?它是它在硬盘驱动器上实际占用的 space 吗? 有多大 "traditional" OS 比如 windows?
我找到的关于 "footprint" 实际含义的答案也令人困惑。因为它似乎意味着实际物理 space 和 memory/disk space.
只是为了解释一些背景知识,authors of TinyOS themselves have explained that TinyOS 并不是真正的操作系统:
TinyOS has a component-based programming model, codified by the nesC language, a dialect of C. TinyOS is not an OS in the traditional sense; it is a programming framework for embedded systems and set of components that enable building an application-specific OS into each application. A typical application is about 15K in size, of which the base OS is about 400 bytes; the largest application, a database-like query system, is about 64K bytes.
TinyOS 是一个软件构建系统,旨在让软件工程师更轻松地为没有硬盘的微型设备 (like this wireless sensor) 构建软件。相反,程序通常存储在设备的微控制器内——例如,我链接到的设备有 48k 字节的闪存(像这样的小型嵌入式设备通常使用闪存来存储它们的程序)。 48k 的代码并不多,所以当您将软件加载到设备上时,它占用的代码尽可能少 space 是非常重要的。
因此,'base footprint of 400 bytes' 意味着,在您(软件工程师)编写的代码之上来完成您的微型设备需要做的任何事情,TinyOS 框架(支持并为您的代码提供服务)只会向您的程序代码添加额外的 400 字节(这真是太神奇了!),这些代码实际上将被加载到设备的闪存中。然而,这并不是唯一的开销 - 根据设备的不同,TinyOS 还可能包括各种不同的支持驱动程序,适用于该设备上存在的任何芯片和组件。
有关实际程序大小的一些示例,请参阅 figure 6 in this paper。
因此,我发现使用 TinyOS 为不同的设备构建相同的应用程序会产生截然不同的结果。例如,如果我为 MicaZ 无线传感器构建一个非常简单的程序,我会得到:
compiled NullAppC to build/micaz/main.exe
610 bytes in ROM
4 bytes in RAM
这意味着总的程序代码加上基数 OS(400 字节)是 610 字节(该程序还将使用 4 字节的 RAM)。但是,如果我为 TelosB 构建相同的程序:
compiled NullAppC to build/telosb/main.exe
1328 bytes in ROM
6 bytes in RAM
1328 字节!显然 TelosB 需要更多的附加软件,大概是因为 TelosB 上的组件需要更复杂的附加驱动软件。