- 操作系統(tǒng)實用教程
- 張獻忠編著
- 4433字
- 2018-12-30 15:30:58
1.1 什么是操作系統(tǒng)
1.1.1 引入操作系統(tǒng)的目標(biāo)
操作系統(tǒng)(Operating System,OS),對于一個初學(xué)者來講,可能說不出它到底是什么,但只要用過計算機,就一定使用過操作系統(tǒng)。為了加強對操作系統(tǒng)的感性認識,不妨來判斷一下,在下面的這些軟件中,哪些屬于操作系統(tǒng)呢?
Windows 2000/XP、Visual FoxPro 6.0、ASP.NET、UNIX、Linux、Pascal、Photoshop
其實不難發(fā)現(xiàn),在上述軟件中屬于操作系統(tǒng)的有Windows 2000/XP、UNIX、Linux,其余的屬于系統(tǒng)軟件或應(yīng)用程序。當(dāng)然,操作系統(tǒng)的種類遠不止這些,只不過有些操作系統(tǒng)一般用戶很少接觸,如一些專用領(lǐng)域的操作系統(tǒng)。因此,為便于理解,本書選擇目前比較流行的Windows 2000/XP和Linux作為實例進行分析。
為什么在計算機系統(tǒng)中要安裝操作系統(tǒng)呢?通常,把沒有安裝任何軟件的計算機稱為裸機(Bare Machine)。直接使用裸機十分困難,對用戶的要求很高,此時計算機硬件的效率也很難發(fā)揮。為此,人們在硬件的基礎(chǔ)上,通過增加一層軟件來實現(xiàn)對硬件功能的擴充,使它能自動管理計算機系統(tǒng)中的軟、硬件資源,這種在硬件上擴充的第一層軟件就是操作系統(tǒng)。操作系統(tǒng)緊貼系統(tǒng)硬件之上,所有其他軟件的運行都必須以它為基礎(chǔ)。
操作系統(tǒng)有什么作用?從操作系統(tǒng)的使用經(jīng)驗可知,操作系統(tǒng)能提供程序運行的環(huán)境并控制其運行過程,如在Windows系統(tǒng)中,用鼠標(biāo)雙擊程序圖標(biāo)就能啟動程序的運行;操作系統(tǒng)能提供友好的用戶接口,很容易對文件進行操作,如創(chuàng)建、復(fù)制和刪除文件等;操作系統(tǒng)能很好地控制I/O設(shè)備的工作,如打印機的工作等。總之,操作系統(tǒng)能做的事很多,一下子很難概括,它既像個“管家”,對系統(tǒng)中的一切資源要進行管理,又像個“服務(wù)員”,要為用戶使用計算機提供服務(wù),但有些服務(wù)又無能為力。例如,操作系統(tǒng)不是編譯程序,它不能對用戶的源程序進行編譯,這時需要專門的編譯程序才能完成;操作系統(tǒng)不能提供財務(wù)管理功能,這要靠相應(yīng)的財務(wù)軟件才能實現(xiàn);操作系統(tǒng)不會進行天氣預(yù)報,這需要專門的天氣預(yù)報軟件來完成;等等。事實上,操作系統(tǒng)提供的服務(wù)是與“硬件相關(guān)”和“應(yīng)用無關(guān)”的服務(wù),它不直接處理與實際應(yīng)用有關(guān)的問題,但所有與硬件相關(guān)的問題都由它解決,也就是說,所有軟件要在計算機上運行,必須要有操作系統(tǒng)的支持。因此,操作系統(tǒng)是所有軟件運行的基礎(chǔ)。操作系統(tǒng)在整個計算機系統(tǒng)中的地位如圖1-1所示。

圖1-1 操作系統(tǒng)在整個計算機系統(tǒng)中的地位
經(jīng)過以上分析可以得出,引入操作系統(tǒng)的目標(biāo)有以下4個。
(1)有效性。操作系統(tǒng)能有效管理、分配和調(diào)度軟、硬件資源,合理地組織計算機的工作流程。
(2)方便性。操作系統(tǒng)提供良好的、統(tǒng)一的用戶接口,使用戶使用計算機變得十分方便。
(3)可擴充性。操作系統(tǒng)通過擴充改造硬件類型和規(guī)模來擴充計算機的功能。
(4)開放性。操作系統(tǒng)支持體系結(jié)構(gòu)的可伸縮性和可擴展性,能實現(xiàn)在多個系統(tǒng)之間的資源共享和互操作,使應(yīng)用程序便于在不同平臺上移植。
1.1.2 操作系統(tǒng)的定義與功能
1.操作系統(tǒng)的定義
到目前為止,操作系統(tǒng)的產(chǎn)生、使用和發(fā)展已經(jīng)有四十多年了,然而,到底什么是操作系統(tǒng),人們至今對它的定義仍無統(tǒng)一的標(biāo)準(zhǔn)。但綜合各種觀點和說法來看,一種被普遍認同的定義是:操作系統(tǒng)是一組控制和管理計算機硬件和軟件資源,合理地對各類作業(yè)進行調(diào)度,以及方便用戶使用計算機的程序的集合。從它的定義可以看出,操作系統(tǒng)的作用主要體現(xiàn)在兩個方面:一是管理員,二是服務(wù)員。作為管理員,操作系統(tǒng)要負責(zé)對各種硬件和軟件資源進行分配和管理。其中,硬件資源主要包括CPU、存儲器、寄存器、堆棧和I/O設(shè)備等;軟件資源主要包括系統(tǒng)程序、應(yīng)用程序和各種數(shù)據(jù)及其數(shù)據(jù)結(jié)構(gòu)等。作為服務(wù)員,操作系統(tǒng)是用戶和計算機之間的接口(Interface),操作系統(tǒng)通過用戶接口來為用戶提供服務(wù)。
2.操作系統(tǒng)的功能
操作系統(tǒng)的功能主要體現(xiàn)在以下5個方面。
(1)處理器管理
處理器(CPU)管理主要完成處理器的分配、調(diào)度和釋放等功能。由于處理器是計算機硬件中最寶貴的資源,因此,必須使處理器盡可能地忙起來,減少其等待時間,從而提高它的利用率。在單用戶單任務(wù)的環(huán)境下,處理器僅為一個用戶的任務(wù)服務(wù),雖然其管理工作簡單,但是它的使用效率卻很低。為了盡量提高處理器的利用率,操作系統(tǒng)采用了多道程序技術(shù)。在多道程序環(huán)境下,為了保證這些程序能并發(fā)執(zhí)行,采用合理、有效的處理器管理策略是十分必要的。
為了便于處理器的分配、調(diào)度和管理,更好地描述多道程序的并發(fā)執(zhí)行,操作系統(tǒng)引入了進程(Process)和線程(Thread)的概念。進程是對程序并發(fā)執(zhí)行的動態(tài)描述,是系統(tǒng)內(nèi)資源分配的基本單位,在多進程操作系統(tǒng)中,進程也是處理器調(diào)度的基本單位。而線程是進程內(nèi)部的一個控制流,是對進程的有效細化。引入線程的目的是為了減少操作系統(tǒng)對進程調(diào)度的開銷,進一步提高系統(tǒng)的并發(fā)程度,使并發(fā)執(zhí)行的代價降為最低。在多線程系統(tǒng)中,線程是處理器調(diào)度的基本單位。實際上,在多進程多線程系統(tǒng)中,對處理器的管理和調(diào)度最終歸結(jié)為對進程和線程的管理和調(diào)度,它主要包括:
① 進程和線程控制。完成進程或線程的創(chuàng)建、撤銷、掛起和改變執(zhí)行優(yōu)先級等功能。
② 進程和線程的同步。協(xié)調(diào)并發(fā)進程或線程之間的執(zhí)行順序,方便進行資源共享。
③ 進程間通信。進程之間相互傳輸數(shù)據(jù),以協(xié)調(diào)進程間的協(xié)作。
④ 進程的死鎖。包括對死鎖的預(yù)防、避免、檢測和解除等功能。
⑤ 處理器調(diào)度。包括作業(yè)調(diào)度、中級調(diào)度、進程或線程調(diào)度。通過作業(yè)和進程的執(zhí)行切換,來充分利用處理器資源和提高系統(tǒng)性能。
(2)內(nèi)存管理
內(nèi)存儲器簡稱內(nèi)存(主存)。內(nèi)存管理的主要任務(wù)是對內(nèi)存資源的分配和回收,實現(xiàn)地址轉(zhuǎn)換,實現(xiàn)內(nèi)存的邏輯擴充以及提供內(nèi)存共享和保護機制等功能。內(nèi)存管理的目標(biāo)是提高內(nèi)存的利用率,方便用戶使用內(nèi)存,為用戶提供透明服務(wù)。眾所周知,計算機運行程序的前提是先將程序裝入內(nèi)存,但受成本等方面條件的制約,內(nèi)存的容量是有限的。在多道程序系統(tǒng)中,用戶使用內(nèi)存時需考慮其他程序的影響。每個用戶程序如何申請內(nèi)存,如何裝入內(nèi)存中的指定區(qū)域,如何保護好自己的程序不受干擾或影響等問題,這都是用戶程序設(shè)計人員無法事先知道的事情。因此,操作系統(tǒng)中的內(nèi)存管理模塊就是用于解決這些問題的。內(nèi)存管理的具體功能如下。
① 內(nèi)存的分配與回收。為需要運行的程序分配必要的內(nèi)存資源,當(dāng)程序運行結(jié)束后再回收其分配的內(nèi)存資源,這需要在操作系統(tǒng)中設(shè)置相應(yīng)的數(shù)據(jù)結(jié)構(gòu),用于登記當(dāng)前內(nèi)存的使用情況。
② 地址轉(zhuǎn)換。由于內(nèi)存和外存編址的不同,當(dāng)程序從外存裝入內(nèi)存時,需將程序中的邏輯地址(相對地址)轉(zhuǎn)換為內(nèi)存中的物理地址(絕對地址)。這一過程可通過地址重定位完成。根據(jù)重定位時機的不同,可以分為靜態(tài)重定位和動態(tài)重定位。靜態(tài)重定位是在程序裝入內(nèi)存時進行;而動態(tài)重定位是在程序運行時進行,動態(tài)重定位通常需要硬件的支持。
③ 內(nèi)存的共享和保護。內(nèi)存管理要實現(xiàn)用戶程序?qū)?nèi)存資源的共享,即當(dāng)多個程序包含同一個公用代碼段時,這個公用代碼段在內(nèi)存中只保留一個副本。內(nèi)存的共享提高了內(nèi)存資源的利用率。內(nèi)存的保護指的是要保證不同用戶的程序之間互不干擾、相互保密,尤其是不允許訪問操作系統(tǒng)的程序和數(shù)據(jù),保證用戶和系統(tǒng)程序在內(nèi)存中的信息不被破壞。
④ 內(nèi)存的邏輯擴充。內(nèi)存容量的有限性直接制約了進程的并發(fā)執(zhí)行效率,而且也限制了在內(nèi)存中能運行的應(yīng)用程序的規(guī)模。為了解決內(nèi)存的“瓶頸”問題,必須實現(xiàn)內(nèi)存的擴充。內(nèi)存擴充可采用物理擴充和邏輯擴充兩種方式。由于受客觀因素的影響,無限制地進行物理擴充是不現(xiàn)實的,也是不經(jīng)濟的。借助于軟件技術(shù),可以對內(nèi)存進行邏輯擴充。操作系統(tǒng)主要采用覆蓋、交換和虛擬存儲等軟件技術(shù)來實現(xiàn)對內(nèi)存的邏輯擴充,使進程的內(nèi)存空間擴大,從而提高內(nèi)存利用率。
(3)設(shè)備管理
設(shè)備管理的主要任務(wù)是對各種外圍設(shè)備進行管理,響應(yīng)用戶進程提出的I/O請求,為用戶進程分配I/O設(shè)備,控制CPU與外設(shè)間的數(shù)據(jù)交換等。設(shè)備管理的目標(biāo):一是方便用戶使用設(shè)備,二是提高CPU與I/O設(shè)備的利用率。設(shè)備管理的具體功能如下。
① 完成設(shè)備的分配與回收。根據(jù)用戶的I/O請求分配相應(yīng)的設(shè)備,并在使用完后回收該設(shè)備,尤其要解決在多用戶間共享I/O設(shè)備資源等問題。
② 實現(xiàn)設(shè)備獨立性。設(shè)備獨立性是指提供統(tǒng)一的I/O設(shè)備接口,使應(yīng)用程序獨立于物理設(shè)備,提高可適應(yīng)性。
③ 控制設(shè)備操作。利用設(shè)備驅(qū)動程序和控制程序完成對設(shè)備的操作。
④ 實現(xiàn)虛擬設(shè)備。虛擬設(shè)備(Virtual Device)是為實現(xiàn)獨享設(shè)備的共享而提出的。當(dāng)多個進程要共享某個獨享設(shè)備時,可通過虛擬技術(shù)(如SPOOLing技術(shù))將其轉(zhuǎn)換為幾個邏輯設(shè)備,分別為多個進程服務(wù)。對于每個進程來說,就如同獨占該物理設(shè)備一樣。
⑤ 實現(xiàn)緩沖區(qū)管理。為了解決CPU和I/O設(shè)備之間的速度不匹配問題,必須使用緩沖區(qū)。可通過單緩沖區(qū)、雙緩沖區(qū)、多緩沖區(qū)和緩沖池技術(shù)來實現(xiàn),這樣可提高CPU和I/O設(shè)備的利用率。
(4)文件管理
文件管理又稱為外存管理。外存是存放系統(tǒng)中的信息資源的場所,信息資源主要包括各類程序和數(shù)據(jù)等軟件資源,它們主要以文件的形式存放。文件管理的主要任務(wù)是對各種文件(包括用戶文件和系統(tǒng)文件)進行有效管理,實現(xiàn)對文件的按名存??;解決文件在外存上的存儲、共享、保密和保護問題,采用合理的分配策略來提高外存資源的利用率。文件管理的具體功能如下。
① 實現(xiàn)文件的按名存取。通過文件名找到該文件的具體存儲區(qū)域并進行訪問。
② 文件存儲空間管理。解決如何分配和回收文件空間,以提高外存空間利用率和對文件的讀/寫性能。
③ 文件和目錄管理。解決文件的分類與檢索問題,采用合適的目錄結(jié)構(gòu)將提高文件的訪問效率。提供對文件和目錄操作的手段,如文件的讀、寫、復(fù)制、刪除等??赏ㄟ^系統(tǒng)調(diào)用方式和命令方式來實現(xiàn)。
④ 文件的存取控制。解決文件的安全和保護問題,文件信息的安全在多用戶系統(tǒng)中顯得尤為重要。
(5)用戶接口
為了方便用戶使用計算機,操作系統(tǒng)提供了用戶接口。用戶接口的功能是提供一個友好的用戶使用計算機的途徑。操作系統(tǒng)的用戶接口有以下兩種:
① 命令接口。命令接口是向一般操作級用戶提供的,它由字符方式下的鍵盤命令和圖形方式下的鼠標(biāo)命令組成。
② 程序接口。程序接口是向編程人員提供的,又稱為應(yīng)用程序編程接口(API),它由一系列的系統(tǒng)調(diào)用組成。庫函數(shù)是系統(tǒng)調(diào)用的高級形式,通過程序接口,編程人員可以在程序中調(diào)用操作系統(tǒng)的內(nèi)核代碼,完成一些與硬件相關(guān)的復(fù)雜功能。
1.1.3 操作系統(tǒng)的邏輯結(jié)構(gòu)
操作系統(tǒng)是個十分龐大的系統(tǒng)軟件,它由幾萬行到幾百萬行不等的代碼組成,這些代碼被分散在操作系統(tǒng)的多個功能模塊中。那么,這些功能模塊是如何集成在一起的呢?這就是操作系統(tǒng)的邏輯(或整體)結(jié)構(gòu)問題。事實上,每個操作系統(tǒng)從邏輯的角度來看都可以分為兩個部分:一是內(nèi)核,二是外殼。其中,內(nèi)核(Kernel)部分是緊挨著硬件的部分,主要完成與硬件相關(guān)的功能,如操作系統(tǒng)的幾大功能模塊;而外殼(Shell)部分主要完成與硬件無關(guān)的功能,如提供實用程序和命令解釋功能等,如圖1-2所示。如果應(yīng)用程序要使用內(nèi)核的功能,則必須通過系統(tǒng)調(diào)用才能完成。

圖1-2 操作系統(tǒng)的邏輯結(jié)構(gòu)
隨著操作系統(tǒng)設(shè)計技術(shù)和思想的發(fā)展,內(nèi)核本身的組織結(jié)構(gòu)也產(chǎn)生了多樣性,如整體模塊結(jié)構(gòu)、分層結(jié)構(gòu)、客戶機/服務(wù)器結(jié)構(gòu)和微內(nèi)核結(jié)構(gòu)等。圖1-3所示為內(nèi)核分層的結(jié)構(gòu)圖。

圖1-3 分層式的內(nèi)核結(jié)構(gòu)
- Mastering ElasticSearch
- Linux內(nèi)核完全注釋(20周年版·第2版)
- Kubernetes網(wǎng)絡(luò)權(quán)威指南:基礎(chǔ)、原理與實踐
- SharePoint 2013 WCM Advanced Cookbook
- Kubernetes從入門到實踐
- 網(wǎng)絡(luò)操作系統(tǒng)管理與應(yīng)用(第三版)
- VMware NSX Cookbook
- Hands-On GPU Programming with Python and CUDA
- Learn SwiftUI
- UI設(shè)計手繪表現(xiàn)從入門到精通
- Microsoft Hyper-V Cluster Design
- 操作系統(tǒng)之哲學(xué)原理第2版
- Learning Joomla! 3 Extension Development(Third Edition)
- Website Development with PyroCMS
- Windows 8玩全不求人