Multithreading 在运行时禁用多线程

Multithreading 在运行时禁用多线程,multithreading,Multithreading,我想知道英特尔的处理器是否在其指令集中提供指令 要打开和关闭多线程或超线程功能?基本上,我想 知道操作系统是否可以通过指令控制这些功能 多谢各位 Mareike大多数操作系统都有一种功能,可以更改进程的CPU相关性,从而将其限制在单个物理或虚拟核心上。但多线程是一种程序体系结构,而不是CPU功能。大多数操作系统都有一种功能来更改进程的CPU关联性,从而将其限制在单个物理或虚拟内核上。但多线程是一种程序体系结构,而不是CPU设施。多线程和多任务不是CPU中的特殊指令或模式。它们只是编写操作系统的人

我想知道英特尔的处理器是否在其指令集中提供指令 要打开和关闭多线程或超线程功能?基本上,我想 知道操作系统是否可以通过指令控制这些功能

多谢各位
Mareike

大多数操作系统都有一种功能,可以更改进程的CPU相关性,从而将其限制在单个物理或虚拟核心上。但多线程是一种程序体系结构,而不是CPU功能。

大多数操作系统都有一种功能来更改进程的CPU关联性,从而将其限制在单个物理或虚拟内核上。但多线程是一种程序体系结构,而不是CPU设施。

多线程和多任务不是CPU中的特殊指令或模式。它们只是编写操作系统的人使用中断的奇特方式。有一个硬件定时器,基本上是一个计数器被时钟信号递增,当它溢出时触发一个中断。确切的中断是特定于平台的。在过去,这个定时器实际上是主板上一个单独的芯片/电路,只需连接到CPU的一个中断引脚。现代CPU内置了这个计时器。因此,要关闭多线程和多任务,操作系统可以简单地禁用中断信号

或者,由于实际调度进程/线程是操作系统的工作,因此操作系统可以简单地决定忽略所有线程而不运行它们


阅读是另一回事。它允许操作系统看到第二个虚拟CPU,它可以在上面执行代码。从来没有直接处理过这个问题,所以我不知道如何关闭它(或者即使可能)。

多线程和多任务不是CPU中的特殊指令或模式。它们只是编写操作系统的人使用中断的奇特方式。有一个硬件定时器,基本上是一个计数器被时钟信号递增,当它溢出时触发一个中断。确切的中断是特定于平台的。在过去,这个定时器实际上是主板上一个单独的芯片/电路,只需连接到CPU的一个中断引脚。现代CPU内置了这个计时器。因此,要关闭多线程和多任务,操作系统可以简单地禁用中断信号

或者,由于实际调度进程/线程是操作系统的工作,因此操作系统可以简单地决定忽略所有线程而不运行它们


阅读是另一回事。它允许操作系统看到第二个虚拟CPU,它可以在上面执行代码。从来没有直接处理过这个问题,所以我不知道如何关闭它(或者即使可能)。

我想你想问的是,“有没有办法防止操作系统使用超读和/或多核?”

答案是肯定的。这不是由一条指令控制的,事实上,也不是说你可以编写一个设备驱动程序来自动禁用所有的硬件。这大部分取决于内核在引导时如何配置中断控制器


当机器首次启动时,有一个指定的处理器用于引导。操作系统负责相应地配置多处理器硬件。在PC平台上,这将涉及从引导固件提供的内存表中读取有关多处理器配置的信息。此数据可能符合ACPI或英特尔多处理器规范。内核然后使用该日期相应地配置APIC硬件。

我想你想问的是,“有没有办法防止操作系统使用超线程和/或多个内核?”

答案是肯定的。这不是由一条指令控制的,事实上,也不是说你可以编写一个设备驱动程序来自动禁用所有的硬件。这大部分取决于内核在引导时如何配置中断控制器


当机器首次启动时,有一个指定的处理器用于引导。操作系统负责相应地配置多处理器硬件。在PC平台上,这将涉及从引导固件提供的内存表中读取有关多处理器配置的信息。此数据可能符合ACPI或英特尔多处理器规范。然后内核使用该日期相应地配置APIC硬件。

没有x86指令禁用超读或附加内核。但是,有BIOS设置可以关闭这些功能。因为它可以在BIOS中设置,所以需要重新启动,并且通常不受操作系统控制。有一个Windows引导选项可以限制活动内核的数量,但只能通过BIOS打开/关闭超线程。当前Intel的超线程实现不允许动态开启和关闭(而且在短期内也不容易实现)

在你的问题中,我假设“多线程”为“”,这在技术上与相同。然而,如果您真的想要软件级多线程(即多任务),那么这是完全不同的问题。现代操作系统(几乎)不可能做到这一点,因为它们默认支持多任务处理。而且,这个问题实际上没有意义。如果您想运行MS-DOS(作为x86的实模式,在其中可以完成单个任务),这是有意义的


p、 请注意,“多线程”可以是硬件也可以是软件。我也同意所有其他人的答案,例如处理器/线程关联。

没有x86指令禁用超线程或附加内核。但是,有BIOS设置可以关闭这些功能。因为它可以在BIOS中设置,所以需要重新启动,并且通常不受操作系统控制。这个