what's the 操作系統? 首先,我們要知道,為什麼要有操作系統。現代的電腦系統主要是由一個或者多個處理器,主存、硬碟、鍵盤、滑鼠、顯示器、印表機、網路介面及其他輸入輸出設備組成。現代電腦的組成部分極其複雜,我們不可能全部瞭解完再去寫開發,所以就需要用到操作系統。程式員只需要做自己的本職開 ...
what's the 操作系統?
首先,我們要知道,為什麼要有操作系統。現代的電腦系統主要是由一個或者多個處理器,主存、硬碟、鍵盤、滑鼠、顯示器、印表機、網路介面及其他輸入輸出設備組成。現代電腦的組成部分極其複雜,我們不可能全部瞭解完再去寫開發,所以就需要用到操作系統。程式員只需要做自己的本職開發工作,應用軟體直接使用操作系統提供的功能來間接使用硬體。
操作系統位於電腦硬體與應用軟體之間,本質也是一個軟體。操作系統由操作系統的內核(運行於內核態,管理硬體資源)以及系統調用(運行於用戶態,為應用程式員寫的應用程式提供系統調用介面)兩部分組成,所以,單純的說操作系統是運行於內核態的話,是不准確的。
操作系統的功能主要有兩個,一個是隱藏了醜陋的硬體調用介面,為應用程式員提供調用硬體資源的更好,更簡單,更清晰的模型(系統調用介面)。應用程式員有了這些介面後,就不用再考慮操作硬體的細節,專心開發自己的應用程式即可。比如,磁碟資源的抽象是文件系統(C盤,D盤,E盤...下的目錄及文件),有了文件的概念,我們直接打開文件,讀或者寫就可以了,無需關心記錄是否應該使用修正的調頻記錄方式,以及當前電機的狀態等細節。操作系統的實際客戶是應用程式(應用程式員負責開發應用程式,因而也可以說應用程式員是操作系統的客戶)。另一個是將應用程式對硬體資源的競態請求變得有序化。
操作系統的發展。(瞭解即可,記住也並沒有什麼卵用。。)
第一代電腦(1940~1955):真空管和穿孔卡片 特點:沒有操作系統的概念,所有的程式設計都是直接操控硬體。優點:程式員在申請的時間段內獨享整個資源,可以即時地調試自己的程式(有bug可以立刻處理)。缺點:浪費電腦資源,一個時間段內只有一個人用。
第二代電腦(1955~1965):晶體管和批處理系統 特點:有了操作系統的概念,有了程式設計語言。優點:批量處理,節約時間。缺點:整個流程需要人參與控制,計算的過程仍然是順序計算,程式員原來獨享一段時間的電腦,現在必須被統一規划到一批作業中,等待結果和重新調試的過程都需要等同批次的其他程式都運作完才可以(這極大的影響了程式的開發效率,無法及時調試程式)。
第三代電腦(1965~1980):集成電路晶元和多道程式設計 第三代電腦的操作系統廣泛應用了第二代電腦的操作系統沒有的關鍵技術——多道技術(需要記住的知識)。cpu在執行一個任務的過程中,若需要操作硬碟,則發送操作硬碟的指令,指令一旦發出,硬碟上的機械手臂滑動讀取數據到記憶體中,這一段時間,cpu需要等待,時間可能很短,但對於cpu來說已經很長很長,長到可以讓cpu做很多其他的任務,如果我們讓cpu在這段時間內切換到去做其他的任務,這樣cpu不就充分利用了嗎。這正是多道技術產生的技術背景。多道技術中的多道指的是多個程式,多道技術的實現是為瞭解決多個程式競爭或者說共用同一個資源(比如cpu)的有序調度問題,解決方式即多路復用,多路復用分為時間上的復用和空間上的復用。空間上的復用:將記憶體分為幾部分,每個部分放入一個程式,這樣,同一時間記憶體中就有了多道程式。時間上的復用:當一個程式在等待I/O時,另一個程式可以使用cpu,如果記憶體中可以同時存放足夠多的作業,則cpu的利用率可以接近100%。空間上的復用最大的問題是:程式之間的記憶體必須分割,這種分割需要在硬體層面實現,由操作系統控制。如果記憶體彼此不分割,則一個程式可以訪問另外一個程式的記憶體。為瞭解決這個問題,第三代電腦廣泛採用了必須的保護硬體(程式之間的記憶體彼此隔離)。
第四代電腦(1980~至今):個人電腦
總結:
操作系統是有古人類寫的為現代人類提供方便的軟體,要寫出一份完善的操作系統是一件非常人能做到的事。
操作系統的作用是使我們在不瞭解硬體為何物的情況下能方便的對硬體進行操控,有了操作系統應用程式員就不用再考慮操作硬體的細節,專心開發自己的應用程式即可,用戶使用電腦進行日常操作也顯得邊界無疑。重點是,操作系統能將應用程式對硬體資源的競態請求變得有序化,即多路復用。