wow
wow
>在阶段 [1] 可以看到它的函数原型中的两个参数分别是当前 A 任务上下文指针 next_task_cx_ptr 和即将被切换到的 B 任务上下文指针 next_task_cx_ptr 第一处 next_task_cx_ptr,应该是current_task_cx_ptr
>上一节更多的是站在硬件的角度来分析SV39多级页表的硬件机制,本节我们主要讲解基于 SV39 多级页表机制的操作系统内存管理。这还需进一步管理计算机系统中当前已经使用是或空闲的物理页帧, 这还需进一步管理计算机系统中当前已经使用"是或"空闲的物理页帧 ---这里应该是“或是”
>也能在虚拟内存中以各种粒度大小来动态分配内存资源,具体实现主要集中在 os/src/mm/heap_allocator.rs 中。。 多了一个句号
>在新增系统调用的时候,需要在 user/src/lib.rs 中新增一个 sys_* 的函数,... 这里的user/src/lib.rs是不是应该换成user/src/syscall.rs >还需要在用户库 user_lib 将 sys_* 进一步封装成一个应用可以直接调用的与系统调用同名的函数。 这里的user_lib换成user/src/lib.rs更明确
@LikyThu >这个练习能够使用crate log吗?为什么我用的时候报错log需要std库 编写操作系统是不能使用std库的,因为std库部分依赖操作系统的syscall,这时候底层没有操作系统提供syscall
@kidcats >没看懂“对于不对齐的情况,物理地址不能通过 From/Into 转换为物理页号,而是需要通过它自己的 floor 或 ceil 方法来进行下取整或上取整的转换”这段的实现,不太明白floor的实现为什么是直接/page size,和ceil函数的实现是(self.0 - 1 + PAGE_SIZE) / PAGE_SIZE),有人能解释下嘛 "单个页面的大小设置为4KiB,每个虚拟页面和物理页帧都对齐到这个页面大小,也就是说虚拟/物理地址区间[0.4KiB)为第0个虚拟页面/物理页帧,而[4KiB,8KiB)为第1个,以此类推."
>而且每个虚拟页面在地址转换的过程中都使用与运行的应用绑定的不同的线性映射,而不象分段内存管理那样每个逻辑段都使用一个相同的线性映射。 "不象"-->"不像"