系統軟體與作業系統課程的連結
TR411 14:10 ~ 15:00 Mandarin在台灣系統軟體的標準教科書是Advanced Programming in the UNIX Environment(APUE),這本書十分具有代表性,但對於熟悉Windows的學生而言,APUE太強調於跨平台,這造成讀者的混淆。其次作業系統的某些特性例如:Linux的inotify、signalfd等,不屬於UNIX的一部分,導致無法介紹。
在系統程式設計方面,使用自編教材的最大好處在於:
- Linux已經是UNIX-like的主流。
- 暫時忽略跨平台可以降低UNIX程式設計的難度。
- 可以介紹先進的功能,以inotify來說,dropbox即以此為基礎進行設計。
課程投影片在:http://tinyurl.com/antikvaAgloOS
在作業系統方面,主要採用Operating System Concepts這本教科書。這本教科書已經多年未「真正的」更新,磁碟排程(對seek time做優化等)早在40年前作業系統已經無法得知磁碟的佈局,因此無法進行優化。在deadlock部分,大篇幅的介紹banker’s algorithm,但這個演算法第一次及最後一次出現都是40年前的THE。工作排程方面(task scheduling)雖然書中所說的multi-level feedback queue可以對I/O intensive task優化,但並未具體說明。
在這一個部分,使用自編教材的最大好處在於讓學生了解到目前Linux如何處理這些問題,並且能使用debugger對作業系統進行單步追蹤,搭配上學期的系統程式設計,更能體會作業系統與應用程式的互動。例如:signal與system call之間的影響(如:restart等)。可以於課堂中介紹blocking I/O與signal的asynchronous event的交互關係,更進一步的帶同學了解interruptible及uninterruptible的意涵。
課程投影片在:http://tinyurl.com/polarBearSP
數位教材在:http://tinyurl.com/penguinSP
Collaborative note: https://hackmd.io/@coscup/SyjWJQxNB