[readme]: 更新 TLSF README.md
This commit is contained in:
@@ -1 +1,14 @@
|
||||
CPU/架构相关的初始化:页表、MMU、异常向量、CPU 核心启动
|
||||
CPU/架构相关的初始化:页表、MMU、异常向量、CPU 核心启动
|
||||
|
||||
|
||||
## PC 上从磁盘加载内核
|
||||
### 普通 PC 使用 硬盘/SSD 作为启动存储介质
|
||||
启动顺序:
|
||||
|
||||
CPU 上电 → 执行 BIOS/UEFI(固化在 ROM/Flash 上)
|
||||
BIOS/UEFI 通过 磁盘协议(SATA、NVMe)读取 引导扇区
|
||||
引导扇区加载 操作系统内核 到 RAM
|
||||
BIOS/UEFI 自身是存储在主板上的 Flash ROM(通常几十 KB ~ 几 MB)
|
||||
里面存放启动固件、硬件初始化、接口驱动
|
||||
|
||||
所以 PC 上也有 Flash,只是存固件,不存 OS 内核
|
||||
60
magnitude/kernel/README.md
Normal file
60
magnitude/kernel/README.md
Normal file
@@ -0,0 +1,60 @@
|
||||
### 设计原则(MagnitudeOS)
|
||||
- 默认不自动迁移:常态完全本地调度,避免不可预测抖动。
|
||||
- 显式迁移入口:仅由(1)系统服务/内核策略线程、(2)管理员/控制面(magctl)、(3)任务创建时绑定策略 触发。
|
||||
- RT 优先:RT 任务固定核(可选允许迁移但需停顿/握手);普通任务可迁移。
|
||||
- Push/Pull 可选:默认 pull(空闲核拉任务),可配置 push(繁忙核推任务)作为工具性手段。
|
||||
- 硬约束:尊重 cpu_affinity、pinning、cgroup/partition(若启用)。
|
||||
|
||||
|
||||
1. Scheduler 先决定“谁来跑”
|
||||
|
||||
|
||||
Scheduler 从就绪队列中选出一个线程(基于调度策略)。
|
||||
输出:next_thread。
|
||||
然后通知 Dispatcher 去执行切换。
|
||||
|
||||
2. Dispatcher 执行“任务切换”
|
||||
|
||||
|
||||
Dispatcher 根据 Scheduler 的决定,把当前线程切换到 next_thread。
|
||||
它不做任何策略决策,只执行上下文切换(寄存器、栈、MMU)。
|
||||
|
||||
3. 调用关系
|
||||
|
||||
|
||||
+-------------------+
|
||||
| Syscall/IRQ |
|
||||
+-------------------+
|
||||
|
|
||||
v
|
||||
+-------------------+
|
||||
| Scheduler | <-- 决定 next 线程
|
||||
+-------------------+
|
||||
|
|
||||
v
|
||||
+-------------------+
|
||||
| Dispatcher | <-- 执行切换(上下文切换)
|
||||
+-------------------+
|
||||
|
||||
- Scheduler 选人
|
||||
- Dispatcher 换人
|
||||
- 这两个不是一对一,也不是谁派发给谁,而是 调用关系:
|
||||
- 调度器调用分派器(sched -> dispatch),反之不会发生。
|
||||
|
||||
|
||||
|
||||
// 内核启动
|
||||
// extern void magnitude_start(void); magnitude_start();
|
||||
// 每个核心一个调度器
|
||||
// Per-CPU 调度器 + 全局负载均衡(但严格 + 手动迁移)
|
||||
// extern void magnitude_scheduler_start(void);
|
||||
|
||||
// typedef struct magnitude_scheduler {
|
||||
// runqueue_t rq; // 每核运行队列
|
||||
// cpu_id_t cpu_id; // 当前 scheduler 对应的 CPU ID
|
||||
// tcb_t *current_task; // 当前 CPU 上正在运行的任务
|
||||
// int load; // 当前负载(任务数量或加权值)
|
||||
// } magnitude_scheduler_t;
|
||||
//
|
||||
// // 全局数组:每个 CPU 一个调度器
|
||||
// magnitude_scheduler_t scheduler_array[MAX_CPUS];
|
||||
48
system/README.md
Normal file
48
system/README.md
Normal file
@@ -0,0 +1,48 @@
|
||||
magfsd、magnetd、magdevd 等是“服务容器”或“服务管理进程”,它们本身不实现具体功能,而是负责挂载具体实现模块。
|
||||
|
||||
这种设计类似于 Linux 的 systemd + 插件架构,或者 QNX 的资源管理器模型。
|
||||
|
||||
+------------------------------------------------------------+
|
||||
| 用户应用(App / CLI) |
|
||||
|------------------------------------------------------------|
|
||||
| [ User Processes ] |
|
||||
+---------------------------↑--------------------------------+
|
||||
|
|
||||
+---------------------------IPC------------------------------+
|
||||
|
|
||||
+------------------------------------------------------------+
|
||||
| System Services |
|
||||
| +---------+ +--------+ +--------+ +---------+ |
|
||||
| | magcore | -> | magfsd | -> | magnetd| -> | magdevd | |
|
||||
| +---------+ +--------+ +--------+ +---------+ |
|
||||
| | | | | |
|
||||
| | +----------------------+ | |
|
||||
| | | Other Services: | |
|
||||
| | | maglogd, magcfgd, magtimed, | |
|
||||
| | | magsecurityd, magupgraded, | |
|
||||
| | | maggraphd | |
|
||||
+-------↓------------------------------------------↓---------+
|
||||
| 插件 / 模块(Drivers) |
|
||||
| ext4.so | nfs.so | lwip.so | dev-uart.so | ... |
|
||||
+------------------------------------------------------------+
|
||||
| MagnitudeOS 内核 |
|
||||
| (Scheduler, IPC, Memory, Capability Security, Syscalls) |
|
||||
+------------------------------------------------------------+
|
||||
|
||||
|
||||
| **服务进程** | **作用** |
|
||||
| ---------------- |------------------------------------------------------|
|
||||
| **magcore** | 根进程,负责启动和监控其他 system 服务(类似 init) |
|
||||
| **magfsd** | 文件系统管理,加载和管理 ext4、NFS、FAT 等文件系统 |
|
||||
| **magnetd** | 网络管理,挂载 lwIP、BSD TCP/IP 协议栈 |
|
||||
| **magdevd** | 设备管理,驱动加载与热插拔支持 |
|
||||
| **maglogd** | 日志管理(类似 journald),提供日志收集与查询接口 |
|
||||
| **magcfgd** | 系统配置管理,统一配置中心 |
|
||||
| **magtimed** | 时间与时钟同步(NTP、RTC) |
|
||||
| **magsecurityd** | 权限控制与安全策略管理 |
|
||||
| **magupgraded** | 系统升级/OTA 服务 |
|
||||
| **maggraphd** | 图形显示与窗口管理(如果有 GUI) |
|
||||
| **magapi** | **源码级 API 兼容服务**,提供 POSIX、Darwin、Win32 API,依赖 lib 实现 |
|
||||
| **magabi** | **二进制 ABI 兼容服务**,提供 Linux syscall 转换、Windows EXE 支持 |
|
||||
| **magbalanced** | 任务调度的负载均衡服务 |
|
||||
|
||||
Reference in New Issue
Block a user