跳转至

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年之前项目:

参见 pre_research_2022.pdf

一个从头开始写操作系统的教程:https://github.com/cfenollosa/os-tutorial