Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios

Π§Ρ‚ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ ядром Linux ΠΈ iOS?

ЕстСствСнно, Π² Π΄Π²ΡƒΡ… Π±ΠΎΠ»ΡŒΡˆΠΈΡ… систСмах всСгда найдутся ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ. НапримСр, слоТно ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ использования Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΈ структур Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π°ΠΊΠΈΡ…, ΠΊΠ°ΠΊ списки, массивы, Π΄Π΅Ρ€Π΅Π²ΡŒΡ. Но я Ρ…ΠΎΡ‡Ρƒ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π΅ ΠΎΠ± этом.

iOS являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡˆΡ‚ΡƒΠΊΠΎΠΉ. Π“Π΄Π΅-Ρ‚ΠΎ Π½ΠΈΠΆΠ΅ Objective-C (Π° скоро ΠΌΡ‹ смоТСм Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΡƒΠΆΠ΅ ΠΈ ΠΎ Swift) Π·Π°Π»Π΅Π³Π°ΡŽΡ‚ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Π΅ пласты Π½Π΅-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΈ ΠΏΠΎΠ΄ Π½ΠΈΠΌΠΈ β€” Unix (Π° Ρ‚ΠΎΡ‡Π½Π΅Π΅ BSD) систСма. И Π½Π° Ρ‚ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ Ρƒ Linux ΠΈ Ρƒ iOS ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ. Но я ΠΈ Π½Π΅ ΠΎΠ± этом.

Π”Π°Π²Π°ΠΉΡ‚Π΅ сравним основныС структуры ядра Linux с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ iOS.

1. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ структуры

Π’ ΠΎΠ±Π΅ΠΈΡ… систСмах присутствуСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ количСство Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… структур. НапримСр, Π² iOS это Π±ΡƒΠ΄ΡƒΡ‚:

Π‘Ρ‚Ρ€ΠΎΠΊΠΈ (NSSrting);
ΠœΠ°ΡΡΠΈΠ²Ρ‹ (NSArray);
ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ (NSSet);
Π‘Π»ΠΎΠ²Π°Ρ€ΠΈ (NSDictionary);
ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ числовых ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² (NSNumber);
Бкаляры (NSRange).

Π― ΠΎΡΡ‚Π°Π²Π»ΡΡŽ Π·Π° скобками Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΈ всСх этих Ρ‚ΠΈΠΏΠΎΠ² (NSSet / NSMutableSet / NSCountedSet ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅).

ВсС эти Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΊΠ°ΠΊ классы. Π›Π΅Π³ΠΊΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚ΡƒΡ‚ Π½Π΅Ρ‚ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… структур: связных списков (linked lists) ΠΈ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π² (binary tree). НСт ΠΈΡ… ΠΏΠΎ Ρ‚ΠΎΠΉ простой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΡƒΠΆΠ΅ инкапсулированы Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π°ΠΊ, NSArray ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ вмСсто связного списка, Π° NSDictionary вмСсто Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ Π΄Π΅Ρ€Π΅Π²Π°, Π½Π΅ особСнно Π·Π°Π±ΠΎΡ‚ΡΡΡŒ ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Π₯ΠΎΡ€ΠΎΡˆΠΎ. А ΠΊΠ°ΠΊΠΈΠ΅ ΠΆΠ΅ основныС Ρ‚ΠΈΠΏΡ‹ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΉΡ‚ΠΈ Π² ядрС Linux? Π’ΡƒΡ‚ ситуация выглядит с Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. Π‘Π»ΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ стандартныС для ядра Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…. НаибольшиС ΠΏΡ€Π΅Ρ‚Π΅Π½Π΄Π΅Π½Ρ‚Ρ‹ Π½Π° это Π·Π²Π°Π½ΠΈΠ΅:

Π”Π²ΠΎΠΉΠ½ΠΎΠΉ связный список, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π² Ρ„Π°ΠΉΠ»Π΅ include/linux/list.h;
ΠšΡ€Π°ΡΠ½ΠΎ-Ρ‡Π΅Ρ€Π½Ρ‹Π΅ Π΄Π΅Ρ€Π΅Π²ΡŒΡ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² Ρ„Π°ΠΉΠ»Π΅ include/linux/rbtree.h;
РадиксныС Π΄Π΅Ρ€Π΅Π²ΡŒΡ (radix tree), ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² Ρ„Π°ΠΉΠ»Π΅ include/linux/radix-tree.h;
Π‘ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ массивы (bit arrays), ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² Ρ„Π°ΠΉΠ»Π΅ include/linux/bitmap.h;
Ну Π° Ρ‚Π°ΠΊΠΆΠ΅ сСмафоры ΠΈ спинлоки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² iOS Π² явном Π²ΠΈΠ΄Π΅ β€” Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, ΠΈΡ… Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π°Π»ΠΎΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΎΠ½ΠΈ скрыты Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ….

НСт Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ трСбования ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ эти Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Если Π²Ρ‹ Ρ‡Π΅ΠΌ-Ρ‚ΠΎ Π½Π΅Π΄ΠΎΠ²ΠΎΠ»ΡŒΠ½Ρ‹, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свою Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ‡Π΅Π³ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ. Π•Π΅, ΠΏΡ€Π°Π²Π΄Π°, ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ ΠΌΠΎΠ΄Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, Ссли Π²Ρ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅Ρ‚Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ свой пэтч. Π’ΠΎ всяком случаС, Π΅Π³ΠΎ Π½Π΅ ΠΏΡ€ΠΈΠΌΡƒΡ‚ ΠΌΠΎΠ΄Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, Ссли Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ вСской ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ это самому вмСсто использования ΡƒΠΆΠ΅ написанных структур.

Π˜Ρ‚Π°ΠΊ, Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π²Π° ΠΎΡ€Ρ‚ΠΎΠ³ΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ ΠΏΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΡŽ систСмы. iOS ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ достаточно чистый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΈ Apple стараСтся ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ внутрСнности ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΎΡ‚ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ программиста. Π―Π΄Ρ€ΠΎ Linux, Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ², опрСдСляСт ΠΎΡ‡Π΅Π½ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹, оставляя программиста Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ с Π½ΠΈΠΌΠΈ. Π“Ρ€ΡƒΠ±ΠΎ говоря, iOS это Π±Π»ΠΎΡ‡Π½ΠΎΠ΅ ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ, Π° ядро Linux прСдоставляСт Π² вашС распоряТСниС ΠΈΠ½ΠΎΠ³Π΄Π° ΠΊΠΈΡ€ΠΏΠΈΡ‡ΠΈ, Π° ΠΈΠ½ΠΎΠ³Π΄Π° просто Π³Π»ΠΈΠ½Ρƒ ΠΈ ΠΏΠ΅Ρ‡ΡŒ для ΠΎΠ±ΠΆΠΈΠ³Π°. Однако ΠΈ Ρ†Π΅Π»ΠΈ программирования Π² Π΄Π²ΡƒΡ… систСмах ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅: Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ядра создания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса, Ρ€Π°Π²Π½ΠΎ ΠΊΠ°ΠΊ Π½ΠΈΠΊΡ‚ΠΎ ΠΈ Π½Π΅ ΠΆΠ΄Π΅Ρ‚ ΠΎΡ‚ программиста Π² iOS написания ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Ρ‡ΠΈΠΏΠ° ΠΈ ΡˆΠΈΠ½Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

2. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΆΠ΅ ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя этими систСмами?

РСфСрСнсы. ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ ссылок Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.

Π”ΠΎ Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ iOS Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»Π° ΠΎΡ‚ программиста Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ счСтчик ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π­Ρ‚ΠΎ дСлалось с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Ρ‹Π·ΠΎΠ²Π° стандартного ΠΌΠ΅Ρ‚ΠΎΠ΄Π° retain для Π΅Π³ΠΎ увСличСния, release для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ. Π’ послСдних вСрсиях Objective-C Π² этом большС Π½Π΅Ρ‚ нСобходимости, систСма Π΄Π΅Π»Π°Π΅Ρ‚ это автоматичСски.

Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² β€” ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ориСнтированная Π²Π΅Ρ‰ΡŒ: Ρƒ тСбя Π΅ΡΡ‚ΡŒ нСсколько процСссов, совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Для простоты прСдставим, Ρ‡Ρ‚ΠΎ это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· процСссов Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ. Но Π²ΠΎΡ‚ вопрос: ΠΊΠΎΠ³Π΄Π° этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ освобоТдСн? И ΠΊΠ΅ΠΌ?

Π’ систСмах с автоматичСски ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠΌΠ΅Π΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ счСтчик, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ увСличиваСтся ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ссылку Π½Π° этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Когда этот ΠΊΡ‚ΠΎ-Ρ‚ΠΎ пСрСстаСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту ссылку (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, присваивая Nil), Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ счСтчик ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ.

Извиняюсь Π·Π° занудство, Π½ΠΎ Π²ΠΎΡ‚ ΠΊΠ°ΠΊ это происходит. Из своСго ΠΊΠΎΠ΄Π° я создаю Π½ΠΎΠ²ΡƒΡŽ строку Π² iOS:

ПослС исполнСния этого ΠΊΠΎΠ΄Π° создался ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° NSString. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ s Π΄Π΅Ρ€ΠΆΠΈΡ‚ ссылку Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΈ этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠΌΠ΅Π΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ счСтчик, Ρ€Π°Π²Π½Ρ‹ΠΉ 1.

ПослС исполнСния этой строчки ΠΊΠΎΠ΄Π° пСрСмСнная s2 Ρ‚Π°ΠΊΠΆΠ΅ ссылаСтся Π½Π° Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. И Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ счСтчик рСфСрСсов этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π΅Π½ 2.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ пСрСмСнная s большС Π½Π΅ ссылаСтся Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ β€” ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ счСтчик рСфСрСнсов Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Ρ€Π°Π²Π΅Π½ 1.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈ пСрСмСнная s2 большС Π½Π΅ Π΄Π΅Ρ€ΠΆΠΈΡ‚ ссылку Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ доступСн, Π΅Π³ΠΎ адрСс утСрян. Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ счСтчик ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ€Π°Π²Π΅Π½ 0. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ систСмой сбора мусора.

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ вСрнСмся ΠΊ ядру Linux. И сразу ΠΎΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ Ρ„Π°ΠΉΠ» incluce/linux/kref.h
Π’ этом Ρ„Π°ΠΉΠ»Π΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈΠΌΠ΅Π½Π½ΠΎ этого ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° β€” счСтчик рСфСрСнсов. Π€Π°ΠΉΠ» Π½Π΅ слишком большой, Π½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ.

Π―Π΄Ρ€ΠΎ Linux с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… процСссов это ΠΎΡ‡Π΅Π½ΡŒ интСрСсная ΡˆΡ‚ΡƒΠΊΠ°. Если Ρ‚Ρ‹ Π·Π°Π±Ρ‹Π» ΠΏΡ€ΠΎ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡŽ β€” Ρ‚Π²ΠΎΠΉ ΠΊΠΎΠ΄ ΠΎΡ‡Π΅Π½ΡŒ быстро Ρ€ΡƒΡ…Π½Π΅Ρ‚. ВмСстС со всСм ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ ядром, кстати. Π§Π°Ρ‰Π΅ всСго для этого Π½ΡƒΠΆΠ½Ρ‹ Π΄ΠΎΠ»ΠΈ сСкунды. Иногда сСкунды. Если Ρ‚Ρ‹ Π·Π°Π±Ρ‹Π» ΠΏΡ€ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ядро Ρ€Π΅ΠΈΠ½Ρ‚Π΅Ρ€Π°Π½Ρ‚Π½ΠΎ, ΠΈ Ρ‚Π²ΠΎΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅Ρ€Π²Π°Π½ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ β€” Ρ‚Π²ΠΎΠΉ ΠΊΠΎΠ΄ ΡƒΠΏΠ°Π΄Π΅Ρ‚. НСт Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ способа ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ это β€” Π΄Π°ΠΆΠ΅ Π·Π°ΠΏΡ€Π΅Ρ‚ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ Π½Π΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ синхронизации. Big Lock, ΠΊΠΎΠ³Π΄Π°-Ρ‚ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Π²ΡˆΠΈΠΉ Π² ядрС, ΠΈ позволявший ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ всС, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚Π²ΠΎΠ΅Π³ΠΎ процСсса, Π±Ρ‹Π» ΡƒΠ΄Π°Π»Π΅Π½ ΠΈΠ· ядра Π³ΠΎΠ΄Ρ‹ Π½Π°Π·Π°Π΄, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠΌ пользовались. НСт, ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎ, это довольно странная ситуация: Ρƒ тСбя Π΅ΡΡ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ способ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ всС свои ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с синхронизациСй, Π½ΠΎ Ρ‚Π΅Π±Π΅ говорят: Π½Π΅ Π½Π°Π΄ΠΎ это ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, это плохая ΠΊΠ°Ρ€ΠΌΠ°. Но Ρƒ тСбя Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π° Big Lock чудСсно ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ падСния Ρ‚Π²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Линус Π²ΠΎΠ»Π΅Π²Ρ‹ΠΌ усилиСм ΡƒΠ΄Π°Π»ΠΈΠ» этот ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ.

Π’Π°ΠΊ Π²ΠΎΡ‚, Ссли ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ поиск ΠΏΠΎ ядру, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ kref_init, Ρ‚ΠΎ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π² двухстах мСстах. Π§Ρ‚ΠΎ для ядра довольно ΠΌΠ½ΠΎΠ³ΠΎ. Каким ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ kref ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½?

ΠžΡ‚Π²Π΅Ρ‡Π°Ρ Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ вопрос: ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½ для Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅, для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈ счСтчик рСфСрСнсов Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… iOS β€” это ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ синхронизации управлСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ. ЕстСствСнно, Π² ядрС приходится Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ удалСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° своими Ρ€ΡƒΠΊΠ°ΠΌΠΈ, здСсь Π½Π΅Ρ‚ сборщика мусора, ΠΊΠ°ΠΊ Π² iOS (Ρ‚ΠΎΡ‡Π½Π΅Π΅ говоря, ΠΎΠ½ Π΅ΡΡ‚ΡŒ, Π½ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС, Π΄Π΅Π»Π°Π΅Ρ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π΅Ρ‰ΠΈ, ΠΈ ΠΎΠ½ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ связан с kref).

β€” Если ΡΡƒΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ kref, Ρ‚ΠΎ ΠΎΠ½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ:
β€” Π‘ΠΎΠ·Π΄Π°Π» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚? Π‘Ρ€Π°Π·Ρƒ ΡƒΠ²Π΅Π»ΠΈΡ‡ΡŒ Π΅ΠΌΡƒ kref.
β€” Взял ссылку Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚? Π£Π²Π΅Π»ΠΈΡ‡ΡŒ Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° kref Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ kref_get())
β€” ΠŸΠ΅Ρ€Π΅ΡΡ‚Π°Π» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ссылку Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚? УмСньши kref ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ (kref_put())
β€” kref ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° достиг нуля? ΠžΠ±ΡŠΠ΅ΠΊΡ‚ уничтоТаСтся β€” ссылка Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ-дСструктор пСрСдаСтся ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ kref_put(), ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈΠ· kref_put() автоматичСски.

3. Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Никакой ΠΌΠΎΡ€Π°Π»ΠΈ Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π½Π΅Ρ‚.

Ни для ΠΊΠΎΠ³ΠΎ Π½Π΅ Π½ΠΎΠ²ΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ядро Linux Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΡ… Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡƒ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΌΠΎΠ΄Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ядра Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡƒΡΠ»ΠΎΠΆΠ½ΡΡ‚ΡŒ Π΅Π³ΠΎ (ядро), ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ инфраструктуру Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΡ… ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ². Ѐилософия Ρ‚ΡƒΡ‚ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ β€œkeep it simple” β€” позволь Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ самому ΡΠ²Π°Ρ€ΠΈΡ‚ΡŒ свой суп ΠΈΠ· сырой Π³Ρ€ΡƒΠ΄ΠΈΠ½ΠΊΠΈ, Π½Π΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΠΉ Π΅ΠΌΡƒ супный Π½Π°Π±ΠΎΡ€ ΠΈΠ»ΠΈ ΠΊΡƒΡ€ΠΈΠ½Ρ‹ΠΉ ΠΏΠΎΡ€ΠΎΡˆΠΎΠΊ.

iOS, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΈΠ΄Π΅Ρ‚ ΠΏΠΎ ΠΏΡƒΡ‚ΠΈ сокрытия Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Π’ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π² iOS появился ARC, Automatic Reference Counting, систСма, которая слСдит Π·Π° счСтчиком ссылок ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ°Π΅Ρ‚ ΠΈΡ… автоматичСски. Π’ скором Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, ΠΏΠΎΡ…ΠΎΠΆΠ΅, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ автоматичСски Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ°Ρ‚ΡŒΡΡ, Π½ΠΎ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΡΡ, Π½Π° это ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ послСдниС Ρ‚Π΅Π½Π΄Π΅Π½Ρ†ΠΈΠΈ β€” Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ΡƒΠΆΠ΅ сСгодня ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² alloc (Π½Π°Ρ€ΠΈΠΌΠ΅Ρ€, [NSSting stringWithFormat] Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ [[NSString alloc] initWithFormat:]).

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Apple ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»Π° исходный ΠΊΠΎΠ΄ ядСр macOS ΠΈ iOS

Π‘ самого запуска macOS Apple рСгулярно ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ исходный ΠΊΠΎΠ΄ ядра Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. Π’ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ это позволяло сторонним Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π° Π΅Π³ΠΎ основС свои собствСнныС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹. Π‘ iOS всё Π±Ρ‹Π»ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ слоТнСС, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ядро мобильной ОБ Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ для ARM-Ρ‡ΠΈΠΏΠΎΠ², встроСнных Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ соврСмСнных смартфонов ΠΈ ΠΏΠ»Π°Π½ΡˆΠ΅Ρ‚ΠΎΠ². Π’Π΅ΠΏΠ΅Ρ€ΡŒ всё Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ измСнилось: купСртинский Π³ΠΈΠ³Π°Π½Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» Π½Π° GitHub исходный ΠΊΠΎΠ΄ XNU-ядСр macOS ΠΈ iOS с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ARM.

Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios. Π€ΠΎΡ‚ΠΎ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ энтузиастов Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ тСорСтичСски ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π½Π° iPhone ΠΈΠ»ΠΈ iPad. Но Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ всё Ρ‚Π°ΠΊ просто. Для Π½Π°Ρ‡Π°Π»Π° стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ это просто ядро β€” Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π° самыС Π²Π°ΠΆΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Он Π½Π΅ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π΅Ρ‚ интСрфСйс, Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ ΠΈΠ»ΠΈ прилоТСния β€” Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ всё Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ iOS ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм. Π­Ρ‚ΠΈ элСмСнты ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹, поэтому Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π±Ρ‹ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ с нуля. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅, прСдлагаСмая Apple лицСнзия Π½Π΅ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ гибкая, ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, лицСнзия GNU GPL Π½Π° Linux.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° ситуация ΠΈ с macOS β€” вряд Π»ΠΈ Π² блиТайшСС врСмя Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ MacBook с Ρ‡ΠΈΠΏΠΎΠΌ A11 Bionic. Apple Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ выпускаСт ΠΊΠΎΠ΄ для стороннСй Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Β«Π½Π° всякий случай»: ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ с процСссоров PowerPC Π½Π° Intel ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΡ‘Π» Ρ‚Π°ΠΊ быстро ΠΈΠΌΠ΅Π½Π½ΠΎ благодаря этому.

Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios. Π€ΠΎΡ‚ΠΎ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios

Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, Ρ‚Π°ΠΊΠΎΠΉ Ρ…ΠΎΠ΄ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ всё ΠΆΠ΅ заслуТиваСт уваТСния. Π’Π°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм смогут Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ Apple ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ систСмныС Π·Π°Π΄Π°Ρ‡ΠΈ. Ну Π° ΠΏΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ XNU-ядро ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΏΡ€Π°Π²Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ для написания Π½ΠΎΠ²ΠΎΠΉ ОБ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠšΠ°Ρƒ устроСна iOS

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ

Mac OS X

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма, установлСнная сСгодня Π½Π° всС ΠΌΠ°ΠΊΠΈ ΠΈ (Π² ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅) Π½Π° айдСвайсы, Π²Π΅Π΄Π΅Ρ‚ свою ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Π°ΠΆ с 1988 Π³ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² ΠΌΠΈΡ€Π΅ IT извСстСн Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ стал Π³ΠΎΠ΄ΠΎΠΌ выпуска ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π±Π΅Ρ‚Π°-вСрсии ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы NeXTSTEP. Π‘Π°ΠΌΠ° NeXTSTEP Π±Ρ‹Π»Π° Π΄Π΅Ρ‚ΠΈΡ‰Π΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π‘Ρ‚ΠΈΠ²Π° ДТобса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊ Ρ‚ΠΎΠΌΡƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΡƒΠΆΠ΅ ΠΏΠΎΠΊΠΈΠ½ΡƒΠ» Apple ΠΈ основал компанию NeXT, которая занялась Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² для ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π½ΡƒΠΆΠ΄.

Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚ своСго появлСния Π½Π° свСт NeXTSTEP Π±Ρ‹Π»Π° поистинС ΠΏΠ΅Ρ€Π΅Π΄ΠΎΠ²ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой, которая Π²ΠΊΠ»ΡŽΡ‡Π°Π»Π° Π² сСбя мноТСство тСхнологичСских Π½ΠΎΠ²Π°Ρ†ΠΈΠΉ. Π’ основС ОБ Π»Π΅ΠΆΠ°Π»ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ микроядро Mach, Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ ядра FreeBSD, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΡΡ‚Π°Π»ΠΎΠ½Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ сСтСвого стСка. Π‘ΠΎΠ»Π΅Π΅ высокоуровнСвыС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ NeXTSTEP Π±Ρ‹Π»ΠΈ написаны с использованиСм языка Objective-C ΠΈ прСдоставляли Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π±ΠΎΠ³Π°Ρ‚Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ API. БистСма Π±Ρ‹Π»Π° снабТСна Ρ€Π°Π·Π²ΠΈΡ‚Ρ‹ΠΌ ΠΈ вСсьма ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ графичСским интСрфСйсом (ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΠ»ΠΈΡΡŒ Π² OS X ΠΈ Π΄Π°ΠΆΠ΅ iOS) ΠΈ ΠΌΠΎΡ‰Π½ΠΎΠΉ срСдой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Π²ΡˆΠ΅ΠΉ Π² сСбя Π² Ρ‚ΠΎΠΌ числС извСстный всСм соврСмСнным Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€ интСрфСйса.

ПослС ΠΏΡ€ΠΎΠ²Π°Π»Π° NeXT ΠΈ возвращСния Π‘Ρ‚ΠΈΠ²Π° ДТобса Π² компанию Apple Π² 1997 Π³ΠΎΠ΄Ρƒ NeXTSTEP Π»Π΅Π³Π»Π° Π² основу ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Rhapsody, Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π°Ρ‡Π°Π»Π°ΡΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° систСмы-наслСдника Mac OS 9. Π’ 2000 Π³ΠΎΠ΄Ρƒ ΠΈΠ· Rhapsody Π±Ρ‹Π» Π²Ρ‹Π΄Π΅Π»Π΅Π½ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Darwin, исходники ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ‹ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ APSL, Π° ΡƒΠΆΠ΅ Π² 2001 Π³ΠΎΠ΄Ρƒ появилась Π½Π° свСт OS X 10.0, построСнная Π½Π° Π΅Π³ΠΎ основС. Бпустя нСсколько Π»Π΅Ρ‚ Darwin Π»Π΅Π³ Π² основу ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы для готовящСгося ΠΊ выпуску смартфона, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΄ΠΎ 2007-Π³ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ слухов, Π½Π΅ Π±Ρ‹Π»ΠΎ извСстно ΠΏΠΎΡ‡Ρ‚ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ.

Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios. Π€ΠΎΡ‚ΠΎ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios

XNU ΠΈ Darwin

Условно Π½Π°Ρ‡ΠΈΠ½ΠΊΡƒ OS X / iOS ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Ρ‚Ρ€ΠΈ логичСских уровня: ядро XNU, слой совмСстимости со стандартом POSIX (плюс Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ систСмныС Π΄Π΅ΠΌΠΎΠ½Ρ‹/сСрвисы) ΠΈ слой NeXTSTEP, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ графичСский стСк, Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΠΈ API ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Darwin Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° слоя ΠΈ распространяСтся свободно, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² вСрсии для OS X. iOS-Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ARM ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ Π² сСбя Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π·Π°ΠΊΡ€Ρ‹Ρ‚ ΠΈ распространяСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² составС ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΎΠΊ для айдСвайсов (судя ΠΏΠΎ всСму, это Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ портирования iOS Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ устройства).

По своСй сути Darwin β€” это «голая» UNIX-подобная ОБ, которая Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя POSIX API, шСлл, Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ сСрвисов, минимально Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для Ρ€Π°Π±ΠΎΡ‚Ρ‹ систСмы Π² консольном Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈ запуска UNIX-софта. Π’ этом ΠΏΠ»Π°Π½Π΅ ΠΎΠ½ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Π±Π°Π·ΠΎΠ²ΡƒΡŽ систСму FreeBSD ΠΈΠ»ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ установку ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Arch Linux, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ UNIX-софт, Π½ΠΎ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π½ΠΈ графичСской ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, Π½ΠΈ всСго Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ для запуска ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Ρ… графичСских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ· срСд GNOME ΠΈΠ»ΠΈ KDE.

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Darwin β€” Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½ΠΎΠ΅ ядро XNU, основанноС, ΠΊΠ°ΠΊ ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ сказано Π²Ρ‹ΡˆΠ΅, Π½Π° ядрС Mach ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ… ядра FreeBSD, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ процСссов, сСтСвой стСк ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ файловая систСма (слой VFS). Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Mach ΠΈ FreeBSD, ядро OS X ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ собствСнный API Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ², Π½Π°Π·Π²Π°Π½Π½Ρ‹ΠΉ I/O Kit ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ Π½Π° C++, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, сильно ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ.

iOS ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ нСсколько ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ XNU, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² силу Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ядро iOS Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎ, ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»Π° Apple, Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ. Π˜Π·Π²Π΅ΡΡ‚Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ собрано с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ опциями компилятора ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ памяти, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ нСбольшиС ΠΎΠ±ΡŠΠ΅ΠΌΡ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²ΠΊΠΈ Π² ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройствах. Π’ΠΎ всСм ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΌ это всС Ρ‚ΠΎ ΠΆΠ΅ XNU, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Π²ΠΈΠ΄Π΅ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ кСша (ядро + всС Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹/ΠΌΠΎΠ΄ΡƒΠ»ΠΈ) Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ /System/Library/Caches/com.apple.kernelcaches/kernelcache Π½Π° самом устройствС.

Π£Ρ€ΠΎΠ²Π½Π΅ΠΌ Π²Ρ‹ΡˆΠ΅ ядра Π² Darwin располагаСтся слой UNIX/BSD, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ Π² сСбя Π½Π°Π±ΠΎΡ€ стандартных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ языка си (libc, libmatch, libpthread ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅), Π° Ρ‚Π°ΠΊΠΆΠ΅ инструмСнты ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Π½Π°Π±ΠΎΡ€ шСллов (bash, tcsh ΠΈ ksh) ΠΈ Π΄Π΅ΠΌΠΎΠ½ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ launchd ΠΈ стандартный SSH-сСрвСр. ПослСдний, кстати, ΠΌΠΎΠΆΠ½ΠΎ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡƒΡ‚Π΅ΠΌ ΠΏΡ€Π°Π²ΠΊΠΈ Ρ„Π°ΠΉΠ»Π° /System/Library/LaunchDaemons/ssh.plist. Если, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π΄ΠΆΠ΅ΠΉΠ»Π±Ρ€Π΅ΠΉΠΊΠ½ΡƒΡ‚ΡŒ дСвайс.

На этом открытая Ρ‡Π°ΡΡ‚ΡŒ ОБ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Darwin заканчиваСтся, ΠΈ начинаСтся слой Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΈ ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ OS X / iOS.

Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios. Π€ΠΎΡ‚ΠΎ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios

Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios. Π€ΠΎΡ‚ΠΎ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios

Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ

Darwin Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ лишь Π±Π°Π·ΠΎΠ²ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Mac OS / iOS, которая ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π° Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹, запуск/остановка систСмы, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅Ρ‚ΡŒΡŽ, изоляция ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅). Π’Π° Ρ‡Π°ΡΡ‚ΡŒ систСмы, которая Π²ΠΈΠ΄Π½Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΈ прилоТСниям, Π² Π΅Π³ΠΎ состав Π½Π΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°Ρ… β€” Π½Π°Π±ΠΎΡ€Π°Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ сСрвисов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π² Ρ‚ΠΎΠΌ числС Π·Π° Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ графичСского окруТСния ΠΈ высокоуровнСвый API для сторонних ΠΈ стоковых ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

Как ΠΈ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… ОБ, API Mac OS ΠΈ iOS Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ Π½Π° ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΈ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ. Π‘Ρ‚ΠΎΡ€ΠΎΠ½Π½ΠΈΠΌ прилоТСниям доступСн ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΈ сильно ΡƒΡ€Π΅Π·Π°Π½Π½Ρ‹ΠΉ API, ΠΎΠ΄Π½Π°ΠΊΠΎ jailbreak-прилоТСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ.

Π’ стандартной поставкС Mac OS ΠΈ iOS ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ дСсятки Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π·Π° доступ ΠΊ самым Ρ€Π°Π·Π½Ρ‹ΠΌ функциям ОБ β€” ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ адрСсной ΠΊΠ½ΠΈΠ³ΠΈ (Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ AddressBook) Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ OpenGL (GLKit). Набор Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ графичСских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ объСдинСн Π² Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Cocoa API, своСго Ρ€ΠΎΠ΄Π° ΠΌΠ΅Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ основным возмоТностям ОБ. Π’ iOS ΠΎΠ½ носит имя Cocoa Touch ΠΈ отличаСтся ΠΎΡ‚ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½ΠΎΠΉ вСрсии ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ Π½Π° сСнсорныС дисплСи.

Π”Π°Π»Π΅ΠΊΠΎ Π½Π΅ всС Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ доступны Π² ΠΎΠ±Π΅ΠΈΡ… ОБ. МногиС ΠΈΠ· Π½ΠΈΡ… спСцифичны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для iOS. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ привСсти AssetsLibrary, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с фотографиями ΠΈ Π²ΠΈΠ΄Π΅ΠΎ, CoreBlueTooth, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ синСзубу, ΠΈΠ»ΠΈ iAd, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для Π²Ρ‹Π²ΠΎΠ΄Π° Ρ€Π΅ΠΊΠ»Π°ΠΌΠ½Ρ‹Ρ… объявлСний Π² прилоТСниях. Π”Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½ΠΎΠΉ вСрсии систСмы, ΠΎΠ΄Π½Π°ΠΊΠΎ врСмя ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Apple пСрСносит Ρ‚Π΅ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Π΅ части iOS Π² Mac OS ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ, ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ с Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠΌ CoreMedia, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π±Ρ‹Π» доступСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² iOS.

ВсС стандартныС систСмныС Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² систСмном ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ /System/Library/Frameworks/. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… находится Π² своСм собствСнном ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΌ Π±Π°Π½Π΄Π»ΠΎΠΌ (boundle), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя рСсурсы (изобраТСния ΠΈ описаниС элСмСнтов интСрфСйса), Ρ…ΠΈΠ΄Π΅Ρ€Ρ‹ языка си, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ API, Π° Ρ‚Π°ΠΊΠΆΠ΅ динамичСски Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ (Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ dylib) с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°.

Одна ΠΈΠ· интСрСсных особСнностСй Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² β€” ΠΈΡ… Π²Π΅Ρ€ΡΠΈΠΎΠ½Π½ΠΎΡΡ‚ΡŒ. Один Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ сразу нСсколько Ρ€Π°Π·Π½Ρ‹Ρ… вСрсий, поэтому ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ΅ для ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… вСрсий систСмы, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π΄Π°ΠΆΠ΅ нСсмотря Π½Π° измСнСния, внСсСнныС Π² Π½ΠΎΠ²Ρ‹Π΅ вСрсии ОБ. ИмСнно Ρ‚Π°ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ запуска старых iOS-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² iOS 7 ΠΈ Π²Ρ‹ΡˆΠ΅. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ΅ для iOS 6, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΎΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π·Π°ΠΏΡƒΡ‰Π΅Π½ΠΎ Π² iOS 6.

SpringBoard

Π£Ρ€ΠΎΠ²Π½Π΅ΠΌ Π²Ρ‹ΡˆΠ΅ находятся прилоТСния, систСмныС ΠΈ устанавливаСмыС ΠΈΠ· ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ΅ мСсто срСди Π½ΠΈΡ… Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, SpringBoard (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² iOS), Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π΅ домашний экран (Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ стол). ИмСнно ΠΎΠ½ΠΎ запускаСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ послС старта систСмных Π΄Π΅ΠΌΠΎΠ½ΠΎΠ², Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² ΠΈ старта дисплСйного сСрвСра (ΠΎΠ½ ΠΆΠ΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚ΠΈΠ½Π³Π°, ΠΎΠ½ ΠΆΠ΅ Quartz Compositor), ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰Π΅Π³ΠΎ Π·Π° Π²Ρ‹Π²ΠΎΠ΄ изобраТСния Π½Π° экран.

SpringBoard β€” это ΡΠ²ΡΠ·ΡƒΡŽΡ‰Π΅Π΅ Π·Π²Π΅Π½ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой ΠΈ Π΅Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, графичСский интСрфСйс, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ прилоТСния, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ, ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ увСдомлСния ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ настройками систСмы (начиная с iOS 7). Но Ρ‚Π°ΠΊΠΆΠ΅ это ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ событий, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ касаниС экрана ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΡ€ΠΎΡ‚ устройства. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Mac OS X, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ прилоТСния ΠΈ Π΄Π΅ΠΌΠΎΠ½Ρ‹-Π°Π³Π΅Π½Ρ‚Ρ‹ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² интСрфСйса (Finder, Dashboard, LaunchPad ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅), Π² iOS ΠΏΠΎΡ‡Ρ‚ΠΈ всС Π±Π°Π·ΠΎΠ²Ρ‹Π΅ возмоТности интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π² Ρ‚ΠΎΠΌ числС экран Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ Β«ΡˆΡ‚ΠΎΡ€ΠΊΠ°Β», Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² ΠΎΠ΄Π½ΠΎΠΌ SpringBoard.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… стоковых ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ iOS, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ /Applications, SpringBoard Π½Π°Ρ€Π°Π²Π½Π΅ с дисплСйным сСрвСром считаСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² ΠΈ располагаСтся Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ /System/Library/CoreServices/. Для выполнСния ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»Π΅ΠΆΠ°Ρ‚ Π² /System/Library/SpringBoardPlugins/. ΠšΡ€ΠΎΠΌΠ΅ всСго ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, Ρ‚Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, NowPlayingArtLockScreen.lockboundle, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠΉ Π·Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π½Π° экранС Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΈΠ»ΠΈ IncomingCall.serviceboundle, отвСтствСнный Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ входящСго Π·Π²ΠΎΠ½ΠΊΠ°.

Начиная с iOS 6 SpringBoard Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ Π½Π° Π΄Π²Π΅ части: сам Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ стол ΠΈ сСрвис BackBoard, отвСтствСнный Π·Π° ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈ с Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ ОБ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΉ с ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ (ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ HAL). BackBoard ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Ρ‚Π°ΠΊΠΈΡ… событий, ΠΊΠ°ΠΊ касания экрана, наТатия клавиш, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ показания аксСлСромСтра, Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° полоТСния ΠΈ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° освСщСнности, Π° Ρ‚Π°ΠΊΠΆΠ΅ управляСт запуском, приостановкой ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

SpringBoard ΠΈ BackBoard ΠΈΠΌΠ΅ΡŽΡ‚ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ большоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для iOS, Ρ‡Ρ‚ΠΎ, Ссли ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΡ… ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ, вся систСма застынСт Π½Π° мСстС ΠΈ Π΄Π°ΠΆΠ΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ΅ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° касания экрана. Π­Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ ΠΈΡ… ΠΎΡ‚ домашнСго экрана Android, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся всСго лишь стандартным ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ, Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ· систСмы (Π² этом случаС Π½Π° экранС останутся Π²ΠΏΠΎΠ»Π½Π΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ ΠΈ строка состояния со Β«ΡˆΡ‚ΠΎΡ€ΠΊΠΎΠΉΒ»).

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ

На самой Π²Π΅Ρ€ΡˆΠΈΠ½Π΅ этой ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Ρ‹ находятся прилоТСния. iOS Ρ€Π°Π·Π»ΠΈΡ‡Π°Π΅Ρ‚ встроСнныС (стоковыС) высоко ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ прилоТСния ΠΈ сторонниС, устанавливаСмыС ΠΈΠ· iTunes. И Ρ‚Π΅ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ хранятся Π² систСмС Π² Π²ΠΈΠ΄Π΅ Π±Π°Π½Π΄Π»ΠΎΠ², Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… Π½Π° Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ². Π Π°Π·Π½ΠΈΡ†Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ лишь Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π±Π°Π½Π΄Π» прилоТСния Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя нСсколько ΠΈΠ½ΡƒΡŽ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π° мСсто динамичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ исполняСмый Ρ„Π°ΠΉΠ» Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Mach-O.

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ хранСния стоковых ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ β€” /Applications/. Π’ iOS ΠΎΠ½ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ статичный ΠΈ измСняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΎ врСмя ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ систСмы; ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ доступ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚. Π‘Ρ‚ΠΎΡ€ΠΎΠ½Π½ΠΈΠ΅ прилоТСния, устанавливаСмыС ΠΈΠ· iTunes, Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ², хранятся Π² домашнСм ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ /var/mobile/Applications/ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ², ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… Π²ΠΈΠ΄ 4-2-2-2-4, Π³Π΄Π΅ Π΄Π²Π° ΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ β€” это ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹Π΅ числа. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ GUID β€” ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² систСмС ΠΈ Π½ΡƒΠΆΠ΅Π½ Π² Ρ‚ΠΎΠΌ числС для создания ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ пСсочницы (sandbox).

Sandbox

Π’ iOS пСсочницы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для изолирования сСрвисов ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎΡ‚ систСмы ΠΈ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°. КаТдоС стороннСС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ систСмных Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π² пСсочницС. Π‘ тСхничСской Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния пСсочница прСдставляСт собой классичСский для ΠΌΠΈΡ€Π° UNIX chroot, усилСнный систСмой ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ контроля доступа TrustedBSD MAC (ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра sandbox.kext), которая ΠΎΡ‚Ρ€Π΅Π·Π°Π΅Ρ‚ прилоТСниям Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ доступ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ домашнСго ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, Π½ΠΎ ΠΈ прямой доступ ΠΊ ΠΆΠ΅Π»Π΅Π·Ρƒ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠΌ систСмным функциям ОБ.

Π’ Ρ†Π΅Π»ΠΎΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ΅ Π² sandbox ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… возмоТностях:

ВсС эти ограничСния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ sandbox-ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŽ (Π½Π°Π±ΠΎΡ€Ρƒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ») container ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ стороннСму ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ. Для стоковых ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ограничСния, Π±ΠΎΠ»Π΅Π΅ мягкиС ΠΈΠ»ΠΈ ТСсткиС. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΌΠΎΠΆΠ½ΠΎ привСсти ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ (ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ MobileMail), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² Ρ†Π΅Π»ΠΎΠΌ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Π΅ ограничСния, ΠΊΠ°ΠΊ ΠΈ сторонниС прилоТСния, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊΠΎ всСму содСрТимому ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Library/. ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ ситуация β€” SpringBoard, Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ.

Вторая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” это Π·Π°Ρ‰ΠΈΡ‚Π° систСмы ΠΎΡ‚ самой сСбя ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π‘Π°Π³ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π² стоковом софтС ΠΎΡ‚ Apple, Ρ‚Π°ΠΊ ΠΈ Π² Π³ΠΎΠ»ΠΎΠ²Π°Ρ… ΡŽΠ·Π΅Ρ€ΠΎΠ². Sandbox Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ ΠΎΡ‚ ΠΎΠ±ΠΎΠΈΡ…. Π”Π°ΠΆΠ΅ Ссли Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊ Π½Π°ΠΉΠ΄Π΅Ρ‚ Π΄Ρ‹Ρ€Ρƒ Π² Safari ΠΈ попытаСтся Π΅Π΅ ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΎΠ½ всС Ρ€Π°Π²Π½ΠΎ останСтся Π² пСсочницС ΠΈ Π½Π΅ смоТСт Π½Π°Π²Ρ€Π΅Π΄ΠΈΡ‚ΡŒ систСмС. А ΡŽΠ·Π΅Ρ€ Π½Π΅ смоТСт Β«ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒ свой Π»ΡŽΠ±ΠΈΠΌΡ‹ΠΉ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Ρ‡ΠΈΠΊΒ» ΠΈ Π½Π΅ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚ Π³Π½Π΅Π²Π½Ρ‹Ρ… ΠΎΡ‚Π·Ρ‹Π²ΠΎΠ² Π² адрСс Apple. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π·Π½Π°ΡŽΡ‰ΠΈΠ΅ люди всСгда ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ jailbreak ΠΈ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρƒ sandbox (собствСнно, Π² этом ΠΈ Π΅ΡΡ‚ΡŒ смысл Π΄ΠΆΠ΅ΠΉΠ»Π±Ρ€Π΅ΠΉΠΊΠ°).

ΠœΠ½ΠΎΠ³ΠΎΠ·Π°Π΄Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ

Одна ΠΈΠ· самых спорных особСнностСй iOS β€” это рСализация многозадачности. Она Π²Ρ€ΠΎΠ΄Π΅ Π±Ρ‹ ΠΈ Π΅ΡΡ‚ΡŒ, Π° с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π΅Π΅ Π½Π΅Ρ‚. Π’ сравнСнии с Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ ОБ ΠΈ прСсловутым Android iOS Π½Π΅ являСтся ΠΌΠ½ΠΎΠ³ΠΎΠ·Π°Π΄Π°Ρ‡Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой Π² ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎΠΌ смыслС этого слова ΠΈ Π½Π΅ позволяСт прилоТСниям свободно Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Ρ„ΠΎΠ½Π΅. ВмСсто этого ОБ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для выполнСния ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΎ находится Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅.

Π’ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Ρ‚Π°ΠΊΠΎΠΉ API появился Π² iOS 4 (Π΄ΠΎ этого Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΠΎΠ³Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ стоковыС прилоТСния) ΠΈ наращивался ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ развития ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. БСгодня (Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎΠ± iOS 7) Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Background API позволяСт Π΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Π’Π°ΠΊΠΈΠ΅ ограничСния Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² Ρ„ΠΎΠ½Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ заряд Π±Π°Ρ‚Π°Ρ€Π΅ΠΈ ΠΈ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π»Π°Π³ΠΎΠ² интСрфСйса, Ρ‚Π°ΠΊ Π·Π½Π°ΠΊΠΎΠΌΡ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Android, Π³Π΄Π΅ прилоТСния ΠΌΠΎΠ³ΡƒΡ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ Π² Ρ„ΠΎΠ½Π΅ всС Ρ‡Ρ‚ΠΎ захотят. На самом Π΄Π΅Π»Π΅ Apple Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ сильно заботится ΠΎ сохранСнии Π±Π°Ρ‚Π°Ρ€Π΅ΠΈ, Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»Π° ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ для Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Ρ… дСйствий ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΈΡ… запуска Π² Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° смартфон Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΊ Wi-Fi-сСти ΠΈΠ»ΠΈ ΠΊ зарядному устройству.

Π’Ρ‹Π²ΠΎΠ΄Ρ‹

Π‘Ρ‚ΠΎΠΈΡ‚ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π·Π° врСмя своСго развития ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Π΅Π·Π΄Π° Π² ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ дСвайсы NeXTSTEP Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ растСряла всС свои достоинства, Π½ΠΎ ΠΈ ΠΏΡ€ΠΈΡƒΠΌΠ½ΠΎΠΆΠΈΠ»Π° ΠΈΡ…. МоТно Π΄ΠΎΠ»Π³ΠΎ ΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ россказни сотрудников Google, ΡƒΠ²Π΅Ρ€ΡΡŽΡ‰ΠΈΡ…, Ρ‡Ρ‚ΠΎ Android разрабатывался Π±Π΅Π· оглядки Π½Π° iOS, Π½ΠΎ Ρ„Π°ΠΊΡ‚ остаСтся Ρ„Π°ΠΊΡ‚ΠΎΠΌ: ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Android позаимствовал ΠΈΠΌΠ΅Π½Π½ΠΎ Ρƒ iOS. И Π½Π΅ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΡ‰Π΅, Π° благодаря ΠΈΡ… красотС ΠΈ эффСктивности.

Π¨Π΅ΡΡ‚ΡŒ стадий Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ iOS

4 Π―Π΄Ρ€ΠΎ. Π—Π΄Π΅ΡΡŒ всС ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ. Π―Π΄Ρ€ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ оборудования, послС Ρ‡Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π΅ΠΌΠΎΠ½Ρƒ launchd.

5 Launchd. Π­Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ процСсс iOS ΠΈ Mac OS X, ΠΎΠ½ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы, запускаСт Π΄Π΅ΠΌΠΎΠ½Ρ‹/слуТбы (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, backupd, configd, locationd), дисплСйный сСрвСр, Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ, Π° Π½Π° послСднСм этапС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΡ‚Π΄Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ SpringBoard. Π’ iOS ΠΈ Mac OS X launchd ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Π·Π°ΠΌΠ΅Π½Π° стандартного /bin/init Π² UNIX, ΠΎΠ΄Π½Π°ΠΊΠΎ Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΡˆΠΈΡ€Π΅.

6 SpringBoard. Π’ΠΎΡ‚ ΠΈ экран Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ!

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ этапа Π² этой Ρ†Π΅ΠΏΠΈ ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ chain of trust, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ свСрки Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подписи Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. Π¦ΠΈΡ„Ρ€ΠΎΠ²ΡƒΡŽ подпись ΠΈΠΌΠ΅ΡŽΡ‚ LLB, iBoot ΠΈ ядро, Ρ‡Ρ‚ΠΎ позволяСт ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ Ρ…Π°ΠΊΠ½ΡƒΡ‚ΠΎΠ³ΠΎ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° ΠΈΠ»ΠΈ ядра, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ стороннСй ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы ΠΈΠ»ΠΈ Π΄ΠΆΠ΅ΠΉΠ»Π±Ρ€Π΅ΠΉΠΊΠ°. ЕдинствСнный способ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ этот ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ β€” Π½Π°ΠΉΡ‚ΠΈ Π΄Ρ‹Ρ€Ρƒ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΎΠ² ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Сю для ΠΎΠ±Ρ…ΠΎΠ΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ. Π’ своС врСмя Π±Ρ‹Π»ΠΎ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ нСсколько Ρ‚Π°ΠΊΠΈΡ… Π΄Ρ‹Ρ€ Π² Boot ROM (Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ извСстСн эксплойт limera1n ΠΎΡ‚ geohot, Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ для iPhone 1–4), Π° Π² Π½Π°Ρ‡Π°Π»Π΅ 2014 Π³ΠΎΠ΄Π° ΠΈ Π² iBoot (Ρ…Π°ΠΊΠ΅Ρ€ iH8sn0w, эксплойт Ρ‚Π°ΠΊ ΠΈ Π½Π΅ Π±Ρ‹Π» ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½).

УдСрТивая ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«Π”ΠΎΠΌΠΎΠΉΒ» ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ iPhone, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ iBoot Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ Π² Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ восстановлСния (Recovery), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΡƒ iOS ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ iTunes. Однако ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ автоматичСского OTA-обновлСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ€Π΅ΠΆΠΈΠΌ, ΠΈΠΌΠ΅Π½ΡƒΠ΅ΠΌΡ‹ΠΉ DFU (Device Firmware Upgrade), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ активируСтся Π½Π° Ρ€Π°Π½Π½Π΅ΠΌ этапС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ сразу послС Boot ROM ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² Π΄Π²ΡƒΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ…: iBSS ΠΈ iBEC. По сути, это Π°Π½Π°Π»ΠΎΠ³ΠΈ LLB ΠΈ iBoot, конСчная Ρ†Π΅Π»ΡŒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… β€” Π½Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ОБ, Π° пСрСвСсти смартфон Π² Ρ€Π΅ΠΆΠΈΠΌ обновлСния.

Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios. Π€ΠΎΡ‚ΠΎ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios

Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios. Π€ΠΎΡ‚ΠΎ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ядрС основана ios

Π•Π²Π³Π΅Π½ΠΈΠΉ Π—ΠΎΠ±Π½ΠΈΠ½

Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Ρ€ΡƒΠ±Ρ€ΠΈΠΊΠΈ X-Mobile. По ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²Ρƒ сисадмин. Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉ Ρ„Π°Π½Π°Ρ‚ Linux, Plan 9, Π³Π°Π΄ΠΆΠ΅Ρ‚ΠΎΠ² ΠΈ Π΄Ρ€Π΅Π²Π½ΠΈΡ… Π²ΠΈΠ΄Π΅ΠΎΠΈΠ³Ρ€.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *