рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдЕрдиреБрдХреНрд░рдо рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

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

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

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

рдЖрдЗрдП рдкрд╣рд▓реЗ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬрдм рдЕрдиреБрдХреНрд░рдо рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд╣реИред рд╕рдмрд╕реЗ рдЖрдо рд╕реНрдерд┐рддрд┐ рд╣реИ рдЕрдкрдиреА рдлрд╝рд╛рдЗрд▓ рдХреЛ / proc рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдмрдирд╛рдирд╛ред рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдХреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝рдХрд░, рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЙрдкрдХрд░рдгреЛрдВ, рдЗрд╕рдХреЗ рдЪрд╛рд▓рдХреЛрдВ, рд░реИрдо, рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ, рдЖрджрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

рдЙрдкрд░реНрдпреБрдХреНрдд рд╕реНрд░реЛрдд рдЙрдореНрдореАрдж рд╕реЗ рдереЛрдбрд╝реЗ рдЦрд░рд╛рдм рдереЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХ рдореЗрдВ, рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА рдЖрдо рддреМрд░ рдкрд░ рдЧрд▓рдд рдирд┐рдХрд▓реА рдФрд░ рдпрд╣реА рдмрд╛рдд рдореБрдЭреЗ рдЗрд╕ рдиреЛрдЯ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд░рддреА рд╣реИред рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЖрдо рд╣реИ рдХрд┐ рдпреЛрдЬрдирд╛-рдЪрд┐рддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рджреА рдЧрдИ рдЬрд╛рдирдХрд╛рд░реА рд╕рдордЭрдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЗрд╕ рдкреБрд╕реНрддрдХ рдореЗрдВ рд╡рд┐рд╖рдп рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЪрд┐рддреНрд░ рдЧрд▓рдд рд╣реИред рдРрд╕реА рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЧрдВрднреАрд░ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкреБрд╕реНрддрдХ рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдпреЛрдЬрдирд╛ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдХреЗрд╡рд▓ рдХреБрдЫ рдмрд╛рдЗрдЯреНрд╕ рдРрд╕реЗ рд╕рдордп рдореЗрдВ рдкреНрд░рд┐рдВрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬрдм / proc / iter рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рд╕реНрдореГрддрд┐ рдХреЗ рдПрдХ рдкреГрд╖реНрда рд╕реЗ рдмрдбрд╝реЗ рдЧреНрд░рдВрдереЛрдВ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛрдЧрд╛ред рд▓реЗрдЦреЛрдВ рдХреА рдЙрдкрд░реНрдпреБрдХреНрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреБрдЫ рд╡рд┐рд╡рд░рдгреЛрдВ рдкрд░ рд░рд┐рдкреЛрд░реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╡рд┐рд╖рдп рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред

рддреЛ, рдЪрд▓рд┐рдП рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕ рдмрд╛рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЕрдиреБрдХреНрд░рдо рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рдПред



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

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

#include <linux/module.h> #include <linux/moduleparam.h> #include <linux/init.h> #include <linux/kernel.h> #include <linux/proc_fs.h> #include <linux/fs.h> #include <linux/seq_file.h> #include <linux/slab.h> static int limit = 10; //default value, it can be changed here or module_param(limit, int, S_IRUGO); //transfered as a module parameter static int* even_ptr; //we will work with dynamic memory /** * start */ static void *ct_seq_start(struct seq_file *s, loff_t *pos) { printk(KERN_INFO "Entering start(), pos = %Ld, seq-file pos = %lu.\n", *pos, s->count); if (*pos >= limit) { // are we done? printk(KERN_INFO "Apparently, we're done.\n"); return NULL; } //Allocate an integer to hold our increasing even value even_ptr = kmalloc(sizeof(int), GFP_KERNEL); if (!even_ptr) // fatal kernel allocation error return NULL; printk(KERN_INFO "In start(), even_ptr = %pX.\n", even_ptr); *even_ptr = (*pos)*2; return even_ptr; } /** * show */ static int ct_seq_show(struct seq_file *s, void *v) { printk(KERN_INFO "In show(), even = %d.\n", *(int*)v); seq_printf(s, "The current value of the even number is %d\n", *(int*)v); return 0; } /** * next */ static void *ct_seq_next(struct seq_file *s, void *v, loff_t *pos) { printk(KERN_INFO "In next(), v = %pX, pos = %Ld, seq-file pos = %lu.\n", v, *pos, s->count); (*pos)++; //increase my position counter if (*pos >= limit) //are we done? return NULL; *(int*)v += 2; //to the next even value return v; } /** * stop */ static void ct_seq_stop(struct seq_file *s, void *v) { printk(KERN_INFO "Entering stop().\n"); if (v) printk(KERN_INFO "v is %pX.\n", v); else printk(KERN_INFO "v is null.\n"); printk(KERN_INFO "In stop(), even_ptr = %pX.\n", even_ptr); if (even_ptr) { printk(KERN_INFO "Freeing and clearing even_ptr.\n"); kfree(even_ptr); even_ptr = NULL; } else printk(KERN_INFO "even_ptr is already null.\n"); } /** * This structure gathers functions which control the sequential reading */ static struct seq_operations ct_seq_ops = { .start = ct_seq_start, .next = ct_seq_next, .stop = ct_seq_stop, .show = ct_seq_show }; /** * This function is called when a file from /proc is opened */ static int ct_open(struct inode *inode, struct file *file) { return seq_open(file, &ct_seq_ops); }; /** * This structure gathers functions for a /proc-file operations */ static struct file_operations ct_file_ops = { .owner = THIS_MODULE, .open = ct_open, .read = seq_read, .llseek = seq_lseek, .release = seq_release }; /** * This function is called when this module is loaded into the kernel */ static int __init ct_init(void) { proc_create("evens", 0, NULL, &ct_file_ops); return 0; } /** * This function is called when this module is removed from the kernel */ static void __exit ct_exit(void) { remove_proc_entry("evens", NULL); } module_init(ct_init); module_exit(ct_exit); MODULE_LICENSE("GPL"); 


рдЕрдиреБрдХреНрд░рдо рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдЕрддрд┐рд╡реНрдпрд╛рдкреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рджреЛ рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ (рдпрд╣ рднреА рдХреБрдЫ рднреНрд░рдорд┐рдд рд╣реИ)ред рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд╡рд░реНрддрдорд╛рди рд╡рд╕реНрддреБ рдХреЛ рдмрдлрд╝рд░ рд╕реЗ рдкреНрд░рд┐рдВрдЯ рдХрд░рдХреЗ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП () - рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ `v'- рдкреЙрдЗрдВрдЯрд░ рд╣реИред рдЕрдиреНрдп рдкреЙрдЗрдВрдЯрд░ `рдкреЙрд╕тАЩ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдорддреМрд░ рдкрд░ рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

 obj-m += evens.o all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules clean: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean 


рдХрд░реНрдиреЗрд▓ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рдХрдорд╛рдВрдб sudo insmod evens.ko рд╕рд╛рде рдХрд┐рдпрд╛ sudo insmod evens.ko , / proc / evens-file рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕рдХреЗ рдмрд╛рдж рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдХрдорд╛рдВрдб cat /proc/evens , рдЗрд╡реЗрдВрдЯ рд▓реЙрдЧ рдХреЛ рдкрдврд╝рдХрд░ рд╕рд┐рд╕реНрдЯрдо рдСрдкрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рд╕рдордЭрд╛рддрд╛ рд╣реИред рдХрдорд╛рдВрдб sudo cat /var/log/messages ред

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

рд▓реЙрдЧ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╢реЗрд╖ рдЕрд╕реНрдкрд╖реНрдЯ рдмрд┐рдВрджреБрдУрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдиреЛрдЯрд┐рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдЧрд▓реЗ () рдпрд╛ рдкреНрд░рд╛рд░рдВрдн () рдХреЗ рдмрд╛рдж рд╕реНрдЯреЙрдк () рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╕рд┐рд╕реНрдЯрдо рд╡реЗрд░рд┐рдПрдмрд▓ `v 'рдХреЛ рд╢реВрдиреНрдп рдХрд░рддрд╛ рд╣реИред рдЖрдк рдпрд╣ рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдЯреЙрдк рд╕реЗ тАЛтАЛрдкрд╣рд▓реЗ рд╕реНрдЯрд╛рд░реНрдЯ () рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж (), рд╕рд┐рд╕реНрдЯрдо рдмрдлрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИред

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

рд╕реНрд░реЛрдд рдХреЛрдб рднреА рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рд╣реИ ред

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


All Articles