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

linux½ø³Ì¹ÜÀíÖ®½ø³Ì´´½¨

 Ëùν½ø³Ì¾ÍÊdzÌÐòÖ´ÐÐʱµÄÒ»¸öʵÀý. ËüÊÇÏÖ´ú²Ù×÷ϵͳÖÐÒ»¸öºÜÖØÒªµÄ³éÏó,ÎÒÃÇ´Ó½ø³ÌµÄÉúÃüÖÜÆÚ:´´½¨,Ö´ÐÐ,ÏûÍöÀ´·ÖÎöÒ»ÏÂLinuxÉϵĽø³Ì¹ÜÀíʵÏÖ.
Ò»:ǰÑÔ
½ø³Ì¹ÜÀí½á¹¹;
ÔÚÄÚºËÖÐ,ÿһ¸ö½ø³Ì¶ÔÓ¦Ò»¸ötask.¾ÍÊÇÒÔǰËù½²µÄPCB.ËüµÄ½á¹¹ÈçÏÂ(include/linux/sched.h):
struct task_struct {
    volatile long state;   /* -1 unrunnable, 0 runnable, >0 stopped */
     void *stack;
     atomic_t usage;
     unsigned int flags;    /* per process flags, defined below */
     unsigned int ptrace;
 
     int lock_depth;        /* BKL lock depth */
     ……
     ……
}
ÓÉÓÚÕâ¸ö½á¹¹°üº¬Á˽ø³ÌµÄËùÓÐÐÅÏ¢,ËùÒÔÊ®·ÖÅÓ´ó,ÎÒÃÇÔÚÒÔºóµÄ·ÖÎöÖÐÔÙÀ´·ÖÎö¸÷³ÉÔ±µÄº¬Òå¡£
Task_structµÄ´æ·Å£º
ÔÚϵͳÔËÐйý³ÌÖУ¬½ø³ÌÇл»Ê®·ÖƵ·±£¬ËùÒÔÎÒÃÇÐèÒªÒ»ÖÖ·½Ê½Äܹ»¿ìËÙ»ñµÃµ±Ç°½ø³ÌµÄtask_struct¡£linuxµÄtask_struct´æ·ÅÈçÏÂͼËùʾ£º
 
 
ÈçÉÏͼËùʾ£º½ø³ÌÄں˶ÑÕ»µ×²¿´æ·Å×Åstruct thread_struct.¸Ã½á¹¹ÖÐÓÐÒ»¸ö³ÉÔ±Ö¸Ïòµ±Ç°½ø³ÌµÄtask_struct.ÔÚÄÚºËÖÐÓÐÒ»¸ö»ñÈ¡µ±Ç°½ø³ÌµÄthread_struct µÄºê¡£ËüµÄ¶¨ÒåÈçÏ£º
#define GET_THREAD_INFO(reg)
     movl $THREAD, reg;
     andl %esp, reg
THREAD_SIZE¶¨ÒåÈçÏ£º
#ifdef CONFIG_4KSTACKS
#define THREAD_SIZE            (4096)
#else
#define THREAD_SIZE         (8192)
#endif
ÎÒÃÇÌÖÂÛ³£¹æµÄ8KÕ»µÄÇé¿ö¡£-THREAD_SIZE¼´Îª£º0xFFFFE000.ÒòΪջ±¾ÉíÊÇÒ³Ãæ¶ÔÆëµÄ.ËùÒÔÖ»Òª°ÑµÍ13λÆÁ±×µô¾ÍÊÇthread_struct.µÄµØÖ·.
½ø³ÌÁ´±í:
ÿһ¸ö½ø³Ì¶¼Óи¸½ø³Ì,ÏàÓ¦µÄÿ¸ö½ø³Ì¶¼»á¹ÜÀí×Ô¼ºµÄ×Ó½ø³Ì.ÔÚlinuxϵͳÖÐ,ËùÓнø³Ì¶¼ÊÇÓÉinit½ø³ÌÅÉÉú¶øÀ´.init½ø³ÌµÄ½ø³ÌÃèÊö·ûÓÉinit_task¾²Ì¬Éú³É.ËüµÄ¶¨ÒåÈçÏÂËùʾ:
struct task_struct init_task = INIT_TASK(init_task);
#define INIT_TASK(tsk)
{  &nbs


Ïà¹ØÎĵµ£º

[תÌû]LinuxÇý¶¯¿ª·¢Ñ§Ï°µÄһЩ±ØÒª²½Öè

 1. ѧ»áд¼òµ¥µÄmakefile
2. ±àһЩӦÓÃ
³ÌÐò
£¬¿ÉÒÔÓÃmakefileÅÜÆðÀ´
3. ѧ»áдÇý¶¯
µÄmakefile
4. дһ¼òµ¥charÇý¶¯£¬makefile±àÒëͨ¹ý£¬¿ÉÒÔinsmod£¬ lsmod£¬ rmmod. ÔÚÇý¶¯µÄinitº¯ÊýÀï´òÓ¡hello world£¬insmodºóÓ¦¸ÃÄܹ»Í¨¹ýdmesg¿´µ½Êä³ö
¡£
5. дһÍêÕûÇý¶¯£¬ ¼ÓÉÏread£¬ write£¬ ioctl£¬ pollingµÈ¸ ......

linuxÖеĶ¯Ì¬¿âºÍ¾²Ì¬¿â

 1.¸ÅÄîºÍÇø±ð£º
    ¾²Ì¬¿â¾ÍÊÇÔÚ±àÒë¹ý³ÌÖÐһЩĿ±êÎļþµÄ¼¯ºÏ¡£¾²Ì¬¿âÔÚ³ÌÐòÁ´½ÓµÄʱºòʹÓã¬Á´½ÓÆ÷»á½«³ÌÐòÖÐʹÓõ½º¯ÊýµÄ´úÂë´Ó¿âÎļþÖп½±´µ½Ó¦ÓóÌÐòÖС£Ò»µ©Á´½ÓÍê³É£¬ÔÚÖ´ÐгÌÐòµÄʱºò¾Í²»ÐèÒª¾²Ì¬¿âÁË¡£
    ÓÉÓÚÿ¸öʹÓþ²Ì¬¿âµÄÓ¦ÓóÌÐò¶¼ÐèÒª¿½±´ËùÓú¯ÊýµÄ´úÂë£¬Ë ......

[Ê®ÔÂÍùÎô]——LinuxÄÚºËÖеÄlist.hdz̸

ΪʲôҪ½Ð×ö“Ê®ÔÂÍùÎô”ÄØ£¬ÊÇΪÁ˼ÍÄîÎÒµÄÔ­²©¿Í£¬http://www.casual0402.cn¡£
²»ÖªµÀΪʲô£¬Í»È»ÏëÀ´Ò»¸öеĿªÊ¼——¶øÄǸö²©¿Í´æ»îÖÁ½ñ¸ÕºÃÊ®¸öÔ£¬Ò²ÓÐÊ®¸öÔÂÀïµÄÎĵµ¡£
Ê®ÔÂÍùÎô£¬×ÜÓÐһЩ¾õµÃÕä¹óµÄ£¬ËùÒÔ°áǨµ½ÕâÀïÀ´¡£
¶øÕâÆªÎÄÕÂÊÇÔÚ09.04.10ÀïдµÄ¡£
ÖÕ¹éÊÇÒ»¼Ò̸֮¡£
Jason Lee
& ......

²é¿´linux°æ±¾ÃüÁî

1. ²é¿´Äں˰汾ÃüÁ
1) [root@q1test01 ~]# cat /proc/version
Linux version 2.6.9-22.ELsmp (bhcompile@crowe.devel.redhat.com) (gcc version 3.4.4 20050721 (Red Hat 3.4.4-2)) #1 SMP Mon Sep 19 18:00:54 EDT 2005
2) [root@q1test01 ~]# uname -a
Linux q1test01 2.6.9-22.ELsmp #1 SMP Mon Sep 19 18:00:54 ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ