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