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

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

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

Рисунок 5.34. Π˜Π½Π΄Π΅ΠΊΡΡ‹ для Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ²


ИндСкс выступаСт интСрфСйсом ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактной Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой. ΠžΠ±Ρ‰Π°Ρ копия индСкса Π² памяти содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π½Π΅ Π·Π°Π²ΠΈΡΡΡ‰ΡƒΡŽ ΠΎΡ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° частный индСкс Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΡ‡Π½ΡƒΡŽ для Π½Π΅Π΅. Частный индСкс Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы содСрТит Ρ‚Π°ΠΊΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²Π° доступа ΠΈ располоТСниС Π±Π»ΠΎΠΊΠΎΠ², Π° ΠΎΠ±Ρ‰ΠΈΠΉ индСкс содСрТит Π½ΠΎΠΌΠ΅Ρ€ устройства, Π½ΠΎΠΌΠ΅Ρ€ индСкса Π½Π° дискС, Ρ‚ΠΈΠΏ Ρ„Π°ΠΉΠ»Π°, Ρ€Π°Π·ΠΌΠ΅Ρ€, ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅ ΠΈ счСтчик ссылок. Другая частная информация, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰Π°Ρ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму, содСрТится Π² супСрблокС ΠΈ структурС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ². На РисункС 5.34 ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Ρ‹ Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΎΠ±Ρ‰ΠΈΡ… индСксов Π² памяти ΠΈ Π΄Π²Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ частных индСксов ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм, ΠΎΠ΄Π½Π° для структур Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы вСрсии V, Π° другая для индСкса ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ (сСтСвой) систСмы. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ послСдний индСкс содСрТит достаточно ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ», находящийся Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ систСмС. Π£ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ структура, подобная индСксу; Π½ΠΎ исходный тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы позволяСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΠΉ сСмантичСским трСбованиям Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы UNIX ΠΈ Π½Π°Π·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΠΉ свой «индСкс», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ соотвСтствуСт ΠΎΠ±Ρ‰Π΅ΠΌΡƒ индСксу, Π½Π°Π·Π½Π°Ρ‡Π°Π΅ΠΌΠΎΠΌΡƒ ядром.

Ѐайловая систСма ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ΠΊΡƒΡŽ структуру, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ хранятся адрСса Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΡ… абстрактныС дСйствия. Когда ядру Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ, ΠΎΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΡΠ²Π΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы ΠΈ абстрактного дСйствия (см. Рисунок 5.34). ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ абстрактных дСйствий ΡΠ²Π»ΡΡŽΡ‚ΡΡ: ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°, Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ запись Π΄Π°Π½Π½Ρ‹Ρ…, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ индСкса для ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° (ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ namei ΠΈ iget), освобоТдСниС индСкса (ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ iput), коррСкция индСкса, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΡ€Π°Π² доступа, установка Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² Ρ„Π°ΠΉΠ»Π° (ΠΏΡ€Π°Π² доступа ΠΊ Π½Π΅ΠΌΡƒ), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π΄Π΅ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм. Π’ Π³Π»Π°Π²Π΅ 13 Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ использованиС систСмных абстракций ΠΏΡ€ΠΈ рассмотрСнии распрСдСлСнной Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы.

5.18 Π‘ΠžΠŸΠ ΠžΠ’ΠžΠ–Π”Π•ΠΠ˜Π• Π€ΠΠ™Π›ΠžΠ’ΠžΠ™ Π‘Π˜Π‘Π’Π•ΠœΠ«

Π―Π΄Ρ€ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ систСмы Π² своСй ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Ρ‚Π°ΠΊΠΈΠ΅ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½Ρ‹Π΅ ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°, ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΠ°Π· питания, ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ Ρ„Π°Ρ‚Π°Π»ΡŒΠ½ΠΎΠΌΡƒ сбою систСмы, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ содСрТимоС систСмы ΡƒΡ‚Ρ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ свою ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ: Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС доступно для использования, Π½ΠΎ нСкоторая Π½Π΅ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ мСсто. Команда fsck провСряСт ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π² случаС нСобходимости вносит Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму исправлСния. Она обращаСтся ΠΊ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС Ρ‡Π΅Ρ€Π΅Π· Π±Π»ΠΎΡ‡Π½Ρ‹ΠΉ ΠΈΠ»ΠΈ строковый интСрфСйс (Π³Π»Π°Π²Π° 10) Π² ΠΎΠ±Ρ…ΠΎΠ΄ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² доступа ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ. Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ противорСчивости Π΄Π°Π½Π½Ρ‹Ρ…, которая обнаруТиваСтся ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ fsck.

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

Если Π±Π»ΠΎΠΊ отсутствуСт ΠΊΠ°ΠΊ Π² спискС свободных Π±Π»ΠΎΠΊΠΎΠ², Ρ‚Π°ΠΊ ΠΈ Π² Ρ„Π°ΠΉΠ»Π΅, файловая систСма являСтся нСсогласованной, ΠΈΠ±ΠΎ, ΠΊΠ°ΠΊ ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅, всС Π±Π»ΠΎΠΊΠΈ обязаны Π³Π΄Π΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ. Вакая ситуация ΠΌΠΎΠ³Π»Π° Π±Ρ‹ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ, Ссли Π±Ρ‹ Π±Π»ΠΎΠΊ Π±Ρ‹Π» ΡƒΠ΄Π°Π»Π΅Π½ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ Π² список свободных Π±Π»ΠΎΠΊΠΎΠ² Π² супСрблокС. Если ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ запись ΠΏΡ€Π΅ΠΆΠ½Π΅Π³ΠΎ Ρ„Π°ΠΉΠ»Π° Π½Π° диск ΠΈ систСма Π΄Π°Π»Π° сбой ΠΏΠ΅Ρ€Π΅Π΄ записью супСрблока, Π±Π»ΠΎΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎ всСх списках, хранящихся Π½Π° дискС.

ИндСкс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ счСтчик связСй с Π½Π΅Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΈ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ Π½ΠΎΠΌΠ΅Ρ€ отсутствуСт Π²ΠΎ всСх ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы. ВсС Ρ„Π°ΠΉΠ»Ρ‹, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ°Π½Π°Π»ΠΎΠ² (Π½Π΅ΠΏΠΎΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Ρ…), Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΠΎΠΉ структурС Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы. Если систСма Π΄Π°Π»Π° сбой послС создания ΠΊΠ°Π½Π°Π»Π° ΠΈΠ»ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ созданиСм ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ этому ΠΊΠ°Π½Π°Π»Ρƒ ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»Ρƒ Ρ‚ΠΎΡ‡ΠΊΠΈ Π²Ρ…ΠΎΠ΄Π° Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, индСкс Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π² ΠΏΠΎΠ»Π΅ счСтчика связСй установлСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΡƒΡΡ‚ΡŒ Π΄Π°ΠΆΠ΅ ΠΎΠ½ явно Π½Π΅ присутствуСт Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС. Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ, Ссли с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ unlink Π±Ρ‹Π»Π° ΡƒΠ΄Π°Π»Π΅Π½Π° связь ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π±Π΅Π· ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ удалСния ΠΈΠ· ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° всСх содСрТащихся Π² Π½Π΅ΠΌ связСй с ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ.

Если Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ индСкса Π½Π΅Π²Π΅Ρ€Π΅Π½ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ поля Ρ‚ΠΈΠΏΠ° Ρ„Π°ΠΉΠ»Π° Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ), Π·Π½Π°Ρ‡ΠΈΡ‚ Π³Π΄Π΅-Ρ‚ΠΎ имССтся ошибка. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ, Ссли администратор смонтировал Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму, которая ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π° Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. Π―Π΄Ρ€ΠΎ обращаСтся ΠΊ Ρ‚Π΅ΠΌ дисковым Π±Π»ΠΎΠΊΠ°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, ΠΊΠ°ΠΊ каТСтся ядру, содСрТат индСксы, Π½ΠΎ Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ оказываСтся, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ содСрТат Π΄Π°Π½Π½Ρ‹Π΅.

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

Если число свободных Π±Π»ΠΎΠΊΠΎΠ² ΠΈΠ»ΠΈ свободных индСксов, записанноС Π² супСрблокС, Π½Π΅ совпадаСт с ΠΈΡ… количСством Π½Π° дискС, файловая систСма Ρ‚Π°ΠΊ ΠΆΠ΅ являСтся нСсогласованной. Π˜Ρ‚ΠΎΠ³ΠΎΠ²Π°Ρ информация Π² супСрблокС всСгда Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ состоянии Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы.

5.19 Π’Π«Π’ΠžΠ”Π«

Π­Ρ‚ΠΎΠΉ Π³Π»Π°Π²ΠΎΠΉ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ пСрвая Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠ½ΠΈΠ³ΠΈ, посвящСнная Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ особСнностСй Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы. Π“Π»Π°Π²Π° ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с трСмя Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΌΠΈ ядру: Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… дСскрипторов Ρ„Π°ΠΉΠ»Π°, систСмной Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ монтирования. Π’ Π½Π΅ΠΉ рассмотрСны Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ выполнСния систСмных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС, ΠΈ взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ этими функциями. Π˜ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ абстрактныС свойства Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ систСмС UNIX ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². НаконСц, описан ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ fsck, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΈ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС.

5.20 Π£ΠŸΠ ΠΠ–ΠΠ•ΠΠ˜Π―

1. Π Π°ΡΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΡƒΡŽ Π½Π° РисункС 5.35. КакоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ каТдая опСрация read ΠΈ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ этом содСрТится Π² Π±ΡƒΡ„Π΅Ρ€Π΅? ΠžΠΏΠΈΡˆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ происходит Π² ядрС Π²ΠΎ врСмя выполнСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° read.

2. Π’Π½ΠΎΠ²ΡŒ вСрнСмся ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π° РисункС 5.35 ΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ lseek(fd, 9000L, 0); стоит ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ read. Π§Ρ‚ΠΎ ΠΈΡ‰Π΅Ρ‚ процСсс ΠΈ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ этом происходит Π² ядрС?

3. ΠŸΡ€ΠΎΡ†Π΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ добавлСния записСй Π² ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π°, ΠΏΡ€ΠΈ этом имССтся Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ каТдая опСрация записи располагаСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ адрСсу смСщСния, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π΄Π²Π° процСсса ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ добавлСния записСй Π² ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π° ΠΈ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Π½Π΅ опасаясь Π·Π°Ρ‚Π΅Ρ€Π΅Ρ‚ΡŒ записи Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ. Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Ссли процСсс ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ Ρ„Π°ΠΉΠ» Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ добавлСния Π² ΠΊΠΎΠ½Π΅Ρ†, Π° Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΡƒΡŽ Π³ΠΎΠ»ΠΎΠ²ΠΊΡƒ установит Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ Ρ„Π°ΠΉΠ»Π°?

4. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° стандартных ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ выполнСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ чтСния ΠΈ записи благодаря Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ ΠΈ ΡΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΡŽ большого количСства ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ обращСния ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ. Как Π±Ρ‹ Π²Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ fread ΠΈ fwrite? Π§Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΄Π΅Π»Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ fopen ΠΈ fclose?


#include β€Ήfcntl.hβ€Ί

main() {

 int fd;

 char buf[1024];