寫個作業系統?好吧,我承認現在的我實在是太無知太自大了。最近看了點東西,我越發感覺os的複雜。
卡在os程序那好長時間,到現在還是一知半解,搞了本《linux核心完全注釋》做參考,結果到了程序又卡住了。中途為徹底搞清楚分頁機制,上網東看西看(正所謂不能在一本書上卡死),順帶摸索了下記憶體管理。單單看memory.c和page.s,**都好理解,但從整個kernel角度放眼一看,真是一葉障目難見泰山,都不知道這些**是在os執行中哪個具體環節用到的。再想想linus,大二就能寫個os kernel,要現在的學生摸清整個os執行環節就夠嗆的。何況作業系統這門課,在一般大學也就是只教個概念和內部名詞。
說到高校教授作業系統這門課,我這幾天有個偶遇。正在理解sleep_on函式時,我上網找點分析文章,看到一學姐分析的很是透徹,再看看她所在論壇,原來是哈工大電腦科學與技術學院課程管理系統上的學生發言,順著這個
,在裡面一頓「亂搜」,我-0-了:哈工大教的os課程,竟然拿linux kernel**為基礎。在課程管理系統上轉轉,發現教授們把課件和相關資料都放在上面,二話沒說,我就乙個勁的download,好在學校網速快,然後都傳到gmail備份。看著李治軍(不認識......)的作業系統ppt,感覺這個老師好用心,更關鍵的是每個os概念講解都對應著linux**,給人清晰簡潔之感。而且我很欣賞他們教這門課的理念,抄點下來:
1 描述作業系統做什麼比是什麼更有意義
2 作業系統就是作業系統,作業系統沒必要定義
3 「learn os concepts by coding them!」(斯坦福 os課)
4 強調實踐! 這是本課程的根本要義!!
5 紙上得來終決淺 絕知此事要躬行
再說說現在的os書,一片片的,涉及概念講的都差不多,但少有用原始碼分析的,給個偽**就不容易了。但是呢,這種書又應該存在,不要多,搞一本隨時參考,讓code和concept相融合,這樣才能搞懂os。