Sivelkiriya操作系统:技术

哈Ha

本文继续了有关Sivelkiriya操作系统项目的一系列出版物。如前几篇文章中已经提到的那样,此操作系统目前处于设计和开发的早期阶段,因此想要获得证明的人必须耐心等待。为了以防万一,我将再次提到,作者并未着手说服任何人,而是继续发表以使讨论受益。我借此机会对在过去的出版物中留下有用评论的每个人表示感谢。

周期的第一篇文章提供了有关此OS结构的简要信息。在第二篇文章中描述了项目的目标,以及如何打破“没有软件-没有用户-没有开发人员-没有软件”的恶性循环。这次,重点将放在体系结构问题上。它将以什么技术手段来说明,以确保不同人用不同语言编写并在不同环境下组装的模块之间的交互作用。此外,该体系结构的小细节也会受到影响。

模块执行者


为了确保模块的加载,启动和执行,Sivelkiriya中引入了表演者的概念。表演者本身是模块,相对于执行者而言,他们承担以下职责:

  1. 将使用过的模块下载到RAM中,进行初始化,完成和卸载;
  2. 将操作系统提供的API与模块的可执行代码链接:确保调用和数据从操作系统的API传递到模块的代码,反之亦然;
  3. 下载并准备模块所需的运行时环境;
  4. 将模块代码从任何中间表示形式(解释语言的源代码;字节代码;中间语言;用于另一平台的汇编)转换为机器指令序列。此步骤的具体动作(脚本解释,字节码解释,JIT编译,仿真等)由模块交付方法确定;
  5. 在操作系统和其他模块中隐藏模块的工作方式。

此外,如果两个或多个模块在同一地址空间中并存不会带来安全风险(例如,对于托管代码),并且执行器本身的工作是如此稳定,以至于加载中存在错误,则执行器可以承担隔离各个模块的数据的任务。他们的模块不会导致承包商和他所服务的其他模块的工作出现问题。

该概念允许使用各种方法在公共系统中组装模块。例如,通过编译C ++代码获得的机器代码将由支持直接执行到单独地址空间并与必要的运行时环境链接的执行程序加载。托管IL代码可以由支持托管代码执行的执行程序加载,隔离可以在操作系统级别(通过将不同的模块加载到不同的地址空间)和执行程序级别(通过在公共地址空间中加载不同的模块,但是可以在不同的地址)执行环境域)。

在Sivelkiriya下运行机器代码的情况例外,该代码作为一组库和/或进程作为主操作系统的一部分执行。在这种情况下,只有在保证没有绕过Sivelkiriya的从机器码到主操作系统的调用,或者从系统的角度来看有必要进行此类调用的情况下,才允许直接运行机器码。例如,可以在受控的公司环境以及开源项目中满足此条件。另一方面,根据定义,访问主操作系统资源的模块需要一种调用其功能的方法。如果不能保证机器代码的“整洁”,则可以在仿真模式下运行该代码(以及为其他平台编译的代码)。

如果将Sivelkiriya作为主要操作系统启动,则OS级别的地址空间的分离由其核心执行。如果将它作为一组库或进程在主操作系统下运行,则为确保隔离,可以将不同的模块加载到主OS的不同进程中。在主操作系统下启动时,负责直接与设备配合使用的系统模块(例如,文件系统驱动程序)将由模拟此行为的模块替换,从而隐藏与应用程序模块的差异。

上述特定于特定语言和编译器的运行时环境是仅需要通过系统的对象接口在所有模块之间交换数据的规则的两个例外之一,因为将其加载到模块的地址空间中对于其操作是必需的。 Sivelkiriya通常不支持由多个模块使用的动态链接库的概念,因为它旨在实现代码共享,而该代码共享已通过模块接口实现。

第二个例外是允许使用动态链接的库到同一程序包中一起交付的几个模块的权限。同时,Sivelkiriya没有提供将同一库连接到其他模块以及用于搜索动态库的子系统的机会。

当系统启动时,部分艺术家会与内核同时加载到内存中,以避免出现需要另一位艺术家加载也尚未加载的艺术家的情况。首先,这适用于在此平台上提供机器代码启动的执行程序。其余的表演者将根据一般规则加载到内存中。

其他建筑解决方案


以下是用于构建Sivelkiriya OS体系结构的次要原理的简要非结构化列表。它们不像上面概述的基本原理那么重要,但是仍然值得一提。

  1. , «». , , , . -, . . , , , , , , . , ; , , Bluetooth, WiFi , Bluetooth, . , (, , , ).
  2. , . , « » « ».
  3. , . , « » « » «». , , .
  4. . , « » ( , , , ), « » . , « », « », ( ) . .
  5. , , , . , , , , . - , , .
  6. ( . .) . , , , - . .
  7. ( ) , «», , , . , , , , .
  8. , , . ( , . .) . . , , .
  9. . , , . — , , , . . , : , ( ) , , .
  10. , : . , .
  11. , , , , — . « » , ( ). , . .
  12. : , , . , , . , , , .
  13. , : , , , , , , , , , . : , , SSD, — RAID- , — , . .
  14. . ( ). , , (, , ), ( ), , , WYSIWYG- , . , .
  15. : , , . , , , ( ). , , , . , , , ( , . .).
  16. , , . , « » , (, 1 ) . , , , : , (, ) , , , , , .
  17. , , (, , ). , — , , , . — (, . .): , , , , . , . , , ( «» ). , . (, ) , ( , . .). , , . , ( , , . .) , .


该循环的第一个出版物可在此处获得第二个在这里第四个在这里文章的全文可在项目网站上找到

All Articles