目標實現乙個多工環境。
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...