Plan9 : 一个从0开始考虑分布式,分布appmodel的os设计

从Go走进plan9汇编 前言: 问:什么是plan9? 答:plan9是一个很强的操作系统,但我们只需要学习它的汇编语法。 问:为什么说golang开发者需要学习plan9汇编? 答:因为golang的开发团队和bell实验室(开发了Unix的那个实验室)开发plan9操作系统的钢铁糙汉子开发团队是同一批人,他们非要用,咱也没办法。 问:反编译之后玩Intel和AT&T不香吗? 答:确实可以跳过plan9汇编(比如直接拿机器码反编译出intel汇编来看),但是会让阅读变得非常困难。并且在golang的基础方法中,使用了大. 阅读详情

本文关键字:plan9,Inferno,limbo,Plan 9 from User Space:plan9port

在《除了UNIX,我们真的有可选的第二开源操作系统吗?》中,我们讲到那些传统的os之争是集中于游戏好不好支持,桌面好不好体验,发行够不够流行,总体好不好用这些方面。而从x86 cpu从0开始的抽象全栈,他们都是一样的 ------- 换言之,某种意义上他们都是一样的OS。

这种共同点在于哪里呢?对于最终的APP和APP开发来说,它们都是基于单PC+单PC下网络程序设计的。于是在这种架构下有了我们现在处处见到的web,云,—— 我们发现,当今的集群和分布式是放在云这个普化架构来做的:集群就是好多好多的PC通过网络计算起来,附带一些PC监控节点 —— 它们还是PC,在每一台PC内部运行的APP,都是从socket开始(更抽象一点,也许还有DCOM,消息件)的“云”程序:这种程序其实还是网络程序,这种总架构下的APPDEV,以OS来看,其实本质都是单机环境下网络交互的程序。

而这些都不是究极的分布式和分布式开发设计。

在《一种开发发布合一,语言问题合一的shell programming式应用开发设想》中,我们讲到了对于任何programming的设想,其实都是一个四栈从0开始叠加的设计。每一个appmodel,都是从hardware从0抽象来的,OS是大件。——— 把这种源头尽早控制在OS的源头,则每一个OS和单机则都天然具有云属性。包括开发。就得到了创新的appmodel设计 — p9,它是一个统一问题,语言,平台的总设计:

Plan 9不是一个很知名的作品,但是它的前身Unix是世人皆知的。而Plan 9是Unix的几位作者在AT&T职业生涯的一件巅峰之作,是被设计来超越Unix的。
实际上,Plan 9在1992年第一次发布时,就同时实现了Google Docs、Dropbox、Github、Remote Desktop等目前很火爆的互联网产品的功能。
Plan 9能做到这些,是因为它把所有内容都注册到一个称为9P的文件系统里。
举个例子,一个Acme编辑器进程会对应9P中的一个目录acme——我们可以用9p ls acme命令看到这个目录;这个编辑器中的每个窗口对应一个子目录,而窗口标题,编辑内容分别是这个子目录里的文件——我们可以通过修改文件内容(比如通过调用一个shell script)来改变标题和编辑内容。
因为9P是个分布式的文件系统(类似后来的Google GFS和Hadoop HDFS),所以不管用户身在何处(公司、家里、旅馆、咖啡馆)都能看到同一个文件系统。甚至可以在家里的电脑上修改办公室电脑上运行的一个ACME的某个窗口里的内容。或者回家之后,让家里的电脑上运行的ACME访问办公室电脑上的ACME对应的目录,就看到了和办公室电脑上同样的界面——比远程桌面加上Dropbox更加远程桌面和Dropbox。
Plan9没有推广起来,一个原因是它的思想太过领先——在用户还没有意识到存在这样的问题的时候,就把问题解决了。

9p,every problem/app is file io,这也是我们在《bcxszy series》中一直在寻求的分布式方案。

plan9的曲线回归

开发是源于平台到语言到问题的总工程,由设计贯穿,设计包括对OS的设计,OS下编程本身的设计,OS下编程语言的设计,编程方法的设计。—— 所以,先哲学后理论再实现的思路没有错。

9p下的语言。也异于常类。它使用专有的语言limbo作为app langsys,使用c作为toolchain。

Inferno操作系统是Plan9的姐妹操作系统。它的思想和Plan9基本相同,都是基于文件的。但是它只有内核是C编写,其他的应用程序都是Limbo编写的。所以它和Plan9不同的地方就是在这个系统上运行的程序都是Limbo程序而不是C或C衍生程序了。后来Rob Pike又开发出的Go语言有一些地方的思想就是借鉴于Limbo语言。

Go是limbo语言在linux的再生者,Go 语言的实现带有9p的深重痕迹,即使在x86上,也使用Plan 9的汇编器,为了实现所谓的语言自举,硬是绕开glibc去自己用汇编封装linux系统调用。可见plan9一开始就想彻头彻尾的自立门户,对传统OS和GNU没有任何依赖。

虽然历史上都选择了C family as toolchain和unix as os,没有选择9p和limbo,go,然而这不是9p的错。是工业和市场的错。

plan9 under linux

虽然历史上都选择了C family和unix,没有选择9p,但9p可以是一种附加而不是替代。bell labs的9p是主,其支流也有一些。在linux下使用9p的方案,有Plan 9 from User Space:plan9port

或许我们以后在新ebcolinux rootfs 设计中编译plan9port,我们用plan9 under linux,terracing for go



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

plan9汇编手册(重要!!持续更新,维护!!) 我进入华为公司后,做开源生态的工作。在工作时需要用到plan9汇编指令,现在我把一些plan9的一些东西放在这里,希望对大家有所帮助。 寄存器: 1)汇编程序中所有预定义好的符号都是大写的。数据寄存器从R0到R7;地址寄存器从A0到A7;浮点寄存器从F0到F7。 2)其中,A6中的一个指针被C编译器用来指向数据,这样可以更加频繁的使用短地址;A6的值是常量,必须在C程序初始化外部定义的符号a6base的地址时设置。 3)在汇编器中定义了以下硬件寄存器:CAAR, CACR, CCR, DFC, IS 阅读详情

相关推荐

从Plan9认识操作系统

介绍Plan9的过程中认识操作系统,Plan9是由多为大师级程序员打造的分布式操作系统

Plan9操作系统基本概念

什么是Plan 9 Plan9 是一个操作系统。由贝尔实验室开发的,其主要的负责人是Rob Pike(现在在google工作,负责Go语言的开发)。当然这个操作系统的参与者还有几个大名鼎鼎的人:包括Ken Thompson(C语言和Unix创始人),Dennis Ritchie(C语言和Unix创始人),Brain Kernighan(awk之父),Doug Mcllroy(Unix管道提出者,...

weixin_34223655的博客 851

网络操作系统PLAN9参考资料

网络操作系统是对基于云的操作系统的基础。 云操作系统Clive是基于PLAN9的GO实现。 了解PLAN9对把握Clive很有帮助。

Plan 9 简介

Plan9是贝尔实验室研发的通用分布式操作系统,支持多用户,作为UNIX的后继者,plan9更适合分布式网络。其于20世纪80年代中期至2002开发,共发行了4版,如今,plan9是开源自由软件,大家可以使用,以及(愿意的话)阅读其代码。 为什么要开发plan9?         20世纪80年代中期,大型的集中式分时系统变得不再流行,取而代之的是由便捷的个人电脑组成的网络,这一趋势持续到

GuoKai的专栏 2945

虚拟机扩容——非LVM分区

虚拟机扩容——非LVM分区

ytraister的博客 3905

[LaTeX] 使用natbib宏包实现参考文献的“作者-年份”引用格式及常见编译错误排查

本文详细介绍了在LaTeX中使用natbib宏包实现参考文献“作者-年份”引用格式的完整流程。从宏包配置、.bib文件准备到标准编译步骤,重点解析了常见的“Bibliography not compatible with author-year”错误成因,并提供了彻底清理辅助文件等解决方案,帮助用户高效排版符合学术规范的参考文献。

moon9的博客 481

初识 Plan9

文章目录动机 动机 到 20 世纪 80 年代中期,计算机的趋势从大型的中央分时计算机向更小的, 私人化的互联的机器方向发展, 典型的就是 Unix 工作站.

Osenberg WS 1173

一种追求高度融合,包容软硬方案的云主机集群,云OS和云APP的架构全设计

本文关键字:兼容多主机硬件设计,兼容多os,兼容native/cloud程序模型,兼容本地程序/分布式程序。网络操作系统,不是x11,不是远程桌面,不是web nas,不是pouch存储同步。不是远程投屏。 云在人们的观念中就是远端,它承诺将计算发展成水电煤一样的可被直接利用的资源,与内容和我们本地的客户端或终端接入(所以有了云存储,云GPU等各种传统资源的云化,以及一些或细分或复用的云资源,如云验证,云游戏,etc…),虽然云技术的背后是一层一层的虚拟化,可是它并没有将这种工作进行到我们日常使用APP方面

minlearn's techrepos 565

嵌入式NuttX RTOS面试题及参考答案

NuttX 的板级支持包(BSP)是一组软件组件,用于将 NuttX 操作系统适配到特定的硬件平台上。BSP 提供了硬件抽象层,使得 NuttX 能够与硬件进行交互,包括初始化硬件设备、提供设备驱动程序等。BSP 的主要作用是隐藏硬件细节,为上层应用程序和操作系统内核提供统一的接口,从而提高软件的可移植性和可维护性。开发 NuttX 的 BSP 通常需要以下步骤:硬件分析:首先需要对目标硬件平台进行详细的分析,了解硬件的架构、处理器类型、外设接口等信息。

大模型大数据攻城狮的专栏 1306

A2A 协议详解:Agent Card 的设计与实现

Agent Card 是 Agent2Agent (A2A) 协议中实现智能体发现与互操作性的核心组件。本文将深入剖析 Agent Card 的设计理念、关键字段及其在智能体生态系统中的作用。我们将通过详细的 JSON Schema 解析和 Python SDK 示例,帮助您理解如何精确地定义和发布智能体能力,为构建可发现、可协作的 AI 智能体奠定基础。当您使用a2a.Agent类初始化一个智能体时,SDK 会根据您提供的参数(nameversion等)自动构建内部的 Agent Card 表示。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 1476

plan9 assembly 完全解析

众所周知,Go 使用了 Unix 老古董(误 们发明的 plan9 汇编。就算你对 x86 汇编有所了解,在 plan9 里还是有些许区别。说不定你在看代码的时候,偶然发现代码里的 SP 看起来是 SP,但它实际上不是 SP 的时候就抓狂了哈哈哈。 本文将对 plan9 汇编进行全面的介绍,同时解答你在接触 plan9 汇编时可能遇到的大部分问题。 本文所使用的平台是 linux amd64,因为不同的平台指令集和寄存器都不一样,所以没有办法共同探讨。这也是由汇编本身的性质决定的。 基本指令 栈调整 int

cch1234的博客 1228

C语言设计模式全面解析:从理论到28个实战示例

本文系统介绍了23种经典设计模式在C语言中的实现方法。通过结构体、函数指针等技巧,C语言可以优雅地模拟面向对象特性,实现代码复用与解耦。文章分类详解了创建型、结构型、行为型三大类模式,并提供了28个完整代码示例,包括单例、策略、观察者等核心模式的精简实现。这些模式在嵌入式系统、操作系统内核等场景中广泛应用,如状态机、事件驱动等。学习C语言设计模式的关键在于理解模式意图,掌握函数指针和结构体组合等技巧,并在实际项目中灵活运用。本文为C语言开发者提供了全面的设计模式参考指南。

数字人生 364

肝了一上午的Golang之Plan9入门

从计算机诞生到现在,编程语言的发展大致分为了三个阶段从打孔程序的机器语言一系列指令、寄存器代码的汇编语言再到我们日常使用的高级语言机器语言一堆的0/1代码确实反人类,汇编语言指令繁杂 不同...

sydhappy的专栏 741

数仓建模:维度表合并时,如何处理可能出现的数据冲突?

通过以上方法,可以有效地处理维度表合并时可能出现的数据冲突,确保合并后的数据完整性、一致性和准确性,满足业务需求和数据仓库的性能要求。在合并过程中,需要根据实际情况选择合适的处理方法,并进行充分的测试和验证。(2)实战中总结的SQL技巧,帮助SQLBOY在SQL语言上有质的飞越,无论你应对业务难题及面试都会游刃有余【如果您觉得本文还不错,对你有帮助,那么不妨可以关注一下我的数字化建设实践之路专栏,这里的内容会更精彩。技巧总结,让你认识不一样的数仓。,数据库会抛出异常,可根据异常处理机制解决。

石榴姐yyds 1132

10、业务任务(service task)

业务任务通常是用来调用业务系统,camunda中可以调用JAVA代码或者rest api调用。 在camunda中,业务任务实现方式有5种,本节先用一个小例子显示前三种,External 外部任务,Connector连接器后面分别讲解。假设用户预约电器公司上门维修家电,然后师傅上门维修,完成后公司回访客户对师傅服务打分,师傅查询自己的评分。使用java class 模式实现业务任务。 com.forestlake.camunda.servicetask.ReserveRepair 使用Delegate ex

leyoliu的博客 3232

Plan 9安装初体验

不知道什么是Plan 9? 请参见http://plan9.bell-labs.com/plan9/about.html 和 http://en.wikipedia.org/wiki/Plan_9_from_Bell_Labs。有5种方式可以安装或体验Plan 9:在物理server上安装Plan 9操作系统,基本配置包括网络、文件服务器、CPU服务器以及终端,一般而言不适合个人体验。Plan 9已经被移植到IBM的Blue Gene/P上,和CNK一起工作(http://doc.cat-v.org/pla

Bo Yang's Blog 4713

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

plan9:开源系统的经典再现

plan9:开源系统的经典再现 项目介绍 plan9 是贝尔实验室发布的 Plan 9 第四版的重新发布版本,它是由贝尔实验室直接分发的。第四版最初由朗讯科技在2002年发布,并遵循朗讯公共许可证1.02版。plan9 继承并发展了相同的理念,但在许多方面,它代表了今天大多数人认为的“现代”Plan 9 的基础。该项目主要包括对系统文件协议9P的首次修订,以及新的文件服务器和认证机制等更新。 项目...

gitblog_00329的博客 484

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

探索Plan 9的现代之旅:深入解析「9fans.net/go」开源项目

探索Plan 9的现代之旅:深入解析「9fans.net/go」开源项目 项目介绍 在广袤的技术宇宙中,有一颗不太为人所知但极具特色的星体——Plan 9操作系统。而今天我们要探索的是连接现代Go语言与这个古老宝藏的桥梁,名为「9fans.net/go」。该项目由一系列精心设计的包组成,旨在无缝地将开发者带入Plan 9的世界,同时也为Plan 9的爱好者提供了一条通往Go语言的捷径。通过它,我...

gitblog_00059的博客 495

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Plan 9 :深度探索贝尔实验室的操作系统

Plan 9 :深度探索贝尔实验室的操作系统 项目介绍 Plan 9 是一种由贝尔实验室开发的分布式操作系统,9legacy 分支是该系统的可启动版本。它提供了一个独特的、轻量级的环境,旨在简化和优化编程与文件共享。9legacy 的可启动性使得开发者可以轻松地在虚拟机中尝试和运行 Plan 9 操作系统。 项目技术分析 Plan 9 的技术架构以简洁和模块化为设计理念。它采用了一个全新的文件系统...

gitblog_00366的博客 1039

Plan 9快速入门:从安装到基本操作的完整指南

Plan 9是由UC Berkeley发布的类Unix操作系统,遵循GPLv2开源协议,以简洁的设计和创新的分布式文件系统著称。本指南将帮助新手用户快速掌握Plan 9的安装流程和核心操作,轻松开启高效的系统使用之旅。 ## 📋 准备工作:获取Plan 9源码 在开始安装前,首先需要获取Plan 9的源代码。通过以下命令克隆官方仓库: ```bash git clone https://g

gitblog_00900的博客 267

【限时免费】 plan9-setup:Plan9用户空间高效配置工具集

plan9-setup:Plan9用户空间高效配置工具集 项目介绍 plan9-setup是一个专为Plan9 from User Space(9front)环境设计的配置集合工具包,它通过一系列精心设计的命令行工具和配置方案,显著提升了开发者在Plan9操作系统下的工作效率。该项目源自开发者实际工作场景的痛点解决方案,包含了多个实用工具和优化配置,特别适合在Acme编辑环境中进行代码开发的用户群...

gitblog_00874的博客 464

Plan-9效应:不作死就不会死

Plan-9效应:不作死就不会死 2014-02-14 14:50 概述 Plan-9是一个很棒的、很先进的,而且完全是全新实现的Unix系统,它的目的就是要最终解决Unix最初的诺言:一切皆为文件。你听说过这套系统吗?没有?那好,下面就是为什么。 我十分确信你不知道Plan-9是什么东西,并且很有可能你还是第一次听说这个名字。 Plan9bunnysmblack Plan-9是一款神奇的新版Unix,几乎是由70年代当初开发Unix系统的同一个团队开发的。它的确是一款非常...

qq_20312079的博客 418

X86平台操作系统概览

X86平台操作系统概览 敬请指正 欢迎转载 UNIX家族及类UNIX系统 1969年,在AT&T的Bell Labs,Ken Thompson和Dennis Ritchie(他们曾是大型操作系统Multics的两名开发者,Multics太庞大了最终没有成功)为了一项名为太空旅游的实验计划,需要一个操作系统。他们找了一台闲置的PDP-7机器,在上面写了个Multics的改编版,1971年正式发布。

阿竹之家 3404

如何在Mac VM Fusion上安装和使用Plan 9

我在 Mac 上使用 VM Fusion 安装 Plan 9 的时候遇到了很多问题,官方文档和有些前两年的国外的一些博客并没有写清楚,甚至出现了“误导”的情况(有些情况变了)。所以来写本文帮助其他也遇到的问题的人。如果你能看到这篇博客,说明你大概知道 Plan 9 是个什么系统,这里也不赘述,直接开始。你可以按照步骤一步步来,重点部分我用小标题标出了。

ZhongUncle的博客 829

了解Go第一步:Go与Plan 9汇编语言

本文快速阅读需要一定的汇编、Go、编译原理基础 1. Go与Plan9

qq_45091883的博客 5058
上一篇: hyperkit:一个full codeable,full dev support的devops及cloud appmodel
下一篇: 打造一个Applevel虚拟化,内置plan9的rootfs:goblin(1)
Minlearn
博客等级 码龄18年 20粉丝 146原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值