会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
YuanZiming
博客园
首页
新随笔
管理
上一页
1
2
3
4
5
6
7
···
42
下一页
2021年2月26日
rCore-Tutorial-Book-v3学习笔记(三)
摘要: 概述 第三个部分是实现一个分时多任务的系统,也就是能够在多个任务运行期间进行切换,让一个程序在等待IO时其他程序能执行而不是傻等。虽然和并行有点类似,但目前使用到的都只有一个CPU,任何时候都只有一个程序在执行。分时多任务有两种:一种是程序自己主动让出控制权,有点类似于编程语言中协程的概念;一种是由
阅读全文
posted @ 2021-02-26 22:15 YuanZiming
阅读(443)
评论(0)
推荐(0)
2021年2月24日
rCore-Tutorial-Book-v3学习笔记(二)
摘要: 概述 第二部分是实现一个批处理系统。批处理系统顾名思义就是能输入好几个程序,然后对这些程序依次执行的操作系统。重点不是在批处理,而是在输入用户程序,这就要求用户程序和我们的系统有一种隔离,所以需要在这一部分的系统实现用户态和内核态的切换。 内容 这一部分的代码文件比上一部分多了好几个,大致说明一下功
阅读全文
posted @ 2021-02-24 15:22 YuanZiming
阅读(739)
评论(0)
推荐(0)
rCore-Tutorial-Book-v3学习笔记(一)
摘要: 概述 最近看到清华的一个操作系统教程rCore-Tutorial-Book,和其他实验不同的是,这个教程介绍的是完全从零开始实现一个Riscv操作系统。教程所用的编程语言是Rust,但是我的Rust水平只到勉强能看懂代码的地步,所以打算用C语言照着实现一遍。虽然说是照着实现,但不同的语言还是会带来不
阅读全文
posted @ 2021-02-24 15:21 YuanZiming
阅读(2762)
评论(4)
推荐(0)
2021年1月13日
MIT-6.S081-2020实验(xv6-riscv64)十一:net
摘要: 实验文档 概述 这次实验主要实现网卡驱动的一部分,文档内容非常长,实际实验不算难,跟着hint就行,但还是需要对整体框架有一定的了解。 内容 发送函数: int e1000_transmit(struct mbuf *m) { acquire(&e1000_lock); uint32 index =
阅读全文
posted @ 2021-01-13 13:33 YuanZiming
阅读(1420)
评论(3)
推荐(1)
MIT-6.S081-2020实验(xv6-riscv64)十:mmap
摘要: 实验文档 概述 这次实验要求实现Linux中的mmap函数的一个子集,相当于在第五次实验Lazy Allocation中加上了文件的操作。难度比较难定义,因为这个“子集”还是比较模糊的,如果仅仅只针对测试程序,做出一些简化性的假设,难度就不会太大,但如果不做这些假设,难度就会非常高。 内容 为了简化
阅读全文
posted @ 2021-01-13 10:07 YuanZiming
阅读(1403)
评论(0)
推荐(0)
2021年1月11日
MIT-6.S081-2020实验(xv6-riscv64)九:fs
摘要: 实验文档 概述 这次实验涉及文件系统,重点是对inode节点的操作。 内容 Large files 这个任务主要目的是支持更大的文件。和内存映射类似,文件系统中也有一个类似“页表”的结构,每个文件(inode)都有自己的一个“页表”,维护自己文件占用的文件块。和内存不同的是,这个“页表”的级别是自定
阅读全文
posted @ 2021-01-11 22:08 YuanZiming
阅读(872)
评论(0)
推荐(0)
2021年1月8日
MIT-6.S081-2020实验(xv6-riscv64)八:lock
摘要: 实验文档 概述 这次实验主要涉及锁在内核的应用,没有用到什么特别的理论知识,但是编程的时候陷阱重重,要么资源竞争,要么死锁,和实验三差不多,非常考验耐心和细心。 内容 Memory allocator 这个任务要求给物理内存分配程序重新设计锁,使得等待锁时的阻塞尽量少。可以按CPU的数量将空闲内存分
阅读全文
posted @ 2021-01-08 14:19 YuanZiming
阅读(2061)
评论(0)
推荐(2)
2021年1月6日
MIT-6.S081-2020实验(xv6-riscv64)七:thread
摘要: 实验文档 概述 这次实验主要涉及多线程编程,和之前的实验不太一样,比较偏向于应用层面,除了任务一外都是在宿主机上编写多线程程序,应该是xv6不支持系统级的多线程。 内容 Uthread: switching between threads 这个任务要求对一个程序填空,这个程序在用户层面实现了多线程的
阅读全文
posted @ 2021-01-06 23:34 YuanZiming
阅读(1122)
评论(0)
推荐(0)
MIT-6.S081-2020实验(xv6-riscv64)六:cow
摘要: 实验文档 概述 这次实验实现copy on write功能,和上次实验一样也是缺页中断的应用,但不同的是,这次实验涉及的物理内存和虚拟地址的操作要比上个实验多不少,因此难度也更大一些。 内容 首先是uvmcopy的部分,原来的操作是从老页表中获得虚拟地址对应的物理地址,创建一个新物理页,然后将老物理
阅读全文
posted @ 2021-01-06 17:54 YuanZiming
阅读(1299)
评论(0)
推荐(0)
2021年1月2日
MIT-6.S081-2020实验(xv6-riscv64)五:lazy
摘要: 实验文档 概述 这次实验主要实现Lazy allocation的功能,即进程在动态分配内存的时候先不分配,等到要用到发生缺页中断的时候再实际分配,核心是实现缺页中断的处理。xv6的文档介绍了三种缺页中断的应用,第一为Copy on write,即fork的时候先不复制内存,等到要用到发生缺页中断的时
阅读全文
posted @ 2021-01-02 16:33 YuanZiming
阅读(1225)
评论(0)
推荐(0)
上一页
1
2
3
4
5
6
7
···
42
下一页
公告