實現自己的小的OS

2021-09-24 09:12:57 字數 1388 閱讀 5440

實現了一款在mcu(lpc1768)中執行的os,此os實現了硬實時和軟實時。

硬實時:當tick到時時立即執行,此任務一定要是短小的,執行時間不能超過tick間隔時間。

軟實時:當tick到時時把可以執行的標誌設定,程式什麼時候執行,在主迴圈中決定,主迴圈中會做一些其他的事情。

定義乙個 任務結構體

typedef struct stask;
同時定義硬實時和軟實時倉庫

static stask sch_tasks[sch_max_tasks];						        //任務陣列

static stask sch_hard_tasks[sch_max_hard_tasks]; //硬實時任務陣列

在初始化函式中初始化乙個tick,選用 timer0,定時週期10ms

void sch_init(void)

定時器執行函式邏輯如下:

1. 輪訓硬實時陣列,當 delay == 0,則執行任務,並且delay = period,當 delay != 0,則 delay -= 1

2. 輪訓軟實時陣列,當 delay == 0,則設定runme = 1,並且delay = period,當 delay != 0,則 delay -= 1

執行緒結構體:

typedef struct __st_thread_

* pthread, thread;

建立函式:

int pthread_create(pthread_t* tidp,const pthread_attr_t *restrict_attr,void*(*start_rtn)(void*),void * arg, const int period)

執行緒建立的時候,根據period的正負決定是硬實時還是軟實時,負數標識硬實時

if(period >= 0)

return sch_add_task(start_rtn, arg, 0, period);

else

return sch_add_hard_task(start_rtn, arg, 0, -period);

硬實時和軟實時只是任務數量的不同,

建立的核心思路就是把任務要執行的函式,函式中的引數,函式執行的週期等資訊傳遞給結構體。

main()
pthread_run 函式中實現軟實時的函式的呼叫,runme標識要呼叫多少次。

unsigned char index;

for(index = 0; index < sch_max_tasks; index++)

}}

自己寫的用java實現的小爬蟲

1.獲取網頁源 public static string gethtmlresourcebyurl string url,string encoding catch exception e 隨手關閉流 finally catch ioexception e 將buffer stringbuffer型...

檔案使用磁碟的實現 OS

通過檔案使用磁碟,如下 在fs read write.c中 int sys write int fd,const char buf,int count fd為檔案索引,buf為緩衝區,count表示要處理的字串長度 我們理一下file write的工作過程 file write inode,file...

自己的小碎念

現在是2019年6月26日下午15 11,我打算寫一篇日記,記下這一天的經過。早晨七點,山雞瘋狂敲門,嚇得我擦點猝死,我們宿舍都起床準備參加畢業典禮,像往常一樣洗漱,聊天,然後去了禮堂門口,我們在那裡拿著發的歌詞,也沒多看幾眼,和朋友們閒聊著,說著要出的遊戲啊什麼的,到了七點半左右我們進場了,門口是...