併行計算
編寫併行程式碼並不容易,特別是使用執行緒共享記憶體和執行緒鎖。然而,也許在未來職業生涯的某些時候會使用到併行程式。在OS課程以外的課程裡學習併行問題已經成爲了一種增長的趨勢,但即便如此,作業系統仍然是首次瞭解執行緒,競爭,死鎖等等重要概念的課程。
資源管理
硬體層次上的資源通常是專用的。作業系統提供了這些資源的種類,它們可以是虛擬的或者是仲裁的。允許多使用者訪問專用物理資源是一個很基本的策略並被運用到很多使用者級別的程式中。通過詳細地學習這些內容,你能學會能夠在許多其他場合重用的模式。
效能分析和衝突解決
正如「為什麼#*$是我的機器分頁?」。當資源被分享時,衝突通常也會隨之而來。衝突問題可以使用多種方式來解決,比如使用佇列,合理共享,或者使用優先順序。在某些情況下,比如CPU排程,沒有單一技術解決方案並且最後的解決方案是一些古怪的混合技術。有時,最令人感興趣的是找出導致問題出現的主要原因是哪一類衝突。
隱藏複雜性的介面
一個具有良好設計的介面是一個美妙的東西。它更美妙的地方體現在把一個討厭的低層次介面轉換為一個實用高效的高層次抽象介面。
使用者模式
從使用者模式看,很容易發現OS是一個神奇的東西,它提供了流暢的多工處理,高效擦儲存管理等。它會出現藍屏,系統顛簸,安全問題和排程異常。對於一般使用者來說,這個模式是好的。但在另一方面,如果你想去證明你是一個電腦科學家,你需要知道這些問題的幕後細節。你將會從那裏發現什麼?很多時候,這看起來都是一些令人憂愁的集合,比如單調的連結串列,狡猾的啓發式資源和維護不當的裝置驅動程式。
處理大型軟體
陷入別人幾百萬行程式碼庫中去是一個噩夢。錯誤零散的文件,殘舊和廣泛的介面,糟糕的互動,和費解的錯誤資訊。不過,你不能因為這些糟糕的問題就經常重新開始。如果能夠制定一個系統的方法去學習用程式碼修復大軟體的相關部分,那麼以後的生活就會輕鬆很多。
計算機系統設計
設計任何的工程系統,包括軟件系統,都是一個權衡的過程。是要側重於可靠性?效能?消耗還是維護性?因為作業系統是很龐大的,效能至關重要的程式,它一般都要維護幾十年,所以它們是學習這類權衡的很好的地方。
總結
作業系統從電腦一出現就有了,過了4、50年,電腦持續的發展,有了很大的改變,但是作業系統仍然在那裏,雖然系統設計的本身有很大的改變,但是核心的概念不會有太大的改變。所以只要理解了作業系統核心的概念,未來不論發生怎樣的改變,都能夠立即的反應,並理解其改變的用途。