1. 程式人生 > >計算機基礎之操作系統

計算機基礎之操作系統

隱患 個人計算機 另一個 安全 交互式 匯編語言 半導體 輸入 存在

一、為何要有操作系統

   操作系統(Operating System)是控制計算機硬件和軟件資源的控制程序。我們知道,應用程序要通過操作系統才能對硬件進行操作,計算機由主板、硬盤、內存、cpu、聲卡、網卡、鼠標、鍵盤等硬件組成,每個硬件的正常運行都需要控制器和驅動程序。如果用戶需要操作硬件的時候,還要在手動編寫或者加載這些程序或驅動,那就太浪費時間了。所以為了提高計算機的使用效率,計算機安裝了一層系統軟件,它能管理剛才提到的那些硬件,為用戶程序提供一個更簡單,更有效,更人性化的計算機模型,讓用戶在一個更容易使用的模型上使用。所以,有了操作系統,用戶就不用費力氣去了解學習復雜繁瑣的管理硬件的知識,可以把更多的精力用在需求上。

二、操作系統的位置

  操作系統位於計算機硬件和軟件之間,本身也是一個軟件。操作系統由操作系統的內核和系統調用兩部分組成,其中內核部分運行於內核態,用來管理硬件資源;系統調用則運行於用戶態,為應用程序提供系統調用接口。

技術分享

三、操作系統的功能

  簡單來說,操作系統的功能可以理解為以下兩個部分:

  1.管理硬件調用接口,為用戶提供更簡單,更人性化的操作界面,程序員不用承受操作硬件的繁瑣過程,因而有更多的精力去實現自己的期望。比如我們常見資源管理器是NTFS文件系統,這就是操作系統提供給我們的。我們很多人從開始使用電腦到現在,一直都是以文件為操作單位的,如果沒有文件系統,而是采用塊為基本單位,那種生活是無法想象的。操作系統為程序員提供了一種簡單的模型,而我們通過程序員編寫出來的應用程序,更方便的使用計算機。

  2.將應用程序對硬件資源的競態請求變的有序化。怎麽理解呢,我們電腦上有很多應用程序,但是硬件系統只有一套,所以其實是所有的應用程序共享一套硬件,但是當應用程序對硬件發出操作請求時,就需要操作系統來協調這些請求,使得計算機能完成應用程序的請求且不會產生混亂無序。操作系統的這個功能又叫多路復用

四、操作系統的發展

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

  lowa州立大學的john Atanasoff教授和他的學生Clifford Berry建造了據認為是第一臺可工作的數字計算機。該機器使用300個真空管。大約在同時,Konrad Zuse在柏林用繼電器構建了Z3計算機,英格蘭布萊切利園的一個小組在1944年構建了Colossus,Howard Aiken在哈佛大學建造了Mark 1,賓夕法尼亞大學的William Mauchley和他的學生J.Presper Eckert建造了ENIAC。這些機器有的是二進制的,有的使用真空管,有的是可編程的,但都非常原始,設置需要花費數秒鐘時間才能完成最簡單的運算。

  這些所謂的計算機沒有操作系統的概念,所有的程序都是有機械語言編寫的。

  在這個時期計算機只能供一個程序員同時使用,所以當一個程序員拿著他的插件板到機房時,其他人都得排隊耐心等待,他一個人獨享整個計算機資源。後來出現了穿孔卡片,可以將程序寫在卡片上而不用插件板。

  優點是程序員在使用計算機資源時,可以即時調試自己的程序,出現bug的時候可以即時處理

  缺點是這種方式對計算機資源是極大的浪費,且此階段在計算機中同一時刻只有一個程序在內存中,被CPU調用執行。

2.第二代計算機(1955~1965):晶體管和批處理系統

  由於當時計算機造價昂貴,第一代計算機的工作方式過於浪費,所以為了節省成本,采用了批量處理的方式。

  出現了操作系統的概念,此時的操作系統是人和計算機結合的系統,設計人員,生產人員,操作人員,程序人員和維護人員有了明確的分工,計算機被鎖在專用的空調房間裏,有專業的操作人員運行。同時也有了程序設計語言:FORTRAN語言或匯編語言。

  工作過程:

  把好幾個人的輸入攢到一起,一起寫入磁帶中,然後操作人員將磁帶送入機房裏並裝到磁帶機上,操作員裝入一個特殊的程序(操作系統的前身),這個程序從輸入的磁帶上讀取第一個作業並運行,將輸出寫入到另一個磁帶上但不打印,當這批作業全部結束後,操作人員取下輸入和輸出磁帶,將下一批作業再次裝到磁帶機上,並把輸出磁帶拿到另一臺機器上脫機打印。

  雖然第二代計算機將一批需求一起處理,但是仍然是順序計算。雖然節省了時間,但批處理的過程中無法及時調試程序,極大地影響了程序的開發效率。

3.第三代計算機(1965~1980):集成電路芯片和多道程序設計

  第二代計算機存在幾個問題需要改進:

  第一個問題:第二代計算機存在兩種完全不兼容的計算機,一種是面向字的大型科學計算機,另一種是面向字符的商用計算機。IBM公司試圖通過引入system360系列來同時滿足科學計算和商業計算,這是第一個采用了(小規模)芯片(集成電路)的主流機型,與之前采用晶體管的計算機相比,性價比有了很大提升。同時這也是現代服務器的前身。

  第二個問題,第二代計算機還需要有專門的操作員來操作,為了解決這一問題,出現了一種SPOOLING技術,該技術同時用於輸入輸出,從而不在需要操作員在中間來回搬運磁帶。

  第三個問題:第二代計算機仍然采用串行執行,內存中同時只能放一個數據,第三代計算機中產生了一種關鍵技術:多道技術,下面將在第五章中詳細介紹。

  第四個問題:第三代計算機仍然采用批處理,所以程序員是很懷念獨享計算機資源的時代,為了解決這一問題,出現了分時操作系統:多個聯機終端+多道技術。由於客戶提交的一般都是剪短的指令,很少有耗時長的,索引計算機能夠為大部分用戶提供快速的交互式服務,所有的用戶都以為自己獨享了計算機資源。

4.第四代計算機(1980至今):個人計算機

  現在出現了大規模集成電路計算機,采用集成度更高的半導體,運算速度大大提升,同時個人計算機發展迅速,現在工藝可以制造出體積更小,性能更強悍的計算機。另外,互聯網技術,數據庫管理技術發展迅速,並得到了廣泛應用

五、多道技術

  多道技術中的多道指的是多個程序,上文中提到當多個程序共享同一個硬件資源時存在有序調度問題,多道復用的出現就是為了解決這一問題。多道復用分為時間上的復用和空間上的復用。

  空間上的復用:將內存分為幾個部分,每個部分放入一個程序,使他們在系統中並發執行,共享系統中的資源,當一道程序暫停時,CPU立即轉去執行另一道程序。

這裏存在的最大問題是:內存必須分割,並且是硬件層面的分割。如果不分割的話,一個程序可以訪問另一個程序的內存,這將會造成安全性和穩定性上的隱患。

  時間上的復用當一個程序在等待I/O時,另一個程序可以使用CPU,如果內存大到可以存放足夠多的程序,那麽CPU的利用率可以接近100%,這時就需要操作系統來統籌程序使用cpu的順序及使用時間。

  其實操作系統的功能就是多路復用的體現:處理來自多個(多路)程序發起的多個共享資源(復用資源)的請求。

計算機基礎之操作系統