官术网_书友最值得收藏!

1.3 為什么要使用操作系統(tǒng)

假設(shè)你沒(méi)有可用的操作系統(tǒng)(OS),或者出于某種原因不能使用操作系統(tǒng)。然后,你將自己完成幾乎所有的事情:內(nèi)存管理、中斷處理、與I/O設(shè)備通信、管理文件、配置和管理網(wǎng)絡(luò)棧,等等。

從技術(shù)上講,操作系統(tǒng)并不是嚴(yán)格需要的。有些系統(tǒng)沒(méi)有操作系統(tǒng)。這些通常是占用空間很小的嵌入式系統(tǒng):想想物聯(lián)網(wǎng)信標(biāo)。除了一個(gè)應(yīng)用程序之外,它們根本沒(méi)有可用的資源來(lái)保留其他任何東西。例如,在Rust中,你可以使用它的核心和標(biāo)準(zhǔn)庫(kù)在裸機(jī)上運(yùn)行任何應(yīng)用程序(https://oreil.ly/zW4j7)。

操作系統(tǒng)承擔(dān)了所有這些無(wú)差別的繁重工作,將不同的硬件組件抽象出來(lái),并為你提供一個(gè)(通常)干凈和設(shè)計(jì)良好的應(yīng)用程序編程接口(API),例如,我們將在第2章中仔細(xì)研究的Linux內(nèi)核。我們通常將操作系統(tǒng)公開(kāi)的這些API稱為系統(tǒng)調(diào)用(syscall)。高級(jí)編程語(yǔ)言(如Go、Rust、Python或Java)構(gòu)建在這些系統(tǒng)調(diào)用之上,可能將它們包裝在庫(kù)中。

所有這些都可以讓你專注于業(yè)務(wù)邏輯,而不必自己管理資源,還可以照顧到你想要在上面運(yùn)行應(yīng)用程序的不同硬件。

讓我們看一個(gè)系統(tǒng)調(diào)用的具體例子。假設(shè)我們想要識(shí)別(并輸出)當(dāng)前用戶的ID。

首先,我們看一下Linux系統(tǒng)調(diào)用getuid(2)(https://oreil.ly/md15Z):

這個(gè)getuid系統(tǒng)調(diào)用是我們可以從庫(kù)中以編程方式使用的。我們將在2.3.6節(jié)中更詳細(xì)地討論Linux系統(tǒng)調(diào)用。

你可能想知道(2)在getuid(2)中是什么意思。這是man實(shí)用程序(想想內(nèi)置的幫助頁(yè))用來(lái)指示在man中所分配的命令部分的術(shù)語(yǔ),類似于郵政代碼或國(guó)家代碼。這是UNIX遺產(chǎn)顯而易見(jiàn)的一個(gè)例子,你可以在1979年的UNIX Programmer's Manual第七版第1卷中找到它的起源。

在命令行(shell)上,我們將使用等效的id命令,該命令反過(guò)來(lái)使用getuid系統(tǒng)調(diào)用:

既然你已經(jīng)基本了解了為什么在大多數(shù)情況下使用操作系統(tǒng)是有意義的,那么讓我們繼續(xù)討論Linux發(fā)行版的主題。

主站蜘蛛池模板: 乐亭县| 普格县| 乌兰察布市| 灵川县| 宁国市| 壶关县| 昭平县| 任丘市| 梨树县| 新蔡县| 丘北县| 罗平县| 南皮县| 门头沟区| 蓬莱市| 德钦县| 泽普县| 皋兰县| 玛多县| 桃园市| 临西县| 托克逊县| 呼玛县| 永安市| 深泽县| 壶关县| 蒙阴县| 铁岭县| 靖州| 崇信县| 彰化市| 仪陇县| 长乐市| 牙克石市| 徐水县| 中超| 巴马| 微山县| 潜山县| 黄龙县| 安吉县|