操作系統(tǒng)概述與核心概念
計(jì)算機(jī)系統(tǒng)中包含一個(gè)基本的程序集合,稱為操作系統(tǒng)(OS)。操作系統(tǒng)是一款用于管理軟硬件資源的軟件。
操作系統(tǒng)的組成包括:
- 內(nèi)核(負(fù)責(zé)進(jìn)程管理、內(nèi)存管理、驅(qū)動(dòng)管理等)
- 其他程序(如數(shù)據(jù)庫、shell程序等)
設(shè)計(jì)操作系統(tǒng)的目的是:
- 對上,為用戶程序提供一個(gè)良好的執(zhí)行環(huán)境
- 對下,與硬件交互,管理所有軟硬件資源
計(jì)算機(jī)的軟件和硬件都具有高內(nèi)聚低耦合的特點(diǎn),具體表現(xiàn)為:
- 軟硬件體系結(jié)構(gòu)的層狀結(jié)構(gòu)
- 訪問操作系統(tǒng)必須使用系統(tǒng)調(diào)用,這實(shí)際上是系統(tǒng)提供的函數(shù)
- 任何程序一旦訪問硬件,必須貫穿整個(gè)軟硬件體系結(jié)構(gòu)
- 庫可能會(huì)在底層封裝系統(tǒng)調(diào)用
在整個(gè)計(jì)算機(jī)軟硬件架構(gòu)中,操作系統(tǒng)的定位是一款純粹的“管理”軟件。
- 什么是操作系統(tǒng)(OS)
操作系統(tǒng)(Operating System, OS)是計(jì)算機(jī)系統(tǒng)中的一個(gè)重要組件,其主要功能是作為硬件與用戶之間的中介,為用戶提供計(jì)算機(jī)的基本功能。操作系統(tǒng)的作用可以簡單概括為:它負(fù)責(zé)管理計(jì)算機(jī)的硬件資源,調(diào)度并管理軟件的運(yùn)行,使得應(yīng)用程序能夠在不直接訪問硬件的情況下執(zhí)行任務(wù)。
操作系統(tǒng)的定義與功能
操作系統(tǒng)是管理計(jì)算機(jī)硬件與軟件資源的程序集合,能夠?yàn)橛?jì)算機(jī)的其他應(yīng)用程序提供服務(wù)。操作系統(tǒng)主要通過以下幾項(xiàng)功能來實(shí)現(xiàn)這一目標(biāo):
- 硬件管理:操作系統(tǒng)需要與計(jì)算機(jī)硬件打交道,控制硬件設(shè)備如CPU、內(nèi)存、磁盤等的使用。
- 資源分配與調(diào)度:操作系統(tǒng)負(fù)責(zé)資源的調(diào)配,使得各個(gè)程序能夠高效地共享計(jì)算機(jī)的計(jì)算資源。
- 程序執(zhí)行管理:操作系統(tǒng)負(fù)責(zé)程序的創(chuàng)建、執(zhí)行與終止,并保證多任務(wù)處理時(shí)程序間的協(xié)作與競爭。
- 用戶接口提供:操作系統(tǒng)提供用戶與計(jì)算機(jī)交互的接口,通常是通過命令行(CLI)或圖形用戶界面(GUI)。
操作系統(tǒng)的歷史與發(fā)展
操作系統(tǒng)的歷史可以追溯到計(jì)算機(jī)技術(shù)的早期。在最初的階段,計(jì)算機(jī)的操作需要人工干預(yù),計(jì)算機(jī)程序必須被手動(dòng)輸入并執(zhí)行。隨著計(jì)算機(jī)技術(shù)的進(jìn)步,操作系統(tǒng)逐漸發(fā)展起來,以便能夠自動(dòng)管理計(jì)算機(jī)資源并提供用戶接口。
- 第一代操作系統(tǒng)(1940s-1950s):這一時(shí)期的計(jì)算機(jī)操作系統(tǒng)基本上是無操作系統(tǒng)的,程序和數(shù)據(jù)被直接輸入到機(jī)器中。
- 第二代操作系統(tǒng)(1950s-1960s):隨著硬件的發(fā)展,批處理系統(tǒng)(batch processing)應(yīng)運(yùn)而生。計(jì)算機(jī)操作的自動(dòng)化得到了初步的實(shí)現(xiàn)。
- 第三代操作系統(tǒng)(1960s-1970s):引入了多道程序設(shè)計(jì)(multiprogramming)和分時(shí)系統(tǒng)(timesharing)。這一時(shí)期的操作系統(tǒng)可以同時(shí)處理多個(gè)任務(wù),并支持多個(gè)用戶共享計(jì)算資源。
- 第四代操作系統(tǒng)(1980s-至今):操作系統(tǒng)進(jìn)入了多任務(wù)、多用戶的時(shí)代,廣泛應(yīng)用于個(gè)人計(jì)算機(jī)、工作站和大型計(jì)算機(jī)系統(tǒng)中。隨著網(wǎng)絡(luò)技術(shù)的出現(xiàn),分布式操作系統(tǒng)逐漸發(fā)展起來。
操作系統(tǒng)的作用:用戶與硬件之間的橋梁
操作系統(tǒng)充當(dāng)了用戶與計(jì)算機(jī)硬件之間的“橋梁”,它負(fù)責(zé)隱藏硬件的復(fù)雜性,為用戶和應(yīng)用程序提供一個(gè)簡潔、高效的接口。用戶通過操作系統(tǒng)與硬件交互,操作系統(tǒng)則通過對硬件的管理與調(diào)度,使得硬件資源能夠有效地被多種應(yīng)用程序所共享。
操作系統(tǒng)的分類
操作系統(tǒng)可以根據(jù)不同的標(biāo)準(zhǔn)進(jìn)行分類,常見的分類方式包括:
- 批處理操作系統(tǒng)(Batch Processing OS):這種操作系統(tǒng)設(shè)計(jì)用于處理大量的批量任務(wù),用戶提交任務(wù)后,操作系統(tǒng)會(huì)自動(dòng)調(diào)度任務(wù)并逐一執(zhí)行。批處理操作系統(tǒng)常用于早期的計(jì)算機(jī)環(huán)境。
- 分時(shí)操作系統(tǒng)(Time-sharing OS):分時(shí)操作系統(tǒng)允許多個(gè)用戶同時(shí)使用計(jì)算機(jī)資源,通過快速切換任務(wù),使得每個(gè)用戶都能在較短時(shí)間內(nèi)獲得計(jì)算資源。早期的unix操作系統(tǒng)就是典型的分時(shí)操作系統(tǒng)。
- 實(shí)時(shí)操作系統(tǒng)(Real-time OS):實(shí)時(shí)操作系統(tǒng)被設(shè)計(jì)用來處理對時(shí)間要求嚴(yán)格的任務(wù),常用于嵌入式系統(tǒng)、航空航天、醫(yī)療設(shè)備等領(lǐng)域。
- 嵌入式操作系統(tǒng)(Embedded OS):這種操作系統(tǒng)通常在硬件中嵌入式運(yùn)行,用于嵌入式設(shè)備,如智能手機(jī)、家電、汽車系統(tǒng)等。嵌入式操作系統(tǒng)需要具備小巧、實(shí)時(shí)性強(qiáng)、穩(wěn)定性高等特點(diǎn)。
- 分布式操作系統(tǒng)(Distributed OS):分布式操作系統(tǒng)管理一個(gè)由多個(gè)計(jì)算機(jī)組成的網(wǎng)絡(luò)系統(tǒng),多個(gè)計(jì)算機(jī)共同協(xié)作完成任務(wù),用戶可以像使用單臺(tái)計(jì)算機(jī)一樣操作分布式系統(tǒng)。
- 操作系統(tǒng)的基本功能
操作系統(tǒng)的主要功能包括進(jìn)程管理、內(nèi)存管理、文件系統(tǒng)管理、設(shè)備管理、安全與保護(hù)以及用戶接口的提供。下面詳細(xì)說明這些基本功能。
進(jìn)程管理
進(jìn)程是操作系統(tǒng)執(zhí)行中的基本單位,是程序在執(zhí)行過程中的實(shí)例。操作系統(tǒng)需要管理多個(gè)進(jìn)程的調(diào)度、執(zhí)行以及終止,確保每個(gè)進(jìn)程在合理的時(shí)間內(nèi)運(yùn)行,并避免進(jìn)程之間的干擾。操作系統(tǒng)通過進(jìn)程調(diào)度算法(如先來先服務(wù)、輪轉(zhuǎn)法等)實(shí)現(xiàn)高效的進(jìn)程管理。
內(nèi)存管理
內(nèi)存管理是操作系統(tǒng)的一項(xiàng)重要功能,涉及到如何有效地分配和回收內(nèi)存空間。操作系統(tǒng)需要為每個(gè)進(jìn)程分配一定的內(nèi)存空間,并通過分頁、分段等技術(shù)管理內(nèi)存,避免內(nèi)存碎片和浪費(fèi)。
文件系統(tǒng)管理
操作系統(tǒng)提供了文件系統(tǒng)管理功能,它允許用戶創(chuàng)建、刪除、讀寫文件。操作系統(tǒng)需要管理存儲(chǔ)在磁盤上的文件數(shù)據(jù),并且為用戶提供高效的文件存取方式。文件系統(tǒng)的設(shè)計(jì)通常涉及到目錄結(jié)構(gòu)、文件存儲(chǔ)方式等。
設(shè)備管理
設(shè)備管理包括對計(jì)算機(jī)硬件設(shè)備的管理,如硬盤、打印機(jī)、顯示器等。操作系統(tǒng)通過設(shè)備驅(qū)動(dòng)程序與硬件進(jìn)行交互,控制設(shè)備的輸入輸出操作。
安全與保護(hù)
安全性和保護(hù)是操作系統(tǒng)的重要組成部分,操作系統(tǒng)需要防止未授權(quán)的訪問、數(shù)據(jù)泄露等安全問題。此外,操作系統(tǒng)還需要保證不同進(jìn)程之間的相互獨(dú)立,避免因進(jìn)程間的錯(cuò)誤或沖突導(dǎo)致系統(tǒng)崩潰。
用戶接口
操作系統(tǒng)為用戶提供的接口是用戶與計(jì)算機(jī)交互的橋梁。早期的操作系統(tǒng)使用命令行接口(CLI),而現(xiàn)代操作系統(tǒng)則提供圖形用戶界面(GUI),使得操作更加直觀和友好。
操作系統(tǒng)的體系結(jié)構(gòu)
操作系統(tǒng)的體系結(jié)構(gòu)設(shè)計(jì)決定了其如何管理硬件資源、處理多任務(wù)以及與應(yīng)用程序交互。操作系統(tǒng)的體系結(jié)構(gòu)可分為多種類型,包括單核與多核架構(gòu)、微內(nèi)核與宏內(nèi)核的設(shè)計(jì),以及分布式操作系統(tǒng)的結(jié)構(gòu)。每種設(shè)計(jì)都有其特點(diǎn)與適用的場景。
- 單核與多核操作系統(tǒng)
操作系統(tǒng)的體系結(jié)構(gòu)通常與計(jì)算機(jī)硬件的處理器架構(gòu)密切相關(guān)。單核和多核處理器是現(xiàn)代計(jì)算機(jī)中常見的處理器類型。
單核操作系統(tǒng)
單核處理器是指計(jì)算機(jī)中只有一個(gè)中央處理單元(CPU)的處理器。在單核處理器上,操作系統(tǒng)通過調(diào)度算法來模擬多任務(wù)處理。操作系統(tǒng)在不同的時(shí)間段內(nèi)切換任務(wù),確保每個(gè)任務(wù)獲得一定的CPU時(shí)間。雖然操作系統(tǒng)能夠執(zhí)行多個(gè)任務(wù),但實(shí)際上,在任何給定的時(shí)刻,只能有一個(gè)任務(wù)在運(yùn)行。
多核操作系統(tǒng)
多核處理器包含多個(gè)CPU核心,可以在同一時(shí)間并行執(zhí)行多個(gè)任務(wù)。多核操作系統(tǒng)能夠利用多個(gè)CPU核心來同時(shí)處理多個(gè)任務(wù),從而顯著提高系統(tǒng)的性能和響應(yīng)速度。操作系統(tǒng)需要能夠有效地分配任務(wù)到不同的核心,并協(xié)調(diào)各個(gè)核心之間的工作,確保系統(tǒng)資源的合理利用。
在多核系統(tǒng)中,操作系統(tǒng)的調(diào)度器需要考慮核心間的負(fù)載均衡問題,以便在多個(gè)核心上均勻分配進(jìn)程負(fù)載。此外,多核操作系統(tǒng)通常需要優(yōu)化內(nèi)存管理,以確保多個(gè)核心可以高效地訪問共享內(nèi)存。
- 微內(nèi)核與宏內(nèi)核的比較
操作系統(tǒng)內(nèi)核是操作系統(tǒng)的核心部分,負(fù)責(zé)管理硬件、執(zhí)行進(jìn)程、管理內(nèi)存等。操作系統(tǒng)的內(nèi)核設(shè)計(jì)有兩種主要的架構(gòu):微內(nèi)核(Microkernel)和宏內(nèi)核(Monolithic Kernel)。
微內(nèi)核
微內(nèi)核架構(gòu)將操作系統(tǒng)的功能最小化,只保留最基本的內(nèi)核功能,如進(jìn)程調(diào)度、內(nèi)存管理和基本的設(shè)備驅(qū)動(dòng)程序。其余的操作系統(tǒng)服務(wù)(如文件系統(tǒng)、網(wǎng)絡(luò)協(xié)議棧等)都運(yùn)行在用戶空間中,而非內(nèi)核空間。微內(nèi)核的一個(gè)重要特點(diǎn)是模塊化,系統(tǒng)的各個(gè)部分可以獨(dú)立升級和維護(hù)。
優(yōu)點(diǎn):
- 穩(wěn)定性與安全性:由于非核心服務(wù)運(yùn)行在用戶空間,微內(nèi)核設(shè)計(jì)可以有效隔離系統(tǒng)服務(wù),降低系統(tǒng)崩潰的風(fēng)險(xiǎn)。
- 易于擴(kuò)展:微內(nèi)核提供了更高的靈活性,新的功能可以通過獨(dú)立模塊添加到系統(tǒng)中。
缺點(diǎn):
- 性能開銷:由于許多服務(wù)運(yùn)行在用戶空間,微內(nèi)核需要通過上下文切換和消息傳遞來進(jìn)行通信,這會(huì)帶來一定的性能損失。
代表性操作系統(tǒng):MINIX、QNX、L4
宏內(nèi)核
宏內(nèi)核是將操作系統(tǒng)的所有功能(包括進(jìn)程管理、內(nèi)存管理、文件系統(tǒng)、網(wǎng)絡(luò)協(xié)議棧等)都集成在一個(gè)大內(nèi)核中的設(shè)計(jì)。所有的操作系統(tǒng)服務(wù)都運(yùn)行在內(nèi)核空間內(nèi),操作系統(tǒng)在執(zhí)行時(shí)具有更高的效率。
優(yōu)點(diǎn):
- 高效性:由于所有服務(wù)都運(yùn)行在內(nèi)核空間,內(nèi)核之間的通信非常高效,減少了上下文切換帶來的開銷。
- 簡化的設(shè)計(jì):宏內(nèi)核提供了集中的服務(wù),簡化了系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。
缺點(diǎn):
- 易發(fā)生崩潰:所有服務(wù)共享內(nèi)核空間,若某個(gè)服務(wù)出現(xiàn)問題,可能導(dǎo)致整個(gè)系統(tǒng)崩潰。
- 難于擴(kuò)展與維護(hù):當(dāng)系統(tǒng)復(fù)雜度增加時(shí),宏內(nèi)核的維護(hù)和擴(kuò)展變得更加困難。
代表性操作系統(tǒng):Linux、UNIX、Windows NT
- 分布式操作系統(tǒng)
分布式操作系統(tǒng)是一種支持多臺(tái)計(jì)算機(jī)協(xié)同工作的操作系統(tǒng),它將多臺(tái)計(jì)算機(jī)資源整合成一個(gè)統(tǒng)一的系統(tǒng),用戶可以像操作單臺(tái)計(jì)算機(jī)一樣使用整個(gè)系統(tǒng)。分布式操作系統(tǒng)的目標(biāo)是提供透明性、可伸縮性和高可用性。
分布式操作系統(tǒng)的特點(diǎn)
- 透明性:分布式操作系統(tǒng)的目標(biāo)之一是使用戶和應(yīng)用程序感知不到底層系統(tǒng)的分布式特性。用戶不需要知道計(jì)算機(jī)是分布式的,可以像操作單臺(tái)計(jì)算機(jī)一樣使用它。
- 負(fù)載均衡:操作系統(tǒng)通過將任務(wù)分配給不同的節(jié)點(diǎn)來實(shí)現(xiàn)負(fù)載均衡。通過高效的任務(wù)調(diào)度和數(shù)據(jù)分布策略,可以優(yōu)化系統(tǒng)性能。
- 容錯(cuò)性:分布式操作系統(tǒng)通常會(huì)實(shí)現(xiàn)冗余和備份機(jī)制,確保即使某個(gè)節(jié)點(diǎn)發(fā)生故障,系統(tǒng)仍然能夠繼續(xù)運(yùn)行。
分布式操作系統(tǒng)的挑戰(zhàn)
- 網(wǎng)絡(luò)延遲與帶寬限制:由于分布式操作系統(tǒng)依賴于網(wǎng)絡(luò)進(jìn)行節(jié)點(diǎn)間通信,因此網(wǎng)絡(luò)的延遲和帶寬限制可能會(huì)影響系統(tǒng)的性能。
- 一致性問題:分布式系統(tǒng)中的數(shù)據(jù)可能存在多個(gè)副本,確保數(shù)據(jù)一致性是一個(gè)關(guān)鍵問題。常見的一致性協(xié)議有Paxos、Raft等。
- 故障檢測與恢復(fù):在分布式系統(tǒng)中,節(jié)點(diǎn)可能會(huì)出現(xiàn)故障,操作系統(tǒng)需要能夠檢測故障并采取恢復(fù)措施,確保系統(tǒng)的高可用性。
代表性操作系統(tǒng):Google’s GFS、hadoop、Amazon’s DynamoDB