我从哪里开始制作基本的 riscv64 裸机操作系统? [已关闭]

问题描述 投票:0回答:1

我从哪里开始制作裸机操作系统?

如何制作 riscv64 裸机操作系统?我的意思是,就像一个可以充当文本编辑器的操作系统,这样你就可以输入和使用退格键、移位键和大写锁定键

我不是要求有人为我做这件事,而是要求有人告诉我从哪里开始以及使用什么资源。我也知道这需要很长时间,但我想努力。

operating-system riscv osdev
1个回答
0
投票

我如何制作 riscv64 裸机操作系统?

您必须决定定义简单操作系统的功能。

对我来说,这是共享地址空间系统中的线程和操作系统服务调用。

我的服务电话至少允许:

  • 创建新话题
  • 从键盘缓冲区读取
  • 写入控制台缓冲区
  • 终止线程

实现此类要求:用于调用服务调用的编程模型,以及处理这些系统调用和外部中断以供按键和控制台准备的中断服务例程。

我的编程模型使用

csrrw zero, %arg, zero
来完成一个编号陷阱(
%arg
是数字),以便用户模式代码调用操作系统服务。

我的系统将 csr

uscratch
维护为指向正在运行的上下文块的指针(但会自我初始化,因为如果
uscratch
为 0,则它将分配一个上下文块)。系统维护
uscratch
指向用户线程的上下文块或中断上下文块堆栈的元素。每个用户线程上下文块都指向在中断情况下要使用的下一级上下文块,并且每个中断上下文块都指向其堆栈中的下一个上下文块。

中断服务程序可以服务中断并决定恢复哪个线程。如果读取了服务调用并且该线程的键盘缓冲区中有一个按键准备就绪,则可以恢复该线程。但是,如果该线程的键盘缓冲区中没有键,则可以恢复另一个线程。 (当完成系统设置后,主线程会将自身变成空闲线程,因此总有一个线程可以恢复。) ISR 分为两个部分:快速服务和完整服务。快速服务挂起的线程仅足以服务中断并恢复同一线程,而完整服务挂起线程以便可以恢复另一个线程。

ISR 还为每个线程维护一个按键缓冲区和控制台输出缓冲区。

它是使用 RARS 实现的,因为它对用户模式代码和 m 模式特权异常处理程序 (ISR) 有足够的支持。

可以构建更多功能,例如设置定时器进行时间切片、提供定时器服务。

© www.soinside.com 2019 - 2024. All rights reserved.