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

羅秋明

  • 操作系統原型 — xv6 分析與實驗-preview-1
  • 操作系統原型 — xv6 分析與實驗-preview-2
  • 操作系統原型 — xv6 分析與實驗-preview-3
操作系統原型 — xv6 分析與實驗-preview-1

買這商品的人也買了...

商品描述

本書作為系統軟件系列叢書的第四本,與已出版的《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

第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