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:
parent
216c759357
commit
aa478a20c2
BIN
docs/FinalPresentation.pdf
Normal file
BIN
docs/FinalPresentation.pdf
Normal file
Binary file not shown.
@ -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组合并
|
||||
|
||||
## 日志
|
||||
|
||||
|
@ -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 */
|
||||
|
Loading…
Reference in New Issue
Block a user