Kernel

FreeBSD上的{rd,wr}msr_safe

| Kernel | #FreeBSD | #kernel | #assembly | #MSR | #x86

这几天改 FreeBSDcoretemp(4) 遇到了一个问题。直接使用 rdmsr 的话,如果那个 MSR 不存在,则会触发 #GP(0),不了解 CPU 型号的情况下直接去杵肯定是不行的。后来翻了一下 cpuctl(4) 的代码发现 FreeBSD 上也有 rdmsr_safe。它的实现并不复杂( sys/amd64/amd64/support.S):

阅读全文…( 本文约 364 字,阅读大致需要 1 分钟 )

抢占式调度

| Kernel | #kernel | #scheduling

现代操作系统中,抢占式调度是一个很有意思的话题。

教科书对于抢占式调度的定义比较简单—-抢占式调度中,任务切换动作可以由于优先级变化而触发,而并非仅限于时间片用完或主动放弃CPU(当然,一般而言我们并不认为中断处理是一次严格意义上的抢占操作)。

从直觉上看,抢占式调度必然增加潜在的上下文切换次数,并因为增加了这些开销而降低系统吞吐量。那么,为什么要引入抢占式调度呢?

阅读全文…( 本文约 537 字,阅读大致需要 2 分钟 )