рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗ рдХрд┐ рд╣рдорд╛рд░реЗ рдХреЛрд░ рдореЗрдВ рдкреЗрдЬ рдореЗрдореЛрд░реА рд╕рдкреЛрд░реНрдЯ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВрдЧреЗ рддрд╛рдХрд┐ рднреМрддрд┐рдХ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдлреНрд░реЗрдо рдХрд░реНрдиреЗрд▓ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рдПрдВ, рдФрд░ рдЙрдирдХреЗ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВред рдлрд┐рд░ рд╣рдо рдПрдбреНрд░реЗрд╕ рдЯреНрд░рд╛рдВрд╕рд▓реЗрд╢рди рдлрдВрдХреНрд╢рди рдФрд░ рдирдпрд╛ рдореИрдкрд┐рдВрдЧ рдмрдирд╛рдиреЗ рдХреЗ рдлрдВрдХреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред
рдЧрд┐рдЯрд╣рдм рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рд▓реЗрдЦреЛрдВ рдХреА рдпрд╣ рд╢реНрд░реГрдВрдЦрд▓рд╛ред рдпрджрд┐ рдЖрдкрдХреЗ рдХреЛрдИ рдкреНрд░рд╢реНрди рдпрд╛ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рддреЛ рд╡рд╣рд╛рдВ рд╕рдВрдмрдВрдзрд┐рдд рдЯрд┐рдХрдЯ рдЦреЛрд▓реЗрдВред рд▓реЗрдЦ рдХреЗ рд╕рднреА рд╕реНрд░реЛрдд
рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ рд╣реИрдВ ред
рдкреЗрдЬрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЕрдиреНрдп рд▓реЗрдЦ?
рдпрджрд┐ рдЖрдк рдЗрд╕ рдЪрдХреНрд░ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдиреЗ рдЬрдирд╡рд░реА рдХреЗ рдЕрдВрдд рдореЗрдВ "рдкреГрд╖реНрда рдореЗрдореЛрд░реА: рдЙрдиреНрдирдд рд╕реНрддрд░" рд▓реЗрдЦ рджреЗрдЦрд╛ред рд▓реЗрдХрд┐рди рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдЖрд▓реЛрдЪрдирд╛ рдХреА рдЧрдИ ред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдлрд╝реНрд░реЗрдо рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд▓реЗрдЦ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛редрдпрд╣рд╛рдБ рдПрдХ рдирдпрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред рд▓реЗрдЦ рдЕрднреА рднреА рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдПрдВ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдПрдХ рд╕рд░рд▓ рдФрд░ рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХреЛ рдирд╣реАрдВ рд╣рдЯрд╛рдПрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдкреБрд░рд╛рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЗрд╕реЗ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдирдП рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВрдЧреЗ!рд╕рд╛рдордЧреНрд░реА
рдкрд░рд┐рдЪрдп
рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рд╕реЗ, рд╣рдордиреЗ рдкреЗрдЬрд┐рдВрдЧ рдореЗрдореЛрд░реА рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдФрд░
x86_64
рдкрд░ рдЪрд╛рд░-рд╕реНрддрд░реАрдп рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реАрдЦрд╛ред рд╣рдордиреЗ рдпрд╣ рднреА рдкрд╛рдпрд╛ рдХрд┐ рд▓реЛрдбрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рдорд╛рд░реЗ рдХрд░реНрдиреЗрд▓ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдкрджрд╛рдиреБрдХреНрд░рдо рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрд░реНрдиреЗрд▓ рд╡рд░реНрдЪреБрдЕрд▓ рдкрддреЛрдВ рдкрд░ рдЪрд▓рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рд╕реБрд░рдХреНрд╖рд╛ рдмрдврд╝ рдЬрд╛рддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдореГрддрд┐ рддрдХ рдЕрдирдзрд┐рдХреГрдд рдкрд╣реБрдВрдЪ рдХреЗ рдХрд╛рд░рдг рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рдХреЛ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдмрджрд▓рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдкреГрд╖реНрда рджреЛрд╖ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд▓реЗрдЦ рд╣рдорд╛рд░реЗ рдХрд░реНрдиреЗрд▓ рд╕реЗ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ, рдФрд░ рдХрд░реНрдиреЗрд▓ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрднрд╛рд╕реА рдкрддреЛрдВ рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдпрд╣рд╛рдВ рд╣рдо рд╡рд┐рд╖рдп рдХреЛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ рдФрд░ рдХрд░реНрдиреЗрд▓ рд╕реЗ рдкреЗрдЬ рдЯреЗрдмрд▓ рдХреЗ рдлреНрд░реЗрдо рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВред рд╣рдо рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдлрд┐рд░ рд╣рдорд╛рд░реЗ рдХреЛрд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╡рд┐рдХрд▓реНрдк рдЪреБрдиреЗрдВрдЧреЗред
рдмреВрдЯ рд▓реЛрдбрд░ рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдкрд╣рд▓реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВрдЧреЗред рдлрд┐рд░ рд╣рдо рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рднреМрддрд┐рдХ рдкрддреЛрдВ рдореЗрдВ рдЖрднрд╛рд╕реА рдкрддреЛрдВ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдкреВрд░реЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, рд╣рдо рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдкреЗрдЬ рдЯреЗрдмрд▓ рдореЗрдВ рдирдП рдореИрдкрд┐рдВрдЧ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ рдФрд░ рдирдП рдЯреЗрдмрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкреНрд░рдпреБрдХреНрдд рдореЗрдореЛрд░реА рдлреНрд░реЗрдо рдХреЛ рдХреИрд╕реЗ рдЦреЛрдЬреЗрдВред
рдирд┐рд░реНрднрд░рддрд╛ рдЕрджреНрдпрддрди
рдЗрд╕ рдЖрд▓реЗрдЦ рдореЗрдВ рдЖрдкрдХреЛ
bootloader
рд╕рдВрд╕реНрдХрд░рдг 0.4.0 рдпрд╛ рдЙрдЪреНрдЪрддрд░ рдФрд░
x86_64
рд╕рдВрд╕реНрдХрд░рдг 0.5.2 рдпрд╛ рдЙрд╕рд╕реЗ рдЕрдзрд┐рдХ рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдк
Cargo.toml
рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
[dependencies] bootloader = "0.4.0" x86_64 = "0.5.2"
рдЗрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП,
рдмреВрдЯрд▓реЛрдбрд░ рд▓реЙрдЧ рдФрд░
x86_64 рд▓реЙрдЧ рджреЗрдЦреЗрдВ ред
рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪ
рдХрд░реНрдиреЗрд▓ рд╕реЗ рдкреЗрдЬ рдЯреЗрдмрд▓ рдПрдХреНрд╕реЗрд╕ рдХрд░рдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рдпрд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХреЗ рдЪрд╛рд░ рд╕реНрддрд░реАрдп рддрд╛рд▓рд┐рдХрд╛ рдкрджрд╛рдиреБрдХреНрд░рдо рдкрд░ рдПрдХ рдФрд░ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:
рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЕрдЧрд▓реА рддрд╛рд▓рд┐рдХрд╛ рдХрд╛
рднреМрддрд┐рдХ рдкрддрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреА рд╣реИред рдпрд╣ рдЗрди рдкрддреЛрдВ рдХреЗ рдЕрдиреБрд╡рд╛рдж рд╕реЗ рдмрдЪрддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдВрддрд╣реАрди рдЫреЛрд░реЛрдВ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рд╕реАрдзреЗ рдХрд░реНрдиреЗрд▓ рд╕реЗ рднреМрддрд┐рдХ рдкрддреЛрдВ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдБрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд░реНрдЪреБрдЕрд▓ рдкрддреЛрдВ рдкрд░ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рд╣рдо рдПрдбреНрд░реЗрд╕
4 KiB
, рддреЛ рд╣рдо
рд╡рд░реНрдЪреБрдЕрд▓ рдПрдбреНрд░реЗрд╕
4 KiB
рддрдХ рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВ, рди рдХрд┐ рдЙрд╕
рднреМрддрд┐рдХ рдкрддреЗ рдкрд░, рдЬрд╣рд╛рдВ 4 рд╡реЗрдВ рд╕реНрддрд░ рдХреЗ рдкреЗрдЬреЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред рдпрджрд┐ рд╣рдо
4 KiB
рдХреЗ рднреМрддрд┐рдХ рдкрддреЗ рддрдХ рдкрд╣реБрдВрдЪрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдХреБрдЫ рдЖрднрд╛рд╕реА рдкрддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдлрд╝реНрд░реЗрдореЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрди рдлрд╝реНрд░реЗрдореЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╡рд░реНрдЪреБрдЕрд▓ рдкреЗрдЬреЛрдВ рдХреЛ рдореИрдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреА рддреБрд▓рдирд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЗ рд╣реИрдВред
рдкрд╣рдЪрд╛рди рдорд╛рдирдЪрд┐рддреНрд░рдг
рдПрдХ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди
рд╕рднреА рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рди рдкреНрд░рджрд░реНрд╢рди рд╣реИ ред
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдлреНрд░реЗрдо рдХреЗ рд╕рдорд╛рди рдкреНрд░рджрд░реНрд╢рди рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рднреМрддрд┐рдХ рдкрддреЗ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдорд╛рдиреНрдп рдЖрднрд╛рд╕реА рдкрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рднреА рд╕реНрддрд░реЛрдВ рдХреЗ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд░рдЬрд┐рд╕реНрдЯрд░ рд╕реАрдЖрд░ 3 рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╡рд░реНрдЪреБрдЕрд▓ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдХреЛ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореБрдлреНрдд рдореЗрдореЛрд░реА рдХреЗ рдмрдбрд╝реЗ рд╕рдиреНрдирд┐рд╣рд┐рдд рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдЦреЛрдЬрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдмрдирд╛рддрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо рдЙрдкрд░реЛрдХреНрдд рдЖрдХреГрддрд┐ рдореЗрдВ 1000 KiB рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ ред рд╣рдо
28 KiB
рдХреНрд╖реЗрддреНрд░ рд╕реЗ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣
1004 KiB
рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореМрдЬреВрдж рдкреГрд╖реНрда рдкрд░ рдЯрд┐рдХреА рд╣реБрдИ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рддрдм рддрдХ рдЖрдЧреЗ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рд╣рдо рдПрдХ рдЙрдкрдпреБрдХреНрдд рдмрдбрд╝реЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ рди рдкрд╛ рд▓реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
1008 KiB
рд╕рд╛рдеред рдЦрдВрдбрд┐рдд рдореЗрдореЛрд░реА рдореЗрдВ рдЙрддрдиреА рд╣реА рд╡рд┐рдЦрдВрдбрди рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирдП рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдЙрди рднреМрддрд┐рдХ рдлрд╝реНрд░реЗрдореЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдкреГрд╖реНрда рдЕрднреА рддрдХ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ 10008 kB
рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдореЛрд░реА рдХрд╛ рдПрдХ рдХреНрд╖реЗрддреНрд░ рдЖрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдкрддрд╛
1008 KiB
ред рдЕрдм рд╣рдо
1000 KiB
рдФрд░
2008 KiB
рдмреАрдЪ рднреМрддрд┐рдХ рдкрддреЗ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рдлреНрд░реЗрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдкрд╣рдЪрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдлрд┐рдХреНрд╕реНрдб рдСрдлрд╕реЗрдЯ рдирдХреНрд╢рд╛
рд╡рд░реНрдЪреБрдЕрд▓ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдХреЛ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдПрдХ
рдЕрд▓рдЧ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ
рд╣реИрдВ ред рдЗрд╕рд▓рд┐рдП, рдореИрдкрд┐рдВрдЧ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рд╡рд░реНрдЪреБрдЕрд▓ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдСрдлрд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдлреНрд░реЗрдо рдХреЛ рдореИрдк рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдСрдлрд╕реЗрдЯ 10 TiB рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:

рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдореЛрд░реА рдХреА рдЗрд╕ рд░реЗрдВрдЬ рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдХреЗ, рд╣рдо рд╕рдорд╛рди рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрддреЗ рд╣реИрдВред рд╡рд░реНрдЪреБрдЕрд▓ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдХреЗ рдЗрддрдиреЗ рдмрдбрд╝реЗ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рд╕рдВрд░рдХреНрд╖рдг рдХреЗрд╡рд▓ рддрднреА рд╕рдВрднрд╡ рд╣реИ рдЬрдм рд╡рд░реНрдЪреБрдЕрд▓ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реЛред
x86_64
рдпрд╣ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ 48-рдмрд┐рдЯ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ 256 TiB рд╣реИред
рд▓реЗрдХрд┐рди рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдиреБрдХрд╕рд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдПрдХ рдирдИ рдореИрдкрд┐рдВрдЧ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдЕрдиреНрдп рдкрддрд╛ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдирдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрдирд╛рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред
рдкреВрд░реНрдг рднреМрддрд┐рдХ рд╕реНрдореГрддрд┐ рдорд╛рдирдЪрд┐рддреНрд░рдг
рд╣рдо
рд╕рднреА рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдХреЗ рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рди рдХрд┐ рдХреЗрд╡рд▓ рдкреЗрдЬ рдЯреЗрдмрд▓ рдлреНрд░реЗрдо:

рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд░реНрдиреЗрд▓ рдХреЛ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЕрдиреНрдп рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдХреЗ рдкреЗрдЬ рдЯреЗрдмрд▓ рдлреНрд░реЗрдо рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдореЛрд░реА рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рд╣реА рдЖрдХрд╛рд░ рдореЗрдВ рдЖрд░рдХреНрд╖рд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рдХреЛрдИ рдмреЗрдЬреЛрдбрд╝ рдкреГрд╖реНрда рдирд╣реАрдВ рд╣реИрдВред
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдиреБрдХрд╕рд╛рди рдпрд╣ рд╣реИ рдХрд┐ рднреМрддрд┐рдХ рд╕реНрдореГрддрд┐ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрди рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдХрд╣реАрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рд╡реЗ рдХреБрдЫ рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдереЛрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рд░реИрдо рдХреЗ рд╕рд╛рде рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐, x86_64 рдкрд░ рд╣рдо 4 KiB рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЖрдХрд╛рд░ рдХреЗ рдмрдЬрд╛рдп рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рд╡рд┐рд╢рд╛рд▓ 2 MiB
рдкреГрд╖реНрдареЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рдХреЗ 32 GiB рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддрд┐ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдХреЗрд╡рд▓ 132 KiB рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ: рдХреЗрд╡рд▓ рдПрдХ рддреГрддреАрдп-рд╕реНрддрд░реАрдп рддрд╛рд▓рд┐рдХрд╛ рдФрд░ 32 рджреНрд╡рд┐рддреАрдп-рд╕реНрддрд░реАрдп рддрд╛рд▓рд┐рдХрд╛рдПрдБред рд╡рд┐рд╢рд╛рд▓ рдкреГрд╖реНрдареЛрдВ рдХреЛ рднреА рдЕрдзрд┐рдХ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдХреИрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЧрддрд┐рд╢реАрд▓ рдЕрдиреБрд╡рд╛рдж рдмрдлрд░ (рдЯреАрдПрд▓рдмреА) рдореЗрдВ рдХрдо рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдЕрд╕реНрдерд╛рдпреА рдкреНрд░рджрд░реНрд╢рди
рдмрд╣реБрдд рдХрдо рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рд╡рд╛рд▓реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк рдХреЗрд╡рд▓ рдЙрди рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП
рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдкреЗрдЬ рдЯреЗрдмрд▓ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрд╕реНрдерд╛рдпреА рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ рдкреНрд░рдердо рд╕реНрддрд░ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдПрдХ рд╕рдорд╛рди рдкреНрд░рджрд░реНрд╢рди рдЖрд╡рд╢реНрдпрдХ рд╣реИ:
рдЗрд╕ рдЖрдВрдХрдбрд╝реЗ рдореЗрдВ, рдПрдХ рд╕реНрддрд░ 1 рддрд╛рд▓рд┐рдХрд╛ рд╡рд░реНрдЪреБрдЕрд▓ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдХреЗ рдкрд╣рд▓реЗ 2 MiB рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддреА рд╣реИред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ CR3 рд░рдЬрд┐рд╕реНрдЯрд░ рд╕реЗ рдкрд╣реБрдВрдЪ 4, 3 рдФрд░ 2 рдХреЗ рд╕реНрддрд░реЛрдВ рдореЗрдВ рд╢реВрдиреНрдп рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реИред рд╕реВрдЪрдХрд╛рдВрдХ
8
рд╕рд╛рде рд░рд┐рдХреЙрд░реНрдб
32 KiB
рдкрд░ рдЖрднрд╛рд╕реА рдкреГрд╖реНрда рдХреЛ
32 KiB
рдореЗрдВ рдПрдХ рднреМрддрд┐рдХ рдлреНрд░реЗрдо рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╕реНрддрд░ 1 рддрд╛рд▓рд┐рдХрд╛ рдХреА рдкрд╣рдЪрд╛рди рд╣реЛрддреА рд╣реИред рдЖрдХреГрддрд┐ рдореЗрдВ рдпрд╣ рдПрдХ рдХреНрд╖реИрддрд┐рдЬ рддреАрд░ рджреНрд╡рд╛рд░рд╛ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЖрдЗрдбреЗрдВрдЯрд▓реА рдореИрдкреНрдб рд▓реЗрд╡рд▓ 1 рдЯреЗрдмрд▓ рдкрд░ рд▓рд┐рдЦрдХрд░, рд╣рдорд╛рд░рд╛ рдХрд░реНрдиреЗрд▓ 511 рдЯрд╛рдЗрдо рдХрдВрдкреЗрд░рд┐рдЬрди (рдкрд╣рдЪрд╛рди рдореИрдкрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЬрд░реВрд░реА рд░рд┐рдХреЙрд░реНрдб рдорд╛рдЗрдирд╕ 512 рдорд┐рдирдЯ) рддрдХ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдХрд░реНрдиреЗрд▓ рджреЛ рдмрд╛рд░ рддреБрд▓рдирд╛ рдмрдирд╛рддрд╛ рд╣реИ:
24 KiB
рдкрд░ рдПрдХ рдлреНрд░реЗрдо рдореЗрдВ рдПрдХ рд╕реНрддрд░ 1 рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рд╢реВрдиреНрдп рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХрд╛ рдорд╛рдирдЪрд┐рддреНрд░рдгред рдпрд╣ рдбреЙрдЯреЗрдб рддреАрд░ рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЧрд┐рдд рдкреГрд╖реНрда рд╕реНрддрд░ 2 рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рднреМрддрд┐рдХ рдлреНрд░реЗрдо рдореЗрдВ 0 KiB
рдкрд░ рдЖрднрд╛рд╕реА рдкреГрд╖реНрда рдХрд╛ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдорд╛рдирдЪрд┐рддреНрд░рдг рдмрдирд╛рддрд╛ рд╣реИред4 KiB
рдореЗрдВ рдПрдХ рдлреНрд░реЗрдо рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрддрд░ 1 рддрд╛рд▓рд┐рдХрд╛ рдХреЗ 9 рд╡реЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдорд┐рд▓рд╛рди рдХрд░реЗрдВред рдпрд╣ рдбреЙрдЯреЗрдб рдПрд░реЛ рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЧрд┐рдд рдкреЗрдЬ рд▓реЗрд╡рд▓ 4 рдЯреЗрдмрд▓ рдХреЗ рднреМрддрд┐рдХ рдлреНрд░реЗрдо рдореЗрдВ 36 KiB
рдкрд░ рд╡рд░реНрдЪреБрдЕрд▓ рдкреЗрдЬ рдХрд╛ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдорд╛рдирдЪрд┐рддреНрд░рдг рдмрдирд╛рддрд╛ рд╣реИред
рдЕрдм рдХрд░реНрдиреЗрд▓ рдПрдХ рд╕реНрддрд░ 2 рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдЙрд╕ рдкреГрд╖реНрда рдкрд░ рд▓рд┐рдЦрдХрд░ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ
0 KiB
рдкрд░ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕реНрддрд░ 4 рддрд╛рд▓рд┐рдХрд╛
33 KiB
рдкрд░ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдкреГрд╖реНрда рдкрд░ рд▓рд┐рдЦрдХрд░ред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЕрд╕реНрдерд╛рдпреА рдореИрдкрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдПрдХ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдлреНрд░реЗрдо рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рд┐рдпрд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
- рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╕реНрддрд░ 1 рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдирд┐рдГрд╢реБрд▓реНрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
- рдЗрд╕ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рдЙрд╕ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рднреМрддрд┐рдХ рдлрд╝реНрд░реЗрдо рдореЗрдВ рдореИрдк рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рд╣рдо рдПрдХреНрд╕реЗрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
- рдкреНрд░рд╡реЗрд╢ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рдЖрднрд╛рд╕реА рдкреГрд╖реНрда рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕ рдлреНрд░реЗрдо рддрдХ рдкрд╣реБрдВрдЪреЗрдВред
- рдЕрдкреНрд░рдпреБрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рд░рд┐рдХреЙрд░реНрдб рд╕реЗрдЯ, рдЬрд┐рд╕рд╕реЗ рдЕрд╕реНрдерд╛рдпреА рдорд╛рдирдЪрд┐рддреНрд░рдг рдХреЛ рд╣рдЯрд╛рдиреЗред
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдЖрднрд╛рд╕реА рдкрддрд╛ рд╕реНрдерд╛рди рд╕рд╛рдл тАЛтАЛрд░рд╣рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдорд╛рди 512 рдЖрднрд╛рд╕реА рдкреГрд╖реНрда рд▓рдЧрд╛рддрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдиреБрдХрд╕рд╛рди рдХреБрдЫ рдмреЛрдЭрд┐рд▓ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рдПрдХ рдирдИ рддреБрд▓рдирд╛ рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдХрдИ рд╕реНрддрд░реЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЕрд░реНрдерд╛рдд, рд╣рдореЗрдВ рдХрдИ рдмрд╛рд░ рд╡рд░реНрдгрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкреГрд╖реНрда рд╕рд╛рд░рдгреА
рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЬрд┐рд╕рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рд╡рд╣
рдкреБрдирд░рд╛рд╡рд░реНрддреА рдорд┐рд▓рд╛рди рд╣реИ ред
рд╡рд┐рдЪрд╛рд░ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдЪреМрдереЗ рд╕реНрддрд░ рдХреА рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдХреБрдЫ рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд░реНрдЪреБрдЕрд▓ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдЖрд░рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рднреА рд╡рд░реНрддрдорд╛рди рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреЗ рдЯреЗрдмрд▓ рдлреНрд░реЗрдо рдХреЛ рдЗрд╕ рд╕реНрдкреЗрд╕ рдореЗрдВ рдореИрдк рдХрд░рддреЗ рд╣реИрдВред
рдЖрдЗрдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ 4 рдЯреЗрдмрд▓ рдХреЗ рд╕реНрддрд░ рдореЗрдВ рд╕реВрдЪрдХрд╛рдВрдХ
511
рд╕рд╛рде рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд░рд┐рдХреЙрд░реНрдб рд╣реИ, рдЬрд┐рд╕реЗ рднреМрддрд┐рдХ рдлреНрд░реЗрдо
4 KiB
рдореЗрдВ рдореИрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╣реА рд╕реНрдерд┐рдд рд╣реИред
рдЬрдм рд╕реАрдкреАрдпреВ рдЗрд╕ рд░рд┐рдХреЙрд░реНрдб рдкрд░ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реНрддрд░ 3 рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╕реЗ рд╕реНрддрд░ 4 рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рдорд╛рди рд╣реИ рдЬреЛ рд╕реНрд╡рдпрдВ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рд╕реНрддрд░ 4 рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рдХреЙрд░реНрдб рд╕реНрддрд░ 3 рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдм рдпрд╣ рд╕реНрддрд░ 4 рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд╕реНрддрд░ 3 рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддрд╛ рд╣реИред рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ x86_64 рдореЗрдВ рд╕рднреА рд╕реНрддрд░реЛрдВ рдХреЗ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рд╕рдорд╛рди рд╣реЛрддреА рд╣реИред
рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░реВрдкрд╛рдВрддрд░рдг рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдмрд╛рд░ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдкрд╛рд▓рди рдХрд░рдХреЗ, рд╣рдо рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕реНрддрд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдо рдПрдХ рдмрд╛рд░ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рд╕реНрддрд░ 3 рддрд╛рд▓рд┐рдХрд╛ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реЛрдЪрддрд╛ рд╣реИ рдХрд┐ рд╕реНрддрд░ 3 рддрд╛рд▓рд┐рдХрд╛ рдПрдХ рд╕реНрддрд░ 2 рддрд╛рд▓рд┐рдХрд╛ рд╣реИред рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реБрдП, рд╡рд╣ рд╕реНрддрд░ 2 рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд╕реНрддрд░ 1 рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддрд╛ рд╣реИ, рдФрд░ рд╕реНрддрд░ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдореИрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рднреМрддрд┐рдХ рд╕реНрдореГрддрд┐ рдореЗрдВ рдлреНрд░реЗрдоред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЕрдм рд╣рдо рдкреЗрдЬ рд▓реЗрд╡рд▓ 1 рдЯреЗрдмрд▓ рдкрд░ рдкрдврд╝ рдФрд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореИрдкреНрдб рдлреНрд░реЗрдо рд╣реИред рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдЖрдВрдХрдбрд╝рд╛ рдРрд╕реЗ рдЕрдиреБрд╡рд╛рдж рдХреЗ рдкрд╛рдБрдЪ рдЪрд░рдгреЛрдВ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ:

рдЗрд╕реА рддрд░рд╣, рд╣рдо рд░реВрдкрд╛рдВрддрд░рдг рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рджреЛ рдмрд╛рд░ рдкрд╛рд░рд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕реНрддрд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

рдЖрдЗрдП рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЪрд░рдг рджрд░ рдЪрд░рдг рджреЗрдЦреЗрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, CPU рд╕реНрддрд░ 4 рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕реЛрдЪрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрддрд░ 3 рддрд╛рд▓рд┐рдХрд╛ рддрдХ рдкрд╣реБрдВрдЪ рдЧрдпрд╛ рд╣реИред рдлрд┐рд░ рд╡рд╣ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕реЛрдЪрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрддрд░ 2 рддрдХ рдкрд╣реБрдВрдЪ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдЕрднреА рднреА 4 рдХреЗ рд╕реНрддрд░ рдкрд░ рд╣реИред рддрдм CPU рдирдП рдкрддреЗ рдкрд░ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рд╕реНрддрд░ 3 рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрддрд░ 1 рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕реЛрдЪрддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, рд╕реНрддрд░ 2 рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЕрдЧрд▓реЗ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдкрд░, рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрд╕рдиреЗ рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рдлреНрд░реЗрдо рддрдХ рдкрд╣реБрдВрдЪ рдмрдирд╛рдИ рд╣реИред рдпрд╣ рд╣рдореЗрдВ рдПрдХ рд╕реНрддрд░ 2 рдЯреЗрдмрд▓ рдкрд░ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рд╕реНрддрд░ 3 рдФрд░ 4 рдХреА рддрд╛рд▓рд┐рдХрд╛рдПрдБ рднреА рдПрдХреНрд╕реЗрд╕ рдХреА рдЧрдИ рд╣реИрдВред рд╕реНрддрд░ 3 рдХреА рддрд╛рд▓рд┐рдХрд╛ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рддреАрди рдмрд╛рд░ рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ: рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реЛрдЪрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрддрд░ 1 рдХреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╣реИ, рдФрд░ рдЕрдЧрд▓реЗ рдЪрд░рдг рдореЗрдВ рд╣рдо рд╕реНрддрд░ 3 рддрдХ рдкрд╣реБрдБрдЪрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╕реАрдкреАрдпреВ рдПрдХ рдореИрдкреНрдб рдлрд╝реНрд░реЗрдо рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрддрд╛ рд╣реИред рд╕реНрддрд░ 4 рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд╕реНрд╡рдпрдВ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреЗрд╡рд▓ рдЪрд╛рд░ рдмрд╛рд░ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реНрддрд░ 4 рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдПрдХ рдореИрдкреНрдб рдлрд╝реНрд░реЗрдо (рдиреАрдЪреЗ рдХреА рдЖрдХреГрддрд┐ рдореЗрдВ рдиреАрд▓рд╛) рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдЕрд╡рдзрд╛рд░рдгрд╛ рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдкрддрд╛ рдЧрдгрдирд╛
рдЗрд╕рд▓рд┐рдП, рд╣рдо рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдмрд╛рд░ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдкрд╛рд▓рди рдХрд░рдХреЗ рд╕рднреА рд╕реНрддрд░реЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рддрдХ рдкрд╣реБрдБрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдЪрд╛рд░ рд╕реНрддрд░реЛрдВ рдХреЗ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХреЛ рд╕реАрдзреЗ рдЖрднрд╛рд╕реА рдкрддреЗ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдЖрднрд╛рд╕реА рдкрддреЗ рдмрдирд╛рдП рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдПред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рдкреЗрдЬ рдЯреЗрдмрд▓ рдЗрдВрдбреЗрдХреНрд╕ рдЗрд╕ рдкрддреЗ рд╕реЗ рдирд┐рдХрд╛рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ:

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо рдПрдХ рд╕реНрддрд░ 1 рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреГрд╖реНрда рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдКрдкрд░ рд╕реАрдЦрд╛ рд╣реИ, рдЖрдкрдХреЛ рдПрдХ рдмрд╛рд░ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░рд┐рдХреЙрд░реНрдб рд╕реЗ рдЧреБрдЬрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдлрд┐рд░ 4, 3 рдФрд░ 2 рдХреЗ рд╕реНрддрд░ рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рднреА рдПрдбреНрд░реЗрд╕ рдмреНрд▓реЙрдХ рдХреЛ рдПрдХ рдмреНрд▓реЙрдХ рдореЗрдВ рджрд╛рдИрдВ рдУрд░ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рд▓реЗрд╡рд▓ 4 рдХреЗ рд╢реБрд░реБрдЖрддреА рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ:

рдЗрд╕ рдкреГрд╖реНрда рдХреЗ рд╕реНрддрд░ 2 рддрд╛рд▓рд┐рдХрд╛ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рднреА рд╕реВрдЪрдХрд╛рдВрдХ рдЦрдВрдбреЛрдВ рдХреЛ рджреЛ рдЦрдВрдбреЛрдВ рдХреЛ рджрд╛рдИрдВ рдУрд░ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рджреЛрдиреЛрдВ рд╕реНрд░реЛрдд рдЦрдВрдбреЛрдВ рдХреЗ рд╕реНрддрд░ рдкрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ: рд╕реНрддрд░ 4 рдФрд░ рд╕реНрддрд░ 3:
рд╕реНрддрд░ 3 рддрд╛рд▓рд┐рдХрд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдРрд╕рд╛ рд╣реА рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рдЕрднреА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддреАрди рдкрддреЗ рд╡рд╛рд▓реЗ рдмреНрд▓реЙрдХ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВред
рдЕрдВрдд рдореЗрдВ, рд╕реНрддрд░ 4 рддрд╛рд▓рд┐рдХрд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЪрд╛рд░ рдмреНрд▓реЙрдХреЛрдВ рдХреЛ рджрд╛рдИрдВ рдУрд░ рд▓реЗ рдЬрд╛рдПрдВред
рдЕрдм рдЖрдк рд╕рднреА рдЪрд╛рд░ рд╕реНрддрд░реЛрдВ рдХреЗ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрднрд╛рд╕реА рдкрддреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдПрдХ рдкрддреЗ рдХреА рднреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ 8 рд╕реЗ рдЧреБрдгрд╛ рдХрд░рдХреЗ, рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХрд╛ рдЖрдХрд╛рд░ред
рдиреАрдЪреЗ рджреА рдЧрдИ рддрд╛рд▓рд┐рдХрд╛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдлрд╝реНрд░реЗрдореЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкрддреЗ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рджрд░реНрд╢рд╛рддреА рд╣реИ:
рдХреЗ рд▓рд┐рдП рд╡рд░реНрдЪреБрдЕрд▓ рдПрдбреНрд░реЗрд╕ | рдкрддрд╛ рд╕рдВрд░рдЪрдирд╛ ( рдЕрд╖реНрдЯрд╛рдзрд╛рд░реА ) |
---|
рдкреЗрдЬ | 0o_SSSSSS_AAA_BBB_CCC_DDD_EEEE |
рд╕реНрддрд░ 1 рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ | 0o_SSSSSS_RRR_AAA_BBB_CCC_DDDD |
рдПрдХ рд╕реНрддрд░ 2 рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ | 0o_SSSSSS_RRR_RRR_AAA_BBB_CCCC |
рдПрдХ рд╕реНрддрд░ 3 рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ | 0o_SSSSSS_RRR_RRR_RRR_AAA_BBBB |
рд╕реНрддрд░ 4 рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ | 0o_SSSSSS_RRR_RRR_RRR_RRR_AAAA |
рдпрд╣рд╛рдВ
рд╕реНрддрд░ 4 рд╕реВрдЪрдХрд╛рдВрдХ рд╣реИ,
рд╕реНрддрд░ 3 рд╣реИ,
рд╕реНрддрд░ 2 рд╣реИ, рдФрд░
DDD
рдкреНрд░рджрд░реНрд╢рд┐рдд рдлреНрд░реЗрдо рдХреЗ рд▓рд┐рдП рд╕реНрддрд░ 1 рд╕реВрдЪрдХрд╛рдВрдХ рд╣реИ,
EEEE
рдЗрд╕рдХреА рднрд░рдкрд╛рдИ рд╣реИред
RRR
рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ рд╣реИред рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ (рддреАрди рдЕрдВрдХ) 8 (рдкреЗрдЬ рдЯреЗрдмрд▓ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рдЖрдХрд╛рд░) рд╕реЗ рдЧреБрдгрд╛ рдХрд░рдХреЗ рдПрдХ рдСрдлрд╕реЗрдЯ (рдЪрд╛рд░ рдЕрдВрдХ) рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдСрдлрд╕реЗрдЯ рдХреЗ рд╕рд╛рде, рдкрд░рд┐рдгрд╛рдореА рдкрддрд╛ рд╕реАрдзреЗ рд╕рдВрдмрдВрдзрд┐рдд рддрд╛рд▓рд┐рдХрд╛ рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред
SSSS
рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдЕрдВрдХ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдмрд┐рдЯреНрд╕ рд╣реИрдВ,
SSSS
, рд╡реЗ рд╕рднреА рдмрд┐рдЯ 47 рдХреА рдкреНрд░рддрд┐рдпрд╛рдВ рд╣реИрдВред рдпрд╣ x86_64 рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдореЗрдВ рдорд╛рдиреНрдп рдкрддреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рд╣рдордиреЗ
рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдереАред
рдкрддреЗ
рдСрдХреНрдЯрд▓ рд╣реИрдВ , рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдСрдХреНрдЯрд▓ рдЪрд░рд┐рддреНрд░ рддреАрди рдмрд┐рдЯреНрд╕ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрддрд░реЛрдВ рдкрд░ 9-рдмрд┐рдЯ рдЗрдВрдбреЗрдХреНрд╕ рдЯреЗрдмрд▓ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рд┐рддреНрд░ рдЪрд╛рд░ рдмрд┐рдЯреНрд╕ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред
рд░рд╕реНрдЯ рдХреЛрдб
рдЖрдк рдмрд┐рдЯ рдХреЛрдб рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░рд╕реНрдЯ рдХреЛрдб рдореЗрдВ рдРрд╕реЗ рдкрддреЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:
рдпрд╣ рдХреЛрдб рдЗрдВрдбреЗрдХреНрд╕
0o777
(511) рдХреЗ рд╕рд╛рде рдкрд┐рдЫрд▓реЗ рд╕реНрддрд░ 4 рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдорд╛рдирдЪрд┐рддреНрд░рдг рдХрд╛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдорд┐рд▓рд╛рди рдХрд░рддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЛрдб рдЕрднреА рддрдХ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рд▓реЛрдбрд░ рдХреЛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдореИрдкрд┐рдВрдЧ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рджреЗрдЦреЗрдВред
рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрд┐рдЯрд╡рд╛рдЗрдЬрд╝ рдСрдкрд░реЗрд╢рди рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк
x86_64
рдЯреЛрдХрд░рд╛ рдХреЗ
RecursivePageTable
рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рддрд╛рд▓рд┐рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рд╕рд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЖрднрд╛рд╕реА рдкрддреЗ рдХреЛ рдЙрд╕рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рднреМрддрд┐рдХ рдкрддреЗ рдореЗрдВ рдХреИрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП:
рдлрд┐рд░ рд╕реЗ, рдЗрд╕ рдХреЛрдб рдХреЛ рдПрдХ рд╕рд╣реА рдкреБрдирд░рд╛рд╡рд░реНрддреА рдорд╛рдирдЪрд┐рддреНрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рдореИрдкрд┐рдВрдЧ рдХреЗ рд╕рд╛рде, рдЕрдиреБрдкрд▓рдмреНрдз
level_4_table_addr
рдЧрдгрдирд╛ рдкрд╣рд▓реЗ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдХреА рдЬрд╛рддреА рд╣реИред
рд░рд┐рдХрд░реНрд╕рд┐рд╡ рдореИрдкрд┐рдВрдЧ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рдзрд┐ рд╣реИ рдЬреЛ рдпрд╣ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рдПрдХрд▓ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рддрдирд╛ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдорд┐рд▓рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЖрд╕рд╛рди рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдиреНрдпреВрдирддрдо рд╕реЗрдЯрдЕрдк (рдХреЗрд╡рд▓ рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкрд╣рд▓реЗ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред
рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдХреБрдЫ рдиреБрдХрд╕рд╛рди рднреА рд╣реИрдВ:
- рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдореЛрд░реА (512 GiB)ред рдпрд╣ рдПрдХ рдмрдбрд╝реЗ 48-рдмрд┐рдЯ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдк-рдХреИрд╢ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЬрдиреНрдо рджреЗ рд╕рдХрддрд╛ рд╣реИред
- рдпрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдХреНрд░рд┐рдп рдкрддрд╛ рд╕реНрдерд╛рди рддрдХ рдкрд╣реБрдБрдЪ рджреЗрддрд╛ рд╣реИред рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рдмрджрд▓рдХрд░ рдЕрдиреНрдп рдкрддрд╛ рд╕реНрдерд╛рдиреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрд╕реНрдерд╛рдпреА рдорд┐рд▓рд╛рди рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╣рдордиреЗ рдкрд┐рдЫрд▓реЗ (рдЕрдкреНрд░рдЪрд▓рд┐рдд) рд▓реЗрдЦ рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИред
- рдпрд╣ x86 рдкреЗрдЬ рдЯреЗрдмрд▓ рдлреЙрд░реНрдореЗрдЯ рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдиреНрдп рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдмреВрдЯрд▓реЛрдбрд░ рд╕рдорд░реНрдерди
рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕рднреА рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЛ рдкреЗрдЬ рдЯреЗрдмрд▓ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рднреМрддрд┐рдХ рд╕реНрдореГрддрд┐ рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛ рдЪрддреБрд░реНрде-рд╕реНрддрд░реАрдп рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдкреБрди: рдореИрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдкреЗрдЬ рдЯреЗрдмрд▓ рддрдХ рдкрд╣реБрдБрдЪ рдХреЗ рдмрд┐рдирд╛ рдпреЗ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рдмреВрдЯрд▓реЛрдбрд░ рдХреА рдорджрдж рдЪрд╛рд╣рд┐рдПред рдЙрд╕рдХреЗ рдкрд╛рд╕ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡рд╣ рдХрд┐рд╕реА рднреА рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреЛ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдкрдиреЗ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ,
bootloader
рдХреНрд░реЗрдЯ
рдХрд╛рд░реНрдЧреЛ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдкрд░реЛрдХреНрдд рджреЛрдиреЛрдВ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди
рдХрд░рддрд╛ рд╣реИ :
map_physical_memory
рдлрд╝рдВрдХреНрд╢рди рд╡рд░реНрдЪреБрдЕрд▓ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдореЗрдВ рдкреВрд░реА рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рдХреЛ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдореИрдк рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХрд░реНрдиреЗрд▓ рд╕рднреА рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреВрд░реНрдг рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
recursive_page_table
рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд▓реЛрдбрд░ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░реВрдк рд╕реЗ рдПрдХ рдЪреМрдереЗ-рд╕реНрддрд░реАрдп рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХрд░реНрдиреЗрд▓ рдХреЛ "рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ" рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╡рд┐рдзрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рд╣рдорд╛рд░реА рдХрд░реНрдиреЗрд▓ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рд╕рд░рд▓, рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рд╕реНрд╡рддрдВрддреНрд░ рдФрд░ рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ (рдпрд╣ рдХреЗрд╡рд▓ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рд╣реА рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЕрдиреНрдп рдлрд╝реНрд░реЗрдореЛрдВ рдХреЛ рднреА рдПрдХреНрд╕реЗрд╕ рджреЗрддрд╛ рд╣реИ)ред рдмреВрдЯрд▓реЛрдбрд░ рд╕реЗ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП, рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЗрд╕рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ map_physical_memory
: [dependencies] bootloader = { version = "0.4.0", features = ["map_physical_memory"]}
рдпрджрд┐ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рд╕рдХреНрд╖рдо рд╣реИ, рддреЛ рдмреВрдЯрд▓реЛрдбрд░ рдкреВрд░реА рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рдХреЛ рд╡рд░реНрдЪреБрдЕрд▓ рдкрддреЗ рдХреЗ рдХреБрдЫ рдЕрдкреНрд░рдпреБрдХреНрдд рд╢реНрд░реЗрдгреА рдореЗрдВ рдореИрдк рдХрд░рддрд╛ рд╣реИред рдХрд░реНрдиреЗрд▓ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд░реНрдЪреБрдЕрд▓ рдкрддреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмреВрдЯрд▓реЛрдбрд░ рдмреВрдЯ рд╕реВрдЪрдирд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ редрдмреВрдЯ рдЬрд╛рдирдХрд╛рд░реА
рдЯреЛрдХрд░рд╛ рдХрд░реНрдиреЗрд▓ рдХреЛ рдкрд╛рд░рд┐рдд рдХреА рдЧрдИ рд╕рднреА рд╕реВрдЪрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде BootInfobootloader
рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ ред рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЕрднреА рднреА рдЕрдВрддрд┐рдо рд░реВрдк рджрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рджреМрд░рд╛рди рдХреБрдЫ рд╡рд┐рдлрд▓рддрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдЬреЛ рдХрд┐ рд╕реЗрд╡рд░ рдХреЗ рд╕рд╛рде рдЕрд╕рдВрдЧрдд рд╣реИрдВ ред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рд╕рдВрд░рдЪрдирд╛ рдХреЗ рджреЛ рдХреНрд╖реЗрддреНрд░ рд╣реИрдВ: рдФрд░ :memory_map
physical_memory_offset
- рдлрд╝реАрд▓реНрдб
memory_map
рдЙрдкрд▓рдмреНрдз рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рдХрд╛ рдЕрд╡рд▓реЛрдХрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХрд░реНрдиреЗрд▓ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХрд┐рддрдиреА рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рдЙрдкрд▓рдмреНрдз рд╣реИ рдФрд░ рдореЗрдореЛрд░реА рдХреЗ рдХреМрди рд╕реЗ рдХреНрд╖реЗрддреНрд░ рд╡реАрдЬреАрдП рдЬреИрд╕реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд░рдХреНрд╖рд┐рдд рд╣реИрдВред рдПрдХ рдореЗрдореЛрд░реА рдХрд╛рд░реНрдб рдХреЛ BIOS рдпрд╛ рдпреВрдИрдПрдлрдЖрдИ рдлрд░реНрдорд╡реЗрдпрд░ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдмреВрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВред рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рд▓реЛрдбрд░ рдХреЛ рдЗрд╕реЗ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рддрдм рдХрд░реНрдиреЗрд▓ рдЕрдм рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдмрд╛рдж рдореЗрдВ рдПрдХ рдореЗрдореЛрд░реА рдХрд╛рд░реНрдб рдХрд╛рдо рдЖрдПрдЧрд╛ред
physical_memory_offset
рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рдореИрдкрд┐рдВрдЧ рдХреЗ рд╡рд░реНрдЪреБрдЕрд▓ рдкреНрд░рд╛рд░рдВрдн рдкрддреЗ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдСрдлрд╕реЗрдЯ рдХреЛ рднреМрддрд┐рдХ рдкрддреЗ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдкрд░, рд╣рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд░реНрдЪреБрдЕрд▓ рдкрддрд╛ рдорд┐рд▓рддрд╛ рд╣реИред рдпрд╣ рдХрд░реНрдиреЗрд▓ рд╕реЗ рдордирдорд╛рдиреА рднреМрддрд┐рдХ рд╕реНрдореГрддрд┐ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рд▓реЛрдбрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП BootInfo
рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░реНрдиреЗрд▓ рдХреЗ рд▓рд┐рдП рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкрд╛рд╕ &'static BootInfo
рдХрд░рддрд╛ рд╣реИ _start
ред рдЗрд╕реЗ рдЬреЛрдбрд╝реЗрдВ:
рд╕рд╣реА рддрд░реНрдХ рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ рд╣рдорд╛рд░реЗ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╣реА рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИредрдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдореИрдХреНрд░реЛ
рдЪреВрдВрдХрд┐ рдлрд╝рдВрдХреНрд╢рди _start
рд▓реЛрдбрд░ рд╕реЗ рдмрд╛рд╣рд░реА рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдордирдорд╛рдиреА рддрд░реНрдХ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдкрд╡рд╛рд╣рд┐рдд рд░рдирдЯрд╛рдЗрдо рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдХреНрд░реИрд╢ рдпрд╛ рдХрд╛рд░рдг рджреЗрдЧрд╛редрдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдВрджреБ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╣рдореЗрд╢рд╛ рд╕рд╣реА рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реИрдВ, рдЯреЛрдХрд░рд╛ bootloader
рдПрдХ рдореИрдХреНрд░реЛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ entry_point
ред рд╣рдо рдЗрд╕ рдореИрдХреНрд░реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
рдЕрдм рдЖрдкрдХреЛ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ extern "C"
рдпрд╛ no_mangle
, рдЪреВрдВрдХрд┐ рдореИрдХреНрд░реЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ _start
ред рдлрд╝рдВрдХреНрд╢рди kernel_main
рдЕрдм рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд░рд╕реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдмрди рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдордирдорд╛рдирд╛ рдирд╛рдо рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВред рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рдХрд╛рд░ рджреНрд╡рд╛рд░рд╛ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдЧрд▓рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рддрд░реНрдХ рдЬреЛрдбрд╝рдХрд░ рдпрд╛ рдЙрд╕рдХрд╛ рдкреНрд░рдХрд╛рд░ рдмрджрд▓рдХрд░, рдПрдХ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрдЧреАрдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ, рдФрд░ рд╣рдо рдЕрдВрддрддрдГ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╡рд░реНрддрдорд╛рди рд╕рдХреНрд░рд┐рдп рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдЬрд┐рд╕ рдкрд░ рдХрд░реНрдиреЗрд▓ рдЪрд▓рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рдЪрд░рдг рдореЗрдВ, рдПрдХ рдЯреНрд░рд╛рдВрд╕рд▓реЗрд╢рди рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдПрдВ рдЬреЛ рднреМрддрд┐рдХ рдкрддреЗ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдпрд╣ рд╡рд░реНрдЪреБрдЕрд▓ рдкрддрд╛ рдореИрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдВрддрд┐рдо рдЪрд░рдг рдореЗрдВ, рд╣рдо рдирдпрд╛ рдорд╛рдирдЪрд┐рддреНрд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗредрд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреЛрдб рдореЗрдВ рдПрдХ рдирдпрд╛ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдПрдВ memory
:
рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЦрд╛рд▓реА рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ src/memory.rs
редрдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪ
рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ , рд╣рдордиреЗ рдЙрди рдкреГрд╖реНрдареЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд┐рди рдкрд░ рдХрд░реНрдиреЗрд▓ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд░рдЬрд┐рд╕реНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдмрддрд╛рдП рдЧрдП рднреМрддрд┐рдХ рдлреНрд░реЗрдо рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реИ CR3
ред рдЕрдм рд╣рдо рдЗрд╕ рдЬрдЧрд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ: рдлрд╝рдВрдХреНрд╢рди active_level_4_table
рдЪреМрдереЗ рд╕реНрддрд░ рдХреЗ рдкреГрд╖реНрдареЛрдВ рдХреА рд╕рдХреНрд░рд┐рдп рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рд▓рд┐рдВрдХ рд▓реМрдЯрд╛ рджреЗрдЧрд╛:
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рд░рдЬрд┐рд╕реНрдЯрд░ рд╕реЗ рдЪреМрдереЗ рд╕реНрддрд░ рдХреА рд╕рдХреНрд░рд┐рдп рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рднреМрддрд┐рдХ рдлреНрд░реЗрдо рдХреЛ рдкрдврд╝рд╛ CR3
ред рдлрд┐рд░ рд╣рдо рдЗрд╕рдХрд╛ рднреМрддрд┐рдХ рдЖрд░рдВрднрд┐рдХ рдкрддрд╛ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЬреЛрдбрд╝рдХрд░ рдЖрднрд╛рд╕реА рдкрддреЗ рдореЗрдВ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ physical_memory_offset
ред рдЕрдВрдд рдореЗрдВ, рдкрддреЗ рдХреЛ *mut PageTable
рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдХрдЪреНрдЪреЗ рдкреЙрдЗрдВрдЯрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░реЗрдВ as_mut_ptr
, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдЗрд╕рд╕реЗ рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рд▓рд┐рдВрдХ рдмрдирд╛рдПрдВ &mut PageTable
ред рд╣рдо &mut
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд▓рд┐рдВрдХ рдмрдирд╛рддреЗ рд╣реИрдВ &
, рдХреНрдпреЛрдВрдХрд┐ рдмрд╛рдж рдореЗрдВ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рдЗрди рдкреЗрдЬ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВрдЧреЗредрдпрд╣рд╛рдВ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдмреНрд▓реЙрдХ рдбрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд░рд╕реНрдЯ рдкреВрд░реЗ рд╢рд░реАрд░ unsafe fn
рдХреЛ рдПрдХ рдмрдбрд╝реЗ, рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдмреНрд▓реЙрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддрд╛ рд╣реИ ред рдЗрд╕рд╕реЗ рдЬреЛрдЦрд┐рдо рдмрдврд╝ рдЬрд╛рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдкрд┐рдЫрд▓реА рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдЧрд▓рддреА рд╕реЗ рдПрдХ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдСрдкрд░реЗрд╢рди рд╢реБрд░реВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдЗрд╕рд╕реЗ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рднреА рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред Rust рдХреЗ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ RFC рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ редрдЕрдм рд╣рдо рдЪреМрдереЗ рд╕реНрддрд░ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рд╣рдо physical_memory_offset
рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ BootInfo
ред рдлрд┐рд░ рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдореЗрдВ рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ рдЬреЛрдбрд╝рдиреЗ рдХреЗ iter
рд▓рд┐рдП рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдФрд░ рдПрдХ рд╕рдВрдпреЛрдЬрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдХреЗрд╡рд▓ рдЧреИрд░-рд░рд┐рдХреНрдд рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА 512 рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рд╕реНрдХреНрд░реАрди рдкрд░ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрдВрдЧреАред рдЬрдм рд╣рдо рдХреЛрдб рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕ рдкрд░рд┐рдгрд╛рдо рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ: рд╣рдо рдХрдИ рдЧреИрд░-рдЦрд╛рд▓реА рд░рд┐рдХреЙрд░реНрдб рджреЗрдЦрддреЗ рд╣реИрдВ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рддреГрддреАрдп-рд╕реНрддрд░реАрдп рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рдореИрдк рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдХрдИ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХрд░реНрдиреЗрд▓ рдХреЛрдб, рдХрд░реНрдиреЗрд▓ рд╕реНрдЯреИрдХ, рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рдЕрдиреБрд╡рд╛рдж рдФрд░ рдмреВрдЯ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рддреАрд╕рд░реЗ рд╕реНрддрд░ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдлрд┐рд░ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдлреНрд░реЗрдо рдХреЛ рдЖрднрд╛рд╕реА рдкрддреЗ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ:enumerate
i

рджреВрд╕рд░реЗ рдФрд░ рдкрд╣рд▓реЗ рд╕реНрддрд░реЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрд░рдорд╢рдГ рддреАрд╕рд░реЗ рдФрд░ рджреВрд╕рд░реЗ рд╕реНрддрд░ рдХреЗ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рджреЛрд╣рд░рд╛рдПрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдмрд╣реБрдд рддреЗрдЬрд╝реА рд╕реЗ рдмрдврд╝ рд░рд╣реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдкреВрд░реА рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдкреНрд░рдХрд╛рд╢рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗредрдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЯреНрд░реИрд╡рд░реНрд╕рд┐рдВрдЧ рдЯреЗрдмрд▓ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреИрд╕реЗ рдкрддреЗ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдорддреМрд░ рдкрд░ рд╣рдо рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд░реНрдЪреБрдЕрд▓ рдкрддреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рднреМрддрд┐рдХ рдкрддрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЪрд▓рд┐рдП рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВредрдкрддрд╛ рдЕрдиреБрд╡рд╛рдж
рд╡рд░реНрдЪреБрдЕрд▓ рдПрдбреНрд░реЗрд╕ рдХреЛ рдлрд┐рдЬрд┐рдХрд▓ рдПрдбреНрд░реЗрд╕ рдореЗрдВ рдЯреНрд░рд╛рдВрд╕рд▓реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдореИрдк рдХрд┐рдП рдЧрдП рдлреНрд░реЗрдо рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рддрдХ рдЪрд╛рд░-рд╕реНрддрд░реАрдп рдкреЗрдЬ рдЯреЗрдмрд▓ рд╕реЗ рдЧреБрдЬрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЖрдЗрдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдПрдВ рдЬреЛ рдЗрд╕ рдкрддреЗ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИ:
рд╣рдо translate_addr_inner
рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ ред рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрдВрдЧ рдкреВрд░реЗ рд╢рд░реАрд░ unsafe fn
рдХреЛ рдПрдХ рдмрдбрд╝реЗ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдмреНрд▓реЙрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддрд╛ рд╣реИ ред рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ, рд╣рдо рдлрд┐рд░ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрд╢рди рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ unsafe
редрдПрдХ рд╡рд┐рд╢реЗрд╖ рдЖрдВрддрд░рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реЛрддреА рд╣реИ:
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, active_level_4_table
рд╣рдордиреЗ рд░рдЬрд┐рд╕реНрдЯрд░ рд╕реЗ рдЪреМрдереЗ рд╕реНрддрд░ рдХреЗ рдлреНрд░реЗрдо рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрдврд╝рд╛ CR3
, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ, рд╣рдо рдЬрд▓реНрдж рд╣реА рд╕рдорд╛рдзрд╛рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░реЗрдВрдЧреЗредрд╕рдВрд░рдЪрдирд╛ VirtAddr
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЪрд╛рд░ рд╕реНрддрд░реЛрдВ рдХреЗ рдкреГрд╖реНрдареЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рддрд░реАрдХреЗ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рд╣рдо рдЗрди рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреЛ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд╕рд░рдгреА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рд╕рднреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реВрдк рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ for
ред рд▓реВрдк рдХреЗ рдмрд╛рд╣рд░, рд╣рдореЗрдВ рдпрд╛рдж рд╣реИ рдХрд┐ рдЖрдЦрд┐рд░реА рдлреНрд░реЗрдо рдмрд╛рдж рдореЗрдВ рднреМрддрд┐рдХ рдкрддреЗ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреМрд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред frame
рдкреГрд╖реНрда рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рджреМрд░рд╛рди рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдлрд╝реНрд░реЗрдореЛрдВ рдФрд░ рдЕрдВрддрд┐рдо рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рдмрд╛рдж рд╕рдВрдмрджреНрдз рдлрд╝реНрд░реЗрдо рдкрд░, рдЬреЛ рдХрд┐ рд╕реНрддрд░ 1 рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИредрд▓реВрдк рдХреЗ рдЕрдВрджрд░, рд╣рдо рдлрд┐рд░ рд╕реЗ рдЖрд╡реЗрджрди рдХрд░рддреЗ рд╣реИрдВредphysical_memory_offset
рдлрд╝реНрд░реЗрдо рдХреЛ рдкреЗрдЬ рдЯреЗрдмрд▓ рд▓рд┐рдВрдХ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдПред рдлрд┐рд░ рд╣рдо рд╡рд░реНрддрдорд╛рди рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рд░рд┐рдХреЙрд░реНрдб рдкрдврд╝рддреЗ рд╣реИрдВ рдФрд░ PageTableEntry::frame
рдорд┐рд▓рд╛рди рдХрд┐рдП рдЧрдП рдлреНрд░реЗрдо рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ ред рдпрджрд┐ рд░рд┐рдХреЙрд░реНрдб рдлрд╝реНрд░реЗрдо рдореЗрдВ рдореИрдк рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╡рд╛рдкрд╕ рд▓реМрдЯреЗрдВ None
ред рдпрджрд┐ рд░рд┐рдХреЙрд░реНрдб 2 MiB рдпрд╛ 1 GiB рдХреЗ рд╡рд┐рд╢рд╛рд▓ рдкреГрд╖реНрда рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЕрдм рддрдХ рд╣рдореЗрдВ рдШрдмрд░рд╛рд╣рдЯ рд╣реЛрдЧреАредрддреЛ, рдХреБрдЫ рдкрддреЗ рдкрд░ рдЕрдиреБрд╡рд╛рдж рд╕рдорд╛рд░реЛрд╣ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:
рдЬрдм рд╣рдо рдХреЛрдб рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдирд┐рдореНрди рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддреЗ рд╣реИрдВ:
рдЬреИрд╕рд╛ рдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛, рдПрдХ рд╕рдорд╛рди рдорд╛рдирдЪрд┐рддреНрд░рдг рдХреЗ рд╕рд╛рде, рдкрддрд╛ 0xb8000
рдЙрд╕реА рднреМрддрд┐рдХ рдкрддреЗ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдХреЛрдб рдкреГрд╖реНрда рдФрд░ рд╕реНрдЯреИрдХ рдкреГрд╖реНрда рдХреЛ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рднреМрддрд┐рдХ рдкрддреЗ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд▓реЛрдбрд░ рдиреЗ рд╣рдорд╛рд░реА рдХрд░реНрдиреЗрд▓ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореИрдкрд┐рдВрдЧ рдХреИрд╕реЗ рдмрдирд╛рдИред рдореИрдкрд┐рдВрдЧ physical_memory_offset
рдХреЛ рднреМрддрд┐рдХ рдкрддреЗ рдкрд░ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП 0
, рд▓реЗрдХрд┐рди рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреБрд╡рд╛рдж рджрдХреНрд╖рддрд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд╛рд▓ рдкреГрд╖реНрдареЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдмреВрдЯрд▓реЛрдбрд░ рдХрд╛ рднрд╛рд╡реА рд╕рдВрд╕реНрдХрд░рдг рдХрд░реНрдиреЗрд▓ рдФрд░ рд╕реНрдЯреИрдХ рдкреГрд╖реНрдареЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдЕрдиреБрдХреВрд▓рди рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реИредMappedPageTable рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рднреМрддрд┐рдХ рдкрддреЛрдВ рдореЗрдВ рдЖрднрд╛рд╕реА рдкрддреЛрдВ рдХрд╛ рдЕрдиреБрд╡рд╛рдж OS рдХрд░реНрдиреЗрд▓ рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЯреЛрдХрд░рд╛ рдЗрд╕рдХреЗ x86_64
рд▓рд┐рдП рдПрдХ рдЕрдореВрд░реНрддрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд┐рд╢рд╛рд▓ рдкреГрд╖реНрдареЛрдВ рдФрд░ рдХрдИ рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ translate_addr
, рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдмрдбрд╝реЗ рдкреГрд╖реНрдареЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВредрдЕрдореВрд░реНрддрддрд╛ рдХрд╛ рдЖрдзрд╛рд░ рджреЛ рд▓рдХреНрд╖рдг рд╣реИрдВ рдЬреЛ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрд╡рд╛рдж рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:- рд▓рдХреНрд╖рдг
Mapper
рдкреГрд╖реНрдареЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдп рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, translate_page
рдЗрд╕ рдкреГрд╖реНрда рдХреЛ рдЙрд╕реА рдЖрдХрд╛рд░ рдХреЗ рдлреНрд░реЗрдо рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд╛рде рд╣реА map_to
рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдирдпрд╛ рдорд╛рдирдЪрд┐рддреНрд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
- рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛
MapperAllSizes
рддрд╛рддреНрдкрд░реНрдп Mapper
рд╕рднреА рдкреГрд╖реНрда рдЖрдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рд╕реЗ рд╣реИ ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдРрд╕реЗ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдЖрдХрд╛рд░реЛрдВ рдХреЗ рдкреГрд╖реНрдареЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ translate_addr
рдпрд╛ рд╕рд╛рдорд╛рдиреНрдп рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ translate
ред
рд▓рдХреНрд╖рдг рдХреЗрд╡рд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЛрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЕрдм рдЯреЛрдХрд░рд╛ x86_64
рджреЛ рдкреНрд░рдХрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд▓рдХреНрд╖рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ: MappedPageTable
рдФрд░ RecursivePageTable
ред рдкрд╣рд▓реЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдХрд╣реАрдВ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдСрдлрд╝рд╕реЗрдЯ рдХреЗ рд╕рд╛рде)ред рджреВрд╕рд░реЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЪреМрдереЗ рд╕реНрддрд░ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдкреБрди: рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рднреА рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рдореИрдк рдХреА рдЧрдИ рд╣реИрдВ physical_memory_offset
, рдЗрд╕рд▓рд┐рдП рдЖрдк рдореИрдкреНрдбрдкреЗрдЬреЗрдЬ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕реЗ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, init
рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдХ рдирдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдПрдВ memory
: use x86_64::structures::paging::{PhysFrame, MapperAllSizes, MappedPageTable}; use x86_64::PhysAddr;
рд╣рдо рд╕реАрдзреЗ MappedPageTable
рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдирд╣реАрдВ рд▓реМрдЯ рд╕рдХрддреЗ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдХреНрд▓реЛрдЬрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╣реИред рд╣рдо рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдПрдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ impl Trait
ред рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк RecursivePageTable
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛ рдХрд░реНрдиреЗрд▓ рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ редрдлрд╝рдВрдХреНрд╢рди MappedPageTable::new
рджреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИ: рд╕реНрддрд░ 4 рдХреЗ рдкреЗрдЬ рдЯреЗрдмрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░рд╕реНрдкрд░ рд▓рд┐рдВрдХ рдФрд░ рдПрдХ рдмрдВрдж phys_to_virt
рдЬреЛ рдкреЗрдЬ рдлреНрд░реЗрдо рдкреЙрдЗрдВрдЯрд░ рдореЗрдВ рднреМрддрд┐рдХ рдлреНрд░реЗрдо рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ *mut PageTable
ред рдкрд╣рд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП, рд╣рдо рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ active_level_4_table
ред рджреВрд╕рд░реЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдХреНрд▓реЛрдЬрд░ рдмрдирд╛рддреЗ physical_memory_offset
рд╣реИрдВ рдЬреЛ рд░реВрдкрд╛рдВрддрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИредрд╣рдо рдЗрд╕реЗ рдПрдХ active_level_4_table
рдирд┐рдЬреА рд╕рдорд╛рд░реЛрд╣ рднреА рдмрдирд╛рддреЗ рд╣реИрдВ , рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рд╕реЗ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ init
редрд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПMapperAllSizes::translate_addr
рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрд╛рд░реНрдп рдХреЗ рдмрдЬрд╛рдп memory::translate_addr
, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ kernel_main
:
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдкрд╣рд▓реЗ рдЬреИрд╕реЗ рд╣реА рдЕрдиреБрд╡рд╛рдж рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдм рдХреЗрд╡рд▓ рд╡рд┐рд╢рд╛рд▓ рдкреГрд╖реНрда рднреА рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ:
рдЬреИрд╕рд╛ рдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛, рдЖрднрд╛рд╕реА рдкрддреЗ рдХреЛ physical_memory_offset
рднреМрддрд┐рдХ рдкрддреЗ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ 0x0
ред рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╡рд╛рдж рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП MappedPageTable
, рд╣рдо рд╡рд┐рд╢рд╛рд▓ рдкреГрд╖реНрдареЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдиреНрдп рдкреГрд╖реНрда рдХрд╛рд░реНрдпреЛрдВ рддрдХ рднреА рдкрд╣реБрдВрдЪ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ map_to
рд╣рдо рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рд╕реНрддрд░ рдкрд░, рд╣рдореЗрдВ рдЕрдм рдлрд╝рдВрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ memory::translate_addr
, рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдЗрд╕реЗ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВредрдПрдХ рдирдИ рдореИрдкрд┐рдВрдЧ рдмрдирд╛рдПрдВ
рдЕрдм рддрдХ, рд╣рдордиреЗ рдХреЗрд╡рд▓ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рджреЗрдЦрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИред рдкрд╣рд▓реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рди рдХрд┐рдП рдЧрдП рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдорд╛рдирдЪрд┐рддреНрд░рдг рдмрдирд╛рддреЗ рд╣реИрдВредрд╣рдо рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ map_to
рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗ рдХрд░реЗрдВрдЧреЗ Mapper
, рдЗрд╕рд▓рд┐рдП рдкрд╣рд▓реЗ рд╣рдо рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдкреНрд░рд▓реЗрдЦрди рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЪрд╛рд░ рддрд░реНрдХ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ: рд╡рд╣ рдкреГрд╖реНрда рдЬрд┐рд╕реЗ рд╣рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ; рдЬрд┐рд╕ рдлрд╝реНрд░реЗрдо рдХреЛ рдкреГрд╖реНрда рдореИрдк рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдФрд░ рдлреНрд░реЗрдо рд╡рд┐рддрд░рдХ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЭрдВрдбреЗ рдХрд╛ рд╕реЗрдЯ frame_allocator
ред рдПрдХ рдлреНрд░реЗрдо рдПрд▓реЛрдХреЗрдЯрд░ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдкреГрд╖реНрда рдХреЛ рдореИрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдмреИрдХрдЕрдк рд╕реНрдЯреЛрд░реЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкреНрд░рдпреБрдХреНрдд рдлрд╝реНрд░реЗрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИредрд╕рдорд╛рд░реЛрд╣ create_example_mapping
рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдкрд╣рд▓рд╛ рдХрджрдо рдПрдХ рдирдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдирд╛ рд╣реИ create_example_mapping
рдЬреЛ рдЗрд╕ рдкреГрд╖реНрда рдХреЛ 0xb8000
рд╡реАрдЬреАрдП рдЯреЗрдХреНрд╕реНрдЯ рдмрдлрд░ рдХреЗ рднреМрддрд┐рдХ рдлреНрд░реЗрдо рдореЗрдВ рдореИрдк рдХрд░рддрд╛ рд╣реИ ред рд╣рдо рдЗрд╕ рдлреНрд░реЗрдо рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдбрд┐рд╕реНрдкреНрд▓реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рдереА: рд╣рдореЗрдВ рдмрд╕ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдкреЗрдЬ рдкрд░ рд▓рд┐рдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╕реНрдХреНрд░реАрди рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИредрдлрд╝рдВрдХреНрд╢рди create_example_mapping
рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
рдкреЗрдЬ рдХреЗ рдЕрд▓рд╛рд╡рд╛ page
рд╣реИ рдХрд┐ рдЖрдк рд╕рдВрдмрджреНрдз рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд╕рдорд╛рд░реЛрд╣ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреА рдЙрдореНрдореАрдж рд╣реИ mapper
рдФрд░ frame_allocator
ред рдкреНрд░рдХрд╛рд░ mapper
рдЙрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ Mapper<Size4KiB>
рд╣реИ рдЬреЛ рд╡рд┐рдзрд┐ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ map_to
ред рдЖрдо рдкреИрд░рд╛рдореАрдЯрд░ Size4KiB
рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛ Mapper
рд╣реИ рдЖрдо рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд▓рд┐рдП PageSize
рдорд╛рдирдХ 4 KiB рдкреГрд╖реНрдареЛрдВ рдХреЗ рд╕рд╛рде рдФрд░ рднрд╛рд░реА рдкреГрд╖реНрдареЛрдВ 2 рдФрд░ MiB 1 GiB рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛,ред рд╣рдо рдХреЗрд╡рд▓ 4 KiB рдкреЗрдЬ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо Mapper<Size4KiB>
рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ MapperAllSizes
редрддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП, рдзреНрд╡рдЬ рдХреЛ рд╕реЗрдЯ рдХрд░реЗрдВ PRESENT
, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рднреА рдорд╛рдиреНрдп рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдФрд░ рдзреНрд╡рдЬ WRITABLE
рдкреГрд╖реНрда рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рдХреЙрд▓map_to
рдЕрд╕реБрд░рдХреНрд╖рд┐рдд: рдЖрдк рдЕрдорд╛рдиреНрдп рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрдореГрддрд┐ рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ unsafe
ред рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдЭрдВрдбреЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП, рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХрд╛ "рдкреЗрдЬ рдЯреЗрдмрд▓ рдкреНрд░рд╛рд░реВрдк" рдЕрдиреБрднрд╛рдЧ рджреЗрдЦреЗрдВ редрдлрд╝рдВрдХреНрд╢рди map_to
рд╡рд┐рдлрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИ Result
ред рдЪреВрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдХреЛрдб рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рдо рдмрд╕ expect
рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдШрдмрд░рд╛рд╣рдЯ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ ред рдпрджрд┐ рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдкреНрд░рдХрд╛рд░ рджреЗрддрд╛ рд╣реИ MapperFlush
рдЬреЛ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧрддрд┐рд╢реАрд▓ рдЕрдиреБрд╡рд╛рдж рдмрдлрд░ (рдЯреАрдПрд▓рдмреА) рд╕реЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдкреГрд╖реНрда рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ flush
ред рдЬреИрд╕реЗ Result
, рдпрд╣ рдкреНрд░рдХрд╛рд░ [ #[must_use]
] рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИрдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдХрд░рдирд╛ рдЕрдЧрд░ рд╣рдо рдЧрд▓рддреА рд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ редрдХрд╛рд▓реНрдкрдирд┐рдХ FrameAllocator
рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП create_example_mapping
, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ FrameAllocator
ред рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдХ рдирдпрд╛ рдкреНрд░рджрд░реНрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдЙрд╕ рдЖрднрд╛рд╕реА рдкреГрд╖реНрда рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рд╕рд░рд▓ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрддрд░ 1 рддрд╛рд▓рд┐рдХрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореМрдЬреВрдж рд╣реИ, рдФрд░ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд░рд┐рдХреЙрд░реНрдб рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдХрдард┐рди рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреГрд╖реНрда рдПрдХ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╕реНрддрд░ 3 рдЕрднреА рддрдХ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рд╕реНрддрд░ 3, 2 рдФрд░ 1. рдХреЗ рдкреЗрдЬ рдЯреЗрдмрд▓ рдмрдирд╛рдиреЗ рд╣реЛрдВрдЧреЗредрдЖрдЗрдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХреЗрд╕ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ рдФрд░ рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдкрдХреЛ рдирдпрд╛ рдкреЗрдЬ рдЯреЗрдмрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдПрдХ рдлреНрд░реЗрдо рд╡рд┐рддрд░рдХ рдЬреЛ рд╣рдореЗрд╢рд╛ рд░рд┐рдЯрд░реНрди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ None
ред рд╣рдо EmptyFrameAllocator
рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╛рд░реЛрд╣ рдмрдирд╛рддреЗ рд╣реИрдВ :
рдЕрдм рдЖрдкрдХреЛ рдПрдХ рдкреГрд╖реНрда рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдирдП рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдмрдирд╛рдП рдмрд┐рдирд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЛрдбрд░ рдХреЛ рд╡рд░реНрдЪреБрдЕрд▓ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдХреЗ рдкрд╣рд▓реЗ рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдиреНрдп рд╕реНрддрд░ 1 рддрд╛рд▓рд┐рдХрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХрд┐рд╕реА рднреА рдЕрдкреНрд░рдпреБрдХреНрдд рдкреГрд╖реНрда рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрддреЗ рдкрд░ рдкреЗрдЬ 0x1000
редрдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкрд╣рд▓реЗ рдкреГрд╖реНрда 0x1000
рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдореЗрдореЛрд░реА рдХреА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдкреЗрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдореИрдкрд┐рдВрдЧ рдмрдирд╛рддреЗ рд╣реИрдВ 0x1000
, рдЬреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди create_example_mapping
рдХреЛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░рд╕реНрдкрд░ рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдмреБрд▓рд╛рддрд╛ рд╣реИ mapper
рдФрд░ frame_allocator
ред рдпрд╣ рдкреГрд╖реНрда 0x1000
рдХреЛ рд╡реАрдЬреАрдП рдЯреЗрдХреНрд╕реНрдЯ рдмрдлрд░ рдлреНрд░реЗрдо рдореЗрдВ рдореИрдк рдХрд░рддрд╛ рд╣реИ , рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕реНрдХреНрд░реАрди рдкрд░ рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИредрдлрд┐рд░ рдкреГрд╖реНрда рдХреЛ рдХрдЪреНрдЪреЗ рд╕реВрдЪрдХ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░реЗрдВ рдФрд░ рдСрдлрд╝рд╕реЗрдЯ рдХреЛ рдорд╛рди рд▓рд┐рдЦреЗрдВ 400
ред рд╣рдо рдкреГрд╖реНрда рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдирд╣реАрдВ рд▓рд┐рдЦрддреЗ рдХреНрдпреЛрдВрдХрд┐ рд╡реАрдЬреАрдП рдмрдлрд░ рдХреА рд╢реАрд░реНрд╖ рдкрдВрдХреНрддрд┐ рд╕реАрдзреЗ рд╕реНрдХреНрд░реАрди рд╕реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ println
ред рдорд╛рди рд▓рд┐рдЦреЗрдВ рдЬреЛ 0x_f021_f077_f065_f04e
рд╕реНрдЯреНрд░рд┐рдВрдЧ "рдирдпрд╛!" рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ рдПрдХ рд╕рдлреЗрдж рдкреГрд╖реНрдарднреВрдорд┐ рдкрд░ред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рд▓реЗрдЦ "рд╡реАрдЬреАрдП рдЯреЗрдХреНрд╕реНрдЯ рдореЛрдб" рдореЗрдВ рд╕реАрдЦрд╛ рд╣реИ , рд╡реАрдЬреАрдП рдмрдлрд░ рдХреЛ рд▓рд┐рдЦрдирд╛ рдЕрд╕реНрдерд┐рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ write_volatile
редрдЬрдм рд╣рдо QEMU рдореЗрдВ рдХреЛрдб рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдирд┐рдореНрди рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ:
рдкреЗрдЬ рдкрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рдж 0x1000
, рд╢рд┐рд▓рд╛рд▓реЗрдЦ "рдирдпрд╛!" ред
рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдкреЗрдЬ рдЯреЗрдмрд▓ рдореЗрдВ рдПрдХ рдирдпрд╛ рдореИрдкрд┐рдВрдЧ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдмрдирд╛рдпрд╛ рд╣реИредрдЗрд╕ рдЯрдХрд░рд╛рд╡ рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЯрдХрд░рд╛рд╡ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕реНрддрд░ 1 рдЯреЗрдмрд▓ рдерд╛ 0x1000
ред рдЬрдм рд╣рдо рдХрд┐рд╕реА рдРрд╕реЗ рдкреГрд╖реНрда рдХреЛ рдореИрдк рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрддрд░ 1 рддрд╛рд▓рд┐рдХрд╛ рдЕрднреА рддрдХ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди map_to
рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ EmptyFrameAllocator
рдирдП рдЯреЗрдмрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝реНрд░реЗрдо рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ ред рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдРрд╕рд╛ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╣рдо 0xdeadbeaf000
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдкреГрд╖реНрда рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ 0x1000
:
рдпрджрд┐ рдЗрд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде рдПрдХ рдШрдмрд░рд╛рд╣рдЯ рд╣реЛрддреА рд╣реИ: panicked at 'map_to failed: FrameAllocationFailed', /тАж/result.rs:999:5
рдЙрди рдкреГрд╖реНрдареЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдЕрднреА рддрдХ рдкреГрд╖реНрда рд╕реНрддрд░ 1 рддрд╛рд▓рд┐рдХрд╛ рдирд╣реАрдВ рд╣реИ, рдЖрдкрдХреЛ рд╕рд╣реА рдПрдХ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ FrameAllocator
ред рд▓реЗрдХрд┐рди рдЖрдк рдХреИрд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реЗ рдлреНрд░реЗрдо рдореБрдлреНрдд рд╣реИрдВ рдФрд░ рдХрд┐рддрдиреА рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рдЙрдкрд▓рдмреНрдз рд╣реИ?рдлреНрд░реЗрдо рдЪрдпрди
рдирдП рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рд╣реА рдлреНрд░реЗрдо рд╡рд┐рддрд░рдХ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдЗрдП рд╕рд╛рдорд╛рдиреНрдп рдХрдВрдХрд╛рд▓ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВ:
рдХреНрд╖реЗрддреНрд░ frames
рдХреЛ рдПрдХ рдордирдорд╛рдирд╛ рдлреНрд░реЗрдо рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ alloc
рд╡рд┐рдзрд┐ рдХреЛ рдХреЗрд╡рд▓ рдХреЙрд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ Iterator::next
редрдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо BootInfoFrameAllocator
рдореЗрдореЛрд░реА рдХрд╛рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ memory_map
рдЬреЛ рдмреВрдЯрд▓реЛрдбрд░ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ BootInfo
ред рдЬреИрд╕рд╛ рдХрд┐ рдмреВрдЯ рд╕реВрдЪрдирд╛ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ , рдореЗрдореЛрд░реА рдХрд╛рд░реНрдб BIOS / UEFI рдлрд░реНрдорд╡реЗрдпрд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдмреВрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣реА рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмреВрдЯрд▓реЛрдбрд░ рдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдп рдХрд╣рд╛ рд╣реИредрдПрдХ рдореЗрдореЛрд░реА рдХрд╛рд░реНрдб рдореЗрдВ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реЛрддреА MemoryRegion
рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдХрд╛ рд╢реБрд░реБрдЖрддреА рдкрддрд╛, рд▓рдВрдмрд╛рдИ рдФрд░ рдкреНрд░рдХрд╛рд░ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдкреНрд░рдпреБрдХреНрдд, рдЖрд░рдХреНрд╖рд┐рдд, рдЖрджрд┐) рд╣реЛрддреЗ рд╣реИрдВред рдЕрдиреБрдкрдпреЛрдЧреА рдХреНрд╖реЗрддреНрд░реЛрдВ рд╕реЗ рдлрд╝реНрд░реЗрдо рдмрдирд╛рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдЗрдЯрд░реЗрдЯрд░ рдмрдирд╛рдХрд░, рд╣рдо рдПрдХ рд╡реИрдз рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ BootInfoFrameAllocator
редрдкреНрд░рд╛рд░рдВрднрд┐рдХ BootInfoFrameAllocator
рдХрд╛рд░реНрдп рдПрдХ рдирдП рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ init_frame_allocator
:
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЙрдкрдпреЛрдЧ MemoryMap
рдХрд┐рдП рдЧрдП рднреМрддрд┐рдХ рдлрд╝реНрд░реЗрдореЛрдВ рдХреЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдирдХреНрд╢реЗ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдпреЛрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ :- рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо
iter
рдореЗрдореЛрд░реА рдХрд╛рд░реНрдб рдХреЛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд┐ рдХрд╣рддреЗ рд╣реИрдВ MemoryRegion
ред рддрдм рд╣рдо filter
рдЖрд░рдХреНрд╖рд┐рдд рдпрд╛ рджреБрд░реНрдЧрдо рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд▓реЛрдбрд░ рдЕрдкрдиреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рд╕рднреА рдореИрдкрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдХрд╛рд░реНрдб рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрд░реНрдиреЗрд▓ (рдХреЛрдб, рдбреЗрдЯрд╛ рдпрд╛ рд╕реНрдЯреИрдХ) рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдлрд╝реНрд░реЗрдо рдпрд╛ рдмреВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА InUse
рдпрд╛ рдЗрд╕реА рддрд░рд╣ рд╕реЗ рдЪрд┐рд╣реНрдирд┐рдд рд╣реИрдВ ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдлрд╝реНрд░реЗрдо рдХрд╛ Usable
рдЙрдкрдпреЛрдЧ рдХрд╣реАрдВ рдФрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред
map
range Rust .
- :
into_iter
, 4096- step_by
. 4096 (= 4 ) тАФ , . , . flat_map
map
, Iterator<Item = u64>
Iterator<Item = Iterator<Item = u64>>
.
PhysFrame
, Iterator<Item = PhysFrame>
. BootInfoFrameAllocator
.
рдЕрдм рд╣рдо рдЗрд╕рдХреЗ рдмрдЬрд╛рдп kernel_main
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдлрд╝рдВрдХреНрд╢рди рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ :BootInfoFrameAllocator
EmptyFrameAllocator
рдЗрд╕ рдмрд╛рд░ рдкрддрд╛ рдорд╛рдирдЪрд┐рддреНрд░рдг рд╕рдлрд▓ рд░рд╣рд╛ рдФрд░ рд╣рдо рдлрд┐рд░ рд╕реЗ "рдирдпрд╛!" ред
рджреГрд╢реНрдпреЛрдВ рдХреЗ рдкреАрдЫреЗ, рд╡рд┐рдзрд┐ map_to
рдЕрдиреБрдкрд▓рдмреНрдз рдкреЗрдЬ рдЯреЗрдмрд▓ рдмрдирд╛рддреА рд╣реИ:- рдкреНрд░реЗрд╖рд┐рдд рдПрдХ рд╕реЗ рдЕрдкреНрд░рдпреБрдХреНрдд рдлреНрд░реЗрдо рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
frame_allocator
ред
- рдПрдХ рдирдпрд╛ рдЦрд╛рд▓реА рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реВрдиреНрдп рдлреНрд░реЗрдоред
- рдЗрд╕ рдлрд╝реНрд░реЗрдо рдореЗрдВ рдЙрдЪреНрдЪ рд╕реНрддрд░реАрдп рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рдореИрдк рдХрд░реЗрдВред
- рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЕрдЧрд▓реЗ рд╕реНрддрд░ рдкрд░ рдЬрд╛рдПрдВред
рдпрджреНрдпрдкрд┐ рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдп create_example_mapping
рдХреЗрд╡рд▓ рдирдореВрдирд╛ рдХреЛрдб рд╣реИ, рд╣рдо рдЕрдм рдордирдорд╛рдиреЗ рдкрдиреНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдирдП рдорд╛рдирдЪрд┐рддреНрд░рдг рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕реНрдореГрддрд┐ рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓реЗрдЦреЛрдВ рдореЗрдВ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛редрд╕рд╛рд░рд╛рдВрд╢
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдордиреЗ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рднреМрддрд┐рдХ рдлрд╝реНрд░реЗрдореЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реАрдЦрд╛, рдЬрд┐рд╕рдореЗрдВ рдкрд╣рдЪрд╛рди рдорд╛рдирдЪрд┐рддреНрд░рдг, рдкреВрд░реНрдг рднреМрддрд┐рдХ рд╕реНрдореГрддрд┐ рдореИрдкрд┐рдВрдЧ, рдЕрд╕реНрдерд╛рдпреА рдорд╛рдирдЪрд┐рддреНрд░рдг рдФрд░ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рд╣рдордиреЗ рдкреВрд░реНрдг рднреМрддрд┐рдХ рд╕реНрдореГрддрд┐ рдХреЛ рдПрдХ рд╕рд░рд▓ рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╡рд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛редрд╣рдо рдкреЗрдЬ рдЯреЗрдмрд▓ рддрдХ рдкрд╣реБрдБрдЪ рдХреЗ рдмрд┐рдирд╛ рдХрд░реНрдиреЗрд▓ рд╕реЗ рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рдХреЛ рдореИрдк рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдмреВрдЯрд▓реЛрдбрд░ рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд░реИрдХ bootloader
рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдЧреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдореИрдкрд┐рдВрдЧ рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ &BootInfo
рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░реНрдиреЗрд▓ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рджреЗрддрд╛ рд╣реИ редрд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП, рд╣рдо рдкрд╣рд▓реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЧрдП, рдПрдХ рдЕрдиреБрд╡рд╛рдж рдХрд╛рд░реНрдп рдХрд┐рдпрд╛, рдФрд░ рдлрд┐рд░ MappedPageTable
рдЯреЛрдХрд░рд╛ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛x86_64
ред рд╣рдордиреЗ рдпрд╣ рднреА рд╕реАрдЦрд╛ рдХрд┐ рдкреЗрдЬ рдЯреЗрдмрд▓ рдореЗрдВ рдирдП рдореИрдкрд┐рдВрдЧ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ FrameAllocator
рдмреВрдЯрд▓реЛрдбрд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░реЗрд╖рд┐рдд рдореЗрдореЛрд░реА рдХрд╛рд░реНрдб рдкрд░ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП редрдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ?
рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдЕрдкрдиреЗ рдХрд░реНрдиреЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдвреЗрд░ рд╕реНрдореГрддрд┐ рдХреНрд╖реЗрддреНрд░ рдмрдирд╛рдПрдВрдЧреЗ, рдЬреЛ рд╣рдореЗрдВ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ ред