Pre-Research
Distributed-OS
定义
将若干节点的资源统筹调配,对用户透明。这些计算机在物理上是分开的,在体系结构上可能是异构的,但是通过网络相互连接,形成一个统一的计算系统。分布式系统的各个计算机通过相互发送消息实现交流和协调。 主要分为两部分: * minimal kernel, 用于直接控制该节点的硬件 * system management component, 用于引导节点的单独或协作活动
实例
- 传统意义上的操作系统:基于底层硬件开发,提供了一套完整的系统,用户可以直接使用:
- 还活着的: Barrelfish, HarmonyOS, Inferno, Plan 9 from Bell Labs, QNX
- 亚操作系统:
- Ray(Python, 主要用于分布式计算), Ceph(C++, 分布式存储系统)
过往项目
OSH-2022 x-DelayNoMore
- 利用了去中心化的 ROS 信息传递机制, 使用 Ray 来实现分布式计算
- 使用Ray将多个节点的算力结合起来。将部署的ROS节点(分布式计算集群节点)发出的任务通过Ray中的分布式计算框架进行计算调度后返回到各个节点中去
可能的开发方向
- 专一功能:如分布式存储系统 -> (分布式OS)、分布式计算系统
- 通用:
- 从零写起的分布式OS(轻量化,最基本功能,可选用某一种架构单独开发)
- 改写某种已有OS的内核使其支持分布式(如Linux),保持上层内容不变
Distributed-File-System
定义
若干存储节点被封装在统一的接口之后,对用户透明,用户只能看到一个整体的文件系统。
过往项目:
OSH-2022 x-WowKiddy
- 数据一致性问题 - Paxos算法
- 高性能问题 - 缓存
Mobile Operating System
几乎没人做过, Android OS 和 IOS 从操作系统层面讲学习较难。
iOS
iOS 一般需要 Mac 作为开发平台,skip。
Android
Android OS 有开发空间,并且开源。
然而众多手机厂商已经对其进行深度开发,创新空间不大。有想法的话可以:)
Real-time Operating System
Wiki
实时操作系统(Real-time operating system, RTOS),又称即时操作系统,它会按照排序执行、管理系统资源,并为开发应用程序提供一致的基础。
实时操作系统与一般的操作系统相比,最大的特色就是“实时性”,如果有一个任务需要执行,实时操作系统会马上(在较短时间内)执行该任务,不会有较长的延时。这种特性保证了各个任务的及时执行。
设计实时操作系统的首要目标不是高的吞吐量,而是保证任务在特定时间内完成,因此衡量一个实时操作系统坚固性的重要指标,是系统从接收一个任务,到完成该任务所需的时间,其时间的变化称为抖动。可以依抖动将实时操作系统分为两种:硬实时操作系统及软实时操作系统,硬实时操作系统比软实时操作系统有更少的抖动:
- 硬实时操作系统必须使任务在确定的时间内完成。
- 软实时操作系统能让绝大多数任务在确定时间内完成。
实时操作系统与一般的操作系统有着不同的调度算法。普通的操作系统的调度器对于线程优先级等方面的处理更加灵活;而实时操作系统追求最小的中断延时和线程切换延时。
通常都会有最基础的内核,以及外加上去的模块,像是文件系统、网络协议堆栈和应用、设备驱动程序等模块。
RTOS的内核通常会有:调度器、对象、服务。
参考:https://en.wikipedia.org/wiki/Real-time_operating_system
Official site: https://www.ros.org
过往项目
https://github.com/OSH-2022/x-QvQ
省流:用 Rust 写一个 Real-time operating system 的 kernel。
https://github.com/OSH-2022/x-NooBirds
基于实时操作系统开发一个基于视觉的机器人小车平台。
其中的一些资源同样适用于
Robot Operating System
Wiki
ROS(英语:Robot Operating System,一般译为机器人操作系统),是专为机器人软件开发所设计出来的一套电脑操作系统架构。它是一个开源的元级操作系统(后操作系统),提供类似于操作系统的服务,包括硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间消息传递、程序发行包管理,它也提供一些工具和库用于获取、建立、编写和执行多机融合的程序。
ROS的运行架构是一种使用ROS通信模块实现模块间P2P的松耦合的网络连接的处理架构,它执行若干种类型的通讯,包括:
- 基于服务的同步RPC(远程过程调用)通讯;
- 基于Topic的异步数据流通讯,还有参数服务器上的数据存储。
参考: https://en.wikipedia.org/wiki/Robot_Operating_System
Official site: https://www.ros.org/
可行性
可以观看官网上的介绍视频。
很多大型公司基于 ROS 开发自己的机器人平台,并且 ROS 周边社区,资源也较为丰富,开发难度可能不会很大。
但是同时需要考虑到硬件设计,硬件条件。
Reference
2022年之前项目:
一个从头开始写操作系统的教程:https://github.com/cfenollosa/os-tutorial