线程vs内核
回答
这基本上是正确的,显而易见的限定条件是大多数操作系统允许您同时执行远远多于内核或线程的任务,这些内核或线程通过交错执行指令来完成。
具有超线程的系统的硬件线程数通常是物理内核的两倍。
术语线程通常用作操作系统概念的描述,其中潜在可以独立于其他线程执行。不管它是否卡住等待某个事件(磁盘或屏幕I/O,消息队列),或者是否有足够的物理CPU(超线程或非超级线程)允许它在其他非等待中运行线程。
超线程是一个CPU供应商术语,意思是一个单核,可以在两个计算之间复用它的注意力。思考超线程核心的简单方法就好像你有两个真正的CPU,两者都比制造商说核心实际上可以做的稍慢。
线程不同于进程。一个进程可以有很多线程。线程是一系列具有特定顺序的命令。逻辑核心可以在一系列命令上执行。操作系统将所有线程分配给所有可用的逻辑内核,并且如果线程数多于内核线程数,线程将以快速提示进行处理,并且内核之间的切换速度非常快。
看起来像所有线程同时运行,实际上操作系统分配CPU时间。
拥有多个内核具有以下优点:并发线程少于一个内核,线程之间切换更少=速度更快。
超线程技术在1个物理内核上创建2个逻辑内核,并使得线程之间的切换速度更快。
基本上这取决于操作系统。线程是一个持有指令指针的高级构造,操作系统在适当的逻辑处理器上放置线程执行。因此,使用4个内核,您可以基本上并行执行4条指令。作为线程的地方只包含有关要执行的指令和指令在内存中的位置的信息。
应用程序通常在执行期间使用单个进程,OS在进程之间切换以使所有进程“等于”进程时间。当应用程序部署多个线程时,进程分配多个时隙用于执行,但在线程之间共享内存。
通常情况下,您在并发执行和并行执行方面有所不同。如果实际上实际执行多个逻辑处理器的指令并行执行,并行执行是单个逻辑处理器的频繁切换,并行执行的出现。
- 1. 进程vs线程(用户vs内核)
- 2. 线性内核vs RBF内核
- 3. SPARC CPU VS线程VS核心
- 4. 线程和内核
- 5. Linux内核线程问题
- 6. get_user_pages_fast()来自内核线程
- 7. linux - 内核线程抢占
- 8. 内核线程和POSIX库
- 9. 什么是“内核(唯一)线程”而不是“内核级线程”?
- 10. Linux内核线程 - 调度程序
- 11. Linux内核模块中的内核线程之间的通信
- 12. LINUX VS BSD内核开发
- 13. doParallel,群集vs内核
- 14. CPU调度和内核级线程
- 15. 产生内核模式线程 - Windows
- 16. 面向内核的线程感知gdb
- 17. 多线程内核如何工作?
- 18. 线程是内核对象吗?
- 19. cpu中的内核和线程
- 20. 内核线程是否被scheduller调度?
- 21. linux内核的list.h线程安全吗?
- 22. 由内核跟踪线程执行
- 23. Linux中的内核线程退出
- 24. 什么是内核线程调度?
- 25. 多线程vs单线程
- 26. decaf线程vs boost线程vs全线程
- 27. 用户线程与内核线程的多对一映射
- 28. 内核线程和用户线程有什么区别?
- 29. 更喜欢用户线程而不是内核线程
- 30. 在内核线程上映射时用户线程资源
您可能想要小心使用“同时”。对用户来说,可能会出现一些任务正在同时发生,但实际的硬件可能不会同时执行每项任务。我认为@mikaelbrandin在并行和并发方面的信息是有用的。 – user3731622 2017-01-06 18:11:52
@ user3731622我在答案中说明了CPU可以交错指令,从而明确了这一点。我怎么能使它更清晰? – 2017-01-07 03:33:41
你的答案对于有经验的人可能相当清楚。一种方法可以让没有经验的人更清楚一点,那就是如果你使用某种形式的词同时出现或并行出现,并描述了当它不是实际同时发生时可能出现的同时出现的情况。 – user3731622 2017-01-09 17:09:13