рджреВрд╕рд░реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЯреЗрд▓реАрдкреЛрд░реНрдЯ рдХрд░реЗрдВ!тАЙ

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

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

рд╡реАрдбрд┐рдпреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрд▓рд╛рдЙрдб рдореЗрдВ 64-рдХреЛрд░ рд╡реАрдПрдо рдкрд░ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ 8 рд╕реЗрдХрдВрдб (рдЯреЗрд▓реАрдлреЙрд░реНрдХ рдХреЗ рдЖрдЧреЗ-рдкреАрдЫреЗ 6 рд╕реЗрдХрдВрдб) рдореЗрдВ рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИред рдореЗрд░реЗ рд▓реИрдкрдЯреЙрдк рдкрд░ рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдореЗрдВ 40 рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВ:


рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЯреЗрд▓реАрдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдХреИрд╕реЗ рд╕рдВрднрд╡ рд╣реИ? рдпрд╣рд╛рдБ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдХреНрдпрд╛ рд╕рдордЭрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП! рдореВрд▓ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдирд┐рдореНрди рд╕реНрддрд░ рдкрд░, рд▓рд┐рдирдХреНрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХреЗрд╡рд▓ рдХреБрдЫ рдШрдЯрдХ рд╣реЛрддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рджрд╛рддрд╛ рд╕реЗ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдФрд░ рдЗрд╕реЗ рдХреНрд▓реЛрди рдХреА рдЧрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХреЙрдкреА рдХрд░рдирд╛ рд╣реИред

рдЖрдк рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ: "рд▓реЗрдХрд┐рди [рдЯреАрд╕реАрдкреА рдХрдиреЗрдХреНрд╢рди рдЬреИрд╕реЗ рдХреБрдЫ рдХрдард┐рди] рдХреЛ рдХреИрд╕реЗ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рдП?" рд╡рд╛рд╕реНрддрд╡ рдореЗрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рдХреЛрдб рдХреЛ рд╕рд░рд▓ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдРрд╕реА рдЬрдЯрд┐рд▓ рдЪреАрдЬреЛрдВ рдХреЛ рдмрд░реНрджрд╛рд╢реНрдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣реА рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдордЬреЗрджрд╛рд░ рддрдХрдиреАрдХреА рдбреЗрдореЛ рд╣реИ рдЬрд┐рд╕реЗ рд╢рд╛рдпрдж рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рд╡рд╣ рдЕрднреА рднреА рдЬрд╛рдирддреА рд╣реИ рдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реЗрдгреА рдХреЛ рдХреИрд╕реЗ рдЯреЗрд▓реАрдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдП!

рд╡реЛ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ


рдореИрдВрдиреЗ рдПрдХ рд░рд╕реНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рдЖрдк рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд╕реА рдПрдкреАрдЖрдИ рдореЗрдВ рд▓рдкреЗрдЯ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдПрдлрдПрдлрдЖрдИ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкрд╛рдпрдерди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЯреЗрд▓реАрдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗрд╡рд▓ 500 рд▓рд╛рдЗрдиреЛрдВ рдХреА рдХреЛрдб (рдкреНрд▓рд╕ 200 рд▓рд╛рдЗрдиреЛрдВ рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ):

use telefork::{telefork, TeleforkLocation};

fn main() {
    let args: Vec<String> = std::env::args().collect();
    let destination = args.get(1).expect("expected arg: address of teleserver");

    let mut stream = std::net::TcpStream::connect(destination).unwrap();
    match telefork(&mut stream).unwrap() {
        TeleforkLocation::Child(val) => {
            println!("I teleported to another computer and was passed {}!", val);
        }
        TeleforkLocation::Parent => println!("Done sending!"),
    };
}

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

// load the scene locally, this might require loading local scene files to memory
let scene = create_scene();
let mut backbuffer = vec![Vec3::new(0.0, 0.0, 0.0); width * height];
telefork::yoyo(destination, || {
  // do a big ray tracing job on the remote server with many cores!
  render_scene(&scene, width, height, &mut backbuffer);
});
// write out the result to the local file system
save_png_file(width, height, &backbuffer);

рд▓рд┐рдирдХреНрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢рд░реАрд░ рд░рдЪрдирд╛ рд╡рд┐рдЬреНрдЮрд╛рди


рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреНрдпрд╛ рджрд┐рдЦрддреА рд╣реИ (рдЬрд┐рд╕ рдкрд░ рдорд╛рдБ рд╣реЛрд╕реНрдЯ рдУрдПрд╕ рдЪрд▓ рд░рд╣реА рд╣реИ telefork):



  • (memory mappings): , . ┬л┬╗ 4 . /proc/<pid>/maps. , , .

    • , , ( ).
  • : , . , , - , , , . , .
  • : , . - , . , , , TCP-, .
    • . stdin/stdout/stderr, 0, 1 2.
    • , , , .
  • рд╡рд┐рд╡рд┐рдз : рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд░рд╛рдЬреНрдп рдХреЗ рдХреБрдЫ рдЕрдиреНрдп рднрд╛рдЧ рд╣реИрдВ рдЬреЛ рдкреНрд░рддрд┐рдХреГрддрд┐ рдЬрдЯрд┐рд▓рддрд╛ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╡реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, brk (рд╣реАрдк рдкреЙрдЗрдВрдЯрд░)ред рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рдХреЗрд╡рд▓ рдЕрдЬреАрдм рдЯреНрд░рд┐рдХреНрд╕ рдпрд╛ рд╡рд┐рд╢реЗрд╖ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреА рдорджрдж рд╕реЗ рдмрд╣рд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ PR_SET_MM_MAP , рдЬреЛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░рддрд╛ рд╣реИред

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

рдХреИрд╕реЗ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ telefork рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП


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

рдЗрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдиреЗ рдореБрдЭреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпреЗ рдмреЗрд╣рдж рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╡рд┐рд╢реЗрд╖ рдзрд╛рд╡рдХ рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдореИрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЙрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЯреЗрд▓реАрдкреЛрд░реНрдЯреЗрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕реНрд░реЛрдд рдХреЛрдб rr, CRIU, DMTCP рдФрд░ рдХреБрдЫ ptrace рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдЯреБрдХрдбрд╝реЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ - рдФрд░ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦрд╛ teleforkред рдореЗрд░рд╛ рддрд░реАрдХрд╛ рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдПрдХ рдорд╢реНрдорд╢ рд╣реИред

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

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЛрдиреЛрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕рд░рд▓реАрдХреГрдд рдЕрд╡рд▓реЛрдХрди рд╣реИред рдпрджрд┐ рдЖрдк рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдкрдврд╝реЗрдВ ред рдпрд╣ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдорд╛рд╣рд┐рдд рд╣реИ рдФрд░ рдХреНрд░рдо рдореЗрдВ рдкрдврд╝рдиреЗ рдФрд░ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдбрд╝реА рдЯрд┐рдкреНрдкрдгреА рдХреА рдЧрдИ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдмрдорд┐рдЯ рдХрд░рдирд╛ telefork


рдлрд╝рдВрдХреНрд╢рди teleforkрд▓реЗрдЦрди рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░реАрдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдпрд╣ рдЕрдкрдиреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдкреВрд░реЗ рд░рд╛рдЬреНрдп рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред

  1. ┬л┬╗ . , , . fork .
  2. . /proc/<pid>/maps , . proc_maps crate.
  3. . DMTCP, , , . , [vdso], , , .
  4. . , , process_vm_readv , .
  5. рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рд░рдЬрд┐рд╕реНрдЯрд░ ред рдореИрдВ ptracePTRACE_GETREGS рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ ред рдпрд╣ рдЖрдкрдХреЛ рдмрдЪреНрдЪреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЗ рд╕рднреА рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдлрд┐рд░ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдЪреИрдирд▓ рдкрд░ рдПрдХ рд╕рдВрджреЗрд╢ рдореЗрдВ рд▓рд┐рдЦрддрд╛ рд╣реВрдВред

рдПрдХ рдмрдЪреНрдЪреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд░рдирд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓


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

  1. syscall. syscall , . , process_vm_readv [vdso] , , , syscall Linux, . , [vdso].
  2. , PTRACE_SETREGS. syscall, rax Linux, rdi, rsi, rdx, r10, r8, r9.
  3. PTRACE_SINGLESTEPSyscall рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдХрджрдо рдЙрдард╛рдПрдВ ред
  4. PTRACE_GETREGSSyscall рд░рд┐рдЯрд░реНрди рдорд╛рди рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рдкрдврд╝реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╕рдлрд▓ рд░рд╣рд╛ред

рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрд╡реАрдХреГрддрд┐ telepad


рдпрд╣ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдЖрджрд┐рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:

  1. рдПрдХ рдЬрдореЗ рд╣реБрдП рдмрдЪреНрдЪреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХрд╛рдВрдЯрд╛ ред рднреЗрдЬрдиреЗ рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ рд╣рдореЗрдВ рдПрдХ рдмрдЪреНрдЪреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдХреНрд▓реЛрди рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЗрд░рдлреЗрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  2. рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рдХрд╛рд░реНрдб рдЬрд╛рдВрдЪреЗрдВ ред рдЗрд╕ рдмрд╛рд░ рд╣рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛рдиреЗ рдФрд░ рдЖрдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдореМрдЬреВрджрд╛ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рдХрд╛рд░реНрдбреЛрдВ рдХреЛ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ред
  3. . , munmap.
  4. . mremap, .
  5. . mmap , process_vm_writev .
  6. . PTRACE_SETREGS , , rax. raise(SIGSTOP), . , telepad.
    • рдПрдХ рдордирдорд╛рдирд╛ рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЯреЗрд▓реАрдлрд╝рд░реНрдХ рд╕рд░реНрд╡рд░ рдЯреАрд╕реАрдкреА рдХрдиреЗрдХреНрд╢рди рдХреЗ рдлрд╝рд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХреЗ рдЬреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд┐рдпрд╛ рдерд╛, рдФрд░ рдбреЗрдЯрд╛ рд╡рд╛рдкрд╕ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИ рдпрд╛, рдпрджрд┐ yoyoрдЙрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╡рд╛рдкрд╕ рдЯреЗрд▓реАрдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИред
  7. рдирдИ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВPTRACE_DETACH ред

рдЕрдзрд┐рдХ рд╕рдХреНрд╖рдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


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

  • (vDSO). mremap vDSO , DMTCP, , . vDSO, . - , CPU glibc vDSO . , vDSO, syscall, rr, vDSO vDSO .
  • brk . DMTCP, , brk , brk . , , тАФ PR_SET_MM_MAP, .
  • . Rust ┬л ┬╗, , FS GS, , , - glibc pid tid, . CRIU, PID TID .
  • . , , , / , / FUSE. , TCP-, DMTCP CRIU , perf_event_open.
  • . fork() Unix , , .


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

  • рдХреНрд▓рд╕реНрдЯрд░ рдЯреЗрд▓реАрдлрд╝реЙрд░реНрдХ ред рдЯреЗрд▓реАрдлрд╝реЛрд░реНрдХ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рдгрд╛ рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрд░реЛрдд рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╕рднреА рдорд╢реАрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдерд╛ред рдпрд╣ рдкреВрд░реЗ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╡рд┐рддрд░рдг рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдпреВрдбреАрдкреА рдорд▓реНрдЯреАрдХрд╛рд╕реНрдЯ рдпрд╛ рдкреАрдпрд░-рдЯреВ-рдкреАрдпрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рд╢рд╛рдпрдж рд╕рдВрдЪрд╛рд░ рдкреНрд░рдзрд╛рдирддрд╛ рднреА рдЪрд╛рд╣рддреЗ рд╣реИрдВред
  • . CRIU , - userfaultfd. , SIGSEGV mmap. , ,  тАФ .
  • ! , . userfaultfd userfaultfd, , , MESI, . , , .  тАФ , . , , , . : syscall, -, syscall, . , . , , , . , , . , , ( , ) , .


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

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

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





All Articles