Èý¡¢VMAºÍPAGE½á¹¹ ºÍmmapº¯Êý
1.page Ö÷Òª³ÉÔ±
atomic_t count;
//Õâ¸öÒ³µÄÒýÓÃÊý. µ±Õâ¸ö count µôµ½ 0, ÕâÒ³±»·µ»Ø¸ø¿ÕÏÐÁбí.
void *virtual;
//Èç¹ûÒ³±»Ó³É䣬Ôò±íʾÕâÒ³µÄÄÚºËÐéÄâµØÖ·; ·ñÔò, NULL.
unsigned long flags;
//ÃèÊöҳ״̬µÄÒ»Ì×λ±êÖ¾. ÕâЩ°üÀ¨ PG_locked, Ëüָʾ¸ÃÒ³ÔÚÄÚ´æÖÐÒѱ»¼ÓËø, ÒÔ¼° PG_reserved,
//Ëü·ÀÖ¹ÄÚ´æ¹ÜÀíϵͳʹÓøÃÒ³
2.vm_area_struct Ö÷Òª³ÉÔ±
unsigned long vm_start;//VMA ¿ªÊ¼ÓÚ
unsigned long vm_end; //VMA ½áÊø
struct file *vm_file;
//Ö¸ÏòºÍÕâ¸öÇø(Èç¹ûÓÐÒ»¸ö)¹ØÁªµÄ struct file ½á¹¹µÄÖ¸Õë.
unsigned long vm_pgoff;
//ÎļþÖÐÇøµÄÆ«ÒÆ, ÒÔÒ³¼Æ. µ±Ò»¸öÎļþºÍÉ豸±»Ó³Éä, ÕâÊÇÓ³ÉäÔÚÕâ¸öÇøµÄµÚÒ»Ò³µÄÎļþλÖÃ.?????
unsigned long vm_flags;
// É豸Çý¶¯³£ÓõıêÖ¾ÊÇ VM_IO ºÍ VM_RESERVUED.
//VM_IO ±êÖ¾Ò»¸ö VMA ×÷ΪÄÚ´æÓ³ÉäµÄ I/O Çø,×èÖ¹Õâ¸öÇø±»°üº¬ÔÚ½ø³ÌºËת´¢£¿£¿£¿ÖÐ.
//VM_RESERVED ¸æÖªÄÚ´æ¹ÜÀíϵͳ²»ÒªÊÔͼ½»»»³öÕâ¸ö VMA;
struct vm_operations_struct *vm_ops;
//²Ù×÷
//void (* ......
¸Å¶øÑÔÖ®£¬virtio
ÊǰëÐéÄ⻯ hypervisor ÖÐλÓÚÉ豸֮ÉϵijéÏó²ã¡£virtio
ÓÉ Rusty Russell ¿ª·¢£¬Ëûµ±Ê±µÄÄ¿µÄÊÇÖ§³Ö×Ô¼ºµÄÐéÄ⻯½â¾ö·½°¸ lguest
¡£±¾ÎÄÔÚ¿ªÆªÊ±½éÉܰëÐéÄ⻯ºÍÄ£ÄâÉ豸£¬È»ºó̽Ë÷ virtio
µÄϸ½Ú¡£±¾ÎĵÄÖØµãÊÇÀ´×Ô 2.6.30 Äں˷¢ÐаæµÄ virtio
¿ò¼Ü¡£
Linux ÊÇ hypervisor չ̨¡£ÈçÎÒµÄ ÆÊÎö Linux hypervisor
ËùÊö£¬Linux Ìṩ¸÷ÖÖ hypervisor ½â¾ö·½°¸£¬ÕâЩ½â¾ö·½°¸¶¼ÓÐ×Ô¼ºµÄÌØµãºÍÓŵ㡣ÕâЩ½â¾ö·½°¸°üÀ¨ Kernel-based Virtual Machine (KVM)¡¢lguest
ºÍ User-mode Linux µÈ¡£ÔÚ Linux ÉÏÅ䱸ÕâЩ²»Í¬µÄ hypervisor ½â¾ö·½°¸»á¸ø²Ù×÷ϵͳ´øÀ´¸ºµ££¬¸ºµ£µÄ´óСȡ¾öÓÚ¸÷¸ö½â¾ö·½°¸µÄÐèÇ󡣯äÖеÄÒ»ÏÏúΪÉ豸µÄÐéÄ⻯¡£virtio
²¢Ã»ÓÐÌṩ¶àÖÖÉ豸ģÄâ»úÖÆ£¨Õë¶ÔÍøÂç¡¢¿éºÍÆäËûÇý¶¯³ÌÐò£©£¬¶øÊÇΪÕâЩÉ豸ģÄâÌṩһ¸öͨÓõÄǰ¶Ë£¬´Ó¶ø±ê×¼»¯½Ó¿ÚºÍÔö¼Ó´úÂëµÄ¿çÆ½Ì¨ÖØÓá£
ÍêÈ«ÐéÄ⻯ºÍ°ëÐéÄ⻯
¼ÓÈë My developerWorks ÉϵÄÂÌɫС×é
ÔÚ My developerWorks É쵀 GReen IT Report ¿Õ¼ä
ºÍ ÂÌÉ«¼ÆËãС×é
ÉÏÌÖÂÛ¹ØÓÚÄÜÔ´¡¢Ð§Âʺͻ·¾³µÄÖ÷Ìâ²¢¹²Ïí×ÊÔ´¡£
ÈÃÎÒÃÇ¿ìËÙÌÖÂÛÒ»ÏÂÁ½ÖÖÀàÐÍÍêÈ«²»Í¬µÄÐéÄ⻯ģʽ£ºÍêÈ«ÐéÄ⻯ºÍ°ëÐéÄ⻯¡£ ......
bin£º¸ÃĿ¼´æ·Å×î³£ÓõĻù±¾ÃüÁ±ÈÈ翽±´ÃüÁîcp¡¢±à¼ÃüÁîvi¡¢É¾³ýÃüÁîrmµÈ¡£
boot:¸ÃĿ¼°üº¬ÁËϵͳÆô¶¯ÐèÒªµÄÅäÖÃÎļþ¡¢Äںˣ¨vmliuxz£©ºÍϵͳ¾µÏñ(initrd….img)µÈ¡£
dev£º¸ÃĿ¼Ï´æ·ÅµÄÊÇLinuxÖÐʹÓûòδʹÓõÄÍⲿÉ豸Îļþ£¨fd´ú±íÈíÅÌ£¬hd´ú±íÓ²Å̵ȣ©£¬Ê¹ÓÃÕâЩÉ豸Îļþ¿ÉÒÔÓòÙ×÷ÎļþµÄ·½Ê½²Ù×÷É豸¡£
etc£º¸ÃĿ¼Ï°üº¬ÁËËùÓÐϵͳ·þÎñºÍϵͳ¹ÜÀíʹÓõÄÅäÖÃÎļþ£»±ÈÈçϵͳÈÕÖ¾·þÎñµÄÅäÖÃÎļþsyslog.conf£¬ÏµÍ³Óû§ÃÜÂëÎļþpasswdµÈ
home:¸ÃĿ¼Ï°üº¬Á˳ýϵͳ¹ÜÀíÔ±ÍâµÄËùÓÐÓû§µÄÖ÷Ŀ¼£¬Óû§Ö÷Ŀ¼һ°ãÒÔÓû§µÇ½ÕʺÅÃüÃû¡£
Lib:¸ÃĿ¼Ï°üº¬ÁËϵͳʹÓõĶ¯Ì¬Á¬½Ó¿â£¨*.so£©ºÍÄÚºËÄ£¿é(ÔÚmodulesÏÂ)¡£
host+found:¸ÃĿ¼°üº¬ÁË´ÅÅÌɨÃè¼ì²âµ½µÄÎļþË鯬£¬Èç¹ûÄã·Ç·¨¹Ø»ú£¬ÄÇôÏÂ´ÎÆô¶¯Ê±ÏµÍ³»á½øÐдÅÅÌɨÃ裬½«Ë𻵵ÄË鯬´æµ½¸ÃĿ¼Ï¡£
mnt:¸ÃĿ¼Ï°üº¬Óû§¶¯Ì¬¹ÒÔØµÄÎļþϵͳ¡£Èç¹ûҪʹÓùâÅÌ£¬UÅ̶¼Ò»°ãÓ¦¸Ã½«ËüÃǰ²×°µ½¸ÃĿ¼ÏµÄÌØ¶¨Î»Öá£
proc£º¸ÃĿ¼ÊôÓÚÄÚ´æÓ°ÉäµÄÒ»¸öÐéÄâÄ ......
Ðí¶à¸Õ½Ó´¥LinuxµÄÍøÂç¹ÜÀíÔ±·¢ÏÖ£¬ËûÃǺÜÄÑÓÉÖ¸Ïòµã»÷ʽµÄ°²È«ÅäÖýçÃæ×ª»»µ½ÁíÒ»ÖÖ»ùÓڱ༸´ÔÓ¶øÄÑÒÔ×½ÃþµÄÎı¾ÎļþµÄ½çÃæ¡£±¾ÎÄÁгöÆßÌõ¹ÜÀíÔ±Äܹ»Ò²Ó¦¸Ã¿ÉÒÔ×öµ½µÄ²½Ö裬´Ó¶ø°ïÖúËûÃǽ¨Á¢¸ü¼Ó°²È«µÄLinux·þÎñÆ÷£¬²¢ÏÔÖø½µµÍËûÃÇËùÃæÁٵķçÏÕ¡£
ÇëÈκδóÐÍ»ú¹¹µÄÍøÂç¹ÜÀíÔ±¶ÔLinuxºÍÍøÂç²Ù×÷ϵͳ£¨ÈçWindows NT»òNovell£©½øÐбȽϣ¬¿ÉÄÜËû»á³ÐÈÏLinuxÊÇÒ»¸öÄÚÔÚ¸ü¼ÓÎȶ¨£¬À©Õ¹ÐÔ¸üÇ¿µÄ½â¾ö·½°¸¡£¿ÉÄÜËû»¹»á³ÐÈÏ£¬ÔÚ±£»¤ÏµÍ³ÃâÊÜÍⲿ¹¥»÷·½Ã棬Linux¿ÉÄÜÊÇÈýÕßÖÐ×îÄÑÅäÖõÄϵͳ¡£
Õâ
ÖÖÈÏʶÏ൱ÆÕ±é——Ðí¶à¸Õ½Ó´¥LinuxµÄÍøÂç¹ÜÀíÔ±·¢ÏÖ£¬ËûÃǺÜÄÑÓÉÖ¸Ïòµã»÷ʽµÄ°²È«ÅäÖýçÃæ×ª»»µ½ÁíÒ»ÖÖ»ùÓڱ༸´ÔÓ¶øÄÑÒÔ×½ÃþµÄÎı¾ÎļþµÄ½çÃæ¡£¶à
Êý¹ÜÀíÔ±³ä·ÖÈÏʶµ½ËûÃÇÐèÒªÊÖ¹¤ÉèÖÃ×è°ºÍÕϰ£¬ÒÔ×èÖ¹¿ÉÄܵĺڿ͹¥»÷£¬´Ó¶ø±£»¤¹«Ë¾Êý¾ÝµÄ°²È«¡£Ö»ÊÇÔÚËûÃDz¢²»ÊìϤµÄLinuxÁìÓòÄÚ£¬ËûÃDz»È·¶¨×Ô¼º
µÄ·½ÏòÊÇ·ñÕýÈ·£¬»ò¸Ã´ÓºÎ¿ªÊ¼
Õâ¾ÍÊDZ¾ÎĵÄÄ¿µÄËùÔÚ¡£ËüÁгöһЩ¼òÒ׵IJ½Ö裬°ïÖú¹ÜÀíÔ±±£ÕÏLinuxµÄ°²È«£¬²¢ÏÔÖø½µµÍËûÃÇÃæÁٵķçÏÕ¡£±¾½Ì³ÌÁгöÁËÆß¸öÕâÑùµÄ²½Ö裬µ«ÄúÒ²¿ÉÒÔÔÚLinuxÊÖ²áºÍÌÖÂÛÂÛ̳Öз¢ÏÖ¸ü¶àÄÚÈÝ¡£
±£»¤¸ùÕË»§
Linux
ϵͳÉϵĸùÕË»§£¨»ò³¬¼¶Ó ......
LINUXµ÷ÓÅ·½·¨×ܽá
----------------------------------------------------------------------------------------------------------------------------
´ó¶àÊý Linux ·¢²¼°æ¶¼¶¨ÒåÁËÊʵ±µÄ»º³åÇøºÍÆäËû Transmission Control Protocol£¨TCP£©²ÎÊý¡£¿ÉÒÔÐÞ¸ÄÕâЩ²ÎÊýÀ´·ÖÅä¸ü¶àµÄÄڴ棬´Ó¶ø¸Ä½øÍøÂçÐÔÄÜ¡£ÉèÖÃÄں˲ÎÊýµÄ·½·¨ÊÇͨ¹ý proc ½Ó¿Ú£¬Ò²¾ÍÊÇͨ¹ý¶Áд /proc ÖеÄÖµ¡£ÐÒÔ˵ÄÊÇ£¬sysctl ¿ÉÒÔ¶ÁÈ¡ /etc/sysctl.conf ÖеÄÖµ²¢¸ù¾ÝÐèÒªÌî³ä /proc£¬ÕâÑù¾ÍÄܹ»¸üÇáËɵعÜÀíÕâЩ²ÎÊý¡£Çåµ¥ 2 չʾÔÚ»¥ÁªÍø·þÎñÆ÷ÉÏÓ¦ÓÃÓÚ Internet ·þÎñÆ÷µÄһЩ±È½Ï¼¤½øµÄÍøÂçÉèÖá£
# Use TCP syncookies when needed
net.ipv4.tcp_syncookies = 1
# Enable TCP window scaling
net.ipv4.tcp_window_scaling: = 1
# Increase TCP max buffer size
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
# Increase Linux autotuning TCP buffer limits
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
# Increase number of ports available
net.ipv4.ip_local_port_range = 1024 65000
½«ÕâЩÉèÖÃÌí¼Óµ½ /etc/sysctl.conf ......
1. gzÎļþ
ÕâÖÖÎļþ¿ÉÒÔʹÓÃgzip¡¢gunzip¡¢zcat½øÐнâѹ£º
gzip -d file_name
gunzip -d file_name
zcat file_name
2. tar.gz¡¢tgzÎļþ
ÕâÖÖѹËõÎļþʹÓýâѹÃüÁîºÍtarÃüÁîÅäºÏʹÓã¬È磺
gzip -d file_name.tar.gz
gunzip -d file_name.tgz
zcat file_name
È»ºóÖ´ÐУº
tar xvf file_name.tar
ijЩ°æ±¾µÄtar´ø-zµÄ²ÎÊý£¬¿ÉÒÔÖ±½ÓʹÓÃtar¼Ó-z²ÎÊý½øÐнâѹ£¬¾ßÌå²Î¿¼tarµÄmanÊֲᣬʹÓ÷½Ê½ÈçÏ£º
tar zxvf file_name.tar.gz
3. cpioÎļþ
ʹÓÃcpioÃüÁî½âѹ£¬È磺
cpio -idmv < Linux9i_Disk1.cpio
cpio -idmv < Linux9i_Disk2.cpio
cpio -idmv < Linux9i_Disk3.cpio
Èç¹ûÊÇcpio.gzÎļþ£¬ÔòÅäºÏ½âѹÃüÁîÒ»ÆðʹÓÃ
zcat lnx_920_disk1.cpio.gz | cpio -idmv
gzip -d lnx_920_disk1.cpio.gz |cpio -idmv
gunzip -d lnx_920_disk1.cpio.gz |cpio -idmv
4. bz2Îļþ
ʹÓÃbzip2, bunzip2½âѹ½øÐнâѹ
bzip2 -d FileName.bz2
bunzip2 FileName.bz2
5. tar.bz2Îļþ
ÏÈʹÓÃtar½âѹÔÙʹÓÃbzip2¡¢bunzip2½øÐнâѹ£¬Ä³Ð©°æ±¾µÄtar¿ÉÒÔʹÓÃj²ÎÊý£º
tar jxvf FileName.tar.bz
6. ZÎļþ
ʹÓÃuncompress½âѹ£¬Ê¹ÓÃcompressѹËõ
un ......