一.為何要有操作系統
程序員無法把所有的硬件操作細節都了解到,管理這些硬件并且加以優化使用是非常繁瑣的工作,這個繁瑣的工作就是操作系統來干的,有了他,程序員就從這些繁瑣的工作中解脫了出來,只需要考慮自己的應用軟件的編寫就可以了,應用軟件直接使用操作系統提供的功能來間接使用硬件。
?
二.操作系統的位置
操作系統位于計算機硬件與應用軟件之間,本質也是一個軟件。操作系統由操作系統的內核(運行于內核態,管理硬件資源)以及系統調用(運行于用戶態,為應用程序員寫的應用程序提供系統調用接口)兩部分組成,所以,單純的說操作系統是運行于內核態的,是不準確的。
?
三.操作系統的功能
操作系統應該分成兩部分功能:
①:隱藏了丑陋的硬件調用接口,為應用程序員提供調用硬件資源的更好,更簡單,更清晰的模型(系統調用接口)。應用程序員有了這些接口后,就不用再考慮操作硬件的細節,專心開發自己的應用程序即可。
比如,磁盤資源的抽象是文件系統(C盤,D盤,E盤...下的目錄及文件),有了文件的概念,我們直接打開文件,讀或者寫就可以了,無需關心記錄是否應該使用修正的調頻記錄方式,以及當前電機的狀 態等細節
? 需要指出的是,操作系統的實際客戶是應用程序(應用程序員負責開發應用程序,因而也可以說應用程序員是操作系統的客戶)。應用程序直接與操作系統及其抽象打交道。而最終,用戶則是與應用程序(即用戶接口)打交道,或者是命令行shell或者是圖形界面(比如桌面),它們都只是運行于操作系統之上的應用軟件,并不屬于操作系統。
?
②:將應用程序對硬件資源的競態請求變得有序化,例如:很多應用軟件其實是共享一套計算機硬件,比方說有可能有三個應用程序同時需要申請打印機來輸出內容,那么a程序競爭到了打印機資源就打印,然后可能是b競爭到打印機資源,也可能是c,這就導致了無序,打印機可能打印一段a的內容然后又去打印c...,操作系統的一個功能就是將這種無序變得有序(多路復用)
?
四。操作系統的發展
?第一代計算機(1940~1955):真空管和穿孔卡片
第二代計算機(1955~1965):晶體管和批處理系統
第三代計算機(1965~1980):集成電路芯片和多道程序設計
第四代計算機(1980~至今):個人計算機
五.多道技術
多道技術中的多道指的是多個程序,多道技術的實現是為了解決多個程序競爭或者說共享同一個資源(比如cpu)的有序調度問題,解決方式即多路復用,多路復用分為時間上的復用和空間上的復用。
空間上的復用:將內存分為幾部分,每個部分放入一個程序,這樣,同一時間內存中就有了多道程序。
? ?
時間上的復用:當一個程序在等待I/O時,另一個程序可以使用cpu,如果內存中可以同時存放足夠多的作業,則cpu的利用率可以接近100%,類似于我們小學數學所學的統籌方法。
空間上的復用最大的問題是:程序直接的內存必須分割,這種分割在硬件層面實現,由操作系統控制實現。如果內存彼此不分割,則一個程序可以訪問另外一個程序的內存,
首先喪失的是安全性,比如你的qq程序可以訪問操作系統的內存,這意味著你的qq可以拿到操作系統的所有權限。
其次喪失的是穩定性,某個程序崩潰時有可能把別人的內存也給回收了,比方說把操作系統的內存給回收了,則操作系統崩潰。
?