第一章
文件系統的層次:字節流=>字符流
高級語言程序–轉換並編譯爲–>目標代碼–鏈接爲–>可執行程序–裝載到–>內存
注意:可執行程序不是機器語言,而是擴展的機器語言。
操作系統的演進:
- 卡片時代:裝入程序,由操作員手動裝入程序。後來操作員與程序員分開,使得程序可以模塊化使用,提高了運行效率。但是儘管這樣,而且後來紙帶被磁帶取代,仍然存在一個問題,就是機械輸入(卡片讀取)與電子速度(計算機的速度)嚴重不匹配。
- 後來,磁盤出現,解決了機械與電子速度不匹配的問題。與螺旋式儲存數據的光盤不同,磁盤有很多盤片,每個盤片上的數據呈同心圓分佈,這樣就是一個三維的儲存結構,使得讀取速度大大增加。
- 再後來引進了彙編語言與作業控制語言,才逐漸出現了操作系統的概念。
操作系統是一個巨大工程
- 軟件工程嚴格來說不是一門科學,而是一種工程,是一種“僞科學”。因爲一個軟件開發的過程有很多的不確定性。
- 可以說最早對軟件工程提出要求的就是操作系統開發。最早可以追溯到上個世紀五十年代(?存疑)美國國防部要求MIT開發一款操作系統,然而經過很多時間花費了很多物力財力,結果證明:個人開發操作系統是一件不可能完成的事情。正是因爲操作系統作爲一個巨大的工程,要求軟件工程師用工程化的管理方式實現軟件的開發、運行和維護,美國的大學逐漸開始開設軟件工程專業。
- 對軟件工程提出進一步要求的是軟件管理系統。美國通用汽車公司開發信息系統的時候發現,作爲一個軟件管理系統,更重要的是客戶的需求,而不是個人的開發能力。所以從此軟件工程不再侷限於研究工程的問題,而更多的開始專注於需求的確定與開發的問題。
操作系統的兩大功能
操作系統兩大功能:資源管理、控制程序執行。
資源分配
設備的分配方式有兩種,一是“獨佔”,二是“併發”。
資源的分配方式有三種:靜態方式(例如:輪詢,使用率低)、動態方式(需要且空閒時分配資源,但是對相同資源的需要與佔有可能產生死鎖)、資源搶佔方式(優先級更高的時候直接搶奪資源,但是被搶佔資源的資源需要回滾,比較複雜)
控制程序執行
多道程序的方式可以解決與CPU電子速度不匹配的問題——程序流水線方式
於是我們用這樣的操作系統來解決這四大問題:
問題 | 解決 |
---|---|
如何使用資源 | 服務例程 |
如何複用CPU | 進程調度 |
如何使得CPU與I/O更好並行 | 設備控制器與通道 |
如何讓出CPU | 中斷機制 |
什麼是“陷入”?有一些行爲,例如中斷,普通權限程序不能進行,只能交由操作系統這一“超級程序”執行,操作系統對普通程序具有生殺予奪的權利,那麼這樣的過程我們就叫做“陷入”。
本博客同步發於我的個人主頁:www.frostwing98.com