?? note.txt
字號:
說明:
這是一個最簡單最輕量的操作系統,連同測試函數一起才70個字節.
關于是否寫這篇文章,我思考過很久,理由是:
1.大部分人(包括我在內)都認為像89C51這樣的單片機是不適合使用操作系統的.
2.寫了十年51程序(當然不是十年都在寫,我偶爾寫寫,業余愛好)也未用操作系統寫過應用程序.
我一直使用狀態機的機制來實現多任務,用熟了也其實也很簡單---先將任務函數按單任務方式寫好,然后分解開,再將它們扔到一個case-switch中,完事了.
簡單嗎?哈哈,其實麻煩得要死,因為代碼不直觀了,經常把一個函數拆得七零八落扔得到處都是,實在是有點審美疲勞.
相比之下,在OS下多任務機制的支持下,代碼是以直觀的方式組織的,輕松而優雅,相信這對很多人來說,誘惑仍是巨大的.
于是乎,在痛苦的狀態機式多任務機方式中"掙扎"多年后,我終于痛下決心將操作系統搬進了51.
很多人會問,成熟的多任務操作系統一大堆,你費那牛勁DIY有必要嗎?
其實理由很簡單:
1.任務切換開銷太大.拿TINY51來說,切換時要保存一大堆的上下文,切換最短周期長達70(單位忘了是周期還是微秒),這明顯限制了它的應用----對于很多應用來說是無法忍受的.
2.代碼不透明.要么是閉源的,要么是匯編寫的.對于"專業人士"們來說,這本不是什么問題,但是可苦了一堆受好者們---那一堆亂七八糟的東西太占屏幕,看著上面忘了下面,還是C的"壓縮能力"強.
3.彈性太小.很多時候只需要一小部分功能,卻要附帶一堆機制.這就好比我想買個包子,而老板給出的條件是,只收你包子錢,但你同時得吃下一只雞.我暈了,撐啊...
又有人會說了,哈哈,那你寫一個出來放在網上給大家下載,就沒有以上問題了嗎?
嘿嘿,你說對了,不管是張三寫的李四寫的,都有這些問題,所以我的目的并不是提供一個OS給大家用,而是讓大家知道如何在短時間內(我目前是5分鐘)根據實際需求現場寫一個輕量級多任務操作系統出來.
最后要說的是,其實要寫一個簡單的操作系統并不難,難的是51那可憐有限的資源無法滿足你對完美的追求.
要知道人的欲望是無止盡的,當你擁有了多任務并行后,你會希望擁有更多,你會希望它支持睡眠機制,你會希望它支持任務的動態換入換出,你會希望它支持消息機制,你甚至會在擁有了這一些之會提出"要是能再支持內存分配就更完美了".我暈,我日,人的欲望真是魔鬼.
其實這一切都可以實現,基本硬件需求是X52(51因內存太少只能實現多任務),問題僅在于,你愿意想花多少時間來建造它.即使是傻子也不會花上比構建應用系統本身還多的時間去構造一個操作系統.
請記住:適可而止,夠用就好,simple is more.
如果你對這個操作系統有興趣,或希望得到更強大的版本,更多信息請去以下網址了解
http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=1398508&bbs_page_no=1&search_mode=3&search_text=rainyss&bbs_id=9999
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -