我正在为学校作业研究TinyOS,并读到"核心操作系统是400字节",另一个消息来源说"TinyOS的足迹是400字节"这到底是什么意思?是它在硬盘上占用的实际空间吗? 像Windows这样的"传统"操作系统有多大?
我发现的关于"足迹"实际含义的答案也令人困惑。因为它似乎意味着实际的物理空间和内存/磁盘空间。
为了解释一些背景,TinyOS的作者自己已经解释了TinyOS并不是一个真正的操作系统:
TinyOS有一个基于组件的编程模型,由 nesC语言,C.TinyOS的方言不是传统的操作系统 意义;它是嵌入式系统的编程框架和一组 支持将特定于应用程序的操作系统构建到 每个应用程序。典型的应用程序大小约为 15K,其中 基本操作系统约为 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上的组件需要更复杂的附加驱动程序软件。