rCore-Tutorial-Book-v3 icon indicating copy to clipboard operation
rCore-Tutorial-Book-v3 copied to clipboard

rCore-Tutorial-Book-v3/chapter2/0intro

Open utterances-bot opened this issue 3 years ago • 13 comments

引言 — rCore-Tutorial-Book-v3 0.1 文档

https://rcore-os.github.io/rCore-Tutorial-Book-v3/chapter2/0intro.html

utterances-bot avatar Apr 04 '21 13:04 utterances-bot

qemu-system=riscv64 应为 qemu-system-riscv64

buhe avatar Apr 04 '21 13:04 buhe

Hello, world!buhe app
scause=0x2
[kernel] IllegalInstruction in application, core dumped.
[kernel] Loading app_1
Into Test store_fault, we will insert an invalid store operation...
Kernel should kill this application!
[kernel] PageFault in application, core dumped.
[kernel] Loading app_2
3^10000=5079
3^20000=8202
3^30000=8824
3^40000=5750
3^50000=3824
3^60000=8516
3^70000=2510
3^80000=9379
3^90000=2621
3^100000=2749
Test power OK!
[kernel] Application exited with code 0
[kernel] Loading app_3
Hello 04
[kernel] Application exited with code 0
[kernel] Panicked at src/batch.rs:61 All applications completed!
unsafe {
        llvm_asm!("sret");
    }

kernel] IllegalInstruction in application, core dumped 错误,和教程不同,谢谢

buhe avatar Apr 06 '21 07:04 buhe

编译器会 ~~把~~ 把操作系统的源码和 os/src/link_app.S 合在一起,编译出操作系统+Binary应用的ELF执行文件,并进一步转变成Binary格式。

在一个应 执行完毕后,还能加载另外一个应用,这主要是通过 AppManagerInner 数据结构和对应的函数 load_app 和 run_next_app 等来完成对应用的一系列管理功能。

greenhandatsjtu avatar Jul 18 '21 10:07 greenhandatsjtu

一般来说执行一个用户态应用程序的流程是,读取elf文件,创建新的进程页表,把elf文件里面的可执行文件段分别map到这个地址空间内的不同区域,切换页表然后设置特权等级。但是现在好像还没有文件系统,也没有类似C语言里面map的功能(后面应该会有),所以就靠链接器把用户态应用程序直接写入内核映像里,执行的时候直接跳转到这片内存区域即可

Olivina avatar Feb 20 '22 13:02 Olivina

20220707:可以尝试 ch2-dev 分支。之后如果遇到示例代码与当前教程版本 3.6.0-alpha.1 不适配的情况,建议检查一下是否存在更新的 -dev 分支。

kkocdko avatar Jul 07 '22 00:07 kkocdko

在本章代码导读中 “相比于上一章的两个简单操作系统,”中的“两个”应删去

GP-Bullet avatar Nov 20 '22 09:11 GP-Bullet

根据我自己的学习体验,在之后代码量上来之后如果只是看下面的章节,会有一种盲人摸象的感觉,很容易被细节给绕住。 因此希望后来者在阅读下面的章节前,先自己读代码,遇到不会的地方再在之后的小章节中找相关的答案。 Just Do it!

Unik-lif avatar Apr 23 '23 07:04 Unik-lif

os/build.rs 到底在哪里调用的啊...

DZL1943 avatar Jul 15 '23 11:07 DZL1943

@DZL1943 Makefile里

xuanz20 avatar Aug 18 '23 12:08 xuanz20

@DZL1943 参考这个文档:https://rust-lang.github.io/rust-bindgen/tutorial-3.html

clxsh avatar Aug 28 '23 16:08 clxsh

  1. 文中几乎所有的“邓氏鱼”都写错成“邓式鱼”,建议修改
  2. 这个“能”应该是“要”,表示我们需要如何实现功能:

写完应用程序后,还需实现支持多个应用程序轮流启动运行的操作系统。这里首先把本来相对松散的应用程序执行代码和操作系统执行代码连接在一起,

chestNutLsj avatar Sep 20 '23 11:09 chestNutLsj

https://github.com/rcore-os/rCore-Tutorial-Book-v3/blob/373c51eeabe9b1b3da21d354e0d9e0e6ac1ed685/source/chapter2/0intro.rst?plain=1#L238

这个手册的下载地址已经 404 了,它现在为 《RISC-V开放架构设计之道 The RISC-V Reader.pdf》。

zjp-CN avatar Apr 12 '24 10:04 zjp-CN