作業系統原型——xv6分析與實驗

《 作業系統原型——xv6分析與實驗》是清華大學出版社出版的一本圖書,作者是羅秋明。

基本介紹

  • 中文名:作業系統原型——xv6分析與實驗
  • 作者:羅秋明
  • 出版社:清華大學出版社
  • ISBN:9787302579984
內容簡介
本書作為系統軟體系列叢書的第四本,與已出版的《Linux GNU C程式觀察》《作業系統之編程觀察》《Linux技術內幕》共同組成系統軟體學習的遞進學習材料。本書共12章,全面分析了xv6的實現並提供了豐富的實驗及其示例代碼。在分析方面不僅包含了幾乎完整的C代碼解讀,還包括編譯、連結和程式裝入細節,並給出了QEMU仿真、GDB調試和底層系統硬體架構相關的必要知識。實驗方面安排了入門、中級和高級三個層次的內容: 入門實驗指導讀者自行增加一個系統調用並通過應用程式驗證其功能,開啟修改作業系統第一步;中級實驗全面體驗了調度機制和算法,以及進程間通信中的信號量、共享記憶體和訊息佇列的實現,還有記憶體管理中的離散記憶體管理和代碼數據隔離實驗;高級實驗綜合多方面的知識,實現執行緒機制、檔案功能擴展、虛擬記憶體實驗以及多終端實驗。本書可作為計算機相關專業本科高年級學生和研究生的作業系統實驗課程教學用書,也可作為相關專業人員深入了解作業系統的實踐用書。
目錄
第1章xv6安裝使用1
1.1運行於QEMU的xv61
1.1.1CentOS 7+QEMU+xv61
1.1.2Ubuntu 18+QEMU+xv62
1.2調試觀察4
1.2.1xv6 shell命令4
1.2.2QEMU+gdb調試6
1.2.3多核調試10
1.3本章小結12
練習13
第2章入門實驗14
2.1新增可執行程式15
2.1.1磁碟映像的生成15
2.1.2添加簡單程式16
2.2新增系統調用18
2.2.1系統調用示例19
2.2.2添加系統調用20
2.2.3驗證新系統調用22
2.3觀察調度過程23
2.4本章小結25
練習25
第3章xv6概述26
3.1xv6代碼總覽26
3.2xv6二進制代碼與鏡像27
3.2.1啟動扇區27
3.2.2核心代碼31
3.2.3磁碟鏡像40
3.2.4xv6的Makefile43
3.3xv6核心簡介51
3.3.1進程管理52
3.3.2記憶體管理56
3.3.3檔案系統57
3.3.4設備59
3.4本章小結59
練習59
作業系統原型——xv6分析與實驗目錄
第4章系統啟動60
4.1全局性信息60
4.1.1xv6系統常數(param.h)60
4.1.2x86.h硬體相關代碼61
4.2bootblock70
4.2.116位/32位模式71
4.2.2bootasm.S72
4.2.3bootmain.c83
4.2.4ELF檔案格式87
4.3kernel啟動89
4.3.1啟動分頁90
4.3.2main()95
4.4多核啟動100
4.4.1檢測多核信息100
4.4.2激活其他處理器107
4.5通用代碼111
4.6QEMU仿真命令114
4.7本章小結115
練習116
第5章記憶體管理118
5.1物理記憶體初始化(PI)119
5.1.1早期布局119
5.1.2物理頁幀的初始化120
5.1.3kalloc.c和mmu.h122
5.2頁幀的分配與回收(PR)126
5.3核心空間126
5.3.1核心頁表(KI)127
5.3.2核心頁表切換(KR)129
5.3.3vm.c131
5.4進程用戶空間149
5.4.1用戶空間映像(UI)150
5.4.2分配與回收(UR)152
5.4.3用戶進程空間切換153
5.4.4核心空間與用戶空間交換數據153
5.5本章小結154
練習155
第6章進程管理與同步156
6.1進程管理156
6.1.1調度狀態與執行現場156
6.1.2進程控制175
6.1.3執行流的切換184
6.2核心同步——自旋鎖190
6.2.1spinlock.h190
6.2.2spinlock.c191
6.3用戶應用程式195
6.3.1運行程式195
6.3.2第一個用戶進程init200
6.3.3sh.c203
6.3.4xv6測試(usertests.c)218
6.3.5用戶進程的ELF220
6.3.6ULIB庫221
6.4本章小結230
練習231
第7章中斷/異常/系統調用232
7.1中斷及其處理233
7.1.1中斷整體描述233
7.2系統調用245
7.2.1系統調用框架246
7.2.2數據傳遞254
7.2.3用戶態接口255
7.3本章小結259
練習260
第8章中級實驗261
8.1調度實驗261
8.1.1調整時間片長度261
8.1.2優先權調度264
8.2實現信號量273
8.2.1共享變數及其訪問273
8.2.2信號量數據結構275
8.2.3信號量操作的系統調用276
8.2.4用戶測試代碼280
8.3實現進程間通信的實驗282
8.3.1共享記憶體的實現282
8.3.2訊息佇列的實現299
8.4記憶體管理實驗317
8.4.1實現myfree()和myalloc()系統調用317
8.4.2代碼與數據隔離324
8.5本章小結331
練習331
第9章xv6fs檔案管理333
9.1xv6fs檔案系統333
9.1.1xv6fs概述334
9.2檔案系統操作344
9.2.1盤塊操作345
9.2.2索引節點操作356
9.2.3目錄操作372
9.2.4檔案378
9.2.5系統調用386
9.3非核心功能401
9.3.1日誌層401
9.3.2特殊檔案411
9.4本章小結415
練習416
第10章設備管理417
10.1終端設備417
10.1.1console/tty/terminal/shell417
10.1.2終端及CGA顯示器418
10.1.3鍵盤430
10.1.4串口439
10.2其他硬體442
10.2.1定時器442
10.2.2IDE磁碟/塊設備443
10.3中斷控制器449
10.3.1APIC450
10.3.2IOAPIC451
10.3.3LAPIC457
10.4本章小結468
練習468
第11章高級實驗469
11.1實現xv6核心執行緒469
11.1.1修改PCB469
11.1.2sys_clone和sys_join系統調用470
11.1.3執行緒庫的實現474
11.1.4測試樣例476
11.2檔案系統實驗478
11.2.1檔案許可權478
11.2.2恢復被刪除的檔案484
11.2.3磁碟裸設備的讀寫488
11.3虛擬記憶體494
11.3.1虛存交換機制495
11.3.2缺頁異常498
11.3.3功能驗證501
11.4用戶終端實驗504
11.4.1設計思路505
11.4.2代碼實現506
11.4.3功能驗證518
11.5本章小結523
練習523
第12章x86架構概述524
12.1x86的ISA架構524
12.1.1暫存器524
12.1.2記憶體組織530
12.2x86 MMU地址部件531
12.2.1模式及地址空間531
12.2.2實地址模式533
12.2.3保護模式535
12.2.4分頁機制543
12.3中斷/異常/系統調用547
12.3.1中斷機制548
12.3.2中斷描述符表IDT548
12.3.3TSS和核心棧554
12.4本章小結560

熱門詞條

聯絡我們