最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

[MIT6.S081] 1.3 Why Hard and Interesting

2023-01-07 19:26 作者:j2kevin18  | 我要投稿

我還想說一下為什么我認(rèn)為學(xué)習(xí)操作系統(tǒng)是挑戰(zhàn)和樂趣并存的?以及為什么我們需要專門針對(duì)操作系統(tǒng)設(shè)置一門課程?

學(xué)習(xí)操作系統(tǒng)比較難的一個(gè)原因是,內(nèi)核的編程環(huán)境比較困難。當(dāng)你在編寫、修改,擴(kuò)展內(nèi)核,或者寫一個(gè)新的操作系統(tǒng)內(nèi)核時(shí),你實(shí)際上在提供一個(gè)基礎(chǔ)設(shè)施讓別人來運(yùn)行他們的程序。當(dāng)程序員在寫普通的應(yīng)用程序時(shí),應(yīng)用程序下面都是操作系統(tǒng)。而當(dāng)我們?cè)跇?gòu)建操作系統(tǒng)時(shí),在操作系統(tǒng)下面就是硬件了,這些硬件通常會(huì)更難處理。在這門課程中,我們會(huì)使用一個(gè)叫做QEMU的硬件模擬器,來模擬CPU和計(jì)算機(jī)。這會(huì)簡(jiǎn)單一些,但即使這樣,編程環(huán)境還是比較惡劣。

學(xué)習(xí)操作系統(tǒng)比較難的另一個(gè)原因是,當(dāng)你在設(shè)計(jì)一個(gè)操作系統(tǒng)時(shí),你需要滿足一些列矛盾的需求。

  • 其中一個(gè)是,你想要你的操作系統(tǒng)既高效又易用。高效通常意味著操作系統(tǒng)需要在離硬件近的low-level進(jìn)行操作,而易用則要求操作系統(tǒng)為應(yīng)用程序提供抽象的high-level可移植接口。所以,提供一個(gè)簡(jiǎn)單可移植,同時(shí)又高效的抽象接口需要一定的技巧。

  • 另一個(gè)矛盾的點(diǎn)是,我們想要提供一個(gè)非常強(qiáng)大的操作系統(tǒng)服務(wù),這樣操作系統(tǒng)才能分擔(dān)運(yùn)行應(yīng)用程序的負(fù)擔(dān),所以我們需要強(qiáng)大的操作系統(tǒng)服務(wù)。但同時(shí),我們也想要有簡(jiǎn)單的接口。我們不想程序員看到數(shù)量巨多,復(fù)雜且難以理解的的內(nèi)核接口。因?yàn)?,如果他們不理解這些接口,他們就會(huì)很難使用這些接口。所以,我們也想要簡(jiǎn)單的API。實(shí)際上是有可能提供既簡(jiǎn)單,同時(shí)又包含強(qiáng)大功能的接口。所以,這里要提供一個(gè)簡(jiǎn)單的接口,同時(shí)又包含了強(qiáng)大的功能。

學(xué)生提問:系統(tǒng)調(diào)用跳到內(nèi)核與標(biāo)準(zhǔn)的函數(shù)調(diào)用跳到另一個(gè)函數(shù)相比,區(qū)別是什么?

Robert教授:Kernel的代碼總是有特殊的權(quán)限。當(dāng)機(jī)器啟動(dòng)Kernel時(shí),Kernel會(huì)有特殊的權(quán)限能直接訪問各種各樣的硬件,例如磁盤。而普通的用戶程序是沒有辦法直接訪問這些硬件的。所以,當(dāng)你執(zhí)行一個(gè)普通的函數(shù)調(diào)用時(shí),你所調(diào)用的函數(shù)并沒有對(duì)于硬件的特殊權(quán)限。然而,如果你觸發(fā)系統(tǒng)調(diào)用到內(nèi)核中,內(nèi)核中的具體實(shí)現(xiàn)會(huì)具有這些特殊的權(quán)限,這樣就能修改敏感的和被保護(hù)的硬件資源,比如訪問硬件磁盤。我們之后會(huì)介紹更多有關(guān)的細(xì)節(jié)。

  • 最后一個(gè)矛盾點(diǎn)是所有的操作系統(tǒng)需要滿足的。你希望給與應(yīng)用程序盡可能多的靈活性,你不會(huì)想要限制應(yīng)用程序,所以你需要內(nèi)核具備靈活的接口。但是另一方面,你的確需要在某種程度上限制應(yīng)用程序,因?yàn)槟銜?huì)想要安全性。我們希望給程序員完全的自由,但是實(shí)際上又不能是真正的完全自由,因?yàn)槲覀儾幌胍绦騿T能直接訪問到硬件,干擾到其他的應(yīng)用程序,或者干擾操作系統(tǒng)的行為。


板書

設(shè)計(jì)一個(gè)好的操作系統(tǒng)還是有可能的,我們后面會(huì)大量討論這個(gè)話題。但是想要同時(shí)提供上圖中兩列里面的屬性,還是有點(diǎn)難的。

另一件使得操作系統(tǒng)的設(shè)計(jì)難且有趣的點(diǎn)是:操作系統(tǒng)提供了大量的特性和大量的服務(wù),但是它們趨向于相互交互。有時(shí),這種交互以奇怪的方式進(jìn)行,并且需要你大量的思考。即使在我之前給出的一個(gè)簡(jiǎn)單例子中,對(duì)于open和fork,它們之間也可能有交互。如果一個(gè)應(yīng)用程序通過open系統(tǒng)調(diào)用得到了一個(gè)文件描述符fd。之后這個(gè)應(yīng)用程序調(diào)用了fork系統(tǒng)調(diào)用。fork的語義是創(chuàng)建一個(gè)當(dāng)前進(jìn)程的拷貝進(jìn)程。而對(duì)于一個(gè)真正的拷貝進(jìn)程,父進(jìn)程中的文件描述符也必須存在且可用。所以在這里,一個(gè)通過open獲得的文件描述符,與fork以這種有趣的方式進(jìn)行交互。當(dāng)然,你需要想明白,子進(jìn)程是否能夠訪問到在fork之前創(chuàng)建的文件描述符fd。在我們要研究的操作系統(tǒng)中答案是,Yes,需要能夠訪問。

板書

另一件有趣的事情,我之前也提到過,操作系統(tǒng)需要能夠滿足廣泛的使用場(chǎng)景。相同的操作系統(tǒng)需要既給數(shù)據(jù)庫服務(wù)器使用,又給智能手機(jī)使用。隨著時(shí)間的推移,你的計(jì)算機(jī)所使用的硬件也在變化,或許你有了超級(jí)快的SSD存儲(chǔ)而不是機(jī)械的硬盤。大概15年前,多核CPU計(jì)算機(jī)還極其稀有,而現(xiàn)在變得極其的流行。最近,我們又看到了網(wǎng)速以指數(shù)級(jí)增長(zhǎng)。所有的這些都需要時(shí)不時(shí)的重新思考,操作系統(tǒng)是如何被設(shè)計(jì)的。

前面理性的分析了一下為什么你要學(xué)習(xí)這門課程。同時(shí),這里也有一些更加實(shí)際的原因來告訴你為什么會(huì)選擇這門課程。

  • 其中一個(gè)原因是,如果你對(duì)于計(jì)算機(jī)的運(yùn)行原理感興趣,對(duì)于你打開計(jì)算機(jī)以后實(shí)際發(fā)生的事情感興趣,那么這門課程你就選對(duì)了。

  • 類似的,如果你喜歡基礎(chǔ)架構(gòu),比如你喜歡構(gòu)建一些其他程序可以使用的服務(wù),那么這門課程都是有關(guān)基礎(chǔ)架構(gòu)的內(nèi)容,因?yàn)椴僮飨到y(tǒng)就是基礎(chǔ)架構(gòu)。

  • 如果你曾經(jīng)花費(fèi)了大量的時(shí)間來定位應(yīng)用程序的Bug,或者定位安全的問題,那么你會(huì)發(fā)現(xiàn)這些經(jīng)歷通常需要理解操作系統(tǒng)是如何運(yùn)作的。比如從根本上來說,操作系統(tǒng)涉及了很多安全相關(guān)的策略。當(dāng)程序運(yùn)行出錯(cuò)時(shí),操作系統(tǒng)需要來收拾殘局,而這一步也通常包括在定位問題中。

學(xué)生提問:對(duì)于應(yīng)用程序開發(fā)人員來說,他們會(huì)基于一些操作系統(tǒng)做開發(fā),真正的深入理解這些操作系統(tǒng)有多重要?他們需要成為操作系統(tǒng)的專家嗎?

Robert教授:你不必成為一個(gè)專家。但是如果你花費(fèi)大量時(shí)間來開發(fā),維護(hù)并調(diào)試應(yīng)用程序,你最終還是會(huì)知道大量操作系統(tǒng)的知識(shí)。不論你是否是有意要掌握這些知識(shí),它們就是出現(xiàn)了,而你不得不去理解它們。

學(xué)生提問:對(duì)于一些例如Python的高階編程語言(高階是指離自然語言更接近,低階是指離機(jī)器語言更接近如C,匯編),它們是直接執(zhí)行系統(tǒng)調(diào)用呢,還是內(nèi)部對(duì)系統(tǒng)調(diào)用進(jìn)行了封裝呢?

Robert教授:許多高階的編程語言都離系統(tǒng)調(diào)用較遠(yuǎn),這是一個(gè)事實(shí)。部分原因是很多編程語言想要提供可以在多個(gè)操作系統(tǒng)上運(yùn)行的可移植的環(huán)境,所以它們不能依賴特定的系統(tǒng)調(diào)用。所以,對(duì)于這個(gè)問題的答案我認(rèn)為是,如果你使用了Python,你在某種程度上就與系統(tǒng)調(diào)用接口隔離了。當(dāng)然,在Python內(nèi)部,最終還是要執(zhí)行系統(tǒng)調(diào)用來完成相應(yīng)的工作。當(dāng)然,Python和許多其他的編程語言通常都有方法能直接訪問系統(tǒng)調(diào)用。


[MIT6.S081] 1.3 Why Hard and Interesting的評(píng)論 (共 條)

使用qq登录你需要登录后才可以评论。
宁津县| 万荣县| 青川县| 临漳县| SHOW| 庆城县| 闽清县| 东丽区| 洛川县| 崇仁县| 郁南县| 页游| 衡阳县| 宁蒗| 云阳县| 保亭| 略阳县| 朝阳县| 永福县| 积石山| 称多县| 若尔盖县| 外汇| 辽中县| 厦门市| 桦川县| 新河县| 奎屯市| 梁平县| 鸡东县| 五台县| 利津县| 故城县| 高淳县| 鄯善县| 莲花县| 格尔木市| 阳新县| 怀宁县| 和田县| 鄄城县|