linux多线程情况下,线程多长时间进行一次切换 linux内核进行线程切换需要多少时间

linux\u5185\u6838\u8fdb\u884c\u7ebf\u7a0b\u5207\u6362\u9700\u8981\u591a\u5c11\u65f6\u95f4\uff1f

Linux\u5185\u6838\u5207\u6362\u7ebf\u7a0b\u65f6\u95f4\u5728\u5fae\u79d2\u7ea7\u522b\uff0c\u51e0\u5341\u5fae\u79d2\u3002
1. \u67e5\u770b\u9700\u8981\u66f4\u65b0\u7684\u5185\u6838\u547d\u4ee4\uff1a
apt-cache search linux#\u8be5\u547d\u4ee4\u5c06\u4f1a\u663e\u793a\u6240\u6709\u53ef\u4ee5\u83b7\u53d6\u7684\u5185\u6838
2. \u5b89\u88c5\u5185\u6838\uff0c\u5047\u8bbe\u8981\u5b89\u88c5\u7684\u5185\u6838\u4e3a2.6.39-0\uff0c\u5219\u4f7f\u7528\u4e0b\u9762\u7684\u547d\u4ee4
sudo apt-get install linux-headers-2.6.39-0-generic linux-image-2.6.39-0-generic#\u5b89\u88c5\u540e\uff0creboot\u5373\u53ef\uff0c\u91cd\u542f\u540e\uff0c\u65e2\u662f\u4ee5\u65b0\u5185\u6838\u542f\u52a8\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\u3001 CLONE_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\u7528 pthread_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

linux下线程分为用户级线程和内核级线程,在内核来看,线程和进程是一样的,本质上没有区别
内核提供的是创建进程的接口do_fork()。内核提供了两个系统调用clone()和fork(),最终都用不同的参数调用do_fork()核内API。当然,要想实现线程,没有核心对多进程(其实是轻量级进程)共享数据段的支持是不行的,因此,do_fork()提供了很多参数,包括CLONE_VM(共享内存空间)、CLONE_FS(共享文件系统信息)、 CLONE_FILES(共享文件描述符表)、CLONE_SIGHAND(共享信号句柄表)和CLONE_PID(共享进程ID,仅对核内进程,即0号进程有效)。当使用fork系统调用时,内核调用do_fork()不使用任何共享属性,进程拥有独立的运行环境,而使用 pthread_create()来创建线程时,则最终设置了所有这些属性来调用__clone(),而这些参数又全部传给核内的do_fork(),从而创建的“进程”拥有共享的运行环境,只有栈是独立的,由__clone()传入。
具体可以参考<<深入理解Linux内核>>第三版,讲的非常详细

and Hansel at the other.

  • 娴呰皥linux 澶氱嚎绋缂栫▼鍜 windows 澶氱嚎绋嬬紪绋嬬殑寮傚悓
    绛旓細杞浇鑷猣ychit鍒涙剰绌洪棿 寰堟棭浠ュ墠灏辨兂鍐欏啓linux涓嬪绾跨▼缂栫▼鍜寃indows涓嬬殑澶氱嚎绋嬬紪绋嬩簡,浣嗘槸姣忓綋鍐欐椂鍙堜笉鐭ラ亾浠庡摢涓湴鏂瑰啓璧,鎬庢牱鎶婅嚜宸辩煡閬撶殑涓滆タ閮藉啓鍑烘潵,涓嬮潰鎴戝氨璋堣皥linux澶氱嚎绋鍙婄嚎绋嬪悓姝,骞跺皢瀹冨拰windows鐨勫绾跨▼杩涜姣旇緝,鐪嬬湅浠栦滑涔嬮棿鏈変粈涔堢浉鍚岀偣鍜屼笉鍚岀殑鍦版柟銆 鍏跺疄鏈寮濮嬫垜鏄悶windows涓嬬紪绋嬬殑,鍖呮嫭windows缂栫▼...
  • linux C涓澶氱嚎绋鎺ユ敹鏁版嵁鎬庝箞杩涜瀛樺偍鍐嶇粺涓澶勭悊
    绛旓細鍒楀锛氬湪C++绋嬪簭涓煇涓被鍦ㄦ暣涓繘绋嬬殑鐢熷懡鍛ㄦ湡鍐呭彧鑳藉瓨鍦ㄤ竴涓疄渚嬪璞★紝鍦澶氱嚎绋鐨鎯呭喌涓嬶紝涓轰簡鑳借璇ュ璞¤兘澶熷畨鍏ㄧ殑鍒濆鍖栵紝涓娆℃у垵濮嬪寲鏈哄埗灏辨樉寰楀挨涓洪噸瑕佷簡銆傗斺斿湪璁捐妯″紡涓繖绉嶅疄鐜板父甯歌绉颁箣涓哄崟渚嬫ā寮忥紙Singleton锛夈Linux涓彁渚涗簡濡備笅鍑芥暟鏉ュ疄鐜颁竴娆℃у垵濮嬪寲锛歩nclude <pthread.h> // Returns ...
  • 娴呰皥linux 澶氱嚎绋缂栫▼鍜 windows 澶氱嚎绋嬬紪绋嬬殑寮傚悓
    绛旓細linux涓绾跨▼鐨勫疄鐜帮紝linux鐨勭嚎绋缂栫▼鏈変袱涓簱pthread鍜宲th,瀵逛簬pthread鐨勫疄鐜版槸鍐呮牳鏂瑰紡鐨勫疄鐜帮紝姣忎釜绾跨▼鍦╧ernel涓兘鏈塼ask缁撴瀯涓庝箣瀵瑰簲锛屼篃灏辨槸璇寸敤ps鍛戒护琛屾槸鍙互鐪嬭澶氫釜绾跨▼锛岀嚎绋鐨勮皟搴︿篃鏄敱鍐呮牳涓殑schedule杩涜鐨勩傚啀鏉ョ湅鐪媁indows鐨澶氱嚎绋锛學indows NT鍜學indows95鏄竴涓姠鍏堝瀷澶氫换鍔°佸绾跨▼鎿嶄綔绯荤粺...
  • linux閲岄潰,杩涚▼涓绾跨▼鍒板簳鏈変粈涔堟湰璐ㄧ殑鍖哄埆?
    绛旓細绾跨▼涓庤繘绋嬪叧绯 1.涓涓繘绋嬪彲浠ユ湁澶氫釜绾跨▼锛屼竴涓嚎绋嬪彧鑳藉睘浜庝竴涓繘绋嬨2.鍚屼竴涓繘绋嬩笅鐨勬墍鏈夌嚎绋嬪叡浜杩涚▼涓嬬殑鎵鏈夎祫婧愩3.鐪熸鍦ㄥ鐞嗘満涓婅繍琛岀殑鏄嚎绋嬶紝涓嶆槸杩涚▼锛岀嚎绋鏄繘绋嬪唴鐨勪竴涓墽琛屽崟鍏冿紝鏄繘绋嬪唴鐨勫彲璋冨害瀹炰綋銆Linux绾跨▼涓庤繘绋嬪尯鍒 杩涚▼锛氫紭鐐癸細澶氳繘绋嬪彲浠ュ悓鏃跺埄鐢ㄥ涓狢PU锛岃兘澶熷悓鏃惰繘琛屽涓...
  • Linux绾跨▼鍙婂悓姝
    绛旓細linux澶氱嚎绋 1.绾跨▼姒傝堪 绾跨▼鏄竴涓繘绋嬪唴鐨勫熀鏈皟搴﹀崟浣嶏紝涔熷彲浠ョО涓鸿交閲忕骇杩涚▼銆傜嚎绋嬫槸鍦ㄥ叡浜唴瀛樼┖闂翠腑骞跺彂鐨勫閬撴墽琛岃矾寰勶紝瀹冧滑鍏变韩涓涓繘绋嬬殑璧勬簮锛屽鏂囦欢鎻忚堪鍜屼俊鍙峰鐞嗐傚洜姝わ紝澶уぇ鍑忓皯浜嗕笂涓嬫枃鍒囨崲鐨勫紑閿銆備竴涓繘绋嬪彲浠ユ湁澶氫釜绾跨▼锛涔熷氨 鏄湁澶氫釜绾跨▼鎺у埗琛ㄥ強鍫嗘爤瀵勫瓨鍣紝浣嗗嵈鍏变韩涓涓敤鎴峰湴鍧绌洪棿...
  • Linux涓鎻愰珮鍘嬬缉閫熷害鈥斺澶氱嚎绋鍘嬬缉pigz
    绛旓細缁撹锛氳繄鍚戞洿蹇殑鍘嬬缉閫熷害 鍒╃敤澶氱嚎绋鐨刾igz锛屾垜浠兘澶熸樉钁楁彁鍗Linux涓澶ф枃浠剁殑鍘嬬缉鏁堢巼锛屽挨鍏跺湪鏈嶅姟鍣ㄧ幆澧冧腑锛屽畠鐨勪紭鍔挎洿涓烘槑鏄俱傛棤璁烘槸鑺傜渷鏃堕棿杩樻槸浼樺寲璧勬簮锛宲igz閮芥槸鎻愬崌绯荤粺鎬ц兘鐨勫緱鍔涘姪鎵嬨備笉濡ㄥ湪浣犵殑鏃ュ父Linux鎿嶄綔涓皾璇曚竴涓嬶紝鎰熷彈涓涓嬮熷害鐨勯璺冨惂锛
  • Linux绯荤粺涓Shell澶氱嚎绋缂栫▼鐨勫疄渚
    绛旓細!/bin/bash 鈥斺斺斺撴渚嬪瓙璇存槑浜嗕竴绉嶇敤wait銆乺ead鍛戒护妯℃嫙澶氱嚎绋鐨勪竴绉嶆妧宸 姝ゆ妧宸у線寰鐢ㄤ簬澶氫富鏈烘鏌ワ紝姣斿ssh鐧诲綍銆乸ing绛夌瓑杩欑鍗曡繘绋嬫瘮杈冩參鑰屼笉鑰楄垂cpu鐨鎯呭喌 杩樿鏄庝簡澶氱嚎绋嬬殑鎺у埗 鈥斺斺斺揻unction a_sub { 姝ゅ瀹氫箟涓涓嚱鏁帮紝浣滀负涓涓嚎绋(瀛愯繘绋)sleep 3 # 绾跨▼鐨勪綔鐢ㄦ槸sleep 3s } tmp_...
  • linux绾跨▼闂寸殑閫氫俊
    绛旓細linux澶氱嚎绋鍚屾涔嬫秷鎭槦鍒楁湁浣曠壒鐐?l锛熷尯鍒拰鑱旂郴锛1銆佽繘绋嬫槸鐙珛杩愯鐨勫疄浣擄紝鏈夌嫭绔嬬殑璧勬簮鍒嗛厤锛2銆佸悓涓杩涚▼鐨勭嚎绋嬩箣闂村叡浜繘绋嬬殑璧勬簮锛3銆佹墍鏈夌殑杩涚▼鑷冲皯鏈変竴涓墽琛岀嚎绋嬶紱4銆佺嚎绋嬬殑鍒涘缓鍜屽垏鎹唬浠锋瘮杩涚▼鐨勫皬锛涚嚎绋嬮棿鐨勯氫俊鏂规硶锛1銆佸悓涓杩涚▼鐨勭嚎绋嬩箣闂撮氫俊鐨勬渶绠鍗曞姙娉曞氨鏄娇鐢ㄥ叏灞鍙橀噺锛2銆佷笉鍚岃繘绋...
  • 濡備綍鐪嬫噦銆Linux澶氱嚎绋鏈嶅姟绔紪绋
    绛旓細瀵逛簬non-trivial(鏈変竴瀹氳妯)鐨勬湇鍔$绋嬪簭,涓鑸細閲囩敤non-blocking IO + IO multiplexing,姣忎釜connection/acceptor閮戒細娉ㄥ唽鍒版煇涓猠vent loop涓,绋嬪簭閲屾湁澶氫釜event loop,姣忎釜绾跨▼鑷冲鏈変竴涓猠vent loop銆澶氱嚎绋绋嬪簭瀵筫vent loop鎻愬嚭浜嗘洿楂樼殑瑕佹眰,閭e氨鏄滅嚎绋嬪畨鍏ㄢ濄傝鍏佽涓涓嚎绋嬪線鍒殑绾跨▼鐨刲oop閲屽涓滆タ,杩欎釜loop...
  • Linux杩涚▼鍜绾跨▼鐨勫熀纭涓庣鐞
    绛旓細鍙﹀,杩涚▼鍙互鎷ユ湁璧勬簮,绾跨▼鍏变韩杩涚▼鎷ユ湁鐨勮祫婧愩傝繘绋嬮棿鐨勫垏鎹㈠繀椤讳繚瀛樺湪杩涚▼鎺у埗鍧桺CB(Process Control Block)涓傚悓涓涓繘绋嬬殑澶氫釜绾跨▼闂寸殑鍒囨崲涓嶇敤閭d箞楹荤儲銆傛渶鍚庝竴涓疄渚嬫潵浣滀负鏈枃鐨勭粨鏉:褰撲綘鍦ㄤ竴鍙Linux PC涓婃墦寮涓や釜OICQ,姣忎竴涓狾ICQ鏄竴涓繘绋;鑰屽綋浣犲湪涓涓狾ICQ涓婂拰澶氫汉鑱婂ぉ鏃,姣忎竴涓亰澶╃獥鍙e氨鏄竴涓...
  • 扩展阅读:cpu几核几线程最好 ... 办公多线程还是单线程 ... 笔记本线程数多少合适 ... linux查看cpu资源占用 ... 项目中哪里用到多线程 ... 多线程的四种同步方法 ... 玩游戏有必要多线程吗 ... python多线程 ... linux查看线程cpu占用情况 ...

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