[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