系统设计
提示
盘古 OS
的设计仍在逐步改进与完善中,本文将随时发生变化,感兴趣的朋友们可以时刻保持关注;- 在下方的版权声明中有本文作者的联系方式,有不同意见和相关建议的朋友可以与其保持联系;
- 也可在本文底部的评论区登录 Github 后,直接发表您的观点;
版权声明
- 文章作者: flytreeleft - flytreeleft@crazydan.org
- 文章链接: https://studio.crazydan.org/docs/pangu-os/system-design/
- 版权声明: 本文章采用许可协议《署名 4.0 国际 (CC BY 4.0)》。 转载或商用请注明来自 Crazydan Studio!
以数据为中心
- 应用开发及使用均以其为第一原则,弱化应用的存在和重要性
- 没有文件等概念存在,文件中的内容才是核心
- 底层存储为具备完整功能的数据库,该数据库存储的是结构化的数据
- 以元数据(不能结构化的数据)内容的哈希值为元数据的唯一标识,通过该标识做去重处理、数据寻址等, 从而降低重复数据造成的数据存储空间迅速增大的风险
- 整个操作系统可直接无缝转换为数据库系统,用于存储业务系统的数据, 无需其他配置,也不需要部署其他应用
数据结构化
- 除内核(含驱动)之外的数据,均为结构化的
- 内核及其驱动层是硬件相关的,涉及性能、硬件操作以及现有成果复用等问题, 故不要求所采用的编程语言和数据结构
- 函数传参、应用消息等,传递的均为结构化数据,禁止在字符串等基础数据中包含结构
数据版本化
- 也即数据不可变,任意变更都将产生新的版本,确保变更不丢失,并可恢复至任意时刻的变更
- 在操作审计严格的场景下,可对用户的一切操作启用版本化控制,以便于跟踪和回溯用户操作
应用函数化
- 除内核(含驱动)之外的代码,均为函数化的
- 使用统一的编程语言进行应用开发
- 提供便捷、流畅、一致的开发及运行环境, 并配套提供相应的开发工具(如,应用配置、代码编写、数据定义、数据查询、应用组装等)
- 所有应用均基于操作系统提供的编程语言(及其衍生语言),按照统一的编码规范进行开发
- 确保所有代码均可被共享和直接调用,而不是换一种语言就得重写全部代码
- 应用分发必须有可信任的证书:中心化的、可信任的应用商城是有必要的
- 应用之间,应用内函数之间,均互传结构化数据
函数版本化
- 状态不可变,函数内无全局引用,函数间无共享变量
- 函数之间依赖具体的某个版本,应用的升级不会影响依赖方的正常运行,
因为其所依赖的函数版本不会因为升级而被覆盖,函数的各个安装版本都将保留在系统中
- 根据函数所在的模块(
Module
)的版本作为依赖版本,即,以模块作为函数的最小管理单元
- 根据函数所在的模块(
- 保证系统的兼容性,并可在任意时刻由用户决定是否整体升级依赖函数或部分升级依赖函数
应用能力共享
- 非源码(资产)共享,而是函数能力的共享,共享的是开发成果
- 代码仅需写一次
- 应用服务于数据所有者(个人或组织),而不是其开发者
- 应用之间没有竞争关系,其协同为数据所有者服务,构成一个不可分割的整体
- 应用的能力可做任意组合,以共同完成大型或复杂的任务,同时提供顺畅的、无割裂、一致的用户体验
- 只有操作系统这一个唯一的交互界面,应用只提供能力,不处理用户界面
- 如,用户在编辑文档编辑器中的图片时,会自动调用图片编辑器(独立应用)的能力, 但用户不会感知到图片编辑器的存在,其会认为这就是文档编辑器自身的能力
- 用户可通过各个独立的应用函数,按需自由组装新的应用
应用安全控制
- 应用行为监控与处置,严格规范应用行为,不给应用留下实施不合规行为的空间
- 在基础库层面消除应用的非法行为,并对各类数据的使用进行监督
- 函数运行隔离
- 仅开放权限的相关函数才会被真正调用,未授权的访问的函数都将直接返回模拟的、随机的数据
- 数据访问隔离
- 数据是不可变的,应用对数据的修改只会产生新的变更版本, 需由用户最终确定后,其对数据的修改才会被其他应用访问到
- 数据访问授权
多设备互联
- 共享数据,共享算力,计算能力在设备间无缝迁移
- 数据可跨设备访问后,仅需要在设备间传递数据处理函数(应用)即可
- 设备间的连接,由设备所有者确认,并在确认后做认证交换
- 支持对设备能力及数据访问和操作权限的控制
修复方案共享
- 根据具体问题做匹配,并在用户确认的情况下,应用已经验证过的修复方案
- 应用或函数涉及安全更新时,主动向用户及依赖方推送更新,并由用户决定是否更新
- 提供统一的、官方的安全更新发布地,由操作系统拉取更新,并通知用户
- 依赖方需根据依赖的更新情况,确定是否要对代码做调整或仅更新依赖版本, 再推送至发布平台
- 发布平台需对函数和应用的开发者做强安全认证,以避免被破坏者挟持并发布虚假的恶意更新
- 发布平台需对安全更新做恶意行为检测,以及时中止破坏行为