multithreading - 超线程和并行
问题描述
超线程是否会改变已编译程序的二进制代码序列?如果我们有一个编译后的二进制代码,比如:10100011100011100101010010011111100011111110010111 如果启用了超线程,线程代表什么?它只是这个二进制代码的一部分吗?操作系统如何为这些线程分配时间间隔?
对于并行性:编译后的二进制代码会有什么不同吗?内核如何处理这个二进制序列?只是在不同的内核中执行部分代码?操作系统如何分配并行任务?有没有具体的结构?
谢谢你
解决方案
大多数程序被编译为由特定的操作系统在广泛的处理器家族的任何成员上运行(例如,在 Windows 上,对于 x86-64 家族)。在给定的 CPU 系列中,可能存在具有不同内核数量的 CPU,并且可能存在具有或不具有超线程的内核。
这些都不会改变二进制代码。相同的程序通常可以在 CPU 系列的任何成员上运行,无需任何更改。
运行程序的操作系统可能会或可能不会针对处理器系列的不同成员进行不同的配置。
有时,可以编译程序以利用特定 CPU 的功能,但以这种方式编译的程序不适合分发到不同的站点和/或 PC。
如果我们有一个编译后的二进制代码,比如:101000111000... 如果启用了超线程,线程代表什么?它只是这个二进制代码的一部分吗?
这是一个无法回答的问题。您可以通过阅读有关计算机体系结构的介绍性书籍来了解有关“二进制代码”含义的更多信息。例如,https://www.amazon.com/Elements-Computing-Systems-Building-Principles/dp/0262640686/
推荐阅读
- postman - Postman - 在同一迭代中选择性地运行 API 请求
- numpy - pdf 除以 numpy.histogram 密度参数中的 bin 边缘大小
- php - 如何将日期组合在一个数组中,删除任何重叠的日期
- angular - Nx cypress - 添加用于可视化测试的自定义插件
- python-3.x - 为什么我们将节点分配给链表中的指针
- javascript - 在组件 A 中使用 redux 存储图像状态并在 react native 中获取组件 B
- fabricjs - Fabricjs忽略组内的透明对象
- python - 装饰器没有将对象返回给 Python 中的类方法
- salt-stack - SaltStack:我可以在状态或模块中测试目标表达式吗?
- mysql - Grafana 仪表板变量 - 在基于查询的变量中处理 NULL 值