PySpOS

用 Python 写的模拟操作系统,跑在宿主系统上。有 shell、进程调度、文件系统和 OTA 更新,还能执行 x86_64 ELF 程序。

当前版本
v3.2.0 RC1
运行环境
Python 3.10+
许可
MIT
└─$ help
PySpOS shell 命令(按分组;help <命令> 查看详情)

[系统]
  clear            清屏
  echo             打印字符串(支持 > 与 >>)
  help             显示帮助(help <命令> 看详情)
  …(共 9 组)
└─$ ps
  PID   PPID  STATE     KIND    CMD
    0      0  Sleeping  idle    swapper/0
    1      0  Sleeping  init    init
    2      1  Running   shell   pyspos-sh
shell 里 help 和 ps 的输出(节选)。PID 0、1、2 是保留进程。

简介

PySpOS 从 2022 年的“MP4 架构狗头 OS”演变而来。应用是独立的进程,调度器参照 Linux 的 EEVDF。

  • 真子进程:应用有 PID、父子关系和信号。
  • EEVDF 调度:按虚拟截止期和 nice 权重排程。
  • ELF 引擎:Unicorn 执行 x86_64 指令;没装时退回自研的 SpaceCPU 1 Pro。
  • A/B 升级:更新装进非活动槽位,校验后切换,失败可回滚。

动态链接(INTERP)和 TLS 还没有实现。

一条命令怎么执行

  1. Shell:解析输入并分发给对应模块。管道、重定向和后台作业从这里开始。
  2. 进程:外部程序经 fork / exec 成为独立进程,由调度器安排运行。
  3. 运行时:Unicorn 执行 ELF 指令,系统调用转给内置的模拟层。

3.2.0 更新

这一版把 1217 行的 main.py 拆进了 src/shell/,原文件保留为兼容层。

  • 进程:不再是协作式模拟。PID 0、1、2 依次引导,孤儿进程由 init 收养。
  • 调度:EEVDF,参照 Linux 6.6+ 的权重表、vruntime 和虚拟截止期。
  • 后台作业:cmd &、jobs、fg、bg、wait,以及进程组与会话。
  • ELF 调试:加 --stats、--map、--disasm、--strace 观察执行过程。
  • 窗口:VortexGlass 管理窗口和输入,应用可以用 Python SDK 开窗口、画控件,见 vortexglass.md。
  • 开机向导:11 步 curses 向导,语言和时区会实际生效,用 oobe 重跑。
  • 终端:中文按双宽排版,修好了按 Enter 出现 ^M 的问题。
  • 命令:分组 help、Tab 补全、管道和重定向;apps/ 下的程序可以直接执行。
  • 配置:SpaceConfig v2(.spc),带 Schema 校验和迁移工具。
  • OTA:云端已恢复,Recovery 里可以选版本装到指定槽位。
  • 出厂重置:recovery.erase 清理 8 类数据。
  • 许可:改用 MIT。

源码结构

位置作用
src/kernel.py主循环:处理输入、执行命令、初始化子系统
src/shell/命令解析与分发
src/process.py进程与调度
src/elf_loader/ELF 加载、CPU 与系统调用模拟
src/parse_spf.pySPF 脚本(自研格式)
src/ota.py更新的检查、下载、校验和安装
src/fs.py文件操作 API
src/btcfg.py启动配置,存在 etc/bootcfg.json

运行环境

  • Python:3.10 或更高。
  • 系统:Windows 7+、主流 Linux 发行版、macOS 10.14+。

详见配置要求。更新包在下载页,源码在 ViudiraTech/PySpOS。