[readme]: 更新 TLSF README.md

This commit is contained in:
2025-08-24 19:03:13 +08:00
parent fefe126fd9
commit 3768c68fad
3 changed files with 122 additions and 1 deletions

View File

@@ -1 +1,14 @@
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 内核

View File

@@ -0,0 +1,60 @@
### 设计原则MagnitudeOS
- 默认不自动迁移:常态完全本地调度,避免不可预测抖动。
- 显式迁移入口仅由1系统服务/内核策略线程、2管理员/控制面magctl3任务创建时绑定策略 触发。
- 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
View 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** | 任务调度的负载均衡服务 |