原文:https://os.phil-opp.com/cpu-exceptions/原作者:@phil-opp译者:洛佳 华中科技大学使用Rust编写操作系统(五):CPU异常当出错情况发生,CPU将抛出异常,例如除以零或者访问非法地址。为了处理这些异常,我们应当设置中断描述表(interrupt descriptor table),来提供处理函数。这篇文章中,我们尝试抓取断点异常(breakpoint...
Rust Rust中的Async /AwaitRust语言以async/await的形式为协作式多任务提供了支持。 在探讨什么是async/await及其如何工作之前,我们需要了解futures和异步编程如何在Rust中工作。FuturesFuture代表一个可能尚不可用值。 例如,这可能是由另一个任务计算的整数,也可以是从网络下载的文件。 Future无需等到该值可用时,就可...
那么我们来看看内核中页表的存储方式: // in src/main.rs#[no_mangle]pub extern"C"fn_start() ->!{println!("Hello World{}","!");blog_os::init();usex86_64::registers::control::Cr3;let(level_4_page_table,_) = Cr3::read();println!("Level 4 page table at:{:?}", level_4_page...
我们使用no_mangle标记这个函数,来对它禁用名称重整(name mangling)——这确保 Rust 编译器输出一个名为_start的函数;否则,编译器可能最终生成名为_ZN3blog_os4_start7hb173fedf945531caE的函数,无法让链接器正确辨别。 我们还将函数标记为extern "C",告诉编译器这个函数应当使用C 语言的调用约定,而不是 Rust ...
OS dev 上的Exception Table中的“Vector nr.”列展示了所有的异常在IDT中对应的条目。 当一个异常发生时,CPU大概会做以下的内容: 1. 把一些寄存器入栈,包括指令指针和标志寄存器。 2. 从IDT中读对应的条目。例如当发生'页错误'时CPU读第14条。 3. 检查对应的条目是否存在。不存在则抛出'双异常'。 4. ...
Rust中文社区的翻译 背景 最近在看Rust的内容,发现挺有意思。正好也在学操作系统,所以跟着 用Rust 编写操作系统 系列文章来学习。 遇到的问题 1 最小化内核 里,cargo bootimage 创建一个可引导的磁盘映像出现了以下报错 > cargo bootimage WARNING: `CARGO_MANIFEST_DIR` env variable not set Building kernel Co...
Writing an OS in Rust 这个博客系列用 Rust 编程语言编写了一个小操作系统。每篇文章都是一个小教程,并且包含了所有代码 http://t.cn/R9XrRfG
Writing a file system from scratch in Rust Data produced by programs need to be stored somewhere for future reference, and there must be some sort of organisation so we can quickly retrieve the desired information. A file system (FS) is responsible for this task and provides an abstraction ...
There are a couple of cool details that PyO3 is taking care of here. Its automatically converting Rust strings into Python strings, and will raise a ValueError in Python if the cpp_demangle crate returns an error. The various macros used will even take the rust documentation strings and map...
Nan would be home in a minute. He’d cut short my precious time alone, the last of my true selfhood. I smiled with my teeth locked. He understood my look, and straightened up, preparing an argument. He had a soft, kind mouth, and harsh eyebrows that he wore pushed harmlessly back....