用户级线程和内核级线程的区别 用户级线程和内核级线程的区别

\u5185\u6838\u7ebf\u7a0b\u548c\u7528\u6237\u7ebf\u7a0b\u7684\u533a\u522b

\u7528\u6237\u7ea7\u7ebf\u7a0b\u548c\u5185\u6838\u7ea7\u7ebf\u7a0b\u7684\u533a\u522b\uff1a
\uff081\uff09\u5185\u6838\u652f\u6301\u7ebf\u7a0b\u662fOS\u5185\u6838\u53ef\u611f\u77e5\u7684\uff0c\u800c\u7528\u6237\u7ea7\u7ebf\u7a0b\u662fOS\u5185\u6838\u4e0d\u53ef\u611f\u77e5\u7684\u3002
\uff082\uff09\u7528\u6237\u7ea7\u7ebf\u7a0b\u7684\u521b\u5efa\u3001\u64a4\u6d88\u548c\u8c03\u5ea6\u4e0d\u9700\u8981OS\u5185\u6838\u7684\u652f\u6301\uff0c\u662f\u5728\u8bed\u8a00\uff08\u5982Java\uff09\u8fd9\u4e00\u7ea7\u5904\u7406\u7684\uff1b\u800c\u5185\u6838\u652f\u6301\u7ebf\u7a0b\u7684\u521b\u5efa\u3001\u64a4\u6d88\u548c\u8c03\u5ea6\u90fd\u9700OS\u5185\u6838\u63d0\u4f9b\u652f\u6301\uff0c\u800c\u4e14\u4e0e\u8fdb\u7a0b\u7684\u521b\u5efa\u3001\u64a4\u6d88\u548c\u8c03\u5ea6\u5927\u4f53\u662f\u76f8\u540c\u7684\u3002
\uff083\uff09\u7528\u6237\u7ea7\u7ebf\u7a0b\u6267\u884c\u7cfb\u7edf\u8c03\u7528\u6307\u4ee4\u65f6\u5c06\u5bfc\u81f4\u5176\u6240\u5c5e\u8fdb\u7a0b\u88ab\u4e2d\u65ad\uff0c\u800c\u5185\u6838\u652f\u6301\u7ebf\u7a0b\u6267\u884c\u7cfb\u7edf\u8c03\u7528\u6307\u4ee4\u65f6\uff0c\u53ea\u5bfc\u81f4\u8be5\u7ebf\u7a0b\u88ab\u4e2d\u65ad\u3002
\uff084\uff09\u5728\u53ea\u6709\u7528\u6237\u7ea7\u7ebf\u7a0b\u7684\u7cfb\u7edf\u5185\uff0cCPU\u8c03\u5ea6\u8fd8\u662f\u4ee5\u8fdb\u7a0b\u4e3a\u5355\u4f4d\uff0c\u5904\u4e8e\u8fd0\u884c\u72b6\u6001\u7684\u8fdb\u7a0b\u4e2d\u7684\u591a\u4e2a\u7ebf\u7a0b\uff0c\u7531\u7528\u6237\u7a0b\u5e8f\u63a7\u5236\u7ebf\u7a0b\u7684\u8f6e\u6362\u8fd0\u884c\uff1b\u5728\u6709\u5185\u6838\u652f\u6301\u7ebf\u7a0b\u7684\u7cfb\u7edf\u5185\uff0cCPU\u8c03\u5ea6\u5219\u4ee5\u7ebf\u7a0b\u4e3a\u5355\u4f4d\uff0c\u7531OS\u7684\u7ebf\u7a0b\u8c03\u5ea6\u7a0b\u5e8f\u8d1f\u8d23\u7ebf\u7a0b\u7684\u8c03\u5ea6\u3002
\uff085\uff09\u7528\u6237\u7ea7\u7ebf\u7a0b\u7684\u7a0b\u5e8f\u5b9e\u4f53\u662f\u8fd0\u884c\u5728\u7528\u6237\u6001\u4e0b\u7684\u7a0b\u5e8f\uff0c\u800c\u5185\u6838\u652f\u6301\u7ebf\u7a0b\u7684\u7a0b\u5e8f\u5b9e\u4f53\u5219\u662f\u53ef\u4ee5\u8fd0\u884c\u5728\u4efb\u4f55\u72b6\u6001\u4e0b\u7684\u7a0b\u5e8f\u3002

linux\u4e0b\u7ebf\u7a0b\u5206\u4e3a\u7528\u6237\u7ea7\u7ebf\u7a0b\u548c\u5185\u6838\u7ea7\u7ebf\u7a0b\uff0c\u5728\u5185\u6838\u6765\u770b\uff0c\u7ebf\u7a0b\u548c\u8fdb\u7a0b\u662f\u4e00\u6837\u7684\uff0c\u672c\u8d28\u4e0a\u6ca1\u6709\u533a\u522b\u5185\u6838\u63d0\u4f9b\u7684\u662f\u521b\u5efa\u8fdb\u7a0b\u7684\u63a5\u53e3do_fork()\u3002\u5185\u6838\u63d0\u4f9b\u4e86\u4e24\u4e2a\u7cfb\u7edf\u8c03\u7528clone()\u548cfork()\uff0c\u6700\u7ec8\u90fd\u7528\u4e0d\u540c\u7684\u53c2\u6570\u8c03\u7528do_fork()\u6838\u5185API\u3002\u5f53\u7136\uff0c\u8981\u60f3\u5b9e\u73b0\u7ebf\u7a0b\uff0c\u6ca1\u6709\u6838\u5fc3\u5bf9\u591a\u8fdb\u7a0b\uff08\u5176\u5b9e\u662f\u8f7b\u91cf\u7ea7\u8fdb\u7a0b\uff09\u5171\u4eab\u6570\u636e\u6bb5\u7684\u652f\u6301\u662f\u4e0d\u884c\u7684\uff0c\u56e0\u6b64\uff0cdo_fork()\u63d0\u4f9b\u4e86\u5f88\u591a\u53c2\u6570\uff0c\u5305\u62ecCLONE_VM\uff08\u5171\u4eab\u5185\u5b58\u7a7a\u95f4\uff09\u3001CLONE_FS\uff08\u5171\u4eab\u6587\u4ef6\u7cfb\u7edf\u4fe1\u606f\uff09\u3001CLONE_FILES\uff08\u5171\u4eab\u6587\u4ef6\u63cf\u8ff0\u7b26\u8868\uff09\u3001CLONE_SIGHAND\uff08\u5171\u4eab\u4fe1\u53f7\u53e5\u67c4\u8868\uff09\u548cCLONE_PID\uff08\u5171\u4eab\u8fdb\u7a0bID\uff0c\u4ec5\u5bf9\u6838\u5185\u8fdb\u7a0b\uff0c\u53730\u53f7\u8fdb\u7a0b\u6709\u6548\uff09\u3002\u5f53\u4f7f\u7528fork\u7cfb\u7edf\u8c03\u7528\u65f6\uff0c\u5185\u6838\u8c03\u7528do_fork()\u4e0d\u4f7f\u7528\u4efb\u4f55\u5171\u4eab\u5c5e\u6027\uff0c\u8fdb\u7a0b\u62e5\u6709\u72ec\u7acb\u7684\u8fd0\u884c\u73af\u5883\uff0c\u800c\u4f7f\u7528pthread_create()\u6765\u521b\u5efa\u7ebf\u7a0b\u65f6\uff0c\u5219\u6700\u7ec8\u8bbe\u7f6e\u4e86\u6240\u6709\u8fd9\u4e9b\u5c5e\u6027\u6765\u8c03\u7528__clone()\uff0c\u800c\u8fd9\u4e9b\u53c2\u6570\u53c8\u5168\u90e8\u4f20\u7ed9\u6838\u5185\u7684do_fork()\uff0c\u4ece\u800c\u521b\u5efa\u7684\u201c\u8fdb\u7a0b\u201d\u62e5\u6709\u5171\u4eab\u7684\u8fd0\u884c\u73af\u5883\uff0c\u53ea\u6709\u6808\u662f\u72ec\u7acb\u7684\uff0c\u7531__clone()\u4f20\u5165\u3002\u5177\u4f53\u53ef\u4ee5\u53c2\u8003>\u7b2c\u4e09\u7248\uff0c\u8bb2\u7684\u975e\u5e38\u8be6\u7ec6

内核级线程是操作系统内核实现、管理和调度的一种线程。由于有操作系统管理,所以操作系统是知道线程的存在,并为其安排时间片,管理与其有关的内核对象。因为内核级线程是由内核来管理,所以每次线程创建、切换都要执行一个模式切换例程,所以内核级线程效率比较低,而且内核级线程的调度是由操作系统的设计者来决定的,所以缺乏灵活性。但是内核级线程有一个有点就是当一个进程的某个线程因为一个系统调用或者缺页中断而阻塞时,不会导致该进程的所有线程阻塞。 内核级线程的优点: 较好的并行能力,一个进程内的线程阻塞不会影响该进程内的其他线程 内核级线程的缺点: 线程管理的开销过大,缺乏灵活性。 用户级线程是通过运行在用户态的运行时库来管理的,其优点是,线程的一切(包括调度、创建)都可以完全由用户自己决定,所以具有较高的灵活性。而且由于是在用户态上进行管理,所以就省去了内核管理的开销,所以具有高效率。 但是用户级线程有一个致命的缺点:一个进程内的某一个线程阻塞将导致整个进程内的所有线程全部阻塞。而且由于用户级线程没有时间片概念,所以每个线程必须运行一段时间后将CPU让个其他的线程使用,否则,该线程将独占CPU。 用户级线程的优点: 有较高的灵活性和高效率 用户级线程的缺点: 较差并发能力 由于两种线程通常都不能满足用户的需要,所以一些研究者开始研究新型的线程系统,比较好的线程系统是1993年几个国外的研究者提出的 调度程序激活机制的线程实现方法。 这种方法是介于内核级线程和用户级线程之间的一种线程,同时具有两种线程的优点。要了解更多关于调度激活机制,可以Hi我!!!

  • 鐢ㄦ埛绾х嚎绋嬪拰鍐呮牳绾х嚎绋嬬殑鍖哄埆
    绛旓細浠ヤ笅鏄敤鎴风骇绾跨▼鍜屽唴鏍哥骇绾跨▼鐨勫尯鍒細锛1锛鍐呮牳鏀寔绾跨▼鏄疧S鍐呮牳鍙劅鐭ョ殑锛岃岀敤鎴风骇绾跨▼鏄疧S鍐呮牳涓嶅彲鎰熺煡鐨銆傦紙2锛鐢ㄦ埛绾х嚎绋嬬殑鍒涘缓銆佹挙娑堝拰璋冨害涓嶉渶瑕丱S鍐呮牳鐨勬敮鎸侊紝鏄湪璇█锛堝Java锛夎繖涓绾у鐞嗙殑锛涜屽唴鏍告敮鎸佺嚎绋嬬殑鍒涘缓銆佹挙娑堝拰璋冨害閮介渶OS鍐呮牳鎻愪緵鏀寔锛岃屼笖涓庤繘绋嬬殑鍒涘缓銆佹挙娑堝拰璋冨害澶т綋鏄浉鍚岀殑銆
  • 鐢ㄦ埛绾х嚎绋嬪拰鍐呮牳绾х嚎绋嬬殑鍖哄埆
    绛旓細鍐呮牳绾х嚎绋嬬殑浼樼偣锛 杈冨ソ鐨勫苟琛岃兘鍔涳紝涓涓繘绋嬪唴鐨勭嚎绋嬮樆濉炰笉浼氬奖鍝嶈杩涚▼鍐呯殑鍏朵粬绾跨▼ 鍐呮牳绾х嚎绋嬬殑缂虹偣锛 绾跨▼绠$悊鐨勫紑閿杩囧ぇ锛岀己涔忕伒娲绘с 鐢ㄦ埛绾х嚎绋鏄氳繃杩愯鍦ㄧ敤鎴锋佺殑杩愯鏃跺簱鏉ョ鐞嗙殑锛屽叾浼樼偣鏄紝绾跨▼鐨勪竴鍒囷紙鍖呮嫭璋冨害銆佸垱寤猴級閮藉彲浠ュ畬鍏ㄧ敱鐢ㄦ埛鑷繁鍐冲畾锛屾墍浠ュ叿鏈夎緝楂樼殑鐏垫椿鎬с傝屼笖鐢变簬...
  • 鐢ㄦ埛绾х嚎绋嬪拰鍐呮牳绾х嚎绋嬬殑鍖哄埆
    绛旓細鐢ㄦ埛绾х嚎绋嬪拰鍐呮牳绾х嚎绋嬬殑鍖哄埆锛氾紙1锛夊唴鏍告敮鎸佺嚎绋嬫槸OS鍐呮牳鍙劅鐭ョ殑锛岃岀敤鎴风骇绾跨▼鏄疧S鍐呮牳涓嶅彲鎰熺煡鐨銆傦紙2锛鐢ㄦ埛绾х嚎绋嬬殑鍒涘缓銆佹挙娑堝拰璋冨害涓嶉渶瑕丱S鍐呮牳鐨勬敮鎸侊紝鏄湪璇█锛堝Java锛夎繖涓绾у鐞嗙殑锛涜屽唴鏍告敮鎸佺嚎绋嬬殑鍒涘缓銆佹挙娑堝拰璋冨害閮介渶OS鍐呮牳鎻愪緵鏀寔锛岃屼笖涓庤繘绋嬬殑鍒涘缓銆佹挙娑堝拰璋冨害澶т綋鏄浉鍚岀殑銆傦紙3...
  • 鐢ㄦ埛绾跨▼鍜屽唴鏍哥嚎绋嬬殑鍖哄埆
    绛旓細锛4锛夌嚎绋嬭兘澶熷埄鐢ㄧ殑琛ㄧ┖闂村拰鍫嗘爤绌洪棿姣斿唴鏍哥骇绾跨▼澶銆傜敤鎴风嚎绋嬬殑缂虹偣涓昏鏈変互涓嬩袱鐐癸細锛1锛鍚屼竴杩涚▼涓彧鑳藉悓鏃舵湁涓涓嚎绋嬪湪杩愯锛屽鏋滄湁涓涓嚎绋嬩娇鐢ㄤ簡绯荤粺璋冪敤鑰岄樆濉烇紝閭d箞鏁翠釜杩涚▼閮戒細琚寕璧枫傦紙2锛夐〉闈㈠け鏁堜篃浼氫骇鐢熺被浼肩殑闂銆傚唴鏍哥嚎绋嬬殑浼樼己鐐瑰垰濂借窡鐢ㄦ埛绾跨▼鐩稿弽銆傚疄闄呬笂锛屾搷浣滅郴缁熷彲浠ヤ娇鐢ㄦ贩鍚堢殑鏂瑰紡...
  • 涓鏂囧甫浣犺鎳侾ython绾跨▼
    绛旓細鐢ㄦ埛绾跨▼鍜屽唴鏍哥嚎绋嬬殑鍖哄埆锛1銆佸唴鏍告敮鎸佺嚎绋嬫槸OS鍐呮牳鍙劅鐭ョ殑锛岃岀敤鎴风骇绾跨▼鏄疧S鍐呮牳涓嶅彲鎰熺煡鐨銆2銆鐢ㄦ埛绾х嚎绋嬬殑鍒涘缓銆佹挙娑堝拰璋冨害涓嶉渶瑕丱S鍐呮牳鐨勬敮鎸侊紝鏄湪璇█锛堝Java锛夎繖涓绾у鐞嗙殑锛涜屽唴鏍告敮鎸佺嚎绋嬬殑鍒涘缓銆佹挙娑堝拰璋冨害閮介渶OS鍐呮牳鎻愪緵鏀寔锛岃屼笖涓庤繘绋嬬殑鍒涘缓銆佹挙娑堝拰璋冨害澶т綋鏄浉鍚岀殑銆3銆佺敤鎴风骇绾跨▼...
  • 绾跨▼鏄粈涔堢殑鍩烘湰鍗曚綅
    绛旓細绾跨▼鍙互琚垎涓轰袱绫伙細鐢ㄦ埛绾х嚎绋嬪拰鍐呮牳绾х嚎绋銆傜敤鎴风骇绾跨▼涔熻绉颁负杞婚噺绾х嚎绋嬶紝瀹冧滑瀹屽叏寤虹珛鍦ㄧ敤鎴风┖闂翠腑锛岀敱搴旂敤绋嬪簭鑷绠$悊锛涜屽唴鏍哥骇绾跨▼鍒欒绉颁负閲嶉噺绾х嚎绋嬶紝瀹冧滑闇瑕佹搷浣滅郴缁熺殑鏀寔銆傜嚎绋嬩富瑕佹湁浠ヤ笅鍑犱釜鐗圭偣锛氳交鍨嬫э細绾跨▼鐨瀹炰綋寰堝皬锛屽畠鍩烘湰涓婁笉鍗犵敤鍐呭瓨锛屽彧鏈夊皯閲忕殑鏍堢┖闂村拰涓浜涘繀瑕佺殑瀵勫瓨鍣ㄥ崰鐢ㄧ殑...
  • posix澶绾跨▼鏄鐢ㄦ埛绾杩樻槸鍐呮牳绾
    绛旓細锛1锛鐢ㄦ埛绾х嚎绋浠呭瓨鍦ㄤ簬鐢ㄦ埛绌洪棿銆傗斺>瀵规瘮鍐呮牳(3)锛2锛夊唴鏍稿苟涓嶈兘鐪嬪埌鐢ㄦ埛绾跨▼銆傗斺>閲嶈鐨勫尯鍒 锛3锛夊唴鏍歌祫婧愮殑鍒嗛厤浠嶇劧鏄寜鐓ц繘绋嬭繘琛屽垎閰嶇殑锛涘悇涓敤鎴风嚎绋嬪彧鑳藉湪杩涚▼鍐呰繘琛岃祫婧愮珵浜夈俻osix绾跨▼璋冨害鏄竴涓贩鍚堟ā鍨嬶紝寰堢伒娲伙紝瓒充互鍦ㄦ爣鍑嗙殑鐗瑰畾瀹炵幇涓敮鎸佺敤鎴风骇鍜屽唴鏍哥骇鐨勭嚎绋銆傛ā鍨嬩腑鍖呮嫭涓ょ骇璋冨害-...
  • 绾跨▼鑻辨枃
    绛旓細绾跨▼鏄搷浣滅郴缁熶腑鐨勪竴绉嶆墽琛屽崟鍏冿紝瀹冨彲浠ュ湪鍚屼竴涓繘绋嬩腑骞跺彂鎵ц澶氫釜浠诲姟锛屾瘡涓嚎绋嬪彲浠ョ嫭绔嬪湴鎵ц涓嶅悓鐨勪唬鐮佹锛屼絾瀹冧滑鍏变韩杩涚▼鐨勫湴鍧绌洪棿鍜岀郴缁熻祫婧愶紝濡傛枃浠跺彞鏌勩佺綉缁滆繛鎺ャ佸唴瀛樼瓑銆绾跨▼鐨瀹炵幇鍙互浣跨敤澶氱鏂瑰紡锛屽寘鎷鐢ㄦ埛绾х嚎绋嬪拰鍐呮牳绾х嚎绋銆傜敤鎴风骇绾跨▼鏄敱搴旂敤绋嬪簭鑷瀹炵幇鐨勭嚎绋嬶紝涓嶉渶瑕佹搷浣滅郴缁熺殑鏀寔...
  • 涓嶇绯荤粺鏄惁鏀寔绾跨▼
    绛旓細3銆佺殑銆傚叾鏁版嵁缁撴瀯鏄瓨鏀惧湪鍙椾繚鎶ょ殑绯荤粺瀛樺偍鍖轰腑锛岀敱OS涓哄畠鍒嗛厤绌洪棿骞惰繘琛岀鐞嗐4浣曡皳鐢ㄦ埛绾х嚎绋嬪拰鍐呮牳鏀寔绾跨▼锛(1)鐢ㄦ埛绾х嚎绋嬶細浠呭瓨鍦ㄤ簬鐢ㄦ埛绌洪棿涓殑绾跨▼锛屾棤椤诲唴鏍告敮鎸併傜嚎绋嬫槸鏈灏忕殑璧勬簮鍒嗛厤鍗曚綅,鏄敊鐨,涓轰粈涔?1銆佽繘绋嬫槸璧勬簮鍒嗛厤鐨勬渶灏忓崟浣嶏紝绾跨▼搴旇鏄疌PU璋冨害鐨勬渶灏忓崟浣嶃2銆佽繘绋嬫槸鍏锋湁涓瀹氱嫭绔...
  • 绠鍗曠悊瑙:CPU鐗╃悊鏁,鏍稿績鏁,绾跨▼鏁,杩涚▼,绾跨▼,鍗忕▼,骞跺彂,骞惰鐨勬蹇
    绛旓細鐢ㄦ埛鎬佷笅鐨勮交閲忕骇绾跨▼锛屽鐢ㄧ嚎绋嬭祫婧愶紝闄嶄綆涓婁笅鏂囧垏鎹㈠紑閿锛屽畠浠笉澧炲姞绯荤粺绾跨▼鏁帮紝浣嗘湁鍔╀簬鎻愰珮绋嬪簭鎬ц兘銆傛荤粨鏉ヨ锛岀悊瑙h繘绋嬨绾跨▼鍜鍗忕▼闂鐨勫尯鍒鑷冲叧閲嶈銆鍐呮牳绾х嚎绋嬬殑骞惰鎵ц閫熷害杈冨揩锛屼絾娑堣楄祫婧愬ぇ锛鐢ㄦ埛绾х嚎绋鏄撲簬鎺у埗浣嗗彈闄愪簬鍗曟牳銆傛繁鍏ユ帉鎻¤繖浜涙蹇碉紝鎵嶈兘鍦ㄥ疄闄呭紑鍙戜腑鏇村ソ鍦板埄鐢ㄥ鏍窩PU鐨勪紭鍔裤
  • 扩展阅读:最新cpu天梯图2023 ... hp打印机由于线程退出 ... cpu几核几线程最好 ... 用户级线程的实现方法 ... 为什么不建议用多线程 ... 12核24线程相当于i几 ... 若系统中只有用户级线程 ... 电脑8核和12核哪个好 ... 用户级线程切换需要内核吗 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网