рдпрд╣ рдЖрд▓реЗрдЦ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдХрд░реНрдиреЗрд▓ рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рдлрд╝реНрд░реЗрдо рддрдХ рдХреИрд╕реЗ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рднреМрддрд┐рдХ рд▓реЛрдЧреЛрдВ рдХреЛ рдЖрднрд╛рд╕реА рдкрддреЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВрдЧреЗред рд╣рдо рдпрд╣ рднреА рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗ рдХрд┐ рдкреЗрдЬ рдЯреЗрдмрд▓ рдореЗрдВ рдирдП рдореИрдкрд┐рдВрдЧ рдХреИрд╕реЗ рдмрдирд╛рдПрдВред
рдпрд╣ рдмреНрд▓реЙрдЧ
GitHub рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛
рд╣реИ ред рдпрджрд┐ рдЖрдкрдХреЗ рдХреЛрдИ рдкреНрд░рд╢реНрди рдпрд╛ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рддреЛ рд╡рд╣рд╛рдВ рд╕рдВрдмрдВрдзрд┐рдд рдЯрд┐рдХрдЯ рдЦреЛрд▓реЗрдВред рд▓реЗрдЦ рдХреЗ рд╕рднреА рд╕реНрд░реЛрдд
рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рд╣реИрдВ ред
рдкрд░рд┐рдЪрдп
рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рд╕реЗ, рд╣рдордиреЗ рдкреЗрдЬрд┐рдВрдЧ рдореЗрдореЛрд░реА рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдФрд░ x86_64 рдкрд░ рдЪрд╛рд░-рд╕реНрддрд░реАрдп рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реАрдЦрд╛ред рд╣рдордиреЗ рдпрд╣ рднреА рдкрд╛рдпрд╛ рдХрд┐ рд▓реЛрдбрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рдорд╛рд░реЗ рдХрд░реНрдиреЗрд▓ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдкрджрд╛рдиреБрдХреНрд░рдо рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрд░реНрдиреЗрд▓ рд╡рд░реНрдЪреБрдЕрд▓ рдкрддреЛрдВ рдкрд░ рдЪрд▓рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рд╕реБрд░рдХреНрд╖рд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ: рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдпрд╛
CR3
рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╡рд╛рд╕реНрддрд╡рд┐рдХ рднреМрддрд┐рдХ рдкрддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ?
рд▓реЗрдЦ рдХреЗ рдкрд╣рд▓реЗ рдЦрдВрдб рдореЗрдВ рд╣рдо рд╕рдорд╕реНрдпрд╛ рдФрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗред рдлрд┐рд░ рд╣рдо рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╡рд░реНрдЪреБрдЕрд▓ рдкрддреЗ рдХреЛ рднреМрддрд┐рдХ рд▓реЛрдЧреЛрдВ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрддрд╛рддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, рдкреЗрдЬ рдЯреЗрдмрд▓ рдореЗрдВ рдирдП рдореИрдкрд┐рдВрдЧ рдмрдирд╛рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЬрд╛рдиреЗрдВ рдФрд░ рдирдИ рдЯреЗрдмрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкреНрд░рдпреБрдХреНрдд рдореЗрдореЛрд░реА рдлреНрд░реЗрдо рдЦреЛрдЬреЗрдВред
рдирд┐рд░реНрднрд░рддрд╛ рдЕрджреНрдпрддрди
рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
x86_64
рд╕рдВрд╕реНрдХрд░рдг 0.4.0 рдпрд╛ рдмрд╛рдж рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ
Cargo.toml
рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ:
[dependencies] x86_64 = "0.4.0" # or later
рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪ
рдХрд░реНрдиреЗрд▓ рд╕реЗ рдкреЗрдЬ рдЯреЗрдмрд▓ рдПрдХреНрд╕реЗрд╕ рдХрд░рдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рдпрд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХреЗ рдЪрд╛рд░ рд╕реНрддрд░реАрдп рддрд╛рд▓рд┐рдХрд╛ рдкрджрд╛рдиреБрдХреНрд░рдо рдкрд░ рдПрдХ рдФрд░ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:
рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЕрдЧрд▓реА рддрд╛рд▓рд┐рдХрд╛ рдХрд╛
рднреМрддрд┐рдХ рдкрддрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреА рд╣реИред рдпрд╣ рдЗрди рдкрддреЛрдВ рдХреЗ рдЕрдиреБрд╡рд╛рдж рд╕реЗ рдмрдЪрддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдВрддрд╣реАрди рдЫреЛрд░реЛрдВ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рд╕реАрдзреЗ рдХрд░реНрдиреЗрд▓ рд╕реЗ рднреМрддрд┐рдХ рдкрддреЛрдВ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдБрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд░реНрдЪреБрдЕрд▓ рдкрддреЛрдВ рдкрд░ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рд╣рдо рдПрдбреНрд░реЗрд╕
4 KiB
, рддреЛ рд╣рдо
рд╡рд░реНрдЪреБрдЕрд▓ рдПрдбреНрд░реЗрд╕
4 KiB
рддрдХ рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВ, рди рдХрд┐ рдЙрд╕
рднреМрддрд┐рдХ рдкрддреЗ рдкрд░, рдЬрд╣рд╛рдВ 4 рд╡реЗрдВ рд╕реНрддрд░ рдХреЗ рдкреЗрдЬреЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред рдпрджрд┐ рд╣рдо
4 KiB
рдХреЗ рднреМрддрд┐рдХ рдкрддреЗ рддрдХ рдкрд╣реБрдВрдЪрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдХреБрдЫ рдЖрднрд╛рд╕реА рдкрддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдлрд╝реНрд░реЗрдореЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрди рдлрд╝реНрд░реЗрдореЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╡рд░реНрдЪреБрдЕрд▓ рдкреЗрдЬреЛрдВ рдХреЛ рдореИрдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕реЗ рдореИрдкрд┐рдВрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╣реИрдВред
1. рдПрдХ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди
рд╕рднреА рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рди рдкреНрд░рджрд░реНрд╢рди рд╣реИ ред
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдлреНрд░реЗрдо рдХреЗ рд╕рдорд╛рди рдкреНрд░рджрд░реНрд╢рди рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рднреМрддрд┐рдХ рдкрддреЗ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдорд╛рдиреНрдп рдЖрднрд╛рд╕реА рдкрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рднреА рд╕реНрддрд░реЛрдВ рдХреЗ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд░рдЬрд┐рд╕реНрдЯрд░ рд╕реАрдЖрд░ 3 рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╡рд░реНрдЪреБрдЕрд▓ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдХреЛ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореБрдлреНрдд рдореЗрдореЛрд░реА рдХреЗ рдмрдбрд╝реЗ рд╕рдиреНрдирд┐рд╣рд┐рдд рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдЦреЛрдЬрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдмрдирд╛рддрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо рдЙрдкрд░реЛрдХреНрдд рдЖрдХреГрддрд┐ рдореЗрдВ 1000 KiB рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ ред рд╣рдо
28 KiB
рдХреНрд╖реЗрддреНрд░ рд╕реЗ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣
1004 KiB
рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореМрдЬреВрдж рдкреГрд╖реНрда рдкрд░ рдЯрд┐рдХреА рд╣реБрдИ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рддрдм рддрдХ рдЖрдЧреЗ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рд╣рдо рдПрдХ рдЙрдкрдпреБрдХреНрдд рдмрдбрд╝реЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ рди рдкрд╛ рд▓реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
1008 KiB
рд╕рд╛рдеред рдЦрдВрдбрд┐рдд рдореЗрдореЛрд░реА рдореЗрдВ рдЙрддрдиреА рд╣реА рд╡рд┐рдЦрдВрдбрди рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирдП рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдЙрди рднреМрддрд┐рдХ рдлрд╝реНрд░реЗрдореЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдкреГрд╖реНрда рдЕрднреА рддрдХ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ 10008 kB
рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдореЛрд░реА рдХрд╛ рдПрдХ рдХреНрд╖реЗрддреНрд░ рдЖрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдкрддрд╛
1008 KiB
ред рдЕрдм рд╣рдо
1000 KiB
рдФрд░
2008 KiB
рдмреАрдЪ рднреМрддрд┐рдХ рдкрддреЗ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рдлреНрд░реЗрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдкрд╣рдЪрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
2. рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк
рдХреЗрд╡рд▓ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ
рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЕрд╕реНрдерд╛рдпреА рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ рдкреНрд░рдердо рд╕реНрддрд░ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдПрдХ рд╕рдорд╛рди рдкреНрд░рджрд░реНрд╢рди рдЖрд╡рд╢реНрдпрдХ рд╣реИ:
рдЗрд╕ рдЖрдВрдХрдбрд╝реЗ рдореЗрдВ, рдПрдХ рд╕реНрддрд░ 1 рддрд╛рд▓рд┐рдХрд╛ рд╡рд░реНрдЪреБрдЕрд▓ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдХреЗ рдкрд╣рд▓реЗ 2 MiB рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддреА рд╣реИред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ CR3 рд░рдЬрд┐рд╕реНрдЯрд░ рд╕реЗ рдкрд╣реБрдВрдЪ 4, 3 рдФрд░ 2 рдХреЗ рд╕реНрддрд░реЛрдВ рдореЗрдВ рд╢реВрдиреНрдп рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реИред рд╕реВрдЪрдХрд╛рдВрдХ
8 рдХреЗ рд╕рд╛рде рд░рд┐рдХреЙрд░реНрдб
32 KiB
рдкрд░ рдЖрднрд╛рд╕реА рдкреГрд╖реНрда рдХреЛ
32 KiB
рдореЗрдВ рдПрдХ рднреМрддрд┐рдХ рдлреНрд░реЗрдо рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╕реНрддрд░ 1 рддрд╛рд▓рд┐рдХрд╛ рдХреА рдкрд╣рдЪрд╛рди рд╣реЛрддреА рд╣реИред рдЖрдХреГрддрд┐ рдореЗрдВ рдпрд╣ рдПрдХ рдХреНрд╖реИрддрд┐рдЬ рддреАрд░ рджреНрд╡рд╛рд░рд╛ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЖрдЗрдбреЗрдВрдЯрд▓реА рдореИрдкреНрдб рд▓реЗрд╡рд▓ 1 рдЯреЗрдмрд▓ рдкрд░ рд▓рд┐рдЦрдХрд░, рд╣рдорд╛рд░рд╛ рдХрд░реНрдиреЗрд▓ 511 рдЯрд╛рдЗрдо рдХрдВрдкреЗрд░рд┐рдЬрди (рдкрд╣рдЪрд╛рди рдореИрдкрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЬрд░реВрд░реА рд░рд┐рдХреЙрд░реНрдб рдорд╛рдЗрдирд╕ 512 рдорд┐рдирдЯ) рддрдХ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдХрд░реНрдиреЗрд▓ рдиреЗ
24 KiB
рдкрд░ рдПрдХ рдлреНрд░реЗрдо рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрддрд░ 1 рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЕрд╢рдХреНрдд рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдорд┐рд▓рд╛рди рдХрд┐рдпрд╛ред рдЗрд╕рдиреЗ рдбреЙрдЯреЗрдб рддреАрд░ рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЧрд┐рдд рдкреГрд╖реНрда 2 рд▓реЗрд╡рд▓ рдЯреЗрдмрд▓ рдХреЗ рднреМрддрд┐рдХ рдлреНрд░реЗрдо рдореЗрдВ
0 KiB
рдкрд░ рд╡рд░реНрдЪреБрдЕрд▓ рдкреЗрдЬ рдХрд╛ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдорд╛рдирдЪрд┐рддреНрд░рдг рдмрдирд╛рдпрд╛ред рдЕрдм рдХрд░реНрдиреЗрд▓
0 KiB
рдкрд░ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдкреЗрдЬ рдкрд░ рд▓рд┐рдЦрдХрд░ рд▓реЗрд╡рд▓ 2 рдЯреЗрдмрд▓ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЕрд╕реНрдерд╛рдпреА рдореИрдкрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдПрдХ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдлреНрд░реЗрдо рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рд┐рдпрд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
- рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╕реНрддрд░ 1 рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдирд┐рдГрд╢реБрд▓реНрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
- рдЗрд╕ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рдЙрд╕ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рднреМрддрд┐рдХ рдлрд╝реНрд░реЗрдо рдореЗрдВ рдореИрдк рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рд╣рдо рдПрдХреНрд╕реЗрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
- рдкреНрд░рд╡реЗрд╢ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рдЖрднрд╛рд╕реА рдкреГрд╖реНрда рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕ рдлреНрд░реЗрдо рддрдХ рдкрд╣реБрдВрдЪреЗрдВред
- рдЕрдкреНрд░рдпреБрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рд░рд┐рдХреЙрд░реНрдб рд╕реЗрдЯ, рдЬрд┐рд╕рд╕реЗ рдЕрд╕реНрдерд╛рдпреА рдорд╛рдирдЪрд┐рддреНрд░рдг рдХреЛ рд╣рдЯрд╛рдиреЗред
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдЖрднрд╛рд╕реА рдкрддрд╛ рд╕реНрдерд╛рди рд╕рд╛рдл тАЛтАЛрд░рд╣рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдорд╛рди 512 рдЖрднрд╛рд╕реА рдкреГрд╖реНрда рд▓рдЧрд╛рддрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдиреБрдХрд╕рд╛рди рдХреБрдЫ рдмреЛрдЭрд┐рд▓ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рдПрдХ рдирдИ рддреБрд▓рдирд╛ рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдХрдИ рд╕реНрддрд░реЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЕрд░реНрдерд╛рдд, рд╣рдореЗрдВ рдХрдИ рдмрд╛рд░ рд╡рд░реНрдгрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
3. рдпрджреНрдпрдкрд┐ рдЙрдкрд░реЛрдХреНрдд рджреЛрдиреЛрдВ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ рддреАрд╕рд░реА рд╡рд┐рдзрд┐ рд╣реИ:
рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ ред рдпрд╣ рджреЛрдиреЛрдВ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЗ рдлрд╛рдпрджреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ: рдпрд╣ рд▓рдЧрд╛рддрд╛рд░ рдЕрд╕реНрдерд╛рдпреА рддреБрд▓рдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рднреА рдлрд╝реНрд░реЗрдореЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЖрднрд╛рд╕реА рдкрддрд╛ рд╕реНрдерд╛рди рдХреЗ рд╡рд┐рдЦрдВрдбрди рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрдареЛрдВ рдХреЛ рд╕рд╛рдЗрдб рд╕реЗ рдореИрдк рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡рд╣ рд╡рд┐рдзрд┐ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкреГрд╖реНрда рд╕рд╛рд░рдгреА
рд╡рд┐рдЪрд╛рд░ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдЪреМрдереЗ рд╕реНрддрд░ рдХреА рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдХреБрдЫ рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд░реНрдЪреБрдЕрд▓ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдЖрд░рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рднреА рд╡рд░реНрддрдорд╛рди рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреЗ рдЯреЗрдмрд▓ рдлреНрд░реЗрдо рдХреЛ рдЗрд╕ рд╕реНрдкреЗрд╕ рдореЗрдВ рдореИрдк рдХрд░рддреЗ рд╣реИрдВред
рдЖрдЗрдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ 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-рдмрд┐рдЯ рдЗрдВрдбреЗрдХреНрд╕ рдЯреЗрдмрд▓ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рд┐рддреНрд░ рдЪрд╛рд░ рдмрд┐рдЯреНрд╕ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдЗрд╕ рд╕рднреА рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдмрд╛рдж, рд╣рдо рдЖрдЦрд┐рд░рдХрд╛рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЖрд╕рд╛рдиреА рд╕реЗ, рд▓реЛрдбрд░ рди рдХреЗрд╡рд▓ рдкреЗрдЬ рдЯреЗрдмрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕реНрддрд░ 4 рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЕрдВрддрд┐рдо рд░рд┐рдХреЙрд░реНрдб рдореЗрдВ рднреА рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкреНрд░рджрд░реНрд╢рди рд╣реЛрддрд╛ рд╣реИред рд▓реЛрдбрд░ рдиреЗ рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдпрдерд╛ рдЪрд┐рдХрди рдпрд╛ рдЕрдВрдбреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЧреА: рд╣рдореЗрдВ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдирдХреНрд╢рд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрддрд░ 4 рддрд╛рд▓рд┐рдХрд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдЗрд╕ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдореИрдкрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╣рд╛рд░реНрдб-рдХреЛрдбрд┐рдд рдкрддреЗ
0xffff_ffff_ffff_f000
рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрддрд░ 4 рддрд╛рд▓рд┐рдХрд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдерд╛ред рдпрджрд┐ рд╣рдо рдЗрд╕ рдкрддреЗ рдХреЛ рдСрдХреНрдЯрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдКрдкрд░ рджреА рдЧрдИ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдпрд╣
RRR
=
0o777
,
AAAA
=
0
рдФрд░ рд╕рд╛рдЗрди
1
рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдмрд┐рдЯреНрд╕ рдХреЗ рд╕рд╛рде рд╕реНрддрд░ 4 рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХреА рд╕рдВрд░рдЪрдирд╛ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ:
рд╕рдВрд░рдЪрдирд╛: 0o_SSSSSS_RRR_RRR_RRR_RRR_AAAA
рдкрддрд╛: 0o_177777_777_777_777_777_0000
рдкреБрдирд░рд╛рд╡рд░реНрддреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдЬреНрдЮрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЕрдм рд╣рдо рд╕рднреА рд╕рдХреНрд░рд┐рдп рддрд╛рд▓рд┐рдХрд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрднрд╛рд╕реА рдкрддреЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдкреНрд░рд╕рд╛рд░рдг рд╕рдорд╛рд░реЛрд╣ рдмрдирд╛рддреЗ рд╣реИрдВред
рдкрддрд╛ рдЕрдиреБрд╡рд╛рдж
рдкрд╣рд▓реЗ рдЪрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдПрдВ рдЬреЛ рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдПрдбреНрд░реЗрд╕ рдХреЛ рдПрдХ рднреМрддрд┐рдХ рдкрддреЗ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдкреЗрдЬ рдЯреЗрдмрд▓ рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рд╕реЗ рдЧреБрдЬрд░ рд░рд╣рд╛ рд╣реИ:
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╕реВрдЪрдХрд╛рдВрдХ (511 =
0o777
) рдФрд░ рд╕рдВрдХреЗрдд рд╡рд┐рд╕реНрддрд╛рд░ рдмрд┐рдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдЪрд░ рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВ (рдкреНрд░рддреНрдпреЗрдХ 1 рд╣реИ)ред рддрдм рд╣рдо рдкреГрд╖реНрда рд╕рд╛рд░рдгреА рдХреЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рдФрд░ рдмрд┐рдЯрд╡рд╛рдЗрдЬ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдСрдлрд╕реЗрдЯ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЪрд┐рддреНрд░рдг рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рдЕрдЧрд▓рд╛ рдЪрд░рдг рдЪрд╛рд░ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдЖрднрд╛рд╕реА рдкрддреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдкрд┐рдЫрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдЧрд▓рд╛, рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рд╣рдо рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкрддреЗ рдХреЛ
PageTable
рд▓рд┐рдВрдХ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпреЗ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдСрдкрд░реЗрд╢рди рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпреЗ рдкрддреЗ рд╡реИрдз рд╣реИрдВред
рдкрддреЗ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрдВрдбреЗрдХреНрд╕рд┐рдВрдЧ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд░рд┐рдХреЙрд░реНрдб 4 рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕реНрддрд░ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдпрд╣ рд░рд┐рдХреЙрд░реНрдб рд╢реВрдиреНрдп рд╣реИ, рддреЛ рдЗрд╕ рд╕реНрддрд░ 4 рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реНрддрд░ 3 рддрд╛рд▓рд┐рдХрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐
addr
рдХрд┐рд╕реА рднреА рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рдореЗрдВ рдореИрдк рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рд╣рдо
None
рд▓реМрдЯрд╛рддреЗред рдЕрдиреНрдпрдерд╛, рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рд╕реНрддрд░ 3 рддрд╛рд▓рд┐рдХрд╛ рдореМрдЬреВрдж рд╣реИред рдлрд┐рд░ рд╣рдо рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдкрд┐рдЫрд▓реЗ рд╕реНрддрд░ рдкрд░ рд╣реИред
рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреЗ рддреАрди рдкреГрд╖реНрдареЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЕрдВрдд рдореЗрдВ рд╕реНрддрд░ 1 рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдореЗрдВ рднреМрддрд┐рдХ рдлреНрд░реЗрдо рдмрддрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдкрддрд╛ рдореИрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдВрддрд┐рдо рдЪрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдкреГрд╖реНрда рдСрдлрд╕реЗрдЯ рдХреЛ рдЗрд╕рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ - рдФрд░ рдкрддрд╛ рд╡рд╛рдкрд╕ рдХрд░реЗрдВред
рдЕрдЧрд░ рд╣рдореЗрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рдкрддрд╛ рдореИрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рд╣рдо рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреЗ рдкреГрд╖реНрдареЛрдВ рдХреЛ рджреЗрдЦреЗ рдмрд┐рдирд╛ рд╕реАрдзреЗ рд╕реНрддрд░ 1 рддрд╛рд▓рд┐рдХрд╛ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЬрдм рд╕реЗ рд╣рдо рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рдкрд╣рд▓реЗ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рд╕реНрддрд░ 1 рддрд╛рд▓рд┐рдХрд╛ рдореМрдЬреВрдж рд╣реИ, рдЕрдиреНрдпрдерд╛ рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдп рдмреЗрдЬреЛрдбрд╝ рдкрддреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреГрд╖реНрда рдЕрдиреБрдкрд▓рдмреНрдз рддреНрд░реБрдЯрд┐ рд╡рд╛рдкрд╕ рдХрд░реЗрдЧрд╛ред
рдХреЛрд╢рд┐рд╢
рдЖрдЗрдП рд╣рдорд╛рд░реЗ
_start
рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╡рд░реНрдЪреБрдЕрд▓ рдкрддреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╡рд╛рдж рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрддреЗ рд╣реИрдВ:
рдЬреИрд╕рд╛ рдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛, рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ 0xb8000 рдХрд╛ рдкрддрд╛ рдЙрд╕реА рднреМрддрд┐рдХ рдкрддреЗ рдкрд░ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИред рдХреЛрдб рдкреГрд╖реНрда рдФрд░ рд╕реНрдЯреИрдХ рдкреГрд╖реНрда рдХреБрдЫ рдордирдорд╛рдиреЗ рднреМрддрд┐рдХ рдкрддреЗ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд▓реЛрдбрд░ рдиреЗ рд╣рдорд╛рд░реА рдХрд░реНрдиреЗрд▓ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рдирдЪрд┐рддреНрд░рдг рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ред
RecursivePageTable
x86_64 рдПрдХ
RecursivePageTable
рдкреНрд░рдХрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рд╕рд╛рд░ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЖрдк
translate_addr
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЕрдзрд┐рдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
RecursivePageTable
рдкреНрд░рдХрд╛рд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреЗрдЬ рдЯреЗрдмрд▓ рдХреЗ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреНрд░реЙрд▓ рдХреЛ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП
translate_addr
рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ
unsafe
рдХреЛрдб рдХреА рдЕрдм рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдкрд╛рд░рд┐рдд
level_4_table_addr
рдХреА рд╢реБрджреНрдзрддрд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рдХреЗ рд▓рд┐рдП
level_4_table_addr
рдлрд╝рдВрдХреНрд╢рди рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред
рд╣рдорд╛рд░реЗ
_start
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреБрди: рд╕рд╛рдЗрди рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
рдЕрдм,
LEVEL_4_TABLE_ADDR
рдХреЛ
LEVEL_4_TABLE_ADDR
рдореЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рдФрд░ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХрдЪреНрдЪреЗ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреЗрдЬ рдЯреЗрдмрд▓ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо
RecursivePageTable
рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрджрд░реНрдн рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдЕрдореВрд░реНрдд рдФрд░ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдХрд╛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╢рдмреНрджрд╛рд░реНрде рд╣реИред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЧрд▓рддреА рд╕реЗ рд╕рд╛рдЭрд╛ рдкрд╣реБрдВрдЪ рдореЗрдВ рдкреЗрдЬ рдЯреЗрдмрд▓ рдХреЛ рдмрджрд▓ рдирд╣реАрдВ рд╕рдХрддреЗ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП
RecursivePageTable
рдХреЗ рдЕрдирдиреНрдп рдХрдмреНрдЬреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрд┐рдд рдореВрд▓ рдЕрдиреБрд╡рд╛рдж рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред
рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛рдирд╛
memory::init
рдПрдХ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХрд╛рд░реНрдп рд╣реИ: рдЗрд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреНрд▓реЙрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ unsafe
, рдХреНрдпреЛрдВрдХрд┐ рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛ рдпрд╣ рдЧрд╛рд░рдВрдЯреА рджреЗрдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреБрдЫ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрд╡рд╢реНрдпрдХрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░реЗрд╖рд┐рдд рдкрддрд╛ рдареАрдХ рд╕реЗ рд╕реНрддрд░ 4 рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рднреМрддрд┐рдХ рдлреНрд░реЗрдо рдкрд░ рдореИрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреВрд░реЗ рд╢рд░реАрд░рдХреЛ рдмреНрд▓реЙрдХ рдореЗрдВ unsafe
рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рдмреНрд▓реЙрдХ рдмрдирд╛рдП рдмрд┐рдирд╛ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдСрдкрд░реЗрд╢рди рдХрд┐рдП рдЬрд╛ рд╕рдХреЗрдВ unsafe
ред рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рдбреЗрд░реЗрдлрд╝рд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдмреНрд▓реЙрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ level_4_table_ptr
: pub unsafe fn init(level_4_table_addr: usize) -> RecursivePageTable<'static> { let level_4_table_ptr = level_4_table_addr as *mut PageTable; let level_4_table = &mut *level_4_table_ptr;
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рддреБрд░рдВрдд рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реЗ рд╣рд┐рд╕реНрд╕реЗ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рджреЗрдЦреЗ рдмрд┐рдирд╛ ,RecursivePageTable::new
рд╣рдо рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддреЗ рдХрд┐ рдпрд╣ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЗрд╕рд▓рд┐рдП рдЧрд▓рддреА рд╕реЗ рдХреБрдЫ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛрдб рдЫреЛрдбрд╝рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИредрдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:
рдЕрдм unsafe
рдбреЗрд░реЗрдлреЗрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдмреНрд▓реЙрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╣реИ level_4_table_ptr
, рдФрд░ рд╣рдо рддреБрд░рдВрдд рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпреЗ рдХреЗрд╡рд▓ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдСрдкрд░реЗрд╢рди рд╣реИрдВред рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЗрд╕ рдЕрд╕рдлрд▓ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП RFC рдЦреБрд▓рд╛ рд╣реИредрдПрдХ рдирдИ рдореИрдкрд┐рдВрдЧ рдмрдирд╛рдПрдВ
рдЬрдм рд╣рдо рдкреЗрдЬ рдЯреЗрдмрд▓ рдкрдврд╝рддреЗ рд╣реИрдВ рдФрд░ рд░реВрдкрд╛рдВрддрд░рдг рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЕрдЧрд▓рд╛ рдЪрд░рдг рдкреЗрдЬ рдЯреЗрдмрд▓ рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдПрдХ рдирдпрд╛ рдореИрдкрд┐рдВрдЧ рдмрдирд╛рдирд╛ рд╣реЛрддрд╛ рд╣реИредрдЗрд╕ рдСрдкрд░реЗрд╢рди рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдЙрд╕ рдЖрднрд╛рд╕реА рдкреГрд╖реНрда рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╕рд░рд▓рддрдо рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЗрд╕ рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 1 рдкреГрд╖реНрдареЛрдВ рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдореМрдЬреВрдж рд╣реИ, рдФрд░ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХрд░рдиреА рд╣реИред рд╕рдмрд╕реЗ рдХрдард┐рди рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреГрд╖реНрда рд╕реНрдореГрддрд┐ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╕реНрддрд░ 3 рдЕрднреА рддрдХ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рд╕реНрддрд░ 3, рд╕реНрддрд░ 2 рдФрд░ рд╕реНрддрд░ 1 рдХреА рдирдИ рддрд╛рд▓рд┐рдХрд╛рдПрдВ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИредрдЖрдЗрдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдорд╛рдорд▓реЗ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ рдЬрдм рдЖрдкрдХреЛ рдирдИ рддрд╛рд▓рд┐рдХрд╛рдПрдБ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛред рд▓реЛрдбрд░ рдХреЛ рдЖрднрд╛рд╕реА рдкрддрд╛ рд╕реНрдерд╛рди рдХреЗ рдкрд╣рд▓реЗ рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдиреНрдп рд╕реНрддрд░ 1 рддрд╛рд▓рд┐рдХрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕ рд╕реНрдореГрддрд┐ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХрд┐рд╕реА рднреА рдЕрдкреНрд░рдпреБрдХреНрдд рдкреГрд╖реНрда рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрддреЗ рдкрд░ рдкреГрд╖реНрда 0x1000
ред рд╣рдо рд╡рд╛рдВрдЫрд┐рдд рдлреНрд░реЗрдо рдХреЗ рд░реВрдк рдореЗрдВ 0xb8000
рд╡реАрдЬреАрдП рдЯреЗрдХреНрд╕реНрдЯ рдмрдлрд░ рдХреЗ рдлреНрд░реЗрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ ред рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рд╣рдорд╛рд░рд╛ рдкрддрд╛ рдЕрдиреБрд╡рд╛рдж рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИредрд╣рдо рдЗрд╕реЗ create_maping
рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдХ рдирдП рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ memory
:
рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдкрд░рд╕реНрдкрд░ рд╕рдВрджрд░реНрдн рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ RecursivePageTable
(рдпрд╣ рдЗрд╕реЗ рдмрджрд▓ рджреЗрдЧрд╛) рдФрд░ FrameAllocator
, рдЬрд┐рд╕реЗ рдиреАрдЪреЗ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдлрд┐рд░ рдпрд╣ рдкрддреЗ рдкрд░ рднреМрддрд┐рдХ рдлреНрд░реЗрдо рдХреЗ рд╕рд╛рде рдкреГрд╖реНрда рдкрд░ рдирдХреНрд╢рд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП map_to
рдЯреНрд░реЗ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ ред рдлрд╝рдВрдХреНрд╢рди рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдорд╛рдиреНрдп рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдореЗрдореЛрд░реА рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рддрд░реНрдХреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдФрд░ , рдлрд╝рдВрдХреНрд╢рди рджреЛ рдФрд░ рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИред рддреАрд╕рд░рд╛ рддрд░реНрдХ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдЭрдВрдбреЗ рдХрд╛ рд╕реЗрдЯ рд╣реИред рд╣рдо рд╕рднреА рд╡реИрдз рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдзреНрд╡рдЬ рдФрд░ рд▓реЗрдЦрди рдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдзреНрд╡рдЬ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЪреМрдерд╛ рддрд░реНрдХ рдХреБрдЫ рд╕рдВрд░рдЪрдирд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ ред рдпрд╣ рддрд░реНрдХ рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИредMapper
0x1000
0xb8000
page
frame
map_to
PRESENT
WRITABLE
FrameAllocator
map_to
рдХреНрдпреЛрдВрдХрд┐ рдирдП рдкреЗрдЬ рдЯреЗрдмрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкреНрд░рдпреБрдХреНрдд рдлреНрд░реЗрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рддрд░реНрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ Size4KiB
рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ, Page
рдФрд░ PhysFrame
рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд▓рд┐рдП PageSize
, рдорд╛рдирдХ 4 KiB рдкреГрд╖реНрдареЛрдВ рдХреЗ рд╕рд╛рде рдФрд░ рднрд╛рд░реА рдкреГрд╖реНрдареЛрдВ 2 MiB / 1 GiB рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛редрдлрд╝рдВрдХреНрд╢рди map_to
рд╡рд┐рдлрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИ Result
ред рдЪреВрдВрдХрд┐ рдпрд╣ рдХреЛрдб рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рдо рдмрд╕ expect
рддреНрд░реБрдЯрд┐ рд╣реЛрдиреЗ рдкрд░ рдШрдмрд░рд╛рд╣рдЯ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ ред рд╕рдлрд▓ рд╣реЛрдиреЗ рдкрд░, рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдкреНрд░рдХрд╛рд░ рджреЗрддрд╛ рд╣реИ MapperFlush
рдЬреЛ рд╕рд╛рд╣рдЪрд░реНрдп рдЕрдиреБрд╡рд╛рдж рдмрдлрд░ (TLB) рд╡рд┐рдзрд┐ рд╕реЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдорд┐рд▓рд╛рди рдХрд┐рдП рдЧрдП рдкреГрд╖реНрда рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ flush
ред рдЬреИрд╕рд╛Result
, #[must_use]
рдпрджрд┐ рд╣рдо рдЧрд▓рддреА рд╕реЗ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ рдЯрд╛рдЗрдк рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИредрдЪреВрдВрдХрд┐ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдкрддреЗ 0x1000
рдХреЛ рдирдП рдкреЗрдЬ рдЯреЗрдмрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ FrameAllocator
рд╣рдореЗрд╢рд╛ рд╡рд╛рдкрд╕ рдЖ рд╕рдХрддрд╛ рд╣реИ None
ред рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдмрдирд╛рдПрдВ EmptyFrameAllocator
:
(рдпрджрд┐ рддреНрд░реБрдЯрд┐ 'рд╡рд┐рдзрд┐ allocate_frame
рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рд╕рджрд╕реНрдп рдирд╣реАрдВ рд╣реИ FrameAllocator
' рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ , рддреЛ рдЖрдкрдХреЛ x86_64
рд╕рдВрд╕реНрдХрд░рдг 0.4.0 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ред)рдЕрдм рд╣рдо рдирдП рдЕрдиреБрд╡рд╛рдж рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдкрддреЗ рдкрд░ рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдирдЪрд┐рддреНрд░рдг рдмрдирд╛рддреЗ рд╣реИрдВ , рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░рд╕реНрдкрд░ рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде 0x1000
рдлрд╝рдВрдХреНрд╢рди create_example_mapping
рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ RecursivePageTable
ред рдпрд╣ рдкреГрд╖реНрда 0x1000
рдХреЛ рд╡реАрдЬреАрдП рдЯреЗрдХреНрд╕реНрдЯ рдмрдлрд░ рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕реНрдХреНрд░реАрди рдкрд░ рдХреБрдЫ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВрдЧреЗредрдлрд┐рд░ рд╣рдо рдЗрд╕ рдкреГрд╖реНрда рдореЗрдВ рдПрдХ рдореВрд▓реНрдп рд▓рд┐рдЦрддреЗ рд╣реИрдВ 0xf021f077f065f04e
, рдЬреЛ "рдирдИ!" рдПрдХ рд╕рдлреЗрдж рдкреГрд╖реНрдарднреВрдорд┐ рдкрд░ред рдмрд╕ рдЗрд╕ рдорд╛рди рдХреЛ рддреБрд░рдВрдд рдкреГрд╖реНрда рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ 0x1000
, рдХреНрдпреЛрдВрдХрд┐ рд╢реАрд░реНрд╖ рдкрдВрдХреНрддрд┐ рд╕реНрдХреНрд░реАрди рд╕реЗ рдЖрдЧреЗ рдмрдврд╝реЗрдЧреА println
, рдФрд░ рдЗрд╕реЗ рдПрдХ рдСрдлрд╕реЗрдЯ рдкрд░ рд▓рд┐рдЦреЗрдВ 0x900
рдЬреЛ рд▓рдЧрднрдЧ рд╕реНрдХреНрд░реАрди рдХреЗ рдордзреНрдп рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рд▓реЗрдЦ "рд╡реАрдЬреАрдП рдЯреЗрдХреНрд╕реНрдЯ рдореЛрдб" рд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ , рд╡реАрдЬреАрдП рдмрдлрд░ рдХреЛ рд▓рд┐рдЦрдирд╛ рдЕрд╕реНрдерд┐рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ write_volatile
редрдЬрдм рд╣рдо рдЗрд╕реЗ QEMU рдореЗрдВ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ:рд╕реНрдХреНрд░реАрди рдкрд░ рд╢рд┐рд▓рд╛рд▓реЗрдЦредрдХреЛрдб рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдкреГрд╖реНрда рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕реНрддрд░ 1 рддрд╛рд▓рд┐рдХрд╛ рдереА 0x1000
ред рдпрджрд┐ рд╣рдо рдРрд╕реЗ рдкреГрд╖реНрда рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдРрд╕реА рддрд╛рд▓рд┐рдХрд╛ рдЕрднреА рддрдХ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди map_to
рдПрдХ рддреНрд░реБрдЯрд┐ рд▓реМрдЯрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдирдП рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝реНрд░реЗрдореЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛ EmptyFrameAllocator
ред рдпрджрд┐ рд╣рдо 0xdeadbeaf000
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдкреГрд╖реНрда рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕реЗ рджреЗрдЦреЗрдВрдЧреЗ 0x1000
:
рдкреНрд░рд╛рд░рдВрдн рдХрд░рддреЗ рд╕рдордп, рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде рдПрдХ рдШрдмрд░рд╛рд╣рдЯ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ: 'map_to рдореЗрдВ рд╡рд┐рдлрд▓: рдлрд╝реНрд░реЗрдордЕрд▓реЛрдХреЗрд╢рди рдлрд╝реЗрд▓реНрдб', /.../result.rs:999pes
рдЙрди рдкреГрд╖реНрдареЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдЕрднреА рддрдХ рдкреГрд╖реНрда рд╕реНрддрд░ 1 рддрд╛рд▓рд┐рдХрд╛ рдирд╣реАрдВ рд╣реИ, рдЖрдкрдХреЛ рд╕рд╣реА рдПрдХ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ FrameAllocator
ред рд▓реЗрдХрд┐рди рдЖрдк рдХреИрд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реЗ рдлреНрд░реЗрдо рдореБрдлреНрдд рд╣реИрдВ рдФрд░ рдХрд┐рддрдиреА рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рдЙрдкрд▓рдмреНрдз рд╣реИ?рдмреВрдЯ рдЬрд╛рдирдХрд╛рд░реА
рд╡рд┐рднрд┐рдиреНрди рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рд╣реЛрддреА рд╣реИ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдЬреИрд╕реЗ VGA рднрд┐рдиреНрди рдЙрдкрдХрд░рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЖрд░рдХреНрд╖рд┐рдд рд╣реЛрддреА рд╣реИрдВред рдХреЗрд╡рд▓ BIOS рдпрд╛ рдпреВрдИрдПрдлрдЖрдИ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХреМрди рд╕реЗ рдЖрд░рдХреНрд╖рд┐рдд рд╣реИрдВред рджреЛрдиреЛрдВ рдлрд░реНрдорд╡реЗрдпрд░ рдорд╛рдирдХ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рдХрд╛рд░реНрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣реА рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдмреВрдЯрд▓реЛрдбрд░ рдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА (рдФрд░ рдЕрдиреНрдп) BIOS рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рд╣реИредрдУрдПрд╕ рдХреЗ рдХрд░реНрдиреЗрд▓ рдХреЛ рдЬрд╛рдирдХрд╛рд░реА рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝рдВрдХреНрд╢рди _start
рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЛрдбрд░ рдмреВрдЯ рдХреА рд╕реВрдЪрдирд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд▓рд┐рдВрдХ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рддрд░реНрдХ рдХреЛ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
рд╕рдВрд░рдЪрдирд╛ рдХреЛ BootInfo
рдЕрднреА рднреА рдЕрдВрддрд┐рдо рд░реВрдк рджрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмреВрд╕реНрдЯ рд▓реЛрдбрд░ рдХреЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддреЗ рд╕рдордп рдХреНрд░реИрд╢ рд╣реЛрдиреЗ рдкрд░ рдЖрд╢реНрдЪрд░реНрдп рди рдХрд░реЗрдВ рдЬреЛ рдХрд┐ рд╕реЗрдорд░ рдХреЗ рдЕрдиреБрдХреВрд▓ рдирд╣реАрдВ рд╣реИрдВ ред рдЙрдирдХреЗ рдкрд╛рд╕ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рддреАрди рдХреНрд╖реЗрддреНрд░ рд╣реИрдВ p4_table_addr
, memory_map
рдФрд░ package
:- рдлрд╝реАрд▓реНрдб
p4_table_addr
рдореЗрдВ рд╕реНрддрд░ 4 рдкреГрд╖реНрдареЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╡рд░реНрдЪреБрдЕрд▓ рдкрддрд╛ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдкрддреЗ рдХреЛ рдореБрд╢реНрдХрд┐рд▓ рд╕реЗ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ 0o_177777_777_777_777_777_0000
ред
- рдХреНрд╖реЗрддреНрд░
memory_map
рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд░реБрдЪрд┐ рдХрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рд╕рднреА рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░реЛрдВ рдФрд░ рдЙрдирдХреЗ рдкреНрд░рдХрд╛рд░ (рдЕрдкреНрд░рдпреБрдХреНрдд, рдЖрд░рдХреНрд╖рд┐рдд рдпрд╛ рдЕрдиреНрдп) рдХреА рдПрдХ рд╕реВрдЪреА рд╢рд╛рдорд┐рд▓ рд╣реИред
- рдлрд╝реАрд▓реНрдб
package
рд▓реЛрдбрд░ рдХреЗ рд╕рд╛рде рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдлрд╝рдВрдХреНрд╢рди рд╣реИред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдЕрднреА рдХреЗ рд▓рд┐рдП рдЕрдирджреЗрдЦрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
memory_map
рд╕рд╣реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝реАрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ FrameAllocator
, рд╣рдо рд╕рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рддрд░реНрдХ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ boot_info
редрдореИрдХреНрд░реЛ entry_point
рдЪреВрдВрдХрд┐ рдЗрд╕реЗ _start
рдмрд╛рд╣рд░реА рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рддрд░реНрдХ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЬрдиреНрдо рдирд╣реАрдВ рджреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рджреБрд░реНрдШрдЯрдирд╛ рдпрд╛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд░рдирдЯрд╛рдЗрдо рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреЗ рд╣реИрдВредрд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, bootloader
рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ рд░рд╕реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЛрдХрд░рд╛, entry_point
рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдореИрдХреНрд░реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ ред рд╣рдо рдЗрд╕ рдореИрдХреНрд░реЛ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдХрд╛рд░реНрдп рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдм рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ extern "C"
рдпрд╛ no_mangle
, рдЪреВрдВрдХрд┐ рдореИрдХреНрд░реЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдВрджреБ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ _start
ред рдлрд╝рдВрдХреНрд╢рди kernel_main
рдЕрдм рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд░рд╕реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдмрди рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдордирдорд╛рдирд╛ рдирд╛рдо рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддрд╛рдХрд┐ рдПрдХ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рдЖрдк рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рддрд░реНрдХ рдЬреЛрдбрд╝рдХрд░ рдпрд╛ рдЙрд╕рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрджрд▓рдХрд░редрдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЕрдм рд╣рдо рдПрдХ memory::init
рд╣рд╛рд░реНрдб-рдХреЛрдбреЗрдб рдкрддреЗ рдкрд░ рднреЗрдЬ рд░рд╣реЗ рд╣реИрдВ , рд▓реЗрдХрд┐рди boot_info.p4_table_addr
ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХреЛрдб рдХрд╛рдо рдХрд░реЗрдЧрд╛ рднрд▓реЗ рд╣реА рдмреВрдЯрд▓реЛрдбрд░ рдХрд╛ рднрд╡рд┐рд╖реНрдп рд╕рдВрд╕реНрдХрд░рдг рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрда рд╕реНрддрд░ 4 рддрд╛рд▓рд┐рдХрд╛ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдФрд░ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИредрдлреНрд░реЗрдо рдЪрдпрди
рдЕрдм, BIOS рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рдХрд╛рд░реНрдб рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ, рддрд╛рдХрд┐ рдЖрдк рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдлреНрд░реЗрдо рд╡рд┐рддрд░рдХ рдмрдирд╛ рд╕рдХреЗрдВред рдЖрдЗрдП рд╕рд╛рдорд╛рдиреНрдп рдХрдВрдХрд╛рд▓ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВ:
рдХреНрд╖реЗрддреНрд░ рдХреЛ frames
рдПрдХ рдордирдорд╛рдирд╛ рдлреНрд░реЗрдо рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдпрд╣ рдЖрдкрдХреЛ Iteratoralloc
рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ :: рдЕрдЧрд▓реА рд╡рд┐рдзрд┐ редрдкреНрд░рд╛рд░рдВрднрд┐рдХ BootInfoFrameAllocator
рдХрд╛рд░реНрдп рдПрдХ рдирдП рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ init_frame_allocator
:
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди, рдПрдХ рдХреЙрдореНрдмрд┐рдиреЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдореВрд▓ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рдорд╛рдирдЪрд┐рддреНрд░ рдХреЛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рднреМрддрд┐рдХ рдлрд╝реНрд░реЗрдореЛрдВ рдХреЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ:iter
MemoryRegion
. filter
, . , , (, ) , InUse
. , , - .
map
range Rust .
- рддреАрд╕рд░рд╛ рдЪрд░рдг рд╕рдмрд╕реЗ рдХрдард┐рди рд╣реИ: рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд╢реНрд░реЗрдгреА рдХреЛ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
into_iter
рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрдд рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВ , рдФрд░ рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ 4096 рд╡реЗрдВ рдкрддреЗ рдХреЗ рд╕рд╛рде рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ step_by
ред рдЪреВрдВрдХрд┐ рдкреГрд╖реНрда рдХрд╛ рдЖрдХрд╛рд░ 4096 рдмрд╛рдЗрдЯреНрд╕ (4 KiB) рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдХреА рд╢реБрд░реБрдЖрдд рдХрд╛ рдкрддрд╛ рдорд┐рд▓рддрд╛ рд╣реИред рд▓реЛрдбрд░ рдкреГрд╖реНрда рд╕рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рд╕рдВрд░реЗрдЦрдг рдпрд╛ рдЧреЛрд▓рд╛рдИ рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдХреЗ map
рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд flat_map
, рд╣рдо Iterator<Item = u64>
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдорд┐рд▓рддрд╛ рд╣реИ Iterator<Item = Iterator<Item = u64>>
ред
- рдЕрдВрддрд┐рдо рдЪрд░рдг рдореЗрдВ, рд╣рдо
PhysFrame
рдЖрд╡рд╢реНрдпрдХ рдкрддреЗ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╢реБрд░реБрдЖрддреА рдкрддреЗ рдХреЛ рдЯрд╛рдЗрдк рдореЗрдВ рдмрджрд▓ рджреЗрдВрдЧреЗ Iterator<Item = PhysFrame>
ред рдлрд┐рд░ рдирдпрд╛ рдмрдирд╛рдиреЗ рдФрд░ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ BootInfoFrameAllocator
ред
рдЕрдм рд╣рдо рдЕрдкрдиреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ kernel_main
рддрд╛рдХрд┐ рд╡рд╣ рдЗрд╕рдХреЗ BootInfoFrameAllocator
рдмрдЬрд╛рдп рдЙрджрд╛рд╣рд░рдг рдХреЛ рдкрд╛рд░ рдХрд░реЗ EmptyFrameAllocator
:
рдЕрдм рдкрддрд╛ рдЕрдиреБрд╡рд╛рдж рд╕рдлрд▓ рд╣реИ - рдФрд░ рд╣рдо рдлрд┐рд░ рд╕реЗ рд╕реНрдХреНрд░реАрди рдкрд░ "рдирдпрд╛" рдмреНрд▓реИрдХ рдПрдВрдб рд╡реНрд╣рд╛рдЗрдЯ рд╕рдВрджреЗрд╢ рджреЗрдЦрддреЗ рд╣реИрдВ ред
рджреГрд╢реНрдпреЛрдВ рдХреЗ рдкреАрдЫреЗ, рд╡рд┐рдзрд┐ map_to
рдЕрдиреБрдкрд▓рдмреНрдз рдкреЗрдЬ рдЯреЗрдмрд▓ рдмрдирд╛рддреА рд╣реИ:- рд╕реЗ рдЕрдкреНрд░рдпреБрдХреНрдд рдлреНрд░реЗрдо рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ
frame_allocator
ред
- рдЗрд╕ рдлреНрд░реЗрдо рдХреЗ рд╕рд╛рде рдПрдХ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдлреНрд░реЗрдо рдЕрдм рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реБрд▓рдн рд╣реИред
- рдПрдХ рдирдпрд╛, рдЦрд╛рд▓реА рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝реНрд░реЗрдо рдХреЛ рдЬрд╝реАрд░реЛ рдХрд░рддрд╛ рд╣реИред
- рдЕрдЧрд▓реЗ рд╕реНрддрд░ рдХреА рдореЗрдЬ рдкрд░ рдЬрд╛рддрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдп create_maping
рдХреЗрд╡рд▓ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рд╣рдо рдЕрдм рдордирдорд╛рдиреЗ рдкрдиреНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдирдП рдорд╛рдирдЪрд┐рддреНрд░рдг рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╕реНрдореГрддрд┐ рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓реЗрдЦреЛрдВ рдореЗрдВ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИредрд╕рд╛рд░рд╛рдВрд╢
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдЖрдкрдиреЗ рд╕реАрдЦрд╛ рдХрд┐ рдХреИрд╕реЗ рдПрдХ рд╕реНрддрд░ 4 рдкреБрдирд░рд╛рд╡рд░реНрддреА рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рднреА рдлрд╝реНрд░реЗрдореЛрдВ рдХреЛ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рд╡рд░реНрдЪреБрдЕрд▓ рдкрддреЗ рдкрд░ рдЕрдиреБрд╡рд╛рдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдордиреЗ рдПрдбреНрд░реЗрд╕ рдЯреНрд░рд╛рдВрд╕рд▓реЗрд╢рди рдлрдВрдХреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдФрд░ рдкреЗрдЬ рдЯреЗрдмрд▓ рдореЗрдВ рдПрдХ рдирдпрд╛ рдореИрдкрд┐рдВрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛редрд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ рдирдП рдореИрдкрд┐рдВрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирдП рдЯреЗрдмрд▓ рдХреЗ рд▓рд┐рдП рдЕрдкреНрд░рдпреБрдХреНрдд рдлреНрд░реЗрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдлреНрд░реЗрдо рд╡рд┐рддрд░рдХ рдХреЛ BIOS рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рдмреВрдЯрд▓реЛрдбрд░ рд╣рдорд╛рд░реЗ рдХрд░реНрдиреЗрд▓ рдХреЗ рдкрд╛рд╕ рдЬрд╛рддрд╛ рд╣реИредрдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ
рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдЕрдкрдиреЗ рдХрд░реНрдиреЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдвреЗрд░ рд╕реНрдореГрддрд┐ рдХреНрд╖реЗрддреНрд░ рдмрдирд╛рдПрдВрдЧреЗ, рдЬреЛ рд╣рдореЗрдВ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ ред