没有合适的资源?快使用搜索试试~ 我知道了~
文章目录sel4内核对象untypeduntyped cap结构体创建内核对象TCB相关阅读 sel4是微内核,它只提供了少数供用户程序使用的机制。不像linux内核提供了大量的服务。本文主要介绍sel4提供的七个内核对象,着重讲述了untyped这一内核对象。 sel4内核对象 Sel4提供了七个内核对象,这七个内核对象构成了一个进程基本运行环境。它们分别是: CNodes:CNodes本质是一个结构体数组,该数组的元素是cte(capability table entry),该cte中包含一个cap_t结构体和mdb_node_t结构体(todo)。一个进程的CNodes称为Cspace,
资源推荐
资源详情
资源评论
sel4源码解析(一)源码解析(一) – sel4内核对象内核对象
文章目录文章目录sel4内核对象untypeduntyped cap结构体创建内核对象TCB相关阅读
sel4是微内核,它只提供了少数供用户程序使用的机制。不像linux内核提供了大量的服务。本文主要介绍sel4提供的七个内核
对象,着重讲述了untyped这一内核对象。
sel4内核对象内核对象
Sel4提供了七个内核对象,这七个内核对象构成了一个进程基本运行环境。它们分别是:
CNodes:CNodes本质是一个结构体数组,该数组的元素是cte(capability table entry),该cte中包含一个cap_t结构体和
mdb_node_t结构体(todo)。一个进程的CNodes称为Cspace,CNodes的cte称为slot。
Thread Control Blocks:同一般的进程控制块类似,表示一个进程的运行状态;
Endpoints:类似于记录型信号量。进程1想要receive信息,但进程2还未send该信息,导致进程1暂时被挂载在该Endpoints队
列上。一旦进程2 send该信息,则将进程1从该endpoints队列上取出,并重新加入调度队列;
Notification:sel4实现的通知机制,让进程之间可以使用notification完成同步;
Virtual address space:进程的虚拟地址空间;
Interrupt :
Untyped:
untyped
sel4 untyped表示为一块连续未分配的物理内存,用户程序可以通过untyped cap来使用这块物理内存。下面介绍了untyped
cap结构体以及在untyped内存上创建TCB内核对象。
untyped cap结构体结构体
untyped cap结构体:
capFreeIndex:表示起始空闲地址的偏移;
capIsDevice:表示当前这段连续的物理内存是否为设备地址空间;
capBlockSize:表示当前这段连续的物理内存空间大小;
capPtr:指向当前这段连续的物理内存起始地址。
capFreeIndex和capPtr的区别是:untyped的内存可能有一部分被使用了,应为capFreeIndex表示当前的untyped空闲内存,
所以capFreeIndex会随之改变。而capPtr表示untyped物理内存起始地址,所以capPtr不会改变。
block untyped_cap {
field capFreeIndex 48 // 起始空闲地址的偏移
padding 9
field capIsDevice 1
field capBlockSize 6
field capType 5
padding 11
field_high capPtr 48 // untyped的内存起始地址
}
创建内核对象创建内核对象TCB
seL4_Untyped_Retype函数是使用untyped的物理内存的唯一API,其有八个参数,分别是:
seL4_Untyped _service:untyped的cap;
seL4_Word type:创建的内核对象类型,本例是seL4_TCBObject;
seL4_Word size_bits:创建内核对象所占内存的大小,这里TCB是固定的(由Kernel指定),故为0;
seL4_CNode root:CNode的基地址;
seL4_Word node_index:
seL4_Word node_depth:
seL4_Word node_offset:存放在CNode表中的untyped cap的偏移;
seL4_Word num_objects:将要创建的内核对象cap的个数。
具体的创建流程如下:
用户程序调用函数seL4_Untyped_Retype;
seL4_Untyped_Retype(child_untyped, seL4_TCBObject, 0, seL4_CapInitThreadCNode, 0, 0, child_tcb, 1);
进入内核,根据系统调用编号,执行decodeUntypedInvocation函数。该函数执行的操作如下:
资源评论
weixin_38692043
- 粉丝: 9
- 资源: 947
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功