Xv6 操作系统 - 添加新系统调用

2024 年 8 月 28 日 | 3 分钟阅读

今天,我们将学习一个新的操作系统 (OS)。这个新的操作系统名为 Xv6。X 代表操作系统的名称,v6 代表版本 6。还有一些关于系统调用、用户程序等概念。这些概念包括添加用户程序和添加系统调用。

在学习所有这些概念之前,我们需要了解一个基础知识。我们需要了解 Xv6 操作系统的基础知识、历史、编写语言等。那么,现在让我们来了解 Xv6 操作系统 (OS)。

Xv6 操作系统

Xv6 操作系统并非一个新操作系统。它只是针对多处理器 Intel x86 和 RISC-V 系统,用 ANSI(美国国家标准协会)C 风格重新实现了第六版 Unix。

这个操作系统由麻省理工学院(也称为 MIT)开发。它用 C 语言和汇编语言编写。这个操作系统属于 Unix 家族。内核类型是宏内核。用户界面采用命令行界面(CLI)。要使用这个操作系统,我们需要拥有一个名为 MIT(麻省理工学院)许可证的许可证。

Xv6 操作系统是为了教学实践方法而发明的,特别是作为一门学术科目或任何理论概念。这种实践方法可以称为教学法。

这个操作系统是作为 v6 源代码的替代品而创建的。它不是一个重量级操作系统,而是轻量级操作系统。在这里,编译代码的时间非常短,并且它还允许远程调试。

向 Xv6 操作系统添加系统调用

程序可以通过进行系统调用与操作系统通信。当计算机应用程序向操作系统的内核请求任何东西时,它就会执行系统调用。硬件服务、进程创建或执行以及与内核服务(例如应用程序和进程调度)的通信都使用系统调用。

创建 Xv6 操作系统系统调用

您可以首先导航到 syscall.h 文件,其中 Xv6 系统中的每个系统调用都被赋予了一个编号。如您所见,此文件已定义了 21 个系统调用。让我们继续为您的系统调用保留器添加下一行预留编号。

下一步是向 syscall.c 文件添加系统调用引用。此文件提供了一个函数指针数组,这些函数指针使用上述索引指向在其他地方指定的系统调用。将下一行添加到此文件以添加您自己的自定义系统调用。

这表明当系统调用号为 22 的系统调用发生时,将运行 sys getyear 函数。因此,您必须实现此函数。但您不会使用此文件来将其付诸实践。只需将函数原型插入此文件。

因此,在此文件中的适当位置添加以下行。您可以看到其他 21 个系统调用函数的定义也类似。

以下函数原型必须添加到 syscall.c 文件中。

要实现系统调用,我们需要打开 sysproc.C 文件。我们需要打开此文件,因为系统调用函数在此处定义。

示例

输出

The year which the get year is 1975

这就是从 Xv6 操作系统中提取用户程序的方式,我们需要按照步骤来使其成为可能。

这就是将系统调用添加到 Xv6 操作系统的方式。

ng-system/images/xv6-operating-system-adding-a-new-system-call.png" alt="Xv6 操作系统 - 添加新的系统调用"/>