![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SeL4
文章平均质量分 91
Min_doit
这个作者很懒,什么都没留下…
展开
-
官方教程:sel4 debug
不幸的是,在您返回用户空间之前,没有简单的方法可以继续,特别是如果内核安排的线程与您正在调试的线程不同。GDB不知道它的打印函数的地址(因为我们只给了GDB内核的符号表),而且它也不希望破坏它的地址。要注意,如果你调试内核的早期引导步骤,可能不是显而易见的是,调试跨上下文中页面映射变化(例如切换页面目录或打开/关闭MMU)会混淆GDB,你可能会发现断点触发意外或被错过。我们所描述的过程与x86类似,但如果您是在x86或x86_64主机上,您可以简单地使用您的平台的本机GDB,gdb。翻译 2023-03-14 17:26:08 · 231 阅读 · 0 评论 -
hello3-sel4多线程
但是还请注意,虽然发送线程能够授予它跨端点发送数据的全部权利,因为它是创建该能力的人,但接收方的能力不一定会授予它对端点的发送能力(写入能力)。调用将向您的新线程将监听的端点返回一个新的、带标记的功能副本。您会发现您在第二个教程中已经涵盖的内容已经填写完毕,您不必重复它们:以几乎相同的方式,我们不会在此页面上重复概念解释,如果它们是 本系列之前的教程已涵盖。虽然这个任务是无序的,因为我们还没有检查操作的接收端,但它相当简单:这个任务发生在接收方发送回复之后,它显示发送方现在正在阅读接收方的回复。原创 2023-03-05 17:23:57 · 271 阅读 · 0 评论 -
官方教程:SeL4: 线程
设置 TCB 的优先级时,必须提供明确的 TCB 能力以获取设置优先级的权限。我们将在以后的教程中提供有关故障处理的更多详细信息,但现在您可以依赖内核打印故障消息,因为您创建的线程没有故障处理程序。为了提供机密性,seL4 提供了一个顶级分层调度器,它提供静态的、循环调度的调度分区,称为域。域是在编译时使用循环调度静态配置的,并且是不可抢占的,从而导致域的完全确定性调度。请记住,要设置线程的优先级,调用线程必须具有这样做的权限。新创建的线程的优先级为 0,而加载程序创建的线程的优先级为 254。翻译 2023-03-01 19:41:44 · 665 阅读 · 0 评论 -
SeL4 : 三 、内核内存分配与IPC
除了硬件专用的以外,内核本身不要求任何的资源限制(虚拟ASIDs的处理利用了固定数量的地址空间,这一限制将在后续的版本中移除),因此也就避免了很多通过消耗资源实施的拒绝服务攻击。创建新的内核对象时,新创建的能力将作为原始未分配内存对象的子能力插入到CDT中。目前所描述的模型足以让应用程序分配内核对象,在客戶应用程序之间分配权限,并获得由这些对象提供的各种不同的内核服务。撤销内核对象的最后一个能力将触发现在无人引用对象上的销毁操作,这只需清除它与其他对象及内核之间的任何内核依赖项。内核跟踪能力派生,即,由。原创 2023-03-01 10:24:31 · 628 阅读 · 0 评论 -
SeL4: 二 内核对象
内核实现了一类对象类型,应用程序可以调用它们的实例(也称为对象objects这些对象的接口构成了内核本身的接口。CNodes:存储多个能力,许可线程调用特定对象的方法。每个CNode有固定数量的slots(槽),且总是2的整数幂,这在CNode创建时确定。Slots可以是空的,也可以包含能力。线程控制块:表示seL4中的一个线程。端点:促成了线程之间的消息通信。IPC是同步的:一个线程试图在一个端点上发送或接收数据,会阻塞直到信息可以传递(这里未考虑非阻塞的情况,因为非阻塞不要求必须成功发送或接收。。原创 2023-02-28 17:54:16 · 241 阅读 · 0 评论 -
SeL4:一 辅助库
用到这个工程里面来,主要是提供标准的符合posix标准的api,其他的操作系统也是可以使用的。一般程序里面都有一个main函数,作为该程序的入口位置,但是,这个程序的运行并不是从main开始的,在运行main之前,其实还做了其他的一些工作,比如堆栈指针的设置,环境变量的获取,其他的一些准备工作等等。单单的一个内核运行起来,是没法运行一个例如hello world这样的程序的,因为这个程序需要链接其他的库,比如stdio中的printf,而且该程序和内核交互,就需要知道内核提供的标准API有哪些。原创 2023-02-28 17:15:37 · 523 阅读 · 0 评论