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