תÌù£ºÊóÑÛ¿´Linuxµ÷¶ÈÆ÷ £¨2£©
ת×Ô http://hi.baidu.com/grantzhou/blog/item/56a91cf3b685cdc90a46e09d.html
ËÄ¡¢sched_setscheduler()ϵͳµ÷Óá£
Õâ¸öϵͳµ÷Óõĵ÷Óòã´ÎºÍ´úÂë¶¼±Ènice¸´ÔÓЩ£¬ËùÉæ¼°µÄÒ²Óв»ÉÙÎÒÃÇÕâÀï²»¸ÐÐËȤµÄ¶«Î÷£¬Òò´Ë¾Í²»ÔÙÒÔչʾ´úÂëµÄ·½·¨½éÉÜËüÃÇÁË¡£ÕâÀï½öÔÚ¹¦Äܲã´ÎÉÏ£¬´ÓÓënice()¶Ô±ÈµÄ½Ç¶ÈÉ϶ÔËü×öÒ»¸ö¼òÒª½éÉÜ£º
1¡¢ÒòΪsched_setscheduler()ϵͳµ÷Óò»½ö¿ÉÒÔÐ޸ĵ±Ç°ÈÎÎñµÄµ÷¶È²ßÂÔºÍÓÅÏȼ¶£¬»¹¿ÉÒÔÐÞ¸ÄÖ¸¶¨ÈÎÎñµÄÕâ¸öÐÅÏ¢¡£ËùÒÔ£¬ËüµÄºÏ·¨ÐÔ¼ì²é¸üÑϸñЩ£¬×îÖØÒªµÄÊÇÔö¼ÓÁËÓû§Éí·ÝÑéÖ¤£¬µ±È»Õâ¸ö¼ì²éÒÀ¾ÉÊÇÔÚtask_struct½á¹¹ÉÏ×öµÄ¡£
2¡¢ºÍnice()Ò»Ñù£¬sched_setscheduler()Ò²²»ÌرðÇø·Ö½ø³ÌºÍỊ̈߳¬½«Á½Õß×÷µÈͬ´¦Àí£¬¸ÃÈÎÎñÒ²»áÓÐÖØÐ¼ÓÈëÔËÐжÓÁеÄÐÐΪ¡£
3¡¢sched_setscheduler()Ö»Ð޸Ķ¯Ì¬ÓÅÏȼ¶£¬¶ÔÓÚĬÈϵ÷¶È²ßÂÔ£¬Ëü±»ÉèÖÃΪÓ뾲̬ÓÅÏȼ¶ÏàµÈ¡£
Îå¡¢¾²Ì¬ÓÅÏȼ¶ÀïµÄèÄå¡£
˵ÁËÕâô¶à¾²Ì¬ÓÅÏȼ¶ÈçºÎÈçºÎ£¬Ëüµ½µ×ÊǸöÊ²Ã´ÍæÒâ¶ù£¿ÏÖÔÚ¾ÍÈÃÎÒÃǰþµôÆäÉÏËùÓпÉÄܵÄ"ºÄ×ÓÒ©"£¬ÅªÇå³þËüµ½µ×ÊÇÔõÑùÓ°Ïì½ø³ÌµÄ¡£"¾²Ì¬ÓÅÏȼ¶"£¬Ö®ËùÒÔ¹ÚÖ®ÒÔ"¾²Ì¬"ǰ׺£¬ÊÇÒòΪÄÚºË×Ô¼º´Ó²»Ö÷¶¯ÐÞ¸ÄËü£¬Ö»ÓÐͨ¹ýϵͳµ÷ÓòÅÄÜÐÞ¸ÄËü¡£ÄÇô£¬ËüÔÚµ÷¶ÈÀïµ½µ×°çÑÝʲô½ÇɫĨ£¿Èݰ³×ÐϸµÀÀ´£º
1¡¢¼ÆËãÈÎÎñʱ¼äƬ¡£
ÈôúÂë˵»°£¬ÏÈ¿´task_timeslice()ʵÏÖ£º
/*
* task_timeslice() scales user-nice values [ -20 ... 0 ... 19 ]
* to time slice values: [800ms ... 100ms ... 5ms]
*
* The higher a thread's priority, the bigger timeslices
* it gets during one round of execution. But even the lowest
* priority thread gets MIN_TIMESLICE worth of execution time.
*/
#define SCALE_PRIO(x, prio) \
max(x * (MAX_PRIO - prio) / (MAX_USER_PRIO/2), MIN_TIMESLICE)
static inline unsigned int task_timeslice(task_t *p)
{
if (p->static_prio < NICE_TO_PRIO(0))
return SCALE_PRIO(DEF_TIMESLICE*4, p->static_prio);
else
return SCALE_PRIO(DEF_TIMESLICE, p->static_prio);
}
´ÓÃû×ÖÉÏÒ²¿´µÃ³öÀ´£¬Õâ¸öº¯Êý¾ÍÊÇÓÃÀ´¼ÆËãÈÎÎñʱ¼äƬµÄ¡£Ò»°ã˵À´£¬Ö»ÓÐÔÚʱ¼äƬÏûºÄ¹âµÄʱºò²ÅÖØÐ¼ÆËãÈÎÎñµÄʱ¼äƬ£¬¶øÕâ¸ö¼ÆËã¹ý³ÌÖ»Ó뾲̬ÓÅÏȼ¶Óйء£Õâ¸öº¯ÊýµÄÂß¼ºÜ¼òµ¥£¬Èç¹ûÈÎÎñpµÄniceÖµ<0£¨Ò²¾ÍÊÇ˵¾²Ì¬ÓÅÏÈ
Ïà¹ØÎĵµ£º
7.1.1 Linux·ÖÇø¼ò½é
Ëùν·ÖÇø£¬¾ÍÊÇ´ÅÅÌÉϽ¨Á¢µÄÓÃÓÚ´æ´¢Êý¾ÝºÍÎļþµÄµ¥¶ÀÇøÓò²¿·Ö¡£´ÅÅÌ·ÖÇø¿ÉÒÔ·ÖΪÖ÷·ÖÇøºÍÀ©³ä·ÖÇø£¬ÆäÖÐÖ÷·ÖÇø¾ÍÊǰüº¬²Ù×÷ϵͳÆô¶¯Ëù±ØÐëµÄÎļþºÍÊý¾ÝµÄ´ÅÅÌ·ÖÇø£»À©³ä·ÖÇøÒ»°ãÓÃÀ´´æ·ÅÊý¾ÝºÍÓ¦ÓóÌÐòÎļþ¡£Ò»¸ö´ÅÅÌ×î¶à¿É·ÖΪ4¸ö·ÖÇø£¬×î¶à¿ÉÒÔÓÐ4¸öÖ÷·ÖÇø£¬¼´È«²¿·ÖÇø¶¼±»»®·ÖΪÖ÷·ÖÇø¡£Èç¹ ......
ELDK;Ö§³ÖGDBµÄBDIGDB Firmware FOR Linux£»»ùÓÚwindowsµÄǶÈëʽLinux½»²æ¿ª·¢¹¤¾ßÈí¼þINSIGHT GNUPROXTOOLS ;Ö§³ÖGDBµÄBDIGDB FIRMWARE FOR WINDOWS
bootloader
German DENK U-boot GNU
fuction:
network support;(tftp\Bootp);;;FlashRAM ;´®¿Údeng¶àÖÖ·½Ê½ÏÂÔØ ......
rhel5Óërhel4²»Í¬µÄµØ·½ÊÇ£¬rhel5ÀïûÓÐ/etc/X11/gdm/Õâ¸öĿ¼£¬rhel5µÄgdmµÄÅäÖÃÎļþ·ÅÔÚÕâÀï/usr/share/gdm/defaults.conf¡£
ÐèÒªÐ޸ĵĵط½ÈçÏ£º
ÐÞ¸Ä/usr/share/gdm/defaults.confÎļþ£¬È·±£ÀïÃæÓÐÒÔϼ¸ÐУº
Enable=true
DisplaysPerHost=10
Port=177
ÔÙÐÞ¸Ä/etc/inittabÎļþ£¬°ÑĬÈϼ¶±ð¸ÄΪ5,ÔÙ¼ÓÈëÒÔÏÂÐ ......
Anatomy of the Linux slab allocator
Learn how Linux manages memory
M. Tim Jones, Consultant Engineer, Emulex Corp.
M. Tim Jones is an embedded software architect and the author of GNU/Linux Application Programming, AI Application Programming, and BSD Sockets Programming from a Multilanguage Persp ......