| 网站首页 | 新闻 | SOPC | FPGA | DSP | ARM | 嵌入式操作系统 | 下载 | 所有产品 | 留言 | 论坛 | 购买指南 | 网络协议 | 驱动设计 | 
您现在的位置: 21嵌入式控制研究室 >> 嵌入式操作系统 >> ucOSII >> 文章正文 用户登录 新用户注册
一个简单实现的嵌入式OS--LINOS            【字体:
一个简单实现的嵌入式OS--LINOS
作者:佚名    文章来源:本站原创    点击数:    更新时间:2005-11-30
1. 关于LINOS
LINOS是应用于微处理芯片的嵌入式操作系统,支持进程管理,32优先级调度(可扩展),动态内存管理,定时器,消息,信号量(semaphore),信号(signal),文件操作等功能。
LINOS提供的部分功能调用接口参考了LINUX的特点,不过LINOS不支持MMU,文件管理等功能。希望能把LINOS做得更好,永远向LINUX学习,故命名为LINOS。

2.进程管理
A. int fork();

与UNIX调用方式一样,调用fork的父进程创建一个子进程,这个子进程除了拥有自己的堆栈,与父进程共享所有的资源。
父进程返回子进程的进程号pid(大于0),而子进程总是返回0。如果因为资源申请失败则父进程返回-1;
   
B .int exec(void * entry);
    
调用exec的程序结束当前程序,从entry提供的入口开始执行,直到结束。Entry指向一段代码的开始。

  C. int execv(int argc, char **argv, void *entry);

调用execv的程序结束当前程序,从entry提供的入口开始执行。Entry指向一段代码的开始。其中argc,argv作为参数传给新的入口函数。

  D. unsigned char getpriority();

获取当前进程的优先级,进程创建时默认为27。

E . int setpriority(unsigned char pri);
   
设置当前进程的优先级,进程创建时默认为27。调用setpriority只可以降低当前进程的优先级,不可以提高,防止进入实时状态永远抢占CPU。
当需要提高优先级时,必须向超级进程root task发出信号PRI_SIG提出申请。

只有超级进程root task可以提高进程的优先级,root task会在设置优先级后始终监视这个进程,当发现非核心进程进入实时级别,并且在运行中不会主动放弃CPU,会强制把此进程恢复为原来的优先级。

  F.void sleep(unsigned long timeout);

Sleep使当前进程进入睡眠状态,主动放弃CPU,直到timeout时间后运行。

G.void sleepin(unsigned long timeout);
   
   与sleep一样使进程睡眠一段时间,但不同的是,在timout时间后,能够立即抢占到CPU并执行一个时间片,其抢占CPU的优先级高于实时进程和超级进程。不过在执行完一个时间片后,立即恢复为原来的优先级运行。

Sleepin可以用于处理实时任务的睡眠,如I/O操作,实时通信等。Sleep则可用于一般的应用程序,如UI操作。

H.void wait();

   调用wait等进程立即放弃CPU进入等待状态,直到有其它进程调用wakeup把自己唤醒为止。

I. void waitin();
  
   同wait一样进入睡眠状态,直到被其它进程唤醒,与wait不同的时,在唤醒后能够立即抢占到CPU并执行一个时间片,这与sleepin相似。用于等待实时任务的处理。

J.void waitid(unsigned long task_id);
  
   调用waitid的进程立即被挂起,直到pid为task_id的进程运行结束时,才被唤醒。可用于进程操作的同步。比如父进程创建一个子进程去处理一件事情,在子进程处理完毕结束时,父进程接着运行。

K.void wakeup(unsigned char task_id);

   调用wakeup可以唤醒pid为task_id的进程。如果此进程没有处于睡眠或者等待状态,则不起作用。

L.void wakeupin(unsigned char task_id);

   同wakeup一样,可以唤醒pid为task_id的进程,但不同的时,当前调用wakeupin的当前进程立即放弃时间片,进入核心态去调度pid为task_id的进程。赋予task_id进程最高优先级抢占CPU并执行一个时间片。
文章录入:fengfeiyi    责任编辑:fengfeiyi 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
  • uC/OS-II 初级程序员指南

  • μC/OS-II的实时性能分析

  • uC/OS-II任务栈处理的一种改…

  • μC/OSII中的时钟中断技术研…

  • uC/OS-Ⅱ在C167CR单片机上的…

  • 基于uC/OS-II的变频器变结构…

  • μC/OS-II在AT89C51上的移植

  • 嵌人式实时操作系统uC/OS在…

  • uC/OS开发方法

  • uc/os 任务调度机制

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)