会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
星見遥
博客园
首页
新随笔
联系
订阅
管理
上一页
1
2
3
2021年1月16日
XV6学习(7)Lab lazy
摘要: 代码在github上。 这一个实验是要利用缺页异常来实现懒分配(lazy allocation)。用户态程序通过sbrk系统调用来在堆上分配内存,而sbrk则会通过kalloc函数来申请内存页面,之后将页面映射到页表当中。 当申请小的空间时,上述过程是没有问题的。但是如果当进程一次申请很大的空间,如
阅读全文
posted @ 2021-01-16 10:39 星見遥
阅读(2076)
评论(1)
推荐(0)
2021年1月6日
XV6学习(6)Lab: traps
摘要: 这一个实验主要是对RISC-V的汇编、栈帧结构以及陷阱进行简单的了解,难度并不大。 代码放在github上。 RISC-V assembly (easy) Q1: Which registers contain arguments to functions? For example, which r
阅读全文
posted @ 2021-01-06 10:37 星見遥
阅读(3739)
评论(0)
推荐(1)
2021年1月4日
XV6学习(5)陷阱和系统调用
摘要: 在操作系统中,有三种情况会导致CPU的控制流发生转移:用户态中通过ecall指令进入内核态;异常发生,如除零、访问非法地址;设备中断,如硬盘完成读写请求。上面这些情况可以统称为陷阱(trap)。 陷阱在一般情况下应该是透明的,即当执行完处理程序后能够恢复之前程序的状态。这就要求在陷入内核态时,内核要
阅读全文
posted @ 2021-01-04 10:35 星見遥
阅读(1868)
评论(0)
推荐(0)
2020年12月23日
XV6学习 (4)Lab pgtbl
摘要: 这一个实验主要是学习XV6的页表(分页机制),关于分页机制的相关内容已经写在XV6学习 (3)里面了。 代码放在Github上。 Print a page table (easy) 这一个就是要实现一个vmprint()函数来遍历页表并打印,可以仿照freewalk()函数来写。 void prin
阅读全文
posted @ 2020-12-23 10:33 星見遥
阅读(3281)
评论(0)
推荐(0)
2020年12月21日
XV6学习(1) Lab util
摘要: 正在学习MIT的6.S081,把做的实验写一写吧。 实验的代码放在了Github上。 第一个实验是Lab util,算是一个热身的实验,没有涉及到系统的底层,就是使用系统调用来完成几个用户模式的小程序。 Boot xv6 (easy) 启动XV6,按照文档执行就ok了。 $ git clone gi
阅读全文
posted @ 2020-12-21 17:21 星見遥
阅读(6056)
评论(0)
推荐(2)
XV6学习(3)Page tables
摘要: 页表是操作系统中非常重要的一部分,用于将虚拟地址转化为物理地址。虚拟内存是操作系统实现进程隔离的关键技术。 在 XV6 中通过 RISC-V 的页表机构完成了虚拟地址向物理地址的转换。 分页硬件机构 XV6 运行于 Sv39 RISC-V 上,64 位地址中的低 39 位被使用。RISC-V 的页表
阅读全文
posted @ 2020-12-21 10:32 星見遥
阅读(4846)
评论(0)
推荐(0)
XV6学习(2)Lab syscall
摘要: 实验的代码放在了Github上。 第二个实验是Lab: system calls。 这个实验主要就是自己实现几个简单的系统调用并添加到XV6中。 XV6系统调用 添加系统调用主要有以下几步: 在user/user.h中添加系统调用函数的定义。 在user/usys.pl中添加入口,这个文件将会在ma
阅读全文
posted @ 2020-12-21 10:28 星見遥
阅读(5238)
评论(0)
推荐(1)
上一页
1
2
3
公告