Mini-OS现有应用介绍

MiniOS 3.3.4 发布,新功能有这些! MiniOS 是一款专为 USB 驱动器安装而设计的轻量级 Linux 发行版。自 2020 年重新发布以来,MiniOS 以 Debian 为基础,提供了高度模块化的系统配置,用户可以根据需求灵活定制自己的系统。近日,MiniOS 发布了其最新版本 3.3.4,这一版本带来了多项改进和新功能,使得 MiniOS 更加稳定、功能丰富且易于使用。 阅读详情

IntroductionToMiniosApplications  

Mini-OS现有应用介绍

Mini-OS是跟随Xen hypervisor发布的一款小内核操作系统,目前有一些基于Mini-OS的应用:HP实验室在2007年发布了基于Mini-OS的Xen Library OS;2008年剑桥大学进一步完善了HP的工作,完成了HVM stubdom并置于Xen源码树中;伊利诺伊大学芝加哥分校(UIC)正致力于开发一款基于Mini-OS的小内核系统—Ethos。

 

 

Mini-OS 启动简介

Mini-OS在start 处启动,加载SS和ESP指向的地址。KERNEL_SS由Xen的GDT提供,ESP指向的地址取自于stack_start 。ESI寄存器指向Mini-OS的start_info_t 结构体。ESI做为参数传入到启动函数start_kerel() 中。

start_kerel() 是启动Mini-OS的例程。它调用了一些初始化函数,然后建立了三个内核线程。由于Mini-OS是不可抢占的并只能运行单线程的操作系统,所以这三个内核线程依次被创建。

arch_init()

  • 将start_info数据结构拷贝到内核映像的一片全局区中(start_info_union.start_info)
  • 将全局变量phys_to_machine_mapping(mm.c)指向现有的P2M表(start_info.mfn_list)
  • 使用hypercall:HYPERVISOR_update_va_mapping把shared_info页映射到0x2000
  • 注册回调句柄(callback handlers)
    // 通过set_callbacks(),注册各种event和failsafe的处理函数 
    set_callbacks(unsigned long event_selector, unsigned long event_address, unsigned long failsafe_selector, unsigned long failsafe_address)

trap_init()

注册陷阱表(trap handler table),通常定义于Mini-OS的arch/x86/x86_32.h中。

void trap_init(void) 
{ 
    HYPERVISOR_set_trap_table(trap_table); 
}

init_mm()

该例程初始化Mini-OS的内存管理功能。

  • arch_init_mm()
    首先计算Mini-OS可以使用的页帧数。在Mini-OS中,text段起始于0x00,虚拟地址和客户物理地址是一致的。然后调用build_pagetables(start_pfg,max_pfn),建立页表。每增加一个页表项,调用HYPERVISOR_mmu_update()同步到hypervisor中。
  • arch_init_p2m()
    初始化HYPERVISOR_shared_info->arch.pfg_to_mfn_frame_list结构体,它记录了客户机页帧到物理机页帧的映射。
  • arch_init_demand_mapping_area()
    创建一个额外的PTE,可以用来按需地映射大于max_pfn页地址。

Xen Library OS

Xen Library OS的设计与实现

Xen Library OS 是一个类虚拟化的操作系统,它由四部分组成:

  • 一个基于GNU工具链的cross-development环境
  • Red Hat的newlib C库
  • Mini-OS内核
  • 域间通信机制IDC,基于Xen共享内存和时间通道实现

开发工具链

加入一个基于GNU工具链的cross-development环境,目的是获得最大的代码兼容性。Linux上的进程可以兼容的运行在Library OS上。通过修改GNU编译器和二进制工具来支持新的目标体系结构。Library OS的编译器称作i386-minios-gcc,它的头文件、库和加载器都被重写。

Library OS

Library OS使用Red Hat的newlib C库支持C程序。但需要修改newlib库以适应Library OS,比如一些函数fork、exec等都不能在新的目标体系结构中使用。 Library OS选择Mini-OS为其kernel,主要原因是Mini-OS有完善的支持Xen类虚拟化接口,Xen社区对其提供维护。 由于程序、库、内核都运行在一个地址空间中,所以Library OS适合运行小的可信服务,而不是一般的用户程序。

域间通信IDC

IDC是由Xen的事件通道实现的,包含读写两个IO环。IDC做为一个内核模块,向上层应用暴露6个接口。

  • Init: 初始化一个通道
  • Close: 关闭一个通道
  • Create: 允许用户向通道写数据,用户要有目标域的ID
  • Connect: 允许用户在通道中读数据
  • Write: 向通道中写
  • Read: 在通道中读

 

Xen Library OS的应用

Xen 3.0的vTPM驱动体系结构如图所示。所有的vTPM操作都有Domain0完成。

如图所示,vTPM的守护进程置于Domain0中,而vTPM的实际模拟器放入Library OS中,它们之间通过IDC联系。并且使用修改过的GNU工具链编译安装vTPM emulator。DomainU通过vTPM前段驱动将请求发往Domaoin0的后端驱动,vTPM的守护进程转发请求到Domain0的IDC,实际由Library OS处理请求。

修改Domain0的vTPM守护进程大概花费了200行代码,而修改vTPM emulator更少于500行代码。

该结构的缺点是显而易见的,由于每个DomU都配属相应的Trust Dom,使得一些操作变得非常繁琐,比如虚拟域热迁移等。

轻量级Xen Domain

轻量级Xen Domain的设计与实现

该轻量级Xen Domain 保留了Library OS的所有特性,包括cross-development环境、newlib库和IDC机制,并优化部分环境,更适合HPC(High Performance Computing)应用。

如图所示,轻量级Xen Domain的设计思想是将Mini-OS内核、C库、IP堆栈、执行环境和单个应用程序有机的整合在一起。在技术方面看,需要安装一个plain ELF cross-compilation chain,即以plain ELF为目标建立可交叉编译的binutils和gcc。然后用交叉编译工具编译和安装各种C库,它们和Mini-OS有同样的内核C flag。

LwIP提供了一个轻量级的TCP/IP协议栈,它与Mini-OS中的Network frontend相连接。Newlib提供了一个标准C库,它比庞大的GNU libc更适用于轻量级环境。但需要修改部分newlib的系统调用:

  • Mini-OS没有传统UNIX进程概念,getpid及其相似函数只输出某特定值,比如1
  • Mini-OS没有使用信号,可以忽略各种sig函数
  • 适当修改的函数:
    1. Sleep和gettimeofday必须小心的设计,使其符合虚拟化应用
    2. Mmap只负责处理匿名内存(anonymous memory),而不用实现映射普通文件和为无关联的进程提供共享空间的功能。

该系统还实现了一个瘦虚拟文件层(thin virtual file layer),它对控制台、文件、块设备、网络设备以及TCP/IP协议函数提供统一的支持。实现思想是依靠文件描述符识别目标文件的类型,然后将操作重定向到Mini-OS的各个前端驱动或者内核模块的底层函数上。

轻量级Xen Domain的进程调度完全依靠Mini-OS实现。Mini-OS提供非抢占式的多线程,并且目前只支持单虚拟CPU。这些线程由一个运行队列维护,它们之间没有优先权的差异。Mini-OS的内核也不需要支持任何自旋锁机制。 在内存管理方面借鉴了HPC(High Performance Computer)常用的sparse data机制,提供内存读写效率。

为提高读写磁盘的效率,应用了类似“零拷贝”的技术,IO操作不再由缓冲区缓冲。这意味着应用程序可以直接控制各种磁盘操作,不经过Mini-OS缓冲。

轻量级Xen Domain的应用—HVM stub domain

剑桥团队应用该轻量级Xen Domain将 qemu移到一个单独的驱动域中。由于Mini-OS调度非常简单并且只运行qemu一个程序,大大简化了hypervisor的调度和审计工作。在stubdom 中,qemu可以直接调用系统服务,不需要经过用户、内核两态的转换,提高了效率。

Ethos - An Operating system for the Xen hypervisor

Ethos 是UIC(University of Illinois at Chicago)正在开发的一款基于Xen和Mini-OS的轻量级操作系统。它开发的初衷是为了避免开发驱动程序、文件系统和网络设备。Ethos做为一个内核,只向外提供进程和系统调用接口。该项目的负责人Prof. Solworth称其为"Paired-OS"。

Xen上同时运行Ethos和标准linux。Ethos将文件系统、网络和设备驱动托管给linux,剩余部分由Ethos实现。

目前该项工作正在进展之中。

参考文献

1.Satya Popuri, A tour of the Mini-OS kernel, http://www.cs.uic.edu/~spopuri/minios.html

2.M.J. Anderson, M. Moffie, and C.I. Dalton. Towards Trustworthy Virtualisation Environments: Xen Library OS Security Service Infrastructure. Technical Report HPL-2007-69, Hewlett-Packard Development Company, L.P., April 2007.

3.Samuel Thibault and Tim Deegan. Improving performance by embedding hpc applications in lightweight xen domains. In HPCVirt '08: Proceedings of the 2nd workshop on Systemlevel virtualization for high performance computing, pages 9--15, New York, NY, USA, 2008. ACM.

4.Satya Popuri, Ethos - An Operating system for the Xen hypervisor, http://www.cs.uic.edu/~spopuri/ethos.html

5.Jon A. Solworth, Ethos: an operating system which creates a culture of security, http://www.rites.uic.edu/~solworth/ethos.html

MiniOS_操作系统真相还原MiniOS.zip 立即下载

相关推荐

(源码)基于C语言和Xen框架的极简操作系统.zip

# 基于C语言和Xen框架的极简操作系统 ## 项目简介 这是一个基于C语言和Xen框架的极简操作系统(Mini OS)项目,能在Xen虚拟化环境中运行,实现了基本的内存管理、时间管理、调度、网络、控制台、文件系统以及设备驱动等功能。 ## 项目的主要特性和功能 1. 内存管理基于物理到机器帧(P2M)映射,支持气球驱动动态调整内存。 2. 时间管理借助Xen虚拟计时器,可获取当前时间、设置定时器与阻塞。 3. 调度采用轮转法的非抢占式调度器管理线程执行。 4. 网络有简单网络驱动,支持TCPIP协议栈,可启动和关闭网络服务。 5. 控制台实现驱动,支持字符输入输出,用于虚拟环境交互。 6. 文件系统提供基于Xen设备模型的前端驱动,能访问后端文件系统。 7. 设备驱动有键盘、帧缓冲器、块设备等简单驱动,用于与后端设备通信。 ## 安装使用步骤 1. 环境准备安装Xen框架、对应工具链及开发环境。 2. 源码获取下载项目源代码。

一个微型的操作系统内核 MiniOS

MiniOS 是我在研究生导师的指导下参与开发的一个微型操作系统内核,接触 MiniOS 的开发有一段时间了,对其已经比较熟悉,便着手为 MiniOS 写了一个简要的介绍,下面是介绍内容(同时也是 MiniOS 在 GitHub 仓库的自述): MiniOS 简介 MiniOS 是一个面向操作系统开发学习者的、微型的操作系统内核,可以运行在32位 x86 架构的 CPU 上。MiniOS 专注于...

doubleXnine的专栏 1万+

DiffusionDrive实战:如何用截断扩散模型3个月搞定自动驾驶轨迹规划(附代码)

本文详细介绍了如何利用DiffusionDrive截断扩散模型,在三个月内快速构建端到端的自动驾驶轨迹预测系统。内容涵盖从环境搭建、数据处理、模型架构解析到训练调参和推理优化的完整实战流程,并提供了关键代码示例,旨在帮助开发者高效实现高质量的自动驾驶轨迹规划。

weixin_35578748的博客 147

探秘MiniOS:一款轻量级、便携式的操作系统构建工具

MiniOS 是一个专为用户提供友好且便携式操作系统的项目。它的核心在于通过一系列脚本创建一个可引导的ISO镜像,使得你可以构建出拥有图形界面的轻量化系统。无论你是想体验简洁高效的Fluxbox环境,还是更倾向于稳定可靠的Xfce4桌面,MiniOS都能满足你的需求。 该项目灵感来源于经典的Slax系统,旨在提供一种快速启动和恢复环境,或者作为一个临时的工作站,而无需在主系统上进行任何持久性的改

gitblog_00096的博客 2132

PSCAD学习笔记(1)Project Settings(重点snapshot设置)

若不勾选,则横坐标为实际时间2-7s,故障显示在第3s发生。图片中时间坐标轴显示为0-5s,故障时刻显示为第1s,即0-1s展示系统稳态,1-5s展示系统发生故障后的暂态响应,如何通过快照文件实现?勾选该项后,使用快照文件启动仿真会将仿真起始时间强制设置为0s,反之不勾选则依据快照文件保存的时间轴继续(即坐标为实际时间)。如果已有的快照文件保存的是0s至5s的仿真内容,则仿真运行时间从5s开始,到10s结束。如果已有的快照文件保存的是0s至2s的仿真内容,则仿真运行时间从2s开始,到7s结束;

gwenh的博客 7344

一文带你了解SOA接口测试

了解汽车电子行业的人,近几年可能经常见到一个词“SOA”,那SOA具体是什么?作为测试人员应该要测试哪些内容呢?这篇文章就简单给大家介绍一下。SOA(Service Oriented Architecture)是一种面向服务的架构,最早应用于IT行业,虽然行业内对于SOA的定义没有一个统一的描述,但是总体而言,SOA把功能定义成为服务,服务带有明确的可调用接口,并可以通过网络调用。在汽车领域,对于高性能计算平台而言,为了实现域控制器以及区域控制器之间的互联互通和软硬分离、缩短开发周期等优势,也引入了SOA的

怿星科技的博客 7156

【亲测免费】 推荐开源项目:MiniOS - 简约的x86操作系统

推荐开源项目:MiniOS - 简约的x86操作系统 项目介绍 欢迎来到MiniOS的世界,这是一个简约而富有挑战性的x86基础操作系统。它旨在帮助开发者深入了解操作系统的工作原理,并提供了一个逐步构建系统功能的学习平台。从最基础的"Hello world"开始,逐步引入全局描述符表(GDT)、中断描述符表(IDT),再到内存管理和虚拟内存,直至实现多进程机制和进程间通信(IP...

gitblog_00015的博客 1152

PicoRV32 笔记 05

PicoRV32 本地总线接口

jjinl的专栏 1575

[转]Mini-OS现有应用介绍

IntroductionToMiniosApplications Mini-OS现有应用介绍 Mini-OS是跟随Xen hypervisor发布的一款小内核操作系统,目前有一些基于Mini-OS的应用:HP实验室在2007年发布了基于Mini-OS的Xen Library OS;2008年剑桥大学进一步完善了HP的工作,完成了HVM stubdom...

weixin_34342207的博客 190

HTB_Bike靶机之模板注入

船到桥头自然直 文章目录信息收集模板引擎SSIT 模板注入后放答案 信息收集 日常 A 扫描,两个端口 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.4 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 3072 48:ad:d5:b8:3a:9f:bc:be:f7:e8:20:1e:f6:bf:de:ae (RSA) | 256 b7:89:6c:0b:20:ed:49:b2:c1:86:7c:.

网络安全学习 798

iOS WKWebView H5微信支付跳转

iOS WKWebView H5微信支付跳转 需求:iOS客户端实现嵌入H5进行微信支付跳转到微信客户端,支付完成后再跳转回我们的APP,解决WKWebView无法跳转回APP的BUG. 阅读前提: 了解WKWebView基本初始化及使用 了解如何利用URL Schemes进行应用间跳转 公司或个人已经在微信后台注册了一级域名 GitHub地址(附代码) :iOS WKWebView H5微信支付跳转 简书地址 :iOS WKWebView H5微信支付跳转 博客地址 :iOS WKWe...

ForeverMyheart的博客 2047

OS学习——基于mini arm OS

想通过一个最简单的OS来熟悉OS相关原理,这里通过移植mini arm OS到STM32F407开发板来学习的,并且记录了在移植过程中遇到两个问题Q1和Q2,欢迎大家讨论。

qq_40299575的博客 1221

Matt Pocock Skills — AI 编码代理技能包介绍与使用指南

《Matt Pocock Skills:AI编码代理技能包指南》 摘要: Matt Pocock Skills是一套开源AI编码代理技能包,旨在解决AI辅助开发中的四大痛点:需求理解偏差、token浪费、代码质量差和架构腐化。该技能包包含多种实用工具:/grill-with-docs用于需求对齐,/tdd实现测试驱动开发,/diagnose提供规范化调试流程,/triage管理issue生命周期。核心思想包括:通过拷问式对齐确保需求理解一致,建立共享领域语言提高沟通效率,快速反馈闭环加速开发,以及持续架构维

qq_45859163的博客 2222

Mini-RISC-V OS 开源项目教程

Mini-RISC-V OS 开源项目教程 1. 项目介绍 Mini-RISC-V OS 是一个为 RISC-V 架构设计的最小化多任务操作系统内核。本项目旨在从零开始构建一个可以在 RISC-V 平台上运行的简单操作系统。它受到 jserv 的 mini-arm-os 项目的启发,但针对 RISC-V 架构进行了重写,并且可以在 Windows 10 系统上运行。 2. 项目快速启动 以下是快速...

gitblog_00100的博客 1130

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Onion OS 上手全指南:把 Miyoo Mini 掌机变成真正的复古游戏机

如果你手上有一台 Miyoo Mini 或 Miyoo Mini Plus,大概很快会碰到一个尴尬:机器本身小巧可爱,但原厂系统功能单薄,模拟器零零散散,存档藏在各个角落,想从《宝可梦》切到《魂斗罗》还得退出重进好几次。Onion OS 正是为解决这些烦恼而生的开源增强系统——它把一百多个模拟器、快捷切换、主题定制和网络功能整合进一个流畅的界面,让这块小小的屏幕焕发完全不同的生命力。本文会从"为什

gitblog_01078的博客 383

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

mini-riscv-os:构建 RISC-V 最小多任务 OS 内核

mini-riscv-os:构建 RISC-V 最小多任务 OS 内核 项目介绍 mini-riscv-os 是一个开源项目,致力于从零开始构建一个针对 RISC-V 架构的最小多任务操作系统的内核。该项目受到 mini-arm-os 的启发,但由 ccckmit 针对RISC-V架构进行了重写,并能在 Win10 系统上运行,而不是仅在 Linux 系统上。 项目提供了一系列逐步深入的教程,从基...

gitblog_00342的博客 376

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Miyoo Mini 刷入 Onion OS 后怎么玩?从写SD卡到日常维护的完整攻略

Onion OS 是给 Miyoo Mini 和 Mini+ 掌机刷的开源复古游戏系统:一张 SD 卡装下上百款模拟器和常用工具,游戏列表、存档、主题、电量全在一块 640×480 的屏里管起来。这篇按"拿到卡之后"的顺序写——怎么刷入、怎么跑通第一款游戏、怎么让它更像自己的设备,最后聊日常维护。 ## 拿到卡之后:半小时从镜像到主界面 ### 5分钟把系统刷进SD卡 准备三样东西:一张 m

gitblog_00525的博客 699

Onion OS 上手指南:一次安装,让 Miyoo Mini 拥有百款模拟器

刚拿到 Miyoo Mini 那天,我兴冲冲地塞进一张装满 ROM 的 SD 卡,结果被出厂系统泼了盆冷水:游戏列表排得乱,换游戏得先退出再重进,玩到一半合上盖子,进度经常不翼而飞。后来换上 Onion OS,这些问题几乎在同一天内全部消失。这套专为 Miyoo Mini 和 Mini+ 打造的替代系统,内置 100 多个模拟器,附带自动存档、快捷切换和大量自定义选项。如果你也想把这台小机器用到极

gitblog_01146的博客 417

让 Miyoo Mini 脱胎换骨:Onion OS 安装、游戏切换与性能优化全指南

拿到一台 Miyoo Mini 掌机的第一晚,很多人都会在开机后陷入同样的困惑:界面粗糙、模拟器缺斤少两、存档总是莫名其妙地丢。而 **Onion OS 正是为解决 Miyoo Mini 的这一系列痛点而生的开源系统**——它不是换个皮肤那么简单,而是把整套系统推倒重来。这篇文章按"装系统 → 用起来 → 玩转它"的真实使用路径展开,读完你就能自己动手,让这台小掌机真正属于你。 ## 买来的掌机

gitblog_00682的博客 420

如何将Mini Tokyo 3D集成到现有Web应用:完整集成方案与案例分享

Mini Tokyo 3D是一款强大的实时3D东京公共交通系统数字地图工具,能够为Web应用增添直观、动态的交通可视化功能。本文将详细介绍如何快速将Mini Tokyo 3D集成到现有Web项目中,包括准备工作、两种集成方式、高级配置选项以及插件扩展方法,帮助开发者轻松实现专业级交通数据可视化。 ## 📋 集成前的准备工作 在开始集成Mini Tokyo 3D之前,需要完成两项关键准备工作:

gitblog_01027的博客 399

终极Onion OS包管理器使用教程:快速掌握第三方应用安装与管理技巧

Onion OS是Miyoo Mini和Mini+设备的系统增强工具,而包管理器作为其核心功能,让用户能够轻松安装、更新和管理各类第三方应用。本文将详细介绍如何使用Onion OS包管理器,从基础操作到高级技巧,帮助你充分利用设备的扩展能力。 ## 认识Onion OS包管理器 包管理器是Onion OS提供的应用管理中心,通过它可以获取丰富的第三方应用资源。无论是模拟器、工具还是游戏,都能通

gitblog_00714的博客 802

Onion OS 完整上手攻略:把 Miyoo Mini 调教成终极复古游戏机的实用指南

如果你手上有一台 Miyoo Mini 或 Miyoo Mini Plus,却还停留在出厂系统自带的那几个模拟器里,那你可能只发掘了这台掌机三成的本事。Onion OS 是一个面向这两款掌机的开源增强系统,安装之后,它能一次性带来上百个模拟器的支持、更聪明的游戏切换方式,以及一套可以深度定制的界面。这篇文章不打算按说明书式的条条框框讲功能,而是按"新手装系统 → 上手玩转 → 深度调校 → 高手玩

gitblog_00939的博客 381

【亲测免费】 探索Mini ARM OS:微型嵌入式操作系统的魅力

是一个轻量级、开源的操作系统内核,专为ARM架构设计。由开发者[@jserv](https://link.gitcode.com/i/01543f322cf38ef8006a426aeec2c95c) 创建,它的目标是提供一个简单的教学平台,帮助初学者理解操作系统的基本概念,同时也适合于需要构建小型嵌入式系统的专业人士。 ## 技术分析 ### 架构与设计 Mini ARM OS基于微内核设

gitblog_00042的博客 589

mini-arm-os项目解析:从Hello World到抢占式调度的实现之路

mini-arm-os是一个从零开始构建的ARM最小多任务操作系统内核项目,通过一系列递进式实验,帮助开发者理解操作系统的核心原理。本文将带你探索从基础的Hello World程序到实现抢占式调度的完整学习路径,掌握嵌入式系统开发的关键技能。 ## 一、项目结构概览:循序渐进的学习阶梯 mini-arm-os采用模块化设计,每个目录对应一个核心实验,从简单到复杂逐步深入: - **基础启动实

gitblog_00405的博客 982
上一篇: simple function for print colorful text
下一篇: C语言中的宏
tinnycloud
博客等级 码龄21年 9粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值