1、本文所以內容來自 著名高校課件和學生筆記(校園裡面經常見到有人高價買筆記)
2、任課教師不會提供參考文獻,所以只能對作者表示感謝,如果引用了您的作品,可以用回複方式補充參考文獻。
3、我不對文章無關問題進行解答,文章內容也比較難,我也很難解答您遇到的問題,如果發現BUG可以用回複方式幫我修正。
4、本課 電腦作業系統
,適用於電腦作業系統、考研
本課其他部分的導航條見頁面底部
電腦作業系統
§1.1 作業系統概念
§1.2 作業系統的曆史
§1.3 作業系統的基本類型
§1.4 作業系統功能
§1.5 電腦硬體簡介
§1.6 演算法的描述
§1.7 研究作業系統的幾種觀點
電腦發展到今天,從個人電腦到巨型電腦系統,毫無例外都配置一種或多種作業系統。什麼是作業系統,作業系統在電腦系統中的地位,它具有什麼樣的功能等,我們將在這一章作一簡要闡述。為了闡明這些問題,扼要地回顧一下作業系統的形成和發展過程是必要的。為便於今後的學習,我們要介紹一下作業系統的類型及其特點,研究作業系統的幾種觀點。最後,介紹幾種常用作業系統。
§1.1 作業系統概念
1.1.1 什麼是作業系統
任何一個電腦系統都是由兩部分組成:電腦硬體和電腦軟體。
電腦硬體通常是由中央處理機(運算器和控制器)、儲存空間、輸入裝置和輸出裝置等組件組成。
電腦軟體包括系統軟體和應用軟體。系統軟體如作業系統、多種語言處理常式( 彙編和編譯器等 )、串連裝配程式、系統公用程式、多種工具軟體等; 應用軟體為多種應用目的而編製的程式。
沒有任何軟體支援的電腦稱為裸機,它僅僅構成了電腦系統的物質基礎,而實際呈現在使用者面前的電腦系統是經過若干層軟體改造的電腦。圖1.1展示了這種情形。
電腦的硬體和軟體以及應用之間是一種階層的關係。裸機在最裡層,它的外面是作業系統,經過作業系統提供的資源管理功能和方便使用者的各種服務功能把裸機改造成為功能更強、使用更為方便的機器,通常稱之為虛擬機器或擴充機,而各種公用程式和應用程式運行在作業系統之上,它們以作業系統作為支撐環境,同時又向使用者提供完成其作業所需的各種服務。
因此,引入作業系統的目的可從三方面來考察:
從系統管理人員的觀點來看:引入作業系統是為了合理地組織電腦工作流程,管理和分配電腦系統硬體及軟體資源,使之能為多個使用者高效率地共用。因此,作業系統是電腦資源的管理者。
(2) 從使用者的觀點來看:引入作業系統是為了給使用者使用計算
機提供一個良好的介面,以使使用者無需瞭解許多有關硬體
和系統軟體的細節,就能方便靈活地使用電腦。
(3) 從發展的觀點看:引入作業系統是為了給電腦系統的功能擴充提供支撐平台,使之在追加新的服務和功能時更加容易和不影響原有的服務與功能。
綜上所述,我們可以非形式地把作業系統定義為:
作業系統是電腦系統中的一個系統軟體,它是這樣一些程式模組的集合——它們管理和控制電腦系統中的硬體及軟體資源,合理地組織電腦工作流程,以便有效地利用這些資源為使用者提供一個功能強大、使用方便和可擴充的工作環境,從而在電腦與其使用者之間起到介面的作用。
§1.2 作業系統的曆史
為了更好地理解作業系統的基本概念、功能和特點,首先回顧一下作業系統形成和發展的曆史過程。
作業系統是由於客觀的需要而產生的,它伴隨著電腦技術本身及其應用的日益發展而逐漸發展和不斷完善。它的功能由弱到強,在電腦系統中的地位不斷提高。至今,它已成為電腦系統中的核心,無一電腦系統是不配置作業系統的。
由於作業系統曆來跟運行其上的電腦群組成與體繫結構休戚與共,因此我們考察各代電腦,看看它們的作業系統是什麼樣子,具有哪些功能和特徵。
人們通常按照器件工藝的演變把電腦發展過程分為四個階段。
1946年—50年代末: 第一代,電子管時代(無作業系統)。
50年代末—60年代中期:第二代,晶體管時代(批處理系統)。
60年代中期—70年代中期:第三代,整合電路時代(多道程式
設計)。
70年代中期至今: 第四代,大規模和超大規模整合電
路時代(分時系統)。
現代電腦正向著巨型、微型、並行、分布、網路化和智能化幾個方面發展著。
適應上述電腦發展過程,作業系統經曆了如下的發展過程:手工操作階段(無作業系統)、批處理、執行系統、多道程式系統、分時系統、即時系統、通用作業系統、網路作業系統、分布式作業系統等。
1.2.1 手工操作階段
在第一代電腦時期,構成電腦的主要元器件是電子管,電腦運算速度慢,沒有作業系統,甚至沒有任何軟體。使用者直接用機器語言編製程式,並在上機時獨佔全部電腦資源。上機完全是手工操作:先把程式紙帶(或卡片)裝上輸入機,然後啟動輸入機把程式和資料送入電腦,接著通過控制台開關啟動程式運行。計算完畢,印表機輸出計算結果,使用者取走並卸下紙帶(或卡片)。
50年代後期,電腦的運行速度有了很大提高,手工操作的慢速度和電腦的高速度之間形成矛盾。唯一的解決辦法是擺脫人的手工操作,實現作業的自動過渡。這樣就出現了批處理。
1.2.2 早期批處理(batch processing)
在電腦發展的早期階段,由於沒有任何用於管理的軟體,所有的運行管理和具體操作都由使用者自己承擔。作業由許多作業步組成,任何一步的錯誤操作都可能導致該作業從頭開始。當時,電腦極其昂貴,電腦(CPU)的時間非常寶貴,儘可能提高CPU的利用率成為十分迫切的任務。
解決的途徑有兩個:首先配備專門的電腦操作員,程式員不再直接操作機器,減少操作機器的錯誤。另一個重要措施是進行批處理,操作員把使用者提交的作業分類,把一批中的作業編成一個作業執行序列。每一批作業將有專門編製的監督程式(monitor)自動依次處理。
早期的批處理可分為兩種方式。( 聯機批處理和離線批處理)
聯機批處理
慢速的輸入輸出(I/O)裝置是和主機直接相連。
作業的執行過程為:
(1) 使用者提交作業:作業程式、資料,用作業控制語 言編寫的
作業說明書;
(2) 作業被作成穿孔紙帶或卡片;
(3) 操作員有選擇地把若干作業合成一批,通過輸入裝置(紙帶
輸入機或讀卡機) 把它們存入磁帶;
(4) 監督程式讀入一個作業(若系統資源能滿足該作業要求);
(5) 從磁帶調入組譯工具或編譯器,將使用者作業來源程式翻譯
成目標代碼;
(6) 串連裝配程式把編譯後的目標代碼及所需的子程式裝配成
一個可執行程式;
(7) 啟動執行;
(8) 執行完畢,由善後處理常式輸出計算結果;
(9) 再讀入一個作業,重複(5)—(9)各步;
(10) 一批作業完成,返回到(3),處理下一批作業。
這種聯機批處理方式解決了作業自動轉接,從而減少作業建立和人工操作時間。但是在作業的輸入和執行結果的輸出過程中,主機CPU仍處在停止等待狀態,這樣慢速的輸入輸出裝置和快速主機之間仍處於串列工作,CPU的時間仍有很大的浪費。
2. 離線批處理
輸入輸出由專門的裝置完成。這種方式的顯著特徵是增加一台不與主機直接相連而專門用於與輸入輸出裝置打交道的衛星機。1.2所示(見下頁)。
衛星機的功能是:
(1) 輸入裝置通過它把作業輸入到輸入磁帶;
(2) 輸出磁帶將作業執行結果輸出到輸出裝置。
這樣,主機不是直接與慢速的輸入輸出裝置打交道,而是與速度相對較快的磁帶機發生關係。主機與衛星機可以並行工作,二者分工明確,以充分發揮主機的高速度計算能力。因此離線批處理和早期聯機批處理相比大大提高了系統的處理能力。
批處理出現於20世紀50年代末到60年代初。它的出現促使了軟體的發展。再有重要的是監督程式,它管理作業的運行——負責裝入和運行各種系統處理常式,如組譯工具、編譯器、串連裝配程式、程式庫(如輸入輸出標準程式等);完成作業的自動過渡,同時也出現程式覆蓋等程式設計技術。
批處理仍有些缺點:磁帶需人工拆裝,既麻煩又易出錯;而另一個更重要的問題是系統的保護。
讓我們來回憶一下在監督程式管理下的解題過程,1.3所示(見下頁)。
在進行批處理過程中,監督程式、系統程式和使用者程式之間存在著一種調用關係,任何一個環節出問題,整個系統都會停頓; 使用者程式也可能會破壞監督程式和系統程式,這時,只有操作員進行幹預才能恢複。20世紀60年代初期,硬體獲得了兩方面(即通道和中斷技術)的進展,導致作業系統進入執行系統階段。
通道是一種專用處理組件,它能控制一台或多台輸入輸出裝置工作,負責輸入輸出裝置與主存之間的資訊傳輸。它一旦被啟動就能獨立於CPU運行,這樣可使CPU和通道並行操作,而且CPU和多種輸入輸出裝置也能並行操作。
中斷是指當主機接到外部訊號(如輸入輸出裝置完成訊號)時,馬上停止原來工作,轉去處理這一事件,處理完畢後,主機回到原來的斷點繼續工作。
藉助於通道、中斷技術和輸入輸出可在主機控制下完成批處理。這時,原來的監督程式的功能擴大了,它不僅要負責作業啟動並執行自動調度,而且還要提供輸入輸出控制功能。這個發展了的監督程式常駐記憶體稱為執行系統。
執行系統實現的也是輸入輸出聯機操作,和早期批處理系統不同的是:輸入輸出工作是由在主機控制下的通道完成的。主機和通道、主機和輸入輸出裝置都可以並行操作。使用者程式的輸入輸出工作都是由系統執行而沒有人工幹預,由系統檢查其命令的合法性,以避免不合法的輸入輸出命令造成對系統的影響,從而提高系統的安全性。
此時,除了輸入輸出中斷外,其他中斷如算術溢位和非法作業碼中斷等可以克服錯誤停機,而時鐘中斷可以解決使用者程式中出現的死迴圈等。
執行系統實現了主機、通道和輸入輸出裝置的並行操作,提高了系統效率,方便使用者對輸入輸出裝置的使用。但是,這時電腦系統啟動並執行特徵是單道順序地處理作業,即使用者作業仍然是一道一道作業順序處理。那麼可能會出現兩種情況:對於以計算為主的作業,輸入輸出量少,外圍裝置空閑;然而對於以輸入輸出為主的作業,又會造成主機空閑。這樣總的來說,電腦資源使用效率仍然不高。因此作業系統進入了多道程式階段:多道程式合理搭配交替運行,充分利用資源,提高效率。
執行系統實現了主機、通道和輸入輸出裝置的並行操作,提高了系統效率,方便使用者對輸入輸出裝置的使用。但是,這時電腦系統啟動並執行特徵是單道順序地處理作業,即使用者作業仍然是一道一道作業順序處理。那麼可能會出現兩種情況:對於以計算為主的作業,輸入輸出量少,外圍裝置空閑;然而對於以輸入輸出為主的作業,又會造成主機空閑。這樣總的來說,電腦資源使用效率仍然不高。因此作業系統進入了多道程式階段:多道程式合理搭配交替運行,充分利用資源,提高效率。
在批處理系統中採用多道程式設計技術,就形成了多道批處理系統。要處理的許多作業存放在外部儲存空間中,形成作業隊列,等待運行。當需要調入作業時,將由作業系統中的作業發送器對外存中的一批作業,根據其對資源的要求和一定的調度原則,調幾個作業進入記憶體,讓它們交替運行。當某個作業完成,然後再調入一個或幾個作業。這種處理方式,在記憶體中總是同時存在幾道程式,系統資源得到比較充分的利用。
多道程式系統中,要解決這樣一些技術問題:
並行啟動並執行程式要共用電腦系統的硬體和軟體資源,既有對資源的
競爭,但又須相互同步。因此同步與互斥機製成為作業系統設計中的
重要問題。
隨著多道程式的增加,出現了記憶體不夠用的問題,提高記憶體的使用效
率也成為關鍵。因此出現了諸如覆蓋技術、對換技術和虛擬儲存技術
等記憶體管理技術。
由於多道程式存在於記憶體,為了保證系統程式儲存區和各使用者程式存
儲區的安全可靠,提出了記憶體保護的要求。
1.2.4 分時作業系統
批處理方式下,使用者以離線操作方式使用電腦,只有等該批作業處理結束,使用者才能得到計算結果。根據結果再作下一步處理。它的好處是電腦效率高。不過,使用者十分留戀手工操作階段的聯機工作方式,獨佔電腦,並直接控製程序運行。但獨佔電腦方式會造成資源效率低。既能保證電腦效率,又能方便使用者使用,成為一種新的追求目標。20世紀60年代中期,電腦技術和軟體技術的發展使這種追求成為可能。由於CPU速度不斷提高和採用分時技術,一台電腦可同時串連多個使用者終端,而每個使用者可在自己的終端上聯機使用電腦,好像自己獨佔機器一樣。
所謂分時技術,就是把處理機的已耗用時間分成很短的時間片,按時間片輪流把處理機分配給各聯機作業使用。若某個作業在分配給它的時間片內不能完成其計算,則該作業暫時中斷,把處理機讓給另一作業使用,等待下一輪時再繼續其運行。由於電腦速度很快,作業運行輪轉得很快,給每個使用者的印象是好像他獨佔了一台電腦。而每個使用者可以通過自己終端向系統發出各種操作控制命令,完成作業的運行。
多使用者分時作業系統是當今電腦作業系統中最普遍使用的一類作業系統。
1.2.5 即時作業系統
20世紀60年代中期電腦進入第三代,電腦的效能和可靠性有了很大提高,造價亦大幅度下降,導致電腦應用越來越廣泛。電腦由於用於工業過程式控制制、軍事即時控制等形成了各種即時處理系統。針對即時處理的即時作業系統是以在允許時間範圍之內做出響應為特徵的。它要求電腦對於外來資訊能以足夠快的速度進行處理,並在被控對象允許時間範圍內作出快速響應,其回應時間要求在秒級、毫秒級甚至微秒級或更小。近年來,即時作業系統正得到越來越廣泛的應用。特別是非PC機和PDA(個人數位助理)等新裝置的出現,更加強了這一趨勢。
1.2.6 通用作業系統
多道批處理系統和分時系統的不斷改進、即時系統的出現及其應用日益廣泛,致使作業系統日益完善。在此基礎上,出現了通用作業系統。它可以同時兼有多道批處理、分時、即時處理的功能,或其中兩種以上的功能。例如,將即時處理和批處理相結合構成即時批處理系統。在這樣的系統中,它首先保證優先處理任務,插空進行批作業處理。通常把即時任務稱為前台作業,批作業稱為後台作業。將批處理和分時處理相結合可構成分時批處理系統。在保證分時使用者的前提下,沒有分時使用者時可進行批量作業的處理。同樣,分時使用者和批次工作可按前後台方式處理。
20世紀60年代中期開始,國際上開始研製大型通用作業系統。這些系統在解決其可靠性、可維護性、可理解性和開放性等方面都遇到很大的困難。相比之下UNIX作業系統卻是一個例外。這是一個通用的多使用者分時互動型的作業系統。它首先建立的是一個精乾的核心,而其功能卻足以與許多大型的作業系統相媲美,在核心層以外可以支援龐大的軟體系統。目前廣泛使用的各種工作站級的作業系統如SUN公司的Solaris,IBM公司的AIX等都是基於UNIX的作業系統。
Windows系列作業系統,其主要原理也是基於UNIX系統的。linux系統也是從UNIX演變而成的。
至此,作業系統的基本概念、功能、基本結構和組成都已形成並漸趨完善。
1.2.7 作業系統的進一步發展
進入20世紀80年代,一方面迎來了個人電腦的時代,同時又向電腦網路、分散式處理、巨型電腦和智能化方向發展。作業系統有了進一步的發展:
· 個人電腦上的作業系統,例如DOS系統。
· 嵌入式作業系統。
· 網路作業系統。
· 分布式作業系統。
· 智能化作業系統。
20世紀90年代後期,由於個人電腦硬體功能的急劇增加和使用者對安全性、網路功能的要求增強,個人電腦作業系統也從DOS轉向了通用作業系統Windows系列和linux系列。