| 网站首页 | 范文 | 演讲致词 | 汇报体会 | 总结报告 | 公文方案 | 领导讲话 | 党建工会 | 论文 | 文档 | 
您现在的位置: 范文大全网 >> 论文 >> 今日更新 >> 正文 用户登录 新用户注册
嵌入式操作系统的多线程机制研究与实现           
嵌入式操作系统的多线程机制研究与实现
睡眠的时间(在内核,一般用嘀嗒数来表示),ThreadCnt用于保存进入睡眠时系统的嘀嗒数。系统嘀嗒数的使用比较普遍。比如,在linux中用jiffies来表示系统嘀嗒数[4]在线程调度器中,之所以只关心ESP寄存器,是因为我们要把所有寄存器的内容都存在堆栈中。对于Cortex-M3内核,当发生中断时,MCU首先会自动将xPSR,PC,LR,R12,R3-R0压入堆栈[5]。对于操作系统而言,这些显然不够,因为我们不能保证应用程序在进入中断时会用到哪些寄存器。所以为了安全考虑我们需要把所有的寄存器压入堆栈。当线程(进程)恢复时,只要把所有的寄存器依次弹出就可以。所以,ESP寄存器非常关键,因而在进程TCB和线程TCB中都要使用一个变量来保存这个寄存器的值。而在调度器返回后,操作系统内核不必去关心它要运行的是进程还是线程,它只会根据ESP,依次弹出堆栈的内容到寄存器。因而与无线程的操作系统相比,我们增加的调度开销几乎只是对线程队列查找的开销。对于ucos系统,采用了一种比特位映像的方法来查找下一个运行的进程,这种方法对于小型操作系统的调度具有很高的效率[6]。

中国论文联盟*编辑。

 3 多线程在用户级的实现
  除了线程调度,对于应用程序,还需要更多的其它功能来管理线程。为了减少内核的复杂度,对内核实现模块化设计,需要将一些要求不高的功能放到内核之外。在linux系统中,对线程的处理就全部放在用户级。为了便于应用程序对线程的管理,嵌入式操作系统提供了一系列的接口函数供应用程序调用,比如线程创建,线程删除,线程切换,线程延时等。对于这些接口函数,要满足安全,稳定,高效的要求。
  3.1 线程的创建
  多个线程之间可以共享进程资源,因而线程没有必要设计得象进程那样庞大。一个线程创建函数的例子为int ThreadCreate(void *stack, unsigned int dwStackSize, void *StartAddress, unsigned int Parameter, unsigned int ThreadId)。参数stack指向调用时申请的线程堆栈空间,dwStackSize是线程堆栈的大小,StartAddress是线程运行函数的地址,Paramete

上一页  [1] [2] [3] [4] [5] [6] [7] 下一页

  • 上一个论文:

  • 下一个论文:
  • 推荐文章
    基于USB总线的嵌入式甲烷气体
    基于Xscale架构实训的嵌入式
    中高端人才工作嵌入的结构模
    植入式营销说服机制的符号学
    嵌入式实时操作系统研究与分
    嵌入式测控系统中的多处理器
    嵌入式实时操作系统研究与分
    嵌入式数控系统软件总体设计
    嵌入式实时操作系统研究与分
    嵌入式数控系统软件总体设计