一种设想:为linux建立一个微内核,融合OS内核与语言runtime设想

简介: 本文关键字:os之争。微内核,language based os,language on bearmetal not on os,华为鸿蒙,语言即OS,类脚本语言,把原生应用变语言模块。

本文关键字:os之争。微内核,language based os,language on bearmetal not on os,华为鸿蒙,语言即OS,类脚本语言,把原生应用变语言模块。

我们知道,OS兼容跟语言兼容一样,是一项几乎不太可能完成的事情,因为OS的使命就是作为闭环竞争的商业产品出现,成就造出它他们的公司。从文件系统的多样化和存在的互访鸿沟就知道,见《一个设想:基于colinux,去厚重虚拟化,共盘直接文件系统安装运行的windows,linux》。osx有apfs,windows有ntfs,linux有btrfs/ext,难得出一个exfat,又仅是作为数据盘存储格式不能作为系统区存在而且也有坑(不过也听说过在exfat上成功装系统的)。os之争与语言之争一样,技术上不是不可能融合,而是厂商各自为政。不想那么去做。

但幸运的是,软件是抽象的堆栈,业界方面这些融合一直在进行,只是比较缓慢。融合可以从源头(对于os是kernel)完成,还可以在别的层次完成,类似《编程语言选型之技法融合,与领域融合的那些套路》谈到的那些语言融合。

OS/OS内核/OS的融合经过了很多发展阶和变形形式,如日常我们使用的PD,VB虚拟机管理器里的os,wsl( as os subsystem),虚拟机管理器on baremetal(qubeos,etc..),虚拟firmware内嵌虚拟机管理器,os级的虚拟化openvz,简单的chroot沙盒os,iaas大数据级别的kvm,最后,就是这篇文章要谈到的:从0开始,和从os kernel源头进行融合OS和语言系统的os。即“微内核+unikernel”。

OS的融合其实和语言/语言runtime的融合其实可以是一个相关的过程,如《基于colinux的metaos for realhw,langsys和一体user mode xaas》如《一个隔开hal与langsys,用户态专用OS的设想》中关于让os的子系统直接服务于语言runtime的思想。我们在《云APP,virtual appliance:unikernel与微运行时的绝配,统一本地/分布式语言与开发设想》中也讲到语言的后端和容器和OS的关系(通用容器和语言虚拟机/语言沙盒/baas/serverless,这些东西的存在,其实是”可移殖可隔离runtime“的功能重合。正是面向不同方向但同一目的的某些意义上的“重造轮子”。)

安全的内核级语言:unikernel化

os与语言的关系从来不是先有蛋还是先有鸡,而是先有蛋(语言),再有OS(鸡),自举语言和自举OS特殊情况另当别论,历史上和我们现实中出现过的常见OS,其kernel都是C开发的(我仅指osx,linux,windows kernel),,c runtime作为toolchain系统实现层面存在。c库存在用户空间和程序空间的部分是有特权不同的,它们之间要跨syscall互访。应用开发层次的语言系统处在用户空间(由此,官方py版本这种语言是不可能作内核编程的,抽象层次太高运行时也巨大)。我们把内核中的c称为“bearmetal或toolchain”语言,因为它们最开始的作用是给硬件平台提供软件管理层的作用。

由于语言放在OS之前设计(没办法,先得用起来,那个时候还没有出现既能保证开发效率运行效率又能保证安全的语言如rust),架构于os kernel之上。于是kernel的二大机制(内存管理和任务进程)会继承C语言的固有缺点,比如运行在这种OS上的程序会发生内存泄漏,这对于系统实现和APPDEV级都是延续的影响。我们现在的OS,如果它们自我宣称它们是“安全的OS”,其实是某些高阶层次的完全,比如OS应用方面的安全。并不是“内存管理和任务进程”方面的绝对安全。运行在这种OS上的APP还是会发生内存泄漏,因为“程序申请内存”这个功能,无论处在编程的哪个层次,都是从OS继承的能力(任何编程都是某种意义上的系统编程)。GC只是自动释放并不能改变OS内核这种可能的缺陷(这只是一种可能,OS内核的质量会保证这种情况很少出现)。

那么,为什么不采用一种从一开始就足够安全的bearmetal语言呢,如rust?

当然可以,语言放在OS之前设计可以直接省掉OS发明的很多问题,如cpu的保护模式甚至都可以略去,特权模式无关紧要,一种内核天然是bearmetal和usermode通用的(驱动和hal层放在用户空间)。你甚至还可以将rust的stdlib整个实现在bearmetal层,使得内核编程跟系统开发编程/系统应用编程共享同一门语言。

这些特点加起来,可以直接用语言作为虚拟机管理器(这种语言系统和OS最绝佳的关系,正是另一种os kernel-libos的特点:它可作为lib的os被嵌入语言使用,用户态无须经过虚拟机管理器。直接为支持“一app一os”而提出的os)。因为你可以把语言系统作为OS的源。直接compile and run一个kernel出来,使得语言架构于OS之上,做成devable os。在《云APP,virtual appliance:unikernel与微运行时的绝配,统一本地/分布式语言与开发设想》中我们提到unikernel是docker等lanauge runtime的代替品。这里是“more safer unikernel”。

当然,为促成microkernel+unikernel,这还需要一些额外工作。比如,将这种内核裁剪下,去掉“不那么重要的部分”。

采用了安全的语言,我们还要给内核“微内核化”

首先,这种内核要小。仅保留必要的“内存管理和任务管理”。如上,我们知道,内核中最关键的是“内存管理和进程管理”,因为这二个部件,足够可以运行某种“APP”(内存和并发,刚好它们也是语言runtime的重大问题之一,所以这里“语言runtime即OS,这种特征又一次出现了”),除此之外都是addon,非essential的。hal,drives,文件系统,gui都是第二级别的。我们可以把这种OS的“驱动”保障效率的前提下放在user space(如上,实际上,这种OS kernel下,没有内核空间和用户空间的区分了)。传统上,我们将hal和driver一部分放在(firmware或boot层),一部分放在os kernel层。

这就是微内核。OS层的其它组件可以通过ipc通讯放到其它具体os kernel下,它本身可以很小(作为meta os kernel与其它内核合作,管理这些内核并融入这些内核,这也使这些内核可以实现真正的跨OS)。比如给linux kernel,这种monolitch一体化宏内核作上层,复用它里面的东西。

综合上的microkernel和unikernel,如果融入现在的linux,比"用虚拟firmware内嵌虚拟机管理器打造applevel虚拟化的容器和开发方案"这样的办法要强多了。


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

qrcode.png

相关文章
|
5天前
|
运维 自然语言处理 Ubuntu
OS Copilot-操作系统智能助手-Linux新手小白的福音
OS Copilot 是阿里云推出的一款操作系统智能助手,专为Linux新手设计,支持自然语言问答、辅助命令执行和系统运维调优等功能。通过简单的命令行操作,用户可以快速获取所需信息并执行任务,极大提升了Linux系统的使用效率。安装步骤简单,只需在阿里云服务器上运行几条命令即可完成部署。使用过程中,OS Copilot不仅能帮助查找命令,还能处理文件和复杂场景,显著节省了查找资料的时间。体验中发现,部分输出格式和偶尔出现的英文提示有待优化,但整体非常实用,特别适合Linux初学者。
49 10
|
1月前
|
存储 人工智能 JavaScript
Harmony OS开发-ArkTS语言速成二
本文介绍了ArkTS基础语法,包括三种基本数据类型(string、number、boolean)和变量的使用。重点讲解了let、const和var的区别,涵盖作用域、变量提升、重新赋值及初始化等方面。期待与你共同进步!
109 47
Harmony OS开发-ArkTS语言速成二
|
1月前
|
弹性计算 自然语言处理 Ubuntu
OS Copilot-操作系统智能助手-Linux新手小白的福音
OS Copilot是由阿里云推出的操作系统智能助手,专为Linux新手设计,支持自然语言问答、辅助命令执行等功能,极大提升了Linux系统的使用效率。用户只需通过简单的命令或自然语言描述问题,OS Copilot即可快速提供解决方案并执行相应操作。例如,查询磁盘使用量等常见任务变得轻松快捷。此外,它还支持从文件读取复杂任务定义,进一步简化了操作流程。虽然在某些模式下可能存在小问题,但总体上大大节省了学习和操作时间,提高了工作效率。
134 2
OS Copilot-操作系统智能助手-Linux新手小白的福音
|
2月前
|
开发框架 JavaScript 前端开发
Harmony OS开发-ArkT语言速成一
本文介绍ArkTS语言,它是鸿蒙生态的应用开发语言,基于TypeScript,具有静态类型检查、声明式UI、组件化架构、响应式编程等特性,支持跨平台开发和高效性能优化。ArkTS通过强化静态检查和分析,提升代码健壮性和运行性能,适用于Web、移动端和桌面端应用开发。关注我,带你轻松掌握HarmonyOS开发。
70 5
Harmony OS开发-ArkT语言速成一
|
30天前
|
弹性计算 运维 Ubuntu
os-copilot在Alibaba Cloud Linux镜像下的安装与功能测试
我顺利使用了OS Copilot的 -t -f 功能,我的疑惑是在换行的时候就直接进行提问了,每次只能写一个问题,没法连续换行更有逻辑的输入问题。 我认为 -t 管道 功能有用 ,能解决环境问题的连续性操作。 我认为 -f 管道 功能有用 ,可以单独创建可连续性提问的task问题。 我认为 | 对文件直接理解在新的服务器理解有很大的帮助。 此外,我还有建议 可以在非 co 的环境下也能进行连续性的提问。
71 7
|
1月前
|
存储 运维 安全
深入解析操作系统控制台:阿里云Alibaba Cloud Linux(Alinux)的运维利器
本文将详细介绍阿里云的Alibaba Cloud Linux操作系统控制台的功能和优势。
67 5
|
1月前
|
存储 人工智能 算法
加速推进 AI+OS 深度融合,打造最 AI 的服务器操作系统 | 2024龙蜥大会主论坛
本次方案的主题是加速推进 AI+OS 深度融合,打造最 AI 的服务器操作系统,从产业洞察、创新实践、发展建议三个方面,指出 AI 原生应用对操作系统提出更高要求,需要以应用为导向、以系统为核心进行架构创新设计,要打造最 AI 的服务器操作系统。 1. 产业洞察 2. 创新实践 3. 发展建议
|
1月前
|
安全 Linux 测试技术
Intel Linux 内核测试套件-LKVS介绍 | 龙蜥大讲堂104期
《Intel Linux内核测试套件-LKVS介绍》(龙蜥大讲堂104期)主要介绍了LKVS的定义、使用方法、测试范围、典型案例及其优势。LKVS是轻量级、低耦合且高代码覆盖率的测试工具,涵盖20多个硬件和内核属性,已开源并集成到多个社区CICD系统中。课程详细讲解了如何使用LKVS进行CPU、电源管理和安全特性(如TDX、CET)的测试,并展示了其在实际应用中的价值。
|
1月前
|
安全 大数据 Linux
云上体验最佳的服务器操作系统 - Alibaba Cloud Linux | 飞天技术沙龙-CentOS 迁移替换专场
本次方案的主题是云上体验最佳的服务器操作系统 - Alibaba Cloud Linux ,从 Alibaba Cloud Linux 的产生背景、产品优势以及云上用户使用它享受的技术红利等方面详细进行了介绍。同时,通过国内某社交平台、某快递企业、某手机客户大数据业务 3 大案例,成功助力客户实现弹性扩容能力提升、性能提升、降本增效。 1. 背景介绍 2. 产品介绍 3. 案例分享
|
1月前
|
Ubuntu Linux 开发者
Ubuntu20.04搭建嵌入式linux网络加载内核、设备树和根文件系统
使用上述U-Boot命令配置并启动嵌入式设备。如果配置正确,设备将通过TFTP加载内核和设备树,并通过NFS挂载根文件系统。
97 15