Google рдиреЗ M:N рдлреНрд▓реЛ рдореЙрдбреЗрд▓рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рд╕реБрд░реВ рдХреЗрд▓реА рдЖрд╣реЗ

Google рд╕реБрдЪрд╡рд▓реЗ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдирд▓рдордзреНрдпреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА M: N рдереНрд░реЗрдбрд┐рдВрдЧ рдореЙрдбреЗрд▓рдЪреЗ рдХрд╛рд░реНрдп рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдШрдЯрдХрд╛рдВрдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрд╕рд╣ рдкреЕрдЪрдЪрд╛ рдкрд╣рд┐рд▓рд╛ рд╕рдВрдЪ. рдЧреБрдЧрд▓рдЪрд╛ рдкреБрдврд╛рдХрд╛рд░ рдмрдВрдж рджрд░рд╡рд╛рдЬрд╛рдЪреНрдпрд╛ рдорд╛рдЧреЗ рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ API рдЙрдШрдбрдгреНрдпрд╛рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╣реЗ рд╕реНрд╡рд┐рдЪрд╡рд░ Linux рдХрд░реНрдирд▓рд╕рд╛рдареА, рдЬреЗ M: N рдереНрд░реЗрдбрд┐рдВрдЧ рдореЙрдбреЗрд▓ рд╡рд╛рдкрд░рдгрд╛рд░реЗ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рд╕реНрдкреЗрд╕рдордзреНрдпреЗ рд▓рд╛рдЧреВ рдХреЗрд▓реЗрд▓реЗ рдорд▓реНрдЯреА-рдереНрд░реЗрдбреЗрдб рдЙрдкрдкреНрд░рдгрд╛рд▓реА рдкреБрд░рд╡рддреЗ. рдЙрдкрдкреНрд░рдгрд╛рд▓реА Google рджреНрд╡рд╛рд░реЗ рдХрдореАрддрдХрдореА рд╡рд┐рд▓рдВрдм рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реА рдЬрд╛рддреЗ. рдереНрд░реЗрдб рд╡рд┐рддрд░рдгрд╛рдЪреЗ рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ рдЖрдгрд┐ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдкреВрд░реНрдгрдкрдгреЗ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдЪреНрдпрд╛ рдЬрд╛рдЧреЗрдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ, рдЬреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдХрдореА рдХрд░реВрди рд╕рдВрджрд░реНрдн рд╕реНрд╡рд┐рдЪрдЪреА рд╕рдВрдЦреНрдпрд╛ рд▓рдХреНрд╖рдгреАрдпрд░реАрддреНрдпрд╛ рдХрдореА рдХрд░реВ рд╢рдХрддреЗ.

рдпрд╛ рдЙрдкрдкреНрд░рдгрд╛рд▓реАрдЪреЗ рдХрд╛рд░реНрдп рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдирд▓ рд╕реНрддрд░рд╛рд╡рд░ SwitchTo API рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ, рддреАрди рдореВрд▓рднреВрдд рдСрдкрд░реЗрд╢рдиреНрд╕ - рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рд╛, рдкреБрдиреНрд╣рд╛ рд╕реБрд░реВ рдХрд░рд╛ рдЖрдгрд┐ рд╕реНрд╡реЕрдк (рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ). рдХрд░реНрдирд▓рдордзреНрдпреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдирд╡реАрди FUTEX_SWAP рдСрдкрд░реЗрд╢рдирд╕рд╛рдареА рдПрдХ рдХреЛрдб рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдЖрд╣реЗ, рдкреВрд░рдХ FUTEX_WAIT рдЖрдгрд┐ FUTEX_WAKE, рдЖрдгрд┐ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рд╡рд╛рдкрд░рдХрд░реНрддрд╛-рд╕реНрдкреЗрд╕ рд▓рд╛рдпрдмреНрд░рд░реА рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рдлреНрд░реЗрдорд╡рд░реНрдХ рдкреНрд░рджрд╛рди рдХрд░рддреЗ. FUTEX_SWAP рджреЗрдЦреАрд▓ RPC рдкреНрд░рдорд╛рдгреЗрдЪ рдЯрд╛рд╕реНрдХ рджрд░рдореНрдпрд╛рди рд╕рдВрджреЗрд╢ рдкрд╛рд╕ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╕рдзреНрдпрд╛, рдХрд╛рд░реНрдпрд╛рдВрдордзреАрд▓ рд╕рдВрджреЗрд╢ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, FUTEX_WAIT рдЖрдгрд┐ FUTEX_WAKE рд╡рд░ рдХрд┐рдорд╛рди рдЪрд╛рд░ рдХреЙрд▓ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗрдд, рддрд░ FUTEX_SWAP рд╡рд╛рдкрд░рд▓реНрдпрд╛рдиреЗ рдПрдХ рдСрдкрд░реЗрд╢рди 5-10 рдкрдЯ рд╡реЗрдЧрд╛рдиреЗ рдкреВрд░реНрдг рд╣реЛрдК рд╢рдХрддреЗ.

Google рдиреЗ M:N рдлреНрд▓реЛ рдореЙрдбреЗрд▓рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рд╕реБрд░реВ рдХреЗрд▓реА рдЖрд╣реЗ

рд╕рдзреНрдпрд╛, рдкреНрд░рд╡рд╛рд╣ рдореЙрдбреЗрд▓ 1:1 рдЖрдгрд┐ N:1 рдкреНрд░рд╛рдореБрдЦреНрдпрд╛рдиреЗ рд╡реНрдпрд╡рд╣рд╛рд░рд╛рдд рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддрд╛рдд. 1:1 рдореЙрдбреЗрд▓ рдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ NPTL (POSIX рдереНрд░реЗрдбреНрд╕) рдЖрдгрд┐ рд▓рд┐рдирдХреНрд╕ рдереНрд░реЗрдбреНрд╕, рдЖрдгрд┐ рдХрд░реНрдирд▓ рд╕реНрддрд░рд╛рд╡рд░ рд╡рд╛рдкрд░рдХрд░реНрддрд╛-рд╕реНрдкреЗрд╕ рдереНрд░реЗрдбрдЪреЗ рдереЗрдЯ рдореЕрдкрд┐рдВрдЧ рдереНрд░реЗрдбрд╡рд░ (рдПрдХреНрдЭрд┐рдХреНрдпреБрд╢рди рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧрдЪреЗ рдпреБрдирд┐рдЯ) рд╕реВрдЪрд┐рдд рдХрд░рддреЗ. N:1 рдореЙрдбреЗрд▓ рдордзреНрдпреЗ рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЖрд╣реЗ GNU Pth, рд╡рд╛рдкрд░рдХрд░реНрддрд╛-рд╕реНрдкреЗрд╕рдордзреНрдпреЗ рдереНрд░реЗрдб рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ рдЖрдгрддреЗ рдЖрдгрд┐ N рд╡рд╛рдкрд░рдХрд░реНрддрд╛-рд╕реНрдкреЗрд╕ рдереНрд░реЗрдбреНрд╕рдирд╛ рдХрд░реНрдирд▓рдордзреАрд▓ рдПрдХрд╛рдЪ рдереНрд░реЗрдбрд▓рд╛ рдмрд╛рдВрдзрдгреНрдпрд╛рд╕рд╛рдареА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ, рдХрд░реНрдирд▓рд▓рд╛ рд╡рд╛рдкрд░рдХрд░реНрддрд╛-рдереНрд░реЗрдбреНрд╕рдмрджреНрджрд▓ рдорд╛рд╣рд┐рддреА рдирд╕рддрд╛рдирд╛.

1:1 рдореЙрдбреЗрд▓рдЪрд╛ рдореБрдЦреНрдп рддреЛрдЯрд╛ рдореНрд╣рдгрдЬреЗ рдХрд░реНрдирд▓ рдЖрдгрд┐ рдпреБрдЬрд░ рд╕реНрдкреЗрд╕рдордзреАрд▓ рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧрдЪреЗ рдореЛрдареЗ рдУрд╡реНрд╣рд░рд╣реЗрдб. N:1 рдореЙрдбреЗрд▓ рдпрд╛ рд╕рдорд╕реНрдпреЗрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рддреЗ, рдкрд░рдВрддреБ рдПрдХ рдирд╡реАрди рддрдпрд╛рд░ рдХрд░рддреЗ - рдХрд░реНрдирд▓рдордзреАрд▓ рдереНрд░реЗрдб рд╣реЗ рдПрдХреНрдЭрд┐рдХреНрдпреВрд╢рди рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧрдЪреЗ рдПрдХ рдЕрд╡рд┐рднрд╛рдЬреНрдп рдПрдХрдХ рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХрд░реНрдирд▓рдордзреАрд▓ рдПрдХрд╛рдЪ рдереНрд░реЗрдбрд▓рд╛ рдмрд╛рдВрдзрд▓реЗрд▓реЗ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдереНрд░реЗрдб рд╕реАрдкреАрдпреВ рдХреЛрд░рдордзреНрдпреЗ рд╕реНрдХреЗрд▓ рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реАрдд рдЖрдгрд┐ рддреНрдпрд╛рд╕ рдмрд╛рдВрдзреАрд▓ рд╣реЛрддрд╛рдд. рдПрдХрдЪ CPU рдХреЛрд░.

M:N рдореЙрдбреЗрд▓ рд╣рд╛рдпрдмреНрд░реАрдб рдЖрд╣реЗ рдЖрдгрд┐ N рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рд╕реНрдкреЗрд╕ рдереНрд░реЗрдбреНрд╕рд▓рд╛ M рдХрд░реНрдирд▓ рдереНрд░реЗрдбреНрд╕рдордзреНрдпреЗ рдореЕрдк рдХрд░реВрди рд╡рд░реАрд▓ рд╕рд░реНрд╡ рддреЛрдЯреЗ рджреВрд░ рдХрд░рддреЗ, рджреЛрдиреНрд╣реА рд╕рдВрджрд░реНрдн рд╕реНрд╡рд┐рдЪ рдУрд╡реНрд╣рд░рд╣реЗрдб рдХрдореА рдХрд░рддреЗ рдЖрдгрд┐ CPU рдХреЛрд░рдордзреНрдпреЗ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХрд░рддреЗ. рдпрд╛ рдкрд░реНрдпрд╛рдпрд╛рдЪреА рдХрд┐рдВрдордд рдореНрд╣рдгрдЬреЗ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рд╕реНрдкреЗрд╕рдордзреНрдпреЗ рдереНрд░реЗрдб рд╢реЗрдбреНрдпреВрд▓рд░рдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреА рдореЛрдареА рдЧреБрдВрддрд╛рдЧреБрдВрдд рдЖрдгрд┐ рдХрд░реНрдирд▓ рд╢реЗрдбреНрдпреВрд▓рд░рд╕рд╣ рдХреНрд░рд┐рдпрд╛ рд╕рдордиреНрд╡рдпрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдпрдВрддреНрд░рдгрд╛рдВрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛.

рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛