操作系统调度程序中使用的算法的硬件实现

问题描述

1.in在操作系统中,当有新进程出现时,硬件是否会为操作系统创建中断(当另一个进程正在运行时)以为此新进程创建新的PCB数据结构?

2。考虑完全公平调度(CFS)算法:当一个进程正在运行时(有一个cpu内核),我们知道它优先于直到当前时间为止运行时间最短的进程,请考虑正在运行的进程而且量子还没有到期,这时一个进程的状态变为就绪,这会造成中断(以便os可以重新安排)吗? 谢谢。

解决方法

1.in在操作系统中,当有新进程出现时,硬件是否会为操作系统创建中断(当另一个进程正在运行时)以为此新进程创建新的PCB数据结构?

否;通常,硬件不知道任何OS使用什么来跟踪过程(例如,PCB数据结构的字段的内容和顺序,如果OS完全具有PCB数据结构,则OS如何管理/保持各种结构的跟踪,等)。

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

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

2。考虑完全公平调度(CFS)算法:当一个进程正在运行时(有一个cpu内核),我们知道它优先于直到当前时间为止运行时间最短的进程,请考虑正在运行的进程而且量子还没有到期,这时一个进程的状态变为就绪,这会产生中断(以便os可以重新调度)吗?谢谢。

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...