操作系統是什么
- 計算機是由若干硬件組成:顯示器、CPU、內存、主板(提供總線)、鍵盤、鼠標、硬盤等。
- 計算的發明是幫助人類完成一些計算與邏輯任務。
- 但是人們不能直接的使用計算機硬件,需要在計算機硬件上包上一層軟件,我們使用這些軟件來完成一些特定的任務,比如進行數學計算、文字排版、聊天、郵件等。
- 操作系統就是計算機硬件與應用軟件之間的一層軟件(或者說是接口),兩個目標:1)方便我們使用硬件;2)高效的使用硬件
- 操作系統管理哪些硬件呢:CPU管理、內存管理、終端管理、磁盤管理、文件管理、網絡管理、電源管理和多CPU管理。
- 網絡管理、電源管理和多核管理屬於高級操作系統的相關知識。在Udacity的高級操作系統中有講授。
操作系統的發展歷史
操作系統是伴隨着計算機的發展而發展的,在任何時期都是以解決當時遇到的實際問題為創新點,大致經歷了如下幾個時期:
- 第一個階段,以上古神機IBM7094為代表的計算上的操作系統,計算機的主要目的是大量計算,所以當時的操作系統是一種批處理操作系統,作業一批一批的被順序執行。輸入輸出都是磁帶。
- 第二個階段,計算機開始進入多個行業,需要完成各種不同的任務,一台計算機需要干更多的事,這時候就出現了多道程序操作系統,因為有的作業是計算任務,有的作業是IO類型的任務,所以可以在作業之間進行切換和調度,讓CPU忙碌起來。典型代表為IBM OS/360。
- 第三個階段,出現了分時操作系統,每個使用計算機的人都可以啟動一個作業,作業之間快速的進行切換,而不是像上個階段那樣只有處理IO時,才會換到下個作業。這個時期的代表是MIT的MULTICS。
- 第四個階段是,隨着小型機的大量普及,出現了Unix和Linux操作系統。從設計上更簡單和靈活。同時Windows操作系統也誕生了,它主要是在用戶界面方面做了很大的創新與改進。
學習操作系統的三個層次
Learn OS concepts by coding them!
學習操作系統根據學習深淺的不同可以分為三個層次:
- 層次一:從應用軟件出發“探到操作系統”,主要講解如何使用操作系統提供的接口如:
printf/fork/open/read
等。 - 層次二:從應用軟件出發“進入操作系統”:了解操作提供的系統接口是如何實現的,可以自己給操作系統增加服務接口,為新的硬件寫驅動程序等。
- 層次三:硬件出發“設計操作系統”,給一個硬件板子,通過查硬件手冊,可以自己配一個操作系統,針對這個板子實現自己的操作系統。
我們要以對照一下Standford的操作系統的學習要求,主要是能完成4個操作系統實驗,這4個實驗也體現了操作系統的真正核心。
- 實驗一: 擴展線現,實現線程調度
- 實驗二: 實現系統調用,將整個接口剝掉,添加
- 實驗三: 實現虛存管理,擴展實現內存管理
- 實驗四: 擴展文件系統,擴展實現一個文件管理