首頁 > 軟體

計算機基礎系列教學二:作業系統簡介

2020-06-16 17:13:56

一. 為什麼需要作業系統(Operating System,OS)

  第一代計算機(1940~1955)使用真空管和穿孔卡片,是直接對硬體進行操作,同時只能執行一個程式,當時根本沒有作業系統的概念。隨著計算機硬體的急速發展,計算機系統已經由一個或者多個處理器,主記憶體,硬碟,鍵盤,滑鼠,顯示器,印表機,網路介面及其他輸入輸出裝置組成。面對如此繁多、複雜的硬體,如果要求每位應用程式設計師都必須掌握該系統所有的細節,那就不可能再編寫程式碼了(嚴重影響了程式設計師的開發效率:全部掌握這些細節可能需要一萬年....)。因為管理這些部件並加以優化使用,是一件極富挑戰性的工作,於是,計算安裝了一層軟體(系統軟體),稱為作業系統。它的任務就是為使用者程式提供一個更好、更簡單、更清晰的計算機模型,並管理剛才提到的所有裝置。

二. 什麼是作業系統

  作業系統是管理和控制計算機硬體與軟體資源的計算機程式,是直接執行在“裸機”上的最基本的系統軟體,任何其他軟體都必須在作業系統的支援下才能執行。

  作業系統的位置:位於計算機硬體與應用軟體之間,本質也是一個軟體。作業系統由作業系統的核心(執行於核心態,管理硬體資源)以及系統呼叫(執行於使用者態,為應用程式設計師寫的應用程式提供系統呼叫介面)兩部分組成,所以,單純的說作業系統是執行於核心態的,是不準確的。

圖1

  作業系統的功能:作業系統的功能包括管理計算機系統的硬體、軟體及資料資源,控制程式執行,改善人機介面,為其它應用軟體提供支援,讓計算機系統所有資源最大限度地發揮作用,提供各種形式的使用者介面,使使用者有一個好的工作環境,為其它軟體的開發提供必要的服務和相應的介面等。主要功能為以下兩點:

  1. 隱藏了醜陋的硬體呼叫介面,為應用程式設計師提供呼叫硬體資源的更好,更簡單,更清晰的模型(系統呼叫介面)。應用程式設計師有了這些介面後,就不用再考慮操作硬體的細節,專心開發自己的應用程式即可。

   比如,磁碟資源的抽象是檔案系統(C槽,D槽,E槽...下的目錄及檔案),有了檔案的概念,我們直接開啟檔案,讀或者寫就可以了,無需關心記錄是否應該使用修正的調頻記錄方式,以及當前電機的狀態等細節。

圖2

  2. 管理硬體資源,即將應用程式對硬體資源的競態請求變得有序化。現代的作業系統同時執行多道程式,作業系統的任務是在相互競爭的程式之間有序地控制對處理器、記憶體以及其他I/O介面裝置的分配。

例如:同一台計算機上同時執行三個程式,它們三個想在同一時刻在同一台計算機上輸出結果,那麼開始的幾行可能是程式1的輸出,接著幾行是程式2的輸出,然後又是程式3的輸出,最終將是一團糟(程式之間是一種互相競爭資源的過程)。作業系統將印表機的結果送到磁碟的緩衝區,在一個程式完全結束後,才將暫存在磁碟上的檔案送到印表機輸出,同時其他的程式可以繼續產生更多的輸出結果(這些程式的輸出沒有真正的送到印表機),這樣,作業系統就將由競爭產生的無序變得有序化。

三. 作業系統的發展

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

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

第一代之前人類是想用機械取代人力,第一代計算機的產生是計算機由機械時代進入電子時代的標誌,從Babbage失敗之後一直到第二次世界大戰,數位計算機的建造幾乎沒有什麼進展,第二次世界大戰刺激了有關計算機研究的爆炸性進展。lowa州立大學的John Atanasoff教授和他的學生Clifford Berry建造了據認為是第一台可工作的數位計算機。該機器使用300個真空管。大約在同時,Konrad Zuse在柏林用繼電器構建了Z3計算機,英格蘭布萊切利園的一個小組在1944年構建了Colossus,Howard Aiken在哈佛大學建造了Mark 1,賓夕法尼亞大學的William Mauchley和他的學生J.Presper Eckert建造了ENIAC。這些機器有的是二進位制的,有的使用真空管,有的是可程式化的,但都非常原始,設定需要花費數秒鐘時間才能完成最簡單的運算。

在這個時期,同一個小組裡的工程師們,設計、建造、程式設計、操作及維護同一台機器,所有的程式設計是用純粹的機器語言編寫的,甚至更糟糕,需要通過成千上萬根電纜街道外掛板上連成電路來控制機器的基本功能。沒有程式設計語言(組合也沒有),作業系統則是從來都沒聽說過。使用機器的過程更加原始。

特點:
a. 沒有作業系統的概念
b. 所有的程式設計都是由純粹的機器語言編寫的

工作過程:
程式設計師在牆上的機時表預約一段時間,然後程式設計師拿著他的外掛版到機房裡,將自己的外掛板街道計算機裡,這幾個小時內他獨享整個計算機資源,後面的一批人都得等著(兩萬多個真空管經常會有被燒壞的情況出現)。後來出現了穿孔卡片,可以將程式寫在卡片上,然後讀入機而不用外掛板

優點:程式設計師在申請的時間段內獨享整個資源,即時的偵錯自己的程式,如果有bug可以即時處理。

缺點:這對於計算機提供商來說是一種浪費(你買一台電腦4000塊,那 一年中你用365比只用1天,肯定是省成本的,物盡其用)你有一台電腦你往外租,你一次租2個小時,那麼即便是使用者在第一個小時就已經完成工作了,剩下的1個小時你的電腦就空閒了,而一天你只能租給12個人,相當於要浪費12個小時。

注意:同一時刻只有一個程式在記憶體中,被cpu呼叫執行,比如說10個程式的執行,是序列的。

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

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

由於當時的計算機非常昂貴,自認很自然的想辦法較少機時的浪費。通常採用的方法就是批次處理系統。

特點:
設計人員、生產人員、操作人員、程式人員和維護人員直接有了明確的分工,計算機被鎖在專用空調房間中,由專業操作人員執行,這便是“大型電腦”。

有了作業系統的概念,下圖就是最早期的作業系統:是人力與計算機結合的系統,需要人參與。

有了程式設計語言:FORTRAN語言或組合語言,寫到紙上,然後穿孔打成卡片,再講卡片盒帶到輸入室,交給操作員,然後喝著咖啡等待輸出介面

工作過程:插圖

圖3

第一代計算機的問題是:
人機互動太多了(人機互動過程:輸入-》計算-》輸出)
一個人的互動:輸入-》計算-》輸出

10個人的互動:
輸入-》計算-》輸出
輸入-》計算-》輸出
輸入-》計算-》輸出
輸入-》計算-》輸出
輸入-》計算-》輸出

第二代如何解決第一代的問題:
1.把一堆人的輸入攢成一大波輸入,
2.然後順序計算(這是有問題的,但是第二代計算也沒有解決)
3.把一堆人的輸出攢成一大波輸出

 

更多詳情見請繼續閱讀下一頁的精彩內容http://www.linuxidc.com/Linux/2017-05/144225p2.htm


IT145.com E-mail:sddin#qq.com