當(dāng)前位置:首頁 > 公眾號精選 > 小林coding
[導(dǎo)讀]大家好,我是小林。之前我小林把自己寫的操作系統(tǒng)系列文章的整理過PDF:小林的圖解系統(tǒng),大曝光!。不過我這個PDF偏向理論知識多一些,實戰(zhàn)的內(nèi)容少一些。最近有個讀者說,他把自己學(xué)習(xí)????課程的筆記整理成了一個PDF,已經(jīng)開源至Github,我也看了下,確實很不錯,非常硬核。??課...

大家好,我是小林。


之前我小林把自己寫的操作系統(tǒng)系列文章的整理過 PDF:小林的圖解系統(tǒng),大曝光!。


不過我這個 PDF 偏向理論知識多一些,實戰(zhàn)的內(nèi)容少一些。


最近有個讀者說,他把自己學(xué)習(xí) 課程的筆記整理成了一個 PDF,已經(jīng)開源Github,我也看了下,確實很不錯,非常硬核。


課程一直被公認(rèn)為學(xué)習(xí)操作系統(tǒng)的神級課程,其課程使用了一個小型的操作系統(tǒng) 還有一份配套的手冊來教學(xué)。雖然資料齊全但由于是英文,加之內(nèi)容本身的復(fù)雜性,上手還是有一些難度。


這里有一份開源的資料《給操作系統(tǒng)捋條線》,詳細(xì)講解了 系統(tǒng),除了源碼中的一些腳本文件幾乎覆蓋講述了所有代碼,從硬件到軟件各個方面都有所講述。這份資料恰如其名字一般實實在在地給操作系統(tǒng)捋了一條線出來,能夠讓讀者知道計算機從上電那一刻開始,操作系統(tǒng)是如何一步步建立起來的,是如何運行起來的。資料的鏈接如下:


https://github.com/Rand312/xv6.git


https://gitee.com/rand_cs/xv6.git


全文將操作系統(tǒng)分為了五個大的部分:啟動,中斷,文件系統(tǒng),進(jìn)程,控制臺,其他部分比如說內(nèi)存管理,鎖等等都是分散在那五大部分里面。每個部分作者都盡量細(xì)致到各個方面,并且附有詳細(xì)的文字描述或者流程圖。


比如說啟動流程圖



再比如中斷流程圖



又比如讀寫文件的流程圖





看著這些圖感覺還行是吧,較為繁雜的部分基本都有類似的流程圖,《給操作系統(tǒng)捋條線》是真的如其名字一般將操作系統(tǒng)捋了 “一條線”  出來。其部分內(nèi)容截圖如下:

部分截圖《給操作系統(tǒng)捋條線》根據(jù) 主要講述了以下問題問題:


啟動部分:首先便是啟動部分, 的計算機啟動過程與常見那幾大步驟稍稍不同,但本質(zhì)一樣,除了 揉在一起了,其他的沒什么,比較常規(guī),再者就是多處理器的情況可能大家不太熟悉,這一塊大概有這么一些問題:


  • 啟動的大概過程, 這五個步驟是怎樣的?
  • 實模式保護(hù)模式的特點,如何過渡?
  • ,段寄存器,段選擇子,段描述符,分段,平坦模式的簡單認(rèn)識?
  • 分頁機制的特點,如何開啟的?
  • 邏輯地址,虛擬地址,線性地址,物理地址各類地址什么意思,如何轉(zhuǎn)化?
  • 操作系統(tǒng)如何自舉,內(nèi)核如何從磁盤加載到內(nèi)存的?
  • 文件的簡單認(rèn)識?
  • 多處理器的情況下計算機是如何啟動的,什么是 什么是 ,通用啟動算法是啥?
文件系統(tǒng): 將文件系統(tǒng)分為了 7 層,磁盤 緩存 日志 目錄 路徑 文件描述符,大概有這些問題:


  • 磁盤的簡單認(rèn)識,磁盤驅(qū)動程序如何實現(xiàn)(如何讀寫磁盤)?
  • 如何設(shè)計一個簡單的日志系統(tǒng),為什么日志系統(tǒng)能夠保證數(shù)據(jù)的一致性?
  • ,文件,目錄,目錄項,文件描述符,文件結(jié)構(gòu)體,硬鏈接,軟鏈接各種名詞到底什么意思,它們之間又有什么關(guān)系?
  • 如何理解一切皆文件,為什么 , 這兩個系統(tǒng)調(diào)用就可以讀寫任意類型的文件?
  • 一些常見的文件系統(tǒng)調(diào)用比如 等等如何實現(xiàn)的?
中斷異常與系統(tǒng)調(diào)用:有時不加強調(diào)在 的架構(gòu)下一般統(tǒng)稱為中斷,它們實際的處理過程都差不多,只不過中斷來源不同而已,都是中斷源觸發(fā)中斷,生成中斷向量,然后 根據(jù)中斷向量去處理中斷,這一塊兒大概有這些問題:


  • 中斷和異常有什么區(qū)別?


  • 什么是軟件中斷? 軟件中斷和軟中斷是一個東西嗎?


  • 中斷控制器 、(、) 的簡單認(rèn)識,了解其基本工作原理?


  • 中斷的處理過程是怎樣的?


    • 向量號,,門描述符(中斷門、陷阱門等)的簡單認(rèn)識
    • 如何定位中斷服務(wù)程序(向量號,,,門描述符,段描述符等之間的關(guān)系)?
    • 所謂的保存現(xiàn)場與恢復(fù)現(xiàn)場到底什么意思?
    • 中斷期間棧是如何變化的(用戶棧如何變化到內(nèi)核棧,內(nèi)核棧又如何變化到用戶棧)?
  • 多處理器下中斷有何不同,又是如何處理的?


  • 系統(tǒng)調(diào)用大致過程是怎樣的?


  • 系統(tǒng)調(diào)用時用戶態(tài)下程序的參數(shù)如何傳遞給內(nèi)核?


進(jìn)程: 只支持進(jìn)程,不支持線程,另外由于支持多處理器,在調(diào)度方面需要額外的鎖來避免競爭,有這么一些問題:


  • 系統(tǒng)調(diào)用是如何實現(xiàn)的(如何創(chuàng)建一個進(jìn)程)?
  • 第一個進(jìn)程又是如何創(chuàng)建的?
  • 系統(tǒng)調(diào)用是如何實現(xiàn)的,程序是如何從磁盤加載到內(nèi)存然后運行的?
  • 程序與進(jìn)程的區(qū)別?
  • 調(diào)度器如何實現(xiàn),一個進(jìn)程如何被調(diào)度上 ?
  • 常見的調(diào)度算法及其優(yōu)缺點?
  • 進(jìn)程如何切換的,一些資源如寄存器,,頁表是如何變化的?
  • 如何實現(xiàn)進(jìn)程的休眠和喚醒,, 函數(shù)如何實現(xiàn)?
  • 如何實現(xiàn)的等待與退出,, 函數(shù)如何實現(xiàn)?
  • 僵尸進(jìn)程,孤兒進(jìn)程什么意思,如何解決?
  • 進(jìn)程是啥,有什么作用,如何實現(xiàn)?
  • 程序是從 開始執(zhí)行的嗎(簡單了解了解運行庫)?
  • 堆到底是個什么玩意兒?如何實現(xiàn)?如何組織管理?
內(nèi)存管理: 的內(nèi)存管理較為簡單,使用的是空閑鏈表法將空閑內(nèi)存組織起來,有這么一些問題:


  • 的物理內(nèi)存是如何管理的,虛擬內(nèi)存又是如何管理的,如何分配與回收內(nèi)存?
  • 虛擬地址空間物理地址空間應(yīng)該如何理解?
  • 為什么一般情況下 0 地址不能訪問,事實上 0 地址就真的不能訪問嗎?
鎖:鎖就其本身的實現(xiàn)上來說不難,難的是鎖的使用,內(nèi)核中的各種問題各種情況極其復(fù)雜,這里只簡單聊聊:


  • 常見的兩種鎖,自旋鎖、休眠鎖如何設(shè)計?
  • 常見死鎖判斷,如何解決
控制臺:主要是處理輸入輸出部分,特指鍵盤的輸入和顯示器的輸出,另外再有就是串口的使用,大概有這么一些問題:


  • 鍵盤、顯卡、串口的簡單認(rèn)識,鍵盤驅(qū)動,顯卡驅(qū)動,串口驅(qū)動如何實現(xiàn)?
  • 按下一個鍵到輸出到屏幕這之間發(fā)生了什么?
  • 組合鍵的特殊功能是如何實現(xiàn)的?
  • 打印函數(shù) 是如何實現(xiàn)的, 兩系統(tǒng)調(diào)用的完整過程?
  • 為什么文件描述符 0、1、2 就表示標(biāo)準(zhǔn)輸入輸出錯誤呢?
  • 如何實現(xiàn)一個簡單的 ?
  • 重定向什么意思,如何實現(xiàn)?
  • 管道什么意思,如何實現(xiàn)?
  • 一些常用命令如 、等等如何實現(xiàn)的?



本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉