рд╣рдо рд░рд╕реНрдЯ рдкрд░ рдПрдХ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдкреГрд╖реНрда рд╕реНрдореГрддрд┐ рдХрд╛ рд╕рдВрдЧрдарди

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдкреГрд╖реНрда рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд╛рдорд╛рдиреНрдп рдореЗрдореЛрд░реА рдкреНрд░рдмрдВрдзрди рдпреЛрдЬрдирд╛ рдЬрд┐рд╕реЗ рд╣рдо рдЕрдкрдиреЗ рдУрдПрд╕ рдореЗрдВ рднреА рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдЦ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдореЗрдореЛрд░реА рдЕрд▓рдЧрд╛рд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ, рд╡рд┐рднрд╛рдЬрди рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдореЛрд░реА рдХреНрдпрд╛ рд╣реИ рдФрд░ рдкреГрд╖реНрда рд╡рд┐рдЦрдВрдбрди рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо x86_64 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рдорд▓реНрдЯреАрд▓реЗрд╡рд▓ рдкреЗрдЬ рдЯреЗрдмрд▓ рдХреА рдпреЛрдЬрдирд╛ рдХрд╛ рднреА рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВред

рдпрд╣ рдмреНрд▓реЙрдЧ GitHub рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдкреНрд░рд╢реНрди рдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рддреЛ рд╡рд╣рд╛рдВ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдиреБрд░реЛрдз рдЦреЛрд▓реЗрдВред

рд╕реНрдореГрддрд┐ рд╕реБрд░рдХреНрд╖рд╛


рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдореБрдЦреНрдп рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдирд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдПрдХ рдкрд╛рда рд╕рдВрдкрд╛рджрдХ рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрдХреНрд╖реЗрдк рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдФрд░ рдУрдПрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рдПрдЖрд░рдПрдо рдХреЙрд░реНрдЯреЗрдХреНрд╕-рдПрдо рдкреНрд░реЛрд╕реЗрд╕рд░ (рдПрдореНрдмреЗрдбреЗрдб рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ) рдПрдХ рдореЗрдореЛрд░реА рдкреНрд░реЛрдЯреЗрдХреНрд╢рди рдпреВрдирд┐рдЯ (рдПрдордкреАрдпреВ) рд╣реИ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдПрдХреНрд╕реЗрд╕ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рдПрдХ рдЫреЛрдЯреА рд╕рдВрдЦреНрдпрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 8) рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХреНрд╕реЗрд╕ рдирд╣реАрдВ, рд░реАрдб-рдУрдирд▓реА, рд░реАрдб рдПрдВрдб рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ)ред рдЬрд┐рддрдиреА рдмрд╛рд░ рдореЗрдореЛрд░реА рдПрдХреНрд╕реЗрд╕ рдХреА рдЬрд╛рддреА рд╣реИ, рдПрдордкреАрдпреВ рдпрд╣ рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИ рдХрд┐ рдкрддрд╛ рд╕рд╣реА рдЕрдиреБрдорддрд┐рдпреЛрдВ рд╡рд╛рд▓реЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдпрд╣ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рд╣реИред рд╕реНрдХреЛрдк рдФрд░ рдПрдХреНрд╕реЗрд╕ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рдмрджрд▓рдХрд░, OS рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЗрд╕рдХреА рдореЗрдореЛрд░реА рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛред

X86 рдкрд░, рдореЗрдореЛрд░реА рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рд╡рд┐рднрд╛рдЬрди рдФрд░ рдкреЗрдЬрд┐рдВрдЧ ред

рд╡рд┐рднрд╛рдЬрди


рд╕реЗрдЧрдореЗрдВрдЯреЗрд╢рди рдХреЛ 1978 рдореЗрдВ рд╡рд╛рдкрд╕ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╢реБрд░реБрдЖрдд рдореЗрдВ рдкрддрд╛ рдпреЛрдЧреНрдп рдореЗрдореЛрд░реА рдХреА рдорд╛рддреНрд░рд╛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рдЙрд╕ рд╕рдордп, рд╕реАрдкреАрдпреВ рдиреЗ рдХреЗрд╡рд▓ 16-рдмрд┐рдЯ рдкрддреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдерд╛, рдЬрд┐рд╕рдиреЗ рдкрддрд╛ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдореЗрдореЛрд░реА рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ 64 рдХреЗрдмреА рддрдХ рд╕реАрдорд┐рдд рдХрд░ рджрд┐рдпрд╛ рдерд╛ред рдЗрд╕ рд╡реЙрд▓реНрдпреВрдо рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЗрдЧрдореЗрдВрдЯ рд░рдЬрд┐рд╕реНрдЯрд░ рдкреЗрд╢ рдХрд┐рдП рдЧрдП, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдПрдХ рдСрдлрд╕реЗрдЯ рдПрдбреНрд░реЗрд╕ рд╣реИред CPU рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдореЛрд░реА рдПрдХреНрд╕реЗрд╕ рдкрд░ рдЗрд╕ рдСрдлрд╕реЗрдЯ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ 1 рдПрдордмреА рддрдХ рдореЗрдореЛрд░реА рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИред

CPU рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдореЗрдореЛрд░реА рдПрдХреНрд╕реЗрд╕ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╕реЗрдЧрдореЗрдВрдЯ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ: рдирд┐рд░реНрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП CS рдХреЛрдб рд╕реЗрдЧрдореЗрдВрдЯ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕реНрдЯреИрдХ рдСрдкрд░реЗрд╢рди (рдкреБрд╢ / рдкреЙрдк) рдХреЗ рд▓рд┐рдП SS рд╕реНрдЯреИрдХ рд╕реЗрдЧрдореЗрдВрдЯ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдиреНрдп рдирд┐рд░реНрджреЗрд╢ DS рдбреЗрдЯрд╛ рдЦрдВрдб рд░рдЬрд┐рд╕реНрдЯрд░ рдпрд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ ES рдЦрдВрдб рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдмрд╛рдж рдореЗрдВ, рджреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдЦрдВрдб рд░рдЬрд┐рд╕реНрдЯрд░ FS рдФрд░ GS рдХреЛ рдореБрдлреНрдд рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред

рд╡рд┐рднрд╛рдЬрди рдХреЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдореЗрдВ рд╕реАрдзреЗ рдСрдлрд╕реЗрдЯ рдФрд░ рдПрдХреНрд╕реЗрд╕ рдХрдВрдЯреНрд░реЛрд▓ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдереЗред рд╕рдВрд░рдХреНрд╖рд┐рдд рдореЛрдб рдХреЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рде , рддрдВрддреНрд░ рдмрджрд▓ рдЧрдпрд╛ рд╣реИред рдЬрдм рд╕реАрдкреАрдпреВ рдЗрд╕ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕реЗрдЧрдореЗрдВрдЯ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдпрд╛ рд╡реИрд╢реНрд╡рд┐рдХ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдЯреЗрдмрд▓ рдореЗрдВ рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдСрдлрд╕реЗрдЯ рдПрдбреНрд░реЗрд╕ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╕реЗрдЧрдореЗрдВрдЯ рд╕рд╛рдЗрдЬ рдФрд░ рдПрдХреНрд╕реЗрд╕ рдкрд░рдорд┐рд╢рди рд╣реЛрддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡реИрд╢реНрд╡рд┐рдХ / рд╕реНрдерд╛рдиреАрдп рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рд▓реЛрдб рдХрд░рдХреЗ, рдУрдПрд╕ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

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

рдЖрднрд╛рд╕реА рд╕реНрдореГрддрд┐


рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдореЛрд░реА рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдПрдХ рднреМрддрд┐рдХ рдЙрдкрдХрд░рдг рд╕реЗ рдореЗрдореЛрд░реА рдПрдбреНрд░реЗрд╕ рдХреЛ рдЕрдореВрд░реНрдд рдХрд░рдирд╛ рд╣реИред рд╕реНрдЯреЛрд░реЗрдЬ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рд╕реАрдзреЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд░реВрдкрд╛рдВрддрд░рдг рдЪрд░рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд┐рднрд╛рдЬрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдХреНрд░рд┐рдп рд╕реЗрдЧрдореЗрдВрдЯ рдХрд╛ рдСрдлрд╕реЗрдЯ рдкрддрд╛ рдЕрдиреБрд╡рд╛рдж рдЪрд░рдг рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдЬреЛ 0x1234000 рдСрдлрд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдЦрдВрдб рдореЗрдВ рдореЗрдореЛрд░реА рдПрдбреНрд░реЗрд╕ 0x1234000 рддрдХ 0x1111000 : рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкрддрд╛ 0x2345000 рдЬрд╛рддрд╛ рд╣реИред

рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрддреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд░реВрдкрд╛рдВрддрд░рдг рд╕реЗ рдкрд╣рд▓реЗ рдХреЗ рдкрддреЛрдВ рдХреЛ рдЖрднрд╛рд╕реА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдмрд╛рдж рдХреЗ рдкрддреЛрдВ рдХреЛ рднреМрддрд┐рдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрдирдХреЗ рдмреАрдЪ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рд╣реИ: рднреМрддрд┐рдХ рдкрддреЗ рдЕрджреНрд╡рд┐рддреАрдп рд╣реИрдВ рдФрд░ рд╣рдореЗрд╢рд╛ рд╕реНрдореГрддрд┐ рдореЗрдВ рд╕рдорд╛рди рдЕрджреНрд╡рд┐рддреАрдп рд╕реНрдерд╛рди рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддреЗ рд╣реИрдВред рджреВрд╕рд░реА рдУрд░, рдЖрднрд╛рд╕реА рдкрддреЗ рдЕрдиреБрд╡рд╛рдж рдХрд╛рд░реНрдп рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВред рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрднрд╛рд╕реА рдкрддреЗ рдПрдХ рд╣реА рднреМрддрд┐рдХ рдкрддреЗ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдорд░реВрдк рдЖрднрд╛рд╕реА рдкрддреЗ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдмрд╛рдж рд╡рд┐рднрд┐рдиреНрди рднреМрддрд┐рдХ рдкрддреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдЙрдкрдпреЛрдЧреА рдЙрдкрдпреЛрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдПрдХ рд╣реА рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рджреЛ рдмрд╛рд░ рд╕рдорд╛рдирд╛рдВрддрд░ рд▓реЙрдиреНрдЪ рд╣реИ:



рдпрд╣рд╛рдВ, рдПрдХ рд╣реА рдХрд╛рд░реНрдпрдХреНрд░рдо рджреЛ рдмрд╛рд░ рдЪрд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рднрд┐рдиреНрди рд░реВрдкрд╛рдВрддрд░рдг рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рдеред рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ 100 рд╕реЗрдЧрдореЗрдВрдЯ рдХрд╛ рдПрдХ рдЦрдВрдб рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рдЖрднрд╛рд╕реА рдкрддреЗ 0-150 рднреМрддрд┐рдХ рдкрддреЗ 100-250 рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреЗ рд╣реИрдВред рджреВрд╕рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ 300 рдХреА рдПрдХ рдСрдлрд╕реЗрдЯ рд╣реИ, рдЬреЛ рд╡рд░реНрдЪреБрдЕрд▓ рдПрдбреНрд░реЗрд╕ рдХреЛ 0-150 рд╕реЗ рднреМрддрд┐рдХ рдкрддреЗ рдореЗрдВ 300-450 рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдпрд╣ рджреЛрдиреЛрдВ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рдПрдХ рд╣реА рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдФрд░ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рд╣реА рдЖрднрд╛рд╕реА рдкрддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдПрдХ рдФрд░ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдЕрдм рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рднреМрддрд┐рдХ рд╕реНрдореГрддрд┐ рдкрд░ рдордирдорд╛рдиреЗ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдУрдПрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдЙрдкрд▓рдмреНрдз рдореЗрдореЛрд░реА рдХреА рдкреВрд░реА рд░рд╛рд╢рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рд╡рд┐рдЦрдВрдбрди


рдЖрднрд╛рд╕реА рдФрд░ рднреМрддрд┐рдХ рдкрддреЗ рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рд╡рд┐рднрд╛рдЬрди рдХреА рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрд▓рдмреНрдзрд┐ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдо рдЙрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рддреАрд╕рд░реА рдкреНрд░рддрд┐ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдКрдкрд░ рджреЗрдЦрд╛ рдерд╛:



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

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



рдЕрдм рддреАрд╕рд░рд╛ рдЙрджрд╛рд╣рд░рдг рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЬрдЧрд╣ рд╣реИред

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

рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ x86 рдкрд░ 64-рдмрд┐рдЯ рдореЛрдб рдореЗрдВ рднреА рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред рд╡рд┐рднрд╛рдЬрди рдХреЗ рдмрдЬрд╛рдп, рдкреГрд╖реНрдареЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рд╡рд┐рдЦрдВрдбрди рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред

рдкреГрд╖реНрда рд╕реНрдореГрддрд┐ рдХрд╛ рд╕рдВрдЧрдарди


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

рд▓рд╛рдн рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдПрдХ рдЦрдВрдбрд┐рдд рд╕реНрдореГрддрд┐ рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ рд╡рд┐рднрд╛рдЬрди рдХреЗ рдмрдЬрд╛рдп рдкреГрд╖реНрдареЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:



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

рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╡рд┐рдЦрдВрдбрди


рд╡рд┐рднрд╛рдЬрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдПрдХ рдкреЗрдЬрд┐рдВрдЧ рд╕рдВрдЧрдарди рдХрдИ рдмрдбрд╝реЗ, рдЪрд░-рдЖрдХрд╛рд░ рд╡рд╛рд▓реЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдмрдЬрд╛рдп рдХрдИ рдЫреЛрдЯреЗ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рдХреЗ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдХрд╛ рдЖрдХрд╛рд░ рдПрдХ рдЬреИрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдлреНрд░реЗрдо рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рд╡рд┐рдЦрдВрдбрди рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред

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

рдЖрдВрддрд░рд┐рдХ рд╡рд┐рдЦрдВрдбрди рдореЗрдВ рдХреБрдЫ рднреА рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдХреНрд╕рд░ рдпрд╣ рдмрд╛рд╣рд░реА рд╡рд┐рдЦрдВрдбрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рдмреБрд░рд╛рдИ рд╣реИред рдЕрддрд┐рд░рд┐рдХреНрдд рдореЗрдореЛрд░реА рдЕрднреА рднреА рдЦрдкрдд рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рдЖрдкрдХреЛ рдЗрд╕реЗ рдбреАрдлрд╝реНрд░реИрдЧреНрдореЗрдиреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╡рд┐рдЦрдВрдбрди рдХреА рдорд╛рддреНрд░рд╛ рдЕрдиреБрдорд╛рдирд┐рдд рд╣реИ (рдФрд╕рддрди, рдкреНрд░рддрд┐ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдЖрдзрд╛ рдкреГрд╖реНрда)ред

рдкреЗрдЬ рдЯреЗрдмрд▓реНрд╕


рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ рд▓рд╛рдЦреЛрдВ рд╕рдВрднрд╛рд╡рд┐рдд рдкреГрд╖реНрдареЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдПрдХ рдлреНрд░реЗрдо рдореЗрдВ рдореИрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдкрддрд╛ рдЕрдиреБрд╡рд╛рдж рдЬрд╛рдирдХрд╛рд░реА рдХрд╣реАрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕реЗрдЧрдореЗрдВрдЯ рдХрд░рддреЗ рд╕рдордп, рдкреНрд░рддреНрдпреЗрдХ рд╕рдХреНрд░рд┐рдп рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реЗрдЧрдореЗрдВрдЯ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдкреГрд╖реНрдареЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрд╕рдВрднрд╡ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдпрд╣ рдПрдХ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдирд╛рдордХ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯреЗрдмрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ:



рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЕрдкрдирд╛ рдкреЗрдЬ рдЯреЗрдмрд▓ рд╣реИред рд╡рд░реНрддрдорд╛рди рд╕рдХреНрд░рд┐рдп рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рд╕реАрдкреАрдпреВ рдХреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред x86 рдЗрд╕реЗ CR3 рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд╡рд╣рд╛рдВ рд╕рд╣реА рдкреЗрдЬ рдЯреЗрдмрд▓ рдкрд░ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

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

рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдкреЗрдЬ рдЯреЗрдмрд▓ рдХреЗ рдлреНрд▓реИрдЧ рдлреАрд▓реНрдб рдореЗрдВ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдЬреИрд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рднреА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, r/w рдзреНрд╡рдЬ рдкреГрд╖реНрда рдХреЛ рдкрдардиреАрдп рдФрд░ рд▓рд┐рдЦрдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рддрд╛ рд╣реИред

рд╕реНрддрд░рд┐рдд рдкреЗрдЬ рдЯреЗрдмрд▓реНрд╕


рд╕рд░рд▓ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рдмрдбрд╝реЗ рдкрддреЗ рдХреЗ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ: рд╕реНрдореГрддрд┐ рд╡реНрдпрд░реНрде рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд╛рд░реНрдпрдХреНрд░рдо рдЪрд╛рд░ рдЖрднрд╛рд╕реА рдкреЗрдЬреЛрдВ 0 , 1_000_000 , 1_000_050 рдФрд░ 1_000_100 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рд╣рдо рдЕрдВрдХреЛрдВ рдХреЗ рд╡рд┐рднрд╛рдЬрдХ рдХреЗ рд░реВрдк рдореЗрдВ _ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ):



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

рдореЗрдореЛрд░реА рд▓реЙрд╕ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рджреЛ-рд╕реНрддрд░реАрдп рд╕рдВрдЧрдарди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рд╡рд┐рднрд┐рдиреНрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд╛рд▓рд┐рдХрд╛, рдЬрд┐рд╕реЗ рджреНрд╡рд┐рддреАрдп-рд╕реНрддрд░реАрдп рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкрддрд╛ рдХреНрд╖реЗрддреНрд░реЛрдВ рдФрд░ рдкреНрд░рдердо-рд╕реНрддрд░реАрдп рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрддреА рд╣реИред

рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рджреНрд╡рд╛рд░рд╛ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдо рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрддрд░ 1 рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ 10_000 рдЖрдХрд╛рд░ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдлрд┐рд░ рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдирд┐рдореНрди рддрд╛рд▓рд┐рдХрд╛рдПрдБ рдореМрдЬреВрдж рд╣реЛрдВрдЧреА:



рдкреЗрдЬ 0 10_000 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдкрд╣рд▓реЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ 10_000 , рдЗрд╕рд▓рд┐рдП рдпрд╣ рджреВрд╕рд░реЗ рд╕реНрддрд░ рдХреЗ рдкреЗрдЬ рдЯреЗрдмрд▓ рдореЗрдВ рдкрд╣рд▓реЗ рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдкрд╣рд▓реЗ рд╕реНрддрд░ рдХреЗ T1 рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреА рд╣реИ, рдЬреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдкреГрд╖реНрда 0 рдлреНрд░реЗрдо 0 рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдкреГрд╖реНрда 1_000_000 , 1_000_050 рдФрд░ 1_000_100 рдХреЗ 100 рд╡реЗрдВ рдмрд╛рдЗрдЯ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ 10_000 , рдЗрд╕рд▓рд┐рдП рд╡реЗ рд╕реНрддрд░ 2 рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдХреЗ 100 рд╡реЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд░рд┐рдХреЙрд░реНрдб рдПрдХ рдЕрдиреНрдп рдкреНрд░рдердо рд╕реНрддрд░ рддрд╛рд▓рд┐рдХрд╛ T2 рдХреА рдУрд░ 10_000 рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рддреАрди рдкреГрд╖реНрдареЛрдВ рдХреЛ 100, 150 рдФрд░ 200 рдореЗрдВ рддрдмреНрджреАрд▓ рдХрд░рддрд╛ рд╣реИред рдиреЛрдЯ рдпрд╣ рдХрд┐ рдкреНрд░рдердо рд╕реНрддрд░ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреГрд╖реНрда рдкрддреЗ рдореЗрдВ рдПрдХ рдХреНрд╖реЗрддреНрд░ рдСрдлрд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреГрд╖реНрда 1_000_050 рдХрд╛ рд░рд┐рдХреЙрд░реНрдб рдХреЗрд╡рд▓ 50 ред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рджреВрд╕рд░реЗ рд╕реНрддрд░ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ 100 рдЦрд╛рд▓реА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд┐рдЫрд▓реЗ рдорд┐рд▓рд┐рдпрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдХрдо рд╣реИред рдмрдЪрдд рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ 10_000 рдФрд░ 1_000_000 рдмреАрдЪ 10_000 рдореЗрдореЛрд░реА рд╡рд╛рд▓реЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реНрддрд░ рдХреЗ рдкреЗрдЬ рдЯреЗрдмрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рджреЛ-рд╕реНрддрд░реАрдп рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рддреАрди, рдЪрд╛рд░ рдпрд╛ рдЕрдзрд┐рдХ рд╕реНрддрд░реЛрдВ рддрдХ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдРрд╕реА рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдмрд╣реБрд╕реНрддрд░реАрдп рдпрд╛ рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдкреГрд╖реНрда рд╕рдВрдЧрдарди рдФрд░ рдмрд╣реБ-рд╕реНрддрд░реАрдп рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдЬрд╛рдирддреЗ рд╣реБрдП, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ x86_64 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рдкреГрд╖реНрда рд╕рдВрдЧрдарди рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ 64-рдмрд┐рдЯ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)ред

рдкреГрд╖реНрда рд╕рдВрдЧрдарди x86_64 рдкрд░


X86_64 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ 4 KB рдкреГрд╖реНрда рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдЪрд╛рд░-рд╕реНрддрд░реАрдп рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╕реНрддрд░ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ 512 рддрддреНрд╡ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рдХреЙрд░реНрдб рдореЗрдВ 8 рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдЖрдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХрд╛ рдЖрдХрд╛рд░ 512 ├Ч 8 рдмрд╛рдЗрдЯреНрд╕ = 4 KB рд╣реИред



рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдЯреЗрдмрд▓ рдЗрдВрдбреЗрдХреНрд╕ рдореЗрдВ 9 рдмрд┐рдЯреНрд╕ рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЯреЗрдмрд▓ рдореЗрдВ 2 ^ 9 = 512 рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ рд╣реИрдВред рдиреАрдЪреЗ рдХреЗ 12 рдмрд┐рдЯреНрд╕ 4-рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рдкреЗрдЬ рдСрдлрд╝рд╕реЗрдЯ (2 ^ 12 рдмрд╛рдЗрдЯреНрд╕ = 4 KB) рд╣реИрдВред рдмрд┐рдЯреНрд╕ 48 рд╕реЗ 64 рдЦрд╛рд░рд┐рдЬ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП x86_64 рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ 64-рдмрд┐рдЯ рд╕рд┐рд╕реНрдЯрдо рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ 48-рдмрд┐рдЯ рдкрддреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред 5-рд╕реНрддрд░реАрдп рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрддрд╛ рдЖрдХрд╛рд░ рдХреЛ 57 рдмрд┐рдЯ рддрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдЕрднреА рддрдХ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдБрдХрд┐ 48 рд╕реЗ 64 рдмрд┐рдЯреНрд╕ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡реЗ рдордирдорд╛рдиреЗ рдореВрд▓реНрдпреЛрдВ рдкрд░ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рд╕реАрдорд╛ рдореЗрдВ рд╕рднреА рдмрд┐рдЯреНрд╕ рдХреЛ рдЕрджреНрд╡рд┐рддреАрдп рдкрддреЗ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд┐рдЯ 47 рдХреА рдкреНрд░рддрд┐рдпрд╛рдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 5-рд╕реНрддрд░реАрдп рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВред рдЗрд╕реЗ рд╕рд╛рдЗрди-рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрдб рдореЗрдВ рд╕рд╛рдЗрди рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рдорд╛рди рд╣реИред рдпрджрд┐ рдкрддрд╛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реИ, рддреЛ рд╕реАрдкреАрдпреВ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рд╣реИред

рд░реВрдкрд╛рдВрддрд░рдг рдХрд╛ рдЙрджрд╛рд╣рд░рдг


рдЖрдЗрдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ рдХрд┐ рдЕрдиреБрд╡рд╛рдж рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:



рд╕реНрддрд░ 4 рдкреГрд╖реНрдареЛрдВ рдХреА рд╡рд░реНрддрдорд╛рди рд╕рдХреНрд░рд┐рдп рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рднреМрддрд┐рдХ рдкрддрд╛, рдЬреЛ рдЗрд╕ рд╕реНрддрд░ рдХреЗ рдкреГрд╖реНрдареЛрдВ рдХреА рдЬрдбрд╝ рддрд╛рд▓рд┐рдХрд╛ рд╣реИ, CR3 рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рддрдм рдЕрдЧрд▓реЗ рд╕реНрддрд░ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рднреМрддрд┐рдХ рдлреНрд░реЗрдо рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреА рд╣реИред рдПрдХ рд╕реНрддрд░ 1 рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдлреНрд░реЗрдо рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╕рднреА рдкрддреЗ рднреМрддрд┐рдХ рд╣реИрдВ рдФрд░ рдЖрднрд╛рд╕реА рдирд╣реАрдВ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдпрдерд╛ рд╕реАрдкреАрдпреВ рдХреЛ рдЗрди рдкрддреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА (рдЬрд┐рд╕рд╕реЗ рдЕрдирдВрдд рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ)ред

рдЙрдкрд░реЛрдХреНрдд рдкрджрд╛рдиреБрдХреНрд░рдо рджреЛ рдкреГрд╖реНрдареЛрдВ рдХреЛ (рдиреАрд▓реЗ рд░рдВрдЧ рдореЗрдВ) рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рд╕реЗ, рд╣рдо рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрди рдкреГрд╖реНрдареЛрдВ рдХреЗ рдЖрднрд╛рд╕реА рдкрддреЗ 0x803fe7f000 рдФрд░ 0x803FE00000 ред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдо 0x803FE7F5CE рдкрддреЗ рдкрд░ рдореЗрдореЛрд░реА рдкрдврд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкрддреЗ рдХреЛ рдмрд╛рдЗрдирд░реА рдореЗрдВ рдмрджрд▓реЗрдВ рдФрд░ рдкреЗрдЬ рдЯреЗрдмрд▓ рдЗрдВрдбреЗрдХреНрд╕ рдФрд░ рдкрддреЗ рдХреЗ рд▓рд┐рдП рдСрдлрд╕реЗрдЯ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ:



рдЗрди рдЕрдиреБрдХреНрд░рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдЕрдм рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдлреНрд░реЗрдо рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

  • CR3 рд╕реЗ рдЪреМрдереЗ рд╕реНрддрд░ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдкрддрд╛ рдкрдврд╝реЗрдВред
  • рдЪреМрдереЗ рд╕реНрддрд░ рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ 1 рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕реВрдЪрдХрд╛рдВрдХ 1 рдХреЗ рд╕рд╛рде рд░рд┐рдХреЙрд░реНрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред рд╡рд╣ рдХрд╣рддреА рд╣реИ рдХрд┐ рдПрдХ рд╕реНрддрд░ 3 рддрд╛рд▓рд┐рдХрд╛ 16 KB рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред
  • рд╣рдо рдЗрд╕ рдкрддреЗ рд╕реЗ рддреАрд╕рд░реЗ рд╕реНрддрд░ рдХреА рддрд╛рд▓рд┐рдХрд╛ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕реВрдЪрдХрд╛рдВрдХ 0 рдХреЗ рд╕рд╛рде рд░рд┐рдХреЙрд░реНрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рдЬреЛ 24 рдХреЗрдмреА рдореЗрдВ рджреВрд╕рд░реЗ рд╕реНрддрд░ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИред
  • рджреВрд╕рд░реЗ рд╕реНрддрд░ рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ 511 рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдкрд╣рд▓реЗ рд╕реНрддрд░ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдкрддреЗ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреГрд╖реНрда рдкрд░ рдЕрдВрддрд┐рдо рд░рд┐рдХреЙрд░реНрдб рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
  • рдкреНрд░рдердо рд╕реНрддрд░ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕реВрдЪрдХрд╛рдВрдХ 127 рдХреЗ рд╕рд╛рде рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╕реЗ, рд╣рдореЗрдВ рдЕрдВрдд рдореЗрдВ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдкреГрд╖реНрда рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ 12 KB рдлреНрд░реЗрдо рдпрд╛ 0xc000 рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред
  • рдЕрдВрддрд┐рдо рдЪрд░рдг рднреМрддрд┐рдХ рдкрддреЗ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝реНрд░реЗрдо рдкрддреЗ рдореЗрдВ рдПрдХ рдСрдлрд╕реЗрдЯ рдЬреЛрдбрд╝рдирд╛ рд╣реИ: 0xc000 + 0x5ce = 0xc5ceред



рдкрд╣рд▓реЗ рд╕реНрддрд░ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП, r рдзреНрд╡рдЬ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред рдпрджрд┐ рд╣рдо рд╡рд╣рд╛рдВ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕реНрддрд░ рдкрд░ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░реЛрдВ рддрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реЛрддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рд╣рдо рддреАрд╕рд░реЗ рд╕реНрддрд░ рдкрд░ рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзреНрд╡рдЬ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдХрд╛ рдПрдХ рднреА рдмрд╛рдж рдХрд╛ рдкреГрд╖реНрда рд▓реЗрдЦрди рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реЛрдЧрд╛, рднрд▓реЗ рд╣реА рд╡рд╣рд╛рдБ рдЭрдВрдбреЗ рд╣реЛрдВ рдЬреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВред

рдпрджреНрдпрдкрд┐ рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рддреНрдпреЗрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдХреЗрд╡рд▓ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЖрдорддреМрд░ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдкрддрд╛ рд╕реНрдерд╛рди рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрддрд░ рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред рдЕрдзрд┐рдХрддрдо:

  • рдЪреМрдереЗ рд╕реНрддрд░ рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛,
  • рддреАрд╕рд░реЗ рд╕реНрддрд░ рдХреА 512 рдЯреЗрдмрд▓ (рдЪреВрдВрдХрд┐ рдЪреМрдереЗ рд╕реНрддрд░ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ 512 рд░рд┐рдХреЙрд░реНрдб рд╣реИрдВ),
  • 512 * 512 рджреВрд╕рд░реЗ-рд╕реНрддрд░реАрдп рдЯреЗрдмрд▓ (рдЪреВрдВрдХрд┐ рддреАрд╕рд░реЗ-рд╕реНрддрд░ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЯреЗрдмрд▓ рдореЗрдВ 512 рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ рд╣реИрдВ), рдФрд░
  • рдкрд╣рд▓реЗ рд╕реНрддрд░ рдХреЗ 512 * 512 * 512 рдЯреЗрдмрд▓ (рджреВрд╕рд░реЗ рд╕реНрддрд░ рдХреА рдкреНрд░рддреНрдпреЗрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП 512 рд░рд┐рдХреЙрд░реНрдб)ред

рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рд╛рд░реВрдк


X86_64 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ, рдкреЗрдЬ рдЯреЗрдмрд▓ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ 512 рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреА рд╕рд░рдгрд┐рдпрд╛рдБ рд╣реИрдВред рдЬрдВрдЧ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ:

 #[repr(align(4096))] pub struct PageTable { entries: [PageTableEntry; 512], } 

рдЬреИрд╕рд╛ рдХрд┐ repr рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдкреГрд╖реНрда рдкрд░, рдЕрд░реНрдерд╛рдд, 4 рдХреЗрдмреА рд╕реАрдорд╛ рдкрд░ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рддрд╛рд▓рд┐рдХрд╛ рд╣рдореЗрд╢рд╛ рдкреВрд░реЗ рдкреГрд╖реНрда рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рднрд░ рджреЗ, рдЬрд┐рд╕рд╕реЗ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рдмрд╣реБрдд рдХреЙрдореНрдкреИрдХреНрдЯ рд╣реЛ рдЬрд╛рдПрдБред

рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдЖрдХрд╛рд░ 8 рдмрд╛рдЗрдЯреНрд╕ (64 рдмрд┐рдЯреНрд╕) рдФрд░ рдирд┐рдореНрди рдкреНрд░рд╛рд░реВрдк рд╣реИ:

рдмрд┐рдЯрдирд╛рдордореВрд▓реНрдп
0рд╡рд░реНрддрдорд╛рдирд╕реНрдореГрддрд┐ рдореЗрдВ рдкреГрд╖реНрда
1рд▓рд┐рдЦрдиреЗ рдпреЛрдЧреНрдпрд░рд┐рдХреЙрд░реНрдб рдХреА рдЕрдиреБрдорддрд┐ рджреА
2рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реБрд▓рднрдпрджрд┐ рдмрд┐рдЯ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдХреЗрд╡рд▓ рдХрд░реНрдиреЗрд▓ рдХреЗ рдкрд╛рд╕ рдкреГрд╖реНрда рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ
3рдХреИрд╢рд┐рдВрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд┐рдЦреЗрдВрд╕реАрдзреЗ рд╕реНрдореГрддрд┐ рдореЗрдВ рд▓рд┐рдЦреЗрдВ
4рдХреИрд╢ рдЕрдХреНрд╖рдо рдХрд░реЗрдВрдЗрд╕ рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рдХреИрд╢ рдЕрдХреНрд╖рдо рдХрд░реЗрдВ
5рдЕрднрд┐рдЧрдорд╕реАрдкреАрдпреВ рдЗрд╕ рдмрд┐рдЯ рдХреЛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрдм рдкреЗрдЬ рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред
6рдЧрдВрджрд╛рд╕реАрдкреАрдпреВ рдЗрд╕ рдмрд┐рдЯ рдХреЛ рдкреЗрдЬ рдкрд░ рд▓рд┐рдЦрддреЗ рд╕рдордп рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ
7рд╡рд┐рд╢рд╛рд▓ рдкреГрд╖реНрда / рдЕрд╢рдХреНрддрдкреА 1 рдФрд░ рдкреА 4 рдореЗрдВ рд╢реВрдиреНрдп рдмрд┐рдЯ рдкреА 3 рдореЗрдВ 1 рдХреЗрдмреА рдкреЗрдЬ, рдкреА 2 рдореЗрдВ 2 рдПрдордмреА рдкреЗрдЬ рдмрдирд╛рддрд╛ рд╣реИ
8рд╡реИрд╢реНрд╡рд┐рдХрдкрддрд╛ рд╕реНрдерд╛рди рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╕рдордп рдкреГрд╖реНрда рдХреИрд╢ рд╕реЗ рднрд░рд╛ рдирд╣реАрдВ рд╣реИ (рд╕реАрдЖрд░ 4 рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╛ PGE рдмрд┐рдЯ рд╕реЗрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)
9-11рдЙрдкрд▓рдмреНрдзрдУрдПрд╕ рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
12-51рднреМрддрд┐рдХ рдкрддрд╛рдкреГрд╖реНрда-рдлрд╝реНрд░реЗрдо рдпрд╛ рдирд┐рдореНрди рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ релреи-рдмрд┐рдЯ рднреМрддрд┐рдХ рдкрддрд╛
52-62рдЙрдкрд▓рдмреНрдзрдУрдПрд╕ рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
63рдХреЛрдИ рдЕрдорд▓ рдирд╣реАрдВрдЗрд╕ рдкреГрд╖реНрда рдкрд░ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдкрд░ рд░реЛрдХ (NXE рдмрд┐рдЯ рдХреЛ EFER рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП)

рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреЗрд╡рд▓ 12-51 рдмрд┐рдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдлреНрд░реЗрдо рдХреЗ рднреМрддрд┐рдХ рдкрддреЗ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдмрд╛рдХреА рдХрд╛рдо рдЭрдВрдбреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╣рдореЗрд╢рд╛ рдпрд╛ рддреЛ 4096-рдмрд╛рдЗрдЯ-рд╕рдВрд░реЗрдЦрд┐рдд рдкрддреЗ рдкрд░, рдпрд╛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдПрдХ рдЧрдардмрдВрдзрди рдкреГрд╖реНрда рдкрд░, рдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд рдлреНрд░реЗрдо рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдмрд┐рдЯреНрд╕ 0-11 рд╣рдореЗрд╢рд╛ рд╢реВрдиреНрдп рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╡реЗ рдкрддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдмрд╕ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕реНрддрд░ рдкрд░ рд░реАрд╕реЗрдЯ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рд╡рд╣реА 52-63 рдХреЗ рдмрд┐рдЯреНрд╕ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ x86_64 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗрд╡рд▓ 52-рдмрд┐рдЯ рднреМрддрд┐рдХ рдкрддреЛрдВ (рдФрд░ рдХреЗрд╡рд▓ 48-рдмрд┐рдЯ рд╡рд░реНрдЪреБрдЕрд▓ рдкрддреЛрдВ) рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рдЖрдЗрдП рдЙрдкрд▓рдмреНрдз рдЭрдВрдбреЛрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:

  • present рдзреНрд╡рдЬ рдкреНрд░рджрд░реНрд╢рд┐рдд рдкреГрд╖реНрдареЛрдВ рдХреЛ рдЧреИрд░-рдкреНрд░рджрд░реНрд╢рд┐рдд рд╡рд╛рд▓реЗ рд╕реЗ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореБрдЦреНрдп рд╕реНрдореГрддрд┐ рдкреВрд░реНрдг рд╣реЛрдиреЗ рдкрд░ рдбрд┐рд╕реНрдХ рдХреЛ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрдареЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдЧрд▓реА рдмрд╛рд░ рдЬрдм рдкреГрд╖реНрда рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреЗрдЬрдлреЙрд▓реНрдЯ рдЕрдкрд╡рд╛рдж рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдУрдПрд╕ рдбрд┐рд╕реНрдХ рд╕реЗ рдкреГрд╖реНрда рдХреЛ рд╕реНрд╡реИрдк рдХрд░рдХреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИ - рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИред
  • writable рдФрд░ no execute writable рдЭрдВрдбреЗ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдкреГрд╖реНрда рдХреА рд╕рд╛рдордЧреНрд░реА рд▓реЗрдЦрди рдпреЛрдЧреНрдп рд╣реИ рдпрд╛ рдЗрд╕рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВред
  • рдкреГрд╖реНрда рдкрд░ рдкрдврд╝рдиреЗ рдпрд╛ рд▓рд┐рдЦрдиреЗ рдкрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рджреНрд╡рд╛рд░рд╛ accessed рдФрд░ dirty рдЭрдВрдбреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдУрдПрд╕ рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдпрд╣ рдкреГрд╖реНрдареЛрдВ рдХреА рдЕрджрд▓рд╛-рдмрджрд▓реА рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдкрд┐рдЫрд▓реЗ рдкрдВрдкрд┐рдВрдЧ рд╕реЗ рдбрд┐рд╕реНрдХ рдореЗрдВ рдкреЗрдЬ рдХреА рд╕рд╛рдордЧреНрд░реА рдмрджрд▓ рдЧрдИ рд╣реИред
  • write through caching рдлрд╝реНрд▓реИрдЧ рдХреЗ write through caching рдФрд░ disable cache рдлрд╝реНрд▓реИрдЧ рдХреЛ disable cache рдХрд░рдиреЗ рд╕реЗ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рдХреИрд╢ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  • user accessible рдзреНрд╡рдЬ рдкреГрд╖реНрда рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдерд╛рди рд╕реЗ рдХреЛрдб рдХреЗ рд▓рд┐рдП рд╕реБрд▓рдн рдмрдирд╛рддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдпрд╣ рдХреЗрд╡рд▓ рдХрд░реНрдиреЗрд▓ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рддреЛ рдХрд░реНрдиреЗрд▓ рдХреЗ рд▓рд┐рдП рдкрддрд╛ рдореИрдкрд┐рдВрдЧ рдХреЛ рдмрдирд╛рдП рд░рдЦреЗрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╕реНрдкреЗрдХреНрдЯрд░ рднреЗрджреНрдпрддрд╛ рдЗрди рдкреГрд╖реНрдареЛрдВ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдерд╛рди рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рджреНрд╡рд╛рд░рд╛ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  • global , (. TLB ) (address space switch). user accessible .
  • huge page , 2 3 . 512 : 2 = 512 ├Ч 4 , 1 = 512 ├Ч 2 . .

X86_64 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдФрд░ рдЙрдирдХреЗ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдкреНрд░рд╛рд░реВрдк рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ , рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЗрди рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рд╕реНрд╡рдпрдВ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рд╕рд╣рдпреЛрдЧреА рдЕрдиреБрд╡рд╛рдж рдмрдлрд░ (TLB)


рдЪрд╛рд░ рд╕реНрддрд░реЛрдВ рдХреЗ рдХрд╛рд░рдг, рдкреНрд░рддреНрдпреЗрдХ рдкрддреЗ рдХреЗ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдЪрд╛рд░ рдореЗрдореЛрд░реА рдПрдХреНрд╕реЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдкреНрд░рджрд░реНрд╢рди рдХрд╛рд░рдгреЛрдВ рд╕реЗ, x86_64 рддрдерд╛рдХрдерд┐рдд рд╕рд╛рд╣рдЪрд░реНрдп рдЕрдиреБрд╡рд╛рдж рдмрдлрд░ (TLB) рдореЗрдВ рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ рдХреИрд╢ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЕрднреА рднреА рдХреИрд╢ рдореЗрдВ рд╣реИрдВ, рддреЛ рдпрд╣ рд░реВрдкрд╛рдВрддрд░рдг рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред

рдЕрдиреНрдп рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреИрд╢ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЯреАрдПрд▓рдмреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд╛рд░рджрд░реНрд╢реА рдирд╣реАрдВ рд╣реИ, рдкреЗрдЬ рдЯреЗрдмрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдмрджрд▓рддреЗ рд╕рдордп рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдпрд╛ рдбрд┐рд▓реАрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рднреА рдпрд╣ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдХрд░реНрдиреЗрд▓ рдХреЛ рдЯреАрдПрд▓рдмреА рдХреЛ рд╣реА рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реАрдкреАрдпреВ рдирд┐рд░реНрджреЗрд╢ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ invlpg(рдЕрдорд╛рдиреНрдп рдкреГрд╖реНрда), рдЬреЛ рдЯреАрдПрд▓рдмреА рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреГрд╖реНрда рдХреЗ рдЕрдиреБрд╡рд╛рдж рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЕрдЧрд▓реА рдмрд╛рд░ рдпрд╣ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рд╣реЛ рдЬрд╛рдПред TLB рд░рдЬрд┐рд╕реНрдЯрд░ рд░реАрд▓реЛрдб рджреНрд╡рд╛рд░рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рдл рд╣реЛ рдЧрдпрд╛ рд╣реИCR3рд╡рд╣ рдкрддрд╛ рд╕реНрдерд╛рди рд╕реНрд╡рд┐рдЪ рдХреА рдирдХрд▓ рдХрд░рддрд╛ рд╣реИред рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдк Rust рдореЗрдВ tlb рдореЙрдбреНрдпреВрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред

рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рдж рдЯреАрдПрд▓рдмреА рдХреЛ рд╕рд╛рдл рдХрд░рдирд╛ рдпрд╛рдж рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЕрдиреНрдпрдерд╛ рд╕реАрдкреАрдпреВ рдкреБрд░рд╛рдиреЗ рдЕрдиреБрд╡рд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдЬреЛ рдбреАрдмрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдХрдард┐рди рд╣реИрдВред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рд╣рдордиреЗ рдПрдХ рдмрд╛рдд рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ: рд╣рдорд╛рд░рд╛ рдХреЛрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреЗрдЬ рд╕рдВрдЧрдарди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ ред "рд░рд╕реНрдЯ рдкрд░ рдорд┐рдирд┐рдорд▓ рдХрд░реНрдиреЗрд▓" рд▓реЗрдЦ рд╕реЗ рдмреВрдЯрд▓реЛрдбрд░ рдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЪрд╛рд░-рд╕реНрддрд░реАрдп рдкрджрд╛рдиреБрдХреНрд░рдо рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рдХрд░реНрдиреЗрд▓ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдХреЛ рдПрдХ рднреМрддрд┐рдХ рдлреНрд░реЗрдо рдореЗрдВ рдореИрдк рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ x86_64 рдкрд░ 64-рдмрд┐рдЯ рдореЛрдб рдореЗрдВ рдкреЗрдЬ рд╕рдВрдЧрдарди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдореВрд▓ рдореЗрдВ рд╕рднреА рдореЗрдореЛрд░реА рдкрддреЗ рдЖрднрд╛рд╕реА рд╣реИрдВред рдкрддреЗ рдкрд░ рд╡реАрдЬреАрдП рдмрдлрд░ рддрдХ рдкрд╣реБрдВрдЪ 0xb8000рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдХрд╛рдо рдХреА рдЧрдИ рдХреНрдпреЛрдВрдХрд┐ рдмреВрдЯрд▓реЛрдбрд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдиреЗ рдЗрд╕ рдкреГрд╖реНрда рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд┐рдпрд╛, рдЕрд░реНрдерд╛рдд, рдЗрд╕рдиреЗ рд╡рд░реНрдЪреБрдЕрд▓ рдкреЗрдЬ 0xb8000рдХреЛ рднреМрддрд┐рдХ рдлреНрд░реЗрдо рдореЗрдВ рдореИрдк рдХрд┐рдпрд╛ 0xb8000ред

рдкреГрд╖реНрда рд╕рдВрдЧрдарди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдХрд░реНрдиреЗрд▓ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ: рдЕрдиреБрдореЗрдп рд╕реНрдореГрддрд┐ рд╕реЗ рдкрд░реЗ рд╣рд░ рдПрдХреНрд╕реЗрд╕ рдкреГрд╖реНрда рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рдФрд░ рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рд▓реЛрдбрд░ рдиреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдПрдХреНрд╕реЗрд╕ рдЕрдиреБрдорддрд┐рдпрд╛рдБ рднреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рд╣реИрдВ: рдХреЗрд╡рд▓ рдХреЛрдб рд╡рд╛рд▓реЗ рдкреГрд╖реНрда рд╣реА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╣реЛрдВрдЧреЗ, рдФрд░ рдбреЗрдЯрд╛ рд╡рд╛рд▓реЗ рдХреЗрд╡рд▓ рдкреГрд╖реНрда рд╣реА рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВ

рдкреГрд╖реНрда рддреНрд░реБрдЯрд┐рдпрд╛рдВ (рдкреЗрдЬрдлреЙрд▓реНрдЯ)


рдЖрдЗрдП рдХрд░реНрдиреЗрд▓ рдХреЗ рдмрд╛рд╣рд░ рдореЗрдореЛрд░реА рдПрдХреНрд╕реЗрд╕ рдХрд░рдХреЗ рдкреЗрдЬрдлреЙрд▓реНрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рдмрдирд╛рдПрдВ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреА рджреЛрд╣рд░реА рддреНрд░реБрдЯрд┐ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрдкрд╡рд╛рдж рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╣рдорд╛рд░реЗ IDT рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ:

 // in src/interrupts.rs lazy_static! { static ref IDT: InterruptDescriptorTable = { let mut idt = InterruptDescriptorTable::new(); [тАж] idt.page_fault.set_handler_fn(page_fault_handler); // new idt }; } use x86_64::structures::idt::PageFaultErrorCode; extern "x86-interrupt" fn page_fault_handler( stack_frame: &mut ExceptionStackFrame, _error_code: PageFaultErrorCode, ) { use crate::hlt_loop; use x86_64::registers::control::Cr2; println!("EXCEPTION: PAGE FAULT"); println!("Accessed Address: {:?}", Cr2::read()); println!("{:#?}", stack_frame); hlt_loop(); } 

рдпрджрд┐ рдкреГрд╖реНрда рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ, рддреЛ CPU рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреЗрд╕ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ CR2ред рдЗрд╕рдореЗрдВ рдкреГрд╖реНрда рдХрд╛ рд╡рд░реНрдЪреБрдЕрд▓ рдкрддрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╡рд┐рдлрд▓рддрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛ред рдЗрд╕ рдкрддреЗ рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ Cr2::readред рдЖрдорддреМрд░ рдкрд░, рдкреНрд░рдХрд╛рд░ PageFaultErrorCodeрддреНрд░реБрдЯрд┐ рдХреЗ рдХрд╛рд░рдг рдореЗрдореЛрд░реА рдПрдХреНрд╕реЗрд╕ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди LLVM рдмрдЧ рдХреЗ рдХрд╛рд░рдг рдПрдХ рдЕрдорд╛рдиреНрдп рддреНрд░реБрдЯрд┐ рдХреЛрдб рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ , рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЕрднреА рдХреЗ рд▓рд┐рдП рдЕрдирджреЗрдЦрд╛ рдХрд░ рджреЗрдВрдЧреЗред рдЬрдм рддрдХ рд╣рдо рдкреГрд╖реНрда рддреНрд░реБрдЯрд┐ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддреЗ, рддрдм рддрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд┐рд╖реНрдкрд╛рджрди рдЬрд╛рд░реА рдирд╣реАрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдВрдд рдореЗрдВ рдбрд╛рд▓реЗрдВ hlt_loopред

рдЕрдм рд╣рдо рдХрд░реНрдиреЗрд▓ рдХреЗ рдмрд╛рд╣рд░ рдореЗрдореЛрд░реА рддрдХ рдкрд╣реБрдБрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:

 // in src/main.rs #[cfg(not(test))] #[no_mangle] pub extern "C" fn _start() -> ! { use blog_os::interrupts::PICS; println!("Hello World{}", "!"); // set up the IDT first, otherwise we would enter a boot loop instead of // invoking our page fault handler blog_os::gdt::init(); blog_os::interrupts::init_idt(); unsafe { PICS.lock().initialize() }; x86_64::instructions::interrupts::enable(); // new let ptr = 0xdeadbeaf as *mut u32; unsafe { *ptr = 42; } println!("It did not crash!"); blog_os::hlt_loop(); } 

рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдкреГрд╖реНрда рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:



рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ CR2рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╣ рдкрддрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ 0xdeadbeafрд╣рдо рдПрдХреНрд╕реЗрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗред

рд╡рд░реНрддрдорд╛рди рдЕрдиреБрджреЗрд╢ рд╕реВрдЪрдХ рд╣реИ 0x20430a, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдкрддрд╛ рдПрдХ рдХреЛрдб рдкреГрд╖реНрда рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИред рдХреЛрдб рдкреГрд╖реНрда рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдбрд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдкрддреЗ рд╕реЗ рдкрдврд╝рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд▓рд┐рдЦрдиреЗ рд╕реЗ рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреАред рд╕реВрдЪрдХ 0xdeadbeafрдХреЛ рдЗрд╕рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ 0x20430a:

 // Note: The actual address might be different for you. Use the address that // your page fault handler reports. let ptr = 0x20430a as *mut u32; // read from a code page -> works unsafe { let x = *ptr; } // write to a code page -> page fault unsafe { *ptr = 42; } 

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

рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪ


рдЕрдм рдХрд░реНрдиреЗрд▓ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:

 // in src/main.rs #[cfg(not(test))] #[no_mangle] pub extern "C" fn _start() -> ! { use x86_64::registers::control::Cr3; let (level_4_page_table, _) = Cr3::read(); println!("Level 4 page table at: {:?}", level_4_page_table.start_address()); [тАж] } 

рдЪреМрдереЗ рд╕реНрддрд░ рдХреЗ рдкреГрд╖реНрдареЛрдВ рдХреА рд╡рд░реНрддрдорд╛рди рд╕рдХреНрд░рд┐рдп рддрд╛рд▓рд┐рдХрд╛ рд░рдЬрд┐рд╕реНрдЯрд░ Cr3::readрд╕реЗ x86_64рд░рд┐рдЯрд░реНрди рд╕реЗ рд╕рдорд╛рд░реЛрд╣ CR3ред рдПрдХ рдпреБрдЧрд▓ рд▓реМрдЯрддрд╛ рд╣реИ PhysFrameрдФрд░ Cr3Flagsред рд╣рдо рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред

рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрд╕ рдкрд░рд┐рдгрд╛рдо рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ:

Level 4 page table at: PhysAddr(0x1000)

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдЪреМрдереЗ рд╕реНрддрд░ рдХреЗ рдкреГрд╖реНрдареЛрдВ рдХреА рд╕рдХреНрд░рд┐рдп рддрд╛рд▓рд┐рдХрд╛ рдкрддреЗ рдкрд░ рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреА рд╣реИ 0x1000рдЬреИрд╕рд╛ рдХрд┐ рдкреНрд░рдХрд╛рд░ рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ PhysAddrред рдЕрдм рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдХрд░реНрдиреЗрд▓ рд╕реЗ рдХреИрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдП?

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

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЕрднреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рд▓реЛрдбрд░ рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкреГрд╖реНрда рд╕рд╛рд░рдгреА рдХрд╣рддреЗ рд╣реИрдВ ред рдЖрднрд╛рд╕реА рдкрддрд╛ рд╕реНрдерд╛рди рдХрд╛ рдЕрдВрддрд┐рдо рдкреГрд╖реНрда рд╣реИ 0xffff_ffff_ffff_f000, рд╣рдо рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдХреБрдЫ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:

 // in src/main.rs #[cfg(not(test))] #[no_mangle] pub extern "C" fn _start() -> ! { let level_4_table_pointer = 0xffff_ffff_ffff_f000 as *const u64; for i in 0..10 { let entry = unsafe { *level_4_table_pointer.offset(i) }; println!("Entry {}: {:#x}", i, entry); } [тАж] } 

рд╣рдордиреЗ рдкрд┐рдЫрд▓реЗ рд╡рд░реНрдЪреБрдЕрд▓ рдкреЗрдЬ рдХрд╛ рдкрддрд╛ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдХрдо рдХрд░ рджрд┐рдпрд╛ рд╣реИ u64ред рдЬреИрд╕рд╛ рдХрд┐ рдкрд┐рдЫрд▓реЗ рдЦрдВрдб рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЖрдХрд╛рд░ рдореЗрдВ 8 рдмрд╛рдЗрдЯреНрд╕ (64 рдмрд┐рдЯреНрд╕) рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП u64рдмрд┐рд▓реНрдХреБрд▓ рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреА рд╣реИред рд▓реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, forрд╣рдо рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдкрд╣рд▓реЗ 10 рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд▓реВрдк рдХреЗ рдЕрдВрджрд░, рд╣рдо рдкреЙрдЗрдВрдЯрд░ рд╕реЗ рд╕реАрдзреЗ рдкрдврд╝рдиреЗ рдФрд░ рдкреЙрдЗрдВрдЯрд░ offsetрдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ ред

рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣рдо рдирд┐рдореНрди рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВ:



рдкреНрд░рд╛рд░реВрдк рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╣реИ, рдореВрд▓реНрдп 0x2023рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд╕рд╛рдзрди рд╣реЛрдиреЗ рдЭрдВрдбреЗ 0 present, writable, accessedрдПрдХ рдлреНрд░реЗрдо рдореЗрдВ рдФрд░ рдЕрдиреБрд╡рд╛рдж 0x2000ред рд░рд┐рдХреЙрд░реНрдб 1 рдХреЛ рдлреНрд░реЗрдо рдореЗрдВ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ 0x6e2000рдФрд░ рдЗрд╕рдореЗрдВ рд╕рдорд╛рди рдЭрдВрдбреЗ, рдкреНрд▓рд╕ рд╣реИрдВdirtyред рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ 2-9 рдЧрд╛рдпрдм рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрди рд╡рд░реНрдЪреБрдЕрд▓ рдПрдбреНрд░реЗрд╕ рд░реЗрдВрдЬ рдХреЛ рдХрд┐рд╕реА рднреА рднреМрддрд┐рдХ рдкрддреЗ рдкрд░ рдореИрдк рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдВрдХреЗрдд рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЖрдк рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ PageTableрдХреА x86_64:

 // in src/main.rs #[cfg(not(test))] #[no_mangle] pub extern "C" fn _start() -> ! { use x86_64::structures::paging::PageTable; let level_4_table_ptr = 0xffff_ffff_ffff_f000 as *const PageTable; let level_4_table = unsafe {&*level_4_table_ptr}; for i in 0..10 { println!("Entry {}: {:?}", i, level_4_table[i]); } [тАж] } 

рдпрд╣рд╛рдВ рд╣рдо рдкреЙрдЗрдВрдЯрд░ рдХреЛ 0xffff_ffff_ffff_f000рдкрд╣рд▓реЗ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВ , рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рд░рд╕реНрдЯ рд▓рд┐рдВрдХ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдСрдкрд░реЗрд╢рди рдЕрднреА рднреА рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкрддреЗ рддрдХ рдкрд╣реБрдВрдЪ рд╡реИрдз рд╣реИред рд▓реЗрдХрд┐рди рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдмрд╛рдж, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдкреНрд░рдХрд╛рд░ рд╣реИ &PageTableрдЬреЛ рдЗрдВрдбреЗрдХреНрд╕рд┐рдВрдЧ рд╕рдВрдЪрд╛рд▓рди рдХреА рд╕реБрд░рдХреНрд╖рд┐рдд, рд╕рддреНрдпрд╛рдкрд┐рдд рд╕реАрдорд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░рд┐рдХреЙрд░реНрдб рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ ред

x86_64рднреА рддреБрд░рдиреНрдд рдирд┐рд╢рд╛рдиреА рдирд╣реАрдВ рд▓рдЧрд╛рдИ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрдореВрд░реНрдд рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:



рдЕрдЧрд▓реЗ рдХрджрдо - 0 рдпрд╛ рдкреЗрдЬ рддрд╛рд▓рд┐рдХрд╛ рд╕реНрддрд░ 3. рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрдиреЗ 1 рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд┐рд╣реНрдиреЛрдВ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░реЗрдВ рд▓реЗрдХрд┐рди рдЕрдм рд╣рдо рдлрд┐рд░ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЙрдарддрд╛ рд╣реИ 0x2000, рдФрд░ 0x6e5000рдХрд░ рд░рд╣реЗ рд╣реИрдВ рднреМрддрд┐рдХ рдкрддреЗ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдирд╣реАрдВ рд╣рдо рдЙрдирдХреЗ рд▓рд┐рдП рд╕реАрдзреА рдкрд╣реБрдБрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рд╣рд▓ рдХреА рдЬрд╛рдПрдЧреАред

рд╕рд╛рд░рд╛рдВрд╢


рд▓реЗрдЦ рд╕реНрдореГрддрд┐ рдХреА рд░рдХреНрд╖рд╛ рдХреЗ рджреЛ рддрд░реАрдХреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ: рд╡рд┐рднрд╛рдЬрди рдФрд░ рдкреГрд╖реНрда рд╕рдВрдЧрдардиред рдкрд╣рд▓реА рд╡рд┐рдзрд┐ рдЪрд░-рдЖрдХрд╛рд░ рдХреЗ рд╕реНрдореГрддрд┐ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ рдФрд░ рдмрд╛рд╣рд░реА рд╡рд┐рдЦрдВрдбрди рд╕реЗ рдЧреНрд░рд╕реНрдд рд╣реЛрддреА рд╣реИ, рджреВрд╕рд░рд╛ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рдХреЗ рдкреГрд╖реНрдареЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрднрд┐рдЧрдо рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдкрд░ рдЕрдзрд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рд░рдЦрддрд╛ рд╣реИред

рдПрдХ рдкреГрд╖реНрда рд╕рдВрдЧрдарди рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рд╕реНрддрд░реЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рдкреГрд╖реНрда рдЕрдиреБрд╡рд╛рдж рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред X86_64 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ 4 KB рдХреЗ рдкреГрд╖реНрда рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдЪрд╛рд░-рд╕реНрддрд░реАрдп рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЙрдкрдХрд░рдг рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рд╕рд╣рдпреЛрдЧреА рдЕрдиреБрд╡рд╛рдж рдмрдлрд░ (TLB) рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рдг рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдХреИрд╢ рдХрд░рддрд╛ рд╣реИред рдкреЗрдЬ рдЯреЗрдмрд▓ рдмрджрд▓рддреЗ рд╕рдордп, рдЗрд╕реЗ рд╕рд╛рдл рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ?


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

Source: https://habr.com/ru/post/hi436606/


All Articles