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

Let's write an OS which can run on RISC-V in Rust from scratch!

Results 41 rCore-Tutorial-v3 issues
Sort by recently updated
recently updated
newest added
trafficstars

问题:第9章开始,内核在执行系统调用的时候打开中断,因此内核自身的同步设施需要从单核独占访问`UPSafeCell`换成关中断版本的`UPIntrFreeCell`。然而,文件系统模块`easy-fs`仍然使用自旋锁`spin::Mutex`,就有可能在持有锁进行文件系统操作的时候,进入中断并再次尝试获取文件系统的锁而造成死锁。 触发方法:比如[这种](https://github.com/LearningOS/rCore-Tutorial-Test-2023S/blob/master/src/bin/ch9b_usertest.rs#L37)并发进行多个fork+exec的情况。 解决方案:将`UPIntrFreeCell`分离到一个独立的crate中,使得内核本体和`easy-fs`均依赖它。

bug

1. Update the stack backtrace method 2. Turn off the -C force-frame-pointers flag, which may cause unnecessary [overhead.](https://github.com/tock/tock/pull/1660) 4. The new method should be able to run normally on the...

为user_shell增加TAB键自动补全功能(简易),比如当你要执行一个程序,只需要输入头几个字母再按TAB键即可自动补全。 _同时内核增加syscall指令可获取ls信息_

@equation314 参考 https://github.com/YdrMaster/rCore-Tutorial-in-single-workspace 和 https://github.com/unikraft/unikraft 实现一个模块化的 rcore-tutorial-v3 branch ch9

起因是这样的,我在为RustUserShell增加TAB键补全功能,但是发现对于FS的操作中没有列出文件的接口,我想增加一个枚举,让Read功能可以读取列表并以“文件”形式返回。但对于该枚举的取值,我需要你们的建议,或者以其他的方式去实现也行,我可以为此Issue提交PR,谢谢同学们! 我想加一行这个: `const SYSCALL_FS_LS: usize = 65;`

**ch3-lab分支代码缺失,需要完善实验框架及相应测试用例** 在 rCore-Tutorial-Book-v3 中关于[第三章实践作业](http://rcore-os.cn/rCore-Tutorial-Book-v3/chapter3/5exercise.html#id6)有如下引用所示的表述,但是查看[rCore-Tutorial-v3 ch3-lab分支](https://github.com/rcore-os/rCore-Tutorial-v3/tree/ch3-lab),发现并没有给出同[rCore-Tutorial-Code-2022S/ch3](https://learningos.github.io/rCore-Tutorial-Code-2022S/ch3/src/os/syscall/process.rs.html#46)和[rust-based-os-comp2022 main/os3-ref/](https://github.com/LearningOS/rust-based-os-comp2022/blob/main/os3-ref/src/syscall/process.rs#L46)一样的框架 > > - 说明: > - 相关结构已在框架中给出,只需添加逻辑实现功能需求即可。 且也没有测试任务中要求的新增系统调用`fn sys_task_info(ti: *mut TaskInfo) -> isize`相关的测试用例, 需要添加测试用例包括但不限于如[rCore-Tutorial-Test-2022A main/user/src/bin/ch3_taskinfo.rs](https://github.com/LearningOS/rCore-Tutorial-Test-2022A/blob/main/user/src/bin/ch3_taskinfo.rs)等。 [feat(lab3/Time-sharing OS): Add an syscall named `sys_task_info`](https://github.com/gfgafn/rCore/commit/cdd50c683060449293691ded1a4be445146c3e8b)这是我在ch3 TimeSharing OS的基础上完成第三章Lab的...

支持从某次运行后的easyfs文件系统镜像`fs.img`将文件提取到host OS中。

error when I run `make build_docker`: ``` Step 8/13 : COPY --from=build_qemu /usr/local/bin/* /usr/local/bin When using COPY with more than one source file, the destination must be a directory and...

# 问题描述 原来的并发模块严重依赖内核态的中断屏蔽机制,导致同步原语相关的系统调用多达数十个,不仅使内核与用户程序的 **接口臃肿冗余**,还大大增加了同步原语的性能开销。另外,同步原语的数据结构 **只定义在于内核中**,不对用户程序开放,使得用户程序只能使用语义不明的 ID 作为同步原语的句柄。 ![原来的并发模块结构图 drawio](https://github.com/user-attachments/assets/5bb56e8d-ba9d-4899-8d89-e1d9d4a76bee) # 新的并发模块概述 用户态(或者说 user_lib 中)实现了 **MutexSpin, Futex, Condvar, Semaphore** 四种同步原语,内核态只实现了 **MutexSpin**。 与原来的并发模块相比,新的并发模块的系统调用数量从 10 个削减到**仅剩 1 个**,**精简了内核接口**。自旋锁基于原子指令实现,相比于中断屏蔽**大大提高了性能**;Futex 在用户态的检查操作同样基于原子指令,仅在必要时通过 sys_futex 进入内核态;Condvar 和 Futex...