在 os 调度程序中使用算法的硬件实现

hardware implementation of algorithms using in os scheduler

1.in os 当一个新进程到来时,硬件是否会中断(而另一个进程正在 运行ning)以创建新的 PCB 数据结构 os对于这个新流程?

2.Consider 完全公平调度 (CFS) 算法:当一个进程 运行ning(有一个 cpu 核心)时,我们知道它优先考虑具有到当前时间的最低 运行 时间,考虑一个处于 运行ning 且量程尚未到期的进程,此时一个进程的状态变为就绪,这是否会造成中断(因此 os 可以重新安排)? 谢谢。

1.in os when a new process comes , does hardware make interrupts (while another process is running) for os to create a new PCB data structure for this new process ?

否;通常硬件不知道 OS 使用什么来跟踪进程(例如 PCB 数据结构字段的内容和顺序,如果 OS 有 PCB 数据结构,OS manages/keeps 各种结构的轨道等)。

相反,现有软件通常会调用提供有关新进程信息的内核系统调用,并且内核会构建内核需要的任何数据结构。

举一个可能的例子; OS 可能有一个“int SpawnProcess(char *executableFileName, char *processName, int maxThreadPriority)”函数;并且(当有人调用该函数时)内核可能会构造一个 PCB(并将该结构中的进程名称字段设置为调用者所说的任何内容,设置文件名字段,设置最大线程优先级等),然后设置其他字段( CPU进程消耗的时间,属于进程的线程数,进程消耗的内存量,...)为默认值;然后将对新 PCB 的某种引用放在某种现有流程的主列表上;然后为进程的初始线程创建一个 TCB(线程控制块)(并将该结构中的字段设置为默认值 - 线程状态、初始线程名称、初始线程优先级、信号掩码、默认 CPU 寄存器状态等);然后在新进程的 PCB 中添加对新线程的某种引用;然后将某种对新线程的引用放在调度程序队列中(以便调度程序知道线程存在并会给它 CPU 时间)。当调度程序确实给新进程的初始线程一些 CPU 时间时,它可能会启动 运行 宁内核代码创建一个新的虚拟地址 space,然后加载可执行文件并执行诸如共享库的动态链接之类的东西(在从可执行文件和 jumping/returning 找到入口点到可执行文件的入口点之前)。所有这些都是通过普通软件完成的,没有任何特殊的硬件功能。

2.Consider Completely Fair Scheduling (CFS) algorithms : when a process is running (there is one cpu core) as we know it gives priority to a process that has lowest run time until current time , consider a process that is running and the quantum does not expire yet , in this time one process s state turns to ready , Will this make interrupt (so os can reschedule) ? thanks.

这以相反的顺序工作。将会发生某些事情(内核系统调用或 IRQ)(最终,在设备驱动程序 and/or 其他内核代码完成一些工作之后)导致一个或多个阻塞的任务解除阻塞并准备好 运行;当这种情况发生时(例如,当内核中的其他东西调用调度程序中的“unblockTask(taskID task)”函数时)调度程序可能会决定最近未阻塞的任务should/shouldn是否抢占当前[=35] =]ning 任务(调度程序本身可能不知道为什么任务被解除阻塞或者是否最初涉及任何系统调用或中断)。