1
0
mirror of https://github.com/rcore-os/rCore.git synced 2024-11-22 08:06:17 +04:00

Add final presentation pdf

This commit is contained in:
WangRunji 2018-05-26 11:48:49 +08:00
parent 216c759357
commit aa478a20c2
3 changed files with 8 additions and 3 deletions

BIN
docs/FinalPresentation.pdf Normal file

Binary file not shown.

View File

@ -16,6 +16,10 @@
我们期望这个项目在短期内实现uCore的全部功能未来能够比肩甚至取代C语言版本的uCore成为新一代的教学操作系统使之更加简洁、安全、模块化。
## 目录
[TOC]
## 实验概述
### 实验目标和完成情况
@ -107,7 +111,7 @@ blog_os的内核位于低地址区它在进入Rust前的汇编中设置了一
* 链接时由于段名称错误导致属性不正确最终导致了PageFault
* 32位跳转到64位写法不正确链接时报错relocation truncated to fit: R_X86_64_PC32
###2. 设备和多核的初始化
### 2. 设备和多核的初始化
blog_os只实现了中断处理还没有实现对设备的操作。
@ -292,7 +296,7 @@ Rust将C++中的RAII和移动语义发扬光大形成了所有权机制
所有权机制导致的另一个结果就是Rust中的对象有严格的层级关系上层拥有下层的所有权。这使得结构更加清晰但丧失了一定的灵活性而且经常出现深层嵌套。
例如锁`Mutex<T>`它就“拥有”里面的具体类型T你想访问里面的内容就必须先从外部开锁`mutex.lock()`,如果此时没有其它人使用,就会返回一个`MutexGuard<T>`这个对象拥有T的“访问权”你可以通过它操作T。当MutexGuard离开作用域销毁时会自动调用析构函数重新给mutex上锁。
例如锁`Mutex<T>`它就“拥有”里面的具体类型T你想访问里面的内容就必须先从外部开锁`mutex.lock()`,如果此时没有其它人使用,就会返回一个`MutexGuard<T>`这个对象拥有T的“访问权”你可以通过它操作T。当MutexGuard离开作用域销毁时会自动调用析构函数给mutex解锁。
反观C给人的感觉是所有的对象都是平行地散落在内存各处它们之间只是互相引用而要说谁控制谁那只有开发者才知道。假如开发者也糊涂就会出现内存泄漏或是重复释放。C中的锁和被锁对象往往是平级关系上锁这件事需要文档来说明这导致我们经常忘了上锁。
@ -313,6 +317,7 @@ Rust提供了完善的包管理系统和模块系统可以很方便地实现
3. 完成xv6所有功能的移植主要是多核运行程序
4. 学习借鉴sv6搞SMP优化
5. 把进程管理和内存管理模块化
6. 尝试和ARM组合并
## 日志

View File

@ -107,7 +107,7 @@ impl DmaController
}
//println!("insl");
for i in 0..4 {
println!("init:{}", buffer[i]);
info!("ide init: {}", buffer[i]);
}
}
/* device is ok */