littlebot
Published on 2025-04-09 / 1 Visits
0

【源码】基于C语言和RISCV架构的抢占式多任务操作系统

项目简介

本项目实现了一个基于RISC-V架构的单核32位操作系统,聚焦于抢占式多任务调度。使用C语言和RISC-V汇编语言编写,开发者可通过该项目深入了解操作系统核心功能,如硬件初始化、内存管理、中断处理、任务调度等,适合对操作系统原理和嵌入式系统开发感兴趣的开发者。

项目的主要特性和功能

  1. 引导部分:完成系统初始化并加载操作系统。
  2. UART串口设备:借助内存映射控制UART设备实现系统IO。
  3. 内存管理:实现内存页的分配与释放。
  4. 上下文切换和协作式多任务:支持任务上下文切换和协作式多任务调度。
  5. Trap和Exception处理:通过PLIC管理中断和异常。
  6. 外部设备中断:处理外部设备的中断请求。
  7. 硬件定时器:通过CLINT实现软硬件定时器。
  8. 抢占式多任务:实现抢占式多任务调度,支持任务优先级和时间片轮转。
  9. 任务同步和锁:实现自旋锁确保任务间同步。
  10. 软件定时器:支持软件定时器的创建和管理。
  11. 内核态切换:支持从用户态到内核态的切换。
  12. 命令行和简单页面:提供基本命令行界面和简单页面显示。

安装使用步骤

环境准备

  1. 安装RISC-V交叉编译工具链: bash apt install gcc-riscv64-unknown-elf apt install qemu-system-misc
  2. 复制项目代码到本地: bash cd riscv-os

构建并运行

  1. 进入项目源码目录: bash cd src
  2. 编译并运行操作系统: bash sudo make run

运行结果

成功运行后,系统启动并默认运行两个任务: 1. 命令监听任务,等待用户输入命令。 2. Task1任务,不停打印“Task 1: Running...”。

切换任务模式

  • 开启单任务模式: bash system single_task_mode on
  • 关闭单任务模式: bash system single_task_mode off

创建新任务

  1. 编写自定义任务函数。
  2. 注册新任务命令: bash create task0

清除构建

bash make clean

更多关于本系统的详细介绍和实现细节,请参阅项目文档 /doc/RISCV-OS综合课程设计报告书- - 副本.pdf

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】