美文网首页
常见的嵌入式OS内存管理和进程调度方式

常见的嵌入式OS内存管理和进程调度方式

作者: ouhaya | 来源:发表于2017-06-07 09:31 被阅读0次

调度策略

  1. 时间片轮转算法

在早期的时间片轮转法中,系统将所有的就绪进程按先来先服务的原则,排成一个队列,每次调度时,把CPU分配给队首进程,并令其执行一个时间片。时间片的大小从几ms到几百ms。当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的末尾;然后,再把处理机分配给就绪队列中新的队首进程,同时也让它执行一个时间片。

  1. 优先级调度算法

每个进程根据它重要程度的不同被赋予不同的优先级,调度器在每次调度时,总选择优先级最高的进程开始执行。在当前进程的执行过程中若有更高优先级的进程进入就绪状态时,此时cpu的调度方式又分为非剥夺型调度剥夺型调度

所谓“非剥夺型调度”是指:一旦某个进程被调度执行,则该进程一直执行下去直至该进程结束,或由于某种原理自行放弃CPU进入等待状态,才将CPU重新分配给其它进程。所谓“剥夺型调度”是指:一旦就绪状态中出现优先权更高的进程,或者运行的进程已用满了规定的时间片时,便立即剥夺当前进程的运行(将其放回就绪状态),把CPU分配给其它进程。

常见可运行于小型单片机系统

  • UCOS-II
  • eCOS
  • Free RTOS
  • uCLinux

UCOS-II

任务调度:抢占式实时内核,即优先级最高的任务优先运行,不论什么时候,只要就绪的任务中有比当前正在执行的任务优先级更高的任务,就暂停当前的任务去执行优先级最高的任务(固定优先级抢占式)。UCOS-II中共有64个任务,分为8组,每8个为一组。

实时性很高

内存管理:μC/OS-II提供的内存管理机制是把连续的大块内存按分区来管理,每个分区中包含整数个大小相同的内存块,不同分区的大小可不相同,同一个分区的大小相同。因申请的空间大小固定,故即使是频繁地申请和释放内存也不会产生内存碎片问题,但其缺点是内存的利用率相对不高。

Free RTOS

任务调度:FreeRTOS内核既支持优先级调度算法,同时支持轮换调度算法。同时,支持用户自定义可剥夺和不可剥夺。当进行任务调度时,调度算法首先进行优先级调度。系统按照优先级从高到低的顺序从就绪任务链表数组中寻找第一个最高就绪优先级,据此实现优先级调度。若此优先级下只有一个就绪任务,则此就绪任务进入运行态;若此优先级下有多个就绪任务,则需采用轮换调度算法实现多任务轮流执行。

调度方式灵活

内存管理:提供5种内存管理机制,分别放置于heap_*.c文件中。

  • heap_1.c 最简单的分配器,不允许内存释放。
  • heap_2.c 比heap_1.c改进的地方就是可以释放内存。
  • heap_3.c 是针对线程安全的。包装了malloc(),free()
  • heap_4.c 可以合并相邻的空块,避免碎片,可以指定绝对地址。
  • heap_5.c 比heap_4.c改进的地方是可以合并不相邻的空闲内存.

FreeRTOD
优势:免费 
劣势:仅是一个系统内核,需扩展第三方GUI、TCP/IP协议栈、FS文件系统
UCOS-II
优势:实时性强、功能完整(UCOS/GUI、UCOS/FS、UCOS/tcp-ip无缝结合)

uClinux

内存管理:继承了标准linux的管理方式,但因为缺少MMU(内存管理单元)导致对内存的操作是对真实地址进行,无法做到程序隔离。

任务调度:uClinux在结构上继承了标准Linux的多任务实现方式(分实时进程和普通进程采用不同的调度策略、即先来的先服务调度和时间片轮转调度)

优点:着重网络应用、文件系统、
缺点:实时性一般(不支持抢占)、内核大(512KRAM,1Mflash)、少了内存保护和虚拟内存模块

eCOS

进程调度:支持两种进程调度,位图调度(一个任务一个优先级)、多队列调度(一个优先级可对应多个任务)

内存管理:ecos提供了两种内存池:一种是变长内存池(variable size memory pool),根据申请的大小进行分配;另一种是定长内存池(fixed size memory pool),以固定大小的块为单位进行分配。变长内存池使用链表来进行管理,定长内存池使用位图来进行管理。C库函数malloc使用变长内存池实现内存分配,用户可以直接使用C库函数malloc和free管理内存。

相关文章

  • 常见的嵌入式OS内存管理和进程调度方式

    调度策略 时间片轮转算法 在早期的时间片轮转法中,系统将所有的就绪进程按先来先服务的原则,排成一个队列,每次调度时...

  • windows vs linux

    内核管理进程、线程,决定哪个进程、线程使用 CPU,也就是进程调度的能力;管理内存,决定内存的分配和回收,也就是内...

  • 操作系统总览

    操作系统的 操作系统的用户界面 进程管理 处理机调度 存储管理 进程和存储管理示例 windows进程和内存管理 ...

  • 操作系统OS知识点

    OS* 内核态 vs 用户态* 进程 vs 线程* 进程调度算法* 进程间通信的几种方式* O...

  • 操作系统面试复习点

    堆和栈的区别 浮点数在内存中存放方式 内存对齐 进程vs线程 内核态 vs 用户态 进程调度算法 进程间通信的几种...

  • iOS开发:深入理解GCD(一)

    本文参考《iOS与OS X多线程和内存管理》以及其他博客。进程: 进程是资源(CPU、内存等)分配的基本单位,它是...

  • Linux性能优化大师(深入linux)

    1、进程管理:进程调度、中断处理、信号、进程优先级、进程切换、进程状态、进程内存 2、nice 可以改变的范围19...

  • [OS] 进程管理 内存管理

    并发和并行 高并发: 提高了系统的利用率 并行: 多核计算机同时运行多个进程或线程, 提高了性能 进程和线程 进程...

  • 进程与线程

    进程和线程的区别? 1.调度:进程是资源调度单位,线程是CPU调度单位。 2.资源分配:进程间拥有独立的系统内存单...

  • 第三章 处理机调度与死锁

    3.2 作业与作业调度 3.2.3 先来先服务(FCFS)和短作业优先(SJF)调度算法 进程调度 进程调度方式:...

网友评论

      本文标题:常见的嵌入式OS内存管理和进程调度方式

      本文链接:https://www.haomeiwen.com/subject/nilofxtx.html