# kktask **Repository Path**: koukou0827/kktask ## Basic Information - **Project Name**: kktask - **Description**: 一个简单的C语言裸机调度器,代码不超过200行,方便各种系统和应用移植,具有位图优先级调度,同时借鉴了ARINC653分区调度思想,并且无中断开销。 - **Primary Language**: C - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2024-04-16 - **Last Updated**: 2024-05-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # kktask #### 介绍 一个简单的C语言裸机调度器,代码不超过200行,具有位图优先级调度,同时借鉴了ARINC653分区调度思想,并且无中断开销。 #### 软件说明 1个c文件和一个h文件,方便移植到各个系统中。 ``` 调度器运行的原理是这样的: ┌──────────┐ ┌──────────┐ │ idle task│ │ idle task│ └─────┬────┘ └─────┬────┘ │ │ │ │ start elapsed magin │ start elapsed magin │ start elapsed magin ┌───────────────────┐ │ ┌───────────────────┐ │ ┌───────────────────┐ │ task0 │ │ │ task1 │ │ │ task2 │ └───────────────────┘ │ └───────────────────┘ │ └───────────────────┘ ▼ ▼ ┌────────────────────────────────────────────────────────────────────────────────────┐ timebase │ │ │ │ │ │ ◄───────────────────────────── interval ──────────────────────────────────► ``` **所以各个任务的参数也都大致清楚了,代码中也没有多余的注释。同时调度器没有对各种异常情况做保护,因此需要任务按照预定的时间运行,idle task可以不要,但是开启后可以看到调度器的空闲比例。当前规划了2种异常状态,1是任务消耗时间进入magin区域,2是任务消耗时间超过magin区域,且不会被清除,可以读status获取这个任务执行情况。** #### 使用说明 以demo.c的代码为例,以秒为单位,30s作为一个任务周期,包含了3个任务,以及1个空闲任务,在linux中,输入命令如下: ``` gcc demo.c kktask.c -I . ``` ``` ./a.out ``` 终端打印如下: ``` start 0 1 1 3 3 3 · · · · · · · · 0 · · · · · · · 1 1 · · · · · 3 3 ``` #### 开源声明 完全开源,任意fork,欢迎提issue和mr。