Skip to content

Latest commit

 

History

History
35 lines (16 loc) · 7.83 KB

shell-vs-kernel.md

File metadata and controls

35 lines (16 loc) · 7.83 KB

演变的操作系统外壳 v.s. 稳定的操作系统内核

操作系统外壳(OS Interface, OS Shell)和操作系统内核(OS Kernel)是操作系统的两个重要组成部分。

操作系统外壳是操作系统提供给用户/应用进行交互的外壳,通常包括命令行外壳(Command Line Interface,CLI, 即命令行界面)和图形用户外壳(Graphical User Interface,GUI,即图形用户界面)两种形式。命令行外壳是一个纯文本界面,用户通过键盘输入命令来执行操作系统的功能。图形用户外壳是一个图形化的界面,用户可以通过鼠标或触摸屏来执行操作系统的功能。操作系统外壳的设计直接影响用户的使用体验和操作效率。

操作系统内核是操作系统最核心的组成部分,它直接控制着计算机硬件的运行。操作系统内核包括进程管理、内存管理、文件系统、设备驱动程序等模块,负责管理计算机硬件的资源,为上层应用程序提供基础服务。操作系统内核的设计直接决定了操作系统的性能和稳定性。

操作系统外壳的快速演变

由于计算机系统已经深入到物理/虚拟环境的方方面面,而操作系统在其中有着重要的作用,使得操作系统外壳相关的演变在近年来发展迅速。不同应用场景对计算机系统的功能、性能和安全可靠性方面的要求日趋增强,首先就表现在操作系统外壳对应用呈现的应用编程接口(Application Programming Interface, )变化上。在应用程序与操作系统内核之间是支持操作系统外壳的框架层。不同的应用类型导致操作系统外壳的框架层也有很大的差异。目前除了传统UNIX类操作系统面向命令行的POSIX接口、Windows操作系统的Win32接口和移动设备的Android Framework接口,还大量出现了新的在自动驾驶领域、机器人领域、人工智能领域、无人系统领域、AR/VR领域的应用编程接口和对应的应用框架。

在自动驾驶领域的Apollo等,是面向自动驾驶系统的开源框架,提供了多个API,包括传感器、控制和感知API等,以便开发人员可以创建自动驾驶系统。机器人领域的ROS,这是一个开源框架,为机器人提供了一些API和工具,例如运动控制、传感器、感知和导航等。人工智能领域的PyTorch/TensorFlow等,它们是用于构建和训练机器学习模型的开源框架,提供了人工智能相关的API和工具,例如深度神经网络和自动微分等。无人系统领域的PX4/ArduPilot,它们用于控制无人机和其他无人系统的开源框架,提供了一些API和工具,例如传感器、控制和导航等。AR/VR领域的Unity/ARCore等,是用于创建AR/VR应用程序的框架,提供了一些API和工具,例如3D渲染、物理模拟和人机交互等。

而目前大家普遍关注的基于Transformer模型的GPT(Generative Pre-trained Transformer)系统,如ChatGPT/Bard/文心一言等,推动了自然语言成为新的操作系统外壳。各种GPT系统通过新的应用框架接口 ChatGPT/Bard API接口,预计将会形成的新的应用生态。目前已经浮现出来的应用包括行程助理、生活管家、工作秘书、代码解释器、网站自动生成、购物比价、文档总结、文档辅助生成等。

简言之,随着计算机应用领域的不断扩展,以及以人工智能技术为代表的新技术快速发展,操作系统的外壳也将随之快速发展和演进。

操作系统内核的稳步前进

相对于操作系统外壳,操作系统内核的发展要显得慢不少,其根本原因在于操作系统内核是直接管理计算机硬件,如果计算机硬件没有创新性的突破,那么操作系统内核的变革也难以发生。目前操作系统内核技术还是在性能提升、安全增强这些传统方面逐步发展。下面将就操作系统内核的部分改进技术进行进一步的介绍。

在性能提升方面,Unikernel架构引起了产业界的关注。Unikernel是一种面向特定应用场景的操作系统架构,相比于传统的通用操作系统,其在性能提升方面具有以下技术特点。小巧精简:Unikernel通常只包含应用所需的最小化的操作系统和库文件,相比于传统操作系统的大而全,可以减少操作系统的开销和应用程序的启动时间。编译器优化:Unikernel使用的编译器可以将应用程序与操作系统的代码合并,生成一个单一的可执行文件,可以更好地利用CPU的指令级并行性,提升应用程序的运行速度。轻量级虚拟化:Unikernel通常是为云计算和容器化而设计的,可以在轻量级虚拟化环境下运行,避免了传统虚拟机的性能损失和资源浪费。快速启动:Unikernel不需要加载操作系统内核和启动服务,只需要加载必要的驱动和库文件,可以实现秒级启动,适用于需要快速响应的场景,如无人机、工业控制等。内存隔离:Unikernel使用内存保护机制隔离不同应用程序之间的内存空间,防止应用程序之间的干扰和攻击,提高了应用程序的安全性和稳定性。高度定制化:Unikernel可以根据应用程序的特定需求进行定制化,例如,可以根据应用程序的需要裁剪不必要的模块和驱动,减小应用程序的体积和开销。

在安全增强方面,通过安全硬件机制来帮助操作系统形成更加安全的应用环境得到了更多的重视。Intel TDX/CET/SGX2等硬件安全机制通过使用硬件加密和密钥管理,为客户端和云环境提供了更加安全的保护;通过在指令级别上对控制流进行检测和保护,可以防止攻击者通过修改程序控制流来执行恶意代码,并防止代码注入、代码重用和ROP(Return-oriented programming)等攻击。AMD SEV-SNP是AMD SEV的升级版。它提供了一种新的保护机制,可以防止侧信道攻击、内存注入攻击和代码重用攻击等。AMD SEV-SNP还支持对Enclave中的代码的加密和验证,以进一步增强安全性。AMD SEV-SNP是一种新的硬件安全机制,是AMD SEV的升级版。它提供了一种新的保护机制,可以防止侧信道攻击、内存注入攻击和代码重用攻击等。AMD SEV-SNP还支持对Enclave中的代码的加密和验证,以进一步增强安全性。RISC-V Trusted Execution Environment是一种基于RISC-V架构的新的硬件安全机制,提供了一种新的保护机制,可以保护Enclave中的数据和代码免受侧信道攻击、内存注入攻击和其他攻击。它还支持对Enclave中代码的加密和验证,以进一步增强安全性。

通过Rust编程语言来增强操作系统内核的安全性也引起了产业界实际的重视和实践。2022年底,Linux-6.1首次引入Rust语言作为内核模块的开发语言,形成了Rust for Linux 项目,让 Rust 成为 C 语言之后的第二语言。开发者期望在引入 Rust 语言后,在内核代码抽象和跨平台方面能做的比 C 更有效,且会提升内核代码质量,有效减少内存和多线程并发缺陷 。但具体实践如何,还有待后续观察。微软在2023年4月也宣布了其内部工程师在用Rust语言改进Windows 11内核,目前以及添加了36k行内核代码,初步性能测试没有看到Rust化的内核对性能造成降低。

小结一下,随着硬件和软件技术的发展,操作系统在多核处理器、虚拟化、容器化、云计算、AI等方面有了更深入的研究和创新,这些技术将对操作系统的外壳和内核产生重大影响。外壳更多地收到应用层面的新技术的影响,而内核还是一如既往地死磕性能和安全。而我们看到的操作系统外壳和内核的一个共同发展趋势就是“开源”。

2023.05.15