基本信息
源码名称:seL4操作系统编程.pdf
源码大小:2.96M
文件格式:.pdf
开发语言:C/C++
更新时间:2022-01-25
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍
seL4操作系统编程.pdf

seL4 微内核系统说明

目录
1 seL4 微内核介绍 ........................................................................................................................ 6
1.1 基础概念 ........................................................................................................................ 6
1.1 1 内核对象(Kernel Objects) .............................................................................. 6
1.1.2 句柄(Capabilities) .......................................................................................... 6
1.1.3 虚拟地址空间(Virtual Address Spaces) ......................................................... 7
1.1.4 线程(Threads) ................................................................................................ 8
1.1.5 进程间通信(Inter-Process Communication,IPC) ........................................ 8
1.1.6 设备驱动与中断(Device Drivers and IRQs) ................................................... 8
1.1.7 抢占(Preemption) .......................................................................................... 8
1.2 零碎信息 ........................................................................................................................ 9
1.2. 1 L4 操作系统综述 ................................................................................................. 9
1.2. 2 微内核操作系统分代 ...................................................................................... 11
2 内核服务与内核对象 ............................................................................................................. 13
2.1 基于句柄的访问控制 .................................................................................................. 13
2.2 系统调用 ...................................................................................................................... 14
2.3 内核对象 ...................................................................................................................... 15
2.4 内核内存申请 .............................................................................................................. 16
2.4.1 内存重用 ........................................................................................................... 16
3 句柄空间 ................................................................................................................................. 18
3.1 句柄与 CSpace 管理 .................................................................................................... 19
3.1.1 CSpace 创建........................................................................................................ 19
3.1.2 CNode 方法(CNode Methods) ...................................................................... 19
3.1.3 句柄权限(Capability Rights) ........................................................................ 20
3.1.4 句柄继承树(Capability Derivation Tree) ...................................................... 21
3.2 删除、撤销、回收(Deletion, Revocation, and Recycling) ..................................... 22
3.3 CSpace 编址(CSpace Addressing) ............................................................................ 23
3.3.1 句柄地址查找 Capability Address Lookup) .................................................... 25
3.3.2 句柄编址(Addressing Capabilities) .............................................................. 27
3.4 查找失败描述(Lookup Failure Description) ........................................................... 28
3.4.1 Invalid Root ......................................................................................................... 28
3.4.2 Missing Capability ............................................................................................... 28
3.4.3 Depth Mismatch ................................................................................................. 29
3.4.4 Guard Mismatch ................................................................................................. 29
3.5 句柄调用 Capability Invocation ................................................................................... 29
4 进程间通信 IPC ....................................................................................................................... 31
4.1 消息寄存器 Message Register ..................................................................................... 31
4.2 同步端点 Synchronous Endpoint ................................................................................. 35
4.2.1 端点标记 Endpoint Badge ................................................................................. 36
4.2.2 句柄传输 Capability Transfer ............................................................................ 37
4.2.3 错误 Errors ........................................................................................................ 37
4.3 异步端点 Asynchronous Endpoint ............................................................................... 38
4.3.1 异步端点标记 Asynchronous Endpoint Badges ............................................... 38
4.4 同步端点与 IPC(Synchronous Endpoints and IPC) ................................................. 39
4.4 系统功能调用(Sysyem Calls) .................................................................................. 40
5 通知 ......................................................................................................................................... 42
5.1 通知对象 Notification Objects ..................................................................................... 42
5.2 Signalling, Polling and Waiting ....................................................................................... 42
5.3 绑定通知 Binding Notifications .................................................................................... 43
3
6 线程及其执行 ......................................................................................................................... 44
6.1 Threads(线程) .......................................................................................................... 44
6.1.1 线程创建 Thread Creation ................................................................................ 45
6.1.2 线程停止 Thread Deactivation .......................................................................... 46
6.1.3 调度 Scheduling ................................................................................................ 46
6.1.4 异常 Exceptions ................................................................................................. 47
6.1.5 寄存器读写方法中的消息结构 ........................................................................ 47
6.2 故障 Faults .................................................................................................................. 48
6.2.1 句柄故障 Capability Faults ................................................................................ 49
6.2.2 不明系统调用 Unknown Syscall ....................................................................... 49
6.2.3 用户异常 User Exception .................................................................................. 51
6.2.4 缺页 VM Fault.................................................................................................... 52
6.3 域(Domains) ............................................................................................................ 52
6.4 线程控制块 TCB ........................................................................................................... 53
7 地址空间与虚拟内存 ............................................................................................................. 55
7.1 概述(Overview) ....................................................................................................... 57
7.2 内核对象(Objects) .................................................................................................. 57
7.3 映射属性(Mapping Attributes) ............................................................................... 60
7.4 共享内存(Sharing Memory) ................................................................................... 60
7.5 页出错(Page Faults) ................................................................................................ 62
8 硬件 IO .................................................................................................................................... 63
8.1 中断指派(Interrupt Delivery) ................................................................................. 63
8.2 IA-3 特定 I/O ................................................................................................................. 64
8.2.1 I/O 端口(I/O Ports) ........................................................................................ 64
8.2.2 I/O 空间(I/O Space) ...................................................................................... 65
9 系统启动过程 ......................................................................................................................... 67
9.1 初始线程环境(Initial Thread's Environment) ......................................................... 67
9.2 起动信息帧(BootInfo Frame) ................................................................................. 69
9.3 引导用令行(Boot Command-line Arguments) ....................................................... 70
9.4 多核起动(Multikernel Bootstrapping) .................................................................... 71
10 编程接口 API ......................................................................................................................... 73
10.1 出错代码 .................................................................................................................... 73
10.1.1 Invalid Argument .............................................................................................. 73
10.1.2 Invalid Capability ............................................................................................... 73
10.1.3 Illegal Operation ............................................................................................... 73
10.1.4 Range Error ....................................................................................................... 74
10.1.5 Alignment Error ................................................................................................ 74
10.1.6 Failed Lookup .................................................................................................... 74
10.1.7 Delete First ........................................................................................................ 74
10.1.8 Revoke First ....................................................................................................... 75
10.1.9 Not Enough Memory ........................................................................................ 75
10.2 基础系统 API .............................................................................................................. 75
10.2.1 Send .................................................................................................................. 76
10.2.2 Recv................................................................................................................... 77
10.2.3 Call .................................................................................................................... 77
10.2.4 Reply ................................................................................................................. 78
10.2.5 Polling Send ...................................................................................................... 78
10.2.6 Reply Recv ......................................................................................................... 79
10.2.7 NBRecv .............................................................................................................. 79
10.2.8 Yield .................................................................................................................. 79
10.2.9 Signal................................................................................................................. 80
10.2.10 Wait ................................................................................................................ 81
10.2.11 Poll .................................................................................................................. 81
4
9.3 体系结构无关的对象方法 .......................................................................................... 81
10.3.1 CNode - Copy .................................................................................................... 84
10.3.2 CNode - Delete .................................................................................................. 85
10.3.3 CNode - Mint .................................................................................................... 85
10.3.4 CNode - Move ................................................................................................... 87
10.3.5 CNode - Mutate ................................................................................................ 87
10.3.6 CNode - Recycle ................................................................................................ 88
10.3.7 CNode - Revoke ................................................................................................. 88
10.3.8 CNode - Rotate .................................................................................................. 89
10.3.9 CNode - Save Caller ........................................................................................... 90
10.3.10 Debug - Halt .................................................................................................... 90
10.3.11 Debug - Put Character..................................................................................... 91
10.3.12 Debug - Snapshot ............................................................................................ 91
10.3.13 Debug - CapIdentify ........................................................................................ 91
10.3.14 Debug - Run .................................................................................................... 92
10.3.15 Benchmark - ResetLog .................................................................................... 92
10.3.16 Benchmark - DumpLog ................................................................................... 92
10.3.17 Benchmark - LogSize ....................................................................................... 93
10.3.18 DomainSet - Set .............................................................................................. 93
10.3.19 IRQ Control - Get ............................................................................................. 94
10.3.20 IRQ Handler - Acknowledge ............................................................................ 95
10.3.21 IRQ Handler - Clear ......................................................................................... 95
10.3.22 IRQ Handler - Set Endpoint ............................................................................. 96
10.3.23 TCB - Configure ............................................................................................... 96
10.3.24 TCB - Copy Registers ....................................................................................... 97
10.3.25 TCB - Read Registers ....................................................................................... 98
10.3.26 TCB - Resume .................................................................................................. 99
10.3.27 TCB - Set IPC_Buffer ........................................................................................ 99
10.3.28 TCB - Set Priority ........................................................................................... 100
10.3.29 TCB - Set Space ............................................................................................. 100
10.3.30 TCB - Suspend ............................................................................................... 101
10.3.31 TCB - Write Registers .................................................................................... 101
10.3.32 Untyped - Retype .......................................................................................... 102
10.3.33 对象大小汇总 ............................................................................................. 103
10.4 IA-32 特定对象方法(IA-32-Specific Object Methods) ......................................... 105
10.4.1 IA32 ASID Control - Make Pool ....................................................................... 105
10.4.2 IA32 ASID Pool - Assign ................................................................................... 105
10.4.3 IA32 IO Port - In 8 ........................................................................................... 106
10.4.4 IA32 IO Port - In 16 ......................................................................................... 107
10.4.5 IA32 IO Port - In 32 ......................................................................................... 107
10.4.6 IA32 IO Port - Out 8......................................................................................... 108
10.4.7 IA32 IO Port - Out 16 ...................................................................................... 108
10.4.8 IA32 IO Port - Out 32 ...................................................................................... 109
10.4.9 IA32 IO Page Table - Map ................................................................................ 109
10.4.10 IA32 Page - Map IO ....................................................................................... 110
10.4.11 IA32 Page - Map ............................................................................................ 111
10.4.12 IA32 Page - Remap ........................................................................................ 111
10.4.13 IA32 Page - Unmap ....................................................................................... 112
10.4.14 IA32 Page - Get Address ............................................................................... 113
10.4.15 IA32 Page Table - Map .................................................................................. 113
10.4.16 IA32 Page Table - Unmap .............................................................................. 114
10.5 ARM-Speci c Object Methods .................................................................................... 114
10.5.1 ARM ASID Control - Make Pool ....................................................................... 114
10.5.2 ARM ASID Pool - Assign .................................................................................. 115
10.5.3 ARM Page - Flush Caches ................................................................................ 116
5
10.5.4 ARM Page - Map ............................................................................................. 116
10.5.5 ARM Page - Remap ......................................................................................... 117
10.5.6 ARM Page - Unmap ......................................................................................... 118
10.5.7 ARM Page - Get Address ................................................................................. 118
10.5.8 ARM Page Table - Map .................................................................................... 119
10.5.9 ARM Page Table - Unmap ............................................................................... 119
10 muslc c 库 ............................................................................................................................. 162
11 内存相关的库 ..................................................................................................................... 121
11.1 libsel4allocman .......................................................................................................... 121
11.1.1 allocman 数据结构 ........................................................................................ 122
11.1.2 allocman 函数 ................................................................................................ 124
11.1.3 bootstrap 数据结构 ....................................................................................... 131
11.1.4 bootstrap 函数 ............................................................................................... 135
11.2 libsel4vka ................................................................................................................... 142
11.2.1 申请一个 Slot ................................................................................................ 144
11.2.2 申请原始内存 ............................................................................................... 145
11.3 libsel4vspace .............................................................................................................. 146
12 libsel4utils ............................................................................................................................. 147
12.1 进程 Process ............................................................................................................. 148
12.2 线程 Thread .............................................................................................................. 150
12.2.1 sel4utils_configure_thread ............................................................................. 150
12.2.2 sel4utils_start_thread ..................................................................................... 151
12.2.3 sel4utils_clean_up_thread ............................................................................. 152
12.2.4 sel4utils_start_fault_handler .......................................................................... 152
12.2.5 sel4utils_print_fault_message ........................................................................ 153
12.2.6 sel4utils_get_tcb ............................................................................................. 153
12.2.7 sel4utils_suspend_thread ............................................................................... 153
13 libsel4simple ......................................................................................................................... 154
13.1 simple_get_frame_cap_fn ......................................................................................... 154
13.2 simple_get_frame_mapping_fn ................................................................................ 155
13.3 simple_get_frame_info_fn ........................................................................................ 156
13.4 simple_get_IRQ_control_fn ....................................................................................... 156
13.5 simple_get_IOPort_cap_fn ........................................................................................ 157
13.6 simple_ASIDPool_assign_fn ....................................................................................... 157
13.7 simple_get_cap_count_fn ......................................................................................... 157
13.8 simple_get_nth_cap_fn ............................................................................................. 158
13.9 simple_get_init_cap_fn ............................................................................................. 158
13.10 simple_get_cnode_size_fn ...................................................................................... 158
13.11 simple_get_untyped_count_fn ............................................................................... 158
13.12 simple_get_nth_untyped_fn ................................................................................... 159
13.13 simple_get_userimage_count_fn ............................................................................ 159
13.14 simple_get_nth_userimage_fn ................................................................................ 160
13.15 simple_get_iospace_fn ............................................................................................ 160
14 libplatsupport ....................................................................................................................... 163
14.1 基础知识 .................................................................................................................. 163
15 简易 seL4 编程 .................................................................................................................... 165
索引 ........................................................................................................................................... 166
参考文献 ................................................................................................................................... 167