[rCore学习笔记 032] 管理SV39多级页表
摘要:
上一节:硬件 本节:软件实现 物理页帧管理 内核->空闲内存->物理页帧->分配->存放 可用物理页的分配和回收 Link文件中关于操作系统bin文件的内存设计 内容os\src\linker-qemu.ld: OUTPUT_ARCH(riscv) ENTRY(_start) BASE_ADDRES
[rCore学习笔记 025 extend] 带优先级的抢占式调度
摘要:
引言 因为rcore并非设计为一个rtos,而是在我们需要的时候我们需要在设计的时候考虑到线程切换的时候的延时问题. 回顾上一部分的使用环形队列进行调度的方式,我们会发现我们寻找下一个Ready的任务的时间是不均匀的. 并且我们的任务是没有优先级的,可以认为是平权的,因此,为了: 快速且时间均匀地找
[构建自己的Linux发行版]LFS 笔记
摘要:
简介 官网:https://www.linuxfromscratch.org/ 一直想知道一个发行版的代码是怎么构成的,这个项目可以带我们自己构建一个Linux发行版,并且可以运行. 下边是我从官方书中摘抄出的简介: 您可能有许多阅读本书的理由。许多人首先会问: “为什么要不辞辛苦地手工从头构建一个
解决WLS2 卡进度 0%的问题
摘要:
这是因为微软商店抽风了. 如果显示:正在安装: 适用于 Linux 的 Windows 子系统这时候卡住在0%,那么我们执行如下指令,从GitHub下载. wsl --install --web-download 如果显示:正在安装: Ubuntu这时候卡住在0%,那么我们执行如下指令,从GitHu
python使用魔法函数__getitem__实现字典和列表式访问自定义类型
摘要:
起因 想起C++可以实现运算符重载,以实现以数组的方式([])访问我们的类. 我想要实现一个类,可以同时用类似于字典和列表 就想到python能不能实现这个效果,而且显然是可以的,不然numpy是怎么实现属于自己的数组的? # 期望实现效果 class myclass: pass c = mycla
[rCore学习笔记 031] SV39多级页表的硬件机制
摘要:
看到这个题目就知道上一节提到的RISC-V手册的10.6节又有用武之地了. 这里只需注意,RV32 的分页方案Sv32支持4GiB的虚址空间,RV64 支持多种分页方案,但我们只介绍最受欢迎的一种,Sv39。: RISC-V 的分页方案以SvX的模式命名,其中X是以位为单位的虚拟地址的长度。 虚拟地
[rCore学习笔记 030] 虚拟地址与地址空间
摘要:
时隔很久,终于忙里偷闲可以搞一搞rCore,上帝啊,保佑我日更吧,我真的很想学会. 导读部分 首先还是要看官方文档. 我决定看一遍然后自己表述一遍(智将). 这里反复提到MMU,就是因为之前学MCU的时候有一个疑问,就是为什么MCU上不选择跑一个Linux,当时找到的答案是因为没有MMU. MMU的
rust-打印变量类型
摘要:
使用type_name 通过使用std::any::type_name获得. 编写函数 fn print_type_of<T>(_: &T) { println!("The type is: {}", type_name::<T>()); } Example use std::any::type_n
[rCore学习笔记 029] 动态内存分配器实现-以buddy_system_allocator源码为例
摘要:
在上一部分,我们讲了动态内存分配器的原理是维护一个堆,而且是实现各种连续内存分配方法. 但是上一部分是直接通过引用了buddy_system_allocator来解决的问题. 那么对于内存分配算法有兴趣的我,还是决定看一下源码,总之人是咸鱼但是还是需要有梦想. 人生这么不顺,若是连梦想都没有了,可能
rustlings 学习随笔
摘要:
序言 rustlings 是一个关于rust的练习题的项目.可以帮助大家通过完成一个项目的方式练习rust的语法,我认为对于补充我rust现学现卖过程中的情况很有帮助. 下边是GPT对它的介绍: Rustlings 是专为那些想要学习 Rust 编程语言的人设计的一个交互式练习集合。无论你是编程新手