电子产业
数字化服务平台

扫码下载
手机洽洽

  • 微信小程序

    让找料更便捷

  • 华强电子网APP

    随时找料

    即刻洽谈

    点击下载PC版
  • 华强电子网公众号

    电子元器件

    采购信息平台

  • 华强电子网移动端

    生意随身带

    随时随地找货

  • 华强商城公众号

    一站式电子元器件

    采购平台

  • 芯八哥公众号

    半导体行业观察第一站

内核和进程调度

来源:华强电子网 作者:华仔 浏览:595

标签:

摘要: ;;; MantisOS使用了类似于UNIX的进程调度模式,提供基于NJM2902V(TE1)优先级的多线程调度和同一优先级中进行轮转调度服务。它的运行时间片是可配置的,目前设置为lOms。MantisOS也支持互斥信号量和计数信号量。MantisOS在逻辑上把RAM分配成两部分:一部分是在编译时分配给全局变量的,另一部分以堆的形式管理。当系统创建一个新的线程时,内核就从堆中分配堆栈空间,当线程结

;;; MantisOS使用了类似于UNIX的进程调度模式,提供基于NJM2902V(TE1)优先级的多线程调度和同一优先级中进行轮转调度服务。它的运行时间片是可配置的,目前设置为lOms。MantisOS也支持互斥信号量和计数信号量。MantisOS在逻辑上把RAM分配成两部分:一部分是在编译时分配给全局变量的,另一部分以堆的形式管理。当系统创建一个新的线程时,内核就从堆中分配堆栈空间,当线程结束喇,空间又被归还给堆。
;;; 内核主要的全局数据结构是线程表,每个线程有一个条目。当线程表静态分配后,拥有指定的最大线程数和指定大小的存储单元。在编译时,最大线程数是可以动态调整的(默认是12)。每个线程表条目是10B(包含一个当前栈指针、栈边界信息(基本指针和大小)、指向线程开始函数的指针、目前线程状态、当前线程的挂起状态、线程优先级、线程的休眠时间、端口号(只用于网络接收)和指向下一线程的指针)。线程有5种状态:空闲、运行、就绪、阻塞、休眠。线程的阻塞状态有两种:阻塞空闲状态和阻塞休眠状态。MOS为线程设置了5种不同的优先级:内核级优先级、休眠级优先级、高优先级、正常级优先级、空闲优先级。当线程挂起时,线程的上下文环境(包括保存的寄存器值)存储在它的栈中(这非常重要)因为线程的上下文环境比线程表条目要大得多,当线程分配时,它只需要存储起来即可,所示线程表的静态开销炅有120B。
;;; 内核还为每一个优先级别的线程保存表头和表尾指针(默认为SB大小,总共20B),可方便快速增加和删除。这样一来,当操作线程链表时,可提高性能,因为这些操作很频繁,并且时常与中断一起发生。内核还包括一个2B大小的当前线程指针、1B大小的中断状态,1B大小的标志位。这样,进程调度表总的静态开销大小是144B。
;;; MOS也可以使用信号量机制,应用程序可以根据自己的需要在程序中声明。信号量是一个5B的结构,包含计数器字节(或称为“锁”)、头指针、尾指针。在任何特定的时间中,任何一个线程要么属于一个就绪列表,要么属于信号量列表的。
;;; 系统在以下情况会引发上下文环境的切换:调度器接收到一个来自硬件的定时器中断、系统调用、信号量的操作。定时器中断是唯一由内核处理的中断——其他硬件中断被直接发送到相关设备驱动中进行处理。设备驱动在接收到中断后抛出一个信号量,用以激活一个等待线程,该线程处理导致该事件产生的中断。
;;; 除了驱动线程和用户线程外,还有一个由内核在启动时创建的idle线程,idle线程的优先级很低(只有其他线程阻塞时才运行)。idle线程可以检测CPU的利用情形,并且调整内核参数以节约能量。
型号 厂商 价格
EPCOS 爱普科斯 /
STM32F103RCT6 ST ¥461.23
STM32F103C8T6 ST ¥84
STM32F103VET6 ST ¥426.57
STM32F103RET6 ST ¥780.82
STM8S003F3P6 ST ¥10.62
STM32F103VCT6 ST ¥275.84
STM32F103CBT6 ST ¥130.66
STM32F030C8T6 ST ¥18.11
N76E003AT20 NUVOTON ¥9.67