我已经阅读了很多关于并行性与并发性有何不同的内容,但是我有很多问题,例如如何使用像Java这样的编程语言来实现并行性?
到目前为止我所理解的是像Java一样的虚拟机,我们只能实现并发性,并行性不在JVM的范围内,它的线程映射到(我在这里混淆)操作系统线程或内核线程?
要了解多线程,需要了解VM(JVM)或进程的线程如何实际映射到CPU硬件。请在这里帮忙。
如果我错了,请纠正我,这里有一些我认为我理解正确的事情:
1。 CPU线程(Intel超线程):通过在具有相同ALU的CPU中添加更多寄存器来提供硬件线程,因此实际上不像双CPU(如果CPU中有2个线程)和&#34只是" - 并发使用ALU只能掩盖(通过交错的MUXing隐藏)主要无法提供真正的并行代码执行。
2。内核线程:由内核启动,这些内容可能比CPU线程更多,但启动起来有点贵。
第3。操作系统主题:我不明白。我猜这是你在调用本机线程时的意思,可能与以前的#2即内核线程相同。
4。用户线程:就像JVM或.NET中的new Thread()
一样。我认为它们不被操作系统识别为线程,因此从并行性的角度来看,这里没有什么可以做的。
我需要了解#4中创建的线程如何映射到#1,可能是Windows / Linux / MacOS的示例。
伙计们,我知道这个问题的范围有多广,但我可以获得简短的信息并链接到任何详细的文档。提前谢谢。
答案 0 :(得分:1)
<强> 1。英特尔超线程 - 这是英特尔为提高一个内核的效率而开发的一项技术,因为在很多执行时间内,CPU等待检索数据和数据。来自RAM的代码。操作系统将超线程核心视为两个独立的逻辑处理器,每个逻辑处理器包含单独的寄存器。
<强> 2。内核线程 - 这由OS内核管理,仅在内核模式下调度。它们附在寄存器和附件上。 EIP以及一些属性。这些是由内核使用一些“已定义”的接口创建和管理的。
第3。用户线程 - 这些是由用户空间进程创建的,在内核线程上执行(因为只能调度一个内核)。但是多个用户线程可以轮流在内核线程上执行,并为“临时”线程提供更高的性能。由于没有进行系统调用而节省了时间。
<强> 4。操作系统线程 - 据我所知,操作系统线程没有正确的定义。它们可以是OS使用的线程,也可以是内核线程。
用户线程通过多种模型在内核线程上执行 - 一对一,m到n&amp;一对一,你可以谷歌这些。