0

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

2.考虑完全公平调度(CFS)算法:当一个进程正在运行(有一个cpu核心)时,我们知道它优先考虑到当前时间为止运行时间最短的进程,考虑一个正在运行的进程和量子还没有过期,此时一个进程的状态变为就绪,这是否会产生中断(以便操作系统可以重新调度)?谢谢。

4

1 回答 1

0

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

不; 通常,硬件不知道任何操作系统使用什么来跟踪进程(例如,PCB 数据结构字段的内容和顺序,如果操作系统完全有 PCB 数据结构,操作系统如何管理/跟踪各种结构, ETC)。

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

举一个可能的例子;一个操作系统可能有一个“int SpawnProcess(char *executableFileName, char *processName, int maxThreadPriority)然后将某种对新线程的引用放在调度程序队列中(以便调度程序知道线程存在并给它 CPU 时间)。当调度程序确实给新进程的初始线程一些 CPU 时间时,它可能会开始运行创建新虚拟地址空间的内核代码,然后加载可执行文件并执行诸如动态链接共享库之类的事情(在找到入口点之前)从可执行文件并跳转/返回到可执行文件的入口点)。所有这些都是使用普通软件完成的,没有任何特殊的硬件功能。然后加载可执行文件并执行共享库的动态链接等操作(在从可执行文件中找到入口点并跳转/返回到可执行文件的入口点之前)。所有这些都是使用普通软件完成的,没有任何特殊的硬件功能。然后加载可执行文件并执行共享库的动态链接等操作(在从可执行文件中找到入口点并跳转/返回到可执行文件的入口点之前)。所有这些都是使用普通软件完成的,没有任何特殊的硬件功能。

2.考虑完全公平调度(CFS)算法:当一个进程正在运行(有一个cpu核心)时,我们知道它优先考虑到当前时间为止运行时间最短的进程,考虑一个正在运行的进程和量子还没有过期,此时一个进程的状态变为就绪,这是否会产生中断(以便操作系统可以重新调度)?谢谢。

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

于 2020-10-22T18:45:28.480 回答