Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • O OSKernel2025-FireBallOS
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Terraform modules
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • qiqi
  • OSKernel2025-FireBallOS
  • Merge requests
  • !1

test:进行了代码重构和推进,尝试将分支合并到main

  • Review changes

  • Download
  • Patches
  • Plain diff
Merged qiqi requested to merge migrate/new-os-import into main Feb 16, 2026
  • Overview 0
  • Commits 1
  • Pipelines 0
  • Changes 55

feat , refactor and chore(kernel): 从原项目版本中进行部分代码重构为双架构做准备:重构架构层、模块化进程与 shell、增强内存管理、扩展 syscall 覆盖、收敛 FS 与进程语义,并沉淀阶段测试资产,同时添加了一些杂项

背景:

  • 区域赛阶段主要稳定在 basic 组(glibc/musl)路径。
  • 比赛推进中需要在同一内核上扩展 busybox、lua、libcbench、cyclictest、iozone 等测试能力。
  • 原有目录结构中架构层与业务层耦合、process/shell 单文件过大,持续迭代成本高。

变更:

  • 架构重构:
    • 将旧 trap/ + sbi.rs + entry.asm 迁移到 os/src/arch/riscv/*。
    • 新增 arch/riscv/{config.rs,entry.S,sbi.rs,timer.rs,trap/*},统一架构相关入口与 Trap 处理。
  • 进程与 shell 模块化:
    • os/src/process.rs 拆分为 process/{mod,exec,memory,fault}.rs。
    • os/src/shell.rs 拆分为 shell/{mod,parser,runner}.rs。
  • 内存管理增强:
    • 新增 mm/layout.rs、mm/selftest.rs、mm/swap.rs。
    • 强化 memory_set/page_table/mod,补齐高半区映射、自测与映射稳定性路径。
  • syscall 覆盖扩展:
    • 扩展 syscall/{mod,fs,mm,process,time}.rs,补齐 busybox/lua/libcbench/cyclictest/iozone 阶段所需高频 syscall。
    • 包含 sendfile/utimensat/renameat2/sysinfo/kill/syslog/ftruncate/clock_getres/clock_nanosleep/mlock* 等路径。
  • FS 与进程语义收敛:
    • 文件系统覆盖层语义增强(open/write/truncate/rename/unlink/stat/access 等组合路径)。
    • futex/线程退出/调度切换路径做收敛,降低 benchmark 场景中的僵尸堆积与卡住概率。
  • 测试资产沉淀:
    • 新增 new-os/imgs/ 阶段测试镜像(basic/busybox/lua/libcbench/cyclictest/iozone 组合)。

验证:

  • 命令: make all
  • 结果: 成功生成 kernel-rv
  • 命令: (docker中/本地环境)qemu-system-riscv64 -machine virt -kernel kernel-rv -m 1G -nographic -smp 1 -bios default -drive file=../*.img,if=none,format=raw,id=x0 -device virtio-blk-device,drive=x0
  • 结果: 内核可启动并进入测试流程,basic/busybox/lua/libcbench/cyclictest/iozone 阶段在本地电脑环境测试中基本均通过

说明:

  • 阶段4日志中存在兼容策略:
    • iozone 部分子项有命令重写。
    • libcbench-musl 有 fallback 标记。
  • 因此“整组可稳定闭环”已达成,但 iozone/libcbench-musl 在该阶段并非完全无兼容策略的纯真实语义。(人话:iozone:部分参数被重写后再跑;libcbench-musl:走了 fallback,不是完整执行真实 libc-bench 二进制。当前测试不会卡死,但应该不是完全真实的状态)

可能风险:

  • wait4 仍偏最小实现,后续可继续做更完整阻塞/唤醒语义。
  • FS 覆盖层目前是测试导向最小可用语义,冲刺 ltp/netperf 等复杂组前建议继续加强一致性。
  • 若后续去除 iozone/libcbench-musl 兼容策略,需要同步加强线程调度与内存回收路径。
Assignee
Assign to
Reviewers
Request review from
Time tracking
Source branch: migrate/new-os-import