рдПрд╡реАрдПрдлрд╝ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░

Android, Android рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдлрд╝реНрд░реЗрдорд╡рд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд░реВрд░реА рд╕рднреА рдХреЙрдореНрдкреЛрдиреЗрдВрдЯ рдХрд╛ рд░реЗрдлрд╝рд░рдВрд╕ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ. рдлрд╝рд┐рд▓рд╣рд╛рд▓, рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рд╕рд┐рд░реНрдлрд╝ ARM64 рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИ. рдЗрд╕ рдкреЗрдЬ рдкрд░, рдлрд╝реНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ.

рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб

рдЖрд░реНрдо рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рдЪрд╛рд░ рдПрдХреНрд╕реЗрдкреНрд╢рди рд▓реЗрд╡рд▓ рд╣реЛрддреЗ рд╣реИрдВ. рдЗрдирдореЗрдВ рдПрдХреНрд╕реЗрдкреНрд╢рди рд▓реЗрд╡рд▓ 0 (EL0) рд╕рдмрд╕реЗ рдХрдо рдФрд░ рдПрдХреНрд╕реЗрдкреНрд╢рди рд▓реЗрд╡рд▓ 3 (EL3) рд╕рдмрд╕реЗ рдЬрд╝реНрдпрд╛рджрд╛ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд╡рд╛рд▓рд╛ рд╣реЛрддрд╛ рд╣реИ. Android рдХреЗ рдХреЛрдбрдмреЗрд╕ рдХрд╛ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рд╣рд┐рд╕реНрд╕рд╛ (рд╕рднреА рдпреВрдЬрд╝рд░рд╕реНрдкреЗрд╕ рдХреЙрдореНрдкреЛрдиреЗрдВрдЯ) EL0 рдкрд░ рдЪрд▓рддрд╛ рд╣реИ. "Android" рдХреЗ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЗ рдХреЛ Linux рдХрд░реНрдиреЗрд▓ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ. рдпрд╣ EL1 рдкрд░ рдЪрд▓рддрд╛ рд╣реИ.

EL2 рд▓реЗрдпрд░, рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ. рдЗрд╕рд╕реЗ EL1/EL0 рдкрд░, рдореЗрдореЛрд░реА рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕реЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ pVM рдореЗрдВ рдмрд╛рдВрдЯрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рд╕рд╛рде рд╣реА, рдпрд╣ рдЧреЛрдкрдиреАрдпрддрд╛ рдФрд░ рдЗрдВрдЯрд┐рдЧреНрд░рд┐рдЯреА рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИ.

рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░

рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░реНрдирд▓ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди (рдкреАрдХреЗрд╡реАрдПрдо) рдХреЛ Linux KVM рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ. рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрди рдкреЗрд▓реЛрдб рдХреЗ рдРрдХреНрд╕реЗрд╕ рдХреЛ рд╕реАрдорд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЧреЗрд╕реНрдЯ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЛрдВ рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ. рдЗрди рдорд╢реАрдиреЛрдВ рдХреЛ рдмрдирд╛рддреЗ рд╕рдордп тАШрд╕реБрд░рдХреНрд╖рд┐рддтАЩ рдХреЗ рддреМрд░ рдкрд░ рдорд╛рд░реНрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛.

KVM/arm64, рд╕реАрдкреАрдпреВ рдХреА рдХреБрдЫ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдПрдХреНрдЬрд╝реАрдХреНрдпреВрд╢рди рдореЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ. рдЬреИрд╕реЗ, рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╣реЛрд╕реНрдЯ рдПрдХреНрд╕рдЯреЗрдВрд╢рди (рд╡реАрдПрдЪрдИ) (ARMv8.1 рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдХреЗ рд╡рд░реНрд╢рди). рдЗрдирдореЗрдВ рд╕реЗ рдПрдХ рдореЛрдб рдХреЛ рдЖрдо рддреМрд░ рдкрд░ рдиреЙрди-рд╡реАрдПрдЪрдИ рдореЛрдб рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ. рдЗрд╕ рдореЛрдб рдореЗрдВ, рдмреВрдЯ рдХреЗ рджреМрд░рд╛рди рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ рдХреЛрдб рдХреЛ рдХрд░реНрдирд▓ рдЗрдореЗрдЬ рд╕реЗ рдЕрд▓рдЧ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ EL2 рдкрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рд╡рд╣реАрдВ, рдХрд░реНрдирд▓ рдЦреБрдж EL1 рдкрд░ рдЪрд▓рддрд╛ рд╣реИ. KVM рдХрд╛ EL2 рдХреЙрдореНрдкреЛрдиреЗрдВрдЯ, Linux рдХреЛрдбрдмреЗрд╕ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ. рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдПрдХ рдЫреЛрдЯрд╛ рдХреЙрдореНрдкреЛрдиреЗрдВрдЯ рд╣реИ. рдпрд╣ рдХрдИ EL1 рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрддрд╛ рд╣реИ. рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ рдХреЙрдореНрдкреЛрдиреЗрдВрдЯ рдХреЛ Linux рдХреЗ рд╕рд╛рде рдХрдВрдкрд╛рдЗрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ vmlinux рдЗрдореЗрдЬ рдХреЗ рдЕрд▓рдЧ рдФрд░ рдЦрд╛рд╕ рдореЗрдореЛрд░реА рд╕реЗрдХреНрд╢рди рдореЗрдВ рдореМрдЬреВрдж рд╣реЛрддрд╛ рд╣реИ. pKVM рдЗрд╕ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддрд╛ рд╣реИ. рдЗрд╕рдХреЗ рд▓рд┐рдП, рд╡рд╣ рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ рдХреЛрдб рдХреЛ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдмрдврд╝рд╛рддрд╛ рд╣реИ. рдЗрд╕рд╕реЗ, Android рд╣реЛрд╕реНрдЯ рдХрд░реНрдирд▓ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдкреЗрд╕ рдкрд░ рдкрд╛рдмрдВрджрд┐рдпрд╛рдВ рд▓рдЧрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ. рд╕рд╛рде рд╣реА, рд╣реЛрд╕реНрдЯ рдХреЗ рдРрдХреНрд╕реЗрд╕ рдХреЛ рдЧреЗрд╕реНрдЯ рдореЗрдореЛрд░реА рдФрд░ рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ рддрдХ рд╕реАрдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ.

pKVM рд╡реЗрдВрдбрд░ рдореЙрдбреНрдпреВрд▓

pKVM рд╡реЗрдВрдбрд░ рдореЙрдбреНрдпреВрд▓, рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдореЙрдбреНрдпреВрд▓ рд╣реЛрддрд╛ рд╣реИ. рдЗрд╕рдореЗрдВ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕реБрд╡рд┐рдзрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ. рдЬреИрд╕реЗ, рдЗрдирдкреБрдЯ-рдЖрдЙрдЯрдкреБрдЯ рдореЗрдореЛрд░реА рдореИрдиреЗрдЬрдореЗрдВрдЯ рдпреВрдирд┐рдЯ (рдЖрдИрдУрдПрдордПрдордпреВ) рдбреНрд░рд╛рдЗрд╡рд░. рдЗрди рдореЙрдбреНрдпреВрд▓ рдХреА рдорджрдж рд╕реЗ, рд╕реБрд░рдХреНрд╖рд╛ рд╕реЗ рдЬреБрдбрд╝реА рдЙрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ pKVM рдкрд░ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рд▓рд┐рдП, рдПрдХреНрд╕реЗрдкреНрд╢рди рд▓реЗрд╡рд▓ 2 (EL2) рдХрд╛ рдРрдХреНрд╕реЗрд╕ рдЬрд╝рд░реВрд░реА рд╣реЛрддрд╛ рд╣реИ.

pKVM рд╡реЗрдВрдбрд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдФрд░ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП, pKVM рд╡реЗрдВрдбрд░ рдореЙрдбреНрдпреВрд▓ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд▓реЗрдЦ рдкрдврд╝реЗрдВ.

рдмреВрдЯ рдХрд░рдиреЗ рдХреА рдкреНрд░реЛрд╕реЗрд╕

рдЗрд╕ рдЗрдореЗрдЬ рдореЗрдВ, pKVM рдмреВрдЯ рдХрд░рдиреЗ рдХреА рдкреНрд░реЛрд╕реЗрд╕ рджрд┐рдЦрд╛рдИ рдЧрдИ рд╣реИ:

pKVM рдмреВрдЯ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛

рдкрд╣рд▓реА рдЗрдореЗрдЬ. pKVM рдмреВрдЯ рдХрд░рдиреЗ рдХреА рдкреНрд░реЛрд╕реЗрд╕

  1. рд╢реБрд░реБрдЖрдд: рдмреВрдЯрд▓реЛрдбрд░, EL2 рдкрд░ рд╕рд╛рдорд╛рдиреНрдп рдХрд░реНрдирд▓ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ. рдЗрд╕рдХреЗ рдмрд╛рдж, EL2 рдФрд░ EL1, рджреЛрдиреЛрдВ рдкрд░ рдореМрдЬреВрдж рднрд░реЛрд╕реЗрдордВрдж рдХрд░реНрдирд▓ рдХреЛрдб, pKVM рдФрд░ рдЙрд╕рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ. рдЗрд╕ рдлрд╝реЗрдЬрд╝ рдХреЗ рджреМрд░рд╛рди, EL2 рдХреЛ EL1 рдкрд░ рднрд░реЛрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ. рдЗрд╕рд▓рд┐рдП, рдХреЛрдИ рднреА рдРрд╕рд╛ рдХреЛрдб рдирд╣реАрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рдЬрд┐рд╕ рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛.
  2. рдХрд░реНрдиреЗрд▓ рдХреЗ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдХрдо рдХрд░рдирд╛: рд╕рд╛рдорд╛рдиреНрдп рдХрд░реНрдиреЗрд▓ рдХреЛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ EL2 рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ. рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдЕрдкрдиреЗ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ EL1 рдкрд░ рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИ. pKVM рдФрд░ рдЗрд╕рдХреЗ рдореЙрдбреНрдпреВрд▓, EL2 рдкрд░ рдЪрд▓рддреЗ рд░рд╣рддреЗ рд╣реИрдВ.
  3. рд░рдирдЯрд╛рдЗрдо: рд╕рд╛рдорд╛рдиреНрдп рдХрд░реНрдирд▓, рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рдмреВрдЯ рд╣реЛрддрд╛ рд╣реИ. рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдкреЗрд╕ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рддрдХ, рд╕рднреА рдЬрд╝рд░реВрд░реА рдбрд┐рд╡рд╛рдЗрд╕ рдбреНрд░рд╛рдЗрд╡рд░ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ. рдЗрд╕ рд╕рдордп, pKVM рдЪрд╛рд▓реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╕реНрдЯреЗрдЬ-2 рдХреА рдкреЗрдЬ рдЯреЗрдмрд▓ рдХреЛ рдореИрдиреЗрдЬ рдХрд░рддрд╛ рд╣реИ.

рдмреВрдЯ рдХрд░рдиреЗ рдХреА рдкреНрд░реЛрд╕реЗрд╕ рдореЗрдВ, рдмреВрдЯрд▓реЛрдбрд░ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рдпрд╣ рдмреВрдЯрд▓реЛрдбрд░, рд╢реБрд░реБрдЖрддреА рдлрд╝реЗрдЬрд╝ рдХреЗ рд▓рд┐рдП рдХрд░реНрдирд▓ рдЗрдореЗрдЬ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрд╕рдХреА рдЕрдЦрдВрдбрддрд╛ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИ. рдХрд░реНрдирд▓ рдХреЛ рдХрдо рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдорд┐рд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рдорд╛рдирддрд╛. рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ рдХреА рдпрд╣ рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░реА рд╣реЛрддреА рд╣реИ рдХрд┐ рд╡рд╣ рдЦреБрдж рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рдЦреЗ, рднрд▓реЗ рд╣реА рдХрд░реНрдирд▓ рд╕реЗ рд╕рдордЭреМрддрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ.

Android рдХрд░реНрдирд▓ рдФрд░ рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ рдХреЛ рдПрдХ рд╣реА рдмрд╛рдЗрдирд░реА рдЗрдореЗрдЬ рдореЗрдВ рд░рдЦрдиреЗ рд╕реЗ, рдЙрдирдХреЗ рдмреАрдЪ рдмрд╣реБрдд рдХрдо рд╕рдордп рдореЗрдВ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд╝рд░ рд╣реЛ рдкрд╛рддрд╛ рд╣реИ. рдЗрди рджреЛрдиреЛрдВ рдХреЙрдореНрдкреЛрдиреЗрдВрдЯ рдХреЛ рдПрдХ рд╕рд╛рде рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдорд┐рд▓рддреА рд╣реИ. рдЗрд╕рд╕реЗ, рджреЛрдиреЛрдВ рдХреЗ рдмреАрдЪ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╕реНрдерд┐рд░ рд░рдЦрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рдкрдбрд╝рддреА. рд╕рд╛рде рд╣реА, рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд░рдЦрд░рдЦрд╛рд╡ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдЖрддреА. рдЗрди рджреЛрдиреЛрдВ рдХреЙрдореНрдкреЛрдиреЗрдВрдЯ рдХреЗ рдмреАрдЪ рдордЬрд╝рдмреВрдд рдЗрдВрдЯрд┐рдЧреНрд░реЗрд╢рди рд╣реЛрдиреЗ рдХреА рд╡рдЬрд╣ рд╕реЗ, рдкрд░рдлрд╝реЙрд░реНрдореЗрдВрд╕ рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рдРрд╕рд╛ рддрдм рд╣реЛрддрд╛ рд╣реИ, рдЬрдм рджреЛрдиреЛрдВ рдХреЙрдореНрдкреЛрдиреЗрдВрдЯ рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рд╕реЗ рдЬреБрдбрд╝реА рдЧрд╛рд░рдВрдЯреА рдкрд░ рдЕрд╕рд░ рдбрд╛рд▓реЗ рдмрд┐рдирд╛ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ.

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, Android рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЬреАрдХреЗрдЖрдИ рдХреЛ рдЕрдкрдирд╛рдиреЗ рд╕реЗ, pKVM рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ рдХреЛ Android рдбрд┐рд╡рд╛рдЗрд╕реЛрдВ рдкрд░ рдЕрдкрдиреЗ-рдЖрдк рдбрд┐рдкреНрд▓реЙрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рдпрд╣ рдХрд░реНрдиреЗрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдмрд╛рдЗрдирд░реА рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ.

рд╕реАрдкреАрдпреВ рдХреА рдореЗрдореЛрд░реА рдХреЛ рдРрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рд╕реЗ рдЬреБрдбрд╝реА рд╕реБрд░рдХреНрд╖рд╛

рдЖрд░реНрдо рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ, рдореЗрдореЛрд░реА рдореИрдиреЗрдЬрдореЗрдВрдЯ рдпреВрдирд┐рдЯ (рдПрдордПрдордпреВ) рдХреЛ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪрд░рдгреЛрдВ рдореЗрдВ рдмрд╛рдВрдЯрд╛ рдЧрдпрд╛ рд╣реИ. рдЗрди рджреЛрдиреЛрдВ рдЪрд░рдгреЛрдВ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓, рдкрддреЗ рдХреЗ рдЕрдиреБрд╡рд╛рдж рдФрд░ рдореЗрдореЛрд░реА рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдРрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рдкрд╣рд▓реЗ рдЪрд░рдг рдХреЗ рдПрдордПрдордпреВ рдХреЛ EL1 рдХрдВрдЯреНрд░реЛрд▓ рдХрд░рддрд╛ рд╣реИ. рдЗрд╕рд╕реЗ рдкрддреЗ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдкрд╣рд▓реЗ рд▓реЗрд╡рд▓ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рдкрд╣рд▓реЗ рдЪрд░рдг рдХреЗ рдПрдордПрдордпреВ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ Linux рдХрд░рддрд╛ рд╣реИ. рдЗрд╕рд╕реЗ рд╡рд╣ рд╣рд░ рдпреВрдЬрд╝рд░рд╕реНрдкреЗрд╕ рдкреНрд░реЛрд╕реЗрд╕ рдФрд░ рдЕрдкрдиреЗ рд╡рд░реНрдЪреБрдЕрд▓ рдкрддрд╛ рд╕реНрдкреЗрд╕ рдХреЛ рдореИрдиреЗрдЬ рдХрд░ рдкрд╛рддрд╛ рд╣реИ.

рджреВрд╕рд░реЗ рдЪрд░рдг рдХреЗ рдПрдордПрдордпреВ рдХреЛ EL2 рдХрдВрдЯреНрд░реЛрд▓ рдХрд░рддрд╛ рд╣реИ. рдпрд╣ рдкрд╣рд▓реЗ рдЪрд░рдг рдХреЗ рдПрдордПрдордпреВ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдкрддреЗ рдкрд░ рджреВрд╕рд░реЗ рдкрддреЗ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ. рдЗрд╕рд╕реЗ рдлрд╝рд┐рдЬрд╝рд┐рдХрд▓ рдкрддрд╛ (рдкреАрдП) рдорд┐рд▓рддрд╛ рд╣реИ. рджреВрд╕рд░реЗ рдЪрд░рдг рдХреЗ рдЕрдиреБрд╡рд╛рдж рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░, рдЗрди рдХрд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рд╕рднреА рдЧреЗрд╕реНрдЯ рд╡реАрдПрдо рд╕реЗ рдореЗрдореЛрд░реА рдРрдХреНрд╕реЗрд╕ рдХреЛ рдХрдВрдЯреНрд░реЛрд▓ рдХрд░рдирд╛ рдФрд░ рдЙрдирдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛. рджреВрд╕рд░реА рдЗрдореЗрдЬ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЕрдиреБрд╡рд╛рдж рдХреЗ рджреЛрдиреЛрдВ рдЪрд░рдгреЛрдВ рдХреЗ рдЪрд╛рд▓реВ рд╣реЛрдиреЗ рдкрд░, рдкрд╣рд▓реЗ рдЪрд░рдг рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдкрддреЗ рдХреЛ рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдлрд╝рд┐рдЬрд╝рд┐рдХрд▓ рдкрддрд╛ (рдЖрдИрдкреАрдП) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ. рдзреНрдпрд╛рди рджреЗрдВ: рд╡рд░реНрдЪреБрдЕрд▓ рдкрддреЗ (рд╡реАрдП) рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдкрд╣рд▓реЗ рдЖрдИрдкреАрдП рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рдЗрд╕рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ рдкреАрдП рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ.

рд╕реАрдкреАрдпреВ рдХреА рдореЗрдореЛрд░реА рдХреЛ рдРрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рд╕реЗ рдЬреБрдбрд╝реА рд╕реБрд░рдХреНрд╖рд╛

рджреВрд╕рд░реА рдЗрдореЗрдЬ. рд╕реАрдкреАрдпреВ рдХреА рдореЗрдореЛрд░реА рдХреЛ рдРрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рд╕реЗ рдЬреБрдбрд╝реА рд╕реБрд░рдХреНрд╖рд╛

рдкрд╣рд▓реЗ, KVM рдореЗрдВ рдореЗрд╣рдорд╛рдиреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рджреМрд░рд╛рди рд╕реНрдЯреЗрдЬ 2 рдЯреНрд░рд╛рдВрд╕рд▓реЗрд╢рди рдЪрд╛рд▓реВ рд░рд╣рддрд╛ рдерд╛. рд╡рд╣реАрдВ, рд╣реЛрд╕реНрдЯ Linux рдХрд░реНрдирд▓ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рджреМрд░рд╛рди рд╕реНрдЯреЗрдЬ 2 рдЯреНрд░рд╛рдВрд╕рд▓реЗрд╢рди рдмрдВрдж рд░рд╣рддрд╛ рдерд╛. рдЗрд╕ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреА рдорджрдж рд╕реЗ, рд╣реЛрд╕реНрдЯ рдХреЗ рд╕реНрдЯреЗрдЬ 1 рдПрдордПрдордпреВ рд╕реЗ рдореЗрдореЛрд░реА рдРрдХреНрд╕реЗрд╕, рд╕реНрдЯреЗрдЬ 2 рдПрдордПрдордпреВ рд╕реЗ рд╣реЛрдХрд░ рдЧреБрдЬрд╝рд░рддрд╛ рд╣реИ. рдЗрд╕рд▓рд┐рдП, рд╣реЛрд╕реНрдЯ рдХреЛ рдЧреЗрд╕реНрдЯ рдореЗрдореЛрд░реА рдкреЗрдЬреЛрдВ рдХрд╛ рдкреВрд░рд╛ рдРрдХреНрд╕реЗрд╕ рдорд┐рд▓рддрд╛ рд╣реИ. рджреВрд╕рд░реА рдУрд░, pKVM рд╣реЛрд╕реНрдЯ рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ рдореЗрдВ рднреА рджреВрд╕рд░реЗ рдЪрд░рдг рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рддрд╛ рд╣реИ. рд╕рд╛рде рд╣реА, рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ рдХреЛ рд╣реЛрд╕реНрдЯ рдХреЗ рдмрдЬрд╛рдп рдЧреЗрд╕реНрдЯ рдореЗрдореЛрд░реА рдкреЗрдЬреЛрдВ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░реА рджреЗрддрд╛ рд╣реИ.

KVM, рджреВрд╕рд░реЗ рдЪрд░рдг рдореЗрдВ рдкрддрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд╛ рдкреВрд░рд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдореЗрд╣рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрдЯрд┐рд▓ рдЖрдИрдкреАрдП/рдкреАрдП рдореИрдкрд┐рдВрдЧ рд▓рд╛рдЧреВ рдХреА рдЬрд╛ рд╕рдХреЗ. рдЗрд╕рд╕реЗ рдореЗрд╣рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдлрд╝рд┐рдЬрд╝рд┐рдХрд▓ рдлрд╝реНрд░реИрдЧрдореЗрдВрдЯреЗрд╢рди рдХреЗ рдмрд╛рд╡рдЬреВрдж рд▓рдЧрд╛рддрд╛рд░ рдореЗрдореЛрд░реА рдХрд╛ рднреНрд░рдо рдкреИрджрд╛ рд╣реЛрддрд╛ рд╣реИ. рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЗрдЬ 2 рдХреЗ рдПрдордПрдордпреВ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓, рд╕рд┐рд░реНрдлрд╝ рдРрдХреНрд╕реЗрд╕ рдХрдВрдЯреНрд░реЛрд▓ рддрдХ рд╕реАрдорд┐рдд рд╣реИ. рд╣реЛрд╕реНрдЯ рд╕реНрдЯреЗрдЬ 2 рдХреЛ рдЖрдЗрдбреЗрдВрдЯрд┐рдЯреА-рдореИрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рдЗрд╕рд╕реЗ рдпрд╣ рдкрдХреНрдХрд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╣реЛрд╕реНрдЯ рдХреЗ рдЖрдИрдкреАрдП рд╕реНрдкреЗрд╕ рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рдореМрдЬреВрдж рдореЗрдореЛрд░реА, рдкреАрдП рд╕реНрдкреЗрд╕ рдореЗрдВ рднреА рд▓рдЧрд╛рддрд╛рд░ рдореМрдЬреВрдж рд╣реЛ. рдЗрд╕ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреА рдорджрдж рд╕реЗ, рдкреЗрдЬ рдЯреЗрдмрд▓ рдореЗрдВ рдмрдбрд╝реЗ рдореИрдкрд┐рдВрдЧ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рдЗрд╕рд╕реЗ рдЯреНрд░рд╛рдВрд╕рд▓реЗрд╢рди рд▓реБрдХрд╕рд╛рдЗрдб рдмрдлрд╝рд░ (рдЯреАрдПрд▓рдмреА) рдкрд░ рджрдмрд╛рд╡ рдХрдо рд╣реЛрддрд╛ рд╣реИ. рдкрд╣рдЪрд╛рди рдХреА рдореИрдкрд┐рдВрдЧ рдХреЛ рдкреАрдП рдЗрдВрдбреЗрдХреНрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ. рдЗрд╕рд▓рд┐рдП, рд╣реЛрд╕реНрдЯ рд╕реНрдЯреЗрдЬ 2 рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдкреЗрдЬ рдХреЗ рдорд╛рд▓рд┐рдХрд╛рдирд╛ рд╣рдХ рдХреЛ рд╕реАрдзреЗ рддреМрд░ рдкрд░ рдкреЗрдЬ рдЯреЗрдмрд▓ рдореЗрдВ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ.

рдбрд╛рдпрд░реЗрдХреНрдЯ рдореЗрдореЛрд░реА рдРрдХреНрд╕реЗрд╕ (рдбреАрдПрдордП) рд╕реЗ рд╕реБрд░рдХреНрд╖рд╛

рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕реАрдкреАрдпреВ рдкреЗрдЬ рдЯреЗрдмрд▓ рдореЗрдВ Linux рд╣реЛрд╕реНрдЯ рд╕реЗ рдЧреЗрд╕реНрдЯ рдкреЗрдЬ рдХреЛ рдЕрдирдореИрдк рдХрд░рдирд╛, рдЧреЗрд╕реНрдЯ рдореЗрдореЛрд░реА рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд░реВрд░реА рд╣реИ. рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдХрд╛рдлрд╝реА рдирд╣реАрдВ рд╣реИ. pKVM рдХреЛ рд╣реЛрд╕реНрдЯ рдХрд░реНрдирд▓ рдХреЗ рдХрдВрдЯреНрд░реЛрд▓ рдореЗрдВ рдореМрдЬреВрдж, рдбреАрдПрдордП рдХреА рд╕реБрд╡рд┐рдзрд╛ рд╡рд╛рд▓реЗ рдбрд┐рд╡рд╛рдЗрд╕реЛрдВ рдХреЗ рдореЗрдореЛрд░реА рдРрдХреНрд╕реЗрд╕ рд╕реЗ рднреА рд╕реБрд░рдХреНрд╖рд╛ рдХрд░рдиреА рд╣реЛрддреА рд╣реИ. рд╕рд╛рде рд╣реА, рдЙрд╕реЗ рдХрд┐рд╕реА рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд╣реЛрд╕реНрдЯ рдХреА рдУрд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдП рдЧрдП рдбреАрдПрдордП рд╣рдорд▓реЗ рд╕реЗ рднреА рд╕реБрд░рдХреНрд╖рд╛ рдХрд░рдиреА рд╣реЛрддреА рд╣реИ. рдРрд╕реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЧреЗрд╕реНрдЯ рдореЗрдореЛрд░реА рдРрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, pKVM рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ DMA рдХреА рд╕реБрд╡рд┐рдзрд╛ рд╡рд╛рд▓реЗ рд╣рд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП, рдЗрдирдкреБрдЯ-рдЖрдЙрдЯрдкреБрдЯ рдореЗрдореЛрд░реА рдореИрдиреЗрдЬрдореЗрдВрдЯ рдпреВрдирд┐рдЯ (IOMMU) рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реЛрддреА рд╣реИ. рдЗрд╕реЗ рдЗрдореЗрдЬ 3 рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ.

рдбреАрдПрдордП рдореЗрдореЛрд░реА рдРрдХреНрд╕реЗрд╕ рд╕реБрд░рдХреНрд╖рд╛

рддреАрд╕рд░реА рдЗрдореЗрдЬ. рдбреАрдПрдордП рдореЗрдореЛрд░реА рдРрдХреНрд╕реЗрд╕ рд╕реБрд░рдХреНрд╖рд╛

рдХрдо рд╕реЗ рдХрдо, IOMMU рд╣рд╛рд░реНрдбрд╡реЗрдпрд░, рдХрд┐рд╕реА рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдкреЗрдЬ рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ рдлрд╝рд┐рдЬрд╝рд┐рдХрд▓ рдореЗрдореЛрд░реА рдХреЗ рд▓рд┐рдП рдкрдврд╝рдиреЗ/рд▓рд┐рдЦрдиреЗ рдХрд╛ рдРрдХреНрд╕реЗрд╕ рджреЗрдиреЗ рдФрд░ рд░рджреНрдж рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рддрд╛ рд╣реИ. рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ IOMMU рд╣рд╛рд░реНрдбрд╡реЗрдпрд░, pVM рдореЗрдВ рдбрд┐рд╡рд╛рдЗрд╕реЛрдВ рдХреЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЖрдЗрдбреЗрдВрдЯрд┐рдЯреА-рдореИрдкреНрдб рд╕реНрдЯреЗрдЬ 2 рдХреЛ рдорд╛рдирддреЗ рд╣реИрдВ.

рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЗрдХрд╛рдЗрдпреЛрдВ рдХреА рдУрд░ рд╕реЗ рдЬрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдореЗрдореЛрд░реА рд▓реЗрди-рджреЗрди рдХреЛ рдЖрдИрдУрдПрдордПрдордпреВ рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рддрд╛рдХрд┐ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдкреЗрдЬ рдЯреЗрдмрд▓ рдХреЗ рд╕рд╣реА рд╕реЗрдЯ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ.

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, EL2 рдкрд░ рдПрд╕рдУрд╕реА рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рдХрд░рдирд╛, pKVM рдХреЗ рдХреБрд▓ рднрд░реЛрд╕реЗрдордВрдж рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдмреЗрд╕ (рдЯреАрд╕реАрдмреА) рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рдПрдХ рдЕрд╣рдо рд░рдгрдиреАрддрд┐ рд╣реИ. рдпрд╣ рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ рдореЗрдВ IOMMU рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рдЦрд╝рд┐рд▓рд╛рдлрд╝ рд╣реИ. рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, EL1 рдкрд░ рдореМрдЬреВрдж рд╣реЛрд╕реНрдЯ, IOMMU рдХреЛ рдореИрдиреЗрдЬ рдХрд░рдиреЗ рд╕реЗ рдЬреБрдбрд╝реЗ рд╕рд╣рд╛рдпрдХ рдЯрд╛рд╕реНрдХ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрддрд╛ рд╣реИ. рдЬреИрд╕реЗ, рдкрд╛рд╡рд░ рдореИрдиреЗрдЬрдореЗрдВрдЯ, рд╢реБрд░реВ рдХрд░рдирд╛, рдФрд░ рдЬрд╣рд╛рдВ рдЬрд╝рд░реВрд░реА рд╣реЛ рд╡рд╣рд╛рдВ рдЗрдВрдЯрд░рдкреНрдЯ рд╣реИрдВрдбрд▓ рдХрд░рдирд╛.

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдХрдВрдЯреНрд░реЛрд▓ рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рд╣реЛрд╕реНрдЯ рдХреЛ рджреЗрдиреЗ рд╕реЗ, IOMMU рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рдХреБрдЫ рдФрд░ рдЬрд╝рд░реВрд░реА рд╢рд░реНрддреЗрдВ рд▓рд╛рдЧреВ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ. рдЗрд╕рд╕реЗ рдпрд╣ рдкрдХреНрдХрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЕрдиреБрдорддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рдмрд╛рдпрдкрд╛рд╕ рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ. рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж.

рдЖрд░реНрдо рдбрд┐рд╡рд╛рдЗрд╕реЛрдВ рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреИрдВрдбрд░реНрдб рдФрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЖрдИрдУрдПрдордПрдордпреВ, рдЖрд░реНрдо рд╕рд┐рд╕реНрдЯрдо рдореЗрдореЛрд░реА рдореИрдиреЗрдЬрдореЗрдВрдЯ рдпреВрдирд┐рдЯ (рдПрд╕рдПрдордПрдордпреВ) рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╣реИ. рдЗрд╕рд╕реЗ рдЖрдЗрд╕реЛрд▓реЗрд╢рди рдФрд░ рдбрд╛рдпрд░реЗрдХреНрдЯ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ, рджреЛрдиреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рдЗрд╕ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЛ рд░реЗрдлрд╝рд░рдВрд╕ рдХреЗ рддреМрд░ рдкрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ.

рдореЗрдореЛрд░реА рдХрд╛ рдорд╛рд▓рд┐рдХрд╛рдирд╛ рд╣рдХ

рдмреВрдЯ рд╣реЛрдиреЗ рдХреЗ рд╕рдордп, рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рд╕рднреА рдореЗрдореЛрд░реА рдХреЛ рд╣реЛрд╕реНрдЯ рдХреА рдореЗрдореЛрд░реА рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ. рд╕рд╛рде рд╣реА, рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ рдЗрд╕реЗ рдЗрд╕реА рддрд░рд╣ рдЯреНрд░реИрдХ рдХрд░рддрд╛ рд╣реИ. рдЬрдм рдХреЛрдИ pVM рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣реЛрд╕реНрдЯ рдЙрд╕реЗ рдмреВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдкреЗрдЬ рджрд╛рди рдХрд░рддрд╛ рд╣реИ. рд╕рд╛рде рд╣реА, рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ рдЙрди рдкреЗрдЬреЛрдВ рдХрд╛ рдорд╛рд▓рд┐рдХрд╛рдирд╛ рд╣рдХ рд╣реЛрд╕реНрдЯ рд╕реЗ pVM рдХреЛ рдЯреНрд░рд╛рдВрд╕рдлрд╝рд░ рдХрд░ рджреЗрддрд╛ рд╣реИ. рдЗрд╕рд▓рд┐рдП, рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ рд╣реЛрд╕реНрдЯ рдХреЗ рд╕реНрдЯреЗрдЬ 2 рдкреЗрдЬ рдЯреЗрдмрд▓ рдореЗрдВ рдРрдХреНрд╕реЗрд╕ рдХрдВрдЯреНрд░реЛрд▓ рд╕реЗ рдЬреБрдбрд╝реА рдкрд╛рдмрдВрджрд┐рдпрд╛рдВ рд▓рдЧрд╛рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рд╡рд╣ рдкреЗрдЬреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдРрдХреНрд╕реЗрд╕ рди рдХрд░ рд╕рдХреЗ. рдЗрд╕рд╕реЗ рдореЗрд╣рдорд╛рди рдХреЛ рдирд┐рдЬрддрд╛ рдорд┐рд▓рддреА рд╣реИ.

рд╣реЛрд╕реНрдЯ рдФрд░ рдореЗрд╣рдорд╛рдиреЛрдВ рдХреЗ рдмреАрдЪ рдмрд╛рддрдЪреАрдд, рдореЗрдореЛрд░реА рдХреЛ рдХрдВрдЯреНрд░реЛрд▓ рдХрд░рдХреЗ рд╢реЗрдпрд░ рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреА рд╡рдЬрд╣ рд╕реЗ рд╣реЛ рдкрд╛рддреА рд╣реИ. рдореЗрд╣рдорд╛рдиреЛрдВ рдХреЛ рд╣рд╛рдЗрдкрд░рдХреЙрд▓ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдХреЗ, рдЕрдкрдиреЗ рдХреБрдЫ рдкреЗрдЬреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рд╣реЛрд╕реНрдЯ рдХреЗ рд╕рд╛рде рд╢реЗрдпрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реЛрддреА рд╣реИ. рдЗрд╕рд╕реЗ рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ рдХреЛ рд╣реЛрд╕реНрдЯ рдХреЗ рд╕реНрдЯреЗрдЬ 2 рдкреЗрдЬ рдЯреЗрдмрд▓ рдореЗрдВ рдЙрди рдкреЗрдЬреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдореИрдк рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИ. рдЗрд╕реА рддрд░рд╣, рд╣реЛрд╕реНрдЯ рдХреЗ TrustZone рдХреЗ рд╕рд╛рде рдХрдореНрдпреВрдирд┐рдХреЗрд╢рди рдХреЛ рдореЗрдореЛрд░реА рд╢реЗрдпрд░ рдХрд░рдиреЗ рдФрд░/рдпрд╛ рдЙрдзрд╛рд░ рд▓реЗрдиреЗ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдЗрдпреЛрдВ рдХреЗ рдЬрд╝рд░рд┐рдП рдореБрдордХрд┐рди рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рдЗрди рд╕рднреА рдХрд╛рд░реНрд░рд╡рд╛рдЗрдпреЛрдВ рдкрд░ pKVM рдХреА рдирдЬрд╝рд░ рд░рд╣рддреА рд╣реИ рдФрд░ рд╡рд╣ рдЗрдиреНрд╣реЗрдВ рдХрдВрдЯреНрд░реЛрд▓ рдХрд░рддрд╛ рд╣реИ. рдЗрд╕рдХреЗ рд▓рд┐рдП, рд╡рд╣ рдЖрд░реНрдо рдХреЗ рд▓рд┐рдП рдлрд╝рд░реНрдорд╡реЗрдпрд░ рдлрд╝реНрд░реЗрдорд╡рд░реНрдХ (рдПрдлрд╝рдПрдлрд╝-рдП) рд╕реНрдкреЗрд╕рд┐рдлрд╝рд┐рдХреЗрд╢рди рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддрд╛ рд╣реИ.

рд╕рдордп рдХреЗ рд╕рд╛рде-рд╕рд╛рде, pVM рдХреА рдореЗрдореЛрд░реА рдХреА рдЬрд╝рд░реВрд░рддреЗрдВ рдмрджрд▓ рд╕рдХрддреА рд╣реИрдВ. рдЗрд╕рд▓рд┐рдП, рдПрдХ рд╣рд╛рдЗрдкрд░рдХреЙрд▓ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рдЗрд╕рд╕реЗ, рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдкрд╛рд╕ рдореМрдЬреВрдж рдкреЗрдЬреЛрдВ рдХрд╛ рдорд╛рд▓рд┐рдХрд╛рдирд╛ рд╣рдХ рд╡рд╛рдкрд╕ рд╣реЛрд╕реНрдЯ рдХреЛ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рдЗрд╕ рд╣рд╛рдЗрдкрд░рдХреЙрд▓ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓, virtio balloon рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рдЗрд╕рд╕реЗ рд╡реАрдПрдордПрдо, рдкреАрд╡реАрдПрдо рд╕реЗ рдореЗрдореЛрд░реА рд╡рд╛рдкрд╕ рдкрд╛рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддрд╛ рд╣реИ. рд╕рд╛рде рд╣реА, рдкреАрд╡реАрдПрдо, рд╡реАрдПрдордПрдо рдХреЛ рдЫреЛрдбрд╝реЗ рдЧрдП рдкреЗрдЬреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрдирд╛ рджреЗ рд╕рдХрддрд╛ рд╣реИ. рдпрд╣ рд╕рдм рдХрдВрдЯреНрд░реЛрд▓ рдХрд┐рдП рдЧрдП рддрд░реАрдХреЗ рд╕реЗ рд╣реЛрддрд╛ рд╣реИ.

рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдореМрдЬреВрдж рд╕рднреА рдореЗрдореЛрд░реА рдкреЗрдЬреЛрдВ рдХреЗ рдорд╛рд▓рд┐рдХрд╛рдирд╛ рд╣рдХ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреА рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░реА рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ рдХреА рд╣реЛрддреА рд╣реИ. рд╕рд╛рде рд╣реА, рдпрд╣ рднреА рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреА рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░реА рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ рдХреА рд╣реЛрддреА рд╣реИ рдХрд┐ рдореЗрдореЛрд░реА рдкреЗрдЬреЛрдВ рдХреЛ рдЕрдиреНрдп рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╢реЗрдпрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдЙрдиреНрд╣реЗрдВ рдЙрдзрд╛рд░ рджрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ. рд╕реНрдЯреЗрдЯ рдЯреНрд░реИрдХрд┐рдВрдЧ рдХрд╛ рдЬрд╝реНрдпрд╛рджрд╛рддрд░ рдХрд╛рдо, рд╣реЛрд╕реНрдЯ рдФрд░ рдореЗрд╣рдорд╛рдиреЛрдВ рдХреА рд╕реНрдЯреЗрдЬ 2 рдкреЗрдЬ рдЯреЗрдмрд▓ рд╕реЗ рдЬреБрдбрд╝реЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рдЗрд╕рдХреЗ рд▓рд┐рдП, рдкреЗрдЬ рдЯреЗрдмрд▓ рдПрдВрдЯреНрд░реА (рдкреАрдЯреАрдИ) рдореЗрдВ рд░рд┐рдЬрд╝рд░реНрд╡ рдХрд┐рдП рдЧрдП рдмрд┐рдЯ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рдЬреИрд╕рд╛ рдХрд┐ рдЗрдирдХреЗ рдирд╛рдо рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рдЗрдиреНрд╣реЗрдВ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреЗ рд▓рд┐рдП рд░рд┐рдЬрд╝рд░реНрд╡ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ.

рд╣реЛрд╕реНрдЯ рдХреЛ рдпрд╣ рдкрдХреНрдХрд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╡рд╣ рдЙрди рдкреЗрдЬреЛрдВ рдХреЛ рдРрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рди рдХрд░реЗ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ рдиреЗ рдРрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХ рджрд┐рдпрд╛ рд╣реИ. рд╣реЛрд╕реНрдЯ рдХреЛ рдЧреИрд░-рдХрд╛рдиреВрдиреА рддрд░реАрдХреЗ рд╕реЗ рдРрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдкрд░, рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ рд╣реЛрд╕реНрдЯ рдореЗрдВ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдЕрдкрд╡рд╛рдж рдбрд╛рд▓рддрд╛ рд╣реИ. рдЗрд╕рд╕реЗ, рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рдпреВрдЬрд╝рд░рд╕реНрдкреЗрд╕ рдЯрд╛рд╕реНрдХ рдХреЛ SEGV рд╕рд┐рдЧреНрдирд▓ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рд╣реЛрд╕реНрдЯ рдХрд░реНрдирд▓ рдХреНрд░реИрд╢ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ. рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдРрдХреНрд╕реЗрд╕ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдореЗрд╣рдорд╛рдиреЛрдВ рдХреЛ рджрд╛рди рдХрд┐рдП рдЧрдП рдкреЗрдЬреЛрдВ рдХреЛ рд╣реЛрд╕реНрдЯ рдХрд░реНрдирд▓ рд╕реНрд╡реИрдк рдпрд╛ рдорд░реНрдЬ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛.

рд░реБрдХрд╛рд╡рдЯреЛрдВ рдХреЛ рдореИрдиреЗрдЬ рдХрд░рдирд╛ рдФрд░ рдЯрд╛рдЗрдорд░

рдЗрдВрдЯрд░рдкреНрдЯ, рдореЗрд╣рдорд╛рди рдХреЗ рдбрд┐рд╡рд╛рдЗрд╕реЛрдВ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЬрд╝рд░реВрд░реА рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ. рд╕рд╛рде рд╣реА, рд╕реАрдкреАрдпреВ рдХреЗ рдмреАрдЪ рдХрдореНрдпреВрдирд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рднреА рдпрд╣ рдЬрд╝рд░реВрд░реА рд╣реИ. рдЗрд╕рдореЗрдВ рдЗрдВрдЯрд░рдкреНрд░реЛрд╕реЗрд╕рд░ рдЗрдВрдЯрд░рдкреНрдЯ (рдЖрдИрдкреАрдЖрдИ) рдХрдореНрдпреВрдирд┐рдХреЗрд╢рди рдХрд╛ рдореБрдЦреНрдп рддрд░реАрдХрд╛ рд╣реИ. KVM рдореЙрдбрд▓ рдореЗрдВ, рд╕рднреА рд╡рд░реНрдЪреБрдЕрд▓ рдЗрдВрдЯрд░рдкреНрдЯ рдореИрдиреЗрдЬрдореЗрдВрдЯ рдХреЛ EL1 рдореЗрдВ рд╣реЛрд╕реНрдЯ рдХреЛ рд╕реМрдВрдк рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, рдпрд╣ рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ рдХреЗ рдПрдХ рдРрд╕реЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рддреМрд░ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛.

pKVM, рдореМрдЬреВрджрд╛ KVM рдХреЛрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬреЗрдиреЗрд░рд┐рдХ рдЗрдВрдЯрд░рдкреНрдЯ рдХрдВрдЯреНрд░реЛрд▓рд░ рд╡рд░реНрд╢рди 3 (GICv3) рдЗрдореНрдпреВрд▓реЗрд╢рди рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рддрд╛ рд╣реИ. рдЯрд╛рдЗрдорд░ рдФрд░ рдЖрдИрдкреАрдЖрдИ рдХреЛ, рднрд░реЛрд╕реЗрдордВрдж рдирд╣реАрдВ рдорд╛рдиреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЗрд╕ рдЗрдореНрдпреВрд▓реЗрд╢рди рдХреЛрдб рдХреЗ рддрд╣рдд рдореИрдиреЗрдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ.

GICv3 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

EL1 рдФрд░ EL2 рдХреЗ рдмреАрдЪ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рдпрд╣ рдкрдХреНрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрдВрдЯрд░рдкреНрдЯ рдХреА рдкреВрд░реА рд╕реНрдерд┐рддрд┐, EL1 рд╣реЛрд╕реНрдЯ рдХреЛ рджрд┐рдЦреЗ. рдЗрд╕рдореЗрдВ рдЗрдВрдЯрд░рдкреНрдЯ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреА рдХреЙрдкреА рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ. рдЖрдо рддреМрд░ рдкрд░, рдпрд╣ рд╡рд┐рдЬрд╝рд┐рдмрд┐рд▓рд┐рдЯреА рд╢реЗрдпрд░ рдХреА рдЧрдИ рдореЗрдореЛрд░реА рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдХреЗ рд╣рд╛рд╕рд┐рд▓ рдХреА рдЬрд╛рддреА рд╣реИ. рд╣рд░ рд╡рд░реНрдЪреБрдЕрд▓ рд╕реАрдкреАрдпреВ (рд╡реАрд╕реАрдкреАрдпреВ) рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд╖реЗрддреНрд░ рд╣реЛрддрд╛ рд╣реИ.

рд╕рд┐рд╕реНрдЯрдо рд░рдЬрд┐рд╕реНрдЯрд░ рд░рдирдЯрд╛рдЗрдо рд╕рдкреЛрд░реНрдЯ рдХреЛрдб рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдлрд╝ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдЬрдирд░реЗрдЯреЗрдб рдЗрдВрдЯрд░рдкреНрдЯ рд░рдЬрд┐рд╕реНрдЯрд░ (рдПрд╕рдЬреАрдЖрдИрдЖрд░) рдФрд░ рдбреАрдРрдХреНрдЯрд┐рд╡реЗрдЯ рдЗрдВрдЯрд░рдкреНрдЯ рд░рдЬрд┐рд╕реНрдЯрд░ (рдбреАрдЖрдИрдЖрд░) рд░рдЬрд┐рд╕реНрдЯрд░ рдЯреНрд░реИрдкрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХреЗ. рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рдореБрддрд╛рдмрд┐рдХ, рдЗрди рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЛ рд╣рдореЗрд╢рд╛ EL2 рдкрд░ рдЯреНрд░реИрдк рдХрд░рдирд╛ рд╣реЛрддрд╛ рд╣реИ. рд╡рд╣реАрдВ, рдЕрдиреНрдп рдЯреНрд░реИрдк рдЕрдм рддрдХ рд╕рд┐рд░реНрдлрд╝ errata рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдпрджреЗрдордВрдж рд░рд╣реЗ рд╣реИрдВ. рдмрд╛рдХреА рд╕рднреА рдХрд╛рдо рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдореЗрдВ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ.

MMIO рдХреА рддрд░рдлрд╝ рд╕реЗ, EL1 рдкрд░ рд╣рд░ рдЪреАрдЬрд╝ рдХрд╛ рдЗрдореНрдпреВрд▓реЗрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рд╕рд╛рде рд╣реА, KVM рдореЗрдВ рдореМрдЬреВрдж рд╕рднреА рдореМрдЬреВрджрд╛ рдЗрдВрдлрд╝реНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХрд╛ рдлрд┐рд░ рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рдЖрдЦрд┐рд░ рдореЗрдВ, Wait for Interrupt (WFI) рдХреЛ рд╣рдореЗрд╢рд╛ EL1 рдкрд░ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ KVM рдХреА рдмреБрдирд┐рдпрд╛рджреА рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ рдкреНрд░рд┐рдорд┐рдЯрд┐рд╡ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ.

рдЯрд╛рдЗрдорд░ рдХреА рд╕реБрд╡рд┐рдзрд╛

рд╡рд░реНрдЪреБрдЕрд▓ рдЯрд╛рдЗрдорд░ рдХреЗ рд▓рд┐рдП рддреБрд▓рдирд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╡реИрд▓реНрдпреВ рдХреЛ рд╣рд░ рдЯреНрд░реИрдкрд┐рдВрдЧ WFI рдкрд░ EL1 рдХреЛ рджрд┐рдЦрд╛рдирд╛ рд╣реЛрдЧрд╛, рддрд╛рдХрд┐ EL1, vCPU рдХреЗ рдмреНрд▓реЙрдХ рд╣реЛрдиреЗ рдкрд░ рдЯрд╛рдЗрдорд░ рдЗрдВрдЯрд░рдкреНрдЯ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░ рд╕рдХреЗ. рдлрд╝рд┐рдЬрд╝рд┐рдХрд▓ рдЯрд╛рдЗрдорд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрдореНрдпреВрд▓реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рднреА рдЯреНрд░реИрдк EL1 рдХреЛ рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВ.

MMIO рд╣реИрдВрдбрд▓рд┐рдВрдЧ

рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдореЙрдирд┐рдЯрд░ (рд╡реАрдПрдордПрдо) рд╕реЗ рдХрдореНрдпреВрдирд┐рдХреЗрдЯ рдХрд░рдиреЗ рдФрд░ рдЬреАрдЖрдИрд╕реА рдЗрдореНрдпреВрд▓реЗрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдордПрдордЖрдИрдУ рдЯреНрд░реИрдк рдХреЛ EL1 рдореЗрдВ рд╣реЛрд╕реНрдЯ рдкрд░ рд╡рд╛рдкрд╕ рднреЗрдЬрдирд╛ рд╣реЛрдЧрд╛, рддрд╛рдХрд┐ рдЖрдЧреЗ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрд╛ рд╕рдХреЗ. pKVM рдХреЗ рд▓рд┐рдП, рдпреЗ рдЬрд╝рд░реВрд░реА рд╢рд░реНрддреЗрдВ рдкреВрд░реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:

  • рдЖрдИрдкреАрдП рдФрд░ рдРрдХреНрд╕реЗрд╕ рдХрд╛ рд╕рд╛рдЗрдЬрд╝
  • рд▓рд┐рдЦрдиреЗ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдбреЗрдЯрд╛
  • рдЯреНрд░реИрдкрд┐рдВрдЧ рдХреЗ рд╕рдордп рд╕реАрдкреАрдпреВ рдХрд╛ рдПрдВрдбрд┐рдпрдирдиреЗрд╕

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реЛрд░реНрд╕/рдбреЗрд╕реНрдЯрд┐рдиреЗрд╢рди рдХреЗ рддреМрд░ рдкрд░ рд╕рд╛рдорд╛рдиреНрдп рдордХрд╕рдж рдХреЗ рд░рдЬрд┐рд╕реНрдЯрд░ (рдЬреАрдкреАрдЖрд░) рд╡рд╛рд▓реЗ рдЯреНрд░реИрдк, рдРрдмреНрд╕реНрдЯреНрд░реИрдХреНрдЯ рдЯреНрд░рд╛рдВрд╕рдлрд╝рд░ рд╕реНрдпреВрдбреЛ-рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдХреЗ рд░рд┐рд▓реЗ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ.

рдореЗрд╣рдорд╛рди рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕

рдХреЛрдИ рдореЗрд╣рдорд╛рди, рд╕реБрд░рдХреНрд╖рд┐рдд рдореЗрд╣рдорд╛рди рд╕реЗ рдмрд╛рддрдЪреАрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ. рдЗрд╕рдХреЗ рд▓рд┐рдП, рд╡рд╣ рд╣рд╛рдЗрдкрд░рдХреЙрд▓ рдФрд░ рдЯреНрд░реИрдкреНрдб рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдореЗрдореЛрд░реА рдРрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддрд╛ рд╣реИ. рд╣рд╛рдЗрдкрд░рдХреЙрд▓, рдПрд╕рдПрдорд╕реАрд╕реАрд╕реА рд╕реНрдЯреИрдВрдбрд░реНрдб рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ рджрд┐рдЦрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ. рд╕рд╛рде рд╣реА, рдХреЗрд╡реАрдПрдо рдХреЗ рдЬрд╝рд░рд┐рдП рд╡реЗрдВрдбрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд░реЗрдВрдЬ рд░рд┐рдЬрд╝рд░реНрд╡ рдХреА рдЬрд╛рддреА рд╣реИ. рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╣рд╛рдЗрдкрд░рдХреЙрд▓, pKVM рдЧреЗрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдЦрд╛рд╕ рддреМрд░ рдкрд░ рдЬрд╝рд░реВрд░реА рд╣реИрдВ.

рдЬреЗрдиреЗрд░рд┐рдХ рд╣рд╛рдЗрдкрд░рдХреЙрд▓

  • PSCI, рдореЗрд╣рдорд╛рди рдХреЛ рдЕрдкрдиреЗ vCPU рдХреЗ рд▓рд╛рдЗрдлрд╝рд╕рд╛рдЗрдХрд▓ рдХреЛ рдХрдВрдЯреНрд░реЛрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдЯреИрдВрдбрд░реНрдб рдореИрдХреЗрдирд┐рдЬрд╝реНрдо рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рддрд╛ рд╣реИ. рдЗрд╕рдореЗрдВ рдСрдирд▓рд╛рдЗрди рдХрд░рдирд╛, рдСрдлрд╝рд▓рд╛рдЗрди рдХрд░рдирд╛, рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдмрдВрдж рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ.
  • рдЯреАрдЖрд░рдПрдирдЬреА, рдореЗрд╣рдорд╛рди рдХреЛ рдкреАрдХреЗрд╡реАрдПрдо рд╕реЗ рдПрдВрдЯреНрд░реЙрдкреА рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдЯреИрдВрдбрд░реНрдб рддрд░реАрдХрд╛ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рддрд╛ рд╣реИ. рдкреАрдХреЗрд╡реАрдПрдо, рдХреЙрд▓ рдХреЛ EL3 рдкрд░ рд░рд┐рд▓реЗ рдХрд░рддрд╛ рд╣реИ. рдпрд╣ рддрд░реАрдХрд╛ рдЦрд╛рд╕ рддреМрд░ рдкрд░ рддрдм рдХрд╛рдо рдЖрддрд╛ рд╣реИ, рдЬрдм рд╣реЛрд╕реНрдЯ рдкрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд░реИрдВрдбрдо рдирдВрдмрд░ рдЬрдирд░реЗрдЯрд░ (рдЖрд░рдПрдирдЬреА) рдХреЛ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛.

pKVM рд╣рд╛рдЗрдкрд░рдХреЙрд▓

  • рд╣реЛрд╕реНрдЯ рдХреЗ рд╕рд╛рде рдпрд╛рджреЗрдВ рд╢реЗрдпрд░ рдХрд░рдирд╛. рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдореЗрд╣рдорд╛рди рдХреЗ рдкрд╛рд╕ рдореМрдЬреВрдж рдореЗрдореЛрд░реА рдХреЛ рд╣реЛрд╕реНрдЯ рдРрдХреНрд╕реЗрд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛. рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╢реЗрдпрд░ рдХреА рдЧрдИ рдореЗрдореЛрд░реА рд╕реЗ рдХрдореНрдпреВрдирд┐рдХреЗрдЯ рдХрд░рдиреЗ рдФрд░ рд╢реЗрдпрд░ рдХрд┐рдП рдЧрдП рдмрдлрд╝рд░ рдкрд░ рдирд┐рд░реНрднрд░ рд░рд╣рдиреЗ рд╡рд╛рд▓реЗ рдкреИрд░рд╛рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬрд╝реНрдб рдбрд┐рд╡рд╛рдЗрд╕реЛрдВ рдХреЗ рд▓рд┐рдП, рд╣реЛрд╕реНрдЯ рдХрд╛ рдРрдХреНрд╕реЗрд╕ рдЬрд╝рд░реВрд░реА рд╣реИ. рд╣реЛрд╕реНрдЯ рдХреЗ рд╕рд╛рде рдкреЗрдЬреЛрдВ рдХреЛ рд╢реЗрдпрд░ рдХрд░рдиреЗ рдФрд░ рдЕрдирд╢реЗрдпрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд╛рдЗрдкрд░рдХреЙрд▓ рдХреА рдорджрдж рд╕реЗ, рдореЗрд╣рдорд╛рди рдпрд╣ рддрдп рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореЗрдореЛрд░реА рдХреЗ рдХрд┐рди рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ Android рдХреЗ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдпрд╛ рдЬрд╛рдП. рдЗрд╕рдХреЗ рд▓рд┐рдП, рд╣реИрдВрдбрд╢реЗрдХ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реЛрддреА.
  • рд╣реЛрд╕реНрдЯ рдХреЛ рдореЗрдореЛрд░реА рд╡рд╛рдкрд╕ рджреЗрдирд╛. рдЖрдо рддреМрд░ рдкрд░, рдореЗрд╣рдорд╛рди рдХреЗ рддреМрд░ рдкрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдореЗрдореЛрд░реА, рдореЗрд╣рдорд╛рди рдХреЗ рдкрд╛рд╕ рд╣реА рд░рд╣рддреА рд╣реИ. рдРрд╕рд╛ рддрдм рддрдХ рд╣реЛрддрд╛ рд╣реИ, рдЬрдм рддрдХ рдЙрд╕реЗ рдорд┐рдЯрд╛ рди рджрд┐рдпрд╛ рдЬрд╛рдП. рдпрд╣ рд╕реНрдерд┐рддрд┐, рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдЙрди рд╡реАрдПрдо рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рдЬрд┐рдирдХреА рдореЗрдореЛрд░реА рдХреА рдЬрд╝рд░реВрд░рддреЗрдВ рд╕рдордп рдХреЗ рд╕рд╛рде рдмрджрд▓рддреА рд░рд╣рддреА рд╣реИрдВ. relinquish рд╣рд╛рдЗрдкрд░рдХреЙрд▓ рдХреА рдорджрдж рд╕реЗ, рдореЗрд╣рдорд╛рди рдХреЗ рдкрд╛рд╕ рдкреЗрдЬреЛрдВ рдХрд╛ рдорд╛рд▓рд┐рдХрд╛рдирд╛ рд╣рдХ рд╡рд╛рдкрд╕ рд╣реЛрд╕реНрдЯ рдХреЛ рдЯреНрд░рд╛рдВрд╕рдлрд╝рд░ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрддрд╛ рд╣реИ. рдЗрд╕рдХреЗ рд▓рд┐рдП, рдореЗрд╣рдорд╛рди рдХреЛ рдореАрдЯрд┐рдВрдЧ рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реЛрддреА.
  • рдореЗрдореЛрд░реА рдРрдХреНрд╕реЗрд╕ рдЯреНрд░реИрдкрд┐рдВрдЧ рдХреЛ рд╣реЛрд╕реНрдЯ рдХрд░реЗрдВ. рдЖрдо рддреМрд░ рдкрд░, рдЕрдЧрд░ KVM рдЧреЗрд╕реНрдЯ рдХрд┐рд╕реА рдРрд╕реЗ рдкрддреЗ рдХреЛ рдРрдХреНрд╕реЗрд╕ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдорд╛рдиреНрдп рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ vCPU рдереНрд░реЗрдб рд╣реЛрд╕реНрдЯ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рдЬрд╛рддрд╛ рд╣реИ. рд╕рд╛рде рд╣реА, рдРрдХреНрд╕реЗрд╕ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдЖрдо рддреМрд░ рдкрд░ MMIO рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рдЗрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдкреЗрд╕ рдореЗрдВ VMM рд╕реЗ рдЗрдореНрдпреВрд▓реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рдЗрд╕ рдкреНрд░реЛрд╕реЗрд╕ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, pKVM рдХреЛ рдЧрдбрд╝рдмрдбрд╝реА рд╡рд╛рд▓реЗ рдирд┐рд░реНрджреЗрд╢ рдХреА рдЬрд╛рдирдХрд╛рд░реА рджреЗрдиреА рд╣реЛрддреА рд╣реИ. рдЬреИрд╕реЗ, рдЙрд╕рдХрд╛ рдкрддрд╛, рд░рдЬрд┐рд╕реНрдЯрд░ рдкреИрд░рд╛рдореАрдЯрд░, рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рддреМрд░ рдкрд░ рдЙрдирдХреЗ рдХреЙрдиреНрдЯреЗрдВрдЯ рдХреЛ рд╡рд╛рдкрд╕ рд╣реЛрд╕реНрдЯ рдкрд░ рднреЗрдЬрдирд╛ рд╣реЛрддрд╛ рд╣реИ. рдЕрдЧрд░ рдЯреНрд░реИрдк рдХрд╛ рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдЗрд╕рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдЧреЗрд╕реНрдЯ рд╕реЗ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛ рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдЬрд╝рд╛рд╣рд┐рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ. pKVM рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ. рдЗрд╕рдХреЗ рд▓рд┐рдП, рд╡рд╣ рдЗрди рдЧрдбрд╝рдмрдбрд╝рд┐рдпреЛрдВ рдХреЛ рдЧрдВрднреАрд░ рдЧрдбрд╝рдмрдбрд╝рд┐рдпреЛрдВ рдХреЗ рддреМрд░ рдкрд░ рдорд╛рдирддрд╛ рд╣реИ. рд╣рд╛рд▓рд╛рдВрдХрд┐, рдРрд╕рд╛ рддрдм рддрдХ рд╣реЛрддрд╛ рд╣реИ, рдЬрдм рддрдХ рдЧреЗрд╕реНрдЯ рдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЧрдбрд╝рдмрдбрд╝реА рд╡рд╛рд▓реА рдЖрдИрдкреАрдП рд░реЗрдВрдЬ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд╛рдЗрдкрд░рдХреЙрд▓ рдЬрд╛рд░реА рди рдХрд┐рдпрд╛ рд╣реЛ. рдЗрд╕ рд░реЗрдВрдЬ рдХреЗ рд▓рд┐рдП, рд╣реЛрд╕реНрдЯ рдХреЛ рд╡рд╛рдкрд╕ рдЯреНрд░реИрдк рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛рддреА рд╣реИ. рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЛ рдПрдордПрдордЖрдИрдУ рдЧрд╛рд░реНрдб рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ.

рд╡рд░реНрдЪреБрдЕрд▓ I/O рдбрд┐рд╡рд╛рдЗрд╕ (virtio)

Virtio, рдкреИрд░рд╛рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬрд╝реНрдб рдбрд┐рд╡рд╛рдЗрд╕реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп, рдкреЛрд░реНрдЯреЗрдмрд▓, рдФрд░ рдореИрдЪреНрдпреЛрд░ рд╕реНрдЯреИрдВрдбрд░реНрдб рд╣реИ. рд╕реБрд░рдХреНрд╖рд┐рдд рдореЗрд╣рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдП рдЧрдП рдЬрд╝реНрдпрд╛рджрд╛рддрд░ рдбрд┐рд╡рд╛рдЗрд╕реЛрдВ рдореЗрдВ virtio рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. Virtio, vsock рдХреЛ рднреА рд╕рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ. рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓, рд╕реБрд░рдХреНрд╖рд┐рдд рдЧреЗрд╕реНрдЯ рдФрд░ Android рдХреЗ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЗ рдмреАрдЪ рдХрдореНрдпреВрдирд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ.

рдЖрдо рддреМрд░ рдкрд░, Virtio рдбрд┐рд╡рд╛рдЗрд╕реЛрдВ рдХреЛ рд╣реЛрд╕реНрдЯ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдкреЗрд╕ рдореЗрдВ VMM рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ. рдпрд╣ Virtio рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ MMIO рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рдореЗрд╣рдорд╛рди рдХреЗ рдЯреНрд░реИрдкреНрдб рдореЗрдореЛрд░реА рдРрдХреНрд╕реЗрд╕ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдиреБрдорд╛рдирд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ. MMIO рдРрдХреНрд╕реЗрд╕ рдХрд░рдирд╛ рдорд╣рдВрдЧрд╛ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рд╣рд░ рдмрд╛рд░ рдРрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, VMM рдХреЛ рд░рд╛рдЙрдВрдб-рдЯреНрд░рд┐рдк рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реЛрддреА рд╣реИ. рдЗрд╕рд▓рд┐рдП, рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рдореЗрд╣рдорд╛рди рдХреЗ рдмреАрдЪ рдЬрд╝реНрдпрд╛рджрд╛рддрд░ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд╝рд░, рдореЗрдореЛрд░реА рдореЗрдВ рдореМрдЬреВрдж virtqueues рдХреЗ рд╕реЗрдЯ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдХреЗ рд╣реЛрддрд╛ рд╣реИ. virtio рдХреА рдореБрдЦреНрдп рдорд╛рдиреНрдпрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣реЛрд╕реНрдЯ, рдореЗрд╣рдорд╛рди рдХреА рдореЗрдореЛрд░реА рдХреЛ рдЕрдкрдиреА рдорд░реНрдЬрд╝реА рд╕реЗ рдРрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ. рдпрд╣ рдЕрдиреБрдорд╛рди, virtqueue рдХреЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдореЗрдВ рджрд┐рдЦрддрд╛ рд╣реИ. рдЗрд╕рдореЗрдВ рдореЗрд╣рдорд╛рди рдХреЗ рдмрдлрд╝рд░ рдХреЗ рдкреЙрдЗрдВрдЯрд░ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ. рдбрд┐рд╡рд╛рдЗрд╕ рдЗрдореНрдпреВрд▓реЗрд╢рди рдХреЛ рд╕реАрдзреЗ рддреМрд░ рдкрд░ рдЗрди рдмрдлрд╝рд░ рдХреЛ рдРрдХреНрд╕реЗрд╕ рдХрд░рдирд╛ рд╣реЛрддрд╛ рд╣реИ.

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкрд╣рд▓реЗ рдмрддрд╛рдП рдЧрдП рдореЗрдореЛрд░реА рд╢реЗрдпрд░рд┐рдВрдЧ рд╣рд╛рдЗрдкрд░рдХреЙрд▓ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓, рдореЗрд╣рдорд╛рди рд╕реЗ рд╣реЛрд╕реНрдЯ рддрдХ virtio рдбреЗрдЯрд╛ рдмрдлрд╝рд░ рд╢реЗрдпрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╢реЗрдпрд░рд┐рдВрдЧ рдкреЗрдЬ рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ. рдЕрдЧрд░ рдмрдлрд╝рд░ рдХрд╛ рд╕рд╛рдЗрдЬрд╝, рдкреЗрдЬ рдХреЗ рд╕рд╛рдЗрдЬрд╝ рд╕реЗ рдХрдо рд╣реИ, рддреЛ рдЗрд╕рд╕реЗ рдЬрд╝рд░реВрд░рдд рд╕реЗ рдЬрд╝реНрдпрд╛рджрд╛ рдбреЗрдЯрд╛ рдХрд╛ рдкрддрд╛ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ. рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЧреЗрд╕реНрдЯ рдХреЛ рд╢реЗрдпрд░ рдХреА рдЧрдИ рдореЗрдореЛрд░реА рдХреА рддрдп рдХреА рдЧрдИ рд╡рд┐рдВрдбреЛ рд╕реЗ, рджреЛрдиреЛрдВ рд╡рд░реНрдЯрдХреНрд╡реА рдФрд░ рдЙрдирдХреЗ рдбреЗрдЯрд╛ рдмрдлрд╝рд░ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рд╕рд╛рде рд╣реА, рдЬрд╝рд░реВрд░рдд рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдбреЗрдЯрд╛ рдХреЛ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдХреЙрдкреА (рдмрд╛рдЙрдВрд╕) рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ.

рдЖрднрд╛рд╕реА рдЙрдкрдХрд░рдг

рдЪреМрдереА рдЗрдореЗрдЬ. Virtio рдбрд┐рд╡рд╛рдЗрд╕

TrustZone рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрд╢рди

рдореЗрд╣рдорд╛рди рд╕реАрдзреЗ рддреМрд░ рдкрд░ TrustZone рд╕реЗ рдЗрдВрдЯрд░реИрдХреНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ. рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣реЛрд╕реНрдЯ рдХреЛ рдЕрдм рднреА рд╕реБрд░рдХреНрд╖рд┐рдд рджреБрдирд┐рдпрд╛ рдореЗрдВ SMC рдХреЙрд▓ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП. рдпреЗ рдХреЙрд▓, рдореЗрдореЛрд░реА рдмрдлрд╝рд░ рдХреЗ рд▓рд┐рдП рдлрд╝рд┐рдЬрд╝рд┐рдХрд▓ рдкрддреЗ рддрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ. рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣реЛрд╕реНрдЯ рдХреЗ рдкрд╛рд╕ рдЗрди рдкрддреЛрдВ рдХрд╛ рдРрдХреНрд╕реЗрд╕ рдирд╣реАрдВ рд╣реЛрддрд╛. рдЖрдо рддреМрд░ рдкрд░, рд╕реБрд░рдХреНрд╖рд┐рдд рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЛ рдмрдлрд╝рд░ рдХреА рдРрдХреНрд╕реЗрд╕рд┐рдмрд┐рд▓рд┐рдЯреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реЛрддрд╛. рдЗрд╕рд▓рд┐рдП, рдХреЛрдИ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд╣реЛрд╕реНрдЯ рдЗрд╕ рдмрдлрд╝рд░ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓, рдХрдВрдлреНрдпреВрдЬрд╝реНрдб рдбреЗрдкреНрдпреБрдЯреА рдЕрдЯреИрдХ (рдбреАрдПрдордП рдЕрдЯреИрдХ рдХреЗ рдЬреИрд╕рд╛) рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддрд╛ рд╣реИ. рдРрд╕реЗ рд╣рдорд▓реЛрдВ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, pKVM, EL2 рдХреЛ рд╣реЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рд╕рднреА SMC рдХреЙрд▓ рдХреЛ рдЯреНрд░реИрдк рдХрд░рддрд╛ рд╣реИ. рд╕рд╛рде рд╣реА, EL3 рдкрд░ рд╣реЛрд╕реНрдЯ рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рдореЙрдирд┐рдЯрд░ рдХреЗ рдмреАрдЪ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рддреМрд░ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ.

рд╣реЛрд╕реНрдЯ рд╕реЗ рдорд┐рд▓реЗ рдкреАрдПрд╕рд╕реАрдЖрдИ рдХреЙрд▓, EL3 рдлрд╝рд░реНрдорд╡реЗрдпрд░ рдХреЛ рдХрдо рд╕реЗ рдХрдо рдмрджрд▓рд╛рд╡реЛрдВ рдХреЗ рд╕рд╛рде рдлрд╝реЙрд░рд╡рд░реНрдб рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ. рдЦрд╛рд╕ рддреМрд░ рдкрд░, рд╕реАрдкреАрдпреВ рдХреЗ рдСрдирд▓рд╛рдЗрди рд╣реЛрдиреЗ рдпрд╛ рдирд┐рд▓рдВрдмрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рдПрдВрдЯреНрд░реА рдкреЙрдЗрдВрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рд╕реНрдЯреЗрдЬ 2 рдХреА рдкреЗрдЬ рдЯреЗрдмрд▓ рдХреЛ EL2 рдкрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ. рдЗрд╕рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ EL1 рдкрд░ рд╣реЛрд╕реНрдЯ рдХреЛ рд╡рд╛рдкрд╕ рднреЗрдЬрд╛ рдЬрд╛ рд╕рдХреЗ. рдмреВрдЯ рдХреЗ рджреМрд░рд╛рди, pKVM рдЗрд╕ рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ.

рдпрд╣ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░, SoC рдХреЗ PSCI рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ. рдЗрд╕рдХреЗ рд▓рд┐рдП, EL3 рдлрд╝рд░реНрдорд╡реЗрдпрд░ рдХреЗ рддреМрд░ рдкрд░ TF-A рдХреЗ рдЕрдк-рдЯреВ-рдбреЗрдЯ рд╡рд░реНрд╢рди рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ.

рдлрд╝рд░реНрдорд╡реЗрдпрд░ рдлрд╝реНрд░реЗрдорд╡рд░реНрдХ рдлрд╝реЙрд░ рдЖрд░реНрдо (рдПрдлрд╝рдПрдлрд╝-рдП) рд╕реНрдЯреИрдВрдбрд░реНрдб, рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рджреБрдирд┐рдпрд╛ рдХреЗ рдмреАрдЪ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рд╕реНрдЯреИрдВрдбрд░реНрдб рдмрдирд╛рддрд╛ рд╣реИ. рдЦрд╛рд╕ рддреМрд░ рдкрд░, рд╕реБрд░рдХреНрд╖рд┐рдд рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ рдХреА рдореМрдЬреВрджрдЧреА рдореЗрдВ. рд╕реНрдкреЗрд╕рд┐рдлрд╝рд┐рдХреЗрд╢рди рдХрд╛ рдореБрдЦреНрдп рд╣рд┐рд╕реНрд╕рд╛, рд╕реБрд░рдХреНрд╖рд┐рдд рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдореЗрдореЛрд░реА рд╢реЗрдпрд░ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИ. рдЗрд╕рдХреЗ рд▓рд┐рдП, рд╕рд╛рдорд╛рдиреНрдп рдореИрд╕реЗрдЬ рдлрд╝реЙрд░реНрдореИрдЯ рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рдкреЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рддрдп рдХреА рдЧрдИ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рдореЙрдбрд▓, рджреЛрдиреЛрдВ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. pKVM, FF-A рдореИрд╕реЗрдЬ рдХреЛ рдкреНрд░реЙрдХреНрд╕реА рдХрд░рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдпрд╣ рдкрдХреНрдХрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рд╣реЛрд╕реНрдЯ, рд╕реБрд░рдХреНрд╖рд┐рдд-рд╕рд╛рдЗрдб рдХреЗ рд╕рд╛рде рдРрд╕реА рдореЗрдореЛрд░реА рд╢реЗрдпрд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рди рдХрд░ рд░рд╣рд╛ рд╣реЛ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЙрд╕рдХреЗ рдкрд╛рд╕ рдЬрд╝рд░реВрд░реА рдЕрдиреБрдорддрд┐рдпрд╛рдВ рди рд╣реЛрдВ.

рдпрд╣ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░, рдореЗрдореЛрд░реА рдРрдХреНрд╕реЗрд╕ рдореЙрдбрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ Secure World рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ. рдЗрд╕рд╕реЗ рдпрд╣ рдкрдХреНрдХрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ Secure World рдореЗрдВ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рднрд░реЛрд╕реЗрдордВрдж рдРрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдЕрдиреНрдп рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░, рдореЗрдореЛрд░реА рдХреЛ рд╕рд┐рд░реНрдлрд╝ рддрдм рдРрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдм рд╡рд╣ Secure World рдХреЗ рдкрд╛рд╕ рд╣реЛ рдпрд╛ рдЙрд╕реЗ FF-A рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдХреЗ, Secure World рдХреЗ рд╕рд╛рде рд╢реЗрдпрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ. S-EL2 рд╡рд╛рд▓реЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░, рдореЗрдореЛрд░реА рдРрдХреНрд╕реЗрд╕ рдореЙрдбрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рдо, Secure Partition Manager Core (SPMC) рдХреЛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП. рдЬреИрд╕реЗ, Hafnium. рдпрд╣ рд╕реБрд░рдХреНрд╖рд┐рдд рджреБрдирд┐рдпрд╛ рдХреЗ рд▓рд┐рдП, рджреВрд╕рд░реЗ рдЪрд░рдг рдХреА рдкреЗрдЬ рдЯреЗрдмрд▓ рдХреЛ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИ. S-EL2 рдХреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рд┐рд╕реНрдЯрдо рдкрд░, рдЯреАрдИрдИ рдЕрдкрдиреА рдкрд╣рд▓реА рд╕реНрдЯреЗрдЬ рдХреА рдкреЗрдЬ рдЯреЗрдмрд▓ рдХреЗ рдЬрд╝рд░рд┐рдП, рдореЗрдореЛрд░реА рдРрдХреНрд╕реЗрд╕ рдореЙрдбрд▓ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ.

рдЕрдЧрд░ EL2 рдХреЛ рдХрд┐рдпрд╛ рдЧрдпрд╛ SMC рдХреЙрд▓, PSCI рдХреЙрд▓ рдпрд╛ FF-A рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдореИрд╕реЗрдЬ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣реИрдВрдбрд▓ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП SMC рдХреЛ EL3 рдкрд░ рдлрд╝реЙрд░рд╡рд░реНрдб рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ (рдЬрд╝рд░реВрд░реА рддреМрд░ рдкрд░ рднрд░реЛрд╕реЗрдордВрдж) рд╕реБрд░рдХреНрд╖рд┐рдд рдлрд╝рд░реНрдорд╡реЗрдпрд░, рдмрд┐рдирд╛ рд╣реИрдВрдбрд▓ рдХрд┐рдП рдЧрдП рдПрд╕рдПрдорд╕реА рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдореИрдиреЗрдЬ рдХрд░ рд╕рдХрддрд╛ рд╣реИ. рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдлрд╝рд░реНрдорд╡реЗрдпрд░ рдХреЛ pVM рдЖрдЗрд╕реЛрд▓реЗрд╢рди рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд░реВрд░реА рд╕рд╛рд╡рдзрд╛рдирд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реЛрддрд╛ рд╣реИ.

рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдореЙрдирд┐рдЯрд░

crosvm рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдореЙрдирд┐рдЯрд░ (рд╡реАрдПрдордПрдо) рд╣реИ. рдпрд╣ Linux рдХреЗ KVM рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдЬрд╝рд░рд┐рдП рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЗрдВ рдЪрд▓рд╛рддрд╛ рд╣реИ. crosvm рдХреЛ рдЦрд╛рд╕ рдмрдирд╛рдиреЗ рд╡рд╛рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕реБрд░рдХреНрд╖рд╛ рдкрд░ рдлрд╝реЛрдХрд╕ рдХрд░рддрд╛ рд╣реИ. рдЗрд╕рдХреЗ рд▓рд┐рдП, рдпрд╣ Rust рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддрд╛ рд╣реИ. рд╕рд╛рде рд╣реА, рд╣реЛрд╕реНрдЯ рдХрд░реНрдирд▓ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдЪреБрдЕрд▓ рдбрд┐рд╡рд╛рдЗрд╕реЛрдВ рдХреЗ рдЖрд╕-рдкрд╛рд╕ рдПрдХ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдмрдирд╛рддрд╛ рд╣реИ. crosvm рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╝реНрдпрд╛рджрд╛ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХрд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ.

рдлрд╝рд╛рдЗрд▓ рдХреА рдЬрд╛рдирдХрд╛рд░реА рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдФрд░ ioctl

KVM, /dev/kvm рдХреИрд░реЗрдХреНрдЯрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ userspace рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рддрд╛ рд╣реИ. рдЗрд╕рдореЗрдВ ioctl рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ KVM API рдмрдирд╛рддреЗ рд╣реИрдВ. ioctls рдХреЛ рдЗрди рдХреИрдЯрдЧрд░реА рдореЗрдВ рдмрд╛рдВрдЯрд╛ рдЧрдпрд╛ рд╣реИ:

  • рд╕рд┐рд╕реНрдЯрдо ioctls рдХреНрд╡реЗрд░реА рдХрд░рддрд╛ рд╣реИ рдФрд░ рдРрд╕реЗ рдЧреНрд▓реЛрдмрд▓ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкреВрд░реЗ KVM рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЕрд╕рд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ. рд╕рд╛рде рд╣реА, pVM рдмрдирд╛рддрд╛ рд╣реИ.
  • VM ioctl, рдРрд╕реЗ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрд╡реЗрд░реА рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╡рд░реНрдЪреБрдЕрд▓ рд╕реАрдкреАрдпреВ (рд╡реАрд╕реАрдкреАрдпреВ) рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдмрдирд╛рддреЗ рд╣реИрдВ. рд╕рд╛рде рд╣реА, рдпреЗ рдкреВрд░реЗ pVM рдкрд░ рдЕрд╕рд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ. рдЬреИрд╕реЗ, рдореЗрдореЛрд░реА рд▓реЗрдЖрдЙрдЯ рдФрд░ рд╡рд░реНрдЪреБрдЕрд▓ рд╕реАрдкреАрдпреВ (рд╡реАрд╕реАрдкреАрдпреВ) рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛.
  • vCPU ioctls, рдРрд╕реЗ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрд╡реЗрд░реА рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐рд╕реА рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рд╕реАрдкреАрдпреВ рдХреЗ рдСрдкрд░реЗрд╢рди рдХреЛ рдХрдВрдЯреНрд░реЛрд▓ рдХрд░рддреЗ рд╣реИрдВ.
  • рдбрд┐рд╡рд╛рдЗрд╕ ioctls, рдРрд╕реЗ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрд╡реЗрд░реА рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐рд╕реА рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдСрдкрд░реЗрд╢рди рдХреЛ рдХрдВрдЯреНрд░реЛрд▓ рдХрд░рддреЗ рд╣реИрдВ.

рд╣рд░ crosvm рдкреНрд░реЛрд╕реЗрд╕, рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ рд╕рд┐рд░реНрдлрд╝ рдПрдХ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рдЪрд▓рд╛рддреА рд╣реИ. рдЗрд╕ рдкреНрд░реЛрд╕реЗрд╕ рдореЗрдВ, KVM_CREATE_VM рд╕рд┐рд╕реНрдЯрдо ioctl рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдХреЗ, рдПрдХ рд╡реАрдПрдо рдлрд╝рд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ pVM ioctl рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рдХрд┐рд╕реА рд╡реАрдПрдо рдХреЗ FD рдкрд░ KVM_CREATE_VCPU рдпрд╛ KVM_CREATE_DEVICE ioctl, рдПрдХ vCPU/рдбрд┐рд╡рд╛рдЗрд╕ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдирдП рд╕рдВрд╕рд╛рдзрди рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдлрд╝рд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рджрд┐рдЦрд╛рддрд╛ рд╣реИ. рдХрд┐рд╕реА vCPU рдпрд╛ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ FD рдкрд░ ioctl рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓, рдЙрд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдХрдВрдЯреНрд░реЛрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╡реАрдПрдо рдХреЗ FD рдкрд░ ioctl рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛. рд╡реАрд╕реАрдкреАрдпреВ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдореЗрдВ рдЧреЗрд╕реНрдЯ рдХреЛрдб рдЪрд▓рд╛рдиреЗ рдХрд╛ рдЕрд╣рдо рдЯрд╛рд╕реНрдХ рд╢рд╛рдорд┐рд▓ рд╣реИ.

рдЖрдВрддрд░рд┐рдХ рддреМрд░ рдкрд░, crosvm, рд╡реАрдПрдо рдХреЗ рдлрд╝рд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЛ рдХрд░реНрдирд▓ рдХреЗ рд╕рд╛рде рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рддрд╛ рд╣реИ. рдЗрд╕рдХреЗ рд▓рд┐рдП, рд╡рд╣ рдПрдЬ-рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдП рдЧрдП epoll рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддрд╛ рд╣реИ. рдЗрд╕рдХреЗ рдмрд╛рдж, рдХрд░реНрдирд▓ crosvm рдХреЛ рд╕реВрдЪрдирд╛ рджреЗрддрд╛ рд╣реИ. рдРрд╕рд╛ рддрдм рд╣реЛрддрд╛ рд╣реИ, рдЬрдм рдХрд┐рд╕реА рднреА рдлрд╝рд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдореЗрдВ рдХреЛрдИ рдирдпрд╛ рдЗрд╡реЗрдВрдЯ рд▓рдВрдмрд┐рдд рд╣реЛрддрд╛ рд╣реИ.

pKVM рдореЗрдВ рдПрдХ рдирдИ рд╕реБрд╡рд┐рдзрд╛, KVM_CAP_ARM_PROTECTED_VM рдЬреЛрдбрд╝реА рдЧрдИ рд╣реИ. рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓, pVM рдПрдирд╡рд╛рдпрд░рдореЗрдВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкрд╛рдиреЗ рдФрд░ VM рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рдореЛрдб рд╕реЗрдЯ рдЕрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рдЕрдЧрд░ --protected-vm рдлрд╝реНрд▓реИрдЧ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ crosvm рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ pVM рдмрдирд╛рдиреЗ рдХреЗ рджреМрд░рд╛рди рдХрд░рддрд╛ рд╣реИ. рдРрд╕рд╛ pVM рдлрд╝рд░реНрдорд╡реЗрдпрд░ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдореЗрдореЛрд░реА рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдФрд░ рдЙрд╕реЗ рд░рд┐рдЬрд╝рд░реНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рдЗрд╕рдХреЗ рдмрд╛рдж, рд╕реБрд░рдХреНрд╖рд┐рдд рдореЛрдб рдЪрд╛рд▓реВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ.

рдореЗрдореЛрд░реА рдХрд╛ рдмрдВрдЯрд╡рд╛рд░рд╛

рд╡реАрдПрдордПрдо рдХреА рдореБрдЦреНрдп рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░рд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ, рд╡реАрдПрдо рдХреА рдореЗрдореЛрд░реА рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рдирд╛ рдФрд░ рдЙрд╕рдХреЗ рдореЗрдореЛрд░реА рд▓реЗрдЖрдЙрдЯ рдХреЛ рдореИрдиреЗрдЬ рдХрд░рдирд╛ рд╣реИ. crosvm, рдореЗрдореЛрд░реА рдХрд╛ рдПрдХ рддрдп рд▓реЗрдЖрдЙрдЯ рдЬрдирд░реЗрдЯ рдХрд░рддрд╛ рд╣реИ. рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣рд╛рдВ рджреА рдЧрдИ рдЯреЗрдмрд▓ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ.

рд╕рд╛рдорд╛рдиреНрдп рдореЛрдб рдореЗрдВ рдПрдлрд╝рдбреАрдЯреА PHYS_MEMORY_END - 0x200000
рдЦрд╛рд▓реА рдЬрдЧрд╣ ...
рд░реИрдордбрд┐рд╕реНрдХ ALIGN_UP(KERNEL_END, 0x1000000)
рдХрд░реНрдиреЗрд▓ 0x80080000
рдмреВрдЯрд▓реЛрдбрд░ 0x80200000
BIOS рдореЛрдб рдореЗрдВ FDT 0x80000000
рдлрд╝рд┐рдЬрд╝рд┐рдХрд▓ рдореЗрдореЛрд░реА рдмреЗрд╕ 0x80000000
pVM рдлрд╝рд░реНрдорд╡реЗрдпрд░ 0x7FE00000
рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рд╕реНрдЯреЛрд░реЗрдЬ 0x10000 - 0x40000000

рдлрд╝рд┐рдЬрд┐рдХрд▓ рдореЗрдореЛрд░реА рдХреЛ mmap рдХреЗ рд╕рд╛рде рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рд╕рд╛рде рд╣реА, рдореЗрдореЛрд░реА рдХреЛ рд╡реАрдПрдо рдХреЛ рдбреЛрдиреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рд╡рд╣ KVM_SET_USER_MEMORY_REGION ioctl рдХреЗ рд╕рд╛рде memslots рдХрд╣реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдореЗрдореЛрд░реА рд░реАрдЬрди рдХреЛ рднрд░ рд╕рдХреЗ. рдЗрд╕рд▓рд┐рдП, рд╕рднреА рдореЗрд╣рдорд╛рди pVM рдореЗрдореЛрд░реА рдХреЛ рдЙрд╕ crosvm рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЗ рд▓рд┐рдП рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдореИрдиреЗрдЬ рдХрд░рддрд╛ рд╣реИ. рдЕрдЧрд░ рд╣реЛрд╕реНрдЯ рдХреЗ рдкрд╛рд╕ рдЦрд╛рд▓реА рдореЗрдореЛрд░реА рдХрдо рд╣реЛрдиреЗ рд▓рдЧрддреА рд╣реИ, рддреЛ рдЗрд╕ рдкреНрд░реЛрд╕реЗрд╕ рдХреЛ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рдЗрд╕рд╕реЗ рд╡реАрдПрдо рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ. рдХрд┐рд╕реА рд╡реАрдПрдо рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдкрд░, рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ рдореЗрдореЛрд░реА рдХреЛ рдЕрдкрдиреЗ-рдЖрдк рдорд┐рдЯрд╛ рджреЗрддрд╛ рд╣реИ. рд╕рд╛рде рд╣реА, рдЗрд╕реЗ рд╣реЛрд╕реНрдЯ рдХрд░реНрдирд▓ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрддрд╛ рд╣реИ.

рд╕рд╛рдорд╛рдиреНрдп KVM рдореЗрдВ, VMM рдХреЗ рдкрд╛рд╕ рдореЗрд╣рдорд╛рди рдХреЗ рддреМрд░ рдкрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╕рднреА рдбрд┐рд╡рд╛рдЗрд╕реЛрдВ рдХреА рдореЗрдореЛрд░реА рдХрд╛ рдРрдХреНрд╕реЗрд╕ рд╣реЛрддрд╛ рд╣реИ. pKVM рдХреА рдорджрдж рд╕реЗ, рдореЗрд╣рдорд╛рди рдУрдПрд╕ рдХреЛ рдореЗрдореЛрд░реА рджреЗрдиреЗ рдкрд░, рдореЗрд╣рдорд╛рди рдУрдПрд╕ рдХреА рдореЗрдореЛрд░реА рдХреЛ рд╣реЛрд╕реНрдЯ рдУрдПрд╕ рдХреЗ рдлрд╝рд┐рдЬрд╝рд┐рдХрд▓ рдкрддреЗ рдХреЗ рд╕реНрдкреЗрд╕ рд╕реЗ рдЕрдирдореИрдк рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореЗрд╣рдорд╛рди рдХреА рдУрд░ рд╕реЗ рд╕рд╛рдлрд╝ рддреМрд░ рдкрд░ рд╢реЗрдпрд░ рдХреА рдЧрдИ рдореЗрдореЛрд░реА рдЗрд╕рдХрд╛ рдЕрдкрд╡рд╛рдж рд╣реИ. рдЬреИрд╕реЗ, virtio рдбрд┐рд╡рд╛рдЗрд╕реЛрдВ рдХреЗ рд▓рд┐рдП.

рдореЗрд╣рдорд╛рди рдХреЗ рдкрддреЗ рдХреА рдЬрдЧрд╣ рдореЗрдВ рдореМрдЬреВрдж MMIO рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдореИрдк рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛. рдореЗрд╣рдорд╛рди рдХреЗ рдкрд╛рд╕ рдЗрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдРрдХреНрд╕реЗрд╕ рдирд╣реАрдВ рд╣реИ. рдЗрд╕рд▓рд┐рдП, рд╡реАрдПрдо рдХреЗ FD рдкрд░ I/O рдЗрд╡реЗрдВрдЯ рд╣реЛрддрд╛ рд╣реИ. рдЗрд╕ рдореИрдХреЗрдирд┐рдЬрд╝реНрдо рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╡рд░реНрдЪреБрдЕрд▓ рдбрд┐рд╡рд╛рдЗрд╕реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рд╕реБрд░рдХреНрд╖рд┐рдд рдореЛрдб рдореЗрдВ, рдореЗрд╣рдорд╛рди рдХреЛ рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЙрд╕рдХреЗ рдкрддреЗ рдХреА рдЬрдЧрд╣ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ MMIO рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ. рдЗрд╕рдХреЗ рд▓рд┐рдП, рдЙрд╕реЗ рд╣рд╛рдЗрдкрд░рдХреЙрд▓ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рддрд╛рдХрд┐ рдЧрд▓рддреА рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рд▓реАрдХ рд╣реЛрдиреЗ рдХрд╛ рдЬреЛрдЦрд┐рдо рдХрдо рд╣реЛ рд╕рдХреЗ.

рд╕рдордп-рдирд┐рд░реНрдзрд╛рд░рдг

рд╣рд░ рд╡рд░реНрдЪреБрдЕрд▓ рд╕реАрдкреАрдпреВ рдХреЛ POSIX рдереНрд░реЗрдб рд╕реЗ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рдЗрд╕реЗ рд╣реЛрд╕реНрдЯ Linux рд╢реЗрдбреНрдпреВрд▓рд░ рд╢реЗрдбреНрдпреВрд▓ рдХрд░рддрд╛ рд╣реИ. рдереНрд░реЗрдб, vCPU FD рдкрд░ KVM_RUN ioctl рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ. рдЗрд╕рд╕реЗ рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░, рдореЗрд╣рдорд╛рди рдХреЗ vCPU рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ рдкрд░ рд╕реНрд╡рд┐рдЪ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ. рд╣реЛрд╕реНрдЯ рд╢реЗрдбреНрдпреВрд▓рд░, рдореЗрд╣рдорд╛рди рдХреЗ рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ рдореЗрдВ рдмрд┐рддрд╛рдП рдЧрдП рд╕рдордп рдХреЛ, рдЙрд╕рд╕реЗ рдЬреБрдбрд╝реЗ vCPU рдереНрд░реЗрдб рдХреЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЧрдП рд╕рдордп рдХреЗ рддреМрд░ рдкрд░ рдорд╛рдирддрд╛ рд╣реИ. KVM_RUN рддрдм рджрд┐рдЦрддрд╛ рд╣реИ, рдЬрдм рдХреЛрдИ рдРрд╕рд╛ рдЗрд╡реЗрдВрдЯ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╡реАрдПрдордПрдо рдХреЛ рд╣реИрдВрдбрд▓ рдХрд░рдирд╛ рд╣реЛрддрд╛ рд╣реИ. рдЬреИрд╕реЗ, I/O, рдЗрдВрдЯрд░рдкреНрдЯ рдЦрддреНрдо рд╣реЛрдирд╛ рдпрд╛ vCPU рд░реБрдХ рдЬрд╛рдирд╛. рд╡реАрдПрдордПрдо, рдЗрд╡реЗрдВрдЯ рдХреЛ рд╣реИрдВрдбрд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ KVM_RUN рдХреЛ рдлрд┐рд░ рд╕реЗ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ.

KVM_RUN рдХреЗ рджреМрд░рд╛рди, рдереНрд░реЗрдб рдХреЛ рд╣реЛрд╕реНрдЯ рд╢реЗрдбреНрдпреВрд▓рд░ рд╕реЗ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рд╣рд╛рд▓рд╛рдВрдХрд┐, EL2 рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ рдХреЛрдб рдХреЗ рдПрдХреНрдЬрд╝реАрдХреНрдпреВрд╢рди рдХреЛ рд░реЛрдХрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛. рдЧреЗрд╕реНрдЯ pVM рдореЗрдВ, рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдХрдВрдЯреНрд░реЛрд▓ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ.

рд╕рднреА vCPU рдереНрд░реЗрдб рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдпреВрдЬрд╝рд░рд╕реНрдкреЗрд╕ рдЯрд╛рд╕реНрдХ рдХреА рддрд░рд╣ рд╢реЗрдбреНрдпреВрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рдЗрд╕рд▓рд┐рдП, рд╡реЗ рд╕рднреА рд╕реНрдЯреИрдВрдбрд░реНрдб QoS рдореЗрдХреЗрдирд┐рдЬрд╝реНрдо рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ. рдЦрд╛рд╕ рддреМрд░ рдкрд░, рд╣рд░ рд╡реАрд╕реАрдкреАрдпреВ рдереНрд░реЗрдб рдХреЛ рдлрд╝рд┐рдЬрд╝рд┐рдХрд▓ рд╕реАрдкреАрдпреВ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╕реАрдкреАрдпреВрд╕реЗрдЯ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдпреВрдЯрд┐рд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреНрд▓реИрдВрдкрд┐рдВрдЧ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдХреЗ рдмрдврд╝рд╛рдпрд╛ рдпрд╛ рд╕реАрдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рд╕рд╛рде рд╣реА, рдЗрд╕рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛/рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ рдиреАрддрд┐ рдХреЛ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ.

рд╡рд░реНрдЪреБрдЕрд▓ рдбрд┐рд╡рд╛рдЗрд╕

crosvm рдХрдИ рдбрд┐рд╡рд╛рдЗрд╕реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ. рдЗрдирдореЗрдВ рдпреЗ рдбрд┐рд╡рд╛рдЗрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  • рдХрдВрдкреЛрдЬрд╝рд┐рдЯ рдбрд┐рд╕реНрдХ рдЗрдореЗрдЬ рдХреЗ рд▓рд┐рдП virtio-blk, рд╕рд┐рд░реНрдлрд╝ рдкрдврд╝рдиреЗ рдпрд╛ рдкрдврд╝рдиреЗ-рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП
  • рд╣реЛрд╕реНрдЯ рдХреЗ рд╕рд╛рде рдХрдореНрдпреВрдирд┐рдХреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП vhost-vsock
  • virtio-pci рдХреЛ virtio рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рдХреЗ рддреМрд░ рдкрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдирд╛
  • pl030 рд░реАрдпрд▓ рдЯрд╛рдЗрдо рдХреНрд▓реЙрдХ (рдЖрд░рдЯреАрд╕реА)
  • рд╕реАрд░рд┐рдпрд▓ рдХрдореНрдпреВрдирд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП 16550a UART

pVM рдлрд╝рд░реНрдорд╡реЗрдпрд░

pVM рдлрд╝рд░реНрдорд╡реЗрдпрд░ (pvmfw), pVM рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓рд╛ рдкрд╣рд▓рд╛ рдХреЛрдб рд╣реЛрддрд╛ рд╣реИ. рдпрд╣ рдХрд┐рд╕реА рдлрд╝рд┐рдЬрд╝рд┐рдХрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдмреВрдЯ рд░реЛрдо рдХреА рддрд░рд╣ рд╣реЛрддрд╛ рд╣реИ. pvmfw рдХрд╛ рдореБрдЦреНрдп рдХрд╛рдо, рд╕реБрд░рдХреНрд╖рд┐рдд рдмреВрдЯ рдХреЛ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдХрд░рдирд╛ рдФрд░ pVM рдХреЗ рдпреВрдиреАрдХ рд╕реАрдХреНрд░реЗрдЯ рдХреЛ рдкрд╛рдирд╛ рд╣реИ. pvmfw рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рд╕реА рдЦрд╛рд╕ рдУрдПрд╕, рдЬреИрд╕реЗ рдХрд┐ Microdroid рдХреЗ рд╕рд╛рде рд╣реА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛. рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рд╕реА рднреА рдРрд╕реЗ рдУрдПрд╕ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ crosvm рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реЛ рдФрд░ рдЬрд┐рд╕реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ.

pvmfw рдмрд╛рдЗрдирд░реА рдХреЛ рдЙрд╕реА рдирд╛рдо рдХреЗ рдлрд╝реНрд▓реИрд╢ рдкрд╛рд░реНрдЯрд┐рд╢рди рдореЗрдВ рд╕реЗрд╡ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рдЗрд╕реЗ OTA рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдХреЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ.

рдбрд┐рд╡рд╛рдЗрд╕ рдмреВрдЯ

pKVM рдХреА рд╕реБрд╡рд┐рдзрд╛ рд╡рд╛рд▓реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдмреВрдЯ рдХрд░рдиреЗ рдХреА рдкреНрд░реЛрд╕реЗрд╕ рдореЗрдВ, рдпрд╣рд╛рдБ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреНрд░рдо рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ:

  1. Android Bootloader (ABL), pvmfw рдХреЛ рдЕрдкрдиреЗ рдкрд╛рд░реНрдЯрд┐рд╢рди рд╕реЗ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрдореЗрдЬ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ.
  2. ABL, Device Identifier Composition Engine (DICE) рдХреЗ рд╕реАрдХреНрд░реЗрдЯ (Compound Device Identifiers (CDI) рдФрд░ DICE рд╕рд░реНрдЯрд┐рдлрд╝рд┐рдХреЗрдЯ рдЪреЗрди) рдХреЛ Root of Trust рд╕реЗ рд╣рд╛рд╕рд┐рд▓ рдХрд░рддрд╛ рд╣реИ.
  3. ABL, pvmfw рдХреЗ рд▓рд┐рдП рдЬрд╝рд░реВрд░реА рд╕реАрдбреАрдЖрдИ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ pvmfw рдмрд╛рдЗрдирд░реА рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ.
  4. ABL, DT рдореЗрдВ linux,pkvm-guest-firmware-memory рдЖрд░рдХреНрд╖рд┐рдд рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдиреЛрдб рдЬреЛрдбрд╝рддрд╛ рд╣реИ. рдЗрд╕рдореЗрдВ pvmfw рдмрд╛рдЗрдирд░реА рдХреА рдЬрдЧрд╣ рдФрд░ рд╕рд╛рдЗрдЬрд╝ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рд╕рд╛рде рд╣реА, рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдореЗрдВ рдЙрд╕рд╕реЗ рдорд┐рд▓реЗ рд╕реАрдХреНрд░реЗрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдмрддрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ.
  5. ABL, Linux рдХреЛ рдХрдВрдЯреНрд░реЛрд▓ рд╕реМрдВрдкрддрд╛ рд╣реИ рдФрд░ Linux, pKVM рдХреЛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ.
  6. pKVM, pvmfw рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдХреЛ рд╣реЛрд╕реНрдЯ рдХреЗ рджреВрд╕рд░реЗ рдЪрд░рдг рдХреА рдкреЗрдЬ рдЯреЗрдмрд▓ рд╕реЗ рдЕрдирдореИрдк рдХрд░рддрд╛ рд╣реИ. рд╕рд╛рде рд╣реА, рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдЪрд╛рд▓реВ рд░рд╣рдиреЗ рддрдХ рдЗрд╕реЗ рд╣реЛрд╕реНрдЯ (рдФрд░ рдореЗрд╣рдорд╛рдиреЛрдВ) рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рдЦрддрд╛ рд╣реИ.

рдбрд┐рд╡рд╛рдЗрд╕ рдмреВрдЯ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, Microdroid рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдмреВрдЯ рд╕реАрдХреНрд╡реЗрдВрд╕ рд╕реЗрдХреНрд╢рди рдореЗрдВ рджрд┐рдП рдЧрдП рдЪрд░рдгреЛрдВ рдХреЗ рдореБрддрд╛рдмрд┐рдХ Microdroid рдмреВрдЯ рд╣реЛрддрд╛ рд╣реИ.

pVM рдмреВрдЯ

pVM рдмрдирд╛рддреЗ рд╕рдордп, crosvm (рдпрд╛ рдХреЛрдИ рдЕрдиреНрдп VMM) рдХреЛ рдПрдХ рдмрдбрд╝рд╛ memslot рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рддрд╛рдХрд┐ рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ pvmfw рдЗрдореЗрдЬ рдХреЛ рднрд░ рд╕рдХреЗ. рд╡реАрдПрдордПрдо рдХреЛ рдЙрди рд░рдЬрд┐рд╕реНрдЯрд░ рдХреА рд╕реВрдЪреА рдореЗрдВ рднреА рд╕реАрдорд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рдирдХреА рд╢реБрд░реБрдЖрддреА рд╡реИрд▓реНрдпреВ рд╕реЗрдЯ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ. рдкреНрд░рд╛рдЗрдорд░реА рд╡реАрд╕реАрдкреАрдпреВ рдХреЗ рд▓рд┐рдП x0-x14 рдФрд░ рд╕реЗрдХрдВрдбрд░реА рд╡реАрд╕реАрдкреАрдпреВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдирд╣реАрдВ. рдмрд╛рдХреА рд░рдЬрд┐рд╕реНрдЯрд░ рд░рд┐рдЬрд╝рд░реНрд╡ рдХрд┐рдП рдЧрдП рд╣реИрдВ рдФрд░ рдпреЗ рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░-pvmfw ABI рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВ.

pVM рдХреЗ рдЪрд▓рдиреЗ рдкрд░, рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рд╛рдЗрдорд░реА vCPU рдХрд╛ рдХрдВрдЯреНрд░реЛрд▓ pvmfw рдХреЛ рд╕реМрдВрдкрддрд╛ рд╣реИ. рдлрд╝рд░реНрдорд╡реЗрдпрд░ рдХреЛ рдЙрдореНрдореАрдж рд╣реЛрддреА рд╣реИ рдХрд┐ crosvm рдиреЗ AVB-рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╡рд╛рд▓рд╛ рдХрд░реНрдирд▓ рд▓реЛрдб рдХрд┐рдпрд╛ рд╣реИ. рдпрд╣ рдмреВрдЯрд▓реЛрдбрд░ рдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рдЗрдореЗрдЬ рд╣реЛ рд╕рдХрддреА рд╣реИ. рд╕рд╛рде рд╣реА, рдлрд╝рд░реНрдорд╡реЗрдпрд░ рдХреЛ рдЙрдореНрдореАрдж рд╣реЛрддреА рд╣реИ рдХрд┐ crosvm рдиреЗ рдмрд┐рдирд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╡рд╛рд▓рд╛ FDT, рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рд╣реИ. pvmfw, AVB рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ. рдЕрдЧрд░ рдкреБрд╖реНрдЯрд┐ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ pvmfw, рдорд┐рд▓реЗ рд╣реБрдП FDT рд╕реЗ рднрд░реЛрд╕реЗрдордВрдж рдбрд┐рд╡рд╛рдЗрд╕ рдЯреНрд░реА рдЬрдирд░реЗрдЯ рдХрд░рддрд╛ рд╣реИ. рдЗрд╕рдХреЗ рдмрд╛рдж, рд╡рд╣ рдореЗрдореЛрд░реА рд╕реЗ рдЕрдкрдиреЗ рд╕реАрдХреНрд░реЗрдЯ рдорд┐рдЯрд╛ рджреЗрддрд╛ рд╣реИ рдФрд░ рдкреЗрд▓реЛрдб рдХреЗ рдПрдВрдЯреНрд░реА рдкреЙрдЗрдВрдЯ рдкрд░ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ. рдЕрдЧрд░ рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рдХрд┐рд╕реА рдЪрд░рдг рдореЗрдВ рдЧрдбрд╝рдмрдбрд╝реА рд╣реЛрддреА рд╣реИ, рддреЛ рдлрд╝рд░реНрдорд╡реЗрдпрд░, PSCI SYSTEM_RESET рд╣рд╛рдЗрдкрд░рдХреЙрд▓ рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИ.

рдмреВрдЯрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди, pVM рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдПрдХ рдкрд╛рд░реНрдЯреАрд╢рди (virtio-blk рдбрд┐рд╡рд╛рдЗрд╕) рдореЗрдВ рд╕реЗрд╡ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рд╕рд╛рде рд╣реА, рдЗрд╕реЗ pvmfw рдХреЗ рд╕реАрдХреНрд░реЗрдЯ рд╕реЗ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ (рд╕реБрд░рдХреНрд╖рд┐рдд) рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рдЗрд╕рд╕реЗ рдпрд╣ рдкрдХреНрдХрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд░реАрдмреВрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕реАрдХреНрд░реЗрдЯ рдХреЛ рд╕рд╣реА рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ.