À°§U¤¤¤ß | §Úªº±b¸¹ | Ãö©ó§Ú­Ì

²`«×±´¯ÁLinux¨t²ÎµêÀÀ¤Æ(­ì²z»P¹ê²{)

  • §@ªÌ¡G¤ý¬f¥Í//Á¼s­x|³d½s:÷á¶ÇÀs
  • ¥Xª©ªÀ¡G¾÷±ñ¤u·~
  • ISBN¡G9787111666066
  • ¥Xª©¤é´Á¡G2020/10/01
  • ¸Ë´V¡G¥­¸Ë
  • ­¶¼Æ¡G283
¤H¥Á¹ô¡GRMB 89 ¤¸      °â»ù¡G¤¸
©ñ¤JÁʪ«¨®
¥[¤J¦¬Âç¨

¤º®e¤j¿û
    ³o¬O¤@³¡²`«×Á¿¸Ñ¦p¦ó¦bLinux¾Þ§@¨t²ÎÀô¹Ò¤U¥Î³nÅéµêÀÀ¥X¤@¥x¡uª«²z¡v¹q¸£ªºµÛ§@¡C
    ¨â¦ì§@ªÌ³£¬O¦Ê«×ªº¸ê²`§Þ³N±M®a¡A¤@¦ì¬O¦Ê«×ªº¥D¥ô¬[ºc®v¡A¤@¦ì¬O¦Ê«×´¼¯à¶³ªº°ÆÁ`¸g²z¡A³£¦b¾Þ§@¨t²Î©MµêÀÀ¤Æµ¥»â°ì¦³¦h¦~ªº¹ê½î¸gÅç¡C¥»®Ñ±q¹q¸£Åé¨tµ²ºc¡B¾Þ§@¨t²Î¡BµwÅéµ¥¦h­Óºû«×²`«×±´°Q¤F±qCPU¡B¤º¦s¡B¤¤Â_¡B¥~³]¡Bºô¸ô5­Ó¨t²ÎªºµêÀÀ¤Æ¡A¤£¶È­åªR¤F¨ä¤¤ªºÃöÁä§Þ³N­ì²z¡A¦Ó¥B²`¤JÄÄ­z¤F¨ãÅ骺¹ê²{¡C
    ¥þ®Ñ¦@6³¹¡C
    ²Ä1³¹CPUµêÀÀ¤Æ
    ¤¶²Ð¤Fx86¬[ºc¤UªºVMXÂX®i¡A°Q½×¤F¦bVMX¤UµêÀÀCPUªº§¹¾ã¥Í©R©P´Á¡AµÛ­«ÄÄ­z¤FHost©MGuestªº¤Á´«¡B«ü¥Oªº¼ÒÀÀ¥H¤ÎKVM¬O¦p¦óµêÀÀ¦h³B²z¾¹ªº¡C
    ²Ä2³¹¤º¦sµêÀÀ¤Æ
    °Q½×¤F¾Þ§@¨t²Î¦p¦ó¬°µêÀÀ¾÷§e²{ª«²z¤º¦s¡Aµ²¦X¼v¤l­¶ªí¥H¤ÎEPT±´°Q¤FKVM¦p¦ó§¹¦¨±qGVA¨ìHPAªº2¼h¦a§}¬M®g¡C
    ²Ä3³¹¤¤Â_µêÀÀ¤Æ
    ¥»³¹±q³Ìªì³æ®Ö¨t²Îªº8259A¡A°Q½×¨ì¦h®Ö¨t²ÎªºAPIC¡A¦A¨ì¶¶}I/O APIC¡B±q³]³Æª½±µ¦VLAPICµo°e°ò©ó®ø®§ªºMSIªºµêÀÀ¤Æ­ì²z©M¹ê²{¡CµM«á¡A°Q½×¤FIntel¬°¤F´£°ª®Ä²v¡A¬O¦p¦ó±qµwÅé¼h­±¹ïµêÀÀ¤Æ¤¤Â_¶i¦æ¤ä«ùªº¡A¥H¤ÎKVM¬O¦p¦ó¨Ï¥Î¥¦­Ìªº¡C
    ²Ä4¡B5³¹¥~³]µêÀÀ¤Æ
    ±q§¹¥þµêÀÀ¤Æ¶}©l¡A¨Ì¦¸Á¿¸Ñ¤F¥bµêÀÀ¤Æ¡]Virtio¡^©MIntelªºVT-d¤ä«ù¤UªºµwÅ黲§UµêÀÀ¤Æ¡C³q¹L¹ê²{¤@­Ó¼ÒÀÀ¦ê¤f±a»âŪªÌª½Æ[Åé·|¤F³]³ÆµêÀÀ¤Æªº°ò¥»­ì²z¡AµM«á²`¤JÄÄ­z¤FVirtio¼Ð·Ç©M¹ê²{¡A¥H¤Î¤ä«ùSR-IOVªºDMA­«¬M®g©M¤¤Â_­«¬M®g¡C
    ²Ä6³¹ºô¸ôµêÀÀ¤Æ
    °Q½×¤F¦b³q¥ÎµwÅéºô¸ôªº°ò¦¤W¡A¾Þ§@¨t²Î¦p¦óµêÀÀ¥X±M¥Îªººô¸ô³]³Æ¡A¬°¯²¤á²Õ«ØµêÀÀºô¸ô¡C

§@ªÌ¤¶²Ð
¤ý¬f¥Í//Á¼s­x|³d½s:÷á¶ÇÀs

¥Ø¿ý
«e¨¥
²Ä1³¹  CPUµêÀÀ¤Æ
  1.1  x86¬[ºcCPUµêÀÀ¤Æ
    1.1.1  ³´¤J©M¼ÒÀÀ¼Ò«¬
    1.1.2  x86¬[ºcµêÀÀ¤Æªº»Ùê
    1.1.3  VMX
    1.1.4  VCPU¥Í©R©P´Á
  1.2  µêÀÀ¾÷¤Á¤J©M°h¥X
    1.2.1  GCC¤ºÁp·J½s
    1.2.2  µêÀÀ¾÷¤Á¤J©M°h¥X¤Î¬ÛÃöªº¤W¤U¤å«O¦s
  1.3  ³´¤J©M¼ÒÀÀ
    1.3.1  ³X°Ý¥~³]
    1.3.2  ¯S®í«ü¥O
    1.3.3  ³X°Ý¨ã¦³°Æ§@¥Îªº±H¦s¾¹
  1.4  ¹ïºÙ¦h³B²z¾¹µêÀÀ¤Æ
    1.4.1  MPTable
    1.4.2  ³B²z¾¹±Ò°Ê¹Lµ{
  1.5  ¤@­Ó²³æKVM¥Î¤áªÅ¶¡¹ê¨Ò
    1.5.1  ³Ð«ØµêÀÀ¾÷¹ê¨Ò
    1.5.2  ³Ð«Ø¤º¦s
    1.5.3  ³Ð«Ø³B²z¾¹
    1.5.4  Guest
    1.5.5  ¸ü¤JGuestÃè¹³¨ì¤º¦s
    1.5.6  ¹B¦æµêÀÀ¾÷
²Ä2³¹  ¤º¦sµêÀÀ¤Æ
  2.1  ¤º¦s©w§}
    2.1.1  ¬q¦¡©w§}
    2.1.2  ¥­©Z¤º¦s¼Ò«¬
    2.1.3  ­¶¦¡©w§}
    2.1.4  ­¶¦¡©w§}¹ê¨Ò
  2.2  VMM¬°Guest·Ç³Æª«²z¤º¦s
    2.2.1  ¤º®Ö¬O¦p¦óÀò¨ú¤º¦sªº
    2.2.2  «Ø¥ß¤º¦s¬q«H®§
    2.2.3  ·Ç³Æ¤¤Â_0x15ªº³B²z¨ç¼Æ¥H¤Î³]¸mIVT
    2.2.4  ¤¤Â_0x15ªº³B²z¨ç¼Æ¹ê²{
    2.2.5  µêÀÀ¤º¦s±ø
  2.3  ¹ê¼Ò¦¡Guestªº©w§}
    2.3.1  ³]¸mCPU¹B¦æ©óVirtual-8086¼Ò¦¡
    2.3.2  ³]¸mGuest¼Ò¦¡¤Uªºcr3±H¦s¾¹
    2.3.3  µêÀÀMMUªº¤W¤U¤å
    2.3.4  ¯Ê­¶²§±`³B²z
  2.4  «OÅ@¼Ò¦¡Guestªº©w§}
    2.4.1  °½±ç´«¬Wcr
    2.4.2  ¼v¤l­¶ªí¯Ê­¶²§±`³B²z
  2.5  EPT
    2.5.1  ³]¸mEPT­¶ªí
    2.5.2  EPT²§±`³B²z
    2.5.3  EPT¤ä«ù¤Uªº¦a§}½Ķ¹Lµ{
²Ä3³¹  ¤¤Â_µêÀÀ¤Æ
  3.1  µêÀÀ¤¤Â_

  3.2  PICµêÀÀ¤Æ
    3.2.1  ¥i½sµ{¤¤Â_±±¨î¾¹8259A
    3.2.2  µêÀÀ³]³Æ¦VPICµo°e¤¤Â_½Ð¨D
    3.2.3  °O¿ý¤¤Â_¨ìIRR
    3.2.4  ³]¸m«Ý³B²z¤¤Â_¼ÐÃÑ
    3.2.5  ¤¤Â_µû¦ô
    3.2.6  ¤¤Â_ACK
    3.2.7  Ãö©óEOIªº³B²z
    3.2.8  ¤¤Â_ª`¤J
  3.3  APICµêÀÀ¤Æ
    3.3.1  ¥~³]¤¤Â_¹Lµ{
    3.3.2  ®Ö¶¡¤¤Â_¹Lµ{
    3.3.3  IRQ routing
  3.4  MSI¡]X¡^µêÀÀ¤Æ
    3.4.1  MSI¡]X¡^ Capability¼Æ¾Úµ²ºc
    3.4.2  «Ø¥ßIRQ routingªí¶µ
    3.4.3  MSI³]³Æ¤¤Â_¹Lµ{
  3.5  µwÅéµêÀÀ¤Æ¤ä«ù
    3.5.1  µêÀÀ¤¤Â_±H¦s¾¹­¶­±¡]virtual-APIC page¡^
    3.5.2  Guest¼Ò¦¡¤Uªº¤¤Â_µû¦ôÅÞ¿è
    3.5.3  posted-interrupt processing
²Ä4³¹  ³]³ÆµêÀÀ¤Æ
  4.1  ³]³ÆµêÀÀ¤Æ¼Ò«¬ºt¶i
  4.2  PCI°t¸mªÅ¶¡¤Î¨ä¼ÒÀÀ
  4.3  ³]³Æ³z¶Ç
    4.3.1  µêÀÀ°t¸mªÅ¶¡
    4.3.2  DMA­«¬M®g
    4.3.3  ¤¤Â_­«¬M®g
  4.4  §¹¥þµêÀÀ¤Æ
    4.4.1  Guestµo°e¼Æ¾Ú
    4.4.2  Guest±µ¦¬¼Æ¾Ú
²Ä5³¹  VirtioµêÀÀ¤Æ
  5.1  I/O´Ì
    5.1.1  ¤å¥ó¨t²Î
    5.1.2  ³q¥Î¶ô¼h
    5.1.3  ¶ô³]³ÆÅX°Ê
    5.1.4  page cache
    5.1.5  bio
    5.1.6  I/O½Õ«×¾¹
  5.2  Virtio¨óij
    5.2.1  ´y­z²Åªí
    5.2.2  ¥i¥Î´y­z²Å°Ï°ì
    5.2.3  ¤w¥Î´y­z²Å°Ï°ì
    5.2.4  Virtio³]³ÆªºPCI°t¸mªÅ¶¡
  5.3  ªì©l¤ÆVirtqueue
  5.4  ÅX°Ê®Ú¾ÚI/O½Ð¨D²Õ´´y­z²ÅÃì
  5.5  ÅX°Ê³qª¾³]³Æ³B²z½Ð¨D
  5.6  ³]³Æ³B²zI/O½Ð¨D
  5.7  ÅX°Ê°¼¦^¦¬I/O½Ð¨D
  5.8  ³]³Æ«D¦P¨B³B²zI/O

  5.9  »´¶qµêÀÀ¾÷°h¥X
    5.9.1  ³Ð«Øeventfd
    5.9.2  kvmtoolºÊÅ¥eventfd
    5.9.3  VMexit³B²z¨ç¼Æ³ê¿ôI/O¥ô°È
²Ä6³¹  ºô¸ôµêÀÀ¤Æ
  6.1  °ò©óOverlayªºµêÀÀºô¸ô¤è®×
    6.1.1  ­pºâ¸`ÂI
    6.1.2  ºô¸ô¸`ÂI
    6.1.3  Open vSwitch
  6.2  µêÀÀ¾÷³X°Ý¥~³¡¥D¾÷
    6.2.1  ¼Æ¾Ú¥]¦b­pºâ¸`ÂILinuxºô¾ô¤¤ªº³B²z
    6.2.2  ¼Æ¾Ú¥]¦b­pºâ¸`ÂIªºOpen vSwitch¤¤ªº³B²z
    6.2.3  ¼Æ¾Ú¥]¦bºô¸ô¸`ÂIªºOpen vSwitch¤¤ªº³B²z
  6.3  ¥~³¡¥D¾÷³X°ÝµêÀÀ¾÷
    6.3.1  ¼Æ¾Ú¥]¦bºôÃö¤¤ªº³B²z¹Lµ{
    6.3.2  ¼Æ¾Ú¥]¦