Skip to content

Commit

Permalink
feat: 二阶段报告
Browse files Browse the repository at this point in the history
  • Loading branch information
r27153733 committed Nov 5, 2023
1 parent b6b0d30 commit bc42c49
Showing 1 changed file with 43 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
---
title: 2023秋开源操作系统训练营第二阶段小结-r27153733
date: 2023-11-05 19:41:26
tags:
- author:r27153733
- repo:2023a-rcore-r27153733
---

## 第一阶段

一阶段的`rustlings`是挺好的rust入门题目,也是没有什么阻碍的完成了100道题。

## 第二阶段

# `lab1`

这一个lab没什么难度,实现`taskinfo`不需要太多`os`相关的知识。

# `lab2`

这一个lab开始上强度了,需要弄懂很多`os`知识。

关于`sys_get_time``sys_task_info`,题目有提到`splitted by two pages`问题,但是直接整个转换成物理地址写入也能过测试,

我理解的处理`splitted by two pages`的方法是,对每一个字段,获取他的物理地址,然后写入。

或者像`buffers`那样,直接逐字节拷贝进`Vec<&'static mut [u8]>`

不知道上面的方法是否正确。

关于`mmap``munmap`,本来是想保存在`MemorySet.areas`下,但是考虑到回收的内存段可能是分配的内存段的子集,要实现`MapArea`的分裂,还有性能问题,

就直接在`MemorySet`下挂一个`btree`管理了(感觉在`mmap`这种需求下抽象成`MapArea`反而是一种负担)。

# ` lab3`

`lab3`感觉比`lab2`简单,`spwan`直接复用`TaskControlBlock::new`再进行一些操作,`stride`也是采用了简单的实现。

本来想实现,即使`stride`溢出,也能选择正确的程序(无符号相减,结果转有符号与0比),因为时间问题直接用`u64`解决咕咕咕了。

# 补充

感觉`test`还是少了。

0 comments on commit bc42c49

Please sign in to comment.