搭建乙個多任務排程環境

2021-06-21 03:35:29 字數 957 閱讀 1638

目標實現乙個多工環境。

1. 系統可以多工執行;

2. 任務可以模組化程式設計;

3. 沒有排程演算法, 排程點由使用者決定。

作業系統描述的是多工處理。多工的意思是在巨集觀上多個任務是同時在執行的,但是微觀上,任何乙個時刻只有乙個任務在執行。

作業系統有乙個任務控制塊的結構體,裡面有乙個最重要的成員:棧指標,記錄任務在切換時候上下文的位置。先定義

tcb結構體

typedef struct tcb{

stack *

stack_ptr;

}tcb;

宣告建立函式

void task_creat(tcb*tcb, task_entry fun, stack *stack);

建立任務的時候,任務的棧指標應該指向棧底,因為任務被排程執行,總是出棧,棧指標是增長的。

void task_creat(tcb*tcb, task_entry fun, stack *stack)

所以有棧初始化函式

u32 *stack_init(stack *p_stk_base, u32 stk_size, task_entry p_task);

初始化棧指標,把任務位址

(本質是乙個函式

)壓入棧,然後返回棧底指標。

現在main裡建立兩個任務,然後讓

cpu排程。

void main();}

大體框架寫出來後,應該補充什麼的就補充什麼,比如兩個任務的任務控制塊

tcb1、

tcb2、任務函式

fun1、

fun2、開始排程函式

start_schedule。

new_task函式是指要被排程執行的任務,

old_task函式是指要被調換出去停止執行的任務。

void fun1(void *temp)

}void fun2(void *temp);}

搭建乙個MySQL環境

按照菜鳥教程 在windows上使用非安裝版本,mysql community server client 設定mysql客戶端預設字符集 default character set utf8 mysqld 設定3306埠 port 3306 設定mysql的安裝目錄 basedir c web m...

搭建乙個HTTP環境

1.我的電腦找到 路徑 c windows system32 drivers etc 控制面板 網路 更改介面卡,乙太網屬性,3.設定top ipv4屬性 4.快速搭建http伺服器 開啟powershell,輸入python m httpserver 80 6.開啟cmd,輸入python2 m ...

乙個作業多個任務排程例子

classname metastreamsettask description todo 這裡用一句話描述這個類的作用 author caozq date 2018年10月24日 public class metastreamsettask extends singletaskjob private...