Yiren Zhang
Yiren Zhang
have a try....
> 当我把测例的 ch2_write1.rs 和 ch2t_write0.rs 引入 user/src/bin 后,在 os 目录执行 make run,编译器提示 > use user_lib::{write, STDOUT}; > 一行 no `STDOUT` in the root > 考虑到 STDOUT = 1 是常数,我把两个文件中都改成了 >...
> 将ch2t_write0里的`use alloc::slice;`改为`use core::slice;` 收到。
我们要保证向前兼容,那么意思是说每次作业都要重复实现一遍sleep,stride这些功能: 理论上所有系统调用都必须支持,目前测例设计上 stride 可以不继承(也就是不会重复测调度,但是 set_prio 这个系统调用要保留)。其余所有内容都必须继承甚至更新(比如对 sys_write 的检查啥的)。
* 请问,合法的unmap一定是之前已经map的一整块虚存吗? 回答:不一定,map 和 unmap 是基于页的,有一定灵活性。 * 以下的测例应该正确运行吗? 回答:能。 * 是否意味着 unmap 的时候要先将整段的 [p, p+3*w) unmap,然后再重新映射 [p, p+w), [p+2w, p+3w) 两段? 回答: 内部实现都可以,只要保证最后 map 的数据可用就行。map 的基本单位是页,当然 os 内部管理可以基于 map 的区域,但是用户程序看来...
waitpid 需要改造成阻塞的,但是只需要子进程没有结束就 yield 就好了,比较简单。 initproc 可以直接替换成 ch5_usertest,不过有一个统一的启动进程也比较优雅,测例会尽快调整。
更新上一条:rust 版本 waitpid 不需要改,阻塞将在用户态实现。
sys_open 接口不同,但是最后一个参数仅仅为了兼容 posix 接口,为常量,不需要处理。 sys_exec 为示例代码新特性,测例会尽快跟进。
其实 fd 不会那么大的,随便什么类型都可以。。。。,当然用 usize 传比较严谨。
由于设置原因,评论区发生了一些错误,[错误测试]。