本文档详细说明 ZerOS Kernel 的系统架构、模块设计和实现细节。适合想要深入了解内核设计的开发者阅读。
ZerOS/
├── kernel/ # 内核模块
│ ├── filesystem/ # 文件系统
│ │ ├── disk.js # 虚拟磁盘管理
│ │ ├── nodeTree.js # 文件树结构
│ │ ├── fileFramework.js # 文件对象模板
│ │ └── init.js # 文件系统初始化
│ ├── logger/ # 日志系统
│ │ └── kernelLogger.js # 统一日志管理
│ ├── memory/ # 内存管理
│ │ ├── memoryManager.js # 统一内存管理器
│ │ ├── heap.js # 堆内存管理
│ │ ├── shed.js # 栈内存管理
│ │ ├── kernelMemory.js # 内核动态数据存储
│ │ └── memoryUtils.js # 内存工具函数
│ ├── process/ # 进程管理
│ │ ├── processManager.js # 进程生命周期管理
│ │ ├── permissionManager.js # 权限管理
│ │ ├── applicationAssetManager.js # 应用程序资源管理
│ │ ├── applicationAssets.js # 应用程序资源映射
│ │ └── programCategories.js # 程序分类
│ ├── core/ # 核心模块
│ │ ├── exceptionHM/ # 异常处理
│ │ │ └── exceptionHandler.js # 异常处理管理器(结构化异常处理SEH)
│ │ ├── safemode/ # 安全模式
│ │ │ └── safeModeManager.js # 安全模式管理器
│ │ └── usercontrol/ # 用户控制
│ │ ├── userControl.js # 用户控制系统
│ │ └── userGroup.js # 用户组管理系统
│ ├── drive/ # 驱动层
│ │ ├── animateManager.js # 动画管理
│ │ ├── networkManager.js # 网络管理
│ │ ├── LStorage.js # 本地存储
│ │ ├── speechDrive.js # 语音识别驱动
│ │ └── networkServiceWorker.js # 网络服务工作者
│ ├── signal/ # 信号系统
│ │ ├── dependencyConfig.js # 依赖管理和模块加载
│ │ └── pool.js # 全局对象池
│ ├── dynamicModule/ # 动态模块
│ │ ├── dynamicManager.js # 动态模块管理
│ │ └── libs/ # 第三方库
│ │ ├── anime-4.2.2/ # anime.js 动画库
│ │ ├── animate.min.css # animate.css
│ │ ├── html2canvas.min.js # html2canvas
│ │ └── jquery-3.7.1.min.js # jQuery
│ ├── typePool/ # 类型池
│ │ ├── fileType.js # 文件类型枚举
│ │ ├── logLevel.js # 日志级别枚举
│ │ ├── addressType.js # 地址类型枚举
│ │ └── enumManager.js # 枚举管理器
│ └── SystemInformation.js # 系统信息(支持后端服务切换)
├── system/ # 系统目录
│ ├── service/ # 服务端(支持 PHP 和 SpringBoot 两种后端)
│ │ ├── FSDirve.php # 文件系统驱动服务(PHP 后端)
│ │ ├── CompressionDirve.php # 压缩驱动服务(PHP 后端)
│ │ ├── ImageProxy.php # 图片代理服务(PHP 后端)
│ │ ├── BrowserProxy.php # 浏览器网页代理(PHP 后端)
│ │ ├── module-proxy.php # 模块代理服务(PHP 后端)
│ │ # 注意:SpringBoot 后端提供相同的服务接口,路径无 .php 后缀
│ │ └── DISK/ # 虚拟磁盘存储
│ │ ├── C/ # C: 盘
│ │ └── D/ # D: 盘
│ │ ├── application/ # 应用程序目录
│ │ ├── plugins/ # 语言包(D/plugins)
│ │ └── server/ # 服务模块(D/server,server-xxx.js)
│ ├── expansion/ # 系统扩展
│ │ ├── languagesExpansion.js # 语言包管理器
│ │ └── serverExpansion.js # 服务扩展(D/server 服务管理)
│ ├── ui/ # UI 模块
│ │ ├── guiManager.js # GUI 窗口管理
│ │ ├── themeManager.js # 主题管理
│ │ ├── taskbarManager.js # 任务栏管理
│ │ ├── notificationManager.js # 通知管理
│ │ ├── eventManager.js # 事件管理
│ │ ├── contextMenuManager.js # 上下文菜单管理
│ │ ├── desktop.js # 桌面管理
│ │ └── lockscreen.js # 锁屏界面
│ └── assets/ # 资源文件
│ └── assets/ # 资源子目录
│ ├── icons/ # 图标资源
│ │ ├── glass/ # Glass 风格图标
│ │ ├── gnome/ # GNOME 风格图标
│ │ ├── macos/ # macOS 风格图标
│ │ ├── material/ # Material 风格图标
│ │ ├── ubuntu/ # Ubuntu 风格图标
│ │ └── windows/ # Windows 风格图标
│ ├── desktopBG/ # 桌面背景
│ │ ├── default.svg
│ │ ├── cosmic.svg
│ │ ├── cyberpunk.svg
│ │ └── ...
│ └── start/ # 锁屏背景
│ ├── bg1.jpg
│ ├── bg2.jpg
│ └── bg3.jpg
├── bootloader/ # 启动引导
│ └── starter.js # 启动器
├── test/ # 测试和界面
│ ├── index.html # 入口页面
│ ├── core.css # 样式文件
│ └── assets/ # 测试资源
└── docs/ # 文档
├── API/ # API 文档
│ ├── README.md # API 文档索引
│ └── ... # 各模块 API 文档
├── SERVER/ # 服务与服务模块说明
│ ├── README.md # 服务索引
│ └── ServiceModule.md # 服务模块编写指南
├── PLUGINS/ # 扩展与插件(语言包等)
│ ├── README.md # 扩展与插件索引
│ └── LanguagePack.md # 语言包格式说明
├── DEVELOPER_GUIDE.md # 开发者指南
├── SYSTEM_FLOW.md # 系统流程说明
└── ZEROS_KERNEL.md # 本文档
KernelLogger,建立统一日志入口DependencyConfig 实例KERNEL_GLOBAL_POOLProcessManager,注册 Exploit 程序(PID 10000)GUIManager,建立窗口管理系统NotificationManager,建立通知系统TaskbarManager,建立任务栏界面UserControl,加载用户数据并创建默认用户LockScreen,显示锁屏界面autoStart: true 的程序(如终端程序)统一的内核日志系统,提供结构化的日志输出。
⚠️ 重要:所有日志输出必须通过 KernelLogger 进行统一管理,禁止直接使用 console.log、console.warn、console.error。
特性:
使用示例:
// ✅ 正确:使用 KernelLogger
KernelLogger.info('MYAPP', '程序启动');
KernelLogger.warn('MYAPP', '警告信息');
KernelLogger.error('MYAPP', '错误信息', error);
// ❌ 错误:直接使用 console(不推荐)
console.log('程序启动');
详细 API 文档请参考 KernelLogger API
提供堆内存和栈内存的统一管理,支持多进程内存隔离。
堆内存 (Heap):
栈内存 (Shed):
Exploit 程序(PID 10000):
详细 API 文档请参考 MemoryManager API 和 KernelMemory API
完整的虚拟文件系统实现,支持目录树和文件操作。
核心组件:
Disk:虚拟磁盘管理
NodeTreeCollection:文件树集合
FileFormwork:文件模板
支持的操作:
持久化存储:
FSDirve.php 服务进行,文件实际存储在 system/service/DISK/C/ 和 system/service/DISK/D/ 目录下.php 后缀,可通过 SystemInformation 切换详细 API 文档请参考 Disk API 和 NodeTree API
完整的进程生命周期管理系统,负责程序的启动、运行和终止。
特性:
APPLICATION_SHARED_POOL)autoStart 和 priority)CLI 程序自动启动终端:
autoStart: true)详细 API 文档请参考 ProcessManager API
ZerOS 内核的安全核心组件,负责管理所有程序的内核操作权限。
特性:
__info__ 中声明所需权限详细 API 文档请参考 PermissionManager API
结构化异常处理(SEH)机制,提供统一的异常报告和处理系统。
特性:
异常处理流程:
详细 API 文档请参考 ExceptionHandler API
管理所有应用程序的资源信息,包括脚本路径、样式表和元数据。
特性:
详细 API 文档请参考 ApplicationAssetManager API
统一的系统通知管理系统,负责通知的创建、显示、管理和交互。
特性:
snapshot(快照)和 dependent(依赖)SYSTEM_NOTIFICATION 权限通知类型:
详细 API 文档请参考 NotificationManager API
提供统一接口,管理所有内核模块的动态数据,存储在 Exploit 程序的内存中。
特性:
存储的数据类型:
APPLICATION_SOP - 应用程序分区管理表PROGRAM_NAMES - 程序名称映射PROCESS_TABLE - 进程表NEXT_PID - 下一个PIDNEXT_HEAP_ID / NEXT_SHED_ID - 下一个堆/栈IDDISK_SEPARATE_MAP / DISK_SEPARATE_SIZE - 磁盘分区信息DISK_FREE_MAP / DISK_USED_MAP - 磁盘使用情况DISK_CAN_USED - 磁盘可用状态详细 API 文档请参考 KernelMemory API
Bash 风格的命令行终端界面,提供完整的命令处理能力和窗口管理功能。
特性:
内置命令:
ls, cd, tree, cat, write, rm, mv, copy, paste, renamemarkdir, markfileps, kill, diskmanger, power, checkvimclear, help, pwd, whoamiZerOS 提供了完整的 GUI 管理系统,包括:
GUIManager:窗口管理,层叠、焦点、模态提示框
GUIManager.registerWindow() 进行窗口管理TaskbarManager:任务栏管理,程序启动、多任务切换
NotificationManager:通知管理,系统通知的创建和显示
ThemeManager:主题管理,主题和风格的独立管理
EventManager:事件管理,统一的事件处理系统
EventManager 进行统一管理ContextMenuManager:上下文菜单管理,右键菜单系统
DesktopManager:桌面管理,桌面图标和快捷方式
详细 API 文档请参考:
ZerOS 提供了多个系统级驱动,扩展内核功能:
详细 API 文档请参考:
统一的多用户管理系统,支持用户级别控制、密码管理和权限授权控制。
特性:
D:/cache/ 目录LStorage 的 userControl.users 键中默认用户:
root:默认管理员,无密码TestUser:测试用户,无密码使用示例:
// 登录用户
await UserControl.login('root');
// 检查用户级别
if (UserControl.isAdmin()) {
console.log('当前用户是管理员');
}
// 设置用户密码
await UserControl.setPassword('TestUser', 'password123');
详细 API 文档请参考 UserControl API
用户组管理系统,与 UserControl 兼容,支持创建和管理用户组。
特性:
admins(管理员组)和 users(普通用户组)LStorage 的 userControl.groups 键中权限要求:
SYSTEM_STORAGE_WRITE_USER_CONTROL 权限SYSTEM_STORAGE_READ_USER_CONTROL 权限使用示例:
// 创建组
await UserGroup.createGroup('developers', UserGroup.GROUP_TYPE.USER_GROUP, '开发人员组');
// 添加成员
await UserGroup.addMember('developers', 'User1');
// 获取组成员
const members = await UserGroup.getMembers('developers');
// 同步默认组
await UserGroup.syncDefaultGroups();
详细 API 文档请参考 UserGroup API
Windows 11 风格的登录界面,负责系统启动时的用户认证。
特性:
system/assets/start/ 目录随机选择背景图片(可开关)存储键:
system.lockscreenRandomBg:是否启用随机锁屏壁纸(默认 true)system.lockscreenBackground:自定义锁屏背景路径system.lockscreenTimeComponent:是否显示时间组件(默认 true)system.lockscreenDailyQuote:是否显示每日一言组件(默认 true)快捷键:
Ctrl + L:手动锁定屏幕使用示例:
// 初始化锁屏界面
await LockScreen.init();
// 手动锁定屏幕(通过 TaskbarManager)
TaskbarManager._lockScreen();
// 加载每日一言
await LockScreen._loadDailyQuote();
详细 API 文档请参考 LockScreen API
Exploit 程序(PID 10000)是 ZerOS Kernel 的统一数据存储中心,负责管理所有临时数据和终端状态。
设计目的:
存储的数据类型:
终端输出内容
剪贴板数据
终端实例数据(按 tabId 区分)
内存分配:
所有存储在 Exploit 程序中的数据使用统一的键名规范:
| 键名格式 | 说明 | 示例 |
|---------|------|------|
| TERMINAL_{tabId}_ENV | 终端环境变量 | TERMINAL_tab-1_ENV |
| TERMINAL_{tabId}_HISTORY | 命令历史 | TERMINAL_tab-1_HISTORY |
| TERMINAL_{tabId}_COMPLETION | 补全状态 | TERMINAL_tab-1_COMPLETION |
| TERMINAL_CONTENT_ADDR | 终端输出内容地址 | TERMINAL_CONTENT_ADDR |
| CLIPBOARD_ADDR | 剪贴板数据地址 | CLIPBOARD_ADDR |
每个键名都有对应的 _ADDR 和 _SIZE 后缀,用于存储内存地址和大小信息。
存储流程:
resourceLinkArea 中保存地址和大小信息读取流程:
resourceLinkArea 中读取地址信息内存管理优势:
系统使用 DependencyConfig 管理模块依赖关系:
Dependency.addDependency("../kernel/filesystem/nodeTree.js");
Dependency.waitLoaded("../kernel/filesystem/disk.js", {
interval: 50,
timeout: 1000
});
详细 API 文档请参考 DependencyConfig API
使用 POOL 系统管理全局对象:
POOL.__INIT__("KERNEL_GLOBAL_POOL");
POOL.__ADD__("KERNEL_GLOBAL_POOL", "WORK_SPACE", "C:");
POOL.__GET__("KERNEL_GLOBAL_POOL", "WORK_SPACE");
详细 API 文档请参考 Pool API
文件系统持久化:
filesystem_<盘符>(如 filesystem_C:)FSDirve.php 服务进行,文件实际存储在 system/service/DISK/C/ 和 system/service/DISK/D/ 目录下.php 后缀,可通过 SystemInformation 切换内存数据管理:
⚠️ 重要:所有日志输出必须通过 KernelLogger 进行统一管理。
统一的日志输出格式:
[内核][模块名] [级别] <时间戳> - <消息> [元数据]
使用示例:
// ✅ 正确:使用 KernelLogger
KernelLogger.info('MYAPP', '程序启动');
KernelLogger.warn('MYAPP', '警告信息');
KernelLogger.error('MYAPP', '错误信息', error);
// ❌ 错误:直接使用 console(不推荐)
console.log('程序启动');
详细 API 文档请参考 KernelLogger API
✅ 锁屏界面增强:
https://v.api.aa1.cn/api/yiyan/index.php✅ 主题管理器程序增强:
✅ 音乐播放器程序增强:
limit 和 page 参数进行API调用✅ 用户控制系统 (UserControl):
D:/cache/ 目录,支持通过文件管理器选择LStorage 中,支持跨会话保存root(默认管理员)和 TestUser(测试用户)✅ 锁屏界面 (LockScreen):
system/assets/start/ 目录随机选择背景图片Ctrl + L 手动锁定屏幕✅ 设置程序 (Settings):
Ctrl + X 快速启动设置程序✅ 语音识别驱动 (SpeechDrive):
✅ 全局快捷键增强:
Ctrl + R:启动运行程序(如果已运行则聚焦)Ctrl + X:启动设置程序(如果已运行则聚焦)Ctrl + L:锁定屏幕,显示锁屏界面(新增)Ctrl + E:关闭当前焦点窗口Ctrl + Q:切换当前焦点窗口的最大化/最小化状态Shift + E:启动文件管理器✅ 路径系统重构:
/service/ 路径更新为 /system/service/system/assets/assets/icons/fileSystem 统一为 filesystem✅ 头像管理系统:
D:/cache/ 目录✅ LStorage 增强:
✅ 文档全面更新:
✅ JSEncrypt 库支持:
✅ 窗口拉伸增强:
✅ 压缩解压功能:
✅ 文件管理器增强:
✅ 背景图系统:
✅ 扫雷游戏:
✅ 天气组件优化:
✅ 天气组件:
✅ 任务栏程序固定功能:
pinProgram、unpinProgram、getPinnedPrograms、isPinned、setPinnedPrograms✅ 窗口管理优化:
✅ 上下文菜单增强:
✅ GUI资源清理优化:
addEventListener 调用并记录警告SystemInformation 动态切换
v2.3 (2025-12-21)
v2.2 (2025-12-17)
v2.1 (2025-12-15)
v2.0 (早期版本)
ZerOS Kernel - 一个强大的虚拟操作系统内核,在浏览器中体验完整的系统操作。