Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
title: 2024秋冬季开源操作系统训练营第二阶段总结-寒冰
date: 2024-04-25 03:45:00
categories:
- 22024秋冬季开源操作系统训练营第二阶段总结
tags:
- author:hanbings
- repo:https://github.com/hanbings/canicula
---

春季训练营只写了[第一阶段的 blog](https://github.com/rcore-os/blog/commit/da6914362d23526873089057adaa1dd7631329f3),再来参加的时候得补了呜呜
其实经历了什么忘得差不多了(小声)

**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)

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