1.在操作系统中,当新进程出现时,硬件是否会中断操作系统(而另一个进程正在运行),以便为这一新进程创建新的PCB数据结构?
2.考虑完全公平调度(CFS)算法:当进程正在运行(有一个cpu核心)时,我们知道它会优先处理到当前时间为止运行时间最少的进程,考虑一个正在运行且量程尚未过期的进程,此时一个进程的状态变为就绪,这是否会导致中断(因此os可以重新安排)?谢谢。
发布于 2020-10-22 18:45:28
1.在os中,当一个新进程出现时,硬件是否会中断操作系统(另一个进程正在运行),以便为这个新进程创建一个新的PCB数据结构?
不;通常,硬件不知道任何OS用于跟踪进程(例如PCB数据结构的字段的内容和顺序,如果OS有PCB数据结构,OS如何管理/跟踪各种结构,等等)。
相反,现有的软件通常调用内核系统调用,该调用提供有关新进程的信息,内核构建内核想要的任何数据结构。
例如,操作系统可能有一个"int SpawnProcess(char *executableFileName, char *processName, int maxThreadPriority)“函数;(当有人调用该函数时),内核可以构造一个PCB (并将该结构中的进程名字段设置为调用方所说的,设置文件名字段,设置最大线程优先级等),然后设置其他字段(进程消耗的CPU时间、进程的线程数、进程消耗的内存量、.)对于默认值;然后在存在的进程主列表上对新的PCB进行某种引用;然后为进程的初始线程(并将该结构中的字段设置为默认值--线程状态、初始线程名称、初始线程优先级、信号掩码、默认CPU寄存器状态等)创建一个TCB (线程控制块);然后在新进程的PCB中对新线程进行某种引用;然后在调度程序队列中对新线程进行某种引用(以便调度程序知道存在的线程并给予它CPU时间)。当调度程序确实给新进程的初始线程一些CPU时间时,它可能会开始运行内核代码来创建新的虚拟地址空间,然后加载可执行文件并执行诸如动态链接共享库(在从可执行文件中找到入口点和跳转/返回到可执行文件的入口点之前)等操作。所有这些都是用普通的软件完成的,没有任何特殊的硬件特性。
2.完全公平调度算法:当进程正在运行(有一个cpu核心)时,我们知道它会优先处理到当前时间为止运行时间最少的进程,考虑正在运行的进程,并且量程还没有过期,此时一个进程的状态变为就绪,这会导致中断(因此os可以重新安排)吗?谢谢。
这是以相反的顺序工作。会发生一些事情(内核系统调用或IRQ) (最终,在设备驱动程序和/或其他内核代码完成某些工作之后)将导致一个或多个阻塞任务解除阻塞并准备运行;当这种情况发生时(例如,当调度器中的"unblockTask(taskID task)“函数被内核中的其他东西调用时),调度程序可能会决定最近解除阻塞的任务是否应该/不应该抢占当前正在运行的任务(而且调度程序本身可能不知道为什么任务被解除阻塞,或者最初涉及任何系统调用或中断)。
https://stackoverflow.com/questions/64485417
复制相似问题