深圳網站建設定制開發(fā) 超凡科技sem廣告
??作者主頁:小虛竹
??作者簡介:大家好,我是小虛竹。2022年度博客之星評選TOP 10🏆,Java領域優(yōu)質創(chuàng)作者🏆,CSDN博客專家🏆,華為云享專家🏆,掘金年度人氣作者🏆,阿里云專家博主🏆,51CTO專家博主🏆
??技術活,該賞
??點贊 👍 收藏 ?再看,養(yǎng)成習慣
PC端左側加我微信,進社群,有送書等更多活動!
老規(guī)矩,文末有送書的規(guī)則~~
文章目錄
- 創(chuàng)作背景
- 獨創(chuàng)性
- 專家推薦
- 作者簡介
- 目錄
- 豐富的配套資源
- 粉絲福利
- 福利1
- 福利2
- 福利3
《操作系統(tǒng):原理與實現》
創(chuàng)作背景
操作系統(tǒng)是現代計算平臺的基礎與核心支撐系統(tǒng),負責管理硬件資源、控制程序運行、改善人機交互以及為應用軟件提供運行環(huán)境等。長期以來,我國信息產業(yè)處于“缺芯少魂”的狀態(tài),作為信息產業(yè)之“魂”的操作系統(tǒng)是釋放硬件能力、構筑應用生態(tài)的基礎,也是關鍵的“卡脖子”技術之一。當前,以華為海思麒麟與鯤鵬處理器、銀河飛騰處理器等為代表的ARM平臺在智能終端、服務器等應用場景的崛起,以及以開源為特色的RISC-V指令集架構的出現及其生態(tài)的蓬勃發(fā)展,逐步改變了x86處理器一統(tǒng)天下的局面。因此,需要結合ARM等指令集架構與體系結構來構筑新的操作系統(tǒng)或深入優(yōu)化現有操作系統(tǒng),從而充分發(fā)揮硬件資源的能力并給用戶提供更流暢的體驗。
操作系統(tǒng)是一個不斷發(fā)展的學科。隨著云計算、大數據、AIoT等新應用場景的興起,以及非易失性內存、智能設備、各類加速器等新硬件的廣泛應用,我國對操作系統(tǒng)人才的需求進一步擴大。我國對操作系統(tǒng)人才的需求進一步擴大,然而操作系統(tǒng)課程的內容卻普遍相對陳舊,許多知識點和教授的方式還停留在上世紀90年代,教學與實際工業(yè)界研發(fā)脫節(jié)嚴重,高校畢業(yè)的應屆生難以直接參與操作系統(tǒng)一線研發(fā)工作。因此,操作系統(tǒng)的教學亟需與時俱進的改革。首先,操作系統(tǒng)教材需要體現操作系統(tǒng)的核心原理與設計,從而幫助讀者建立對操作系統(tǒng)的系統(tǒng)性認識;其次,操作系統(tǒng)教材需要反映國際的研究前沿,當前操作系統(tǒng)技術仍在迅猛發(fā)展,很多新的問題隨著新處理器、新加速器架構、新應用場景的出現而不斷涌現,同樣,很多經典的問題也會出現新的解決方法,這些都給操作系統(tǒng)的設計與實現提供了新的思路;最后,操作系統(tǒng)教材需要反映工業(yè)界實踐,操作系統(tǒng)是一門系統(tǒng)性與實踐性非常強的學科,脫離實現來談設計很容易陷入紙上談兵的陷阱。當前操作系統(tǒng)領域的前沿研究與工業(yè)界實踐結合得越來越緊密,在工業(yè)界新應用場景與需求的推動下,研究人員將前沿研究應用到工業(yè)界實踐,再由工業(yè)界實踐反饋進一步推動前沿研究,從而形成了良好的循環(huán),并且循環(huán)的速度越來越快。
獨創(chuàng)性
上海交通大學陳海波教授多年以來一直辛勤堅守在操作系統(tǒng)研究與工業(yè)實踐的第一線,取得了突出的研究成果并對產業(yè)界產生了重大影響,是國際計算機領域的知名青年學者。他從2009年開始一直在復旦大學、上海交通大學從事操作系統(tǒng)的教學工作,致力于將前沿研究與工業(yè)實踐傳遞到人才培養(yǎng)與課堂教學中去,得到了廣大學生的好評,培養(yǎng)了一批又一批在學術界與工業(yè)界嶄露頭角的青年計算機從業(yè)者。他和同事夏虞斌教授一起,與上海交通大學并行與分布式系統(tǒng)研究所及領域操作系統(tǒng)教育部工程研究中心的多位老師和博士研究生共同合作,將他們對操作系統(tǒng)的深入理解、多年來的科研體會與一線的教學實踐加以總結,在教學實踐與反饋的基礎上,撰寫了這本新的操作系統(tǒng)書籍:**《操作系統(tǒng):原理與實現》****。**新書主要增強了原理與實現的解耦,先基于“第一性原理”,從具體問題“自然導出”抽象概念,然后再介紹具體實現。在原理方面,增加了微內核設計思想對不同抽象的影響;在實現方面,加強了教材與ChCore代碼的對應。在配套實驗方面,對實驗做了同步調整,增加了在樹莓派上實現硬件啟動的實驗。
作者:陳海波 夏虞斌 等 書號: 978-7-111-72248-9
作為操作系統(tǒng)教材的新嘗試,該書融合了作者的教學經驗與工業(yè)實踐經驗,以三個“面向”為導向,即面向經典基礎理論與方法,面向國際前沿研究,面向最新工業(yè)界實踐,深入淺出地介紹操作系統(tǒng)的理論、架構、設計方法與具體實現。本書將原理與實現解耦,從具體問題導出抽象概念,然后分析實現方法。全書內容以ARM架構為主,x86架構為輔;以微內核架構為主,同時兼顧宏內核與外核等架構。
除紙質版教材外,本書還配有網絡章節(jié)、在線社區(qū)和課程實驗。與本書配套的微內核架構教學操作系統(tǒng)ChCore由上海交通大學并行與分布式系統(tǒng)研究所設計并實現,通過ChCore相關實驗,讀者可在動手實踐中獲得第一手經驗。
專家推薦
軟件是計算系統(tǒng)的“靈魂”,而操作系統(tǒng)則是軟件運行和支撐技術的核心,“CPU+操作系統(tǒng)”更是成為信息產業(yè)生態(tài)的核心、信息時代安全的基石。自1956年第一個實用操作系統(tǒng)誕生以來,操作系統(tǒng)已歷經60多年的發(fā)展。它的發(fā)展一方面伴隨著以CPU為代表的硬件及其組成結構的發(fā)展,另一方面是為了支持多機、分布式和網絡環(huán)境,以及滿足新型計算模式和新型應用的需求。迄今,以20年左右為周期,操作系統(tǒng)已出現從主機計算時代到個人計算時代,再到移動計算時代的兩次重大變遷,每次變遷均涉及計算設備及其用戶兩方面的數量級的躍升,同時誕生了新的“CPU+操作系統(tǒng)”生態(tài)。當然,從技術的本質來看,操作系統(tǒng)“向下管理各種計算資源,向上為應用程序提供運行環(huán)境和開發(fā)支撐,為用戶提供交互界面”的角色定位未變。
當前,萬物互聯、人機物融合計算的泛在計算時代正在開啟。以云計算、大數據、人工智能和物聯網等為代表的新型應用場景,多種不同架構的CPU、GPU和加速器、以新型存儲、傳感設備等為代表的新型硬件,以及嵌入式、移動計算、邊緣計算、云計算等不同規(guī)模的計算系統(tǒng),使得操作系統(tǒng)的內涵和外延均發(fā)生了重大變化,新一輪的重大變遷正在孕育中。我以為,支撐泛在計算的“泛在操作系統(tǒng)”將成為新的操作系統(tǒng)形態(tài),并催生新的“CPU+操作系統(tǒng)”生態(tài)。這一輪變遷將促進新的操作系統(tǒng)研究與實踐,在帶來新機遇的同時,也會產生新的挑戰(zhàn)和更激烈的競爭。
操作系統(tǒng)的發(fā)展離不開一代又一代科技工作者的接力付出,因此,操作系統(tǒng)人才培養(yǎng)與操作系統(tǒng)研發(fā)處于同樣重要的地位!人才培養(yǎng)的根基就在于大學階段的操作系統(tǒng)教學??疾煲延械牟僮飨到y(tǒng)教材,面對新的計算時代所帶來的新要求和新挑戰(zhàn),它們還存在若干需要改進之處。
首先,在新的泛在計算環(huán)境下,主流的計算設備不僅包括x86平臺,還包括以ARM為代表的移動計算平臺,未來還可能誕生以RISC-V為代表的物聯計算平臺,計算系統(tǒng)的規(guī)模和架構也趨于多樣化。因此,需要思考和探索適合新型計算設備和系統(tǒng)的操作系統(tǒng)架構,改變傳統(tǒng)操作系統(tǒng)教材以x86指令集為主、面向單機平臺、以宏內核架構為實例進行講解的模式,增加對微內核等新型操作系統(tǒng)架構、分布式和云計算平臺、移動計算平臺乃至物聯計算平臺等相關內容的講解。
其次,隨著計算平臺與環(huán)境的擴展和泛化,在計算機系統(tǒng)上運行的應用形態(tài)也趨于多樣化,而傳統(tǒng)操作系統(tǒng)的教學更多關注底層運行機理,對上層應用的支持關注較少。在擁有眾多新的應用場景的新一代計算環(huán)境下,操作系統(tǒng)的研究和教學不僅要關注底層設備和資源的管理,以及計算機系統(tǒng)的運行機制,同時也要關注運行在操作系統(tǒng)之上的新型應用的開發(fā)、運行和管理支撐平臺與技術。
最后,操作系統(tǒng)教學的特點是層次多、內容雜,擁有很多的理論和技術知識點,要想幫助學生全面掌握這些技術的來龍去脈,就必須在操作系統(tǒng)教學中強調理論與實踐相結合。早期的操作系統(tǒng)教材更多強調理論與方法,而不講解實際系統(tǒng)的設計與實現,導致學生無法將所學的知識映射到真實系統(tǒng),從而不能很好地解決實際問題。而過多關注某個實際系統(tǒng)的實現,則可能將大量的時間花費在各種細節(jié)上,導致學生缺乏對全局與原理的整體把握,形成思維定式而難以舉一反三。
我非常高興地看到,陳海波教授等編寫的這本教材在上述很多方面進行了新的嘗試。其一,本書以ARM64體系結構為主,面向多種體系結構,主要介紹微內核架構,同時兼顧宏內核與外核等架構,體現了操作系統(tǒng)的“現代性”。其二,本書采用“問題驅動”的思路,通過實際問題引出設計原理與實現方法;對同一問題,討論多種設計的優(yōu)缺點以及不同的適用場景,使讀者不但“知其然”,而且“知其所以然”。其三,本書在平衡理論與實踐方面做了很有益的嘗試,針對教學與科研的需求,專門設計與實現了一個微內核操作系統(tǒng),將理論內容與代碼實現相融合;在此基礎上設計了一套課程實驗,讀者可以通過動手實踐,進一步加深對操作系統(tǒng)的理解。當然,也需指出,本書還只是針對移動計算環(huán)境的改進和加強,目前尚未涉及物聯計算環(huán)境。
本書作者長期從事操作系統(tǒng)領域的研究工作,不僅在操作系統(tǒng)研究領域取得了較為突出的成果,還在工業(yè)界開展了深入實踐。
本書基于作者多年來在復旦大學和上海交通大學講授“操作系統(tǒng)”課程的經驗,經過提煉與整理,結合操作系統(tǒng)的經典理論、研究前沿和工業(yè)界實踐,為深入理解操作系統(tǒng)的原理與實現提供了較為翔實的學習資料與實踐平臺。通過這門課程的學習,學生可以建立起操作系統(tǒng)的完整知識體系,為后續(xù)在計算機系統(tǒng)方向進行更深入的學習和研究奠定基礎。已有的教學實踐表明,這是一本值得高等院校計算機專業(yè)學生以及操作系統(tǒng)相關領域的研究人員和工業(yè)界實踐者學習和參考的書籍。
我國正在全面推進經濟和社會的數字化轉型、網絡化重構和智能化提升,加快建設數字中國、發(fā)展數字經濟。無疑,操作系統(tǒng)等基礎軟件的自主可控將是這一深度信息化進程的關鍵。目前,我國操作系統(tǒng)受制于人的問題仍然非常突出。要想改變這一現狀,我們不僅需要把握新的泛在計算時代帶來的機遇,應對設計和實現一個完整的操作系統(tǒng)所面臨的眾多技術挑戰(zhàn),更重要的是要構建操作系統(tǒng)開發(fā)和運行的生態(tài),讓更多的人融入操作系統(tǒng)生態(tài)的開發(fā)、維護和發(fā)展中。要破解這個難題,需要我國學術界和產業(yè)界的協(xié)同,需要更多從業(yè)人員的參與和合作,更需要源源不斷的人才供給,特別是青年學生這個源頭。衷心希望本書能夠為我國操作系統(tǒng)的教學和人才培養(yǎng)做出實質性貢獻。
梅宏中國科學院院士中國計算機學會理事長2022年9月于北京
以5G、人工智能、云計算與物聯網等為代表的新一輪科技革命與產業(yè)變革正在重新定義我們的信息社會。構建新型信息社會的一個關鍵因素是堅實的計算機基礎設施,這對計算機系統(tǒng)能力培養(yǎng)提出了新的要求,需要廣大信息產業(yè)從業(yè)人員具有良好的系統(tǒng)分析、設計與驗證能力。
操作系統(tǒng)被譽為信息產業(yè)之魂,它向下承載著對物理硬件的抽象與管理,向上提供并管理著應用的執(zhí)行環(huán)境,是連接硬件與應用的紐帶,也是構筑信息社會的基石。數據的爆炸式增長、計算形態(tài)的變遷、存儲層次的變化、新型硬件的涌現,給操作系統(tǒng)帶來了新的機遇與挑戰(zhàn),也使得操作系統(tǒng)的教學成為計算機系統(tǒng)能力培養(yǎng)中的關鍵。這需要學生不僅能理解操作系統(tǒng)的基礎理論,理解真實操作系統(tǒng)的設計與實現,而且能夠通過動手實現一個操作系統(tǒng)來獲得第一手經驗。
本書的作者陳海波教授多年以來一直堅守在操作系統(tǒng)研究與工業(yè)實踐的第一線,取得了突出的研究成果并對產業(yè)界產生了重大影響,是國際計算機領域的知名青年學者。他從2009年開始先后在復旦大學、上海交通大學從事操作系統(tǒng)的教學工作,致力于將前沿研究與工業(yè)實踐傳遞到人才培養(yǎng)與課堂教學中,得到了廣大學生的好評,培養(yǎng)了一批又一批在學術界與工業(yè)界嶄露頭角的青年計算機從業(yè)者。我很高興看到他和其他作者一道,將他們對操作系統(tǒng)的深入理解、多年來的科研體會與一線的教學實踐加以總結,撰寫了這本新的操作系統(tǒng)教材。
本書的一個重要特色是較好地結合了經典基礎理論方法、國際前沿研究與最新工業(yè)界實踐。之前的操作系統(tǒng)教材往往將重心放在經典理論方法上,面向x86架構并以宏內核(Monolithic Kernel)為中心,基本上是PC時代前期的內容。本書則重點圍繞當前在移動端和服務器端廣泛使用的ARM架構進行介紹,而將x86架構作為輔助內容。并且,本書不僅介紹典型 Linux 操作系統(tǒng)的設計與實現,還介紹微內核(Microkernel)、外核(Exokernel)與多內核(Multikernel)等多種操作系統(tǒng)架構。此外,本書還與國際前沿研究緊密結合,介紹了許多面向新型應用、基于新型硬件的新問題與新思路。
本書的另一個重要特色是試圖為操作系統(tǒng)的教學與人才培養(yǎng)提供完整的配套體系:在教材之外,作者提供了課程課件、授課視頻、課程作業(yè)等豐富的教輔材料。作者所在的上海交通大學并行與分布式系統(tǒng)研究所還設計與實現了一個面向教學與科研的微內核架構操作系統(tǒng)ChCore,并提供了一整套課程實驗與相應的測試用例,以幫助讀者從頭實現一個可以運行在ARM開發(fā)板上的操作系統(tǒng)。
相信這本書可以為我國基礎軟件人才培養(yǎng)與計算機系統(tǒng)能力培養(yǎng)提供有力支持!金海華中科技大學教授中國計算機學會會士IEEE Fellow2022年9月
作者簡介
目錄
目 錄叢書序言序言一序言二前言第一部分 操作系統(tǒng)基礎第1章 操作系統(tǒng)概述 21.1 簡約不簡單:從Hello World說起 21.2 什么是操作系統(tǒng) 31.3 操作系統(tǒng)簡史 51.3.1 GM-NAA I/O:第一個(批處理)操作系統(tǒng) 51.3.2 OS/360:從專用走向通用 61.3.3 Multics/UNIX/Linux:分時與多任務 61.3.4 macOS/Windows:以人為本的人機交互 71.3.5 iOS/Android:移動互聯網時代的操作系統(tǒng) 81.4 操作系統(tǒng)接口 101.5 思考題 12參考文獻 12第2章 操作系統(tǒng)結構 132.1 操作系統(tǒng)的機制與策略 142.2 操作系統(tǒng)復雜性的管理方法 152.3 操作系統(tǒng)內核架構 172.3.1 簡要結構 182.3.2 宏內核 182.3.3 微內核 202.3.4 外核 222.3.5 其他操作系統(tǒng)內核架構 242.4 操作系統(tǒng)框架結構 262.4.1 Android系統(tǒng)框架 262.4.2 ROS系統(tǒng)框架 282.5 操作系統(tǒng)設計:Worse is better? 292.6 ChCore:教學科研型微內核操作系統(tǒng) 312.7 思考題 32參考文獻 32第3章 硬件環(huán)境與軟件抽象 353.1 應用程序的硬件運行環(huán)境 353.1.1 程序的運行:用指令序列控制處理器 363.1.2 處理數據:寄存器、運算和訪存 383.1.3 條件結構:程序分支和條件碼 433.1.4 函數的調用、返回與棧 463.1.5 函數的調用慣例 503.1.6 小結:應用程序依賴的處理器狀態(tài) 523.2 操作系統(tǒng)的硬件運行環(huán)境 543.2.1 特權級別與系統(tǒng)ISA 543.2.2 異常機制與異常向量表 573.2.3 案例分析:ChCore啟動與異常向量表初始化 603.2.4 用戶態(tài)與內核態(tài)的切換 613.2.5 系統(tǒng)調用 643.2.6 系統(tǒng)調用的優(yōu)化 663.3 操作系統(tǒng)提供的基本抽象與接口 673.3.1 進程:對處理器的抽象 693.3.2 案例分析:使用POSIX進程接口實現shell 703.3.3 虛擬內存:對內存的抽象 733.3.4 進程的虛擬內存布局 753.3.5 文件:對存儲設備的抽象 773.3.6 文件:對所有設備的抽象 793.4 思考題 803.5 練習答案 81參考文獻 82第4章 虛擬內存管理 834.1 CPU的職責:內存地址翻譯 844.1.1 地址翻譯 844.1.2 分頁機制 854.1.3 多級頁表 874.1.4 頁表項與大頁 914.1.5 TLB:頁表的緩存 934.2 操作系統(tǒng)的職責:管理頁表映射 964.2.1 操作系統(tǒng)為自己配置頁表 964.2.2 如何填寫進程頁表 974.2.3 何時填寫進程頁表:立即映射 1014.2.4 何時填寫進程頁表:延遲映射 1044.2.5 常見的改變虛擬內存區(qū)域的接口 1084.2.6 虛擬內存擴展功能 1094.3 案例分析:ChCore虛擬內存管理 1124.3.1 ChCore內核頁表初始化 1124.3.2 ChCore內存管理 1154.4 思考題 1184.5 練習答案 119參考文獻 121第5章 物理內存管理 1225.1 操作系統(tǒng)的職責:管理物理內存資源 1225.1.1 目標與評價維度 1225.1.2 基于位圖的連續(xù)物理頁分配方法 1235.1.3 伙伴系統(tǒng)原理 1265.1.4 案例分析:ChCore中伙伴系統(tǒng)的實現 1275.1.5 SLAB分配器的基本設計 1315.1.6 常用的空閑鏈表 1335.2 操作系統(tǒng)如何獲得更多物理內存資源 1345.2.1 換頁機制 1345.2.2 頁替換策略 1375.2.3 頁表項中的訪問位與頁替換策略實現 1405.2.4 工作集模型 1415.2.5 利用虛擬內存抽象節(jié)約物理內存資源 1425.3 性能導向的內存分配擴展機制 1435.3.1 物理內存與CPU緩存 1445.3.2 物理內存分配與CPU緩存 1465.3.3 多核與內存分配 1475.3.4 CPU緩存的硬件劃分 1475.3.5 非一致內存訪問(NUMA架構) 1495.3.6 NUMA架構與內存分配 1505.4 思考題 1515.5 練習答案 152參考文獻 152第6章 進程與線程 1546.1 進程的內部表示與管理接口 1546.1.1 進程的內部表示—PCB 1546.1.2 進程創(chuàng)建的實現 1556.1.3 進程退出的實現 1596.1.4 進程等待的實現 1606.1.5 exit與waitpid之間的信息傳遞 1626.1.6 進程等待的范圍與父子進程關系 1646.1.7 進程睡眠的實現 1666.1.8 進程執(zhí)行狀態(tài)及其管理 1666.2 案例分析:ChCore微內核的進程管理 1696.2.1 進程管理器與分離式PCB 1696.2.2 ChCore的進程操作:以進程創(chuàng)建為例 1706.3 案例分析:Linux的進程創(chuàng)建 1726.3.1 經典的進程創(chuàng)建方法:fork 1726.3.2 其他進程創(chuàng)建方法 1756.4 進程切換 1796.4.1 進程的處理器上下文 1806.4.2 進程的切換節(jié)點 1806.4.3 進程切換的全過程 1816.4.4 案例分析:ChCore的進程切換實現 1826.5 線程及其實現 1916.5.1 為什么需要線程 1916.5.2 用戶視角看線程 1926.5.3 線程的實現:內核數據結構 1946.5.4 線程的實現:管理接口 1956.5.5 線程切換 2006.5.6 內核態(tài)線程與用戶態(tài)線程 2006.6 纖程 2026.6.1 對纖程的需求:一個簡單的例子 2036.6.2 POSIX的纖程支持:ucontext 2046.6.3 纖程切換 2066.7 思考題 2076.8 練習答案 208參考文獻 209第7章 處理器調度 2107.1 處理器調度機制 2107.1.1 處理器調度對象 2117.1.2 處理器調度概覽 2117.2 處理器調度指標 2147.3 經典調度策略 2167.3.1 先到先得 2167.3.2 最短任務優(yōu)先 2187.3.3 最短完成時間優(yōu)先 2197.3.4 時間片輪轉 2207.3.5 經典調度策略的比較 2217.4 優(yōu)先級調度策略 2227.4.1 高響應比優(yōu)先 2237.4.2 多級隊列與多級反饋隊列 2237.4.3 優(yōu)先級調度策略的比較 2297.5 公平共享調度策略 2297.5.1 彩票調度 2317.5.2 步幅調度 2337.5.3 份額與優(yōu)先級的比較 2357.6 多核處理器調度機制 2367.6.1 運行隊列 2367.6.2 負載均衡與負載追蹤 2377.6.3 處理器親和性 2387.7 案例分析:Linux調度器 2397.7.1 O(N)調度器 2407.7.2 O(1)調度器 2417.7.3 完全公平調度器 2427.7.4 Linux的細粒度負載追蹤 2447.7.5 Linux的NUMA感知調度 2457.8 思考題 2467.9 練習答案 247參考文獻 248第8章 進程間通信 2498.1 進程間通信基礎 2508.1.1 進程間通信接口 2508.1.2 一個簡單的進程間通信設計 2538.1.3 數據傳遞 2558.1.4 通知機制 2578.1.5 單向和雙向 2578.1.6 同步和異步 2588.1.7 超時機制 2598.1.8 通信連接 2608.1.9 權限檢查 2618.1.10 命名服務 2628.1.11 總結 2638.2 文件接口IPC:管道 2648.2.1 Linux管道使用案例 2658.2.2 Linux中管道進程間通信的實現 2678.2.3 命名管道和匿名管道 2698.3 內存接口IPC:共享內存 2708.3.1 共享內存 2708.3.2 基于共享內存的進程間通信 2728.4 消息接口IPC:消息隊列 2738.4.1 消息隊列的結構 2748.4.2 基本操作 2748.5 案例分析:L4微內核的IPC優(yōu)化 2758.5.1 L4消息傳遞 2758.5.2 L4控制流轉移 2778.5.3 L4通信連接 2798.5.4 L4通信控制(權限檢查) 2798.6 案例分析:LRPC的遷移線程模型 2808.6.1 遷移線程模型 2818.6.2 LRPC設計 2818.7 案例分析:ChCore進程間通信機制 2838.8 案例分析:Binder IPC 2858.8.1 總覽 2868.8.2 Binder IPC內核設計 2868.8.3 匿名共享內存 2908.9 思考題 2918.10 練習答案 292參考文獻 292第9章 并發(fā)與同步 2949.1 同步場景 2959.1.1 一個例子:多線程計數器 2959.1.2 同步的典型場景 2979.2 同步原語 2999.2.1 互斥鎖 3009.2.2 讀寫鎖 3029.2.3 條件變量 3049.2.4 信號量 3139.2.5 同步原語的比較 3169.3 死鎖 3189.3.1 死鎖的定義 3189.3.2 死鎖檢測與恢復 3209.3.3 死鎖預防 3219.3.4 死鎖避免 3229.3.5 哲學家問題 3259.4 活鎖 3269.5 思考題 3279.6 練習答案 330參考文獻 335第10章 同步原語的實現 33610.1 互斥鎖的實現 33610.1.1 臨界區(qū)問題 33610.1.2 硬件實現:關閉中斷 33710.1.3 軟件實現:皮特森算法 33710.1.4 軟硬件協(xié)同:使用原子操作實現互斥鎖 34010.2 條件變量的實現 34510.3 信號量的實現 34610.3.1 非阻塞信號量 34710.3.2 阻塞信號量 34810.4 讀寫鎖的實現 35210.4.1 偏向讀者的讀寫鎖 35310.4.2 偏向寫者的讀寫鎖 35410.5 案例分析:Linux中的futex 35610.6 案例分析:微內核中的同步原語 36010.7 思考題 36110.8 練習答案 364參考文獻 364第11章 文件系統(tǒng) 36611.1 基于inode的文件系統(tǒng) 36711.1.1 一個不用inode的簡單文件系統(tǒng) 36711.1.2 inode與文件 36811.1.3 多級inode 37011.1.4 文件名與目錄 37411.1.5 存儲布局 37711.1.6 從文件名到鏈接 37811.1.7 符號鏈接(軟鏈接) 38111.2 基于表的文件系統(tǒng) 38211.2.1 FAT文件系統(tǒng) 38211.2.2 NTFS 38611.3 虛擬文件系統(tǒng) 39211.3.1 文件系統(tǒng)的內存結構 39211.3.2 面向文件系統(tǒng)的接口 39411.3.3 多文件系統(tǒng)的組織和管理 39811.3.4 偽文件系統(tǒng) 40011.4 VFS與緩存 40211.4.1 訪問粒度不一致問題和一些優(yōu)化 40211.4.2 讀緩存 40311.4.3 寫緩沖區(qū)與寫合并 40311.4.4 頁緩存 40311.4.5 直接I/O和緩存I/O 40411.4.6 內存映射 40511.5 用戶態(tài)文件系統(tǒng) 40511.5.1 為什么需要用戶態(tài)文件系統(tǒng) 40611.5.2 FUSE 40611.5.3 ChCore的文件系統(tǒng)架構 40711.6 思考題 41011.7 練習答案 411參考文獻 412第12章 文件系統(tǒng)崩潰一致性 41412.1 崩潰一致性 41512.2 同步寫入與文件系統(tǒng)一致性檢查 41712.2.1 同步寫入 41712.2.2 文件系統(tǒng)一致性檢查 41812.2.3 fsck的局限和問題 42012.3 原子更新技術:日志 42112.3.1 日志機制的原理 42112.3.2 日志的批量化與合并優(yōu)化 42312.3.3 日志應用實例:JBD2 42312.3.4 討論和小結 42712.4 原子更新技術:寫時拷貝 42712.4.1 寫時拷貝的原理 42812.4.2 寫時拷貝在文件系統(tǒng)中的應用 42912.4.3 寫時拷貝的問題與優(yōu)化 43012.4.4 討論和小結 43012.5 Soft updates 43112.5.1 Soft updates的三條規(guī)則 43212.5.2 依賴追蹤 43412.5.3 撤銷和重做 43512.5.4 文件系統(tǒng)恢復 43712.5.5 討論和小結 43712.6 案例分析:日志結構文件系統(tǒng) 43812.6.1 基本概念與空間布局 43812.6.2 數據訪問與操作 43912.6.3 基于段的空間管理 44112.6.4 檢查點和前滾 44412.6.5 小結 44612.7 思考題 446參考文獻 447第13章 設備管理 44913.1 硬件設備基礎 45013.1.1 總線互聯 45113.1.2 設備的硬件接口 45213.1.3 幾種常見的設備 45213.2 設備發(fā)現與交互 45713.2.1 CPU與設備的交互方式概覽 45813.2.2 設備發(fā)現 46013.2.3 設備寄存器的訪問 46313.2.4 中斷 46613.2.5 直接內存訪問 47013.3 設備管理的共性功能 47513.3.1 設備的文件抽象 47513.3.2 設備的邏輯分類 47713.3.3 設備的緩沖區(qū)管理 47813.3.4 設備的使用接口 48213.4 應用I/O框架 48413.4.1 應用層I/O庫 48413.4.2 用戶態(tài)I/O 48613.5 案例分析:Android操作系統(tǒng)的硬件抽象層 48813.6 思考題 49013.7 練習答案 491參考文獻 491第14章 系統(tǒng)虛擬化 49314.1 系統(tǒng)虛擬化技術概述 49414.1.1 系統(tǒng)虛擬化及其組成部分 49414.1.2 虛擬機監(jiān)控器的類型 49514.2 “下陷-模擬”方法 49614.2.1 版本零:用進程模擬虛擬機內核態(tài) 49714.2.2 版本一:模擬時鐘中斷 49814.2.3 版本二:模擬用戶態(tài)與系統(tǒng)調用 50014.2.4 版本三:虛擬機內支持多個用戶態(tài)線程 50114.2.5 版本四:用線程模擬多個vCPU 50214.2.6 小結 50414.3 CPU虛擬化 50514.3.1 可虛擬化架構與不可虛擬化架構 50514.3.2 解釋執(zhí)行 50614.3.3 動態(tài)二進制翻譯 50714.3.4 掃描-翻譯 50814.3.5 半虛擬化技術 50914.3.6 硬件虛擬化技術 50914.3.7 小結 51214.4 內存虛擬化 51314.4.1 影子頁表機制 51414.4.2 直接頁表映射機制 51714.4.3 兩階段地址翻譯機制 51814.4.4 換頁和氣球機制 52114.4.5 小結 52314.5 I/O虛擬化 52314.5.1 軟件模擬方法 52414.5.2 半虛擬化方法 52614.5.3 設備直通方法:IOMMU和SR-IOV 52814.5.4 小結 53114.6 中斷虛擬化 53214.7 案例分析:QEMU/KVM 53414.7.1 KVM API和一個簡單的虛擬機監(jiān)控器 53414.7.2 KVM和QEMU 53614.7.3 KVM內部實現簡介 53814.8 思考題 539參考文獻 540縮略語 541在線章節(jié)第二部分 操作系統(tǒng)進階第15章 多核與多處理器第16章 可擴展同步原語第17章 多場景文件系統(tǒng)第18章 存儲系統(tǒng)第19章 輕量級虛擬化第20章 網絡與系統(tǒng)第21章 操作系統(tǒng)安全第22章 操作系統(tǒng)調測第23章 形式化證明第24章 云操作系統(tǒng)第三部分 ChCore課程實驗實驗1:機器啟動實驗2:內存管理實驗3:進程與線程、異常處理實驗4:多核、多進程、調度與IPC實驗5:文件系統(tǒng)與shell實驗6:設備驅動與持久化實驗7:進階實踐
豐富的配套資源
本書在“好大學在線”設置了MOOC課程;建設了課程網站,提供了與課程教學配套的講義PPT與授課視頻;搭建了在線社區(qū),供大家討論與答疑。
掃碼備注“操作系統(tǒng)”,加入本書讀者交流群。
傳送門:–》
粉絲福利
福利1
虛竹哥直接送2本好書,參與好評送書~
-
參與好評送書:隨機抽取2位幸運讀者,各送一本《操作系統(tǒng):原理與實現》
-
統(tǒng)計截止時間:2023/03/03 20:00:00
-
請中獎的讀者統(tǒng)計截止時間過后7天內私信虛竹哥收貨地址,過期獎勵作廢哈!
福利2
來虛竹哥送書的朋友圈點贊,點贊送書~
虛竹哥開放好友位 :傳送門–》
- 第8個,第64個好友點贊的,2位幸運讀者,各送一本《操作系統(tǒng):原理與實現》
- 統(tǒng)計截止時間:2023/03/03 20:00:00
- 請中獎的讀者統(tǒng)計截止時間過后7天內私信虛竹哥收貨地址,過期獎勵作廢哈!
福利3
沒抽中也沒事,這邊也可以直接到京東上購買,有優(yōu)惠。
傳送門–》
我是寵粉的虛竹哥,請繼續(xù)支持我,哈哈哈~