作者neoneon (紅茶を飲む程度の能力)
看板NCTU-Teacher
標題Fw: [心得] 黃世昆 - 作業系統概論-OS
時間Mon Jul 11 23:45:09 2016
※ [本文轉錄自 neoneon 信箱]
作者:
[email protected] ("愛宕有機奈米負離子貓")
標題: [心得] 黃世昆 - 作業系統概論-OS
時間: Sun Jul 10 08:26:23 2016
作者: shaform (回不去的旅程) 看板: NCTU-Teacher
標題: [心得] 黃世昆 - 作業系統概論-OS
時間: 2011/01/30 Sun 17:07:42
網誌好讀版:
http://wp.me/sJ4X-os
-----------------------------------------------
⊕課名⊕
作業系統概論
▲教授▲
黃世昆
★修課年度★(請加註開課單位 如:大三通識、XX系選修、XX所)
99A-大三資工系必修
£教了什麼£(課程大概內容。或是額外學會了什麼東西。)
課本是 Operating System Concepts, 8th/ Wiley
可以到課程網站看到大概內容(用 guest 登入
http://gpe.acm-icpc.tw/gpe/course/view.php?id=14
◆上課方式◆(投影片、團體討論、老師教學風格)
正如本版文章 #153IALG 所說,我也認為這堂課的價值主要偏實做。
上課主要是用投影片講解,有時老師會講 Linus 的故事。
▼考試作業▼
老師好像蠻喜歡Linux而不是Windows
這學期有三個 online judge 的作業,
越早寫完,寫出題數愈多,分數愈高。
除了把題目解出來外,每份作業還要另外寫一份報告解釋自己的作法並附上相關討論。
第一個是要寫一個小型的 online judge 去 judge 老師的程式,
主要是要透過 fork 執行程式並想辦法取得子程式的資源使用,及輸出入的重導。
OS-0001: An on-line judge system
http://tinyurl.com/4r8xs2b
第二個是一般基礎程設的題目
2009-04: On Disk Scheduling
相對而言比較簡單。
http://tinyurl.com/4645qgj
第三個是用 makecontext/setcontext/
getcontext/swapcontext 實做 thread scheduler
OS-0002: A user thread scheduler
http://tinyurl.com/4vkb932
詳情可見 CS101HW 版 #16J8584
這個作業不太好想,一開始為了搞清楚題意費了不少心思
寫好的第一個版本異常複雜,後來跟同學討論才想出較簡單的寫法
除此之外,還有一些程式作業
有一個是要寫個程式製造 zombie process,
並寫個報告說明什麼是 zombie process
還有一個是要用 C++ 配合 pthread, semaphore 實做 monitor
還有一個是要寫程式印出在 stack, heap 等等的變數及 functions 的記憶體位址
並比較與/proc/xxx/maps 的關係
最後還有兩個 Bonus,
第一個是要用虛擬機 (ex. VirtualBox)
安裝任一 Linux,並且加入自訂 system call 重新編譯核心,
同時要寫一份報告及 demo system call 的使用。
這個可以參考學長在 cs97 上的文章:#16DSLPD
推薦使用 Ubuntu,
無論是安裝,編譯核心,加 system call
網路上都有 step by step 的教學。
(因為版本會一直更新,所以這裡就不附連結了)
安裝起來並不困難,只要一直按下一步就好了,
如果有修過 SA 的,一定會很感動,他跟 FreeBSD 比真是天壤之別。
第二個是要取得 child process 的記憶體使用量的資訊
(實際上為了完成 onilne judge hw1,本來就一定要完成這件事。)
考試方面,一共有三次期中考,老師都會給考古題,雖然會考很多新東西。
第一次考試,是到系計中線上考試,題型主要是選擇、填充等等。
有一些記憶和觀念的問題,也有計算題。
還有一些老師說是常識。
第二次難度加深,還出了一題佔分 25 的程式題
是作業 monitor 的延伸。
第三次改成紙筆考試,考得又更難了一些,計算題比重變得很高,
尤其出了 page replacement 的題目
這題雖然在老師給的考古題就有出現,不過計算起來相當耗時。
看到他的一瞬間,就直覺認為這份考卷要寫完很難。
¥其他¥(是否注重出席率or嚴禁遲到?需要的基礎?)
這學期老師只有點一次名,不過有算分。
以前聽說這堂課有很多 lab, Bonus 可以做
到了期中,就有人已經 8x 了,
還說學期末有六個人 100,
不過這學期盛況不再, Bonus 只剩兩個。
即使如此,作業依然不少,
確實可以學到許多。
像是 user thread scheduler 若不是修這堂課,我大概也不會有機會寫吧。
¢最後想說的話¢
因為很多人作業寫不完的緣故,所以作業的 deadline 一直在延。
我也在期末堆了四份報告和一份 online judge 沒寫,
結果寒假第一個禮拜幾乎都在寫 OS 作業 囧
bonus 佔 10 分
所以作業考試和 bonus 加一加,分數上限是 110 分
學期末還有調分
最後有及格的人的平均是 81。
老師寄來的信,說話總是很客氣。
Bonus 中要裝的 Linux 真的推薦用 Ubuntu,
我自己電腦上的主要作業系統就是灌 Ubuntu,反而 Windows 7 才是裝在虛擬機裡。
感覺最方便的就是,不管是要寫 Java, Perl, Pthyon, Lisp, 還是 Prolog
執行環境都是直接用內建的套件管理員就可以輕鬆裝好。
而且他上面又有很多方便的程式開發工具,
我都用 Vim 寫程式、gcc 編譯、gdb 除錯、git 管理程式碼。
特別是 gdb,介紹給幾個人後,他們都覺得很棒。
推薦大家可以試試看
另外介紹一個工具叫 valgrind 是我上吳育松老師的資料結構時得知的
在除錯用 pthread 寫的 multithreaded 程式時
valgrind 和 gdb 真是配合的天衣無縫
我寫 monitor 作業時,他們真的幫助良多
否則我真不知那些 bugs 要 de 多久。
&References&
[教學]利用VirtualBox 建立虛擬電腦,安裝作業系統
http://sofree.cc/virtualbox-os/
Ubuntu 中文 wiki
http://wiki.ubuntu-tw.org/
Linux Tutorial: POSIX Threads
http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.html
《The Art of Debugging with GDB, DDD, and Eclipse》:978-1593271749
雖然高中時我也看過那種可以看看你的程式碼就一下子找到錯誤的神人,
不過比起培養那樣的能力,用除錯工具來彌補自己的不足似乎比較簡單。
有 gdb 的幫助,寫起程式來真的輕鬆許多。
這本書對 gdb 有詳細的介紹,寫得非常清楚,
而且我也有推薦給浩然,大家可以去借來看。
RMS's gdb Debugger Tutorial
http://www.unknownroad.com/rtfm/gdbtut/gdbtoc.html
《Learning the vi and Vim Editors》:9780596529833
Vim的教學資料:
http://stringr.blogspot.com/2007/03/vim.html
一個好的文字編輯器,可以節省不少寫程式的時間。
Vim 功能強大,個人非常喜歡。
Git - Fast Version Control System
http://git-scm.com/
其實 git 主要是用來管理大型專案的程式碼,
不過我用來管理多個版本的程式作業時感覺也相當不錯。
有興趣的話可以看看。
p.s. 這篇文章裡提到的工具,有些也可在 Windows 上使用,
在資工系計中甚至資訊服務中心的工作站上也都有
大家可以試試看
--
▄▄▄▄▄▄▄ ▄▄▄▄ ▄▄▄▄▄▄ <telnet://bbs.cs.nctu.edu.tw>
█▄▄▄▄█ █ ▄▄▄▄▄█ Player: shaform
▄█▄▄▄▄█ ▄▄▄█ █▄▄▄▄▄ From: 115-80-18-4.taiwanmobile.ne
☆ 次世代BS2 ☆ 可申請個人板 150MB 相簿
http://pic.bs2.to 交大資訊人 250MB
推 philo165:推薦這篇文章 01/30 17:10
推 deepwoody:只能推了 神人 01/30 17:14
喵 unya:神人~只能推了 01/30 19:55
推 six303: 只能推了 01/30 22:20
推 advanding100:這篇文章對沒有修世昆的人也很有幫助耶!! 多謝原po 01/30 22:53
推 soulinlove:推薦這篇文章 01/31 23:36
推 happy8155:推薦這篇文章 02/01 16:33
推 CMturtle:推薦這篇文章 02/05 20:02
推 freeman921:推薦這篇文章 06/15 21:08
作者從 linux1.cs.nctu.edu.tw 修改文章於 2013/01/01 Tue 10:28:03
推 gh40402:推薦這篇文章 06/11 22:08
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 轉錄者: neoneon (106.105.175.48), 07/11/2016 23:45:09