0%

2024秋冬季开源操作系统训练营第二阶段总结-寒冰

春季训练营只写了第一阶段的 blog,再来参加的时候得补了呜呜
其实经历了什么忘得差不多了(小声)

ch3:
clock 数据被覆盖,高 32 位全是 0,是在 TaskManager 中使用 get_clock 出现的错误,且仅在 Intel CPU(13500h 13900h) 中会出现,而 AMD (7860hs 6800hs)并不会。
排错的方式是从 get_clock 调用一路往上进行 log,直到我把 get_clock 调用从 TaskManager 移出来后错误消失,
到最后我也没弄明白原因,如果是写法问题就不应该出现某些处理器能跑的情况,
个人感觉问题会出在 qemu 或 sbi 上,所以也许会遇到这样的问题换个机器试一试?

ch4: 没认真看文档,问题出现在了几个标志位上 😭😭😭

ch5: 这个章节个人认为是没有 ch4 难的(是确实没有什么印象了 uwu)简单点说就是在 tcb 里放一个优先级字段,然后在切换任务的地方遍历 tcb 根据优先级选择就可以了

ch6: 使用了一个 Hash Map,在 syscall 那一层就索引这个表取链接了,到这里只要注意没有压到别的内存好像就没有什么很特别的内容了?只是 Hash Map 的实现会比较麻烦(好吧,后来我才发现 core 里也有一个 Map)

果然这类日志类的文字,还是要在解决问题的时候就马上记录下来
嗯… 真的很潦草…