5 个版本
0.1.4 | 2023年6月10日 |
---|---|
0.1.3 | 2023年6月9日 |
0.1.2 | 2023年6月9日 |
0.1.1 | 2023年6月7日 |
0.1.0 | 2023年6月3日 |
6 在 #seminix
每月33次下载
150KB
4K SLoC
libseminix
介绍
seminix 提供的用户态库
lib.rs
:
seminix 用户态库
seminix 内核兼容了 Linux 系统调用接口,同时本身提供了一组系统调用用于管理内核功能,包括如下九个部分
- CNode 能力节点管理,所有能力存放在 CNode 能力槽中,CNode 提供了能力移动,复制,撤销,删除管理。
- Deadline 能力管理,与 Linux 的 deadline 调度策略相同,Deadline 能力提供了创建一个 deadline 调度策略的能力,可以与 tcb 绑定使其拥有 deadline 调度策略。
- DeviceControl 能力管理,具有设备控制能力,能够创建对当前系统某个设备的能力引用,并可以通过 CNode 接口将创建的 Device 能力移动到任意 CNode 中使得对应 tcb 具有设备管理能力,通过 Device 能力还能够创建对该设备 IRQ 的能力引用,通过 CNode 也可以将 Device 能力创建的 DeviceIRQ 能力移动或者复制给任意 TCB 管理。
- Endpoint (IPC) 能力管理,可以创建,复制,移动 Endpoint 给任意 CNode,使其具有进程间通信能力,比如:IRQ 中断通过 Endpoint 传递给指定 tcb 管理。
- Rlimit 能力管理,管理系统中所有资源的使用,所有内核对象由 Rlimit 负责创建,并且管理每个 tcb 的能力资源使用上限,如一个 tcb 能够创建的最大 Endpoint 数量。
- signal 能力管理,系统信号管理,兼容 posix 和 Linux 信号机制,任何线程可以绑定信号处理 handler,只有拥有 signal 能力的线程能够向指定的 tcb 发送信号,内核也会通过 Endpoint 机制向管理程序发送 signal 信息,由管理程序决定是否向指定线程发送信号。
- Tcb 能力管理,所有任务的状态,执行由 tcb 能力管理,比如唤醒一个新的线程,配置一个 tcb 的 vspace,fault endpoint,cnode,rlimit 信息,以及其他的调度策略,优先级,挂起,恢复等。
- vspace 能力管理,管理一个 vspace 空间的虚拟地址映射,内存用量等。
- sysctl 能力管理,具有访问系统信息和控制系统行为的能力,比如获取 cpu 的 load_avg,线程能够 mmap 的最大次数,当前 cpumask 信息等。
每种能力提供了自己 API,当访问错误时有通用错误代码,通过错误码可以执行处理错误程序。
依赖项
~155KB