Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «АрхитСктура ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы UNIXΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 28

Автор ΠœΠΎΡ€ΠΈΡ Π‘Π°Ρ…

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, насколько Π²Ρ‹Π³ΠΎΠ΄Π½ΠΎ для запросов Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌΠΈΡΡ Π½Π° Π³Ρ€Π°Π½ΠΈΡ†Π°Ρ… Π±Π»ΠΎΠΊΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы ΠΈ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€, ΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ Π±Π»ΠΎΠΊΠ°. Π­Ρ‚ΠΎ позволяСт ядру ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ read ΠΈ всСх Π²Ρ‹Ρ‚Π΅ΠΊΠ°ΡŽΡ‰ΠΈΡ… послСдствий, связанных с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ обращСниями ΠΊ индСксу Π² поисках Π½ΠΎΠΌΠ΅Ρ€Π° Π±Π»ΠΎΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Π΄Π°Π½Π½Ρ‹Π΅, ΠΈ с ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ†ΠΈΠ΅ΠΉ Π·Π° использованиС Π±ΡƒΡ„Π΅Ρ€Π½ΠΎΠ³ΠΎ ΠΏΡƒΠ»Π°. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° стандартных ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° создана Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Π±ΡƒΡ„Π΅Ρ€ΠΎΠ² ядра; Π΅Π΅ использованиС позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΡ‚Π΅Ρ€ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, присущих процСссам, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΌ с нСбольшими порциями Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΠ·-Π·Π° Ρ‡Π΅Π³ΠΎ ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы нСэффСктивно (см. ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 5.4).

Выполняя Ρ†ΠΈΠΊΠ» чтСния, ядро опрСдСляСт, являСтся Π»ΠΈ Ρ„Π°ΠΉΠ» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ чтСния с ΠΏΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ΠΌ: Ссли процСсс считываСт ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Π²Π° Π±Π»ΠΎΠΊΠ°, ядро ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ всС ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅, Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅. На ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС Ρ†ΠΈΠΊΠ»Π° ядро Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Π½ΠΎΠΌΠ΅Ρ€ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ логичСского Π±Π»ΠΎΠΊΠ° Π² ΠΊΠΎΠΏΠΈΠΈ индСкса, хранящСйся Π² памяти, ΠΈ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ шагС сравниваСт Π½ΠΎΠΌΠ΅Ρ€ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ логичСского Π±Π»ΠΎΠΊΠ° со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, Π·Π°ΠΏΠΎΠΌΠ½Π΅Π½Π½Ρ‹ΠΌ Ρ€Π°Π½Π΅Π΅. Если эти Π½ΠΎΠΌΠ΅Ρ€Π° Ρ€Π°Π²Π½Ρ‹, ядро вычисляСт Π½ΠΎΠΌΠ΅Ρ€ физичСского Π±Π»ΠΎΠΊΠ° для чтСния с ΠΏΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ сохраняСт это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² пространствС процСсса для использования Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ breada. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, ΠΏΠΎΠΊΠ° процСсс Π½Π΅ считал ΠΊΠΎΠ½Π΅Ρ† Π±Π»ΠΎΠΊΠ°, ядро Π½Π΅ запустит Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ чтСния с ΠΏΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ΠΌ для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠ°.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΠ²ΡˆΠΈΡΡŒ ΠΊ Рисунку 4.9, вспомним, Ρ‡Ρ‚ΠΎ Π½ΠΎΠΌΠ΅Ρ€Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² Π² индСксС ΠΈΠ»ΠΈ Π² Π±Π»ΠΎΠΊΠ°Ρ… косвСнной адрСсации ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΡƒΡΡ‚ΡŒ Π΄Π°ΠΆΠ΅ Π½ΠΎΠΌΠ΅Ρ€Π° ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π±Π»ΠΎΠΊΠΎΠ² ΠΈ Π½Π΅Π½ΡƒΠ»Π΅Π²Ρ‹Π΅. Если процСсс попытаСтся ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°, ядро Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ запрос, выдСляя ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π±ΡƒΡ„Π΅Ρ€ Π² Ρ†ΠΈΠΊΠ»Π΅ read, очищая Π΅Π³ΠΎ содСрТимоС ΠΈ копируя Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π½Π΅Π³ΠΎ ΠΏΠΎ адрСсу ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π­Ρ‚ΠΎΡ‚ случай Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ с Ρ‚Π΅ΠΌ случаСм, ΠΊΠΎΠ³Π΄Π° процСсс ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π°, говорящий ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ послС этого мСста запись ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ. ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ² ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π°, ядро Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ процСссу Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ (см. ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 5.1).

Когда процСсс Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΡΠΈΡΡ‚Π΅ΠΌΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ read, ядро Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ индСкс Π½Π° врСмя выполнСния Π²Ρ‹Π·ΠΎΠ²Π°. ВпослСдствии, этот процСсс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ Π²ΠΎ врСмя чтСния ΠΈΠ· Π±ΡƒΡ„Π΅Ρ€Π°, ассоциированного с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ с Π±Π»ΠΎΠΊΠ°ΠΌΠΈ косвСнной адрСсации Π² индСксС. Если Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠΌΡƒ процСссу Π΄Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния Π² Ρ„Π°ΠΉΠ» Π² Ρ‚ΠΎ врСмя, ΠΊΠΎΠ³Π΄Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ процСсс приостановлСн, функция read ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ нСсогласованныС Π΄Π°Π½Π½Ρ‹Π΅. НапримСр, процСсс ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° нСсколько Π±Π»ΠΎΠΊΠΎΠ²; Ссли ΠΎΠ½ приостановился Π²ΠΎ врСмя чтСния ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ процСсс собирался вСсти запись Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ старыС Π΄Π°Π½Π½Ρ‹Π΅ Π²ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠΊΡƒ с Π½ΠΎΠ²Ρ‹ΠΌΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, индСкс остаСтся Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Π½Π° всС врСмя выполнСния Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ read для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ процСссы ΠΌΠΎΠ³Π»ΠΈ ΠΈΠΌΠ΅Ρ‚ΡŒ цСлостноС Π²ΠΈΠ΄Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π²ΠΈΠ΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» Ρƒ Ρ„Π°ΠΉΠ»Π° ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π―Π΄Ρ€ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ процСсс, Π²Π΅Π΄ΡƒΡ‰ΠΈΠΉ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅, Π² Ρ€Π΅ΠΆΠΈΠΌ Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° врСмя ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ запуск Π΄Ρ€ΡƒΠ³ΠΈΡ… процСссов. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΈ выполнСния систСмной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с индСкса снимаСтся Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°, Π½ΠΈΡ‡Ρ‚ΠΎ Π½Π΅ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈΠΌ процСссам ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΅Π³ΠΎ содСрТимоС. Π‘ΠΎ стороны систСмы Π±Ρ‹Π»ΠΎ Π±Ρ‹ нСсправСдливо Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ индСкс Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ всС врСмя ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, ΠΊΠΎΠ³Π΄Π° процСсс ΠΎΡ‚ΠΊΡ€Ρ‹Π» Ρ„Π°ΠΉΠ», ΠΈ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, ΠΊΠΎΠ³Π΄Π° Ρ„Π°ΠΉΠ» Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΊΡ€Ρ‹Ρ‚ этим процСссом, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‚ΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ процСсс Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ всС врСмя Ρ„Π°ΠΉΠ» ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ, Ρ‚Π΅ΠΌ самым Π½Π΅ давая Π΄Ρ€ΡƒΠ³ΠΈΠΌ процСссам возмоТности ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ. Если Ρ„Π°ΠΉΠ» ΠΈΠΌΠ΅Π΅Ρ‚ имя Β«/etc/ passwdΒ», Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ являСтся Ρ„Π°ΠΉΠ»ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ Π² процСссС рСгистрации для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ пароля, ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎ (ΠΈΠ»ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅ΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎ) Π²ΠΎΡΠΏΡ€Π΅ΠΏΡΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ рСгистрации Π² систСмС всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ядро снимаСт с индСкса Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ ΠΏΠΎ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΈ выполнСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° систСмной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅ΠΉ индСкс. Если Π²Ρ‚ΠΎΡ€ΠΎΠΉ процСсс внСсСт измСнСния Π² Ρ„Π°ΠΉΠ» ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ read, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ процСссом, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ процСсс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π½Π΅ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΎΠ΄Π½Π°ΠΊΠΎ структуры Π΄Π°Π½Π½Ρ‹Ρ… ядра сохранят свою ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ρ‡Ρ‚ΠΎ ядро выполняСт Π΄Π²Π° процСсса, ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ собой (Рисунок 5.8). Если Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π° процСсса Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ open Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ любой ΠΈΠ· Π½ΠΈΡ… Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΡΠΈΡΡ‚Π΅ΠΌΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ read ΠΈΠ»ΠΈ write, ядро ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ чтСния ΠΈ записи Π² любой ΠΈΠ· ΡˆΠ΅ΡΡ‚ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ: Ρ‡Ρ‚Π΅Π½ΠΈΠ΅1, Ρ‡Ρ‚Π΅Π½ΠΈΠ΅2, запись1, запись2, ΠΈΠ»ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅1, запись1, Ρ‡Ρ‚Π΅Π½ΠΈΠ΅2, запись2, ΠΈΠ»ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅1, запись1, запись2, Ρ‡Ρ‚Π΅Π½ΠΈΠ΅2 ΠΈ Ρ‚. Π΄. Бостав ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, считываСмой процСссом A, зависит ΠΎΡ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ систСма выполняСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ двумя процСссами; систСма Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ„Π°ΠΉΠ»Π΅ останутся Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΆΠ΅, ΠΊΠ°ΠΊΠΈΠΌΠΈ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ послС открытия Ρ„Π°ΠΉΠ»Π°. ИспользованиС возмоТности Π·Π°Ρ…Π²Π°Ρ‚Π° Ρ„Π°ΠΉΠ»Π° ΠΈ записСй (Ρ€Π°Π·Π΄Π΅Π» 5.4) позволяСт процСссу Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сохранСниС цСлостности Ρ„Π°ΠΉΠ»Π° послС Π΅Π³ΠΎ открытия.


#include β€Ήfcntl.hβ€Ί


/* процСсс A */

main() {

 int fd;

 char buf[512];

 fd = open("/etc/passwd", O_RDONLY);

 read(fd, buf, sizeof(buf)); /* Ρ‡Ρ‚Π΅Π½ΠΈΠ΅1 */

 read(fd, buf, sizeof(buf)); /* Ρ‡Ρ‚Π΅Π½ΠΈΠ΅2 */

}


/* процСсс B */

main() {

 int fd, i;

 char buf[512];

 for (i = 0; i β€Ή sizeof(buf); i++) buf[i] = 'a';

 fd = open("/etc/passwd", O_WRONLY);

 write(fd, buf, sizeof(buf)); /* запись1 */

 write(fd, buf, sizeof(buf)); /* запись2 */

}

Рисунок 5.8. ΠŸΡ€ΠΎΡ†Π΅ΡΡΡ‹, Π²Π΅Π΄ΡƒΡ‰ΠΈΠ΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ запись Ρ„Π°ΠΉΠ»Π°


НаконСц, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° РисункС 5.9 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ процСсс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π° ΠΈ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΠ· Π½Π΅Π³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ дСскрипторы. Π―Π΄Ρ€ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ со значСниями смСщСний Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ², ассоциированными с двумя Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΌΠΈ дСскрипторами, нСзависимо, ΠΈ поэтому массивы buf1 ΠΈ buf2 Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ выполнСния процСсса ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ процСсс Π² это врСмя Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ» запись Π² Ρ„Π°ΠΉΠ» Β«/etc/passwdΒ».


#include β€Ήfcntl.hβ€Ί

main() {

 int fd1, fd2;

 char buf1[512], buf2[512];

 fd1 = open("/etc/passwd", O_RDONLY);

 fd2 = open("/etc/passwd", O_RDONLY); 

 read(fd1, buf1, sizeof(buf1));

 read(fd2, buf2, sizeof(buf2));

}

Рисунок 5.9. Π§Ρ‚Π΅Π½ΠΈΠ΅ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° с использованиСм Π΄Π²ΡƒΡ… дСскрипторов

5.3 WRIΠ’Π•

Бинтаксис Π²Ρ‹Π·ΠΎΠ²Π° систСмной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ write (ΠΏΠΈΡΠ°Ρ‚ΡŒ):


number = write(fd, buffer, count);


Π³Π΄Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ fd, buffer, count ΠΈ number ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ смысл, Ρ‡Ρ‚ΠΎ ΠΈ для Π²Ρ‹Π·ΠΎΠ²Π° систСмной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ read. Алгоритм записи Π² ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ чтСния ΠΈΠ· ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. Однако, Ссли Π² Ρ„Π°ΠΉΠ»Π΅ отсутствуСт Π±Π»ΠΎΠΊ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΡΠΌΠ΅Ρ‰Π΅Π½ΠΈΡŽ Π² Π±Π°ΠΉΡ‚Π°Ρ… Π΄ΠΎ мСста, ΠΊΡƒΠ΄Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ запись, ядро выдСляСт Π±Π»ΠΎΠΊ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ alloc, ΠΈ присваиваСт Π΅ΠΌΡƒ Π½ΠΎΠΌΠ΅Ρ€ Π² соотвСтствии с Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ мСста Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ содСрТимого индСкса. Если смСщСниС Π² Π±Π°ΠΉΡ‚Π°Ρ… совпадаСт со смСщСниСм для Π±Π»ΠΎΠΊΠ° косвСнной адрСсации, ядру, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, придСтся Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ нСсколько Π±Π»ΠΎΠΊΠΎΠ² для использования ΠΈΡ… Π² качСствС Π±Π»ΠΎΠΊΠΎΠ² косвСнной адрСсации ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ². ИндСкс блокируСтся Π½Π° всС врСмя выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ write, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ядро ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ индСкс, выдСляя Π½ΠΎΠ²Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ; Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠΌ процСссам ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π·Ρ€ΡƒΡˆΠΈΡ‚ΡŒ индСкс, Ссли нСсколько процСссов Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ Π±Π»ΠΎΠΊΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ значСния смСщСний. Когда запись Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ, ядро ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π° Π² индСксС, Ссли Ρ„Π°ΠΉΠ» увСличился Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ρ‡Ρ‚ΠΎ процСсс записываСт Π² Ρ„Π°ΠΉΠ» Π±Π°ΠΉΡ‚ с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ 10240, наибольшим Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ срСди ΡƒΠΆΠ΅ записанных Π² Ρ„Π°ΠΉΠ»Π΅. ΠžΠ±Ρ€Π°Ρ‚ΠΈΠ²ΡˆΠΈΡΡŒ ΠΊ Π±Π°ΠΉΡ‚Ρƒ Π² Ρ„Π°ΠΉΠ»Π΅ ΠΏΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ bmap, ядро ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π² Ρ„Π°ΠΉΠ»Π΅ отсутствуСт Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ этому Π±Π°ΠΉΡ‚Ρƒ Π±Π»ΠΎΠΊ, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π±Π»ΠΎΠΊ косвСнной адрСсации. Π―Π΄Ρ€ΠΎ Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚ дисковый Π±Π»ΠΎΠΊ Π² качСствС Π±Π»ΠΎΠΊΠ° косвСнной адрСсации ΠΈ записываСт Π½ΠΎΠΌΠ΅Ρ€ Π±Π»ΠΎΠΊΠ° Π² ΠΊΠΎΠΏΠΈΠΈ индСкса, хранящСйся Π² памяти. Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ΠΎ выдСляСт дисковый Π±Π»ΠΎΠΊ ΠΏΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ записываСт Π΅Π³ΠΎ Π½ΠΎΠΌΠ΅Ρ€ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ вновь созданного Π±Π»ΠΎΠΊΠ° косвСнной адрСсации.

Π’Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ read, ядро Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Ρ†ΠΈΠΊΠ», записывая Π½Π° диск ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π±Π»ΠΎΠΊΡƒ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΈ этом Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ядро опрСдСляСт, Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ запись Ρ†Π΅Π»ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° ΠΈΠ»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅Π³ΠΎ части. Если записываСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π°ΡΡ‚ΡŒ Π±Π»ΠΎΠΊΠ°, ядро Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ считываСт Π±Π»ΠΎΠΊ с диска для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π·Π°Ρ‚Π΅Ρ€Π΅Ρ‚ΡŒ Ρ‚Π΅ части, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π° Ссли записываСтся Ρ†Π΅Π»Ρ‹ΠΉ Π±Π»ΠΎΠΊ, ядру Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ вСсь Π±Π»ΠΎΠΊ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² любом случаС ΠΎΠ½ΠΎ Π·Π°Ρ‚Ρ€Π΅Ρ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ содСрТимоС Π±Π»ΠΎΠΊΠ°. Π—Π°ΠΏΠΈΡΡŒ осущСствляСтся ΠΏΠΎΠ±Π»ΠΎΡ‡Π½ΠΎ, ΠΎΠ΄Π½Π°ΠΊΠΎ ядро ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΡƒΡŽ запись (Ρ€Π°Π·Π΄Π΅Π» 3.4) Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° диск, запоминая ΠΈΡ… Π² кСшС Π½Π° случай, Ссли ΠΎΠ½ΠΈ понадобятся вскорС Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ процСссу для чтСния ΠΈΠ»ΠΈ записи, Π° Ρ‚Π°ΠΊΠΆΠ΅ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π»ΠΈΡˆΠ½ΠΈΡ… ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΊ диску. ΠžΡ‚Π»ΠΎΠΆΠ΅Π½Π½Π°Ρ запись, вСроятно, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивна для ΠΊΠ°Π½Π°Π»ΠΎΠ², Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΉ процСсс Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ ΠΊΠ°Π½Π°Π» ΠΈ удаляСт ΠΈΠ· Π½Π΅Π³ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ (Ρ€Π°Π·Π΄Π΅Π» 5.12). Но Π΄Π°ΠΆΠ΅ для ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² отлоТСнная запись эффСктивна, Ссли Ρ„Π°ΠΉΠ» создаСтся Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈ вскорС Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½. НапримСр, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹ ΠΈ элСктронная ΠΏΠΎΡ‡Ρ‚Π°, ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Β«/tmpΒ» ΠΈ быстро ΡƒΠ΄Π°Π»ΡΡŽΡ‚ ΠΈΡ…. ИспользованиС ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ записи ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ количСство ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΊ диску для записи Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹.