锘??xml version="1.0" encoding="utf-8" standalone="yes"?>日韩图片一区,久久久久久久999精品视频,欧美日韩亚洲一区二http://m.shnenglu.com/dawnbreak/category/8987.htmlPearLi's Blogzh-cnSun, 30 Jan 2011 00:48:05 GMTSun, 30 Jan 2011 00:48:05 GMT60AT&T姹囩紪璇█(杞?http://m.shnenglu.com/dawnbreak/articles/139598.htmlpear_lipear_liSat, 29 Jan 2011 14:51:00 GMThttp://m.shnenglu.com/dawnbreak/articles/139598.htmlhttp://m.shnenglu.com/dawnbreak/comments/139598.htmlhttp://m.shnenglu.com/dawnbreak/articles/139598.html#Feedback0http://m.shnenglu.com/dawnbreak/comments/commentRss/139598.htmlhttp://m.shnenglu.com/dawnbreak/services/trackbacks/139598.html  浠婂ぉ寮濮嬪涔?fàn)linux鍐呮牳緙栫▼浜嗭紝浠庢病鏈夊唴鏍哥紪紼嬪熀紜寮濮嬪璧楓傛墍浠ュ緢澶氱浉鍏崇殑鐭ヨ瘑閮借浜嗚В銆傞鍏堝氨鏄疉T&T姹囩紪璇█銆傚洜涓哄湪linux鍐呮牳婧愪唬鐮佷腑錛屽ソ鍍忛櫎浜嗗紑濮嬬殑bootsect.s鍜宧ead.s鏄敤intel鐨勬眹緙栧錛屽埆鐨勬眹緙栦唬鐮侀兘鏄敤鐨凙T&T姹囩紪璇█錛屾墍浠ユ湁蹇呰鎶夾T&T姹囩紪璇█浜嗚В涓涓嬨?/font>
涓嶈繃錛岀敱浜嶢T&T姹囩紪鍜宨ntel姹囩紪澶у悓灝忓紓錛屾墍浠ワ紝浜嗚В涓涓嬩竴浜涗笉鍚岀殑鍦版柟灝卞彲浠ヤ簡銆?/span>
 
   浠ヤ笅鐨勫唴瀹歸兘鏄疉T&T姹囩紪鐨勭壒鐐癸細(xì)
1銆佸瘎瀛樺櫒鍓嶉潰瑕佸姞“%”錛屽  mov %eax,%ebx
   榪欓噷瑕佹敞鎰忕殑涓鐐規(guī)槸錛孉T&T姹囩紪涓紝婧愬瘎瀛樺櫒鍜岀洰鐨勫瘎瀛樺櫒鐨勯『搴忓拰intel姹囩紪鍒氬ソ鐩稿弽錛孉T&T姹囩紪涓紝宸﹁竟鐨勬槸婧愬瘎瀛樺櫒錛屽彸杈圭殑鏄洰鐨勫瘎瀛樺櫒錛屽湪涓婅竟閭d釜渚嬪瓙涓紝%eax鏄簮瀵勫瓨鍣紝%ebx鏄洰鐨勫瘎瀛樺櫒銆?/span>
 
2銆佺珛鍗蟲暟/甯告暟鍓嶉潰瑕佸姞$錛屽  mov $4,%ebx 鎶?榪欎釜鏁拌鍏bx榪欎釜瀵勫瓨鍣ㄣ?/span>
   絎﹀彿甯告暟鐩存帴鐢紝 濡?nbsp; mov  value,%eax 鍗蟲妸value浠h〃鐨勯偅涓艱鍏ax瀵勫瓨鍣ㄣ?/span>
                     mov $value,%eax 鍗蟲妸value鐨勫間綔涓哄湴鍧錛岃屾妸瀵瑰簲閭d釜鍦板潃涓殑鍊艱鍏ax銆?/span>
 
3銆乥(byte):8浣嶏紝 w錛坵ord錛夛細(xì)16浣嶏紝 l錛坙ong錛夛細(xì)32浣?/span>
   濡傦細(xì)  movb %al,%bl     movw %ax,%bx     movl %eax,%ebx
 
4銆乯um/call鐨勬搷浣滄暟鍓嶈鍔犱笂“*"浣滀負(fù)鍓嶇紑錛?榪滆煩杞琹jmp錛岃繙璋冪敤lcall
   濡?nbsp; ljmp $section,$offset
       lcall $section,$offset
   榪欓噷$section鍜宱ffset琛ㄧず鐨勫氨鏄紝浠ection涓烘鍦板潃錛宱ffset涓烘鍐呭亸縐誨湴鍧銆傚洜姝わ紝ljmp $section,$offset鍗寵煩杞埌section:offset鍦板潃銆?/span>
 
5銆佽繙榪斿洖lret
   濡?nbsp; lret $stack_adjust
 
6銆佸鍧鏂瑰紡
   瀵勫瓨鍣ㄩ棿鎺ュ鍧 AT&T: (%eax)  Intel: [eax]  

   琛ㄧず鏂瑰紡 section:disp(base,index,scale)

   璁$畻鏂規(guī)硶 base+index*scale+disp
        鍗?section:[base+index*scale+disp]
   鍏朵腑disp鏄〃紺哄亸縐誨湴鍧銆?/span>
   濡?nbsp; movl -4(%ebp),%eax  鎶奫%ebp-4]鐨勫唴瀹硅鍏ax

   鍙樺潃瀵誨潃  AT&T: _variable(%eax)  Intel: [eax + _variable]

銆銆銆銆銆  AT&T: _array(,%eax,4)  Intel: [eax*4 + _array]
銆銆銆銆     AT&T: _array(%ebx,%eax,8)  Intel: [ebx + eax*8 + _array]   
 
7銆丆璇█涓祵鍏ユ眹緙?/span>
   鏍煎紡: _asm_("asm statements":outputs:inputs:registers-modified)
   鍏朵腑錛?asm statements"鏄眹緙栬鍙ヨ〃杈懼紡錛宱utputs,inputs,register-modified閮芥槸鍙夊弬鏁幫紝浠ュ啋鍙烽殧寮錛屼笖涓嬈′互0锝?緙栧彿錛屽outputs鐨勫瘎瀛樺櫒鏄?鍙鳳紝inputs瀵勫瓨鍣ㄦ槸1鍙鳳紝寰鍚庝緷嬈$被鎺ㄣ俹utputs鏄眹緙栬鍙ユ墽琛屽畬鍚庤緭鍑哄埌鐨勫瘎瀛樺櫒錛宨nputs鏄緭鍏ュ埌鏌愪釜瀵勫瓨鍣ㄣ?/span>
   渚?錛歘asm_("pushl %%eax\n\t" "movl $0,%%eax\n\t" "popl %%eax");
   鍦ㄥ祵鍏ユ眹緙栦腑錛屽瘎瀛樺櫒鍓嶉潰瑕佸姞涓や釜%錛屽洜涓篻cc鍦ㄧ紪璇戞槸錛屼細(xì)鍏堝幓鎺変竴涓?鍐嶈緭鍑烘垚姹囩紪鏍煎紡銆?/span>
   渚?錛歿 register char _res;\
         asm("push %%fs\n\t"
         "movw %%ax,%%fs\n\t"
         "movb %%fs:%1,%%al\n\t"
         "pop %%fs"
         :"=a"(_res):"0"(seg),"m"(*(addr)));\
         _res;}
    movb %%fs:%1,%%al\n\t涓鍙ヤ腑鏄妸浠s涓烘鍦板潃錛屼互鍚庨潰鐨勭浜屽彿瀵勫瓨鍣ㄥ嵆鍚庨潰鐨剆eg涓殑鍊間負(fù)鍋忕Щ鍦板潃鎵瀵瑰簲鐨勫艱鍏l銆?=a"(_res):"0"(seg),"m"(*(addr)))涓鍙ヤ腑錛?=a"(_res)琛ㄧず鎶奱瀵勫瓨鍣ㄤ腑鐨勫唴瀹圭粰_res錛?0"(seg)琛ㄧず鎶妔eg涓殑鍐呭緇?鎵瀵瑰簲鐨勫瘎瀛樺櫒錛岃?鍗寵〃紺轟嬌鐢ㄥ拰鍓嶄竴涓瘎瀛樺櫒鐩稿悓鐨勫瘎瀛樺櫒錛岃繖閲屽嵆浣跨敤a瀵勫瓨鍣紝涔熷氨鏄鎶妔eg涓殑鍐呭涓猘瀵勫瓨鍣ㄣ?/span>
   闇瑕佽В閲婁互涓嬬殑鏄紝a,b,c,d鍒嗗埆琛ㄧず瀵勫瓨鍣╡ax錛宔bx錛宔cx錛宔dx
                  S錛孌鍒嗗埆琛ㄧず瀵勫瓨鍣╡si錛宔di
                  r琛ㄧず浠繪剰瀵勫瓨鍣?/span>
                  0錛堟暟瀛?錛屼笉鏄痮錛侊級(jí)琛ㄧず浣跨敤涓婁竴涓瘎瀛樺櫒


pear_li 2011-01-29 22:51 鍙戣〃璇勮
]]>
娣卞叆鍒嗘瀽浠誨姟鍒囨崲涓庡爢鏍?http://m.shnenglu.com/dawnbreak/articles/139597.htmlpear_lipear_liSat, 29 Jan 2011 14:50:00 GMThttp://m.shnenglu.com/dawnbreak/articles/139597.htmlhttp://m.shnenglu.com/dawnbreak/comments/139597.htmlhttp://m.shnenglu.com/dawnbreak/articles/139597.html#Feedback0http://m.shnenglu.com/dawnbreak/comments/commentRss/139597.htmlhttp://m.shnenglu.com/dawnbreak/services/trackbacks/139597.html
鍏抽敭瀛楋細(xì)鏃墮棿涓柇銆佷換鍔″垏鎹€佸爢鏍堛丩INUX0.01

寮曡█錛?

浠誨姟鍒囨崲涓庡爢鏍堢殑鍏崇郴鎬庢牱錛熷緢澶氭湅鍙嬪彲鑳戒笉鐭ラ亾濂逛滑涔嬮棿鏈変粈涔堝叧緋伙紝榪樻湁涓浜涙湅鍙嬪彲鑳借涓轟粬浠箣闂翠笉浼?xì)鏈夊お澶х殑鍏尘p伙紙鏂囩尞4錛夈傝屾垜璁や負(fù)錛氫換鍔″垏鎹㈣窡鍫嗘爤鏈夌潃瀵嗗垏鐨勫叧緋伙紒涓嬮潰鏄垜瀵瑰畠浠箣闂村叧緋昏繘琛岀殑鎺㈣錛岃繖閲岀殑浠誨姟鍒囨崲鎴戞寚鐨勬槸鍙戠敓鏃墮棿涓柇鏃惰繘琛屽己鍒惰皟搴﹀彂鐢熺殑浠誨姟鍒囨崲錛屾墍浠ヤ笅闈㈣冭檻鍫嗘爤鏃舵垜鏄粠涓柇寮濮嬫帰璁ㄧ殑銆傚綋鐒?dòng)灱屾垜鍦q涜榪欐柟闈㈠垎鏋愮殑鏃跺欙紝涔熸剤鎰熷畠浠殑澶嶆潅鎬э紝閿欒涔嬪鍦ㄦ墍闅懼厤錛屾湜鍚勪綅鏈嬪弸澶氬鎸囨銆傚緩璁鑰呮按騫籌細(xì)* * *


涓銆佹椂闂翠腑鏂?

鍋囪涓涓繘紼嬪湪鐢ㄦ埛絀洪棿鎵ц鏃訛紙榪欐椂CPL=3錛夛紝鍙戠敓浜嗘椂闂翠腑鏂傝繖鏃剁殑涓柇澶勭悊榪囩▼涓猴紙鏂囩尞1錛歅438錛夛細(xì)
1銆佹牴鎹腑鏂悜閲忓彿鎵懼埌涓柇闂ㄦ弿榪扮錛?
2銆佷粠鎻忚堪絎︿腑鍒嗚В鍑洪夋嫨瀛愩佸亸縐婚噺銆佸睘鎬у瓧孌靛茍榪涜鐩稿簲鐨勭壒鏉冩鏌ワ紱
3銆佹牴鎹弿榪扮綾誨瀷杞叆鐩稿簲涓柇澶勭悊紼嬪簭涓幓鎵ц銆?
濂借薄澶偆嫻呬簡涓浜涳紵鍐嶇湅鐪嬶紙鏂囩尞1錛歅439鍥?0.20錛夛細(xì)
1銆侀夋嫨瀛愪負(fù)絀猴紵no緇х畫錛?
2銆佸彇寰楀搴旀弿榪扮錛涳紙鎻忚堪絎︿腑DPL灞炴у簲璇ヤ負(fù)0錛屾枃鐚?涓柇鍚戦噺鍒濆鍖栭儴鍒嗭級(jí)
3銆佸瓨鍌ㄦ鎻忚堪絎︼紵yes緇х畫錛?
4銆侀潪涓鑷翠唬鐮佹涓擠PL<CPL涓旀瀛樺湪錛焬es緇х畫錛涙牴鎹亣璁綜PL=3錛孌PL=0錛屾墍浠ュ埌5錛?
5銆佸垏鎹㈡垚鍐呭眰鍫嗘爤錛?
濡備綍鍒囨崲錛燂紵鍥犱負(fù)涓涓繘紼嬫湁鐢ㄦ埛絀洪棿鍫嗘爤鍜岀郴緇熺┖闂達(dá)紙涔熷彨鍐呮牳絀洪棿錛夊爢鏍堬紝鐢ㄦ埛絀洪棿鍫嗘爤鍦ㄥ摢鍎挎垜涓嶇錛屽畠搴旇鏄敱璇ヨ繘紼嬬殑浠誨姟鐘舵佹TSS涓璖S2鎸囧畾錛孲S0鎸囧畾緋葷粺絀洪棿鍫嗘爤錛屽畠鍜岃榪涚▼浠誨姟緇撴瀯task_struct鍏卞崰涓欏電┖闂達(dá)紙瑙佹枃鐚?:sched.c錛夈傛墍浠ヨ繖閲岀殑鍒囨崲鎴愬唴灞傚爢鏍堝簲璇ユ槸灝嗚榪涚▼鐨凾SS涓璖S0鐨勫艱祴緇橲S瀵勫瓨鍣ㄣ?
6銆佷嬌RPL=0錛?
7銆佹妸鎻忚堪絎﹁鍏S錛?
8銆佸叆鍙e亸縐昏秺鐣岋紵no緇х畫錛?
9銆丒FLAG銆丆S銆丒IP鍏ユ爤錛涘懙錛屽紑濮嬫爤鐨勬敼鍙樹簡鍝燂紒
10銆乀F=0銆丯T=0銆両F=0錛涜繖閲岃冭檻鐨勬槸涓柇闂ㄣ?
11銆佽漿鍏ュ鐞嗙▼搴忋?

鍒ワ紝鍏堢湅鐪嬬幇鍦ㄧ殑鍫嗘爤鎯呭喌錛?

| 澶栧眰EIP |
| 澶栧眰CS |
| EFLAG |
| 澶栧眰ESP |
| 澶栧眰SS |
-----------
榪欎釜鏍堝湪浠涔堝湴鏂瑰憿錛熻繖鐩稿綋閲嶈錛佽繖鏄湪褰撳垵鍒囨崲鑷沖唴灞傚爢鏍堟椂榪涜鐨勶紝鍗沖凡緇忓埌浜嗗綋鍓嶈繘紼嬬殑緋葷粺絀洪棿鍫嗘爤錛屼篃灝辨槸璺焧ask_struct鍏卞崰涓欏電殑閭d釜鍫嗘爤銆傝岃繖閲屼繚瀛樼殑灝辨槸璇ヨ繘紼嬪湪鐢ㄦ埛絀洪棿鐨勫爢鏍堝拰浠g爜淇℃伅錛屼互渚夸腑鏂畬鎴愬悗鎭㈠榪涚▼鎵ц銆?

浜屻佷腑鏂鐞嗙▼搴忋?
榪欓噷鎸囩殑鏄椂闂翠腑鏂傦紙鏂囩尞3錛歴ystem_call.c: timer_interrupt:錛?

timer_interrupt:
1. push %ds
2. push %es
3. push %fs
4. pushl %edx
5. pushl %ecx
6. pushl %ebx
7. pushl %eax
8. movl $0x10,%eax
9. mov %ax,%ds
10. mov %ax,%es
11. movl $0x17,%eax
12. mov %ax,%fs
13. incl jiffies
14. movb $0x20,%al
15. outb %al,$0x20
16. movl CS(%esp),%eax
17. andl $3,%eax
18. pushl %eax
19. call do_timer
20. andl $4,%esp
21. jmp ret_from_sys_call

1-7琛屼負(fù)鍘嬫爤鎿嶄綔錛岃繖鏄垜浠墍鍏沖績鐨勶紒16-18鍗蟲槸灝咰PL錛圕PL=CS&3錛夊帇鏍堬紝鐩殑鏄敤浜巇o_tiemr(long cpl)鍑芥暟銆傞偅涔堝湪鎵ц鍒癲o_timer閲岄潰鏃剁殑鍫嗘爤鎬庝箞鏍峰憿錛熺湅鐪嬶細(xì)


|榪斿洖鍦板潃 |
-----------
| CPL |
| eax |
| ebx |
| ecx |
| edx |
| fs |
| es |
| ds |
-----------
| 澶栧眰EIP |
| 澶栧眰CS |
| EFLAG |
| 澶栧眰ESP |
| 澶栧眰SS |
-----------

涓婇潰鐨勮繑鍥炲湴鍧褰撶劧灝辨槸璋冪敤do_timer鍚庣殑閭f潯璇彞錛屽嵆20琛岀殑andl $4,%esp璇彞銆傞偅涔堟槸涓嶆槸do_timer鍑芥暟鎵ц瀹屽氨榪斿洖鍒拌繖鍎垮憿錛屼篃鏄紝褰撶劧瑕佸鏉傚緱澶氾紝鍥犱負(fù)鍦╠o_timer()鍑芥暟涓皟鐢ㄤ簡schedule()騫朵笖鍙戠敓浜嗕換鍔″垏鎹紒鍝庯紝濂介夯鐑?chǔ)锛屼篃涓嶇煡閬撲粈涔堟椂鍊欐墠鑳借繑鍥炲埌榪欏効鏉ュ憿錛岃繕鏄竴姝ヤ竴姝ユ潵鐪嬪惂銆?

涓夈乨o_timer()錛堟枃鐚?錛歴ched.c: do_timer()錛?

void do_timer(long cpl)
{
...
if ((--current->counter)>0) return;
current->counter=0;
if(!cpl)return;
schedule();
}

鐪佺暐鍙蜂負(fù)鏃犲叧绱ц鐨勪袱鏉¤鍙ワ紝榪涜榪涚▼鐨勮鏃躲傚鏋滄椂闂寸墖娌℃湁鐢ㄥ畬(counter>0)鎴朇PL涓?錛屼笉鍙戠敓璋冨害鐩存帴榪斿洖錛屽綋鐒惰繖閲屼篃涓嶆槸灝辯洿鎺ヨ繑鍥炲埌浠ュ墠鎵ц鐨勮繘紼嬬┖闂達(dá)紝鑰屾槸榪斿洖鍒癲o_timer()涓紝娉ㄦ剰寮濮嬬殑榪斿洖鍦板潃錛岀劧鍚庡啀閫氳繃iret鎸囦護(hù)浠庝腑鏂鐞嗚繑鍥炲埌榪涚▼涓幓銆傚綋鐒?dòng)灱屾犚?guī)嵁鎴戜滑鐨勫亣璁撅紝榪欏効CPL搴旇涓?錛屽洜涓烘槸鍦ㄧ敤鎴風(fēng)┖闂村彂鐢熶腑鏂殑銆傛垜浠浠庢渶澶嶆潅鐨勬儏鍐墊潵璁ㄨ榪欎釜闂銆傚ソ浜嗭紝灝辮鎴戜滑榪涘叆鍒頒腑蹇冪偣鍚э紝璇瘋繘schedule()銆?

鍥涖乻chedule()銆?錛堟枃鐚?錛歴ched.c: schedule()錛?

void schedule(void )
{
int next;
...
switch_to(next);
}

鍛碉紝榪欓噷鎴戝張鐪佺暐浜嗗嚑鍙ヤ唬鐮侊紝瀹冩墽琛岀殑鏄皟搴︾畻娉曪紝鍗充粠鎵鏈夌姸鎬佷負(fù)‘榪愯’鐨勮繘紼嬩腑鎵懼嚭涓嬩竴涓鎵ц鐨勮繘紼嬶紝鐒跺悗灝嗙紪鍙瘋祴緇檔ext銆傝繘琛屽垏鎹紒

switch_to()鏄竴涓畯錛屽畠鍦紙鏂囩尞3錛?sched.h錛変腑瀹氫箟錛?

#define switch_to(n) { \
struct (long a,b;} __tmp; \
__asm__("cmpl %%ecx,current \n\t" \
"je 1f\n\t" \
"xchgl %%ecx, current\n\t" \
"movw %%dx, %1\n\t" \
"ljmp *%0\n\t" \
"cmpl %%ecx, %2\n\t" \
"jne 1f\n\t" \
"clts\n" \
"1:" \
::"m" (*&__tmp.a), "m" (*&__tmp.b), \
"m" (last_task_used_math),"d" _TSS(n), "c" ((long) task[n])); \
}

榪欐槸浠誨姟鍒囨崲鐨勫叧閿唬鐮侊紝鍘熺悊鏄洿鎺ラ氳繃TSS鏉ヨ繘琛屼換鍔$殑鍒囨崲錛堟枃鐚?錛歅420錛夈傞偅鎴戝氨灝嗚繖孌靛叧閿唬鐮侀愯瑙h涓涓嬪惂銆俢mpl %%ecx, current錛屾瘮杈冧換鍔鏄笉鏄綋鍓嶈繘紼嬶紝濡傛灉鏄綋鐒跺氨涓嶇敤鍒囨崲浜嗭紝鐩存帴緇撴潫schedule()銆倄chgl %%ecx,current錛宑urrent鎸囬拡鎸囧悜浠誨姟n鐨勪換鍔$粨鏋勶紝ecx瀵勫瓨鍣ㄤ繚瀛樺綋鍓嶈繘紼嬬殑浠誨姟緇撴瀯鎸囬拡銆俶ovw %%dx, %1錛?浣縚_tmp.b=‘GDT涓n涓換鍔$殑TSS閫夋嫨瀛?#8217;錛屾敞鎰廮TSS(n)鏄眰閫夋嫨瀛愮殑瀹忥紒ljmp *%0錛岃繖鍙ヤ唬鐮佸氨鏄湡姝g殑浠誨姟鍒囨崲緗楋紝 AT&T璇硶鐨刲jmp鐩稿綋浜嶪NTEL鐨刯mp far SECTION:OFFSET鎸囦護(hù)鏍煎紡錛屽畠鐨勭粷瀵瑰湴鍧鍓嶅姞*鍙楓傝繖閲屽紩鐢紙鏂囩尞1錛歅420錛変竴孌佃瘽錛氬綋孌甸棿杞Щ鎸囦護(hù)JMP鎵鍚寚閽堢殑閫夋嫨瀛愭寚紺轟竴涓彲鐢ㄤ換鍔$姸鎬佹TSS鎻忚堪絎︽椂錛屾甯告儏鍐典笅灝卞彂鐢熶粠褰撳墠浠誨姟鍒扮敱璇ュ彲鐢ㄤ換鍔$殑鍒囨崲銆傜洰鏍囦換鍔$殑鍏ュ彛鐐圭敱鐩爣浠誨姟TSS鍐呯殑CS鍜孍IP瀛楁鎵瑙勫畾鐨勬寚閽堢‘瀹氾紝榪欐牱鐨凧MP鎸囦護(hù)鍐呯殑鍋忕Щ琚涪寮冦傚啀鍏蜂綋鐨勪換鍔″垏鎹綘涔熻寰楃炕緲伙紙鏂囩尞1錛歅421錛夛紝榪欓噷鎴戝彧璁叉湁鍏沖爢鏍堢殑澶勭悊錛岄偅灝辨槸鎶婂瘎瀛樺櫒鐜板満淇濆瓨鍒板綋鍓嶄換鍔$殑TSS銆傛妸閫氱敤瀵勫瓨鍣ㄣ佹瀵勫瓨鍣ㄣ丒IP鍙?qiáng)EFLAGS鐨勫綋鍓嶅間繚瀛樺埌褰撳墠鐨凾SS涓備繚瀛樼殑EIP鐨勫兼槸榪斿洖鍦板潃錛屾寚鍚戝紩璧蜂換鍔″垏鎹㈡寚浠ょ殑涓嬩竴鏉℃寚浠わ紱鎭㈠鐩爣浠誨姟鐨勫瘎瀛樺櫒鐜板満錛屾牴鎹繚瀛樺湪TSS涓殑鍐呭鎭㈠鍚勯氱敤瀵勫瓨鍣ㄣ佹瀵勫瓨鍣ㄣ丒FLAG銆丒IP銆傚ソ浜嗭紝鍩烘湰姒傚康灝卞紩鐢ㄨ繖涔堝錛岄偅涔堬紝鍒氭墠鎻愬埌鐨勮繘紼嬮┈涓婅琚垏鎹㈠嚭鍘諱簡錛屽畠淇濆瓨TSS涓璄IP鏄粈涔堝憿錛熸樉鐒?dòng)灱屾犚?guī)嵁鍒氭墠鐨勫垎鏋愬簲璇ユ槸cmpl %%ecx, %2榪欐潯鎸囦護(hù)銆傝繖鎰忓懗鐫浠涔堝憿錛熻繖灝辨槸璇達(dá)紝濡傛灉涓嬫榪欎釜浠誨姟瑕佽鍒囨崲鎴愯繍琛岀姸鎬佹椂錛屽畠?yōu)畣浠巆mpl %%ecx, %2榪欐潯鎸囦護(hù)寮濮嬫墽琛岋紒閭d箞錛岀敱褰間換鍔℃帹鍒版浠誨姟錛屼篃灝辨槸璇存垜浠垏鎹㈣嚦浠誨姟next鏃訛紝瀹冧篃鏄粠榪欐潯鎸囦護(hù)寮濮嬫墽琛岀殑錛佷簬鏄垜浠繘鍏ュ埌浠誨姟next鐨勫爢鏍堢┖闂達(dá)紝騫跺紑濮嬫墽琛岋紝浣嗙敱浜庝換鍔ext鍜屽綋鍓嶇殑浠誨姟鏈夌潃鐩稿悓鐨勫爢鏍堣礬寰勶紙榪欏拰LINUX涓殑鍐呮牳鎺у埗璺緞鏄笉鏄竴鍥炰簨鍛紵錛夛紝鎵浠ユ垜浠繕鏄紩鐢ㄥ綋鍓嶇殑鍫嗘爤鏉ョ戶緇垎鏋愩?
鍝︼紝鏈夌偣緋婃秱浜嗭紝濂借薄鏄備紤鎭竴涓嬶紝鍐嶅弬鑰冧竴涓嬶紙鏂囩尞2錛氫笂鍐孭373錛夈備笓瀹朵篃鏄繖鏍瘋鐨?)
瑕佷笉錛屾垜浠繖涔堢悊瑙o紝鍒氭墠琚腑鏂殑榪涚▼鍙戠敓浜嗗己鍒惰皟搴︼紝涓斾篃鍙戠敓浜嗕換鍔″垏鎹紝鍙笉榪囨槸鍒囨崲鍒板畠鑷繁錛屽疄闄呬笂涓嶆槸鍝熴傚ソ鍚э紝JMP鎴愬姛錛屽紑濮嬫墽琛屻?

浜斻佽漿鎶樼偣錛屼粠schedule()榪斿洖銆?

cmpl %%ecx, %2錛沯ne 1f; clts;1: 榪欏嚑鍙ユ槸涓庡崗澶勭悊鍣ㄦ湁鍏籌紝榪樻湁TS鏍囧織錛屾垜浠氨鐩存帴鍒?錛氬惂錛屽紑濮嬩粠schedule()榪斿洖錛屾敞鎰弒witch_to()鏄畯錛屽畠鍦╯chedule()鏈銆傝繑鍥炲埌鍝効鍘諱簡鍛紵璺熻釜涓涓嬶紝鐪嬬湅涓婇潰鐨勫爢鏍堢ず鎰忓浘錛岃繑鍥炲湴鍧灝辨槸璋冪敤do_timer鍚庣殑閭f潯璇彞錛?
addl $4, %esp
jmp ret_from_sys_call
榪欏効esp鍔?灝辨槸鎶婂爢鏍堜腑鐨凜PL鍘繪帀錛屽洜涓烘垜浠笉鐢ㄤ簡錛岃煩杞埌ret_from_sys_call銆傚摝錛屽墿涓嬬殑澶勭悊涓庣郴緇熻皟鐢ㄨ繑鍥炲叡鐢ㄤ唬鐮併?

鍏乺et_from_sys_call 錛堟枃鐚?錛宬ernel/system_call.s錛?
鍏堢湅鐪嬫垜浠殑鐒︾偣錛屽爢鏍堟庝箞鏍蜂簡鍛紵

| eax |
| ebx |
| ecx |
| edx |
| fs |
| es |
| ds |
-----------
| 澶栧眰EIP |
| 澶栧眰CS |
| EFLAG |
| 澶栧眰ESP |
| 澶栧眰SS |
-----------

ret_from_sys_call:
movel current, %eax
cmpl task, %eax
je 3f
movl CS(%esp), %ebx
testl $3, %ebx
je 3f
cmpw $0x17, OLDSS(%esp)
jne 3f
2:
....
3:
popl %eax
popl %ebx
popl %ecx
popl %edx
pop %fs
pop %es
pop %ds
iret

2鏍囧彿澶勬垜鐪佺暐浜嗕竴浜涙湁鍏充俊鍙峰強(qiáng)鍏跺畠涓浜涘鐞嗐傝鎴戜滑鍒嗘瀽涓涓嬶紝濡傛灉褰撳墠浠誨姟鏄?鍙瘋繘紼嬶紝鎴栨槸浠誨姟鍏堝墠鐨凜PL涓?錛堝嵆鐢ㄦ埛鎬侊級(jí)錛屾垨鏄換鍔″厛鍓嶇殑鍫嗘爤孌典負(fù)LDT涓寚瀹氱殑鍫嗘爤錛孞MP鍒?鏍囧彿澶勩傜敱鍏堝墠鐨勫亣璁懼彲鐭ワ紝姝や換鍔$殑CPL涓?錛岄偅灝辮煩鍚с傛妸eax, ebc, ecx, edx, fs, es, ds瀵勫瓨鍣ㄤ粠鍫嗘爤涓仮澶嶅嚭鏉ャ?
鐜板湪鍫嗘爤濡備笅錛?

| 澶栧眰EIP |
| 澶栧眰CS |
| EFLAG |
| 澶栧眰ESP |
| 澶栧眰SS |
-----------
璁板緱鎴戜滑榪樻湁鏈鍚庝竴鏉¤鍙ュ摕錛宨ret銆傝繖鏉℃寚浠ゅぇ瀹舵兂蹇呭凡緇忓緢鐔熸?zhèn)変簡锛屽畠鎭㈠EIP銆丆S銆丒FLAG銆丒SP銆丼S銆傝寰椾笉錛岃繖鏄笉鏄凡緇忔仮澶嶅埌浜嗘渶鍒濈殑鏃墮棿涓柇鏃惰繘紼嬭涓柇鐨勯偅涓鍒伙紵鎭枩錛佷綘緇堜簬鍙互緇х畫鍋氫綘闇瑕佸仛鐨勪簨鎯呬簡錛佸皬蹇冿紝榪樻湁涓嬩竴涓椂闂翠腑鏂紝鍝︼紝浣犱笉鎬曪紵鍥犱負(fù)瀹冧笉浼?xì)濯?jiǎng)鍝嶄綘鐨勮繛璐с?

緇撴潫璇細(xì)
鎴戜滑璧拌繃浜嗕竴孌佃壈杈涚殑鍘嗙▼錛屼絾鎴戜滑璧扮殑鏄竴孌佃繎涔庣洿綰跨殑璺緞錛屽茍娌℃湁鍒嗘瀽鍒板叾瀹冨悇涓柟闈㈢殑鎯呭喌銆備笉榪囨垜鐩鎬俊錛岄氳繃榪欐璺▼錛屼細(xì)璁╂垜浠浜庝換鍔″垏鎹㈡満鍒舵湁涓涓洿娣卞叆鐨勮璇嗐傚笇鏈涘澶у鏈夋墍甯姪錛岃繖涔熸槸鎴戝啓鍑烘潵涓庡ぇ瀹跺垎浜殑緙樻晠銆?

鍙傝冩枃鐚細(xì)
1銆?0X86姹囩紪璇█紼嬪簭璁捐鏁欑▼ 鏉ㄥ鏂囩紪钁?娓呭崕澶у鍑虹増紺?
2銆丩INUX鍐呮牳婧愪唬鐮佹儏鏅垎鏋?姣涘痙鎿?鑳″笇鏄庤憲 嫻欐睙澶у鍑虹増紺?
3銆丩INUX0.01婧愪唬鐮?
4銆乭ttp://www.linuxforum.net/ LINUX鍐呮牳鍒嗘瀽-->綺懼崕綃?->榪涚▼璋冨害



pear_li 2011-01-29 22:50 鍙戣〃璇勮
]]>
ARM瀵勫瓨鍣ㄤ粙緇?http://m.shnenglu.com/dawnbreak/articles/101346.htmlpear_lipear_liWed, 18 Nov 2009 13:55:00 GMThttp://m.shnenglu.com/dawnbreak/articles/101346.htmlhttp://m.shnenglu.com/dawnbreak/comments/101346.htmlhttp://m.shnenglu.com/dawnbreak/articles/101346.html#Feedback0http://m.shnenglu.com/dawnbreak/comments/commentRss/101346.htmlhttp://m.shnenglu.com/dawnbreak/services/trackbacks/101346.html闃呰鍏ㄦ枃

pear_li 2009-11-18 21:55 鍙戣〃璇勮
]]>
linux 椹卞姩瀛︿範(fàn)鏃ュ織http://m.shnenglu.com/dawnbreak/articles/101254.htmlpear_lipear_liTue, 17 Nov 2009 13:53:00 GMThttp://m.shnenglu.com/dawnbreak/articles/101254.htmlhttp://m.shnenglu.com/dawnbreak/comments/101254.htmlhttp://m.shnenglu.com/dawnbreak/articles/101254.html#Feedback0http://m.shnenglu.com/dawnbreak/comments/commentRss/101254.htmlhttp://m.shnenglu.com/dawnbreak/services/trackbacks/101254.html/proc/devices 鍙幏鐭ョ郴緇熸敞鍐岀殑璁懼

pear_li 2009-11-17 21:53 鍙戣〃璇勮
]]>
ps -aux 榪涚▼鐘舵佹爣璇?/title><link>http://m.shnenglu.com/dawnbreak/articles/101225.html</link><dc:creator>pear_li</dc:creator><author>pear_li</author><pubDate>Tue, 17 Nov 2009 10:40:00 GMT</pubDate><guid>http://m.shnenglu.com/dawnbreak/articles/101225.html</guid><wfw:comment>http://m.shnenglu.com/dawnbreak/comments/101225.html</wfw:comment><comments>http://m.shnenglu.com/dawnbreak/articles/101225.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/dawnbreak/comments/commentRss/101225.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/dawnbreak/services/trackbacks/101225.html</trackback:ping><description><![CDATA[<p>PROCESS STATE CODES<br>       Here are the different values that the s, stat and state output<br>       specifiers (header "STAT" or "S") will display to describe the state of<br>       a process.<br>       D    Uninterruptible sleep (usually IO)<br>       R    Running or runnable (on run queue)<br>       S    Interruptible sleep (waiting for an event to complete)<br>       T    Stopped, either by a job control signal or because it is being<br>            traced.<br>       W    paging (not valid since the 2.6.xx kernel)<br>       X    dead (should never be seen)<br>       Z    Defunct ("zombie") process, terminated but not reaped by its<br>            parent.</p> <p>       For BSD formats and when the stat keyword is used, additional<br>       characters may be displayed:<br>       <    high-priority (not nice to other users)<br>       N    low-priority (nice to other users)<br>       L    has pages locked into memory (for real-time and custom IO)<br>       s    is a session leader<br>       l    is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)<br>       +    is in the foreground process group<br></p> <img src ="http://m.shnenglu.com/dawnbreak/aggbug/101225.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/dawnbreak/" target="_blank">pear_li</a> 2009-11-17 18:40 <a href="http://m.shnenglu.com/dawnbreak/articles/101225.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>kmalloc vmallochttp://m.shnenglu.com/dawnbreak/articles/101219.htmlpear_lipear_liTue, 17 Nov 2009 09:18:00 GMThttp://m.shnenglu.com/dawnbreak/articles/101219.htmlhttp://m.shnenglu.com/dawnbreak/comments/101219.htmlhttp://m.shnenglu.com/dawnbreak/articles/101219.html#Feedback0http://m.shnenglu.com/dawnbreak/comments/commentRss/101219.htmlhttp://m.shnenglu.com/dawnbreak/services/trackbacks/101219.html鍦ㄨ澶囬┍鍔ㄧ▼搴忎腑鍔ㄦ佸紑杈熷唴瀛橈紝涓嶆槸鐢╩alloc錛岃屾槸kmalloc錛屾垨鑰呯敤get_free_pages鐩存帴鐢寵欏點(diǎn)傞噴鏀懼唴瀛樼敤鐨勬槸kfree錛屾垨free_pages.

   瀵逛簬鎻愪緵浜哅MU錛堝瓨鍌ㄧ鐞嗗櫒錛岃緟鍔╂搷浣滅郴緇熻繘琛屽唴瀛樼鐞嗭紝鎻愪緵铏氬疄鍦板潃杞崲絳夌‖浠舵敮鎸侊級(jí)鐨勫鐞嗗櫒鑰岃█錛孡inux鎻愪緵浜嗗鏉傜殑瀛樺偍綆$悊緋葷粺錛屼嬌寰楄繘紼嬫墍鑳借闂殑鍐呭瓨杈懼埌4GB銆?/p>

銆銆榪涚▼鐨?GB鍐呭瓨絀洪棿琚漢涓虹殑鍒嗕負(fù)涓や釜閮ㄥ垎--鐢ㄦ埛絀洪棿涓庡唴鏍哥┖闂淬傜敤鎴風(fēng)┖闂村湴鍧鍒嗗竷浠?鍒?GB(PAGE_OFFSET錛屽湪0x86涓畠絳変簬0xC0000000)錛?GB鍒?GB涓哄唴鏍哥┖闂淬?/p>

銆銆鍐呮牳絀洪棿涓紝浠?G鍒皏malloc_start榪欐鍦板潃鏄墿鐞嗗唴瀛樻槧灝勫尯鍩燂紙璇ュ尯鍩熶腑鍖呭惈浜嗗唴鏍擱暅鍍忋佺墿鐞嗛〉妗嗚〃mem_map絳夌瓑錛夛紝姣斿鎴戜滑浣跨敤鐨?VMware铏氭嫙緋葷粺鍐呭瓨鏄?60M錛岄偅涔?G锝?G+160M榪欑墖鍐呭瓨灝卞簲璇ユ槧灝勭墿鐞嗗唴瀛樸傚湪鐗╃悊鍐呭瓨鏄犲皠鍖轟箣鍚庯紝灝辨槸vmalloc鍖哄煙銆傚浜?160M鐨勭郴緇熻岃█錛寁malloc_start浣嶇疆搴斿湪3G+160M闄勮繎錛堝湪鐗╃悊鍐呭瓨鏄犲皠鍖轟笌vmalloc_start鏈熼棿榪樺瓨鍦ㄤ竴涓?M鐨刧ap 鏉ラ槻姝㈣穬鐣岋級(jí)錛寁malloc_end鐨勪綅緗帴榪?G(鏈鍚庝綅緗郴緇熶細(xì)淇濈暀涓鐗?28k澶у皬鐨勫尯鍩熺敤浜庝笓鐢ㄩ〉闈㈡槧灝?

銆銆銆銆銆kmalloc鍜実et_free_page鐢寵鐨勫唴瀛樹綅浜庣墿鐞嗗唴瀛樻槧灝勫尯鍩燂紝鑰屼笖鍦ㄧ墿鐞嗕笂涔熸槸榪炵畫鐨勶紝瀹冧滑涓庣湡瀹炵殑鐗╃悊鍦板潃鍙湁涓涓浐瀹氱殑鍋忕Щ錛屽洜姝ゅ瓨鍦ㄨ緝綆鍗曠殑杞崲鍏崇郴錛寁irt_to_phys()鍙互瀹炵幇鍐呮牳铏氭嫙鍦板潃杞寲涓虹墿鐞嗗湴鍧錛?br>   #define __pa(x) ((unsigned long)(x)-PAGE_OFFSET)
   extern inline unsigned long virt_to_phys(volatile void * address)
   {
       銆return __pa(address);
   }
涓婇潰杞崲榪囩▼鏄皢铏氭嫙鍦板潃鍑忓幓3G錛圥AGE_OFFSET=0XC000000錛夈?/p>

涓庝箣瀵瑰簲鐨勫嚱鏁頒負(fù)phys_to_virt()錛屽皢鍐呮牳鐗╃悊鍦板潃杞寲涓鴻櫄鎷熷湴鍧錛?br>   #define __va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET))
   extern inline void * phys_to_virt(unsigned long address)
   {
       銆return __va(address);
   }
virt_to_phys()鍜宲hys_to_virt()閮藉畾涔夊湪include\asm-i386\io.h涓?/p>

-------------------------------------------------------------------------------------
1銆乲malloc() 鍒嗛厤榪炵畫鐨勭墿鐞嗗湴鍧錛岀敤浜庡皬鍐呭瓨鍒嗛厤銆?

銆銆2銆乢_get_free_page() 鍒嗛厤榪炵畫鐨勭墿鐞嗗湴鍧錛岀敤浜庢暣欏靛垎閰嶃?

銆銆鑷充簬涓轟粈涔堣浠ヤ笂鍑芥暟鍒嗛厤鐨勬槸榪炵畫鐨勭墿鐞嗗湴鍧鍜岃繑鍥炵殑鍒板簳鏄墿鐞嗗湴鍧榪樻槸铏氭嫙鍦板潃錛屼笅闈㈢殑璁板綍浼?xì)鍋氬國櫑i噴銆?

銆銆kmalloc() 鍑芥暟鏈韓鏄熀浜?slab 瀹炵幇鐨勩俿lab 鏄負(fù)鍒嗛厤灝忓唴瀛樻彁渚涚殑涓縐嶉珮鏁堟満鍒躲備絾 slab 榪欑鍒嗛厤鏈哄埗鍙堜笉鏄嫭绔嬬殑錛屽畠鏈韓涔熸槸鍦ㄩ〉鍒嗛厤鍣ㄧ殑鍩虹涓婃潵鍒掑垎鏇寸粏綺掑害鐨勫唴瀛樹緵璋冪敤鑰呬嬌鐢ㄣ備篃灝辨槸璇寸郴緇熷厛鐢ㄩ〉鍒嗛厤鍣ㄥ垎閰嶄互欏典負(fù)鏈灝忓崟浣嶇殑榪炵畫鐗╃悊鍦板潃錛岀劧鍚?kmalloc() 鍐嶅湪榪欎笂闈㈡牴鎹皟鐢ㄨ呯殑闇瑕佽繘琛屽垏鍒嗐?

銆銆鍏充簬浠ヤ笂璁鴻堪錛屾垜浠彲浠ユ煡鐪?kmalloc() 鐨勫疄鐜幫紝kmalloc()鍑芥暟鐨勫疄鐜版槸鍦?__do_kmalloc() 涓紝鍙互鐪嬪埌鍦?__do_kmalloc()浠g爜閲屾渶緇堣皟鐢ㄤ簡 __cache_alloc() 鏉ュ垎閰嶄竴涓?slab錛屽叾瀹?

銆銆kmem_cache_alloc() 絳夊嚱鏁扮殑瀹炵幇涔熸槸璋冪敤浜嗚繖涓嚱鏁版潵鍒嗛厤鏂扮殑 slab銆傛垜浠寜鐓?__cache_alloc()鍑芥暟鐨勮皟鐢ㄨ礬寰勪竴鐩磋窡韙笅鍘諱細(xì)鍙戠幇鍦?cache_grow() 鍑芥暟涓嬌鐢ㄤ簡 kmem_getpages()鍑芥暟鏉ュ垎閰嶄竴涓墿鐞嗛〉闈紝kmem_getpages() 鍑芥暟涓皟鐢ㄧ殑alloc_pages_node() 鏈緇堟槸浣跨敤 __alloc_pages() 鏉ヨ繑鍥炰竴涓猻truct page 緇撴瀯錛岃岃繖涓粨鏋勬鏄郴緇熺敤鏉ユ弿榪扮墿鐞嗛〉闈㈢殑銆傝繖鏍蜂篃灝辮瘉瀹炰簡涓婇潰鎵璇寸殑錛宻lab 鏄湪鐗╃悊欏甸潰鍩虹涓婂疄鐜扮殑銆俴malloc() 鍒嗛厤鐨勬槸鐗╃悊鍦板潃銆?

銆銆__get_free_page() 鏄〉闈㈠垎閰嶅櫒鎻愪緵緇欒皟鐢ㄨ呯殑鏈搴曞眰鐨勫唴瀛樺垎閰嶅嚱鏁般傚畠鍒嗛厤榪炵畫鐨勭墿鐞嗗唴瀛樸俖_get_free_page() 鍑芥暟鏈韓鏄熀浜?buddy 瀹炵幇鐨勩傚湪浣跨敤 buddy 瀹炵幇鐨勭墿鐞嗗唴瀛樼鐞嗕腑鏈灝忓垎閰嶇矑搴︽槸浠ラ〉涓哄崟浣嶇殑銆傚叧浜庝互涓婅榪幫紝鎴戜滑鍙互鏌ョ湅__get_free_page()鐨勫疄鐜幫紝鍙互鐪嬪埌__get_free_page()鍑芥暟鍙槸涓涓潪甯哥畝鍗曠殑灝佺姸錛屽畠鐨勬暣涓嚱鏁板疄鐜板氨鏄棤鏉′歡鐨勮皟鐢?__alloc_pages() 鍑芥暟鏉ュ垎閰嶇墿鐞嗗唴瀛橈紝涓婇潰璁板綍 kmalloc()瀹炵幇鏃朵篃鎻愬埌榪囨槸鍦ㄨ皟鐢?__alloc_pages() 鍑芥暟鏉ュ垎閰嶇墿鐞嗛〉闈㈢殑鍓嶆彁涓嬭繘琛岀殑 slab 綆$悊銆傞偅涔堣繖涓嚱鏁版槸濡備綍鍒嗛厤鍒扮墿鐞嗛〉闈㈠張鏄湪浠涔堝尯鍩熶腑榪涜鍒嗛厤鐨勶紵鍥炵瓟榪欎釜闂鍙兘鐪嬩笅鐩稿叧鐨勫疄鐜般傚彲浠ョ湅鍒板湪 __alloc_pages() 鍑芥暟涓紝澶氭灝濊瘯璋冪敤get_page_from_freelist() 鍑芥暟浠?zonelist 涓彇寰楃浉鍏?zone錛屽茍浠庡叾涓繑鍥炰竴涓彲鐢ㄧ殑 struct page 欏甸潰錛堣繖閲岀殑鏈変簺璋冪敤鍒嗘敮鏄洜涓烘爣蹇椾笉鍚岋級(jí)銆傝嚦姝わ紝鍙互鐭ラ亾涓涓墿鐞嗛〉闈㈢殑鍒嗛厤鏄粠 zonelist錛堜竴涓?zone 鐨勭粨鏋勬暟緇勶級(jí)涓殑 zone 榪斿洖鐨勩傞偅涔?zonelist/zone 鏄浣曚笌鐗╃悊欏甸潰鍏寵仈錛屽張鏄浣曞垵濮嬪寲鐨勫憿錛熺戶緇潵鐪?free_area_init_nodes() 鍑芥暟錛屾鍑芥暟鍦ㄧ郴緇熷垵濮嬪寲鏃剁敱 zone_sizes_init() 鍑芥暟闂存帴璋冪敤鐨勶紝zone_sizes_init()鍑芥暟濉厖浜嗕笁涓尯鍩燂細(xì)ZONE_DMA錛孼ONE_NORMAL錛孼ONE_HIGHMEM銆傚茍鎶婁粬浠綔涓哄弬鏁拌皟鐢?free_area_init_nodes()錛屽湪榪欎釜鍑芥暟涓細(xì)鍒嗛厤涓涓?pglist_data 緇撴瀯錛屾緇撴瀯涓寘鍚簡 zonelist/zone緇撴瀯鍜屼竴涓?struct page 鐨勭墿鐞嗛〉緇撴瀯錛屽湪鍑芥暟鏈鍚庣敤姝ょ粨鏋勪綔涓哄弬鏁拌皟鐢ㄤ簡 free_area_init_node() 鍑芥暟錛屽湪榪欎釜鍑芥暟涓鍏堜嬌鐢?calculate_node_totalpages() 鍑芥暟鏍囪 pglist_data 鐩稿叧鍖哄煙錛岀劧鍚庤皟鐢?alloc_node_mem_map() 鍑芥暟鍒濆鍖?pglist_data緇撴瀯涓殑 struct page 鐗╃悊欏點(diǎn)傛渶鍚庝嬌鐢?free_area_init_core()鍑芥暟鍏寵仈 pglist_data 涓?zonelist銆傜幇鍦ㄩ氫互涓婂垎鏋愬凡緇忔槑紜簡__get_free_page() 鍑芥暟鍒嗛厤鐗╃悊鍐呭瓨鐨勬祦紼嬨備絾榪欓噷鍙堝紩鍑轟簡鍑犱釜鏂伴棶棰橈紝閭e氨鏄鍑芥暟鍒嗛厤鐨勭墿鐞嗛〉闈㈡槸濡備綍鏄犲皠鐨勶紵鏄犲皠鍒頒簡浠涔堜綅緗紵鍒拌繖閲屼笉寰椾笉鍘葷湅涓嬩笌 VMM 鐩稿叧鐨勫紩瀵間唬鐮併?

銆銆鍦ㄧ湅 VMM 鐩稿叧鐨勫紩瀵間唬鐮佸墠錛屽厛鏉ョ湅涓涓?virt_to_phys() 涓巔hys_to_virt 榪欎袱涓嚱鏁般傞【鍚嶆濅箟錛屽嵆鏄櫄鎷熷湴鍧鍒扮墿鐞嗗湴鍧鍜岀墿鐞嗗湴鍧鍒拌櫄鎷熷湴鍧鐨勮漿鎹€傚嚱鏁板疄鐜板崄鍒嗙畝鍗曪紝鍓嶈呰皟鐢ㄤ簡__pa( address ) 杞崲铏氭嫙鍦板潃鍒扮墿鐞嗗湴鍧錛屽悗鑰呰皟鐢?__va(addrress ) 灝嗙墿鐞嗗湴鍧杞崲涓鴻櫄鎷熷湴鍧銆傚啀鐪嬩笅 __pa __va 榪欎袱涓畯鍒板簳鍋氫簡浠涔堛?

銆銆#define __pa(x) ((unsigned long)(x)-PAGE_OFFSET)
銆銆#define __va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET))

銆銆閫氳繃涓婇潰鍙互鐪嬪埌浠呬粎鏄妸鍦板潃鍔犱笂鎴栧噺鍘?PAGE_OFFSET錛岃孭AGE_OFFSET 鍦?x86 涓嬪畾涔変負(fù) 0xC0000000銆傝繖閲屽張寮曞嚭浜嗙枒闂紝鍦?linux 涓嬪啓榪?driver 鐨勪漢閮界煡閬擄紝鍦ㄤ嬌鐢?kmalloc() 涓?

銆銆__get_free_page() 鍒嗛厤瀹岀墿鐞嗗湴鍧鍚庯紝濡傛灉鎯沖緱鍒版紜殑鐗╃悊鍦板潃闇瑕佷嬌鐢?virt_to_phys() 榪涜杞崲銆傞偅涔堜負(fù)浠涔堣鏈夎繖涓姝ュ憿錛熸垜浠笉鍒嗛厤鐨勪笉灝辨槸鐗╃悊鍦板潃涔堬紵鎬庝箞鍒嗛厤瀹屾垚榪橀渶瑕佽漿鎹紵濡傛灉榪斿洖鐨勬槸铏氭嫙鍦板潃錛岄偅涔堟牴鎹涓婂 virt_to_phys() 鐨勫垎鏋愶紝涓轟粈涔堜粎浠呭 PAGE_OFFSET 鎿嶄綔灝辮兘瀹炵幇鍦板潃杞崲鍛紵铏氭嫙鍦板潃涓庣墿鐞嗗湴鍧涔嬮棿鐨勮漿鎹笉闇瑕佹煡欏佃〃涔堬紵浠g潃浠ヤ笂璇稿鐤戦棶鏉ョ湅 VMM 鐩稿叧鐨勫紩瀵間唬鐮併?

銆銆鐩存帴浠?start_kernel() 鍐呮牳寮曞閮ㄥ垎鏉ユ煡鎵?VMM 鐩稿叧鍐呭銆傚彲浠ョ湅鍒扮涓涓簲璇ュ叧娉ㄧ殑鍑芥暟鏄?setup_arch()錛屽湪榪欎釜鍑芥暟褰撲腑浣跨敤paging_init() 鍑芥暟鏉ュ垵濮嬪寲鍜屾槧灝勭‖浠墮〉琛紙鍦ㄥ垵濮嬪寲鍓嶅凡鏈?8M鍐呭瓨琚槧灝勶紝鍦ㄨ繖閲屼笉鍋氳褰曪級(jí)錛岃?paging_init() 鍒欐槸璋冪敤鐨刾agetable_init() 鏉ュ畬鎴愬唴鏍哥墿鐞嗗湴鍧鐨勬槧灝勪互鍙?qiáng)鐩稿厸_唴瀛樼殑鍒濆鍖栥傚湪 pagetable_init() 鍑芥暟涓紝棣栧厛鏄竴浜?PAE/PSE/PGE 鐩稿叧鍒ゆ柇涓庤緗紝鐒跺悗浣跨敤 kernel_physical_mapping_init() 鍑芥暟鏉ュ疄鐜板唴鏍哥墿鐞嗗唴瀛樼殑鏄犲皠銆傚湪榪欎釜鍑芥暟涓彲浠ュ緢娓呮鐨勭湅鍒幫紝pgd_idx 鏄互PAGE_OFFSET 涓哄惎濮嬪湴鍧榪涜鏄犲皠鐨勶紝涔熷氨鏄寰幆鍒濆鍖栨墍鏈夌墿鐞嗗湴鍧鏄互 PAGE_OFFSET 涓鴻搗鐐圭殑銆傜戶緇瀵熸垜浠彲浠ョ湅鍒板湪 PMD 琚垵濮嬪寲鍚庯紝鎵鏈夊湴鍧璁$畻鍧囨槸浠?PAGE_OFFSET 浣滀負(fù)鏍囪鏉ラ掑鐨勩傚垎鏋愬埌榪欓噷宸茬粡寰堟槑鏄劇殑鍙互鐪嬪嚭錛岀墿鐞嗗湴鍧琚槧灝勫埌浠?PAGE_OFFSET 寮濮嬬殑铏氭嫙鍦板潃絀洪棿銆傝繖鏍蜂互涓婃墍鏈夌枒闂氨閮芥湁浜嗙瓟妗堛俴malloc() 涓巁_get_free_page() 鎵鍒嗛厤鐨勭墿鐞嗛〉闈㈣鏄犲皠鍒頒簡 PAGE_OFFSET 寮濮嬬殑铏氭嫙鍦板潃錛屼篃灝辨槸璇村疄闄呯墿鐞嗗湴鍧涓庤櫄鎷熷湴鍧鏈変竴緇勪竴涓瀵瑰簲鐨勫叧緋伙紝

銆銆姝f槸鍥犱負(fù)鏈変簡榪欑鏄犲皠鍏崇郴錛屽鍐呮牳浠?PAGE_OFFSET 鍚鐨勮櫄鎷熷湴鍧鐨勫垎閰嶄篃灝辨槸瀵圭墿鐞嗗湴鍧鐨勫垎閰嶏紙褰撶劧榪欐湁涓瀹氱殑鑼冨洿錛屽簲璇ュ湪 PAGE_OFFSET涓?VMALLOC_START 涔嬮棿錛屽悗鑰呬負(fù) vmalloc() 鍑芥暟鍒嗛厤鍐呭瓨鐨勫惎濮嬪湴鍧錛夈傝繖涔熷氨瑙i噴浜嗕負(fù)浠涔?virt_to_phys() 涓?phys_to_virt() 鍑芥暟鐨勫疄鐜頒粎浠呮槸鍔?鍑?PAGE_OFFSET 鍗沖彲鍦ㄨ櫄鎷熷湴鍧涓庣墿鐞嗗湴鍧涔嬮棿杞崲錛屾鏄洜涓轟簡鏈変簡榪欑鏄犲皠錛屼笖鍥哄畾涓嶅彉錛屾墍浠ユ墠涓嶇敤鍘繪煡欏佃〃榪涜杞崲銆傝繖涔熷悓鏍峰洖絳斾簡寮濮嬬殑闂錛屽嵆 kmalloc() / __get_free_page() 鍒嗛厤鐨勬槸鐗╃悊鍦板潃錛岃岃繑鍥炵殑鍒欐槸铏氭嫙鍦板潃錛堣櫧鐒惰繖鍚笂鍘繪湁浜涘埆鎵級(jí)銆傛鏄洜涓烘湁浜嗚繖縐嶆槧灝勫叧緋伙紝鎵浠ラ渶瑕佸皢瀹冧滑鐨勮繑鍥炲湴鍧鍑忓幓 PAGE_OFFSET 鎵嶅彲浠ュ緱鍒扮湡姝g殑鐗╃悊鍦板潃銆?/p>

鍙︿竴綃囨洿瀹規(guī)槗鐞嗚В鐨勶細(xì)

kmalloc, vmalloc鍒嗛厤鐨勫唴瀛樼粨鏋?zz
2008-01-20 16:05
榪涚▼絀洪棿錛殀 <-鐢ㄦ埛絀洪棿-> | <-鍐呮牳絀洪棿-> |
鍐呮牳絀洪棿錛殀 <-鐗╃悊鍐呭瓨鏄犲皠鍖?> | <-vmalloc鍖哄煙-> |

==============鍘熸枃================================

   瀵逛簬鎻愪緵浜哅MU錛堝瓨鍌ㄧ鐞嗗櫒錛岃緟鍔╂搷浣滅郴緇熻繘琛屽唴瀛樼鐞嗭紝鎻愪緵铏氬疄鍦板潃杞崲絳夌‖浠舵敮鎸侊級(jí)鐨勫鐞嗗櫒鑰岃█錛孡inux鎻愪緵浜嗗鏉傜殑瀛樺偍綆$悊緋葷粺錛屼嬌寰楄繘紼嬫墍鑳借闂殑鍐呭瓨杈懼埌4GB銆?/p>

榪涚▼鐨?GB鍐呭瓨絀洪棿琚漢涓虹殑鍒嗕負(fù)涓や釜閮ㄥ垎--鐢ㄦ埛絀洪棿涓庡唴鏍哥┖闂淬傜敤鎴風(fēng)┖闂村湴鍧鍒嗗竷浠?鍒?GB(PAGE_OFFSET錛屽湪0x86涓畠絳変簬0xC0000000)錛?GB鍒?GB涓哄唴鏍哥┖闂淬?/p>

鍐呮牳絀洪棿涓紝浠?G鍒皏malloc_start榪欐鍦板潃鏄墿鐞嗗唴瀛樻槧灝勫尯鍩燂紙璇ュ尯鍩熶腑鍖呭惈浜嗗唴鏍擱暅鍍忋佺墿鐞嗛〉妗嗚〃mem_map絳夌瓑錛夛紝姣斿鎴戜滑浣跨敤 鐨?VMware铏氭嫙緋葷粺鍐呭瓨鏄?60M錛岄偅涔?G锝?G+160M榪欑墖鍐呭瓨灝卞簲璇ユ槧灝勭墿鐞嗗唴瀛樸傚湪鐗╃悊鍐呭瓨鏄犲皠鍖轟箣鍚庯紝灝辨槸vmalloc鍖哄煙銆傚浜?160M鐨勭郴緇熻岃█錛寁malloc_start浣嶇疆搴斿湪3G+160M闄勮繎錛堝湪鐗╃悊鍐呭瓨鏄犲皠鍖轟笌vmalloc_start鏈熼棿榪樺瓨鍦ㄤ竴涓?M鐨刧ap 鏉ラ槻姝㈣穬鐣岋級(jí)錛寁malloc_end鐨勪綅緗帴榪?G(鏈鍚庝綅緗郴緇熶細(xì)淇濈暀涓鐗?28k澶у皬鐨勫尯鍩熺敤浜庝笓鐢ㄩ〉闈㈡槧灝?

kmalloc鍜実et_free_page鐢寵鐨勫唴瀛樹綅浜庣墿鐞嗗唴瀛樻槧灝勫尯鍩燂紝鑰屼笖鍦ㄧ墿鐞嗕笂涔熸槸榪炵畫鐨勶紝瀹冧滑涓庣湡瀹炵殑鐗╃悊鍦板潃鍙湁涓涓浐瀹氱殑鍋忕Щ錛屽洜姝ゅ瓨鍦ㄨ緝綆鍗曠殑杞崲鍏崇郴錛寁irt_to_phys()鍙互瀹炵幇鍐呮牳铏氭嫙鍦板潃杞寲涓虹墿鐞嗗湴鍧錛?br>   #define __pa(x) ((unsigned long)(x)-PAGE_OFFSET)
   extern inline unsigned long virt_to_phys(volatile void * address)
   {
       銆return __pa(address);
   }
涓婇潰杞崲榪囩▼鏄皢铏氭嫙鍦板潃鍑忓幓3G錛圥AGE_OFFSET=0XC000000錛夈?/p>

涓庝箣瀵瑰簲鐨勫嚱鏁頒負(fù)phys_to_virt()錛屽皢鍐呮牳鐗╃悊鍦板潃杞寲涓鴻櫄鎷熷湴鍧錛?br>   #define __va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET))
   extern inline void * phys_to_virt(unsigned long address)
   {
       銆return __va(address);
   }
virt_to_phys()鍜宲hys_to_virt()閮藉畾涔夊湪include\asm-i386\io.h涓?/p>

鑰寁malloc鐢寵鐨勫唴瀛樺垯浣嶄簬vmalloc_start锝瀡malloc_end涔嬮棿錛屼笌鐗╃悊鍦板潃娌℃湁綆鍗曠殑杞崲鍏崇郴錛岃櫧鐒跺湪閫昏緫涓婂畠浠篃鏄繛緇殑錛屼絾鏄湪鐗╃悊涓婂畠浠笉瑕佹眰榪炵畫銆?/p>

鎴戜滑鐢ㄤ笅闈㈢殑紼嬪簭鏉ユ紨紺簁malloc銆乬et_free_page鍜寁malloc鐨勫尯鍒細(xì)
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/vmalloc.h>
MODULE_LICENSE("GPL");
unsigned char *pagemem;
unsigned char *kmallocmem;
unsigned char *vmallocmem;

int __init mem_module_init(void)
{
//鏈濂芥瘡嬈″唴瀛樼敵璇烽兘媯(gè)鏌ョ敵璇鋒槸鍚︽垚鍔?br>//涓嬮潰榪欐浠呬粎浣滀負(fù)婕旂ず鐨勪唬鐮佹病鏈夋鏌?br>pagemem = (unsigned char*)get_free_page(0);
printk("<1>pagemem addr=%x", pagemem);

kmallocmem = (unsigned char*)kmalloc(100, 0);
printk("<1>kmallocmem addr=%x", kmallocmem);

vmallocmem = (unsigned char*)vmalloc(1000000);
printk("<1>vmallocmem addr=%x", vmallocmem);

return 0;
}

void __exit mem_module_exit(void)
{
free_page(pagemem);
kfree(kmallocmem);
vfree(vmallocmem);
}

module_init(mem_module_init);
module_exit(mem_module_exit);

鎴戜滑鐨勭郴緇熶笂鏈?60MB鐨勫唴瀛樼┖闂達(dá)紝榪愯涓嬈′笂榪扮▼搴忥紝鍙戠幇pagemem鐨勫湴鍧鍦?xc7997000錛堢害3G+121M錛夈乲mallocmem 鍦板潃鍦?xc9bc1380錛堢害3G+155M錛夈乿mallocmem鐨勫湴鍧鍦?xcabeb000錛堢害3G+171M錛夊錛岀鍚堝墠鏂囨墍榪扮殑鍐呭瓨甯冨眬銆?

 

鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛?a >http://blog.csdn.net/sandflee/archive/2009/07/28/4388322.aspx



pear_li 2009-11-17 17:18 鍙戣〃璇勮
]]>
Windows涓?POSIX 綰跨▼緙栫▼http://m.shnenglu.com/dawnbreak/articles/76946.htmlpear_lipear_liTue, 17 Mar 2009 15:58:00 GMThttp://m.shnenglu.com/dawnbreak/articles/76946.htmlhttp://m.shnenglu.com/dawnbreak/comments/76946.htmlhttp://m.shnenglu.com/dawnbreak/articles/76946.html#Feedback0http://m.shnenglu.com/dawnbreak/comments/commentRss/76946.htmlhttp://m.shnenglu.com/dawnbreak/services/trackbacks/76946.html1. POSIX 鏍囧噯

        POSIX鏄疨ortable Operating System Interface of Unix鐨勭緝鍐欍傜敱IEEE錛圛nstitute of Electrical and Electronic Engineering錛夊紑鍙戯紝鐢盇NSI鍜孖SO鏍囧噯鍖栥?br>        POSIX鐨勮癁鐢熷拰Unix鐨勫彂灞曟槸瀵嗕笉鍙垎鐨勶紝Unix浜?0騫翠唬璇炵敓浜嶣ell lab錛屽茍浜?0騫翠唬鍚戠編鍚勫ぇ楂樻牎鍒嗗彂V7鐗堢殑婧愮爜浠ュ仛鐮旂┒銆俇C Berkeley鍦╒7鐨勫熀紜涓婂紑鍙戜簡BSD Unix銆傚悗鏉ュ緢澶氬晢涓氬巶瀹舵剰璇嗗埌Unix鐨勪環(huán)鍊間篃綰風(fēng)悍浠ell Lab鐨凷ystem V鎴朆SD涓哄熀紜鏉ュ紑鍙戣嚜宸辯殑Unix錛岃緝钁楀悕鐨勬湁Sun OS錛孉IX錛孷MS銆傜敱浜庡悇鍘傚瀵筓nix鐨勫紑鍙戝悇鑷負(fù)鏀匡紝閫犳垚浜哢nix鐨勭増鏈浉褰撴販涔憋紝緇欒蔣浠剁殑鍙Щ妞嶆у甫鏉ュ緢澶у洶闅撅紝瀵筓nix鐨勫彂灞曟瀬涓轟笉鍒┿備負(fù)緇撴潫榪欑灞闈紝IEEE寮鍙戜簡POSIX錛孭OSIX鍦ㄦ簮浠g爜綰у埆涓婂畾涔変簡涓緇勬渶灝忕殑Unix(綾籙nix)鎿嶄綔緋葷粺鎺ュ彛銆?br>        POSIX 琛ㄧず鍙Щ妞嶆搷浣滅郴緇熸帴鍙o紙Portable Operating System Interface 錛岀緝鍐欎負(fù) POSIX 鏄負(fù)浜嗚闊蟲洿鍍?UNIX錛夈傜數(shù)姘斿拰鐢?shù)瀛愬伐绋嬪笀鍗忎細(xì)锛圛nstitute of Electrical and Electronics Engineers錛孖EEE錛夋渶鍒濆紑鍙?POSIX 鏍囧噯錛屾槸涓轟簡鎻愰珮 UNIX 鐜涓嬪簲鐢ㄧ▼搴忕殑鍙Щ妞嶆с傜劧鑰岋紝POSIX 騫朵笉灞闄愪簬 UNIX銆傝澶氬叾瀹冪殑鎿嶄綔緋葷粺錛屼緥濡?DEC OpenVMS 鍜?Microsoft Windows NT錛岄兘鏀寔 POSIX 鏍囧噯錛屽挨鍏舵槸 IEEE Std. 1003.1-1990錛?995 騫翠慨璁級(jí)鎴?POSIX.1錛孭OSIX.1 鎻愪緵浜嗘簮浠g爜綰у埆鐨?C 璇█搴旂敤緙栫▼鎺ュ彛錛圓PI錛夌粰鎿嶄綔緋葷粺鐨勬湇鍔$▼搴忥紝渚嬪璇誨啓鏂囦歡銆侾OSIX.1 宸茬粡琚浗闄呮爣鍑嗗寲緇勭粐錛圛nternational Standards Organization錛孖SO錛夋墍鎺ュ彈錛岃鍛藉悕涓?ISO/IEC 9945-1:1990 鏍囧噯銆?
        POSIX 鐜板湪宸茬粡鍙戝睍鎴愪負(fù)涓涓潪甯稿簽澶х殑鏍囧噯鏃忥紝鏌愪簺閮ㄥ垎姝e鍦ㄥ紑鍙戣繃紼嬩腑銆傝〃 1-1 緇欏嚭浜?POSIX 鏍囧噯鐨勫嚑涓噸瑕佺粍鎴愰儴鍒嗐侾OSIX 涓?IEEE 1003 鍜?2003 瀹舵棌鐨勬爣鍑嗘槸鍙簰鎹㈢殑銆傞櫎 1003.1 涔嬪錛?003 鍜?2003 瀹舵棌涔熷寘鎷湪琛ㄤ腑銆?

琛?錛氭爣鍑嗙殑閲嶈緇勬垚閮ㄥ垎
1003.0
綆$悊 POSIX 寮鏀懼紡緋葷粺鐜錛圤SE錛夈侷EEE 鍦?1995 騫撮氳繃浜嗚繖欏規(guī)爣鍑嗐?ISO 鐨勭増鏈槸 ISO/IEC 14252:1996銆?
1003.1
琚箍娉涙帴鍙椼佺敤浜庢簮浠g爜綰у埆鐨勫彲縐繪鎬ф爣鍑嗐?003.1 鎻愪緵涓涓搷浣滅郴緇熺殑 C 璇█搴旂敤緙栫▼鎺ュ彛錛圓PI錛夈侷EEE 鍜?ISO 宸茬粡鍦?1990 騫撮氳繃浜嗚繖涓爣鍑嗭紝IEEE 鍦?1995 騫撮噸鏂頒慨璁簡璇ユ爣鍑嗐?
1003.1b
涓涓敤浜庡疄鏃剁紪紼嬬殑鏍囧噯錛堜互鍓嶇殑 P1003.4 鎴?POSIX.4錛夈傝繖涓爣鍑嗗湪 1993 騫磋 IEEE 閫氳繃錛岃鍚堝茍榪?ISO/IEC 9945-1銆?
1003.1c
涓涓敤浜庣嚎紼嬶紙鍦ㄤ竴涓▼搴忎腑褰撳墠琚墽琛岀殑浠g爜孌碉級(jí)鐨勬爣鍑嗐備互鍓嶆槸 P1993.4 鎴?POSIX.4 鐨勪竴閮ㄥ垎錛岃繖涓爣鍑嗗凡緇忓湪 1995 騫磋 IEEE 閫氳繃錛屽綊鍏?ISO/IEC 9945-1:1996銆?
1003.1g
涓涓叧浜庡崗璁嫭绔嬫帴鍙g殑鏍囧噯錛岃鎺ュ彛鍙互浣夸竴涓簲鐢ㄧ▼搴忛氳繃緗戠粶涓庡彟涓涓簲鐢ㄧ▼搴忛氳銆?1996 騫達(dá)紝IEEE 閫氳繃浜嗚繖涓爣鍑嗐?
1003.2
涓涓簲鐢ㄤ簬 shell 鍜?宸ュ叿杞歡鐨勬爣鍑嗭紝瀹冧滑鍒嗗埆鏄搷浣滅郴緇熸墍蹇呴』鎻愪緵鐨勫懡浠ゅ鐞嗗櫒鍜屽伐鍏風(fēng)▼搴忋?1992 騫?IEEE 閫氳繃浜嗚繖涓爣鍑嗐侷SO 涔熷凡緇忛氳繃浜嗚繖涓爣鍑嗭紙ISO/IEC 9945-2:1993錛夈?
1003.2d
鏀硅繘鐨?1003.2 鏍囧噯銆?
1003.5
涓涓浉褰撲簬 1003.1 鐨?Ada 璇█鐨?API銆傚湪 1992 騫達(dá)紝IEEE 閫氳繃浜嗚繖涓爣鍑嗐傚茍鍦?1997 騫村鍏惰繘琛屼簡淇銆侷SO 涔熼氳繃浜嗚鏍囧噯銆?
1003.5b
涓涓浉褰撲簬 1003.1b錛堝疄鏃舵墿灞曪級(jí)鐨?Ada 璇█鐨?API銆侷EEE 鍜?ISO 閮藉凡緇忛氳繃浜嗚繖涓爣鍑嗐侷SO 鐨勬爣鍑嗘槸 ISO/IEC 14519:1999銆?
1003.5c
涓涓浉褰撲簬 1003.1q錛堝崗璁嫭绔嬫帴鍙o級(jí)鐨?Ada 璇█鐨?API銆傚湪 1998 騫達(dá)紝 IEEE 閫氳繃浜嗚繖涓爣鍑嗐侷SO 涔熼氳繃浜嗚繖涓爣鍑嗐?
1003.9
涓涓浉褰撲簬 1003.1 鐨?FORTRAN 璇█鐨?API銆傚湪 1992 騫達(dá)紝IEEE 閫氳繃浜嗚繖涓爣鍑嗭紝騫朵簬 1997 騫村鍏跺啀嬈$‘璁ゃ侷SO 涔熷凡緇忛氳繃浜嗚繖涓爣鍑嗐?
1003.10
涓涓簲鐢ㄤ簬瓚呯駭璁$畻搴旂敤鐜妗嗘灦錛圓pplication Environment Profile錛孉EP錛夌殑鏍囧噯銆傚湪 1995 騫達(dá)紝IEEE 閫氳繃浜嗚繖涓爣鍑嗐?
1003.13
涓涓叧浜庡簲鐢ㄧ幆澧冩鏋剁殑鏍囧噯錛屼富瑕侀拡瀵逛嬌鐢?POSIX 鎺ュ彛鐨勫疄鏃跺簲鐢ㄧ▼搴忋傚湪 1998 騫達(dá)紝IEEE 閫氳繃浜嗚繖涓爣鍑嗐?
1003.22
涓涓拡瀵?POSIX 鐨勫叧浜庡畨鍏ㄦф鏋剁殑鎸囧崡銆?
1003.23
涓涓拡瀵圭敤鎴風(fēng)粍緇囩殑鎸囧崡錛屼富瑕佹槸涓轟簡鎸囧鐢ㄦ埛寮鍙戝拰浣跨敤鏀寔鎿嶄綔闇姹傜殑寮鏀懼紡緋葷粺鐜錛圤SE錛夋鏋?
2003
閽堝鎸囧畾鍜屼嬌鐢ㄦ槸鍚︾鍚?POSIX 鏍囧噯鐨勬祴璇曟柟娉曪紝鏈夊叧鍏跺畾涔夈佷竴鑸渶姹傚拰鎸囧鏂歸拡鐨勪竴涓爣鍑嗐傚湪 1997 騫達(dá)紝IEEE 閫氳繃浜嗚繖涓爣鍑嗐?
2003.1
榪欎釜鏍囧噯瑙勫畾浜嗛拡瀵?1003.1 鐨?POSIX 嫻嬭瘯鏂規(guī)硶鐨勬彁渚涘晢瑕佹彁渚涚殑涓浜涙潯浠躲傚湪 1992 騫達(dá)紝IEEE 閫氳繃浜嗚繖涓爣鍑嗐?
2003.2
涓涓畾涔変簡琚敤鏉ユ鏌ヤ笌 IEEE 1003.2錛坰hell 鍜?宸ュ叿 API錛夋槸鍚︾鍚堢殑嫻嬭瘯鏂規(guī)硶鐨勬爣鍑嗐傚湪 1996 騫達(dá)紝IEEE 閫氳繃浜嗚繖涓爣鍑嗐?

       闄や簡 1003 鍜?2003 瀹舵棌浠ュ錛岃繕鏈夊嚑涓叾瀹冪殑 IEEE 鏍囧噯錛屼緥濡?1224 鍜?1228錛屽畠浠篃鎻愪緵寮鍙戝彲縐繪搴旂敤紼嬪簭鐨?API銆傝鎯沖緱鍒板叧浜?IEEE 鏍囧噯鐨勬渶鏂頒俊鎭紝鍙互璁塊棶 IEEE 鏍囧噯鐨勪富欏碉紝緗戝潃鏄?http://standards.ieee.org/銆傛湁鍏?POSIX 鏍囧噯鐨勬榪頒俊鎭紝璇瘋闂?Web 绔欑偣 http://standards.ieee.org/reading/ieee/stad_public/description/posix/銆?/p>

2. Liniux涓嬬殑綰跨▼緙栫▼

        Linux緋葷粺涓嬬殑澶氱嚎紼嬮伒寰狿OSIX綰跨▼鎺ュ彛錛岀О涓簆thread銆備粠涓婇潰鐨勬弿榪頒笉闅劇煡閬擄紝POSIX綰跨▼鎺ュ彛鏄疨OSIX浼楀鏍囧噯涓殑涓涓紙POSIX 1003.1-2001錛?/strong>銆?/p>

        緙栧啓Linux涓嬬殑澶氱嚎紼嬬▼搴忥紝闇瑕佷嬌鐢ㄥご鏂囦歡pthread.h錛岃繛鎺ユ椂闇瑕佷嬌鐢ㄥ簱libpthread.a銆傞『渚胯涓涓嬶紝Linux涓媝thread鐨勫疄鐜版槸閫氳繃緋葷粺璋冪敤 clone() 鏉ュ疄鐜扮殑銆俢lone() 鏄疞inux鎵鐗規(guī)湁鐨勭郴緇熻皟鐢紝瀹冪殑浣跨敤鏂瑰紡綾諱技fork錛屽叧浜?clone() 鐨勮緇嗘儏鍐碉紝鏈夊叴瓚g殑璇昏呭彲浠ュ幓鏌ョ湅鏈夊叧鏂囨。璇存槑銆?/p>

涓嬮潰鏄竴涓?POSIX 綰跨▼鐨勭畝鍗曠ず渚嬬▼搴?thread1.c)錛?

#include <pthread.h>
#include 
<stdlib.h>
#include 
<unistd.h>
 
void *thread_function(void *arg) {
  
int i;
  
for ( i=0; i<20; i++{
    printf(
"Thread says hi! ");
    sleep(
1);
  }

  
return NULL;
}

int main(void{
  pthread_t mythread;
  
  
if ( pthread_create( &mythread, NULL, thread_function, NULL) ) {
    printf(
"error creating thread.");
    abort();
  }

  
if ( pthread_join ( mythread, NULL ) ) {
    printf(
"error joining thread.");
    abort();
  }

  exit(
0);
}

 瑕佺紪璇戣繖涓▼搴忥紝鍙渶鍏堝皢紼嬪簭瀛樹負(fù) thread1.c錛岀劧鍚庤緭鍏ワ細(xì)

$ gcc thread1.c -o thread1 -lpthread

榪愯鍒欒緭鍏ワ細(xì)

$ ./thread1

3. Windows涓婸OSIX綰跨▼緙栫▼

       Windows鏈韓娌℃湁鎻愪緵瀵筆OSIX鐨勬敮鎸併備絾鏈変竴涓彨 POSIX Threads for Win32 鐨勫紑婧愰」鐩粰鍑轟簡涓涓姛鑳芥瘮杈冨畬鍠勭殑Windows涓媝threads API鐨勫疄鐜般傜洰鍓嶇殑鏈鏂扮増鏈槸Pthreads-w32 release 2.8.0 (2006-12-22)銆?/p>

       鎴戞病鏈夋祴璇曡繃榪欎釜鏈鏂扮増鏈紝榪欓噷鍙粰鍑?.7.0鐗堢殑閾炬帴錛?a title=ftp://sources.redhat.com/pub/pthreads-win32/pthreads-w32-2-7-0-release.exe href="ftp://sources.redhat.com/pub/pthreads-win32/pthreads-w32-2-7-0-release.exe">ftp://sources.redhat.com/pub/pthreads-win32/pthreads-w32-2-7-0-release.exe銆?/p>

       鍏充簬璇ュ紑婧愰」鐩殑璇︾粏浠嬬粛瑙侊細(xì)http://sources.redhat.com/pthreads-win32/銆?/p>

3.1 綆鍗曚嬌鐢?/strong>

       涓婇潰鐨別xe鏂囦歡鏄竴涓嚜瑙e帇鏂囦歡錛岃В鍘嬪悗錛孭re-built.2鐩綍涓湁緙栬瘧鎵闇瑕佺殑澶存枃浠訛紙include瀛愮洰褰曪級(jí)鍜屽簱鏂囦歡錛坙ib瀛愮洰褰曪級(jí)銆?/p>

       涓涓畝鍗曠殑嫻嬭瘯紼嬪簭(main.cpp)錛?/p>

#include <stdio.h>
#include 
<pthread.h>
#include 
<assert.h>

void* Function_t(void* Param)
{
    printf(
"I am a thread!  ");
    pthread_t myid 
= pthread_self();
    printf(
"thread ID=%d ", myid);
    
return NULL;
}


int main()
{
    pthread_t pid;
    pthread_attr_t attr;
    pthread_attr_init(
&attr);
    pthread_attr_setscope(
&attr, PTHREAD_SCOPE_PROCESS);
    pthread_attr_setdetachstate(
&attr, PTHREAD_CREATE_DETACHED);
    pthread_create(
&pid, &attr, Function_t, NULL);
    printf(
"======================================== ");
    getchar();
    pthread_attr_destroy(
&attr);
    
return 1;
}
 

浣跨敤 cl.exe 緙栬瘧錛堜笉鐔熸?zhèn)?cl.exe 鐨勮鍙傝冿細(xì)http://blog.csdn.net/liuyongjin1984/archive/2008/01/07/2029405.aspx 鎴栬呭弬瑙佷笅闈?.2閮ㄥ垎錛夛細(xì)

銆?span style="COLOR: #000000">rem cl.bat

銆媍l.exe main.cpp  //I"c:pthreads-w32-2-7-0-releasePre-built.2include"

銆媗ink.exe 
/out:main_cl.exe  main.obj  /LIBPATH:"c:pthreads-w32-2-7-0-releasePre-built.2lib"   pthreadVC2.lib

 3.2 浣跨敤VC++ 6.0鎴朧isual Studio 2005鏉ヨ繍琛屼笂闈㈢殑紼嬪簭

鍏抽敭鏈変袱鐐癸細(xì)

1. 鏄皢澶存枃浠訛紙include瀛愮洰褰曪級(jí)鍜屽簱鏂囦歡錛坙ib瀛愮洰褰曪級(jí)涓殑鍐呭娣誨姞鍒癡C++ 6.0鎴朧isual Studio 2005寮鍙戠幆澧冨搴旂殑include鍜宭ib鐩綍涓嬨?/p>

鍏蜂綋鏉ヨ錛?strong>浠ユ坊鍔爄nclude鐩綍涓轟緥錛屾坊鍔爈ib鐩綍綾諱技錛夛細(xì)

鍥?錛歏C++ 6.0錛堟坊鍔爄nclude鐩綍錛氬伐鍏?-銆嬮夐」--銆嬬洰褰曪級(jí)

 

 

鍥?錛歏isual Studio 2005(娣誨姞include鐩綍錛歵ools--銆媜ptions)

 

 

2. 鎸囧畾link鏃惰榪炴帴鐨勫簱鐨勫悕縐幫紙pthreadVC2.lib錛?/strong>

鍥?錛歏C++ 6.0錛堝伐紼?-銆嬭緗?-銆嬭繛鎺ワ級(jí)

鍥?錛歏isual Studio 2005(project-->* property pages)

 

4. 涔︾睄鎺ㄨ崘
<< POSIX Multithread Programming Primer >>: http://download.csdn.net/source/237125



pear_li 2009-03-17 23:58 鍙戣〃璇勮
]]>
cygwin 浣跨敤http://m.shnenglu.com/dawnbreak/articles/68393.htmlpear_lipear_liTue, 02 Dec 2008 07:09:00 GMThttp://m.shnenglu.com/dawnbreak/articles/68393.htmlhttp://m.shnenglu.com/dawnbreak/comments/68393.htmlhttp://m.shnenglu.com/dawnbreak/articles/68393.html#Feedback0http://m.shnenglu.com/dawnbreak/comments/commentRss/68393.htmlhttp://m.shnenglu.com/dawnbreak/services/trackbacks/68393.html瀵逛簬緇忓父鍦╓indows緙栫▼鐨勪嬌鐢ㄨ咃紝鎯充綋楠?nix緙栫▼鍙互閫夋嫨vw錛寁pc錛屽弻緋葷粺錛岃屽浜庣湡姝g殑寮鍙戣呰岃█涓涓?nix shell鍔犱笂GCC GDB MAKE浠ュ強(qiáng)鐩稿叧鐨勫嚱鏁板簱鏂囦歡瓚充互錛屽摝錛屼篃璁稿姞涓奃EVDOC鎵嶇畻瀹屾暣錛屼篃灝辨槸鍙互浣跨敤man錛屾墍鏈夎繖浜沜ygwin瀹屽叏鍙互鎼炲畾銆?br>cygwin綆浠嬶細(xì)
榪欎釜闂浣犳渶濂絞oogle涓涓?cygwin鐨勫巻鍙?,鎴栬鑳藉鑾峰緱鏇翠負(fù)璇﹀敖鐨勭瓟妗堛傜畝鑰岃█涔嬶紝cygwin鏄竴涓湪windows騫沖彴涓婅繍琛岀殑 linux妯℃嫙鐜錛屾槸cygnus solutions鍏徃寮鍙戠殑鑷敱杞歡錛堣鍏徃寮鍙戜簡寰堝濂戒笢瑗匡紝钁楀悕鐨勮繕鏈塭Cos錛屼笉榪囩幇宸茶Redhat鏀惰喘錛夈傛彃涓鍙ュ簾璇濓紝寰堝鏈嬪弸涓嶆槑鐧?linux鍜寀nix鐨勫尯鍒拰鑱旂郴錛屽湪姝や篃綆瑕佷粙緇嶄竴涓嬨俇NIX鏄竴涓敞鍐屽晢鏍囷紝鏄婊¤凍涓澶у爢鏉′歡騫朵笖鏀粯鍙璐圭敤鎵嶈兘澶熻鎺堟潈浣跨敤鐨勪竴涓搷浣滅郴緇? linux鏄痷nix鐨勫厠闅嗙増鏈紝鏄敱鍏跺垱濮嬩漢Linus鍜岃澶氫笘鐣岀煡鍚嶇殑榛戝鎵嬪伐鎵撻犵殑涓涓搷浣滅郴緇熴備負(fù)浠涔坙inux鍜寀nix涔嬮棿鏈夊緢澶氳蔣浠跺彲浠ュ緢杞繪澗鐨勭Щ妞嶏紵鍥犱負(fù)linux涔熸弧瓚砅OSIX瑙勮寖,鎵浠ュ湪榪愯鏈哄埗涓婅窡unix鐩歌繎銆?nbsp; 
   浠ヤ笅寮曠敤緗戜笂鐨勪竴孌佃瘽錛堝嚭澶勶細(xì)http://blog.csdn.net/glock18/archive/2004/07/10/38275.aspx錛夛紝
鐢ㄤ簬璇存槑cygwin鐨勫伐浣滄満鍒訛細(xì)cygnus褰撳垵棣栧厛鎶奼cc錛実db錛実as絳夊紑鍙戝伐鍏瘋繘琛屼簡鏀硅繘錛屼嬌浠栦滑鑳藉鐢熸垚騫惰В閲妛in32鐨勭洰鏍囨枃浠躲傜劧鍚庯紝浠栦滑瑕佹妸榪欎簺宸ュ叿縐繪鍒皐indows騫沖彴涓婂幓銆備竴縐嶆柟妗堟槸鍩轟簬win32 api瀵硅繖浜涘伐鍏風(fēng)殑婧愪唬鐮佽繘琛屽ぇ騫呬慨鏀癸紝榪欐牱鍋氭樉鐒墮渶瑕佸ぇ閲忓伐浣溿傚洜姝わ紝浠栦滑閲囧彇浜嗕竴縐嶄笉鍚岀殑鏂規(guī)硶鈥斺斾粬浠啓浜嗕竴涓叡浜簱(灝辨槸cygwin dll)錛屾妸win32 api涓病鏈夌殑unix椋庢牸鐨勮皟鐢紙濡俧ork,spawn,signals,select,sockets絳夛級(jí)灝佽鍦ㄩ噷闈紝涔熷氨鏄錛屼粬浠熀浜?win32 api鍐欎簡涓涓猽nix緋葷粺搴撶殑妯℃嫙灞傘傝繖鏍鳳紝鍙鎶婅繖浜涘伐鍏風(fēng)殑婧愪唬鐮佸拰榪欎釜鍏變韓搴撹繛鎺ュ埌涓璧鳳紝灝卞彲浠ヤ嬌鐢╱nix涓繪満涓婄殑浜ゅ弶緙栬瘧鍣ㄦ潵鐢熸垚鍙互鍦?windows騫沖彴涓婅繍琛岀殑宸ュ叿闆嗐備互榪欎簺縐繪鍒皐indows騫沖彴涓婄殑寮鍙戝伐鍏蜂負(fù)鍩虹錛宑ygnus鍙堥愭鎶婂叾浠栫殑宸ュ叿錛堝嚑涔庝笉闇瑕佸婧愪唬鐮佽繘琛屼慨鏀癸紝鍙渶瑕佷慨鏀逛粬浠殑閰嶇疆鑴氭湰錛夎蔣浠剁Щ妞嶅埌windows涓婃潵銆傝繖鏍鳳紝鍦╳indows騫沖彴涓婅繍琛宐ash鍜屽紑鍙戝伐鍏楓佺敤鎴峰伐鍏鳳紝鎰熻濂藉儚鍦╱nix涓婂伐浣溿傚叧浜巆ygwin瀹炵幇鐨勬洿璇︾粏鎻忚堪錛岃鍙傝?a >http://cygwin.com/cygwin-ug-net/highlights.html

閭d箞鎺ヤ笅鏉ュ氨瀹夎錛?br> 1. 鍏堝幓Cygwin緗戠珯錛坵ww.cygwin.com錛変笅杞戒竴涓畨瑁呮枃浠訛紙setup.exe錛夛紝榪欎釜鏂囦歡浣撶Н寰堝皬錛屽彧鏈変笉鍒?00KB銆傜劧鍚庡弻鍑昏繍琛宻etup.exe銆傚洜涓烘槸絎竴嬈″畨瑁咃紝鎵浠ュ繀欏婚夋嫨浠嶪nternet鍦ㄧ嚎瀹夎錛屼篃鍙互鍏堜粠Internet涓嬭澆瀹夎鏂囦歡錛岀劧鍚庡啀鎵嬪姩瀹夎銆傛垜閫夋嫨鍚庤咃紝鍥犱負(fù)榪欐牱錛屼互鍚庢垜鍙互鍦ㄤ笉鑱旂綉鐨勬椂鍊欎篃鑳藉畨瑁呫?/p>

2. 鎺ヤ笅鏉ョ偣鍑?#8220;涓嬩竴姝?#8221;錛岀劧鍚庝粠涓緋誨垪鏈嶅姟鍣ㄥ垪琛ㄤ腑閫夋嫨涓涓綘璁や負(fù)緗戦熸渶蹇殑涓涓綔涓轟笅杞芥湇鍔″櫒銆傛帴鐫鐐瑰嚮“涓嬩竴姝?#8221;灝變細(xì)鍑虹幇濡備笅鍥炬墍紺虹殑鐣岄潰錛岀敤鏉ラ夋嫨浣犳兂瀹夎鐨勭▼搴忋?/p>

     濡傛灉浣犱笉鍋氫換浣曚慨鏀癸紝灝嗛粯璁ゅ畨瑁匔ygwin榪愯鎵闇鐨勬渶灝戠殑紼嬪簭鍜岀粍浠躲備笉榪囷紝gcc緙栬瘧鍣ㄤ笉鍦ㄩ粯璁ゅ畨瑁呯▼搴忎箣鍒楋紝鎵浠ヤ綘蹇呴』閫夋嫨瀹夎gcc銆傚叿浣撴槸錛?鍦ㄤ笂榪扮獥鍙d腑鐨勫垪琛ㄤ腑灞曞紑Devel鐩綍錛屾壘鍒癵cc-g++涓欏癸紝鐐瑰嚮“Default”錛屽畠?yōu)鍙樻垚浜?#8220;Install”錛屽悓鏃剁敱浜庣▼搴忎箣闂寸殑渚濊禆鎬?gcc-core鏉$洰鐨?#8220;Default”錛屼篃鍙樻垚浜?#8220;Install”銆?/p>

    姝ゅ錛屼負(fù)浜嗕嬌gcc鑳芥紜紪璇戞簮鏂囦歡錛岃繕蹇呴』瀹夎win32api搴擄紝鍚﹀垯浼?xì)缂栬瘧鍑洪敊銆傚洜姝わ紝浣犻渶瑕佸湪涓婅堪紿楀彛涓睍寮Libs鐩綍錛屾壘鍒皐in32api涓欏癸紝灝嗗畠鐐規(guī)垚“Install”銆?/p> 3. 鎺ヤ笅鏉ュ氨鏄愬績絳夊緟紼嬪簭鍘諱笅杞芥墍闇鐨勫畨瑁呮枃浠朵簡銆備竴鏃︿笅杞藉畬姣曪紝浣犲啀嬈¤繍琛宻etup.exe錛屽厛閫夋嫨浣犲皢瑕佹妸Cygwin瀹夎鍦ㄤ粈涔堝湴鏂癸紝鐒跺悗鍐嶉夋嫨浣?鍒氭墠鎵涓嬭澆鐨勯偅浜涘畨瑁呮枃浠舵墍鍦ㄧ殑紜洏浣嶇疆銆傛帴鐫浣犺繕闇瑕佸啀嬈¢夋嫨瀹夎gcc鍜寃in32api銆傝繖鏍鳳紝浣犲氨鍙互寮濮嬪畨瑁呬簡銆?

4. 瀹夎瀹屾垚鍚庯紝榪愯Cygwin銆傚湪紿楀彛涓暡鍏cc灝卞彲浠ョ洿鎺ョ敤gcc鏉ョ紪璇戜簡銆傜紪璇戦摼鎺ョ敓鎴愮殑鍙墽琛屾枃浠訛紝緋葷粺浼?xì)鑷姩鍔犱?exe鍚庣紑錛屽湪Cygwin 鐜涓彲浠ョ洿鎺ヨ繍琛屻備絾濡傛灉鑴辯Cygwin鐜錛岃屽湪MS DOS涓嬭繍琛岋紝鍒欎細(xì)鍑洪敊銆傝В鍐沖姙娉曞緢綆鍗曪紝閭e氨鏄皢cygwin1.dll鏂囦歡鎷瘋礉鍒癈:\WINDOWS鐩綍涓嬪嵆鍙?br>
鍦ㄨ繖閲屾垜鎯沖己璋冿紝濡傛灉鍥劇渷浜嬶紝瀹屽叏鍙互鐩存帴灝哸ll鍙寵竟鐨刣efault璁句負(fù)install銆備絾鏄繖灝嗚繖鏍蜂綘4涓狦鐨勭┖闂達(dá)紝鎵浠ュ鏋滀綘涓嶆槸鎷ユ湁鐗瑰埆澶х殑絀洪棿鐨勮瘽錛岃繕鏄緩璁夋嫨鎬х殑瀹夎錛岄渶瑕佷粈涔堝彲浠ラ殢鏃剁偣鍑誨厛鍓嶇殑setup.exe鍔犺鏂扮殑緇勪歡闄ゅ幓浠ヤ笂鎵璇寸殑緇勪歡澶栵紝鍦╠evel涓嬬殑GDB鍜宮ake鐩鎬俊涔熸槸澶у鏁板紑鍙戣呮墍蹇呴』鐨勩?br>鑷蟲宸插皢瑙e喅鐨勪簡鏂囩珷寮澶存彁鍙?qiáng)鐨勫墠涓墮骞瑕佷挥灱岃岀鍥涢」man鍒欐槸cygwin榛樿瀹夎鐨勶紝涓嶈繃涓嶆槸寰堝叏闈紝鎵浠ュ彲浠ラ氳繃The Linux Documentation Project 錛堝緢濂藉緢寮哄ぇ鐨勬枃妗g綉绔欙級(jí)鏉ヨВ鍐籌紝涓嶈繃璨屼技榪欎釜緗戠珯澶ч檰鎵撲笉寮錛屽弽姝f垜鏄病鎵撳紑錛岃繕濂芥湁棣欐腐鍚岃優(yōu)寤虹珛鐨刴irror錛屾瘮杈冨ソ鐢ㄧ殑鏄?a href="ftp://ftp.hkmirror.org/pub/ldp/manpages/">ftp://ftp.hkmirror.org/pub/ldp/manpages/錛屽湪鍏朵腑鎵懼埌閫傚悎浣犵殑man鐗堟湰錛屼笅杞斤紝瑙e帇鍒?(cygwin)鐩綍涓嬬殑/usr/share/man/涓嬮潰錛岀紪杈?usr/share/misc/man.conf錛屾枃浠舵湯灝懼姞涓奙ANPATH /usr/share/man/man-pages-*.**鍗沖彲銆?br>
濂藉暒錛屽涓嬮厤緗悗錛屽惎鍔╟ygwin錛屾潵緙栦竴涓皬紼嬪簭helloworld鐑儹韜?br>闅忎究閫変竴涓洰褰曞緩绔媓elloworld.cc鏂囦歡錛岃浜嬫湰鎵撳紑錛屽啓鍏ヤ互涓嬩唬鐮侊細(xì)
#include "stdio.h"
int
main(int args,char* argv[])
{
 printf("helloworld");
 return 0;
}
淇濆瓨錛屽惎鍔╟ygwin cd鍒癶elloworld.cc鏂囦歡鐩綍錛屾墽琛?br>

$ gcc -o helloworld helloworld.cc
鐒跺悗鎵ц
$ ./helloworld
寰楀埌緇撴灉
helloworld

Appendix

pwd   鏄劇ず褰撳墠鐨勮礬寰?br>cd    鏀瑰彉褰撳墠璺緞錛屾棤鍙傛暟鏃惰繘鍏ュ搴旂敤鎴風(fēng)殑home鐩綍
ls    鍒楀嚭褰撳墠鐩綍涓嬬殑鏂囦歡銆傛鍛戒護(hù)鏈塏澶氬弬鏁幫紝姣斿ls -al
ps    鍒楀嚭褰撳墠緋葷粺榪涚▼
kill  鏉姝繪煇涓繘紼?br>mkdir 寤虹珛鐩綍
rmdir 鍒犻櫎鐩綍
rm    鍒犻櫎鏂囦歡
mv    鏂囦歡鏀瑰悕鎴栫洰褰曟敼鍚?br>man   鑱旀満甯姪
less  鏄劇ず鏂囦歡鐨勬渶鏈嚑琛?br>df    鏄劇ず鏂囦歡緋葷粺


pear_li 2008-12-02 15:09 鍙戣〃璇勮
]]>
Linux 涓殑涓浜涘揩鎹烽敭http://m.shnenglu.com/dawnbreak/articles/68119.htmlpear_lipear_liFri, 28 Nov 2008 17:21:00 GMThttp://m.shnenglu.com/dawnbreak/articles/68119.htmlhttp://m.shnenglu.com/dawnbreak/comments/68119.htmlhttp://m.shnenglu.com/dawnbreak/articles/68119.html#Feedback0http://m.shnenglu.com/dawnbreak/comments/commentRss/68119.htmlhttp://m.shnenglu.com/dawnbreak/services/trackbacks/68119.html鑰屽湪ubuntu涓畾涔変袱鑰呭彲浠ユ湁榧犳爣涓敭瀹屾垚
鍏朵粬緇堢蹇嵎閿?br>緇堢蹇嵎閿?br> tab=琛ュ叏
ctrl+a=寮濮嬩綅緗?br> ctrl+e=鏈鍚庝綅緗?br> ctrl+k=鍒犻櫎姝ゅ鑷蟲湯灝炬墍鏈夊唴瀹?br> ctrl+u=鍒犻櫎姝ゅ鑷沖紑濮嬫墍鏈夊唴瀹?br>甯哥敤
win+n鍒囨崲鑳屾櫙棰滆壊椋庢牸
alt+tab=涓嶇敤璇翠簡銆?br> win+tab鑻ュ紑3D鏁堟灉浜嗗垏鎹?br> ctrl+alt+backspace=鐩稿綋浜庡己鍒舵敞閿
ctrl+alt+del=璋冨嚭鍏蟲満鑿滃崟
ctrl+alt+l=閿佸畾妗岄潰

ctrl+alt+d=鏈灝忓寲gnome鎵鏈夌獥鍙?br> ctrl+alt+f2=linux緇堢鐢ㄦ埛錛坅lt + f7榪斿洖xwindows錛宎lt+ <- 鎴?> 榪涜緇堢鍒囨崲錛?br> ctrl+alt+ <- 鎴?> =鍒囨崲妗岄潰



pear_li 2008-11-29 01:21 鍙戣〃璇勮
]]>
ubuntu瑙e帇鍛戒護(hù)鍏ㄨhttp://m.shnenglu.com/dawnbreak/articles/68118.htmlpear_lipear_liFri, 28 Nov 2008 17:11:00 GMThttp://m.shnenglu.com/dawnbreak/articles/68118.htmlhttp://m.shnenglu.com/dawnbreak/comments/68118.htmlhttp://m.shnenglu.com/dawnbreak/articles/68118.html#Feedback0http://m.shnenglu.com/dawnbreak/comments/commentRss/68118.htmlhttp://m.shnenglu.com/dawnbreak/services/trackbacks/68118.html

 ubuntu涓嬩嬌鐢╮ar

1 鐢╱buntu鑷甫鐨勬柊绔嬪緱杞歡鍖呭畨瑁卆rk杞歡錛屾悳绱rk錛岀劧鍚庨変腑灝辮浜嗭紝浼?xì)鑷姩瀹夎闄勫甫鐨?0澶氫釜搴撴枃浠躲?/p>

2 瀹夎瀹宎rk錛屼細(xì)鍦ㄨ彍鍗曠殑闄勪歡涓壘鍒幫紝浣犱細(xì)鍙戠幇ark鍏跺疄宸茬粡璁捐鎴愪負(fù)鏀寔rar錛屽洜涓哄湪鏂板緩鎵撳紑絳夋搷浣滀腑閮藉彲浠ラ夋嫨rar鏍煎紡錛屼笉榪囧彧鏄啓浜嗗嚭鏉ワ紝涓嶆槸鐪熸鐨勬敮鎸併傛帴涓嬫潵涓昏瑕佺櫥鍦轟簡銆?/p>

3 鍒拌繖閲?a >RARLAB錛屼綘鍙互涓嬭澆rar for linux鐨勬枃浠訛紝褰撶劧涓嶆槸鐢╮ar鏍煎紡鍘嬬緝鐨勶紝鐢ㄩ粯璁ゆ墦寮鐨勫綊妗g鐞嗗櫒瑙e帇緙╋紝灝嗗叾涓殑鏂囦歡鎵句竴涓礬寰勫瓨鏀俱?/p>

4  灝嗗垰鎵嶈В鍘嬬緝鐨剅ar for linux鐨勬枃浠朵腑鐨勫洓涓彲鎵ц鏂囦歡錛歞efault.sfx錛宺ar錛宺ar_static錛?unrar錛屽鍒跺埌 /usr/local/bin 鐩綍涓嬨備綘鍙兘闇瑕佺鐞嗗憳甯愬彿銆傚鏋滃湪緇堢涓嬫搷浣滐紝鍙互綆鍗曠殑sudo mv涓涓嬨?/p>

.tar

瑙e寘錛歵ar xvf FileName.tar
鎵撳寘錛歵ar cvf FileName.tar DirName
錛堟敞錛歵ar鏄墦鍖咃紝涓嶆槸鍘嬬緝錛侊級(jí)
---------------------------------------------
.gz
瑙e帇1錛歡unzip FileName.gz
瑙e帇2錛歡zip -d FileName.gz
鍘嬬緝錛歡zip FileName
.tar.gz 鍜?.tgz
瑙e帇錛歵ar zxvf FileName.tar.gz
鍘嬬緝錛歵ar zcvf FileName.tar.gz DirName
---------------------------------------------
.bz2
瑙e帇1錛歜zip2 -d FileName.bz2
瑙e帇2錛歜unzip2 FileName.bz2
鍘嬬緝錛?bzip2 -z FileName
.tar.bz2
瑙e帇錛歵ar jxvf FileName.tar.bz2
鍘嬬緝錛歵ar jcvf FileName.tar.bz2 DirName
---------------------------------------------
.bz
瑙e帇1錛歜zip2 -d FileName.bz
瑙e帇2錛歜unzip2 FileName.bz
鍘嬬緝錛?font color="#ffa500">鏈煡
.tar.bz
瑙e帇錛歵ar jxvf FileName.tar.bz
鍘嬬緝錛?font color="#ffa500">鏈煡
---------------------------------------------
.Z
瑙e帇錛歶ncompress FileName.Z
鍘嬬緝錛歝ompress FileName
.tar.Z
瑙e帇錛歵ar Zxvf FileName.tar.Z
鍘嬬緝錛歵ar Zcvf FileName.tar.Z DirName
---------------------------------------------
.zip
瑙e帇錛歶nzip FileName.zip
鍘嬬緝錛歾ip FileName.zip DirName
---------------------------------------------
.rar
瑙e帇錛歳ar x FileName.rar
鍘嬬緝錛歳ar a FileName.rar DirName

rar璇峰埌錛?a style="color: #003793;" target="_blank">http://www.rarsoft.com/download.htm 涓嬭澆錛?br> 瑙e帇鍚庤灝唕ar_static鎷瘋礉鍒?usr/bin鐩綍錛堝叾浠栫敱$PATH鐜鍙橀噺鎸囧畾鐨勭洰褰曚篃鍙互錛夛細(xì)
[root@www2 tmp]# cp rar_static /usr/bin/rar

---------------------------------------------
.lha
瑙e帇錛歭ha -e FileName.lha
鍘嬬緝錛歭ha -a FileName.lha FileName

lha璇峰埌錛?a style="color: #003793;" target="_blank">http://www.infor.kanazawa-it.ac.jp/~ishii/lhaunix/涓嬭澆錛?br> >瑙e帇鍚庤灝唋ha鎷瘋礉鍒?usr/bin鐩綍錛堝叾浠栫敱$PATH鐜鍙橀噺鎸囧畾鐨勭洰褰曚篃鍙互錛夛細(xì)
[root@www2 tmp]# cp lha /usr/bin/

---------------------------------------------
.rpm
瑙e寘錛歳pm2cpio FileName.rpm | cpio -div
---------------------------------------------
.deb
瑙e寘錛歛r p FileName.deb data.tar.gz | tar zxf -
---------------------------------------------
.tar .tgz .tar.gz .tar.Z .tar.bz .tar.bz2 .zip .cpio .rpm .deb .slp .arj .rar .ace .lha .lzh .lzx .lzs .arc .sda .sfx .lnx .zoo .cab .kar .cpt .pit .sit .sea
瑙e帇錛歴Ex x FileName.*
鍘嬬緝錛歴Ex a FileName.* FileName

sEx鍙槸璋冪敤鐩稿叧紼嬪簭錛屾湰韜茍鏃犲帇緙┿佽В鍘嬪姛鑳斤紝璇鋒敞鎰忥紒
sEx璇峰埌錛?http://sourceforge.net/projects/sex涓嬭澆錛?br> 瑙e帇鍚庤灝唖Ex鎷瘋礉鍒?usr/bin鐩綍錛堝叾浠栫敱$PATH鐜鍙橀噺鎸囧畾鐨勭洰褰曚篃鍙互錛夛細(xì)
[root@www2 tmp]# cp sEx /usr/bin/



pear_li 2008-11-29 01:11 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              久久精品国产视频| 久久在线观看视频| 欧美精品午夜| 午夜精品久久久久久久| 久久国产精品毛片| 99视频精品免费观看| 99re热这里只有精品免费视频| 国产精品啊啊啊| 久久久蜜桃精品| 欧美日韩免费高清一区色橹橹| 久久国产婷婷国产香蕉| 欧美精品一区二区三| 欧美专区中文字幕| 欧美精品一区在线发布| 久久久亚洲成人| 欧美视频精品一区| 欧美激情一二区| 国产日韩专区| 亚洲免费av片| 亚洲国产精品成人va在线观看| 亚洲少妇自拍| 亚洲精品一区在线观看| 欧美主播一区二区三区美女 久久精品人 | 欧美成人四级电影| 久久国产精品色婷婷| 欧美日韩国产在线| 亚洲高清av在线| 国产精品久久国产三级国电话系列| 久久久久国产精品一区二区| 亚洲精品一区二区三区在线观看| 亚洲欧美日本另类| 在线一区二区日韩| 免费欧美视频| 美女久久网站| 国内精品视频在线播放| 亚洲影视在线播放| 亚洲一区精品视频| 欧美三级网址| 亚洲美女黄色| 一本大道久久a久久综合婷婷| 久久久噜噜噜久久人人看| 久久久精彩视频| 国产真实精品久久二三区| 亚洲欧美日韩在线观看a三区| 亚洲午夜精品国产| 欧美日韩一区二区三区高清| 亚洲精品欧美| 中文在线资源观看视频网站免费不卡| 欧美成人日韩| 最新成人av网站| 亚洲精品乱码久久久久久久久| 美女黄色成人网| 欧美激情久久久久| 亚洲国产精品久久精品怡红院| 久久精品国产77777蜜臀| 久久天天躁夜夜躁狠狠躁2022 | 欧美国产日韩二区| 亚洲人成网站999久久久综合| 美女视频黄a大片欧美| 欧美激情亚洲另类| 亚洲视频免费看| 国产精品久久久久久久久久三级 | 在线视频亚洲欧美| 欧美日韩视频在线一区二区| 亚洲视频综合在线| 欧美一区二区三区免费视频| 国产小视频国产精品| 欧美中文在线视频| 欧美国产日韩一区二区在线观看| 亚洲精品乱码久久久久久黑人 | 亚洲国产女人aaa毛片在线| 亚洲精品乱码久久久久| 欧美日韩日本视频| 午夜视频在线观看一区二区三区| 狂野欧美性猛交xxxx巴西| 亚洲精品在线观看免费| 国产精品入口尤物| 久久一区二区三区超碰国产精品| 亚洲日韩第九十九页| 欧美一区免费| 91久久夜色精品国产网站| 欧美日韩国产综合在线| 午夜精品久久久久影视| 欧美大片网址| 亚洲欧美日韩一区二区在线| 国产亚洲精品美女| 欧美二区视频| 亚洲欧美日韩精品在线| 欧美国产三级| 久久成人免费| 亚洲美女视频| 欧美成人久久| 欧美一区二区三区视频免费播放| 久久精品亚洲乱码伦伦中文 | 一区二区高清| 另类激情亚洲| 亚洲一区二区三区精品在线| 揄拍成人国产精品视频| 欧美色欧美亚洲高清在线视频| 久久国产色av| 99精品热6080yy久久| 免费成人在线视频网站| 亚洲性感激情| 亚洲国产欧美不卡在线观看| 国产精品成人免费视频 | 模特精品在线| 亚洲免费一区二区| 亚洲人成绝费网站色www| 国产毛片一区| 欧美日韩亚洲激情| 裸体丰满少妇做受久久99精品| 亚洲香蕉视频| 亚洲精品一区在线| 亚洲福利av| 欧美成人a∨高清免费观看| 久久gogo国模裸体人体| 亚洲图片在线| 一区二区三区精品| 亚洲激情网站| 在线观看一区二区视频| 国产一区欧美| 国产性色一区二区| 国产女主播一区二区| 国产精品九色蝌蚪自拍| 欧美视频观看一区| 欧美视频在线播放| 欧美日韩激情小视频| 欧美电影免费观看网站| 免费国产自线拍一欧美视频| 久久精品在线观看| 久久精品久久99精品久久| 欧美在线国产精品| 欧美专区日韩视频| 久久精品视频亚洲| 久久久综合免费视频| 久久免费99精品久久久久久| 久久精品国产亚洲aⅴ| 久久精品久久99精品久久| 久久九九热re6这里有精品| 久久精品噜噜噜成人av农村| 久久精品一区四区| 久久综合九色99| 久热精品在线视频| 欧美成人影音| 欧美另类女人| 欧美视频国产精品| 国产精品欧美日韩一区| 国产精品视频精品| 国产亚洲日本欧美韩国| 精品1区2区3区4区| 亚洲国产一区二区视频| 日韩亚洲国产精品| 亚洲一线二线三线久久久| 亚洲欧美视频| 久久久久久综合网天天| 另类av一区二区| 亚洲国产精品v| 99精品欧美一区二区三区| 亚洲自拍电影| 久久夜色精品国产噜噜av| 欧美成人精品影院| 欧美午夜免费电影| 国产日韩精品在线观看| 在线观看欧美一区| 99精品视频网| 欧美精品免费视频| 老色鬼久久亚洲一区二区| 亚洲女同在线| 亚洲国产精品一区制服丝袜| 亚洲国产婷婷香蕉久久久久久| 99国产精品久久久久久久成人热| 亚洲少妇中出一区| 久久精品国产精品亚洲精品| 蜜臀av一级做a爰片久久 | 国产精品综合不卡av| 一区在线观看| 中文一区字幕| 久热精品在线视频| 亚洲久久一区二区| 欧美一区二区三区视频| 欧美激情第4页| 国产日韩综合| 99精品国产在热久久| 欧美在线一区二区| 91久久精品国产| 亚洲欧美日韩人成在线播放| 免费观看30秒视频久久| 国产精品卡一卡二| 亚洲人成网站精品片在线观看| 欧美一区二区高清| 亚洲风情在线资源站| 翔田千里一区二区| 欧美亚日韩国产aⅴ精品中极品| 在线不卡欧美| 欧美诱惑福利视频| 亚洲色诱最新| 欧美精品一区二区三区一线天视频| 国产一区二区成人久久免费影院| 一区二区欧美亚洲| 亚洲成色www久久网站|