物联网操作系统HelloX V1.88版功能描述

经过HelloX开发团队近一年的努力,在HelloX V1.86版本基础上,增加许多功能特性,并对V1.86版本的一些特性进行了进一步优化之后,正式形成HelloX V1.88版本。经相对充分的测试和验证之后,现正式发布。相关代码,已全部上载到github上(github.com/hellox-project/HelloX_OS),欢迎对HelloX感兴趣的朋友下载测试和试用,并进一步反馈问题。

V1.88版本完成时间较长,主要原因是在过去的一年里,我从事的单位持续遭受各种外部压力。这些压力传递到员工身上,导致工作量和压力倍增,业余时间大大压缩。大多数时候都是晚上10点以后才下班,周末基本都要加班。即使在这样紧张的工作压力下,HelloX的开发也没有中断,一直持续。而且对代码的质量要求更高,因为通过过去一年多的遭遇,使我认识到基础软件的重要和必要性。HelloX属于基础软件,必须夯实基础,做到最大程度的容错和外部适应。

    1. V1.88主要功能简介

除继续保持V1.86所有特性之外,V1.88版本主要对下列特性进行了支持或优化:

  1. 高性能存储访问支持。HelloX现有版本已经支持相对完善的文件系统,比如FAT,NTFS(read only),裸文件系统等等。但文件I/O的性能还跟不上要求,当前文件I/O的吞吐量大约在20M BPS上下,而且对磁盘的访问是通过调用BIOS服务完成的,涉及到CPU模式的切换,大大影响整体效率。在V1.88版本中,HelloX实现了一个完整的基于IDE/AHCI接口的硬盘驱动程序,同时完整优化了FAT文件系统,系统的文件I/O吞吐率能够达到200M以上。这样HelloX就具备了做网络NAS、文件服务器等的能力。
  2. 用户态功能得到加强。每一个应用程序,都可以为进程形式运行,有自己独立的地址空间(32位),可以在自己的地址空间内创建多个用户线程实现并发。通过系统调用(system call)陷入内核,访问内核功能。不同进程之间的数据和程序代码严格隔离,最大限度的保证系统整体安全性。在V1.88版本中增加的TFTP Server功能,就是在用户态实现的一个应用程序,可以按需加载和运行;
  3. 实现相对完整的用户态代码库。引入基于ptmalloc开源代码的用户态堆内存管理算法,引入ANSI标准的C语言标准库,用户只需要按照通用的开发方法即可完成HelloX应用程序的开发,与开发Windows、Linux等操作系统应用没有任何不同。V1.88版本引入了开源的CPUID代码库,几乎在没有修改的情况下编译成为一个用户态应用程序-cpuid.exe,可以在HelloX下查看CPU的各类信息;
  4. 实现完整的BSD风格的socket系统调用。可以在用户态调用socket API开发网络类应用程序,在V1.88版本中,通过socket API函数,实现了两个功能:TFTP服务器和telnet服务器。支持TFTP协议的客户端,可以与运行HelloX操作系统的服务器,通过TFTP协议传输文件。比如HelloX产生的日志文件,通过TFTP client可以下载到个人PC上,进行分析。在个人PC上安装一个标准的telnet client软件,即可以telnet到hellox上进行远程操作,与通过串口线、键盘等操作手段完全一致。基于TFTP和Telnet,可实现对hellox的远程管理维护,大大方便了管理操作;
  5. 增加了更加丰富和完整的调试与诊断手段,实现了完善的日志输出功能。内核模块会产生日志信息,这些日志信息会被一个单独的内核线程收集,并统一写入到日志文件中(syslog/logfile.txt)。如果出现系统崩溃,可以下载日志文件进行故障诊断。因为系统中有一个独立的内核线程负责收集和写日志,日志信息首先被发送到日志线程进行缓存,在合适的时机才真正写入文件系统,因此不论系统的上下文是什么(中断,系统调用,…),都可以调用__LOG函数来形成日志。

根据github的统计,HelloX V1.88在原来基础上总共更新了130多个源代码文件,修改或增加了大约3万行的源代码。V1.88版本的总代码行大约为20万行(不包括用户态的应用程序代码)。HelloX V1.88内核编译后的二进制文件大小,大约在565K左右。

    1. V1.88用户态功能介绍

用户态进程功能是HelloX V1.85版本新引入的功能,主要目的是为了对不同的应用程序之间,以及应用程序、内核之间进行彻底的隔离,创造一个安全稳定的执行环境。是否具备用户态功能,是区分通用操作系统和嵌入式操作系统的标志之一。在HelloX V1.88版本中,用户态功能做了较大的增强。但用户态功能博大精深,需要考虑的因素不比内核本身要少,因此在后续版本中,还会进一步完善和增强用户态功能。

大部分嵌入式的操作系统都不具备用户态功能,在嵌入式领域,包括操作系统内核,应用程序,各种驱动程序,大多数情况都是一个解决方案厂商提供,不存在不信任的应用程序或设备驱动。而且引入进程之后,频繁的进程间切换会降低系统整体性能,因此权衡下来,嵌入式操作系统一般都不实现用户态功能。

但是HelloX定位于物联网网关等复杂的应用场景,需要动态加载和执行第三方应用程序。如果不做安全隔离,程序之间就可以直接访问对方数据,存在巨大安全隐患。同时第三方应用质量无法保证,在没有地址空间隔离的情况下,一旦一个应用程序出问题,很大概率会导致整个系统崩溃。因此权衡下来,HelloX最终在V1.85版本中引入用户态进程功能。

只是动态按需加载的第三方应用,才会以进程形式运行。HelloX内核本身的功能,比如TCP/IP协议栈,网卡驱动程序,USB驱动程序,文件系统,等等功能还是在内核中运行。因为我们认为这些功能是可信任的,而且都是系统必须功能(一项功能缺失,即使操作系统内核不受影响,也已经无法提供完整的功能),因此与内核分离意义

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值