/os_riscv_base

基于riscv基础所作的一个32位的简单的操作系统

Primary LanguageC

基于软中断程序运行

使用内存映射表进行对物理内存和虚拟内存的管理

使用数组的方式对page实现内存的动态分配

基于非睡眠性的状态切换

基于状态序列的上下文切换

包括协作式多任务以及抢占式多任务的定义

协作式多任务:在cpu的统一调度下实现对任务的序列化

抢占式多任务:实现了cpu调度加锁,加锁状态,多个任务去抢占cpu资源,由cpu进行调度

基于跳表实现的定时器

单次触发定时器:在进行单词触发的时候,通过内存对资源进行销毁

【在此系统采用的就是运行后直接释放,不会先占用内存,但也会导致运行速度变慢】

周期触发定时器:对于此定时器,基于系统时间戳进行周期性监听,在达到系统周期的时候,如果定时器用来调度任务,会触发中断

中断性质的状态锁以及单cpu的竞争调度

中断:依赖于两个寄存器,mie,mip,用来对中断性质的判断,是属于哪种类型的中断,是否打断全局的运行,根据其寄存器状态确定。而在此系统中使用mie的值,对mstatus的判断和清除,就是中断是否存在的标志。