在好例子网,分享、交流、成长!
您当前所在位置:首页C/C++ 开发实例嵌入式开发 → seL4操作系统编程.pdf

seL4操作系统编程.pdf

嵌入式开发

下载此实例
  • 开发语言:C/C++
  • 实例大小:2.96M
  • 下载次数:12
  • 浏览次数:286
  • 发布时间:2022-01-25
  • 实例类别:嵌入式开发
  • 发 布 人:奈门摩尔
  • 文件格式:.pdf
  • 所需积分:2
 相关标签: 操作系统 pdf pd 编程 系统

实例介绍

【实例简介】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

实例下载地址

seL4操作系统编程.pdf

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警