ÎÄÕÂÀ´Ô´:http://www.ibm.com/developerworks/cn/linux/l-memmod/index.html
¼¶±ð£º ³õ¼¶
Vikram Shukla (vikshukl@in.ibm.com), Èí¼þ¹¤³Ìʦ, IBM
2006 Äê 2 ÔÂ 23 ÈÕ
ÔÚÕâÆª Linux® ÄÚ´æÄ£ÐÍÖ¸ÄÏÖУ¬ÎÒÃǽ«Ñ§Ï°ÈçºÎ¹¹½¨ºÍ¹ÜÀíÄÚ´æ·½ÃæµÄ»ù´¡ÖªÊ¶¡£±¾Ö¸ÄϽéÉÜÁËÄÚ´æ¿ØÖÆµ¥Ôª¡¢·ÖҳģÐÍ·½ÃæµÄÄÚÈÝ£¬²¢Ïêϸ½éÉÜÁËÎïÀíÄÚ´æÇøÓò·½ÃæµÄ֪ʶ¡£
Àí½â Linux ʹÓõÄÄÚ´æÄ£ÐÍÊÇ´Ó¸ü´ó³Ì¶ÈÉÏÕÆÎÕ Linux Éè¼ÆºÍʵÏֵĵÚÒ»²½£¬Òò´Ë±¾ÎĽ«¸ÅÊö Linux ÄÚ´æÄ£Ðͺ͹ÜÀí¡£
Linux ʹÓõÄÊǵ¥Ò»ÕûÌåʽ½á¹¹ (Monolithic)£¬ÆäÖж¨ÒåÁËÒ»×éÔÓï»òϵͳµ÷ÓÃÒÔʵÏÖ²Ù×÷ϵͳµÄ·þÎñ£¬ÀýÈçÔÚ¼¸¸öÄ£¿éÖÐÒÔ³¬¼¶Ä£Ê½ÔËÐеĽø³Ì¹ÜÀí¡¢²¢·¢¿ØÖƺÍÄÚ´æ¹ÜÀí·þÎñ¡£¾¡¹Ü³öÓÚ¼æÈÝÐÔ¿¼ÂÇ£¬Linux ÒÀÈ»½«¶Î¿ØÖƵ¥ÔªÄ£ÐÍ (segment control unit model) ±£³ÖÒ»ÖÖ·ûºÅ±íʾ£¬µ«Êµ¼ÊÉÏÒѾºÜÉÙʹÓÃÕâÖÖÄ£ÐÍÁË¡£
ÓëÄÚ´æ¹ÜÀíÓйصÄÖ÷ÒªÎÊÌâÓУº
ÐéÄâÄÚ´æµÄ¹ÜÀí£¬ÕâÊǽéÓÚÓ¦ÓóÌÐòÇëÇóÓëÎïÀíÄÚ´æÖ®¼äµÄÒ»¸öÂß¼²ã¡£
ÎïÀíÄÚ´æµÄ¹ÜÀí¡£
ÄÚºËÐéÄâÄÚ´æµÄ¹ÜÀí/ÄÚºËÄÚ´æ·ÖÅäÆ÷£¬ÕâÊÇÒ»¸öÓÃÀ´Âú×ã¶ÔÄÚ´æµÄÇëÇóµÄ×é¼þ¡£ÕâÖÖ¶ÔÄÚ´æµÄÇëÇó¿ÉÄÜÀ´×ÔÓÚÄںˣ¬Ò²¿ÉÄÜÀ´×ÔÓÚÓû§¡£
ÐéÄâµØÖ·¿Õ¼äµÄ¹ÜÀí¡£
½»»»ºÍ»º´æ¡£
± ......
Ê×ÏÈ,ÎÒÏëÒýÓÃһϱðÈË˵¹ýµÄÒ»¾ä»°:³ý·ÇÔÚ¹ýÈ¥µÄÊ®ÄêÄãÒ»Ö±Éú»îÔÚɽ¶´Àï,·ñÔòÄãÒ»¶¨Ìý˵¹ýlinux.
ÊǵÄ,ÏÖÔÚÌý˵¹ýlinux,
»áÒ»µãlinux»ù±¾²Ù×÷µÄÈ˶àÈçţë,È»¶øÕæÕýÄÜÓÃlinux×öÒ»µãÊÂÇéµÄÈ·ÉÙÖ®ÓÖÉÙ,Õâ¾ÍÔì³ÉÁËÏÖÔÚµÄ×´¿ö:¸÷´ó
linuxÂÛ̳ʮ·ÖÈÈÄÖ,µ«ÎÒ¹úlinuxÈ˲ÄÈ´»¹Ê®·Ö½ôȱ.µ½µ×ÊÇʲôÔÒòÔì³ÉÁËÕâÑùµÄ×´¿ö? ¾ÀÆäÔÒò,Ö»ÓÐÁ½¸ö×Ö:¸¡Ôï!
Èç¹ûÔÚÂÛ̳ÀïÀ´Ò»
´Îµ÷²éͶƱ,¿´Ò»ÏÂÔÚÂÛ̳ÀïµÄÈ˵½µ×ÓжàÉÙÈËÊÖÍ·ÓÐÒ»±¾ÒÔÉϵÄÕý¹ælinux½Ì²Ä.ÎÒÏëÕâ¸öÊý×Ö²»»á³¬¹ý30%.
Èç¹ûÔÙÎÊÒ»ÏÂ,ÓжàÉÙÈËÍêÕûµÄ¶Á¹ý¸÷·¢Ðаæ×Ô´øµÄÈëÃÅÎĵµ,ϵͳ¶¨ÖÆÎĵµ,ϵͳ¹ÜÀíÎĵµºÍϵͳ°²È«Îĵµ,¿ÖÅÂÕâ¸öÊý×Ö²»µ½10%.
Èç¹û½øÒ»²½ÔÙµ÷²éһϾ¿¾¹ÓжàÉÙÈ˾²ÏÂÐÄÀ´Ñ§Ï°¹ý²Ù×÷ϵͳºÍ¼ÆËã»úÍøÂçµÈºÍlinuxѧϰʮ·ÖÃÜÇеÄרҵ¿Î³Ì,ÄÇô¿ÖÅÂÖ»ÓÐ3%µÄÊý×Ö¶¼²»µ½ÁË.
Õâ
ÈÃÎÒÏëµ½ÁË98ÄêǰºóITÅÝÄʱ´úµÄÖйشå.ÔÚÖйشåµÄ´ó½ÖСÏï,µ½´¦ÊÇÒ»¸ö¸öÒâÆø·Ö·¢Å£ºåºåµÄIT¾«Ó¢.ËûÃÇ´÷×ÅĬ¾µ,ÌÞ×ÅСƽͷ,Õſڱտڶ¼ÊÇÍøÂç,
°²È«,ÐÅÏ¢,ºÚ¿Í,´úÂë,²úÒµ.TÐô±³ºóд×ÅÈý¸ö×Ö:±ðÈÇÎÒ! È»¶ø×îºóITÅÝÄÒ»¹ý,Ö»ÓÐÄÇÐ©ÕæÕý¿Ï°²°²ÐÄÐľ²ÐÄѧϰµÄÈËÔÚIT½ç´æ»îÁËÏÂÀ´.
ÏÖ
ÔÚ¹úÈËѧϰlinuxµÄ×´¿öÒ²ÊÇÕâÑù,ѧlinuxµÄÈ˸ö¸ö¶¼ÒâÆ ......
Ê×Ïȼì²ébindÊÇ·ñÕý³£°²×°£¨ÒÔÏÂÃüÁî½öÏÞÓÚrpm°üµÄ¼ì²é£©
rpm -qa|grep bind
Èç¹û³öÏÖÏàÓ¦µÄ°²×°°üÐÅÏ¢£¬Ôò¿ÉÒÔ½øÈëÏÂÒ»²½
½ÓÏÂÀ´ÊÇʹÓÃbindÅäÖÃDNSËùÐèÒªµÄϵͳÒÔ¼°¶ÔÓ¦Îļþ£¬´óÖÂÈçÏ£º
/etc/hosts --Ö÷»úipÓëÓòÃûÖ®¼äµÄÒ»¸ö¶ÔÓ¦Îļþ£¨ÏµÍ³×Ô´ø£©£¬¿ÉÒÔʵÏÖ¿ìËÙ½âÎöµÄ¹¦ÄÜ
¸ÃÎļþµÄÅäÖÃÄÚÈÝ´óÖÂÈçÏ£º
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
10.10.6.23 bubu.bubu.com bubu
#192.168.0.2 test2.bubu.com test2
#192.168.0.3 test3.bubu.com test3
/etc/host.conf --¶¨ÒåÖ÷»úÈçºÎ½âÎö£¨¾ßÌå½éÉÜ£©
¸ÃÎļþµÄÅäÖÃÄÚÈÝ´óÖÂÈçÏ£º
order hosts,bind
multi on
/etc/resolv.conf --¶¨ÒåϵͳµÄDNSµØÖ·
¸ÃÎļþµÄÅäÖÃÄÚÈÝ´óÖÂÈçÏ£º
search localdomain
#nameserver 202.106.196.115
nameserver 10.10.6.23
/etc/named.conf --bindÅäÖÃDNSµÄÖ ......
ÔÚlinuxÏÂһЩ³£ÓõĹػú/ÖØÆôÃüÁîÓÐshutdown¡¢halt¡¢reboot¡¢¼°init£¬ËüÃǶ¼
¿ÉÒÔ´ïµ½ÖØÆôϵͳµÄÄ¿µÄ£¬µ«Ã¿¸öÃüÁîµÄÄÚ²¿¹¤×÷¹ý³ÌÊDz»Í¬µÄ£¬Í¨¹ý±¾ÎĵĽéÉÜ£¬Ï£
ÍûÄã¿ÉÒÔ¸ü¼ÓÁé»îµÄÔËÓø÷ÖֹػúÃüÁî¡£
1.shutdown
shutdownÃüÁȫµØ½«ÏµÍ³¹Ø»ú¡£ ÓÐЩÓû§»áʹÓÃÖ±½Ó¶ÏµôµçÔ´µÄ·½Ê½À´¹Ø±Õlinux£¬
ÕâÊÇÊ®·ÖΣÏյġ£ÒòΪlinuxÓëwindows²»Í¬£¬Æäºǫ́ÔËÐÐ×ÅÐí¶à½ø³Ì£¬ËùÒÔÇ¿ÖÆ¹Ø»ú¿ÉÄÜ
»áµ¼Ö½ø³ÌµÄÊý¾Ý¶ªÊ§﹐ʹϵͳ´¦ÓÚ²»Îȶ¨µÄ״̬﹐ÉõÖÁÔÚÓеÄϵͳÖлáËð»µÓ²¼þÉ豸¡£
¶øÔÚϵͳ¹Ø»úǰʹÓÃshutdownÃüÁî﹐ϵͳ¹ÜÀíÔ±»á֪ͨËùÓеǼµÄÓû§ÏµÍ³½«Òª¹Ø±Õ¡£
²¢ÇÒloginÖ¸Áî»á±»¶³½á﹐¼´ÐµÄÓû§²»ÄÜÔٵǼ¡£Ö±½Ó¹Ø»ú»òÕßÑÓ³ÙÒ»¶¨µÄʱ¼ä²Å¹Ø»ú
¶¼ÊÇ¿ÉÄܵÄ﹐»¹¿ÉÄÜÖØÆô¡£ÕâÊÇÓÉËùÓнø³Ì¡²process¡³¶¼»áÊÕµ½ÏµÍ³ËùËÍ´ïµÄÐźš²signal¡³
¾ö¶¨µÄ¡£ÕâÈÃÏñviÖ®ÀàµÄ³ÌÐòÓÐʱ¼ä´¢´æÄ¿Ç°ÕýÔڱ༵ÄÎĵµ﹐¶øÏñ´¦ÀíÓʼþ¡²mail¡³ºÍ
ÐÂÎÅ¡²news¡³µÄ³ÌÐòÔò¿ÉÒÔÕý³£µØÀ뿪µÈµÈ¡£
shutdownÖ´ÐÐËüµÄ¹¤×÷ÊÇËÍÐźš²signal¡³¸øinit³ÌÐò﹐ÒªÇóËü¸Ä±ärunlevel¡£ ......
CPU : ARM9 s3c2410
LCD : ¹æ¸ñ²»Ã÷£¨Õâ¸öºÜÎÞÄΣ¬µ«ÊÇÎÒËùÖªµÀµÄÖ»ÓÐÒ»¸ö·Ö±æÂÊ£©
Ô´ÂëÐ޸ģº
/linux-2.6.30.4/arch/arm/mach-s3c2410/mach-smdk2410.c
ÔÚÕâ¸öÎļþÖмÓÈëframebufferµÄ³õʼ»¯Êý¾Ý½á¹¹£¨¾ßÌåÊý¾Ý²ÎÕÕLCD¼¼ÊõÊֲᣩÈçÏ£º
#include <mach/fb.h> // added by B.Zhou for the LCD driver
/* The info of LCD driver start */
static struct s3c2410fb_display smdk2410_lcd_cfg __initdata = {
.lcdcon5 = S3C2410_LCDCON5_FRM565 |
S3C2410_LCDCON5_INVVLINE |
S3C2410_LCDCON5_INVVFRAME |
S3C2410_LCDCON5_PWREN |
S3C2410_LCDCON5_HWSWP,
.type = S3C2410_LCDCON1_TFT,
.width   ......
CPU : ARM9 s3c2410
LCD : ¹æ¸ñ²»Ã÷£¨Õâ¸öºÜÎÞÄΣ¬µ«ÊÇÎÒËùÖªµÀµÄÖ»ÓÐÒ»¸ö·Ö±æÂÊ£©
Ô´ÂëÐ޸ģº
/linux-2.6.30.4/arch/arm/mach-s3c2410/mach-smdk2410.c
ÔÚÕâ¸öÎļþÖмÓÈëframebufferµÄ³õʼ»¯Êý¾Ý½á¹¹£¨¾ßÌåÊý¾Ý²ÎÕÕLCD¼¼ÊõÊֲᣩÈçÏ£º
#include <mach/fb.h> // added by B.Zhou for the LCD driver
/* The info of LCD driver start */
static struct s3c2410fb_display smdk2410_lcd_cfg __initdata = {
.lcdcon5 = S3C2410_LCDCON5_FRM565 |
S3C2410_LCDCON5_INVVLINE |
S3C2410_LCDCON5_INVVFRAME |
S3C2410_LCDCON5_PWREN |
S3C2410_LCDCON5_HWSWP,
.type = S3C2410_LCDCON1_TFT,
.width   ......
cvs·þÎñÆ÷µÄ°²×°£º
1¡£²é¿´ÄãµÄ²Ù×÷ϵͳÉÏÊÇ·ñ°²×°ÁËcvs£º
#> rpm -qa|grep cvs
Èç¹ûûÓа²×°¿ÉÒÔÔÚÍøÉÏÏÂÔØµ½×îеÄrpm°ü¡£ºÜÈÝÒ×ÕÒ£¬Æäʵ²»´æÔÚʲôlinux°æ±¾¡£
2¡£½¨Á¢cvsÓû§×飺
#> groupadd cvs
3¡£½¨Á¢cvs×éµÄcvsrootÓû§ºÍËùÊôµÄĿ¼£º
#> useradd -g cvs –d /cvsroot cvsroot
4¡£ÎªcvsrootÓû§Ìí¼ÓÃÜÂ룺
#> passwd cvsroot
5¡£¸Ä±ä /cvsroot/ µÄĿ¼ÊôÐÔ£º
#> chmod –R 770 /cvsroot
6¡£¸Ä±äÓû§µÇ½Éí·Ý£º
#> su - cvsroot
7¡£¿ªÊ¼´´½¨µ¥¸öÏîÄ¿£º
#> cd /cvsroot
#> mkdir project1
#>mkdir project2
8¡£¿ªÊ¼½¨Á¢²Ö¿â£º
#> cvs –d /cvsroot/project1 init
#> cvs –d /cvsroot/project2 init
9¡£½¨Á¢cvs·þÎñÆô¶¯Îļþ£¬ÎÒÃÇʹÓÃxinetd·½Ê½£º
#> [crtl]+[d] Çл»µ½rootÓû§Éí·Ý
#> cd /etc/xinetd.d
#> vi cvspserver
service cvspserver
{
disable = no
flags = reuse
socket_type = stream
wait = no
user = root
server= /usr/bin/cvs
server_args= -f --allow-root=/home2/cvsroot/project1 --allow-r ......