首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

对无线传感网络操作系统现状 调查(3)

对无线传感网络操作系统现状 调查(3)

5.2 编程模型
   contiki支持可抢占多线程调度,多线调度被实现为一个库在事件驱动的内核上,当应用需要的时链接进来。contiki的多线程库分为两个部分,与平台相关部分和  与平台无关部分,与平台无关部分是与事件内核相联系的,与平台相关部分  implements stack switching and preemption primitives,since preemption si supported ,preemption is implemented using the timer interrupt and the thread state is stored on a stack.

    多线程,原始线程。特点:占用很少内存(每个线程2个字节),没有多又多余的栈为线程,高可移植性(全部是由c语言实现的,没有与体系机构相关的汇编代码存在),事件是一直运行到结束的(应该是说,一个时间会一直运行,即使被中断还是会到这里,直到执行完毕),contiki不允许中断服务函数post new events,所以contiki没有通过进程同步控制。


5.3 调度
      contiki内核是基于事件的,多以没有采用任何复杂的调度算法。如果事件到来则会被处理,中国中断到来,会根据其中断优先级进行调度。

5.4内存管理和保护

    contiki支持动态内存管理,除此之外,还支持动态的链接程序。为了是contiki不产生碎片,contiki用了一种内存管理分配器,其主要职责是:通过链接不是使用的内存来保证所分配的内存不产生碎片。所以,一个程序使用内存管理分配器不能保证他分配的内存是固定在一个地方的。

   对于动态内存管理,contiki也提供了内存块管理功能,这个库提供简单但有效的内存管理功能,对于固定长度的内存块。内存块是用MEMB()宏来静态声明的,内存块通过memb_alloc()函数在声明的内存块中分配内存。


   值得一提的是,contiki没有提供任何内存保护机制在不同的应用中。


  5.5 通信协议支持

     contiki 支持丰富的通信协议,在contiki,一个应用可以用两个版本的IP,IPv4 和IPv6,contiki提供了uip,uip不需要 与他通信的协议时一个完整的协议栈,但是它可以与一个运行着一个相似的轻量级的协议栈通信,uip是有c语言写的,它只支持一个网络接口,并且它支持TCP UDP 和IP协议层。
    contiki提供另一种轻量级的分层协议栈,叫做 Rime,是基于网络的通信。Rime提供单跳单播,单挑广播,和多跳通信支持,Rime协议支持尽最大努力交付和可靠传输。在多跳通信中,Rime运行应用程序运行它们自己的路由协议,应用层允许扩充rime协议中没有实现的部分。

    contiki不支持多播通信,所以contiki不能提供任何组播通信的协议,如ICMP MLD协议。

    contiki提供了一种RPL(IPv6 路由协议为低功耗和lossy(有损耗的)网络)。 contikiRPL,
    contikiRPL操作低功耗无线链路和有损耗的有线链路。


  5.6 资源共享

     事件是一直运行到结束的,并且contiki不允许中断服务函数产生新的事件,contiki提供串行的访问所有资源。

    5.7  支持实时应用。

     contiki提供任何对实时应用的支持,因此,在contiki中没有任何实时调度的算法。在网络协议栈方面来看,contiki不提供任何考虑Qos需求的多媒体应用。并且,contiki提供了微型IP协议栈,在不同层之间的通信是不允许的。

    5.8 新增特性

     coffee 文件系统:
     contiki 为flash-based 传感器设备通过了Coffee 文件系统,设计此文件系统的目的是为创建一种有效地可移植存储提供一个编程接口。Coffee 提供了一个与平台无关的存储抽象通过一种有效的编程接口。Coffee需要5k ROM  用于存储代码,以及0.5k的RAM在运行时。一个简单连续的页结构正在被使用,Coffee 也引入了微日志去处理文件修改,而不是用一个增长型的日志结构,因为连续的页结构文件数据元,Coffee 为每个文件创建了一个小的固定的footprint。flash 内存被分成了逻辑页它的大小一般是和flash内存页大小一致。   如果文件的大小在事前不知道,Coffee 分配一个预定义数量的页为文件,稍后,如果默认的文件大小不是很有效,Coffee 创建一个新的大点的文件,并且把旧的文件拷贝过去,为了提高文件系统的效率,Coffee默认提供了一个8个条目的RAM元数据cache,coffee提供了垃圾回收机制,它可以重造废弃的页,当一个文件保留的请求不能被满足的话,为文件分配页的时候, Coffee用一种首次匹配算法,flash 内存 会受到使用次数的限制,每次它的页擦写都会增加它记忆单元失效的危险。Coffee使用一种磨损评估,目的是平均的使用每个扇区,减小一些扇区因使用过度而废弃的危险,Coffee提供了以下API为应用程序员。open(),read(),modify(),seek(),append(),close()。
继承事业,薪火相传
返回列表