Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

LinuxÄÚºËÖÐÓÃÓÚͬ²½µÄ¼¸ÖÖ»úÖÆ¼¯ÖÐÆðÀ´·ÖÎö

LinuxÄÚºËÖÐÓÃÓÚͬ²½µÄ¼¸ÖÖ»úÖÆ¼¯ÖÐÆðÀ´·ÖÎö£¬Ç¿µ÷ÁËËüÃÇÖ®¼äÔÚʵÏÖºÍʹÓÃÉϵIJ»Í¬¡£
¡¡¡¡Í¬²½Í¨³£ÊÇΪÁË´ïµ½¶àÏß³ÌЭͬµÄÄ¿µÄ¶øÉè¼ÆµÄÒ»ÖÖ»úÖÆ£¬Í¨³£°üº¬Òì²½ÐźŻúÖÆºÍ»¥³â»úÖÆ×÷ΪÆäʵÏֵĵײ㡣ÔÚLinux 2.4ÄÚºËÖÐÒ²ÓÐÏàÓ¦µÄ¼¼ÊõʵÏÖ£¬°üÀ¨ÐźÅÁ¿¡¢×ÔÐýËø¡¢Ô­×Ó²Ù×÷ºÍµÈ´ý¶ÓÁУ¬ÆäÖÐÔ­×Ó²Ù×÷ºÍµÈ´ý¶ÓÁÐÓÖÊÇʵÏÖÐźÅÁ¿µÄµ×²ã¡£
¡¡¡¡
¡¡¡¡Ò». µÈ´ý¶ÓÁкÍÒì²½ÐźÅ
¡¡¡¡
¡¡¡¡wait queueºÜÔç¾Í×÷Ϊһ¸ö»ù±¾µÄ¹¦Äܵ¥Î»³öÏÖÔÚLinuxÄÚºËÀïÁË£¬ËüÒÔ¶ÓÁÐΪ»ù´¡Êý¾Ý½á¹¹£¬Óë½ø³Ìµ÷¶È»úÖÆ½ôÃܽáºÏ£¬Äܹ»ÓÃÓÚʵÏÖºËÐĵÄÒ첽ʼþ֪ͨ»úÖÆ¡£ÎÒÃÇ´ÓËüµÄʹÓ÷¶Àý×ÅÊÖ£¬¿´¿´µÈ´ý¶ÓÁÐÊÇÈçºÎʵÏÖÒì²½ÐźŹ¦Äܵġ£
¡¡¡¡
¡¡¡¡ÔÚºËÐÄÔËÐйý³ÌÖУ¬¾­³£»áÒòΪijЩÌõ¼þ²»Âú×ã¶øÐèÒª¹ÒÆðµ±Ç°Ị̈߳¬Ö±ÖÁÌõ¼þÂú×ãÁ˲żÌÐøÖ´ÐС£ÔÚ2.4ÄÚºËÖÐÌṩÁËÒ»×éнӿÚÀ´ÊµÏÖÕâÑùµÄ¹¦ÄÜ£¬ÏÂÃæµÄ´úÂë½ÚÑ¡×Ôkernel/printk.c£º
¡¡¡¡
¡¡¡¡ unsigned long log_size;
¡¡¡¡1: DECLARE_WAIT_QUEUE_HEAD(log_wait);...
¡¡¡¡4: spinlock_t console_lock = SPIN_LOCK_UNLOCKED;...
¡¡¡¡ int do_syslog(int type,char *buf,int len){
¡¡¡¡ ...
¡¡¡¡2: error=wait_event_interruptible(log_wait,log_size);
¡¡¡¡ if(error)
¡¡¡¡ goto out;
¡¡¡¡ ...
¡¡¡¡5: spin_lock_irq(
¡¡¡¡ ...
¡¡¡¡ log_size--;
¡¡¡¡ ...
¡¡¡¡6: spin_unlock_irq(
¡¡¡¡ ...
¡¡¡¡ }
¡¡¡¡ asmlinkage int printk(const char *fmt,...){
¡¡¡¡ ...
¡¡¡¡7: spin_lock_irqsave(console_lock,flags);
¡¡¡¡ ...
¡¡¡¡ log_size++;...
¡¡¡¡8: spin_unlock_irqrestore(
¡¡¡¡3: wake_up_interruptible(log_wait);
¡¡¡¡ ...
¡¡¡¡ }
¡¡¡¡
¡¡¡¡Õâ¶Î´úÂëʵÏÖÁËprintkµ÷ÓúÍsyslogÖ®¼äµÄͬ²½£¬syslogÐèÒªµÈ´ýprintkËÍÊý¾Ýµ½»º³åÇø£¬Òò´Ë£¬ÔÚ2:´¦µÈ´ýlog_size·Ç0£»¶øprintkÒ»±ß´«ËÍÊý¾Ý£¬Ò»±ßÔö¼Ólog_sizeµÄÖµ£¬Íê³Éºó»½ÐÑÔÚlog_waitÉϵȴýµÄËùÓÐỊ̈߳¨Õâ¸öÏ̲߳»ÊÇÓû§¿Õ¼äµÄÏ̸߳ÅÄ¶øÊǺËÄÚµÄÒ»¸öÖ´ÐÐÐòÁУ©¡£Ö´ÐÐÁË3:µÄwake_up_interruptible()ºó£¬2:´¦µÄwait_event_interruptible()·µ»Ø0£¬´Ó¶ø½øÈësyslogµÄʵ¼Ê¶¯×÷¡£
¡¡¡¡
¡¡¡¡1:ÊǶ¨Òålog_waitÈ«¾Ö±äÁ¿µÄºêµ÷Óá£
¡¡¡¡
¡¡¡¡ÔÚʵ¼Ê²Ù×÷log_sizeÈ«¾Ö±äÁ¿µÄʱºò£¬»¹Ê¹ÓÃÁËspin_lock×ÔÐýËøÀ´ÊµÏÖ»¥³â£¬¹ØÓÚ×ÔÐýËø£¬ÕâÀïÔݲ»×÷½âÊÍ£¬µ«´ÓÕâ¶Î´úÂëÖÐÒѾ­¿ÉÒÔÇå³þµÄÖªµÀËüµÄʹÓ÷½·¨ÁË¡£
¡¡¡¡
¡¡¡¡ËùÓÐwait queueʹÓÃÉϵļ¼ÇÉÌåÏÖÔÚwait_event_interrupt


Ïà¹ØÎĵµ£º

linuxÃæÊÔÌâ²Î¿¼´ð°¸

Ò»£®Ìî¿ÕÌ⣺
1. ÔÚLinuxϵͳÖУ¬ÒÔ Îļþ ·½Ê½·ÃÎÊÉ豸 ¡£
2. LinuxÄÚºËÒýµ¼Ê±£¬´ÓÎļþ /etc/fstab ÖжÁȡҪ¼ÓÔØµÄÎļþϵͳ¡£
3. LinuxÎļþϵͳÖÐÿ¸öÎļþÓà i½Úµã À´±êʶ¡£
4. È«²¿´ÅÅÌ¿éÓÉËĸö²¿·Ö×é³É£¬·Ö±ðΪÒýµ¼¿é ¡¢×¨ÓÃ¿é ¡¢ i½Úµã±í¿é ºÍÊý¾Ý´æ´¢¿é¡£
5. Á´½Ó·ÖΪ£º Ó²Á´½Ó ºÍ ·ûºÅÁ´½Ó ¡£
6. ³¬¼¶¿é°üº¬ÁËi½ ......

30µÀǶÈëʽLinuxÄÚºËÈí¼þ¿ª·¢µÄ²âÊÔÌâ


Èç¹ûÄãÄÜÕýÈ·»Ø´ðÒÔÏÂÎÊÌâ²¢Éî¿ÌÀí½âÏà¹ØÖªÊ¶µãÔ­Àí£¬ÄÇôÄã¿ÉÒÔËãµÃÉÏ»ù±¾ºÏ¸ñµÄLinuxÄں˿ª·¢¹¤³Ìʦ£¬ÊÔÊÔ¿´£¡
1)LinuxÖÐÖ÷ÒªÓÐÄļ¸ÖÖÄÚºËËø£¿
2)LinuxÖеÄÓû§Ä£Ê½ºÍÄÚºËģʽÊÇʲôº¬Ò⣿
3)ÔõÑùÉêÇë´ó¿éÄÚºËÄڴ棿
4)Óû§½ø³Ì¼äͨÐÅÖ÷ÒªÄļ¸ÖÖ·½Ê½£¿
5)ͨ¹ý»ï°éϵͳÉêÇëÄÚºËÄÚ´æµÄº¯ÊýÓÐÄÄЩ£¿
 
6)Í ......

Linux Äں˱àÒë²½Öè £¨×ª£©

ÏÂÔØÐÂÄÚºËÒÔºó£¬ÏȰÑLinux-2.6.18.2.tar.bz2 ¸´ÖƵ½/usr/src/ µÄÏÂÃæ
tar –jxvf  Linux-2.6.18.2.tar.bz2 cd Linux-2.6.18.2 make mrproper °ÑÔ­À´±àÒë²úÉúµÄÀ¬»øÉ¾³ý
ÅäÖÃÄں˿ÉÒÔ¸ù¾ÝÐèÒªÓë°®ºÃʹÓÃÏÂÃæÃüÁîÖеÄÒ»¸ö£º
££make config £¨»ùÓÚÎı¾µÄ×îΪ´«Í³µÄÅäÖýçÃæ£©
££make menuconfig £¨»ùÓÚÎı¾ ......

ʹÓà /sys Îļþϵͳ·ÃÎÊ Linux ÄÚºË

sysfs ÊÇ Linux ÄÚºËÖÐÉè¼Æ½ÏеÄÒ»ÖÖÐéÄâµÄ»ùÓÚÄÚ´æµÄÎļþϵͳ£¬ËüµÄ×÷ÓÃÓë proc ÓÐЩÀàËÆ£¬µ«³ýÁËÓë
proc ÏàͬµÄ¾ßÓв鿴ºÍÉ趨Äں˲ÎÊý¹¦ÄÜÖ®Í⣬»¹ÓÐΪ Linux ͳһÉ豸ģÐÍ×÷Ϊ¹ÜÀíÖ®Óá£Ïà±ÈÓÚ proc Îļþϵͳ£¬Ê¹Óà sysfs
µ¼³öÄÚºËÊý¾ÝµÄ·½Ê½¸üΪͳһ£¬²¢ÇÒ×éÖ¯µÄ·½Ê½¸üºÃ£¬ËüµÄÉè¼Æ´Ó proc ÖÐÎüÈ¡Á˺ܶà½Ìѵ¡£±¾Îľ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ