rcore,zcore,兼谈fuchsia:一种快速编程教学系统和rust编程语言快速学习项目

简介: 本文关键字:一种快速编程教学系统和编程语言设想,把devops和hypersior集成到os和app,learn rust:the hard way笨方法学rust

本文关键字:一种快速编程教学系统和编程语言设想,把devops和hypersior集成到os和app,learn rust:the hard way笨方法学rust

在前面《云APP,virtual appliance:unikernel与微运行时的绝配,统一本地/分布式语言与开发设想》和《一种设想:为linux建立一个微内核,融合OS内核与语言runtime设想》中,我们都讲到“语言机制与OS机制一一对应的运行时”的思想,这些属于平台与语言连接处的联系对于编程学习至关重要,直接影响着你在这个OS上学LANG写APPDEV的曲线,(正如“业务逻辑与APP编程”处的连接一样(《一种开发发布合一,语言问题合一的shell programming式应用开发设想》一文,业务逻辑如果采用尽量接近平台的某种逻辑,也会变得相对容易,这是后话,目前,我们仅关注前半句),这种思想得以最大体现的二个地方,一是发明一个OS,二是学习一个语言。

rcore,zcore:

拿发明OS来说,实际上oskernel作为对裸机编程的典范,也需要极高的抽象,内核的发明是一个重写语言的过程(这种工作却没有被用户空间的语言继续下来),采用什么样的语言来写内核,决定了工程的难易度,甚至直接决定最终设计,(比如windows在kernel中实现了一个对象系统,它是用C模拟的是在发明reimplent c,,如果采用的语言抽象层次高,这类事情成本就低,)比如,采用rust,它抽象高,batteryincluded,写出的应用代码量就小。甚至可以拉高抽象决定设计,做出language based os:一种general kernel design using language-based protection instead of hardware protection,libos。

rCore是c版本的清华大学教学操作系统uCore(u:micro)的Rust移植版本,它里面的syscalls是兼容linux的,可以运行userspace的linux用户程序,后来,他们参考rust-osdev.com织织的成果,将整个rcore又重写为zcore,以接近fuchsia使用的zircon微内核,(Fuchsia 是谷歌试图使用单一操作系统去统一整个生态圈的一种尝试,类似华为的多场景OS鸿蒙),这种微内核特征在《一种设想:为linux建立一个微内核,融合OS内核与语言runtime设想》已经说过:拉高抽象结构,将被兼容内核放在下层用户进程级,这其实就是wsl1等 os subsystem的套路,也是libos,“一个进程一个OS”的思想,以及language based os。

目前为止,它们的代码http://github.com/rcore-os/中,有很多子项目(rboot,rcore-user,etc..),最重要的当然是http://github.com/rcore-os/zCore,它重写了rcore为微内核zircon-object(包含内存管理和任务管理二部分),有兼容以前rcore的linux-object和linux-syscalls,linux-loader,还增加了对fuchsia的zircon-object(除内存管理和任务管理的其它部分)和zircon-syscalls,zircon-loader。作为最终结果的zcore,可在unix(linux/macos)下以libos方式运行linux(make rootfs,cargo run --release -p linux-loader /bin/busybox)和fuchsia的程序(cargo run --release -p zircon-loader prebuilt/zircon/x64)。也可bearmetal以独立qemu运行(make image,cd zCore && make run mode=release linux=1,cd zCore && make run mode=release)。如果不好理解,你可以把整个项目成果想象成拥有wsl1 subsystem和win子系统的win10(wsl2改为更按近vm的实现方式)。

编译时,rust源码编译跟cpp一样慢,这是真的(不过想象其运行期安全和抽象在运行期0成本就忍了)。下载大量crates时。记得把register设为ustc的源。不过,我编译上述项目时,在osx14下运行cargo run --release -p zircon-loader prebuilt/zircon/x64和时cd zCore && make run mode=release都有失败。

以上都不是重点,这里才是:在重写zcore的过程中,他们发现fuchsia的微内核中的系统跟rust语言的很多机制紧密对应(非精确一一对应)。----- 除了他们的V3 rev文档库https://github.com/rcore-os/rCore-Tutorial中将这些开发过程都详尽写出来了,在https://rucore.gitbook.io/rust-os-docs/也有一篇《Rust语言速成》还提到,快速学rust最好的办法是发明一个rust os,顺便与C的交互也学习,探索高级语言的局限(而这在以前的c语言+linux这类教育中是不太可能的,因为前者抽象不高涵盖不了语言学习的典型场景而后者也不能)。。。

fuchsia其它特点:

继《一种设想:为linux建立一个微内核,融合OS内核与语言runtime设想》我们还发现了fuchsia中的其它特色。

zircon内核实现里有个虚拟机管理器:virtual app有时称为guest app,这一再印证,从《hyperkit:一个full codeable,full dev support的devops及cloud appmodel》一直写到这的“碎片化app,microapp,微内核OS,碎片化os,virtualapp”也正是zircon要集成到内核中的方案,记得华为的鸿蒙是“全场景分布式”,而最终,各种沙盒各种层次的虚拟化不就是为了使开发系统和部署APP结合,而且能做到更分布更细粒吗。只有细化才能分布式。

如果说云计算无O也就无APP,或许最接近原生的分布式APP:要算这种micro virtual app吧。----- 而其实统一语言,和统一内核,都是为了让真正的applvl的virtualapp出现。不过业界早有docker这样的暂代方案出现。

第二: Zircon 上的一层名叫 Garnet。 Garnet 包含Xi Core,the Xi Core engine for the Xi text and code editor. 它是Xi文本和代码编辑器的底层引擎,在系统中集成IDE,是为了降低可视调试难度。这接上了我《jupyter:devops tool with visual debug》《elmlang》的“开发要接上系统,集成在系统内部以降低难度,devops与rad结合”那些观点。

第三:zircon的flutter层面。这种用web前端技术完成的app ui,如果有了wasm的加持,可以出现在系统的各个层面,不光是web browser内。如果browser都虚拟化了,碎片化了。那么整个cli都是可以web方式开发的,共享统一appstack开发结构(一种ui决定一种app)。


(此处不设回复,扫码到微信参与留言,或直接点击到原文)

qrcode.png

相关文章
|
6天前
|
存储 Rust 网络协议
【Rust学习】10_定义枚举
在这一章我们学习 枚举(enumerations),也被称作 enums。枚举允许你通过列举可能的 成员(variants) 来定义一个类型。首先,我们会定义并使用一个枚举来展示它是如何连同数据一起编码信息的。接下来,我们会探索一个特别有用的枚举,叫做 Option,它代表一个值要么是某个值要么什么都不是。然后会讲到在 match 表达式中用模式匹配,针对不同的枚举值编写相应要执行的代码。最后,我们将学习 if let 结构,另一个简洁方便处理代码中枚举的结构。
21 7
|
12天前
|
Rust 安全 区块链
探索Rust语言:系统编程的新选择
【10月更文挑战第27天】Rust语言以其安全性、性能和并发性在系统编程领域受到广泛关注。本文介绍了Rust的核心特性,如内存安全、高性能和强大的并发模型,以及开发技巧和实用工具,展示了Rust如何改变系统编程的面貌,并展望了其在WebAssembly、区块链和嵌入式系统等领域的未来应用。
|
13天前
|
Rust 安全 Java
编程语言新宠:Rust语言的特性、优势与实战入门
【10月更文挑战第27天】Rust语言以其独特的特性和优势在编程领域迅速崛起。本文介绍Rust的核心特性,如所有权系统和强大的并发处理能力,以及其性能和安全性优势。通过实战示例,如“Hello, World!”和线程编程,帮助读者快速入门Rust。
29 1
|
14天前
|
Rust 安全 编译器
编程语言新宠:Rust语言的特性、优势与实战入门
【10月更文挑战第26天】Rust语言诞生于2006年,由Mozilla公司的Graydon Hoare发起。作为一门系统编程语言,Rust专注于安全和高性能。通过所有权系统和生命周期管理,Rust在编译期就能消除内存泄漏等问题,适用于操作系统、嵌入式系统等高可靠性场景。
27 2
|
22天前
|
Rust 安全 开发工具
探索 Rust:系统编程语言的新纪元
【10月更文挑战第17天】介绍了 Rust 语言的核心特性,如内存安全、强大的并发编程模型和接近 C/C++ 的性能。文章还涵盖了 Rust 的开发工具,如 Cargo 和 Rustup,以及其在业界的应用,包括微软 Azure 和 Firefox 浏览器。Rust 正在成为系统编程领域的新星,为开发者带来高性能和安全性。
|
28天前
|
Rust 算法 安全
学习Rust
【10月更文挑战第13天】学习Rust
51 8
|
28天前
|
Rust 安全 算法
Rust的学习
【10月更文挑战第12天】Rust的学习
26 2
|
28天前
|
Rust 算法 安全
如何学习Rust编程?
【10月更文挑战第12天】如何学习Rust编程?
39 1
|
1月前
|
Rust 安全 Java
探索Rust在系统编程中的崛起
Rust 是一种由 Mozilla 研究院开发的现代系统编程语言,以其在安全性、并发性和内存管理方面的优势,逐渐成为开发者的新宠。Rust 提供内存安全保证且性能媲美 C/C++,支持跨平台开发,并具备强大的并发编程工具。本文将介绍 Rust 的核心优势、工作原理及实施方法,探讨其在系统编程中的崛起及其面临的挑战。尽管 Rust 学习曲线较陡,但其广泛的应用场景和不断壮大的社区使其成为构建高性能、安全应用的理想选择。
|
1月前
|
Rust 安全 Java
软件工程师,是时候了解下Rust编程语言了
2024年年初,美国政府发布了一份网络安全报告,呼吁软件开发人员停止使用容易出现内存安全漏洞的编程语言,比如:C和C++,转而使用内存安全的编程语言。这份报告由美国网络空间总监办公室 (ONCD) 发布,旨在落实美国总统拜登的网络安全战略,目标是“保护网络空间的基石”。 内存安全指的是程序在访问内存时,能够避免出现错误和漏洞,比如:缓冲区溢出、野指针等。Java由于其运行时错误检测机制,被认为是一种内存安全的语言。然而,C和C++允许直接操作内存地址,并且缺乏边界检查,容易出现内存安全问题。
73 10