LinuxÖеŤ×÷¶ÓÁÐ (2.6.0~2.6.19 and 2.6.20 ~ now)
http://blog.chinaunix.net/u2/69889/showart_971040.html
LinuxÖеŤ×÷¶ÓÁÐ
£Ûǰ¼Ç£ÝLinux×Ô´Ó2.6.20Ö®ºó£¬¹¤×÷¶ÓÁз¢ÉúÁËһЩ±ä»¯£¬Ä¿Ç°´ÓÍøÂçÉÏËÑË÷µÄ×ÊÁÏÒ»°ã¶¼ÊǽéÉÜÀϰ汾µÄ¹¤×÷¶ÓÁУ¬ºÜÉÙ¼ûµ½¶Ôа汾µÄ½éÉÜ¡£±¾ÎĶÔÐÂÀϰ汾¶¼×öÁ˼òÒª¸ÅÊö£¬²¢·Ö±ðÌṩÁ˼òµ¥µÄʵ×÷°¸Àý¡£
*******************************************************************************************************************
¹¤×÷¶ÓÁÐ
(work
queue)
ÊÇ
Linux
kernel
Öн«¹¤×÷ÍÆºóÖ´ÐеÄÒ»ÖÖ»úÖÆ¡£ÕâÖÖ»úÖÆºÍ
BH
»ò
Tasklets
²»Í¬Ö®´¦ÔÚÓÚ¹¤×÷¶ÓÁÐÊǰÑÍÆºóµÄ¹¤×÷½»ÓÉÒ»¸öÄÚºËÏß³ÌÈ¥Ö´ÐУ¬Òò´Ë¹¤×÷¶ÓÁеÄÓÅÊÆ¾ÍÔÚÓÚËüÔÊÐíÖØÐµ÷¶ÈÉõÖÁ˯Ãß¡£
¹¤×÷¶ÓÁÐÊÇ
2.6
Äں˿ªÊ¼ÒýÈëµÄ»úÖÆ£¬ÔÚ
2.6.20
Ö®ºó£¬¹¤×÷¶ÓÁеÄÊý¾Ý½á¹¹·¢ÉúÁËһЩ±ä»¯£¬Òò´Ë±¾ÎÄ·Ö³ÉÁ½¸ö²¿·Ö¶Ô
2.6.20
֮ǰºÍÖ®ºóµÄ°æ±¾·Ö±ð×ö½éÉÜ¡£
1
¡¢
2.6.0~2.6.19
Êý¾Ý½á¹¹£º
struct
work_struct {
unsigned
long pending;
struct
list_head entry;
void
(*func)(void *);
void
*data;
void
*wq_data;
struct
timer_list timer;
};
pending
ÊÇÓÃÀ´¼Ç¼¹¤×÷ÊÇ·ñÒѾ¹ÒÔÚ¶ÓÁÐÉÏ£»
entry
ÊÇÑ»·Á´±í½á¹¹£»
func
×÷Ϊº¯ÊýÖ¸Õ룬ÓÉÓû§ÊµÏÖ£»
data
ÓÃÀ´´æ´¢Óû§µÄ˽ÈËÊý¾Ý£¬´ËÊý¾Ý¼´ÊÇ
func
µÄ²ÎÊý£»
wq_data
Ò»°ãÓÃÀ´Ö¸Ïò¹¤×÷ÕßỊ̈߳¨¹¤×÷ÕßÏ̲߳ο¼ÏÂÎÄ£©£»
timer
ÊÇÍÆºóÖ´ÐеĶ¨Ê±Æ÷¡£
work_struct
µÄÕâЩ±äÁ¿À
func
ºÍ
data
ÊÇÓû§Ê¹Óõ쬯äËûÊÇÄÚ²¿±äÁ¿£¬ÎÒÃÇ¿ÉÒÔ²»ÓÃÌ«¹ý¹ØÐÄ¡£
API
£º
1)
INIT_WORK(_work, _func, _data)
³õʼ»¯Ö¸¶¨¹¤×÷£¬Ä¿µÄÊǰÑÓû§Ö¸¶¨µÄº¯Êý
_func
¼°
_func
ÐèÒªµÄ²ÎÊý
_data
¸³¸ø
work_struct
µÄ
func
¼°
data
±äÁ¿¡£
2)
int schedule_work(struct work_struct *work)
¶Ô¹¤×÷½øÐе÷¶È£¬¼´°Ñ¸ø¶¨¹¤×÷µÄ´¦Àíº¯ÊýÌá½»¸øÈ±Ê¡µÄ¹¤×÷¶ÓÁк͹¤×÷ÕßÏ̡߳£¹¤×÷ÕßÏ̱߳¾ÖÊÉÏÊÇÒ»¸öÆÕͨµÄÄÚºËỊ̈߳¬ÔÚĬÈÏÇé¿öÏ£¬Ã¿¸ö
CPU
¾ùÓÐÒ»¸öÀàÐÍΪ“
events”
µÄ¹¤×÷ÕßỊ̈߳¬µ±µ÷ÓÃ
schedule_work
ʱ£¬Õâ¸ö¹¤×÷ÕßÏ̻߳ᱻ»½ÐÑÈ¥Ö´Ðй¤×÷Á´±íÉϵÄËùÓй¤×÷¡£
3)
int schedule_delayed_work(struct work_struct *work, unsigned long
delay)
ÑÓ³ÙÖ´Ðй¤×÷£¬Óë
schedu
Ïà¹ØÎĵµ£º
Linux»·¾³ÏµÄÈí¼þ°²×°£¬²¢²»ÊÇÒ»¼þÈÝÒ×µÄÊÂÇ飻Èç¹ûͨ¹ýÔ´´úÂë±àÒëºóÔÚ°²×°£¬µ±È»ÊÂÇé¾Í¸üΪ¸´ÔÓһЩ£»ÏÖÔÚ°²×°¸÷ÖÖÈí¼þµÄ½Ì³Ì¶¼·Ç³£ÆÕ±é£»µ«Íò±ä²»ÀëÆäÖУ¬¶Ô»ù´¡ÖªÊ¶µÄÔúÊµÕÆÎÕ£¬°²×°¸÷ÖÖÈí¼þµÄÎÊÌâ¾ÍÓÈжø½âÁË¡£Configure½Å±¾ÅäÖù¤¾ß¾ÍÊÇ»ù´¡Ö®Ò»£¬ËüÊÇautoconfµÄ¹¤¾ßµÄ»ù±¾Ó¦Óá£
ÓëһЩ¼¼ÇÉÏà±È£¬ConfigureÏԵûù´ ......
http://hi.baidu.com/j_fo/blog/item/7412bb018deab109728da572.html
LinuxÄÚºË irq/soft irq/tasklet/ͬ²½
2009-10-08 21:22
1.Öжϴ¦Àí³ÌÐò½áÊøÖ®Ç°£¬²»ÔÊÐí²úÉúÏàͬµÄÖжÏʼþ£»£¨½ûÓÃPICÉϸÃÖжϣ¬µ«¿ÉÒÔ²úÉúÆäËûÖжϣ©
2.Öжϴ¦Àí³ÌÐò¡¢ÈíÖжϡ¢tasklet¼È²»¿É±»ÇÀÕ¼Ò²²»Äܱ»×èÈû£¬×î¶à·¢ÉúÖжÏǶÌ×£»
3.Ö´ÐÐÖÐ¶Ï ......
http://hi.baidu.com/styl_007/blog/item/82b833f475036ce67609d7b6.html
Öжϴ¦ÀíµÄtasklet£¨Ð¡ÈÎÎñ£©»úÖÆ£²»¹ýÈç´Ë
2009-08-10 18:30
ÖжϷþÎñ³ÌÐòÒ»°ã¶¼ÊÇÔÚÖжÏÇëÇ󹨱յÄÌõ¼þÏÂÖ´ÐеÄ
,
ÒÔ±ÜÃâǶÌ×¶øÊ¹ÖжϿØÖƸ´ÔÓ»¯¡£µ«ÊÇ£¬ÖжÏÊÇÒ»¸öËæ»úʼþ£¬ËüËæÊ±»áµ½À´£¬Èç¹û¹ØÖжϵÄʱ¼äÌ«³¤£¬
CPU
¾Í²»Äܼ°Ê±ÏìÓ¦Æä ......
1¡¢¼ì²â
°²×°Ö®Ç°Ïȼì²âÊÇ·ñÕâЩÈí¼þ°üÒѰ²×°£¬·½·¨ÈçÏ£º[root@localhost
root]#rpm -q telnet»ò[root@localhost root]#rpm -q telnet-client
[root@localhost root]#rpm -q
telnet-server
Èç¹ûûÓмì²âµ½Èí¼þ°ü£¬ÐèÒª½øÐа²×°£¬¾Ý˵red hat Linux
9ĬÈÏÒѰ²×°ÁËtelnetÈí¼þ°ü£¬²»ÖªµÀΪʲôÎÒµÄûÓУ¬»¹ºÃû¹ØÏµ£ ......
7.5. Tasklets »úÖÆ
ÉÏÒ»Ò³
µÚ 7 Õ ʱ¼ä, ÑÓʱ, ºÍÑÓºó¹¤×÷
ÏÂÒ»Ò³
http://lsec.cc.ac.cn/~tengfei/doc/ldd3/index.html
Linux É豸Çý¶¯ Edition 3
7.5. Tasklets »úÖÆ
ÁíÒ»¸öÓйØÓÚ¶¨Ê±ÎÊÌâµÄÄÚºËÉèÊ©ÊÇ tasklet »úÖÆ. Ëü´ó²¿·ÖÓÃÔÚÖжϹÜÀí(ÎÒÃǽ«ÔÚµÚ 10 ÕÂÔٴμûµ½). ......