这几天,阅读nuttx官网的文档,记录如下,理解不对的地方,大家积极提出。
nuttx是flat地址形式的OS,所以不支持进程概念,这个linux不一样。nuttx是只支持简单的线程运行在同一地址空间。
关于flat地址模型以及分页机制,这一篇blog说的不错,连接如下:
http://blog.csdn.net/jn1158359135/article/details/7106383
尽管说nuttx只支持线程模型,但是也有任务和线程的区别。
任务是有一定独立程度的线程
线程共享资源
个人理解就是,线程和linux下的线程区别不大,任务就是没有linux环境下的进程那么独立,但是比线程独立性强一些。
task由task_create创建的任务,会复制三个最小的文件描述符,这个linux相同,并且这三个继承来的fds,可以放心的使用而对父任务没有影响。当然也可以重定向。
而threads则与其父线程共享文件描述符。并且同一父亲线程的子线程共享这些描述符。
默认,nuttx执行严格的优先级调度。高优先级任务会独占cpu运行直到被blocked。这时候,低优先级的任务才会使用cpu。相同优先级的任务按照FIFO来调度。
通常,nuttx的task和thread可以配置成轮询调度或者专用的零星调度。轮询调度和优先级调度类似,除了下面提到的2点,任务具有相同的优先级和通过时间片机制共享cpu时间。时间片间隔是由系统配置CONFIG_RR_INTERVAL设置为正的非负值。另外的调度不太明白,不说了。
阅读(2672) | 评论(0) | 转发(0) |