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

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

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

Π―Π΄Ρ€ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ открытия для Π±Π»ΠΎΡ‡Π½ΠΎΠ³ΠΎ устройства, содСрТащСго Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму, Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ это ΠΏΡ€ΠΈ нСпосрСдствСнном ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ Π±Π»ΠΎΡ‡Π½ΠΎΠ³ΠΎ устройства (Π³Π»Π°Π²Π° 10). ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° открытия устройства ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ провСряСт сущСствованиС Ρ‚Π°ΠΊΠΎΠ³ΠΎ устройства, ΠΈΠ½ΠΎΠ³Π΄Π° производя ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ структур Π΄Π°Π½Π½Ρ‹Ρ… Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° ΠΈ посылая ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚ΡƒΡ€Π΅. Π—Π°Ρ‚Π΅ΠΌ ядро выдСляСт ΠΈΠ· Π±ΡƒΡ„Π΅Ρ€Π½ΠΎΠ³ΠΎ ΠΏΡƒΠ»Π° свободный Π±ΡƒΡ„Π΅Ρ€ (Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° getblk) для хранСния супСрблока ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы ΠΈ считываСт супСрблок, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° read. Π―Π΄Ρ€ΠΎ сохраняСт ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° индСкс ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ монтируСтся систСма, давая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π°ΠΌ поиска Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… ΠΈΠΌΠ΅Π½, содСрТащих имя «…», ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°Ρ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ монтирования, ΠΊΠ°ΠΊ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ дальшС. Оно Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ индСкс ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы ΠΈ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° индСкс Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ монтирования. Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, мСсто (Ρ‚ΠΎΡ‡ΠΊΠ°) монтирования ΠΈ ΠΊΠΎΡ€Π΅Π½ΡŒ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы логичСски эквивалСнтны, ΠΈ ядро ΡƒΠΏΡ€ΠΎΡ‡ΠΈΠ²Π°Π΅Ρ‚ эту ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ благодаря ΠΈΡ… ΡΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΡŽ Π² ΠΎΠ΄Π½ΠΎΠΉ записи Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ монтирования. ΠŸΡ€ΠΎΡ†Π΅ΡΡΡ‹ большС Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ индСксу ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° β€” Ρ‚ΠΎΡ‡ΠΊΠΈ монтирования.

Π―Π΄Ρ€ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ поля Π² супСрблокС Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, очищая поля для списка свободных Π±Π»ΠΎΠΊΠΎΠ² ΠΈ списка свободных индСксов ΠΈ устанавливая число свободных индСксов Π² супСрблокС Ρ€Π°Π²Π½Ρ‹ΠΌ 0. ЦСлью ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (задания Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎΠ»Π΅ΠΉ) являСтся свСдСниС ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡƒ опасности Ρ€Π°Π·Ρ€ΡƒΡˆΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму, Ссли ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ осущСствляСтся послС Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ систСмы. Если ядро Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² супСрблокС ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ свободныС индСксы, Ρ‚ΠΎ это ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ запуску Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ialloc, Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ поиск Π½Π° дискС свободных индСксов. К соТалСнию, Ссли список свободных дисковых Π±Π»ΠΎΠΊΠΎΠ² испорчСн, ядро Π½Π΅ исправляСт этот список ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ (см. Ρ€Π°Π·Π΄Π΅Π» 5.17 ΠΎ сопровоТдСнии Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы). Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния, запрСщая ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ всСх ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ записи Π² систСмС, ядро устанавливаСт Π² супСрблокС ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Π»Π°Π³. НаконСц, ядро ΠΏΠΎΠΌΠ΅Ρ‡Π°Π΅Ρ‚ индСкс ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΠΊΠ°ΠΊ Β«Ρ‚ΠΎΡ‡ΠΊΡƒ монтирования», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ процСссы ΠΏΠΎΠ·Π΄Π½Π΅Π΅ ΠΌΠΎΠ³Π»ΠΈ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Π½Π΅Π΅. На РисункС 5.24 прСдставлСн Π²ΠΈΠ΄ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… структур Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ mount.

5.14.1 ΠŸΠ΅Ρ€Π΅ΡΠ΅Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΡ‡Π΅ΠΊ монтирования Π² ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π°Ρ… поиска ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ²

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ рассмотрим ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² namei ΠΈ iget Π² случаях, ΠΊΠΎΠ³Π΄Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ поиска Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΠΎΡ‡ΠΊΡƒ монтирования. Π’ΠΎΡ‡ΠΊΡƒ монтирования ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΡΠ΅Ρ‡ΡŒ двумя способами: ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, Π³Π΄Π΅ производится ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму, которая монтируСтся (Π² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΎΡ‚ глобального корня ΠΊ листу), ΠΈ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ. Π­Ρ‚ΠΈ способы ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ shell'Π°.

mount /dev/dsk1 /usr

cd /usr/src/uts

cd ../../..

По ΠΊΠΎΠΌΠ°Π½Π΄Π΅ mount послС выполнСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… логичСских ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ запускаСтся систСмная функция mount, которая ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму Π² дисковом Ρ€Π°Π·Π΄Π΅Π»Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ Β«/dev/dsk1Β» ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Β«/usrΒ». ΠŸΠ΅Ρ€Π²Π°Ρ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄ cd (ΡΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³) ΠΏΠΎΠ±ΡƒΠΆΠ΄Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΉ процСссор shell Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΡΠΈΡΡ‚Π΅ΠΌΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ chdir, выполняя ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ, ядро Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ имя ΠΏΡƒΡ‚ΠΈ поиска, ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°ΡŽΡ‰Π΅Π³ΠΎ Ρ‚ΠΎΡ‡ΠΊΡƒ монтирования Π² Β«/usrΒ». Вторая ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄ cd ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ядро Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ имя ΠΏΡƒΡ‚ΠΈ поиска ΠΈ пСрСсСкаСт Ρ‚ΠΎΡ‡ΠΊΡƒ монтирования Π² Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ Β«..Β» ΠΈΠΌΠ΅Π½ΠΈ.

АрхитСктура ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы UNIX (Π›ΠŸ) - pic_38.png

Рисунок 5.24. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… послС монтирования

Для случая пСрСсСчСния Ρ‚ΠΎΡ‡ΠΊΠΈ монтирования Π² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, Π³Π΄Π΅ производится ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму, которая монтируСтся, рассмотрим ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° iget (Рисунок 5.25), которая ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Π° вСрсии Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π½Π° РисункС 4.3, ΠΏΠΎΡ‡Ρ‚ΠΈ Π²ΠΎ всСм, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ производится ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, являСтся Π»ΠΈ индСкс индСксом Ρ‚ΠΎΡ‡ΠΊΠΈ монтирования. Если индСкс ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΡƒ, ядро ΡΠΎΠ³Π»Π°ΡˆΠ°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ это индСкс Ρ‚ΠΎΡ‡ΠΊΠΈ монтирования. Оно ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ монтирования запись с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ индСксом Ρ‚ΠΎΡ‡ΠΊΠΈ монтирования ΠΈ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Π½ΠΎΠΌΠ΅Ρ€ устройства ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы. Π—Π°Ρ‚Π΅ΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π½ΠΎΠΌΠ΅Ρ€ устройства ΠΈ Π½ΠΎΠΌΠ΅Ρ€ индСкса корня, ΠΎΠ±Ρ‰Π΅Π³ΠΎ для всСх Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм, ядро обращаСтся ΠΊ индСксу корня ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ устройства ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΡ€ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ этот индСкс. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ смСны ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ядро обращаСтся ΠΊ индСксу ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Β«/usrΒ» ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ производится ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ этот индСкс ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΡƒ Β«Ρ‚ΠΎΡ‡ΠΊΠ° монтирования», Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ монтирования индСкс корня ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы ΠΈ обращаСтся ΠΊ этому индСксу.

Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ iget

входная информация: Π½ΠΎΠΌΠ΅Ρ€ индСкса Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС

выходная информация: Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ индСкс

{

Β do
Β {

  if (индСкс в индСксном кСшС) 
{

Β Β Β if (индСкс Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½)Β 
{

    sleep (до освобоТдСния индСкса);

Β Β Β  continue; /* Ρ†ΠΈΠΊΠ» с условиСм продолТСния */

Β Β  }

Β Β  /* ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° для Ρ‚ΠΎΡ‡Π΅ΠΊ монтирования */

Β Β Β if (индСкс являСтся индСксом Ρ‚ΠΎΡ‡ΠΊΠΈ монтирования)
Β {

Β Β Β  Π½Π°ΠΉΡ‚ΠΈ запись Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ монтирования для Ρ‚ΠΎΡ‡ΠΊΠΈ монтирования;

Β Β Β  ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ монтирования;

Β Β Β  ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ индСкса корня для просмотра;

Β Β Β Β continue; /* ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° */

Β Β  }

Β Β Β if (индСкс Π² спискС свободных индСксов)
Β ΡƒΠ±Ρ€Π°Ρ‚ΡŒ ΠΈΠ· списка свободных индСксов;

Β Β  ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ счСтчик ссылок для индСкса;

   return (индСкс);

Β  }

Β  /* индСкс отсутствуСт Π² индСксном кСшС */

Β  ΡƒΠ±Ρ€Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ индСкс ΠΈΠ· списка свободных индСксов;

Β  ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ индСкса ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы;

Β  ΡƒΠ±Ρ€Π°Ρ‚ΡŒ индСкс ΠΈΠ· старой Ρ…Π΅Ρˆ-ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² Π½ΠΎΠ²ΡƒΡŽ;

Β  ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ индСкс с диска (Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ bread);

Β  ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ индСкс (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, установив счСтчик ссылок Π² 1);

  return (индСкс);

Β }

}

Рисунок 5.25. ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° получСния доступа ΠΊ индСксу

Для Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ случая пСрСсСчСния Ρ‚ΠΎΡ‡ΠΊΠΈ монтирования Π² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, которая монтируСтся, Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму, Π³Π΄Π΅ выполняСтся ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, рассмотрим ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° namei (Рисунок 5.26). Она ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° Π²Π΅Ρ€ΡΠΈΡŽ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΡƒΡŽ Π½Π° РисункС 4.11. Однако, послС обнаруТСния Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Π½ΠΎΠΌΠ΅Ρ€Π° индСкса для Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΡƒΡ‚ΠΈ поиска ядро провСряСт, Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π»ΠΈ Π½ΠΎΠΌΠ΅Ρ€ индСкса Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ это ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ индСкс Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы. Если это Ρ‚Π°ΠΊ ΠΈ Ссли Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ индСкс Ρ‚Π°ΠΊ ΠΆΠ΅ являСтся ΠΊΠΎΡ€Π½Π΅Π²Ρ‹ΠΌ, Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΏΡƒΡ‚ΠΈ поиска, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΈΠΌΠ΅Π΅Ρ‚ имя Β«..Β», ядро ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ индСкс ΠΊΠ°ΠΊ Ρ‚ΠΎΡ‡ΠΊΡƒ монтирования. Оно Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ монтирования запись, Π½ΠΎΠΌΠ΅Ρ€ устройства Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ совпадаСт с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ устройства для послСднСго ΠΈΠ· Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… индСксов, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ индСкс для ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ производится ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ поиск ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ с ΠΈΠΌΠ΅Π½Π΅ΠΌ Β«..Β», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ индСкс Π² качСствС Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ. Π’ ΠΊΠΎΡ€Π½Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΊΠΎΡ€Π½Π΅Π²Ρ‹ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ являСтся Β«..Β»