青島隊(duì)建網(wǎng)站/seo優(yōu)化褲子關(guān)鍵詞
概念
任何計(jì)算機(jī)系統(tǒng)都包含?個(gè)基本的程序集合,稱為操作系統(tǒng)(OS)。
其核心功能如圖片所示,包括:
- 內(nèi)核 (Kernel):
內(nèi)核是操作系統(tǒng)的核心部分,被認(rèn)為是狹義上的操作系統(tǒng),直接與硬件打交道。負(fù)責(zé)進(jìn)程管理、內(nèi)存管理、文件管理和設(shè)備管理。
在圖片中,內(nèi)核被描述為包含關(guān)鍵功能,例如:- 進(jìn)程管理:如何調(diào)度任務(wù)、切換任務(wù)、分配 CPU 時(shí)間片。
- 內(nèi)存管理:分配和釋放內(nèi)存、提供虛擬內(nèi)存功能。
- 文件管理:存儲(chǔ)和訪問(wèn)磁盤上的文件。
- 驅(qū)動(dòng)管理:硬件與系統(tǒng)的接口。
- 其他程序:
除了內(nèi)核外,操作系統(tǒng)還包括輔助用戶交互和程序開(kāi)發(fā)的組件,例如函數(shù)庫(kù)、Shell 程序等。
操作系統(tǒng)的設(shè)計(jì)目的
對(duì)下管理硬件資源(不是目的,是手段)
如圖所示,操作系統(tǒng)與硬件直接交互,管理所有軟硬件資源。它可以屏蔽底層硬件的復(fù)雜性,為應(yīng)用程序提供統(tǒng)一的接口。例如:
- CPU 時(shí)間的分配;
- 內(nèi)存的分配與回收;
- 文件的讀取與寫入。
對(duì)上為用戶和應(yīng)用程序提供環(huán)境(目的,服務(wù)用戶)
操作系統(tǒng)為用戶程序提供執(zhí)行環(huán)境,包括:
- 抽象硬件: 屏蔽底層復(fù)雜的硬件接口;
- 系統(tǒng)調(diào)用: 提供基礎(chǔ)功能調(diào)用接口,例如文件操作、內(nèi)存分配等。
圖片中通過(guò)銀行窗口的比喻形象地說(shuō)明了這一點(diǎn):
- 用戶(用戶程序)與銀行柜員(操作系統(tǒng))交互,柜員接收用戶指令,完成后臺(tái)操作;
- 銀行后臺(tái)資源(硬件)被柜員高效管理,用戶無(wú)需直接接觸。
操作系統(tǒng)如何通過(guò)分層結(jié)構(gòu)和接口設(shè)計(jì)實(shí)現(xiàn)資源管理和安全性?
軟件硬件系統(tǒng)結(jié)構(gòu)層狀結(jié)構(gòu)
理解:
- 軟件和硬件系統(tǒng)是層次化的,系統(tǒng)的不同層次之間通過(guò)接口進(jìn)行交互。
- 硬件位于底層,它是最基礎(chǔ)的物理資源,直接負(fù)責(zé)執(zhí)行指令和存儲(chǔ)數(shù)據(jù)。
- 操作系統(tǒng)位于硬件之上,充當(dāng)中間層,負(fù)責(zé)管理硬件資源并為上層應(yīng)用程序提供接口。
- 應(yīng)用程序在最上層運(yùn)行,用戶通過(guò)應(yīng)用程序與硬件進(jìn)行間接交互。
例子:
- 用戶通過(guò)一個(gè)文本編輯器(應(yīng)用程序)保存文件,實(shí)際調(diào)用了操作系統(tǒng)的文件系統(tǒng)接口,最終將數(shù)據(jù)寫入硬件(磁盤)。
- 這種分層結(jié)構(gòu)讓硬件的復(fù)雜性被操作系統(tǒng)屏蔽,開(kāi)發(fā)者只需關(guān)注高層的接口,而不需要了解硬件的底層操作。
訪問(wèn)操作系統(tǒng),必須使用系統(tǒng)調(diào)用
理解:
- 系統(tǒng)調(diào)用是應(yīng)用程序與操作系統(tǒng)交互的橋梁。通過(guò)系統(tǒng)調(diào)用,應(yīng)用程序可以訪問(wèn)操作系統(tǒng)管理的資源(如文件、網(wǎng)絡(luò)、內(nèi)存等)。
- 系統(tǒng)調(diào)用本質(zhì)上就是操作系統(tǒng)提供的一組函數(shù),通過(guò)這些函數(shù),應(yīng)用程序可以向操作系統(tǒng)發(fā)出請(qǐng)求,完成特定的任務(wù)。
例子:
- 程序需要讀取文件時(shí),會(huì)通過(guò)調(diào)用系統(tǒng)調(diào)用
read()
請(qǐng)求操作系統(tǒng)打開(kāi)文件、讀取內(nèi)容。 - 這些調(diào)用本質(zhì)上是程序員使用的函數(shù),但這些函數(shù)是操作系統(tǒng)實(shí)現(xiàn)的,而不是直接操作硬件。
關(guān)鍵點(diǎn):
- 系統(tǒng)調(diào)用是操作系統(tǒng)對(duì)外暴露的功能接口,它們是固定的,程序必須通過(guò)這些接口訪問(wèn)硬件資源。
訪問(wèn)硬件時(shí),必須穿越整個(gè)軟件硬件體系結(jié)構(gòu)
理解:
- 如果程序需要訪問(wèn)硬件(如讀取硬盤、打印文件等),操作必須逐層向下傳遞:
- 程序向操作系統(tǒng)發(fā)出系統(tǒng)調(diào)用請(qǐng)求。
- 操作系統(tǒng)內(nèi)部將請(qǐng)求映射到具體的硬件驅(qū)動(dòng)程序。
- 硬件驅(qū)動(dòng)直接控制硬件完成任務(wù)。
- 這種機(jī)制確保了硬件操作的安全性和一致性,因?yàn)椴僮飨到y(tǒng)充當(dāng)了硬件和程序之間的“守門人”。
例子:
- 一個(gè)瀏覽器需要加載網(wǎng)頁(yè),最終會(huì)訪問(wèn)網(wǎng)絡(luò)適配器(硬件)發(fā)送請(qǐng)求。這個(gè)過(guò)程包括:
- 瀏覽器調(diào)用系統(tǒng)的網(wǎng)絡(luò) API;
- 操作系統(tǒng)將請(qǐng)求傳遞給網(wǎng)絡(luò)驅(qū)動(dòng)程序;
- 驅(qū)動(dòng)程序控制網(wǎng)絡(luò)硬件發(fā)送數(shù)據(jù)包。
關(guān)鍵點(diǎn):
- 程序無(wú)法直接訪問(wèn)硬件,必須經(jīng)過(guò)操作系統(tǒng)。操作系統(tǒng)確保硬件資源的安全和公平使用。
庫(kù)函數(shù)可能底層封裝了系統(tǒng)調(diào)用
理解:
- 庫(kù)函數(shù)是對(duì)系統(tǒng)調(diào)用的進(jìn)一步封裝,提供了更高級(jí)、更易用的功能。底層的系統(tǒng)調(diào)用是基礎(chǔ)功能,而庫(kù)函數(shù)對(duì)其進(jìn)行了擴(kuò)展和優(yōu)化。
- 通過(guò)調(diào)用庫(kù)函數(shù),開(kāi)發(fā)者無(wú)需直接與復(fù)雜的系統(tǒng)調(diào)用打交道,而是通過(guò)更簡(jiǎn)單的接口完成同樣的任務(wù)。
例子:
- C 語(yǔ)言的
printf()
函數(shù)用于輸出內(nèi)容到終端,它底層調(diào)用了操作系統(tǒng)的write()
系統(tǒng)調(diào)用來(lái)完成實(shí)際的輸出。 - 類似地,標(biāo)準(zhǔn)庫(kù)函數(shù)
fopen()
封裝了文件操作的系統(tǒng)調(diào)用,使開(kāi)發(fā)者可以更簡(jiǎn)單地處理文件。
關(guān)鍵點(diǎn):
- 庫(kù)函數(shù)是對(duì)系統(tǒng)調(diào)用的進(jìn)一步抽象,提供了更方便的功能,同時(shí)隱藏了底層實(shí)現(xiàn)細(xì)節(jié)。
小結(jié)
這四個(gè)要點(diǎn)說(shuō)明了操作系統(tǒng)作為用戶程序與硬件之間的橋梁,如何通過(guò)分層結(jié)構(gòu)和接口設(shè)計(jì)實(shí)現(xiàn)資源管理和安全性:
- 軟件硬件的層狀結(jié)構(gòu)讓復(fù)雜的硬件操作被逐層抽象。
- 系統(tǒng)調(diào)用是訪問(wèn)操作系統(tǒng)的唯一合法方式,程序必須通過(guò)它請(qǐng)求資源。
- 程序訪問(wèn)硬件時(shí),必須經(jīng)過(guò)操作系統(tǒng)的管理,確保硬件安全和公平。
- 庫(kù)函數(shù)對(duì)系統(tǒng)調(diào)用進(jìn)行了封裝,使開(kāi)發(fā)更加方便。
這種機(jī)制體現(xiàn)了操作系統(tǒng)設(shè)計(jì)的核心思想——通過(guò)抽象和封裝,隱藏復(fù)雜性,提供易用性,同時(shí)確保安全性和穩(wěn)定性。
操作系統(tǒng)的核心功能
管理。
在整個(gè)計(jì)算機(jī)軟硬件架構(gòu)中,操作系統(tǒng)的定位是:一款純正的“搞管理”的軟件。 (決策,執(zhí)行)
管理時(shí),管理與被管理者可以不需要見(jiàn)面:
一個(gè)學(xué)校的校長(zhǎng)(管理者)不需要直接與每個(gè)學(xué)生(被管理者)接觸,就可以管理整個(gè)學(xué)校。這是因?yàn)樾iL(zhǎng)可以通過(guò)輔導(dǎo)員或者班主任提供的學(xué)生數(shù)據(jù)(如成績(jī)、出勤率等)來(lái)完成管理。
管理者(如操作系統(tǒng))和被管理者(如進(jìn)程、內(nèi)存、文件等)之間的交互并不需要直接接觸。它們通過(guò)數(shù)據(jù)(描述信息)來(lái)完成管理,而不是通過(guò)面對(duì)面或者直接交互。換句話說(shuō),操作系統(tǒng)不需要直接干預(yù)具體的硬件或程序,只需要維護(hù)這些被管理對(duì)象的狀態(tài)和描述信息,然后根據(jù)需要進(jìn)行操作。
管理者和被管理者,根據(jù)“數(shù)據(jù)”進(jìn)行管理:
數(shù)據(jù)是管理的核心。操作系統(tǒng)不直接操作資源本身,而是通過(guò)對(duì)資源數(shù)據(jù)的讀取和操作來(lái)實(shí)現(xiàn)管理。
管理的核心是數(shù)據(jù),管理者通過(guò)記錄和操作被管理者的相關(guān)數(shù)據(jù)實(shí)現(xiàn)對(duì)其的控制。在操作系統(tǒng)中,這些數(shù)據(jù)通常存儲(chǔ)在內(nèi)核中,描述了被管理資源的狀態(tài)和屬性。
不需要見(jiàn)面,由中間層獲取得到數(shù)據(jù):
在學(xué)校中,校長(zhǎng)通過(guò)輔導(dǎo)員獲取學(xué)生的信息,而不需要直接接觸每個(gè)學(xué)生。輔導(dǎo)員就像操作系統(tǒng)中的“中間層”,負(fù)責(zé)收集數(shù)據(jù)并提供給校長(zhǎng)。
操作系統(tǒng)作為“中間層”負(fù)責(zé)采集和維護(hù)資源數(shù)據(jù),通過(guò)這些數(shù)據(jù)為用戶程序提供服務(wù)。被管理者(如硬件設(shè)備、程序)本身并不會(huì)直接暴露其內(nèi)部信息,而是通過(guò)操作系統(tǒng)的中間層將這些數(shù)據(jù)呈現(xiàn)給管理者。
將上文所述例子進(jìn)行延伸,如果學(xué)生的數(shù)量過(guò)多則會(huì)造成管理的不便,所以就會(huì)使用數(shù)據(jù)結(jié)構(gòu)將學(xué)生的信息進(jìn)行存儲(chǔ),用結(jié)構(gòu)體將一個(gè)學(xué)生的信息進(jìn)行存儲(chǔ),然后將所有結(jié)構(gòu)體進(jìn)行聯(lián)系。
同樣,操作系統(tǒng)對(duì)管理的進(jìn)程、內(nèi)存、文件等就可以將他們的狀態(tài)和描述信息進(jìn)行存儲(chǔ)在結(jié)構(gòu)體中,然后使用合適的數(shù)據(jù)結(jié)構(gòu)進(jìn)行管理,進(jìn)行增刪查改。
系統(tǒng)調(diào)用與庫(kù)函數(shù)
系統(tǒng)調(diào)用
操作系統(tǒng)要向上提供服務(wù)。
但是操作系統(tǒng)不信任任何用戶,所以會(huì)有系統(tǒng)調(diào)用的概念。
操作系統(tǒng)對(duì)外暴露的接口稱為系統(tǒng)調(diào)用,是用戶程序與操作系統(tǒng)交互的橋梁。
通過(guò)接口可以降低操作系統(tǒng)和用戶之間的耦合度,不同的服務(wù)對(duì)應(yīng)不同的接口,提高安全性。
例如:
- 文件操作:創(chuàng)建、刪除、讀寫文件;
- 進(jìn)程操作:創(chuàng)建進(jìn)程、終止進(jìn)程;
- 內(nèi)存操作:分配和釋放內(nèi)存。
庫(kù)函數(shù)
只要庫(kù)函數(shù)最終使用了硬件,則該庫(kù)函數(shù)一定使用了系統(tǒng)調(diào)用。
系統(tǒng)調(diào)用直接提供基礎(chǔ)功能,但對(duì)于用戶來(lái)說(shuō),使用這些功能可能過(guò)于復(fù)雜。因此,開(kāi)發(fā)者會(huì)基于系統(tǒng)調(diào)用開(kāi)發(fā)封裝好的庫(kù)函數(shù)。
比如軟件的使用中我們只需要點(diǎn)擊對(duì)應(yīng)的按鍵,即可執(zhí)行程序員已經(jīng)封裝好的系統(tǒng)調(diào)用。程序員用已經(jīng)把系統(tǒng)調(diào)用封裝好的庫(kù)函數(shù)再次進(jìn)行封裝成接口,提供給用戶使用,這就是對(duì)上進(jìn)行服務(wù)。
例如:
printf()
是基于 I/O 系統(tǒng)調(diào)用封裝的函數(shù);- 標(biāo)準(zhǔn) C 庫(kù)(如
libc
)對(duì)操作系統(tǒng)的功能進(jìn)行了更高層次的抽象。
管理的本質(zhì)
描述和組織。
比如,大部分高級(jí)語(yǔ)言都可以面向?qū)ο缶幊?#xff0c;以及有類似于STL庫(kù)的使用。面向?qū)ο?#xff0c;將事物用結(jié)構(gòu)體進(jìn)行封裝的過(guò)程實(shí)際上就是描述,用STL庫(kù)使用數(shù)據(jù)結(jié)構(gòu)將結(jié)構(gòu)體進(jìn)行管理就是將描述后的內(nèi)容進(jìn)行組織。
- 描述被管理對(duì)象:
使用數(shù)據(jù)結(jié)構(gòu)(如結(jié)構(gòu)體)對(duì)資源進(jìn)行描述。例如:- 文件描述符;
- 進(jìn)程控制塊(PCB)。
- 組織被管理對(duì)象:
使用數(shù)據(jù)結(jié)構(gòu)(如鏈表、隊(duì)列)將資源高效組織起來(lái)。例如:- 進(jìn)程調(diào)度使用的就緒隊(duì)列;
- 內(nèi)存管理中的空閑鏈表。
這種管理方式貫穿于操作系統(tǒng)的各個(gè)模塊,是操作系統(tǒng)高效運(yùn)行的核心思想。
承上啟下:操作系統(tǒng)的核心價(jià)值
操作系統(tǒng)的核心價(jià)值體現(xiàn)在:
- 對(duì)資源的統(tǒng)一管理和抽象: 提供統(tǒng)一的接口,屏蔽硬件復(fù)雜性;
- 保障用戶程序的安全與高效: 防止資源沖突,提高系統(tǒng)性能。
操作系統(tǒng)的管理方法(描述 + 組織)也貫穿其設(shè)計(jì)理念:
- 描述資源(結(jié)構(gòu)體);
- 組織資源(鏈表等高效數(shù)據(jù)結(jié)構(gòu))。
通過(guò)以上詳細(xì)的講解,我們可以更好地理解操作系統(tǒng)在計(jì)算機(jī)系統(tǒng)中的定位:它既是硬件資源的管理者,又是用戶與硬件交互的橋梁。無(wú)論是進(jìn)程管理、內(nèi)存管理還是文件管理,操作系統(tǒng)的設(shè)計(jì)哲學(xué)始終圍繞“管理”展開(kāi)。