華納雲 盤點那些年作業系統的成長史

2021-10-18 23:17:20 字數 2943 閱讀 4236

第一代計算機(1940~1955):真空管和穿孔卡片

第一代計算機的產生背景:

在第一代之前,人類想用機械代替人力。第一代計算機的出現標誌著計算機從機械時代進入電子時代。從巴貝奇的失敗到第二次世界大戰,數字計算機的建設進展甚微,刺激了計算機研究的**性進展。

洛瓦州立大學的約翰·阿塔納索夫教授和他的學生克利福德·貝里製造了被認為是第一台工作的數字計算機。這台機器使用300根真空管。大約與此同時,康拉德·楚澤在柏林建造了帶繼電器的z3電腦,英國布萊切利公園的乙個團隊在2023年建造了巨像,霍華德·艾肯在哈佛大學建造了馬克1,賓夕法尼亞大學的威廉·莫克利和他的學生j·普雷斯珀·埃克特建造了埃尼亞克。這些機器有的是二進位制的,有的用真空管,有的是可程式設計的,但都很原始。完成最簡單的操作需要幾秒鐘。

這期間同一組的工程師設計、建造、程式設計、操作、維護同一臺機器,所有的程式設計都是用純機器語言寫的,甚至更糟糕,還要把幾千根電纜連到插板上形成電路來控制機器的基本功能。沒有程式語言(也沒有彙編),也沒聽說過作業系統。使用機器的過程更加原始。

特點:沒有作業系統的概念的所有程式設計都是直接操作硬體的工作過程:程式設計師在牆上的時間表預約一段時間,程式設計師把他的外掛程式版帶到機房,在自己的外掛程式板街上的電腦上,這幾個小時內他獨佔了整個電腦資源,後面的人都要等

後來出現了穿孔卡片,可以在卡片上寫程式,然後讀入機器,而不是插入式板卡。優點:程式設計師可以在應用期享受全部資源,可以立即除錯自己的程式(bug可以立即處理)。缺點:電腦資源浪費,一段時間只能乙個人使用。注意:同時記憶體中只有乙個程式,由cpu呼叫執行。比如10個程式的執行是第二代序列計算機(1955~1965):電晶體和批處理系統。

二代電腦的背景:因為當時電腦很貴,所以我覺得想辦法減少機器時間的浪費是很自然的。常用的方法是批處理系統。特點:設計師、製作人員、操作人員、程式設計師、維護人員直接分工明確。電腦鎖在專門的空調房裡,由專業的操作人員執行,這就是所謂的『主機』。

有了作業系統的概念,就有了一種程式語言:fortran語言或者組合語言,寫在紙上,然後打孔成卡,然後把卡盒拿到輸入室,交給操作員,然後用咖啡等著輸出介面。

第二代如何解決第一代的問題/缺點:

1、把一堆人的投入攢成一大波投入,

2、然後按順序計算(這個有問題,但是二代計算沒有解決)

3、把一堆人的輸出存成乙個大浪輸出現代作業系統的前身:(見圖)優點:批量處理,

節省機器時間缺點:

1、整個過程需要人參與控制,

2、帶磁帶。

3、程式設計師原來獨享一段時間的計算機,現在必須被統一規劃到一批作業中,等待結果和重新除錯的過程都需要等同批次的其他程式都運作完才可以(這極大的影響了程式的開發效率,無法及時除錯程式)

第三代計算機(1965~1980):積體電路晶元和多道程式設計

第三代計算機的產生背景:

20世紀60年代初,大多數計算機製造商有兩條完全不相容的生產線。一種是面向詞:大型科學計算機,如ibm 7094,主要用於科學計算和工程計算;另一種是面向字元的:商業計算機,如ibm 1401,主要用於銀行和保險公司開發和維護磁帶存檔和列印服務。不同的產品**昂貴,不同的使用者對電腦有不同的用途。ibm通過引入system/360系列,試圖同時滿足科學計算和商業計算。360系列的低端機相當於1401,高階機比7094強大很多。不同的表演賣不同的**。

360是第乙個採用了(小規模)晶元(積體電路)的主流機型,與採用電晶體的第二代計算機相比,價效比有了很大的提高。這些計算機的後代仍在大型的計算機中心裡使用,此乃現在伺服器的前身,這些伺服器每秒處理不小於千次的請求。

如何解決第二代計算機的問題2:

第三代計算機的作業系統已經廣泛使用了第二代計算機的作業系統所不具備的關鍵技術:多通道技術cpu在執行乙個任務的過程中,如果需要操作硬碟,就傳送指令操作硬碟。一旦發出指令,硬碟上的機械臂就會滑動,將資料讀入記憶體。在這段時間裡,cpu需要等待,時間可能很短,但對cpu來說已經很長了,足夠cpu做很多其他任務了。如果讓cpu下滑,這就是多通道技術的技術背景。

多道技術:

多頻道是指多頻道技術中的多個節目。多通道技術的實現是為了解決多個程式競爭或共享同一資源(如cpu)的有序排程問題。解決方案是復用,分為時間復用和空間復用。空間復用:把記憶體分成幾個部分,每個部分放入乙個程式中,這樣記憶體中同時有多個程式。

時間復用:當乙個程式在等待i/o時,另乙個程式可以使用cpu。如果能同時在記憶體中儲存足夠多的作業,那麼cpu的利用率就能接近100%,類似於我們小學數學學的統籌法。(作業系統採用多通道技術後,可以控制程序的切換,或者在程序間爭奪cpu的執行許可權。這種切換不僅會在程序遇到io時進行,也會在程序占用cpu時間過長時進行,或者作業系統會拿走cpu的執行許可權)

詳解空間復用最大的問題是程式之間的記憶體必須劃分,需要在硬體層面實現,由作業系統控制。如果記憶體不互相分離,乙個程式可以訪問另乙個程式的記憶體,首先失去的就是安全性。例如,您的qq程式可以訪問作業系統的記憶體,這意味著您的qq可以獲得作業系統的所有許可權。

其次喪失的是穩定性,某個程式崩潰時有可能把別的程式的記憶體也給**了,比方說把作業系統的記憶體給**了,則作業系統崩潰。

第三代電腦的作業系統還是批處理。很多程式設計師都懷念第一代專屬電腦,可以瞬間除錯自己的程式。為了滿足程式設計師快速反應的要求,分時作業系統應運而生。

ctts:麻省理工學院在一台改進的7094計算機上成功開發了乙個ctss相容的分時系統。

在第三代計算機廣泛採用必要的保護硬體(程式之間的記憶體相互隔離)後,分時系統在麻省理工學院開始流行。在ctts的成功開發之後,貝爾實驗室和通用電氣決定開發能夠同時支援數百個終端的multics(其設計者專注於構建一台機器來滿足波士頓所有使用者的計算需求)。顯然是真的要上天了。

後來,貝爾實驗室的計算機科學家肯·湯普森(ken thompson)參與了multics的開發,開發了乙個簡單的、單使用者版本的multics,也就是後來的unix系統。在此基礎上衍生出很多其他的unix版本。為了使程式在任何版本的unix上執行,ieee提出了乙個unix標準,即posix(可移植作業系統介面)

後來在2023年,出現了乙個unix小轉殖體minix,用於教學。基於此,芬蘭學生linus torvalds編制了***linux計算機(2023年至今):個人電腦。

作業系統的那些事兒

作業系統 英語 operating system,簡稱os 是管理和控制計算機 硬體與軟體資源的 電腦程式,是直接執行在 裸機 上的最基本的系統軟體,任何其他軟體都必須在作業系統的支援下才能 執行。操 作系統是使用者和計算機的 介面,同時也是計算機硬體和其他軟體的介面。驅動程式 最底層的 直接控制和...

雲計算時代的作業系統

在我剛接觸電腦的時候,無論 at t 的unix 微軟的 windows 還是國內的 ucdos 都光芒四射,並引領了業界的潮流,同時各種作業系統提供的強大和豐富的 api,使得各種強大和有趣的應用層出不窮,可以說作業系統就是當時 it界的皇冠。但是隨著網際網路的發展和成熟,作業系統在整個系統中的地...

深藏25年的作業系統Bug被消滅

幾天前,一位名為marc balmer的openbsd開發者收到來自使用者的郵件,郵件中使用者稱在某些情況下為ms dos檔案系統提供服務會導致samba崩潰。balmer隨後同samba的開發者取得了聯絡,但是samba開發者聲稱這是在所有bsd系統 中都存在的乙個bug。起初balmer根本不相...