線程vs內核
回答
這基本上是正確的,顯而易見的限定條件是大多數操作系統允許您同時執行遠遠多於內核或線程的任務,這些內核或線程通過交錯執行指令來完成。
具有超線程的系統的硬件線程數通常是物理內核的兩倍。
術語線程通常用作操作系統概念的描述,其中潛在可以獨立於其他線程執行。不管它是否卡住等待某個事件(磁盤或屏幕I/O,消息隊列),或者是否有足夠的物理CPU(超線程或非超級線程)允許它在其他非等待中運行線程。
超線程是一個CPU供應商術語,意思是一個單核,可以在兩個計算之間複用它的注意力。思考超線程核心的簡單方法就好像你有兩個真正的CPU,兩者都比製造商說核心實際上可以做的稍慢。
線程不同於進程。一個進程可以有很多線程。線程是一系列具有特定順序的命令。邏輯核心可以在一系列命令上執行。操作系統將所有線程分配給所有可用的邏輯內核,並且如果線程數多於內核線程數,線程將以快速提示進行處理,並且內核之間的切換速度非常快。
看起來像所有線程同時運行,實際上操作系統分配CPU時間。
擁有多個內核具有以下優點:併發線程少於一個內核,線程之間切換更少=速度更快。
超線程技術在1個物理內核上創建2個邏輯內核,並使得線程之間的切換速度更快。
基本上這取決於操作系統。線程是一個持有指令指針的高級構造,操作系統在適當的邏輯處理器上放置線程執行。因此,使用4個內核,您可以基本上並行執行4條指令。作爲線程的地方只包含有關要執行的指令和指令在內存中的位置的信息。
應用程序通常在執行期間使用單個進程,OS在進程之間切換以使所有進程「等於」進程時間。當應用程序部署多個線程時,進程分配多個時隙用於執行,但在線程之間共享內存。
通常情況下,您在併發執行和並行執行方面有所不同。如果實際上實際執行多個邏輯處理器的指令並行執行,並行執行是單個邏輯處理器的頻繁切換,並行執行的出現。
- 1. 進程vs線程(用戶vs內核)
- 2. PThreads:內核vs線程
- 3. 線性內核vs RBF內核
- 4. SPARC CPU VS線程VS核心
- 5. 線程和內核
- 6. 線性svm與χ平方內核vs rff內核
- 7. 用戶線程v.s.內核線程
- 8. 多線程核心數據 - persistentStoreCoordinator vs parentContext
- 9. 內核線程和POSIX庫
- 10. linux - 內核線程搶佔
- 11. get_user_pages_fast()來自內核線程
- 12. Linux內核線程問題
- 13. 什麼是「內核(唯一)線程」而不是「內核級線程」?
- 14. Linux內核線程 - 調度程序
- 15. Linux內核模塊中的內核線程之間的通信
- 16. Linux內核 - alloc_skb vs dev_alloc_skb vs netdev_alloc_skb
- 17. 由於所有用戶線程都映射到內核線程,用戶線程以內核模式運行?
- 18. doParallel,羣集vs內核
- 19. LINUX VS BSD內核開發
- 20. Linux中的內核線程退出
- 21. 在xv6中實現內核級線程
- 22. 內核級和用戶級線程
- 23. 面向內核的線程感知gdb
- 24. 多線程內核如何工作?
- 25. 產生內核模式線程 - Windows
- 26. 內核線程是否被scheduller調度?
- 27. 線程是內核對象嗎?
- 28. 內核傾倒 - 嘗試與線程
- 29. 什麼是內核線程調度?
- 30. 使用kernel_thread創建內核線程
您可能想要小心使用「同時」。對用戶來說,可能會出現一些任務正在同時發生,但實際的硬件可能不會同時執行每項任務。我認爲@mikaelbrandin在並行和併發方面的信息是有用的。 – user3731622 2017-01-06 18:11:52
@ user3731622我在答案中說明了CPU可以交錯指令,從而明確了這一點。我怎麼能使它更清晰? – 2017-01-07 03:33:41
你的答案對於有經驗的人可能相當清楚。一種方法可以讓沒有經驗的人更清楚一點,那就是如果你使用某種形式的詞同時出現或並行出現,並描述了當它不是實際同時發生時可能出現的同時出現的情況。 – user3731622 2017-01-09 17:09:13