linux操作系统课程设计总结,操作系统课程设计心得+给老师的建议
2. DOS 多線程
寫DOS的時候 ,我在想,這么老的東西干嘛還要用它呢,而且Turbor C 還那么難用。
然而還是要做的,初期寫代碼的時候,發(fā)現(xiàn)老師把四個例程合并到一個C文件里面了,帶來了很嚴重的變量污染,
全局變量放在一起,搞不懂了。
后來萌發(fā)了,寫幾個庫文件的想法,后來發(fā)現(xiàn)這么搞得畫接口成本太高,后來又發(fā)現(xiàn),多個C文件不同同時共享使用一個全局變量會報錯,
而且在Turbor C里面也沒法寫Makefile。后來還是把函數(shù)都寫到一起了,但是是分成四個文件寫的。
自己從底層去實現(xiàn)DOS多線程還是蠻有趣的
3.文件系統(tǒng)
老師說,文件系統(tǒng)是最比較簡單的,后來我信了,但是自己真正做的時候發(fā)現(xiàn)并不是這樣。
操作系統(tǒng)理論并沒有好好學,然后自己做之前花了好多時間,搞懂各個部分的關系定義。
比如元數(shù)據(jù)Metadata,FAT表,Boot Block 引導塊等等,同樣的還是那個問題,初期在看文檔的時候,描述的不是很容易懂。
同時關于各個結構體部分,包括結構體的屬性,覺得老師的命名規(guī)范不好所以就自己重構了,導致,后期寫代碼的時候,
參考學長代碼的時候,遇到很多問題,但是還是覺得自己設計的結構體會好一些。尤其是Open File Table中我把原來的一個整體
拆分成 FCB(File Control Block),FDT(File Descriptor Table)和 isUse字段,這樣在操作和賦值的時候就會方面很多,
自己差不多花了半個月的時間從早上8:00到晚上23:00,寫代碼調BUG,重構了三次,在結構體設計上糾結了大量的時間,
很遺憾自己版本沒跑起來,運行一直有BUG。
另外,Magic Number 魔數(shù)的定義有兩個,一個是系統(tǒng)文件或者其他格式文件起始位或者終止位特定的字符串例如“1010101010”
還有一個定義是出現(xiàn)在編程里面,很突兀的出現(xiàn)的數(shù)字 1024 變量+1 等等,看的一頭霧水,還得想偵探小說一樣,花大量的時間來
搞懂這里為啥要這么寫,總之這是非常不好的編程習慣。 另外如果變量名稱起不好,會給理解功能帶來非常大的阻力,最好的代碼
是把注釋寫到命名中。
PS: 關于模擬系統(tǒng)的尺度,時間存儲處理和其他跟寄存器相關的約束,覺得沒啥必要,畢竟系統(tǒng)也是比較老的類型了,這個并不是重點
4.Linux部分
開始的時候,沒有好好看課程設計指導書,所有的東西差不多都是百度來的,花了好多時間。
一開始其實我最大的困難不是不會寫程序,而是不知道老師要的是啥,這個就比較尷尬了。
然后,初期還有一個大的門檻是,Linux操作系統(tǒng)下面的各個庫函數(shù)的細節(jié),一堆函數(shù)各種參數(shù),曾經(jīng)一度質疑過人生。
后來發(fā)現(xiàn)了Linux操作系統(tǒng)的命名規(guī)律,rcv[recive] ,snd[send],ctl[control]等等,命名簡約,體現(xiàn)了Unix體系的設計理念。
之后System V 和POSIX之間,后來才知道System V 出現(xiàn)時間比較早,POSIX機制是建立在System V之上的,
使用Posix機制會更易懂和易用一些。
另外還有一個收獲是學了Makefile的使用,初步了解了Build構建,這也是自己比較驕傲的地方
給老師的建議
開放基礎代碼.c ,大家每次都是從底層一點一點造輪子,一方面,有能力這么干的人是少數(shù),大部分同學還是以借鑒學長的代碼為主。另一方面,每年大家寫出來的水平都差不多,把大部分精力都放在底層實現(xiàn)去了,但是操作系統(tǒng)里面講的一些調度算法等等反而沒有用上,這樣就有些舍本逐末了。
發(fā)布基礎代碼到Github上面,學生可以提交改進,這樣就可以進化,關于操作系統(tǒng)的代碼會越來越完善,考核方式,有能力的學生,可以以改善代碼,拓展功能為考核條件。
沒有連貫性,課程設計應該粒度變細,拆分成模塊,樣例代碼可以給一部分,其他的需要學生去填,從頭到尾,新的課程設計需要用到之前的課程設計,這樣到學期末的時候,大家都會有一個自己的操作系統(tǒng)的版本
自選課程設計主題,學生可以不可以自己選題,比如在一個嵌入式的板子上面自己寫一個操作系統(tǒng),或者移植操作系統(tǒng)到板子上面
關于團隊合作,團隊合作模式是一種很好的模式,但不是對每個人都試用,如果單純?yōu)榱藞F隊合作而去團隊合作,最終達到的效果,可能不會很好
關于課堂上課,老師像一個慈母,老師關于操作系統(tǒng)上非常奇妙的部分,視若珍寶,恨不得都交給學生,但是學生接受信息是有限的,尤其是沒有相關實踐的體驗,單純理論的灌輸,沒有共鳴,最終能夠領悟的部分其實會很少,學會了一些細節(jié)的計算題其實這不是最重要的。
老師只講一下框架就可以了,細節(jié)需要學生自己搞懂。
上課形式,針對操作系統(tǒng)這門課的特點,比較適合MOOC的形式,老師提前把課程錄好,大家可以比較方便的學習,而且進度可以異步
省下的課時時間放在課程設計上面。這樣不至于學生跟不上老師進度的情況
推薦老師看一下,清華大學在學堂在線上面的操作系統(tǒng)的課程,課程的結構和模塊的設計[需要注冊一下學堂在線的賬號]
http://www.xuetangx.com/courses/course-v1:TsinghuaX+30240243X+2016_T1/courseware/be5b8d4fec0c4c329d19845020bc67b2/39384cfa48f44ee8a99561f69f4db4a5/
Paste_Image.png
寫在最后,老師我很喜歡你,對自己所從事領域喜愛癡迷歡喜的老師是我一直比較敬仰的,當時選課的時候就是沖著你的嚴格來的,雖然最后自己分數(shù)可能不會很高,但是只要收獲滿滿就很滿足了,
總結
以上是生活随笔為你收集整理的linux操作系统课程设计总结,操作系统课程设计心得+给老师的建议的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab subs命令,Matlab
- 下一篇: BZOJ 1069 最大土地面积(旋转卡