Hol*_*oke 6 operating-system rtos scheduled-tasks
据我所知,每个操作系统都需要有某种机制来定期检查它是否应该运行某些任务并暂停其他任务。
一种方法是某种计时器,操作系统将在其到期时检查它是否应该运行/挂起某个任务。
一般来说,在可能是某种 ISR 的 ARM 系统上说。
我真正的问题是,我一直只能想象这一点,而没有在某处看到它。有人可以指出一些免费/开放的 RTOS 代码,我可以在其中实际看到处理抢占/调度的代码吗?
你可以看看xv6。
它不是一个 RTOS,它只是一个用于学术目的的骨架操作系统(基于 V6 unix)。
在 XV6书的第 4 章中,有关于如何在像 xv6 这样的小型操作系统上完成调度的解释和代码。XV6 在等待磁盘或某些 I/O 操作时将进程置于睡眠状态,还有每 100 毫秒定时器中断一次来切换进程。
还用代码解释了如何进行上下文切换、保存了哪些信息(进程的上下文框架)、当调度程序必须运行时如何从用户模式切换到内核模式。
最好的部分是,理解这些概念所需的阅读量非常少,不像一些操作系统参考书:)代码相对较小,事实上,您可以在 qemu 上运行 XV6,在 sched 、 swtch 和 中设置断点其他功能,并实际查看上下文切换期间保存的信息。(如何运行xv6在此链接)
您不必阅读前面的章节来理解第4章。没有太多依赖,xv6使用struct proc来标识一个进程,ptable代表系统中所有当前正在运行的进程,proc->conext - 指进程所处的状态(寄存器值等),这是由调度程序保存的。干杯:)
| 归档时间: |
|
| 查看次数: |
1124 次 |
| 最近记录: |