本文轉貼自PTT
台灣最大的本土社群網站
分享這篇文章到Facebook、Google+或噗浪!


 作者  odie1111 (阿飛西雅好好聽)                               看板  graduate 
 標題  Re: [心得] 資工所準備心得之二                                          
 時間  Sat Mar 28 13:19:44 2009                                               
───────────────────────────────────────

OS:
書單:《Operating System Principle》,7/e (恐龍本的亞洲學生版)

我想說一下關於老師的事。
有上過老師的課的人都知道他很忙,白天要上班,晚上要教課。
雖然他收了補習班的錢當了老師,是應該要敬業一點,
但從另一方面想,也要很感謝他願意花這麼多的時間來教課,
畢竟以常考的基本題而言,他教得真的很不錯!

OS這種科目,我覺得因為我們都不是系統設計者,
只能從課本的內容去推敲某些實作的細節背後的原理。
你說老師上課講的,甚至是書本寫的那些細微的概念,
就真的是我們日常用的作業系統設計的方式嗎?倒也未必。
所以我覺得某些題目,尤其是交大、台大電機CS近來很愛考的選擇題,
除了出題老師之外,沒有人知道所謂的「正確答案」是什麼,
拿去問學校教OS的教授,他都不一定答得出來了,更何況是補習班的老師。

當然了,我們是繳錢上課的學生,當然有權利要求老師要解答我們的疑問,
隨時update考情趨勢,但另一方面,大家都已經是要考研究所的學生了,
應該不是用考大學時上補習班的心態在補習,
要求老師什麼都要會,什麼問題都應該給予解答。
我當初會去補習的主要原因是因為這些科目我都沒有碰過,
去補習可以減少自己摸索的時間。
老師只是幫你掌握出題重點方向,真正要致勝的關鍵,
還是在於你自己對於那些老師沒講考試卻會考的部分,
願不願意自己去找出答案。

就拿台大OS來說,有做近幾年考古題的人都知道分散式系統一定考,
而且考得很重,50分中至少會考10分。但洪老師就是不教,你會怎麼辦?放掉?
恐龍14到16章是分散式系統,只要有念就會贏人家5分到10分,
但是有多少人真的會去念?
台大電機CS去年和前年都考的atomic transaction,
鼎x的題庫書連兩年都解錯,
但它就在恐龍第六章的後面,內容只有幾頁,稍微念一下就會了,
又有多少人會花時間去看?

我的意思是,
補習班老師只是用他的經驗帶你念書,
但真正有心要考好學校的人,一定要靠自己。
老師沒教卻會考的東西,就是贏人家的關鍵啦。

接下來分享一下我準備的方式,
我是以恐龍為主,老師上課筆記為輔,
所以我腦海裡的章節順序都是恐龍的順序而不是老師的筆記,
一到二概論,三到五process management,六同步七死結,
八到十memory,十一到十三I/O和Disk,十四到十六分散式系統。
至於題庫書或老師的書,我覺得是沒有什麼用處。
恐龍一到十六章,除了每一章最後的Operating System Example外,幾乎都念過了。
我會在每一段旁邊的空白寫一下這一段的重點,
這個重點其實就差不多是老師上課的重點。
然後上完課後我會拿筆記去對恐龍。
因為老師上課都是憑記憶寫板書的,有些小地方或用詞可能會跟原文有些差異,
在對照的同時就可以順便更正一下筆記的內容。
不是說老師講錯,只是我比較喜歡用和課本一致的詞彙。
差不多在秋季班的時候,我有按照恐龍的內容,針對我認為比較重要的幾章,
再做一次重點筆記,每一章差不多一到兩頁A4。
原本是只有念到I/O,不過做考古題時發現台大會考分散式,
所以差不多到考台大前一個月時才開始念分散式。
至於題目,我是在寫考古題才開始做的,但只要考古題有做足,
解題的感覺就差不多了。老師常說要注重包裝、美觀,
但我覺得那其實不太重要。近年來大家比較喜歡考選擇、是非,
非選擇是非的題型多集中在CPU排班、死結、disk移動距離、memory page table
一類的計算,或者是解釋名詞,比較題型考的比較少,
重點還是在你能不能精簡的用對關鍵字把定義寫出來。

下面想提供一下各個主題我的心得。

第一章主要是各種不同系統的比較,不過現在考得很少,
第二章的重點應該是system call,
process的部分,主要還是弄清process、user thread、kernel thread,
還有各種排班。
交大近幾年來很愛考排班,尤其是不同屬性的process在不同排班方式中的表現,
我覺得這好像沒有一定的標準答案,可能就是在考古題做到的時候稍微思考一下,
或者是去對照恐龍的文字推敲一下。

同步好像是大家公認OS中最難的部分,老師上課也上最久,
但是從恐龍和考古題中可以發現這部分已經不考那麼多,也不那麼難了。
像老師上課講的恐龍獨有的critical region,恐龍7版早就拿掉了,
所以我從來沒有念。此外老師也補充一些其他同步問題及演算法,
但看一下考古題,會發現近年考的只有三種,
第一種是兩個process的同步,就是有flag和turn的那一個演算法的變形,
第二種是semaphore的製作,就是wait和signal的題型,
其中最會考的是第一型的reader/writer問題。
第三種就是monitor解哲學家晚餐問題。
我自己是有把比較重要的演算法寫在一張紙上,放在皮夾,
坐捷運無聊就拿出來看一看。
另外這一章最後面老師上課沒教的atomic transaction那一段最好看一下。

死結的話就是四個必要條件,三種處理策略和那幾個演算法。

memory的部分,建議搭配計組一起念,這兩個部分幾乎是完全一樣的,
只是計組在cache著磨比較多,
OS在virtual memory和分頁表replacement著磨較多,2nd chance這幾年很愛考,
但是大家都不太會算。
兩邊搭配著念不管是考在計組或考在OS都不用怕。
另外今年台大電機CS和台科大都有考buddy和slab,這也是老師上課沒教過的東西。

I/O和Disk老師講的比較少,但有些重要的概念老師是放在第一章講,
像是spooling, buffering, caching的概念,這個今年台科大有考解釋名詞。
其他像是移動距離的計算,那個是大家都一定要會的題目,
還有polling,interrupt, DMA,計組也有提到,可見非常重要。
RAID部分計組講的很清楚,去看計組就好了。

分散式系統主要都考在同步相關的問題及coordinator election的演算法,
今年台大是多考了死結的部分。
其他的部分就是寫考古題有看見的話就翻一下,像清大考過worm,
交大考過DMA和I/O request的步驟,這個在課本都有圖表可以參考。

拉里拉雜寫太多了,希望對之後要考的人有一點助益。

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.84.235.217
推 RainyBreeze:幫推~                                               03/28 13:26
推 dinokong:幫推! 很詳細                                          03/28 13:46
推 PALAPO:推 很詳細 真的是很重點                                   03/28 13:53
推 xingye:幫推,很詳細                                             03/28 14:06
推 heshe:真正的心得                                                03/28 14:09
推 nowar100:推                                                     03/28 14:10
推 clouddeep:幫推一個!                                            03/28 15:37
推 fbiwbi:強 光一顆os就寫一偏文章了                                03/28 16:32
推 serpent:受益良多!感謝!才發現自己準備的真不足/_\               03/28 17:46


----本文使用PCMAN+BBI轉貼----


※ 新版PCMAN開放測試中,新增功能:    



用PCMAN+BBI連回PTT原文