1、手工操作 —— 穿孔卡片
1946年第一臺計算機誕生--20世紀50年代中期,計算機作業還在采用手工操作方式,此時還沒有作業系統的概念,
特點:
(1)用戶獨占全機,不會出現因資源已被其他用戶占用而等待的現象,但資源的利用率低,
(2)CPU 等待手工操作,CPU的利用不充分,
2、批處理 —— 磁帶存盤和批處理系統
批處理系統:加載在計算機上的一個系統軟體,在它的控制下,計算機能夠自動地、成批地處理一個或多個用戶的作業(這作業包括程式、資料和命令),
聯機批處理系統 ——> 脫機批處理系統
特點:
? (1)它極大緩解了人機矛盾及主機與外設的矛盾,
(2)每次主機記憶體中僅存放一道作業,每當它運行期間發出輸入/輸出(I/O)請求后,高速的CPU便處于等待低速的I/O完成狀態,致使CPU空閑,
3、多道程式系統
第一次提出了多個程式可以同時在計算機中被計算
? ·遇到IO就讓出CPU
? ·把CPU讓給其他程式,讓其他程式能夠使用CPU
? ·CPU的讓出這件事,占用時間
? ·兩個程式之間來回在CPU上切換,不會發生混亂
? 每個程式有獨立的記憶體空間
? 每個程式在切換的前后會把當前程式的狀態記錄下來
多道程式設計技術,就是指允許多個程式同時進入記憶體并運行,即同時把多個程式放入記憶體,并允許它們交替在CPU中運行,它們共享系統中的各種硬、軟體資源,當一道程式因I/O請求而暫停運行時,CPU便立即轉去運行另一道程式,
多道程式系統的出現,標志著作業系統漸趨成熟的階段,先后出現了作業調度管理、處理機管理、存盤器管理、外部設備管理、檔案系統管理等功能,
由于多個程式同時在計算機中運行,開始有了空間隔離的概念,只有記憶體空間的隔離,才能讓資料更加安全、穩定,
除了空間隔離之外,多道技識訓第一次體現了時空復用的特點,遇到IO操作就切換程式,使得cpu的利用率提高了,計算機的作業效率也隨之提高,
特點:
(1)多道:系統內可同時容納多個作業,這些作業放在外存中,組成一個后備佇列,系統按一定的調度原則每次從后備作業佇列中選取一個或多個作業進入記憶體運行,運行作業結束、退出運行和后備作業進入運行均由系統自動實作,從而在系統中形成一個自動轉接的、連續的作業流,
(2)成批:在系統運行程序中,不允許用戶與其作業發生互動作用,即:作業一旦進入系統,用戶就不能直接干預其作業的運行,
(3)不提供人機互動能力,給用戶使用計算機帶來不便,雖然用戶獨占全機資源,并且直接控制程式的運行,可以隨時了解程式運行情況,但這種作業方式因獨占全機造成資源效率極低,
CPU計算和不計算(IO)操作:
IO操作(網路操作 \ 檔案操作): 輸入輸出 :相對記憶體
阻塞:sleep \ input \ recv \ accept \ recvfrom 是不需要CPU參與的
對檔案的讀取:對硬碟的操作一次讀取相當于CPU執行90w條代碼
Input :向記憶體輸入資料
讀檔案\ load \ input \ recv \ recvfrom \ accept \ connect \ close
Ouput :從記憶體中輸出資料
寫檔案\ dump \ print \ send \ sendto \ accept \ connect \ close
所有的IO操作本質都是檔案操作:
input \ print : input是寫入檔案,然后通過讀取檔案把輸入的內容加載到記憶體
print是直接寫入檔案,然后通過檔案展示給用戶看
socket中的互動方法:都是檔案操作
send : 是向快取檔案中寫
recv :是從快取檔案中讀
也就是說只要涉及到IO操作,至少就是一個0.009s == 就是CPU執行90w條python代碼的時間
# 作業系統每秒500000000條指令,一般情況下一句python代碼被翻譯為5條指令
0.009s
500000000條指令/s /5 = 100000000條python代碼/s
0.009s * 100000000 = 900000條python代碼
import dis # dis 模塊可以查看python代碼被翻譯為的作業系統指令
a = 1
def func():
global a
a+=1
dis.dis(func)
4、分時系統
分時技術:把處理機的運行時間分成很短的時間片,按時間片輪流把處理機分配給各聯機作業使用,
若某個作業在分配給它的時間片內不能完成其計算,則該作業暫時中斷,把處理機讓給另一作業使用,等待下一輪時再繼續其運行,由于計算機速度很快,作業運行輪轉得很快,給每個用戶的印象是,好象他獨占了一臺計算機,而每個用戶可以通過自己的終端向系統發出各種操作控制命令,在充分的人機互動情況下,完成作業的運行,
特點:
(1)多路性,若干個用戶同時使用一臺計算機,微觀上看是各用戶輪流使用計算機;宏觀上看是各用戶并行作業,
(2)互動性,用戶可根據系統對請求的回應結果,進一步向系統提出新的請求,這種能使用戶與系統進行人機對話的作業方式,明顯地有別于批處理系統,因而,分時系統又被稱為互動式系統,
(3)獨立性,用戶之間可以相互獨立操作,互不干擾,系統保證各用戶程式運行的完整性,不會發生相互混淆或破壞現象,
(4)及時性,系統可對用戶的輸入及時作出回應,分時系統性能的主要指標之一是回應時間,它是指:從終端發出命令到系統予以應答所需的時間,
時間片輪轉演算法:
? 時間片到了才讓出CPU
? CPU的讓出事件占用時間
? 減低作業效率,提高了用戶體驗
5、實時系統
雖然多道批處理系統和分時系統能獲得較令人滿意的資源利用率和系統回應時間,但卻不能滿足實時控制與實時資訊處理兩個應用領域的需求,于是就產生了實時系統,即系統能夠及時回應隨機發生的外部事件,并在嚴格的時間范圍內完成對該事件的處理,
特點:
(1)及時回應,每一個資訊接收、分析處理和發送的程序必須在嚴格的時間限制內完成,
(2)高可靠性,需采取冗余措施,雙機系統前后臺作業,也包括必要的保密措施等,
6、通用作業系統
作業系統的三種基本型別:多道批處理系統、分時系統、實時系統,
通用作業系統:具有多種型別操作特征的作業系統,可以同時兼有多道批處理、分時、實時處理的功能,或其中兩種以上的功能,
7、作業系統的進一步發展
個人計算機作業系統:個人計算機上的作業系統是聯機互動的單用戶作業系統,它提供的聯機互動功能與通用分時系統提供的功能很相似,由于是個人專用,因此一些功能會簡單一些,
網路作業系統:在原來各自計算機作業系統上,按照網路體系結構的各個協議標準增加網路管理模塊,其中包括:通信、資源共享、系統安全和各種網路應用服務,
分布式作業系統:
? (1)分布式系統要求一個統一的作業系統,實作系統操作的統一性,
(2)分布式作業系統管理分布式系統中的所有資源,它負責全系統的資源分配和調度、任務劃分、資訊傳輸和控制協調作業,并為用戶提供一個統一的界面,
(3)用戶通過這一界面,實作所需要的操作和使用系統資源,至于操作定在哪一臺計算機上執行,或使用哪臺計算機的資源,則是作業系統完成的,用戶不必知道,此謂:系統的透明性,
(4)分布式系統更強調分布式計算和處理,因此對于多機合作和系統重構、堅強性和容錯能力有更高的要求,希望系統有:更短的回應時間、高吞吐量和高可靠性,
8、作業系統的作用
現代的計算機系統主要是由一個或者多個處理器,主存,硬碟,鍵盤,滑鼠,顯示幕,列印機,網路介面及其他輸入輸出設備組成,
一般而言,現代計算機系統是一個復雜的系統,
其一:如果每位應用程式員都必須掌握該系統所有的細節,那就不可能再撰寫代碼了(嚴重影響了程式員的開發效率:全部掌握這些細節可能需要很長很長很長時間....)
其二:并且管理這些部件并加以優化使用,是一件極富挑戰性的作業,于是,計算安裝了一層軟體(系統軟體),稱為作業系統,它的任務就是為用戶程式提供一個更好、更簡單、更清晰的計算機模型,并管理剛才提到的所有設備,
總結:
程式員無法把所有的硬體操作細節都了解到,管理這些硬體并且加以優化使用是非常繁瑣的作業,這個繁瑣的作業就是作業系統來干的,有了他,程式員就從這些繁瑣的作業中解脫了出來,只需要考慮自己的應用軟體的撰寫就可以了,應用軟體直接使用作業系統提供的功能來間接使用硬體,
精簡的說的話,作業系統就是一個協調、管理和控制計算機硬體資源和軟體資源的控制程式,
細說的話,作業系統應該分成兩部分功能:
# 一:隱藏了丑陋的硬體呼叫介面,為應用程式員提供呼叫硬體資源的更好,更簡單,更清晰的模型(系統呼叫介面),應用程式員有了這些介面后,就不用再考慮操作硬體的細節,專心開發自己的應用程式即可,
例如:作業系統提供了檔案這個抽象概念,對檔案的操作就是對磁盤的操作,有了檔案我們無需再去考慮關于磁盤的讀寫控制(比如控制磁盤轉動,移動磁頭讀寫資料等細節),
# 二:將應用程式對硬體資源的競態請求變得有序化
例如:很多應用軟體其實是共享一套計算機硬體,比方說有可能有三個應用程式同時需要申請列印機來輸出內容,那么a程式競爭到了列印機資源就列印,然后可能是b競爭到列印機資源,也可能是c,這就導致了無序,列印機可能列印一段a的內容然后又去列印c...,作業系統的一個功能就是將這種無序變得有序,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/225004.html
標籤:Python
上一篇:網路編程之 TCP 實作檔案上傳
