本篇介绍“进程模型”、“内核模块与动态链接库”以及“C++支持”。官网:http://www.sylixos.com。
进程模型
SylixOS在版本1.0.0时引入了进程概念,成为全世界少数几个支持进程的实时操作系统之一。在以往的嵌入式系统中大多数系统不存在MMU,CPU性能也很低,所以根本没有引入进程的必要性,只需要一个多线程操作系统就可以工作的非常好,可是时过境迁,如今的嵌入式处理器性能普遍较高,而且都含有完整的MMU,这使得嵌入式系统在能接受的复杂度下支持多进程成为可能。
由于应用场合与PC大为不同,所以面向工业领域的嵌入式系统大多数为实时操作系统,所以为了实现实时性特点,SylixOS引入的进程类似于VxWorks6.0之后的RTP进程与uClinux的进程,也就是说SylixOS内所有进程共享一个地址空间,只是在动态链接的时候进行代码和数据的重定向,那么进程调度时就不需要切换庞大的页表,这样进程的切换时间就符合实时系统对时间确定性的要求。SylixOS进程实际上是一个资源的容器,这个容器中包含代码段,数据段,文件描述符,内核对象,posix 对象,C库和众多支持的动态链接库,这些库和应用程序共享一个进程容器,进程容器间彼此隔离,那么在使用起来和linux上的标准进程也就没有任何区别了。
进程标准
SylixOS支持POSIX除fork以外的所有进程API,因为没有fork,所以SylixOS创建进程可以使用ISO C规定的spawn系列函数(头文件为process.h)。同时SylixOS支持POSIX1003.1b规定的实时进程标准,这些函数在<spawn.h>中声明。这些函数可以满足用户对进程的绝大多数需求。
进程资源回收
SylixOS进程分为三种类型,它们分别是:正常进程、孤儿进程、僵尸进程。正常进程是指存在父亲进程且本进程与父进程都在运行的进程。孤儿进程是指父进程先于当前子进程结束,当前子进程还在运行的进程。僵尸进程是指子进程已经结束,正在等待父进程回收自己的资源,可是父进程退出时没有回收子进程资源。
对于正常进程,在结束时需要父进程调用wait或者waitpid来回收自己的资源,那么资源的回收将在父进程中进行。
对于