四月
Mon | Tues | Wed | Thur | Fri | Sat | Sun |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 (D1) |
11 (D2) |
12 (D3) |
13 (D4) |
14 (D5) |
15 (D6) |
16 (D7) |
17 (D8) |
18 (D9) |
19 (D10) |
20 (D11) |
21 (D12) |
22 (D13) |
23 (D14) |
24 (D15) |
25 (D16) |
26 (D17) |
27 (D18) |
28 (D19) |
29 (D20) |
30 (D21) |
五月
Mon | Tues | Wed | Thur | Fri | Sat | Sun |
---|---|---|---|---|---|---|
1 (D22) |
2 (D23) |
3 (D24) |
||||
4 (25) |
5 (D26) |
6 (D27) |
7 (D28) |
8 (D29) |
9 (D30) |
10 (D31) |
11 (D32) |
12 (D33) |
13 (D34) |
14 (D35) |
15 (D36) |
16 (D37) |
17 (D38) |
18 (D39) |
19 ⭐ (D40) |
20 (D41) |
21 (D42) |
22 (D43) |
23 (D44) |
24 (D45) |
25 (D46) |
26 (D47) |
27 (D48) |
28 (D49) |
29 (#50) |
30 (D51) |
31 (D52) |
六月
Mon | Tues | Wed | Thur | Fri | Sat | Sun |
---|---|---|---|---|---|---|
1 (D53) |
2 (D54) |
3 (D55) |
4 (D56) |
5 (D57) |
6 ⭐ (D58) |
7 (D59) |
8 (D60) |
9 (D61) |
10 (D62) |
11 (D63) |
12 (D64) |
13 (D65) |
14 (D66) |
15 (D67) |
16 ⭐ (D68) |
17 (D69) |
18 (D70) |
19 (D71) |
20 (D72) |
21 (D73) |
22 (D74) |
23 (D75) |
24 (D76) |
25 (D77) |
26 (D78) |
27 (D79) |
28 (D80) |
29 (D81) |
30 (D82) |
七月
Mon | Tues | Wed | Thur | Fri | Sat | Sun |
---|---|---|---|---|---|---|
1 (D83) |
2 (D84) |
3 (D85) |
4 (D86) |
5 (D87) |
||
6 (D88) |
7 (D89) |
8 (D90) |
9 (D91) |
10 (D92) |
11 (D93) |
12 (D94) |
13 (D95) |
14 (D96) |
15 (D97) |
16 (D98) |
17 (D99) |
18 (D100) |
19 (D101) |
20 (D102) |
21 (D103) |
22 (D104) |
23 (D105) |
24 (D106) |
25 (D107) |
26 (D108) |
27 (D109) |
28 (D110) |
29 (D111) |
30 (D112) |
31 (D113) |
- Day 0
- Day 1 (2020-04-10)
- Day 2 (2020-04-11)
- Day 3 (2020-04-12)
- Day 4 (2020-04-13)
- Day 5 (2020-04-14)
- Day 6 (2020-04-15)
- Day 7 (2020-04-16)
- Day 8 (2020-04-17)
- Day 9 (2020-04-18)
- Day 10 (2020-04-19)
- Day 11 (2020-04-20)
- Day 12 (2020-04-21)
- Day 13 (2020-04-22)
- Day 14 (2020-04-23)
- Day 15 (2020-04-24)
- Day 16 (2020-04-25)
- Day 17 (2020-04-26)
- Day 18 (2020-04-27)
- Day 19 (2020-04-28)
- Day 20 (2020-04-29)
- Day 21 (2020-04-30)
- Day 22 (2020-05-01)
- Day 23 (2020-05-02)
- Day 24 (2020-05-03)
- Day 25 (2020-05-04)
- Day 26 (2020-05-05)
- Day 27 (2020-05-06)
- Day 28 (2020-05-07)
- Day 29 (2020-05-08)
- Day 30 (2020-05-09)
- Day 31 (2020-05-10)
- Day 32 (2020-05-11)
- Day 33 (2020-05-12)
- Day 34 (2020-05-13)
- Day 35 (2020-05-14)
- Day 36 (2020-05-15)
- Day 37 (2020-05-16)
- Day 38 (2020-05-17)
- Day 39 (2020-05-18)
- Day 40 (2020-05-19)⭐
- Day 41 (2020-05-20)
- Day 42 (2020-05-21)
- Day 43 (2020-05-22)
- Day 44 (2020-05-23)
- Day 45 (2020-05-24)
- Day 46 (2020-05-25)
- Day 47 (2020-05-26)
- Day 48 (2020-05-27)
- Day 49 (2020-05-28)
- Day 50 (2020-05-29)
- Day 51 (2020-05-30)
- Day 52 (2020-05-31)
- Day 53 (2020-06-01)
- Day 54 (2020-06-02)
- Day 55 (2020-06-03)
- Day 56 (2020-06-04)
- Day 57 (2020-06-05)
- Day 58 (2020-06-06)⭐
- Day 59 (2020-06-07)
- Day 60 (2020-06-08)
信息内容:
hypervisor方向,目的是准备在rcore上实现一个简单的type2的hypervisor,参考的是zcore中的实现
https://github.com/PanQL/zircon/blob/master/docs/syscalls.md#hypervisor-guests
syscall方向,目的是补全syscall,让fuchsia的用户态应用在上面启动,具体的参考zCore那个仓库里面的wiki和代码
https://github.com/rcore-os/zCore/wiki/Status:-Syscalls
经过查看,第一个文档是Zircon System Calls的详细说明、第二个文档是zcore待补全的syscall的列表
尚不清楚、实现hypervisor和补全syscall的具体思路与做法、
1、再次沟通了解实现思路与具体做法、所需背景知识、
2、开发环境搭建与准备、
3、沟通了解zcore整体结构、
沟通后、因为对这方面没有太多知识储备支撑、建议先参考https://www.cs.unc.edu/~porter/courses/comp790/s17/labs.html 一个小型的hypervisor构建过程进行理解学习、
根据理解、在zcore上补全syscall的工作、似乎是参照zircon进行的、所以需要理解zircon的内容和运作、
在一个正常运行的操作系统上、试图开启虚拟化、是由一个在用户态下的程序启动的、这个程序通过调用syscall、来实现在电脑上的分配空间、装载新的操作系统、这个系统通称叫guest、
Step1:实现对CPU支持vmx和扩展分页的检测,了解如何发现CPU是否支持vmx和扩展分页、用以知道是否可虚拟化、
Step2:通过syscall创建guest、然后把guest的bootloder和kernel复制到guest的物理地址空间中
Step3:实现vmlaunch和vmresume、用以来启动VM、
Step4:这时guest可以成功进入运行、但还不可以处理中断、要添加guest的处理中断功能、叫做VM exits、与发出系统调用(例如,使用 int 或 syscall 指令)类似,guest可以使用 vmcall 指令(有时称为hypercalls)以编程方式捕获到host
Step5:在VM中仅使用vmcall来请求“伪”内存映射、完成实现handle_cpuid
Step6:当执行I/O时也应补充上I/O的vmcall
这样大概就有一个简单和能跑的hypervisor、以上内容仅有读实验指导书得出的大概理解、没有对代码由过多深入理解、感觉理解程度仅有20%、
1、知道hypervisor大致流程后、对代码目前还毫无头绪、同时对于zircon的hypervisor的实现不清楚、
2、今天时间不够、没能具体的看zircon内容、对zircon还是模糊的
1、通过今天的理解、明天进行一次沟通、印证流程正确与否、
2、尝试找到zircon的对应部分、去查看代码实现、是否也是这个流程、
3、进一步阅读zircon的官方文档、
由于周末觉得叨扰别人不适合、计划调整为补充背景知识
经过这两天的整理的信息、再次看一遍视频、有了一些新的理解、对hypervisor概念和做法有了初步认识、
通过科学上网进入 https://fuchsia.dev/fuchsia-src/concepts/kernel 阅读文档、试图理解zircon都说的什么、怎么组成的、结构是什么样的、发现很多概念不清楚、有很多东西不知道作用、需要反复阅读与查阅资料补充、目前还没有系统的认识、
1、无法很快的理解zircon、准备持续一小段时间看看结果、
2、因为还没摸清zircon的结构、也没能很好的找到zircon实现hypervisor部分代码逻辑、
1、继续在学下zircon的文档、搞清楚个大概、理解下怎么运行、
2、准备周一在沟通交流下、
Errr..今天处理了一些杂事、没能正经营业、接下来要抓紧时间了、
再次参考https://www.cs.unc.edu/~porter/courses/comp790/s17/labs.html 一个小型的hypervisor构建过程、结合代码理解hypervisor、并制作一个简单流程图帮助理解、
理解vmcs的作用及需要设置的大概内容、艰难阅读intel手册、效率不够理想、对此感到沮丧、
阅读了关于zircon、kernel部分的概念、对zircon大概有了一个认知、并确认了体量很大、还有对很多内容理解不到位、认为这个方法不有效、决定找rj取取经、加快对zircon的学习、
1、对hypervisor大体认识有了、细节不够、包括很多intel手册内容、也不清楚、
2、又看了zircon的结构、还是不能清晰代码逻辑、知道中间缺着一些内容、但具体什么不清楚、需要一点一点查、
1、找rj交流下zircon的内容、
2、在对zircon有了一定认识后在去交流hypervisor、syscall、
预计时间: 两个星期
预计内容:
1、Blog OS
2、rCore_tutorial
3、hypervisor lab
4、zcore
时间分配:
1、重新理解熟悉Blog os内容 (3天)
2、重新理解掌握rcore_tutorial内容 (4天)
3、理解尝试完成hypervisor lab(3天)
4、run起zcore、并理解项目 (4天)
预计十四天左右、上下浮动不应超过太多、要求保质保量、稳步进行、
再一次看Blog OS 虽然今天没有代码操作、但对最基本的一些概念和理解感觉认识的更清晰了、第一次学的时候没那么清晰的概念、或没有注意的地方、这次比较容易的就理解了。
今天的进度是:
1、A Freestanding Rust Binary
2、A Minimal Rust Kernel
5、CPU Exceptions
6、Double Faults
7、Hardware Interrupts
看Blog OS时发现出了中文版、我也去看看了中文版、很巧的找到了一个命令错误、我看comment没有人进行评论、我以为没什么人在意这个中文版、就用中文写了个comment、没想到作者真的很勤快、没多久就回复了、😂、但他说看不懂中文、并@了中文翻译的贡献者、然后改了、算是一件比较有趣的事情、😂😂😂、
明天看MEMORY MANAGEMENT章节
通过看群里分享的连接、看了看Rust和C++的各方面的相似与不同、对于Rust的lifetime、变量传递、又有了一些新认识、ownership就是对资源使用有序化的规定机制、不再像c++里那么自由随意、减少了很多出意外的机会、同时也获得了相对高一些的学习成本、这种取舍看起来是非常不错的决定、尽量解决源头问题、感受到一些语言设计灵光、
内存管理的机制、感觉既普通又高级、因为脱离内存、可以是对空间管理的通用设计、也适用的上很多生活实际的东西、要多深入理解理解、看了慢了些、还没看完、
计划对Blog OS 有一个整理、进行收尾、在把aos课程的学习添加到计划上、之前大意忽略掉了、
明天看MEMORY MANAGEMENT章节
今天在看内存映射的时候卡住了、感觉有点绕、理解不太透彻、耗费了许久、感觉是因为bootloader被封装、细节看不全、今天结束之前至少要完成这部分内容、
虽然时间使用的多了些、但也要十分深入的理解这个运行细节、在哪里都避不开、就像之前看到vmm里的ept、依然还是要跟这部分内容打交道、要学习牢固且透彻、
在一件事情上超出了预计时间、造成了一些延期、
按计划再去看rCore_tutorial、有重叠的部分、可以互相印证、
今天做的事情有些杂乱、转乘过度
看完了blog os 对目前文章里的所介绍的知识、都有了基本的知识背景与理解、缺少一些实践与应用、要对比rcore_tutorial印证、
发现在blog os里没注意到的点、对bootloader这个很有大知识盲区、对kernel之前这块链接、汇编很模糊、猜测因为对编译原理知识背景的空白导致的、一直不能很整体的知道这些做了什么、在这了花了一些时间试图搞明白、但结果没想象中的那么有效、
因为一些电脑原因、之前的环境不能用了、又准备下环境、这件事件确实糟心、
因为看了blog os又看到rcore_tutorial、一个x86_64、一个riscv、便对rsicv怎么做hypervisor产生疑问、找到了西部数据介绍这个的ppt、看了以后有了大概了解、看到最后两页、反应过来这不是aos最后riscv那张图么、😂感到幸运的碰巧、
之前也跟rj交流过type1的看法、并觉得做type1在不考虑包袱的情况下是理论正确的、riscv对这个方面设计好像支持不错、
编译原理没有整体的概念、对汇编、编译、链接理解不到位、对经常使用的一些底层工具什么llvm等感到陌生、
完成一下rcore_tutorial、包括代码部分、同时整理考虑、应该如何在这之上添加hypervisor、需要什么、
又是心情复杂的一天
学习了一下、编译原理的概述、是通过什么方式做什么内容、在什么范围内、结构大致为什么样子、每一步都要干一件什么事情、很皮毛的有了一个大致的了解、
对链接这部分有了大体的理解、对编写链接脚本、知道有何作用、为了定义内存的布局、和数据的摆放、
顺便同时也明白了kernel入口设置的那段汇编的作用、查了一些汇编指令与伪指令的具体含义、
在看rcore_tutorial同时想知道什么条件下可以做hypervisor、需要完成什么模块是完备的、去看了unc的实验指导、需要在GitHub上加入这学期课的组织、设置了一个自己的私有仓库、可供管理
对、没错、又是电脑出了问题、感觉绝望、因为历史原因、电脑容量只有120G、系统盘只有40G、windows本身就占了很多又将近20多G、因为wsl和docker的原因、系统盘已经没有空间了、我尽己所能删除所有东西、压缩到极限、但是依旧满足不了、开发环境的配置空间、
感觉走头无路、进退两难、新作系统、会丢失很多环境配置、不做盘符也没位置了、电脑机箱有问题又没空间无法扩容、真是一个悲剧、
需要冷静一下、
电脑一团糟、就像这复杂的心情、
想明天放空大脑一天、被电脑搞到濒临崩溃、😩、心情难以言喻、
反复的得出结论:工欲善其事、必先利其器、~工欲善其事、必先利其器、~工欲善其事、必先利其器、
拆东墙补西墙、暂时能用了、
卡在make上、视警告为错误、可是我已有设置flag忽略了、还是没能通过、
配置环境时、被卡住很迷茫、杂七杂八的看了一些东西、
仔细的听了VMM优化的那一节课、之前有听过一次、不明所以、这次再去听了一次、感到接受了很多信息、
边做边看、因为环境问题、跑到实验楼上去做实验、就是不好保存、很不方便、
同时对比jos代码、找到各自不同的设计思路、目前还没完成、
结束rcore和jos这部分后、有了一定理解、去与他人交流一下、
开会后听取老师建议、既然已经学习了blog os的话、就应学的透彻一些、进行一些转化和产出、
比如是否可以形成关键知识点的总结、基于blog os 的代码改动、等等、要理解到位
Interface Design有了基本了解、听后有很多想法、优秀的interface设计、体现着对整体事物的把握与理解的程度、并且接口的设计、语义的定义是一个动态的过程、拥有时间范围和有效期、会随则时代发展而适应当时的最优解、如何设计易用、高效、解耦、可扩展的接口确实是个很有意思的事情、
因为了解下blog os、zcore和jos、发现一个monolithic、一个micro、一个exo、仔细又去了解了区别、
觉得综合理清下他们的代码结构、看看实际实现上区别在哪里不同、
先把blog os理清、理解、因为代码量最小、最快、然后jos、次之、最后zcore、
把昨天看了、但不是很清晰的章节又回看了下、
虽然运行不了、但是对着博客看仔细阅读理解代码、
Exceptions 部分、看了x86_64的实现、理解底层逻辑、动手实现了下、跑了起来、
内心激动、然而在下载好镜像时、发现找不到很久没用的u盘了、备受打击、又去买了个u盘、明天才能到、
还是Exceptions 部分、每一次从新去看去做、总是会发现原先有些遗漏的点、原先没思考到的问题、越来越细节、
浏览了bootloader、和bootimage源码、试图理解是怎么启动的、没找又.ld代码逻辑万千没理清、但是在bootloader里又几个汇编、写得比较详细、
有探测内存的e820.s、不知道怎么转入的_start、但_start有三个阶段、
每段汇编都大概了解干什么了、没找理清调用顺序、找着找着就断了、不明白、
中断这一块、大致弄清了、CPU做了什么、什么流程跑起来的、x86_64定义了什么结构、kernel里设置那些中断的道理、差不多都可以很清楚的表述了、觉得可以达到与人交流的地步了、可惜没什么谈话机会、
u盘到了、安装电脑、一遍又一遍、、
感觉自己精通了 环境安装 这个步骤、对qemu、认识大增、[不知该开心还是悲伤]、
处理了些杂事......
就也不知到干了什么有效的工作、但确实搞了很多操作..
这部分内容不算多、难度也不大、第一次就以为差不多理解了、但就是因为各种情况把、反反复复搞了很久(包括前面装qemu、各种工具)、虽不知道多学会了什么、但感觉掌握的更牢固了、理解也全面了、
之前重点在于理解内存管理这部分概念、机制方面的东西、虽说之前也学过一些、得到中断那部分经验、要反复去做、
遇到几次死机、不知道是那里的问题、电脑还是新系统、搞得system setting 也打不开了、也无法关机和重启了、排查了一会、um..觉得我还是老老实实的继续写一写code好了、别在环境没了、得不偿失、小心使用、
再次一点点的仔细去看和实现、
内存:
(一/三)、bootloader :
1、执行 内存 的 探测 、保存 结构 信息 传入 OS
2、布局 映射 写入 内存、格式为Page Table Entry ,保存一个起始地址进CR3、我们设计的页表机制准备工作完成
(二/三)、OS: 为了、管理空间、负责记录各个数据在那里、需要记录在页表里、
1、必要有 把 虚拟空间和物理空间进行映射
2、必要有 翻译、即虚拟地址翻译成为物理地址
3、因为要记录 必须在 现实中 有地方存储 、把从bootloader传入的内存结构、管理起来、实现物理页帧分配
(三/三)、OS: 因为栈的机制、使我们使用数据非常不灵活、所以开辟了堆区、
1、设置堆区基本信息
2、设置堆区分配算法与机制
Future、运行机制、就像他的名字一样、“期货” 、在未来的某一时刻将会到来、但在这段时间不会妨碍当前的动作、...
查看了解 intel 手册 、调查背景、理解生态,尝试cpuid、结果在意料之外、不支持虚拟化、um...
run done
但是还要继续搞清楚很多问题、
计划表
HW | Descript | Difficulty | Priority |
---|---|---|---|
01 | 不用Target Specification可不可以进行、怎么进行? | ★★ | ★★ |
02 | 理解串口、1、使用串口 输出 hello ;2、使用串口 输入 hello | ★★★★★ | ★★★★ |
03 | 理解bootloader 、1、使用自己写的bootloader加载blog os、(汇编、C、Rust都可以,可以参考xv6) | ★★★★★ | ★★★★ |
04 | 在IDT初始化时、打印出当前系统状态、比如、当前处于什么模式、异常处理函数地址、页表情况诸如此类 | ★★ | ★★ |
05 | 理解内存布局情况、包括不限于初始化时内存的物理内存布局、虚拟内存布局、各个时期的内存变化 | ★★ | ★★ |
06 | 清晰描述包括且不限于linked list分配算法 | ★★ | ★★ |
07 | 写一些系统调用、分别使用、同步方式 1、C & Rust、2、异步方式 Rust | ★★★ | ★★★★★ |
除了以上目标明确的homework、还须应有 看书、看资料、看博客、之类的的背景知识补充穿插其中
尚未排出全部先后顺序和时间表、但觉得第一个选择 HW07、参考一些博客、把这一部分落实下来、清楚理解
使用C写了 open read write close 这些的例子、原来是系统自带的lib、封装的syscall
知道了这些东西相互之间的关系、学会看man手册
rust 部分 需要std 这好像就不是libc了、卡在对future掌握不全面没有直接动手、
可能状态不太对、想切换了任务换一下脑子 试图进入 HW02
我想看串口 、尝试做一下、查询半天资料、包括Qemu的串口功能、串口的一些设置和规定、大致的介绍、知道一些内容后要去做、发现需要启动一个Qemu、那么我需要一个最简单的OS去启动、那么我需要个OS、那么我需要加载这个os、那么我需要个bootloader、突然理解这HW02、03是一起的、又去学习bootloader、makefile
感觉自己有些迟钝、今天发现这些HW环环相扣、今天完成HW01、并总结了一个小文档、过程中知道了、HW01是第一步、昨天看了半天bootloader、也没能动手原因在于不清楚编译器、发现HW01才是开始、现在串起来了、因为有了HW01、才能HW03、完成HW03、要清楚理解HW04、05、最后启动起来、完成HW02、为自己的无知感到惭愧、
我一开始想得比较天真了、这个背后还是有一定量的背景知识要补充、要不对这个理解不到位、目前follow 200行futures、预计完成后可以正常完成HW07 Rust async部分、
完成 HW07、代码仅仅简单的几行、学要清除一个流程后知道每一步功能写出、背景调查用了很旧、
查网页、看网页、
参考 xv6、jos、crate:bootloader、xv6_x86-64、rcore(当然这个没有被参考成功、这是uefi的、我本也想做个uefi、不过之后跟rj沟通了一下、可能预计有10天左右的工作量、跟目前ddl冲突了、就选择了bios)
不过今天什么也没做出来、全在遇到莫名的问题
时间用的很多、也不知道用哪里了、比如怎么在rust结构下编译汇编、要查一会、要试一会、怎么形成elf、什么是elf、内核镜像是怎么生成的、等等一系列愚蠢的问题...
跟rj沟通了一小时、理清思路、
本以为昨天就完成了、还是被卡住了、一直在试错、也还都不是什么大问题、比如什么objcopy 参数设置阿、link flie书写阿、被编辑器莫名缓存不正确的信息阿、等等一些吧、um... 逐渐在ddl来临之前高压下、进入疯狂..
差不多完成了bootloader的大体内容、还没测试、还有一个小问题需要解决、但都在可预见范围内了、已经没有逻辑上不确定的不能认知的事情了、
HW | Descript | Difficulty | Priority | Finish |
---|---|---|---|---|
01 | 不用Target Specification可不可以进行、怎么进行? | ★★ | ★★ | yes |
02 | 理解串口、1、使用串口 输出 hello ;2、使用串口 输入 hello | ★★★★★ | ★★★★ | not perfect but do |
03 | 理解bootloader 、1、使用自己写的bootloader加载blog os、(汇编、C、Rust都可以,可以参考xv6) | ★★★★★ | ★★★★ | yes but not perfect |
04 | 在IDT初始化时、打印出当前系统状态、比如、当前处于什么模式、异常处理函数地址、页表情况诸如此类 | ★★ | ★★ | yse |
05 | 理解内存布局情况、包括不限于初始化时内存的物理内存布局、虚拟内存布局、各个时期的内存变化 | ★★ | ★★ | yse |
06 | 清晰描述包括且不限于linked list分配算法 | ★★ | ★★ | not yet |
07 | 写一些系统调用、分别使用、同步方式 1、C & Rust、2、异步方式 Rust | ★★★ | ★★★★★ | yes but not perfect |
尝试用 async 写了函数、调用后
并测试、发现确实符合 异步描述
为了网络畅通、在远程时不会卡顿、等时、更新了网络带宽
创建一个最简单的kernel 、把boot和kernel文件 dd 到一个img里进行测试、没成功
使用gdb debug 查看汇编打印变量找问题、未果
gdb打印的指针变量总是不对、去仔细阅读rust语言关于指针的使用、去看C的指针使用
跟rj沟通试图在源码加入打印、编译通过、但不执行打印相关语句、
试图在找新方法尝试
一开始使用简单的手动命令、改来该去、逐渐复杂、加入makefile
在回顾是不是文件放在一起时的流程哪里除了问题、
关键现在是gdb无法调试、寻找问题难度加大、
四下查找、看到multiboot 规范、是不是我写的不够规范、不能加载、尝试参考下multiboot
在rust playground 上 复线代码 是可以运行的、跑到bootloader里就不太正确、匪夷所思
最后的挣扎、用了各种办法、失败告终
https://github.com/GCYYfun/simple_bootloader 写了文档
把zcore下载、查询相关信息
cargo 使用相关知识 关于build.rs、等一些配置
独立写了 一篇 bootloder 放在同仓库 bootloader.md中
把一些细节又去查看了些、还是有些细节的地方看不太懂、但不影响整体理解
整理了新的文档 、simple bootloader 库里
chyyuu
今天开始进行zcore的linux syscall支持的探索
准备步骤如下:
- 下载 rcore https://github.com/rcore-os/rCore zcore https://github.com/rcore-os/zCore
- 编译运行rcore, zcore
- 下载alpline linux,在虚拟机(kvm, virtualbox,...之一)中安装alpine linux,在alpine linux中编译生成musl libc的testcase (musl-libc 测例:http://nsz.repo.hu/git/?p=libc-test ),做为syscall测试用例
- rcore目前已经支持不少libc-test中的测试用例,尝试从简单到复杂把rcore的syscall支持移到zcore中。
注意事项:
- 在zcore的开发中,注意首先基于用户态模式的zcore进行开发,这样避免开发难度。
- 进一步学习 https://os20-rcore-tutorial.github.io/rCore-Tutorial-deploy/
- 有问题直接在rcore2020微信群中提问,请其他同学帮忙。
- https://github.com/EatenBagpipe/rCore 这组同学在rcore上做了一些linux syscall的支持,并用musl libc的testcase 进行测试。你可以做为zcore上linux syscall支持的参考。
GCYYfun
有些工作之外的情况、造成一些进度延迟、明天弥补
- 下载 rcore https://github.com/rcore-os/rCore zcore https://github.com/rcore-os/zCore |完成
- 编译运行rcore,zcore |完成 (遇到的问题 放在zcore syscall detail 里)
- 下载 alpline linux 虚拟机 跑起来 |完成
把一些 名词 查看是干什么的、梳理结构、下载、准备东西
GCYYfun
- 编译 musl libc test-case |完成
- 移植 rcore syscall 到zcore |未完成
通过编译、结果测试全是fail、um...不知道对不对
第零章
https://os20-rcore-tutorial.github.io/rCore-Tutorial-deploy/
在 使用QEMU运行 一节、 使用 #![feature(asm)] 而程序使用 llvm_asm!
按程序为准、应改为 #![feature(llvm_asm)]
GCYYfun
um...没有什么实质的进展、还在弄清情况、琐碎的一天
GCYYfun
梳理流程、熟悉项目代码、大致有了下一步的方向、需要熟悉rcore代码、准备把rcore的教程在过一遍、熟悉了结构、和流程、好快速上手、
GCYYfun
流程:
-
为了移植rcore syscall 到 zcore 上、应该 正常能运行 rcore 是上syscall
-
为了能知道rcore 上 syscall 是否 能正确运行、应该有对应测试
-
为了有对应测试、应该把musl 的libc-test放到rcore里运行、
-
为了能使libc-test在rcore里运行、我们应该能把这个东西打包放入rcore
-
为了打包放入rcore,应该 先把 libc-test编译、因为c文件无法直接运行
-
为了编译libc-test,因该需要 musl环境、所以下了virtual box、安装了alpine
所以说原来这件事是这么个意思、
我需要下一个 libc-test 、并且在musl环境下 编译 、生成的东西、需要 打包进入rcore 、然后在rcore里 执行 编译出来的东西、就能测rcore 的syscall情况、对应补充syscall、然后在porting到zcore.
原来如此.....才明白
那么
- 需要 会 从 vbox 、导出编译好的文件 、节省再去本机配置一个musl环境
- 需要 会 rcore 的打包、makefile的详情流程、
- 需要 会 运行 libc-test 测试、
- 需要 会 看结果
要了解 项目 libc-test
要了解 项目 rcore
GCYYfun
结果 不理想 需要分别去 看下问题
还没有 清晰结果
可惜刚开始学rust时、没能仔细学会些rust book
每次翻看都觉得可惜
运行 流程的 具体细节之类、最后环境还有有一些问题
GCYYfun
提了几个 issues
之后还有待解决
半死不活 需要重做系统
结果在文档 libc-test case result
https://github.com/GCYYfun/DailySchedule/tree/master/libc-test%20case/rCore/README.md
chyyuu 有进步。需要多总结,多思考,多系统地学习。
制作 过程中 遍历了 测例的 名字
同时 浏览了 libc-test 的 目录结构
还没 开始 尝试、 因为 要下系统
准备 重做系统
https://github.com/GCYYfun/DailySchedule/blob/master/doc/auto-test.md
GCYYfun
看文档 https://git-scm.com/book/en/v2 深入 理解 分支 部分
看文档 https://www.qemu.org/docs/master/system/index.html 学习 一些 参数 、命令所起到了 功能、
还是要多读书、好好看、好好学、书上的的东西 真有用、😂
GCYYfun
对qemu的探索 写了 一个 文档
https://github.com/GCYYfun/DailySchedule/blob/master/doc/qemu.md
目前 发现 有些 方法 不太适合
剥离了 一些 命令 运行起来了 内核、 但是 传参 和 共享文件 遇到问题、在赵办法解决
GCYYfun
心情舒畅!
通过 测试 :
如果以rCore为 基准OS
找不到 传参 和 共享文件 的好办法
-
Plan9 需要 os 对这个协议的支持 在 os 里通过 mount 挂载
-
通过 ssh 同样也需要 os 的支持 才能使主机 连接
-
挂载 一个镜像 只能传输 到 qemu里无法取出 文件
-
-kernel 需要 bootloader 和 kernel 打包成 一个 img 目前 rcore是 uefi启动 boot 和 kernel 分离
第1-5页
需要去沟通一下了、
GCYYfun
哈哈 、早上 吃饭 换了一个思路 、想用python 代替 交互 、每没想到 shell 也有 就 省事 用了 一个 expect 的 库
apt install expect
就安装好了 、真方便
解决了、host 和 guest 的指令 交互 问题
尝试 openssh 安装在 rcore里 具有 传输功能、但是 可能是缺少syscall 的支持 、无法简单达成
GCYYfun
制作一个仓库
https://github.com/GCYYfun/auto_test
有一个 完整的 经验证的环境docker
地址:um...
own@Realm:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
gcyy/ubuntu20.04 latest c625c127c3e1 2 minutes ago 8.32GB
ubuntu latest 1d622ef86b13 5 weeks ago 73.9MB
感觉 不太行 这也太大了
chyyuu 你把rcore/zcore想的功能太强了。建议与工程师聊聊。 GCYYfun :好的、好的、一不注意就陷进去了
GCYYfun
可以 进行 自动测试了 、还没写文档、马上写
配置好了 环境、不会因为 环境不同 而 无法运行了
还没 有完全、但初步 算好了、继续继续扩展
https://github.com/GCYYfun/auto_test
这个库、多发几天、提高曝光度🦐!
配置环境令人 头秃 (已秃..
GCYYfun
整理 、完善 仓库 文档、
基本可运行、预计明天完成
https://github.com/GCYYfun/auto_test
GCYYfun
处理了一些别的事情、没什么大的进展
修补一些文档 和 微调代码、补充丰富
GCYYfun
可以简单的开始进行测试、自己测了一遍、除了时间太长、其他的都还可以接受、完成文档、介绍、感觉上可以使用
GCYYfun
doing...
chyyuu
我建议你问清楚Linux syscall小组,用你的自动测试,也能检查他们的实现情况。然后,我们转向能测zcore。做完这个,我们开始参考rcore,在zcore上实现类似的linux syscall。这是第三个月的主要工作,预计持续两个月。中间可能有其他同学加入,到时一起合作做。
准备步骤如下:
- 阅读wrj,pxq毕设论文
- 理解rcore, zcore的syscall的实现和os的大致架构
- 能基于zcore的用户态模式调试代码
注意事项:
- 参考书籍“Linux/UNIX系统编程手册”了解linux syscall的使用
- 阅读libc-test的测试小例子,musl libc的源码,了解调用syscall用户态部分的代码实现
- 在zcore的开发中,注意首先基于用户态模式的zcore进行开发,这样避免开发难度。
- 从最简单的syscall理解开始,逐步掌握syscall的代码
- 参考书籍“linux内核情景分析”了解syscall的具体实现细节
um...做事情将近两个月了、
怎么说呢、之前单独待的太久、有些迟钝了、起初有些没适应、
随着时间增加、体会到了这个模式、
然而做事的满意度并不高、问题出现在 做事的混乱
混乱的原因认为有多种、比如背景不清楚、没有明确目的、思维发散、不能聚焦、种种、但总的来说 应该是主观问题、大于客观问题、思想出了问题
在有效时间区间、高效完成事情、应该是主要目的、快速形成闭环、发散导致复杂度增加、难以有效控制进度和成本、没有结果产出就无法有效评估、自增长所获得经验教训不清晰、不利于长久
今天 停下来 放空了 很久、用来回顾反思、虽没想清楚问题都出在那里、但确定要进行一些改变、付出能量代价、打破一下目前的惯性、
按照理论上对的事情来作为参考执行、事物普遍知易行难、而过多的失败是没做到知行合一
之后一段时期应以知行和一为目的、来改进做事方法、以观后效
GCYYfun
可以通过 、结果 放在
https://github.com/GCYYfun/DailySchedule/tree/master/libc-test%20case/rCore/result.txt
successed 412
failed 40
Panic 23
total : 412+40+23 = 475
看论文 和 看代码、快速接入
GCYYfun
- 阅读wrj,pxq毕设论文
- 理解rcore, zcore的syscall的实现和os的大致架构
- 能基于zcore的用户态模式调试代码
目标 | 程度 |
---|---|
读完论文 | ✔️ |
浏览相关代码 | ✔️ |
问题 | 思考 | 解决过程 |
---|---|---|
🈳 | 🈳 | 🈳 |
...知道了一个大概、通透一下还需要动手实践下、
看 readme、能运行单个命令 、还没找到用户态运行的方法、也在熟悉结构、有了前面看了一点rcore的经验、熟悉的快了一些、再找找、
-
自己写 hello word 放到 rootfs 开启 log 看结果 [可作]
-
libc test 放到 root fs 跑、rcore 挪过去 [可作]
-
用qemu起 linux [可尝试]
GCYYfun
- 阅读wrj,pxq毕设论文
- 理解rcore, zcore的syscall的实现和os的大致架构
- 能基于zcore的用户态模式调试代码 ???
目标 | 程度 |
---|---|
run hello in zCore linux | ✔️ |
run libc-test in zCore linux | ✔️ |
fix OSTEP_RUST | ❌ |
问题 | 思考 | 解决过程 |
---|---|---|
🈳 | 🈳 | 🈳 |
在 zcore 上进行了 linux 用户态 libctest测试
结果放在
GCYYfun
- 阅读wrj,pxq毕设论文
- 理解rcore, zcore的syscall的实现和os的大致架构
- 能基于zcore的用户态模式调试代码 ???
目标 | 程度 |
---|---|
完成auto-test整理 | ✔️ |
阅读文档、对比不同、理解用意 | ❌ |
复现zcore增强版、并整理进阿test | ❌ |
fix OSTEP_RUST | ❌ |
问题 | 思考 | 解决过程 |
---|---|---|
sh的路径、在不同使用方式下、权限和寻找方式不同、可能有个工作目录的概念 | um..还是能找到这部分官方资料最好 | 找了半天、打开方式不对、暂时挂起了 |
修改完毕 达到 v0.0.2
https://github.com/GCYYfun/auto_test
还有好多任务还没做完..预计计划被延误很多、
GCYYfun
- 学习zircon
- 熟悉zCore
- 完成zCore zircon 测试
目标 | 程度 |
---|---|
阅读文档、对比不同、理解用意 | ❌ |
复现zcore增强版、并整理进阿test | ❌ |
fix OSTEP_RUST | ❌ |
问题 | 思考 | 解决过程 |
---|
在之前 了解的基础上 在继续了解
老师给的 资料
- 许中兴fuchsia源码阅读笔记
- fuchsia 官方文档 需要翻墙
- 一篇硕士论文 对linux/zircon general的比较分析
- 一篇文章
- 还有两篇pdf ...
发现好像确实没那么 直接、文件系统看样子是处理方式不一样、改动应该还是有一些的、不太熟悉实现、就搁置了、
GCYYfun
- 学习zircon
- 熟悉zCore
- 完成zCore zircon 测试
目标 | 程度 |
---|---|
阅读文档、对比不同、理解用意 | ✔️ |
复现zcore增强版、并整理进阿test | ❌ |
fix OSTEP_RUST | ❌ |
- 许中兴fuchsia源码阅读笔记
- fuchsia 官方文档 需要翻墙
- 一篇硕士论文 对linux/zircon general的比较分析
- 一篇文章
- 还有两篇pdf ...
问题 | 思考 | 解决过程 |
---|
写了一篇 学习笔记、没有写完、越写越多、后续补充、留作以后对比、不然转头就忘了
https://github.com/GCYYfun/DailySchedule/tree/master/doc/os.md
还没整理zircon内容、要整理下、巩固下、
大致了解 情况 、明天试一下、 也沟通syscall的怎么作、也试一下、
GCYYfun
- 学习zircon
- 熟悉zCore
- 完成zCore zircon 测试
目标 | 程度 |
---|---|
整理一些syscall | ✔️ |
看那个linux和zircon对比的论文 | ❌ |
复现zcore增强版、并整理进阿test | ❌ |
fix OSTEP_RUST | ❌ |
- 许中兴fuchsia源码阅读笔记
- fuchsia 官方文档 需要翻墙
- 一篇硕士论文 对linux/zircon general的比较分析
- 一篇文章
- 还有两篇pdf ...
问题 | 思考 | 解决过程 |
---|
列好了一个 表格 zircon syscall 表格
copy form fuchsia
同时也阅读学习下
master 的 zcore 有些问题、下载 新的zcore 有些难以下载...
下在新仓库 可以跑单测试
接下来 运行 全部测试
集成在auto-test
GCYYfun
- 学习zircon
- 熟悉zCore
- 完成zCore zircon 测试
目标 | 程度 |
---|---|
看那个linux和zircon对比的论文 | ❌ |
复现zcore增强版、并整理进阿test | ❌ |
fix OSTEP_RUST | ❌ |
- 一篇硕士论文 对linux/zircon general的比较分析
- 一篇文章
- 还有两篇pdf ...
问题 | 思考 | 解决过程 |
---|
提交到wiki 一个 对比
https://github.com/rcore-os/zCore/wiki/Zircon-Syscall
尚未完全
遇到只能手动测试的问题、需要改进
GCYYfun
- 学习zircon
- 熟悉zCore
- 完成zCore zircon 测试
目标 | 程度 |
---|---|
看那个linux和zircon对比的论文 | ❌ |
复现zcore增强版、并整理进阿test | ❌ |
fix OSTEP_RUST | ❌ |
问题 | 思考 | 解决过程 |
---|
改动 zcore 可以读写文件测试 、看到可行性
GCYYfun
- 学习zircon
- 熟悉zCore
- 完成zCore zircon 测试
由于原先任务颗粒度太粗略、导致不易执行、现在降低难度、在细分一些
目标 | 程度 |
---|---|
看一节linux和zircon对比的论文 | ❌ |
复现zcore增强版、并整理进阿test | ✔️ |
fix 一点 OSTEP_RUST | ❌ |
推进 一点 Summer of OS | ❌ |
问题 | 思考 | 解决过程 |
---|
完成 并 提交了 pr
https://github.com/rcore-os/zCore/wiki/Status:-Syscalls
时间总比预期花费的多、抓紧看一点、算个开始
chyyuu 2020.06.16
接下来,可以为直接改进zcore做准备了。我觉得要做的事情是:
- 阅读fuchsia/zircon的文档(我会发给你),特别是理解zircon的kernel object的设计思路和kernel syscall的大致含义
- 阅读wrj,pql毕设论文
- 阅读linux/zircon对比的硕士论文
- 再次理解pql昨天做的写syscall的报告,并尝试分析不同obj syscall的具体实现,写出你对部分syscall的实现分析报告
这些事情大约在本周日前完成。我们争取从下周一开始,能选择一些简单的syscall开始尝试实现。
GCYYfun
- 阅读fuchsia/zircon的文档
- 阅读wrj,pql毕设论文
- 阅读linux/zircon对比的硕士论文
- 再次理解pql昨天做的写syscall的报告,并尝试分析不同obj syscall的具体实现,写出你对部分syscall的实现分析报告
由于原先任务颗粒度太粗略、导致不易执行、现在降低难度、在细分一些
目标 | 程度 |
---|---|
看一节linux和zircon对比的论文 | ❌ |
fix 一点 OSTEP_RUST | ❌ |
推进 一点 Summer of OS | ❌ |
问题 | 思考 | 解决过程 |
---|
GCYYfun
- 阅读fuchsia/zircon的文档
- 阅读wrj,pql毕设论文
- 阅读linux/zircon对比的硕士论文
- 再次理解pql昨天做的写syscall的报告,并尝试分析不同obj syscall的具体实现,写出你对部分syscall的实现分析报告
由于原先任务颗粒度太粗略、导致不易执行、现在降低难度、在细分一些
目标 | 程度 |
---|---|
看fuhsia 文档 | ✔️ |
看一节linux和zircon对比的论文 | ❌ |
fix 一点 OSTEP_RUST | ❌ |
推进 一点 Summer of OS | ✔️ |
问题 | 思考 | 解决过程 |
---|
关键是文档看不快、不能即快速有高质量的阅读、方法有问题、
GCYYfun
- 阅读fuchsia/zircon的文档
- 阅读wrj,pql毕设论文
- 阅读linux/zircon对比的硕士论文
- 再次理解pql昨天做的写syscall的报告,并尝试分析不同obj syscall的具体实现,写出你对部分syscall的实现分析报告
由于原先任务颗粒度太粗略、导致不易执行、现在降低难度、在细分一些
目标 | 程度 |
---|---|
看fuhsia 文档 | ✔️ |
看一节linux和zircon对比的论文 | ✔️ |
fix 一点 OSTEP_RUST | ❌ |
推进 一点 Summer of OS | ✔️ |
问题 | 思考 | 解决过程 |
---|
论文 共 5 章
4 结论 5 展望
主要目的说 驱动 顺带 对比
1 叙述目的
2,3 是主要内容
2 是 内核 模块 对比
3 是 驱动 部分 对比
目前 看到 2.2
目前 零零散散 有 看了
Concepts
fidl
overview
kernel
handel
right
signals
Reference
object
channel
stream
vmo
vmar
syscall
channel
还没能宏观的理解清晰
看 文档 没有例子、感觉差点意思、结合代码、调用关系有点差强人意、明天集中看下、看看是否会有改变
TODO
完成 1,2小结
GCYYfun
- 阅读fuchsia/zircon的文档
- 阅读wrj,pql毕设论文
- 阅读linux/zircon对比的硕士论文
- 再次理解pql昨天做的写syscall的报告,并尝试分析不同obj syscall的具体实现,写出你对部分syscall的实现分析报告
由于原先任务颗粒度太粗略、导致不易执行、现在降低难度、在细分一些
目标 | 程度 |
---|---|
看fuhsia 文档 | ✔️ |
看一节linux和zircon对比的论文 | ❌ |
fix 一点 OSTEP_RUST | ❌ |
推进 一点 Summer of OS | ❌ |
问题 | 思考 | 解决过程 |
---|
GCYYfun
- 阅读fuchsia/zircon的文档
- 阅读wrj,pql毕设论文
- 阅读linux/zircon对比的硕士论文
- 再次理解pql昨天做的写syscall的报告,并尝试分析不同obj syscall的具体实现,写出你对部分syscall的实现分析报告
由于原先任务颗粒度太粗略、导致不易执行、现在降低难度、在细分一些
目标 | 程度 |
---|---|
看一节linux和zircon对比的论文 | ❌ |
问题 | 思考 | 解决过程 |
---|
试图fuchsia分析清楚 、没有成功
对比 fuchsia 和 zcore 实现上 还是 颇有不同
失败、关联的范围比较广、没有全部 掌握清楚
GCYYfun
- 阅读fuchsia/zircon的文档
- 阅读wrj,pql毕设论文
- 阅读linux/zircon对比的硕士论文
- 再次理解pql昨天做的写syscall的报告,并尝试分析不同obj syscall的具体实现,写出你对部分syscall的实现分析报告
由于原先任务颗粒度太粗略、导致不易执行、现在降低难度、在细分一些
目标 | 程度 |
---|
问题 | 思考 | 解决过程 |
---|
写了 精心准备的ppt 被电脑 吞噬了、心痛不已 、先保存
GCYYfun
- Implement process_{read, write}_memory
由于原先任务颗粒度太粗略、导致不易执行、现在降低难度、在细分一些
目标 | 程度 |
---|---|
syscall 实现 | |
test CI |
问题 | 思考 | 解决过程 |
---|
Doing read and write
对 process 相关 task 这一类 结构熟悉与调用、
还没找到 aspace 的对应 实现 、明天问下、如果object 不存在、还需补充、 其中涉及到 vm_mapping vmo 相关流程
明天整理清晰、完成syscall
GCYYfun
- Implement process_{read, write}_memory
目标 | 程度 |
---|---|
syscall 实现 | |
test CI |
问题 | 思考 | 解决过程 |
---|
本次测试 可以了、push 后 ci 上猜测是路径的问题、导致执行不对
关键的问题 切片的方式 千丝万缕的关系中 未能很清晰的整理出相互的结构关系 、方法不太对、要改进
还是要仔细 的 看下、 从头缕一下 结构、一点一点的记录、把基础结构这块要完全搞搞清楚、
预计 要有
tasks : job process thread
vm : vmo vmar
不然很难进行、都会关联到 这里
GCYYfun
- Implement process_{read, write}_memory
目标 | 程度 |
---|---|
syscall 实现 | |
test CI |
问题 | 思考 | 解决过程 |
---|
找到了 合适的文档
原先 只关注了 concepts 和 reference
读文档的打开方式不对、其他部分呢 有也有一些便于理解的内容分
经多 多次 ci 测试后 目前的问题 表现为 cargo run 不能执行成功 不是 之前怀疑的路径问题、但是本机却可以正常执行、
在我电脑 ubuntu 20.04 和 rj 的mac 均可运行 成功
ci的环境 也是 ubuntu20.04 失去了新的怀疑方向
GCYYfun
- Implement process_{read, write}_memory
目标 | 程度 |
---|---|
syscall 实现 | ✔️ |
✔️ |
问题 | 思考 | 解决过程 |
---|---|---|
fuchsia的结构多、运行逻辑无法快速找出、c++实现是在挑战回忆 | 要慢下来看代码理解背后逻辑对应zcore | 去看代码对应 |
zcore的结构实现程度也也有一定程度、运行逻辑不能一眼找出、Rust 实现还好处于cache区 | 要看代码理解意思对于应fuchsia的哪一部分 | 去看代码 |
初步完成 syscall process read write memory
并通过测试
小记:
目前syscall 的实现 粗浅的看 一般都需要 获得当前的进程、通过 用户给的handle_value来获取、object、在对object 进行操作、实现syscall的语义、注意边界情况、要对涉及到的object的结构和能力清楚、可以适当进行补充、要注意一些代码规范、
对io的sycall 还挺多、有很多共性、大部分还都是CRUD类别、可以举一反三、自行推理
主要还是要掌握、object的能力边界 、c++ ok 的人 可以看zircon 、但并不好看、简单起见、直接看zCore就可以了、熟悉后自由发挥、不然会很乱、
有待继续整理、清晰整理结构
-
补记: 刚开始 参与时 要多多 参考 已完成的demo
因为目前阶段 已经时 拥有 大部分可执行的 代码、要对这个项目进行 补充、就要熟悉这个项目的结构和代码
诚然自己 从零开始 impl os 是很好的方法、但目前看来不是最有效的、要快速参与进来、有所进展、所以先多多参考demo 使自己有进展、切片式 的学习 、才可有所锻炼、因为逻辑乱序、站在一个点、根据现状提、思考问题、推理问题、提出问题、印证问题、最后可以从任何角度下对一件事情复原然后整体把握、
简简单单的顺序模型、人们都可以、不够锻炼
GCYYfun
- review process_{read, write}_memory
目标 | 程度 |
---|---|
Review code | ✔️ |
Archive info | ✔️ |
问题 | 思考 | 解决过程 |
---|
又梳理了一下结构 、感觉不太有效、 整理好 后 提交一个pr
GCYYfun
目标 | 程度 |
---|
问题 | 思考 | 解决过程 |
---|
看完就就忘、赶紧把剩下的记下来
1 高性能计算的发展方向 HPC
2 分布式系统与区块链的目前的现状与未来情况 共识协议
3 OS的特性与设计
4 忆阻体、存算一体 替换冯诺依曼结构 目前计算机 布尔函数 晶体管、冯诺依曼结构、向生物借鉴、向物理借鉴
5 AIOT和OS 发展
看了 第一讲、第二讲、第三讲、回答课后问题
GCYYfun
目标 | 程度 |
---|---|
fix ostep 熟悉下rust | |
recode rcore_tutorial 熟悉下os | |
draw a diagram for zcore vmo | ✔️ |
问题 | 思考 | 解决过程 |
---|
VMO VMAR 图
GCYYfun
- write a development blog
目标 | 程度 |
---|---|
fix ostep 熟悉下rust | |
recode rcore_tutorial 熟悉下os | |
draw a diagram for zcore task |
问题 | 思考 | 解决过程 |
---|
支出一些时间成本 用作沟通、 要找补回来
GCYYfun
- write a development blog
目标 | 程度 |
---|---|
fix ostep 熟悉下rust | |
recode rcore_tutorial 熟悉下os | |
draw a diagram for zcore task |
问题 | 思考 | 解决过程 |
---|