操作系统的调度程序如何从进程中重新获得控制权?
How does the scheduler of an operating system regain control from a process?
-我想知道,如果我们有一个单核 cpu 并且假设很长一段时间只有 cpu 个密集进程(没有 I\O 个请求)调度器如何重新获得控制权?
-我读过一些关于定时器中断的资料,我想知道操作系统如何设置这个定时器?
I would like to know, if we have a single core cpu and lets say that for a long time there are only cpu intesive processes (no I\O requests) how does the scheduler regain the control?
有多项选择:
a) 它是一个协作调度程序,当当前 运行 任务自愿或意外地通过调度程序控制时,它会获得控制权。内核 API 函数(可能类似于 yield()
但可能是导致当前 运行 任务阻塞的任何东西 - 例如 read()
)或异常(例如尝试访问内核发送到 swap space 的数据,导致页面错误,其中页面错误处理程序阻止任务,直到从 swap space 获取所需的数据。这可能包括任务崩溃。
b) 它是一个抢占式调度程序,使用硬件(例如计时器)来确保内核将获得控制权(并将控制权传递给调度程序)。请注意,它可能是也可能不是计时器(例如,它可能是一个计数器,用于计算执行的指令数,这对于 CPU 速度因电源管理而变化的现代系统具有优势)。
c) 它是一个“less cooperative/semi-preemptive”调度程序,它会在任何导致内核获得控制权的情况下随时检查是否应该进行任务切换,但不会明确使用任何硬件来确保内核将获得控制权(例如,这样看起来与调度无关的事情,如释放内存,可能会导致任务切换)。
d) 它是最后两个选项的组合——一个使用硬件来确保内核获得控制权的抢占式调度程序;那(每当内核出于任何原因拥有控制权时)机会主义地检查是否可以提前一点完成任务切换以避免很快就会发生相对昂贵的 IRQ。
I have read some stuff about timer interupts, i would like to know how is, the operating system, able to set this timer?
“操作系统”包含大量内容(例如,包括帮助系统的数据文件和图标的图形等等)。通常有一个内核可以不受限制地做任何它喜欢的事情;包括直接访问计时器硬件。
内核如何设置定时器的具体细节取决于它是哪种定时器。请注意,可能有不同类型的定时器可供选择(例如,一台 80x86 PC 可能有一个 PIT 芯片、一个 RTC 芯片、HPET 和一个本地 APIC 定时器内置于每个 CPU;其中一些是通过.IO端口配置的,一些是通过.内存映射寄存器配置的,还有一种可能是通过.special registers/MSRs built into CPU配置的;其中每种类型的定时器都有不同的频率、精度、准确度、功能等)。
-我想知道,如果我们有一个单核 cpu 并且假设很长一段时间只有 cpu 个密集进程(没有 I\O 个请求)调度器如何重新获得控制权?
-我读过一些关于定时器中断的资料,我想知道操作系统如何设置这个定时器?
I would like to know, if we have a single core cpu and lets say that for a long time there are only cpu intesive processes (no I\O requests) how does the scheduler regain the control?
有多项选择:
a) 它是一个协作调度程序,当当前 运行 任务自愿或意外地通过调度程序控制时,它会获得控制权。内核 API 函数(可能类似于 yield()
但可能是导致当前 运行 任务阻塞的任何东西 - 例如 read()
)或异常(例如尝试访问内核发送到 swap space 的数据,导致页面错误,其中页面错误处理程序阻止任务,直到从 swap space 获取所需的数据。这可能包括任务崩溃。
b) 它是一个抢占式调度程序,使用硬件(例如计时器)来确保内核将获得控制权(并将控制权传递给调度程序)。请注意,它可能是也可能不是计时器(例如,它可能是一个计数器,用于计算执行的指令数,这对于 CPU 速度因电源管理而变化的现代系统具有优势)。
c) 它是一个“less cooperative/semi-preemptive”调度程序,它会在任何导致内核获得控制权的情况下随时检查是否应该进行任务切换,但不会明确使用任何硬件来确保内核将获得控制权(例如,这样看起来与调度无关的事情,如释放内存,可能会导致任务切换)。
d) 它是最后两个选项的组合——一个使用硬件来确保内核获得控制权的抢占式调度程序;那(每当内核出于任何原因拥有控制权时)机会主义地检查是否可以提前一点完成任务切换以避免很快就会发生相对昂贵的 IRQ。
I have read some stuff about timer interupts, i would like to know how is, the operating system, able to set this timer?
“操作系统”包含大量内容(例如,包括帮助系统的数据文件和图标的图形等等)。通常有一个内核可以不受限制地做任何它喜欢的事情;包括直接访问计时器硬件。
内核如何设置定时器的具体细节取决于它是哪种定时器。请注意,可能有不同类型的定时器可供选择(例如,一台 80x86 PC 可能有一个 PIT 芯片、一个 RTC 芯片、HPET 和一个本地 APIC 定时器内置于每个 CPU;其中一些是通过.IO端口配置的,一些是通过.内存映射寄存器配置的,还有一种可能是通过.special registers/MSRs built into CPU配置的;其中每种类型的定时器都有不同的频率、精度、准确度、功能等)。