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

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

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

Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ рассмотрСнной классичСской структуры индСкса являСтся идСя хранСния Π² индСксС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Ρ„Π°ΠΉΠ»Π° (см. [Mullender 84]). Если ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ индСкса Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ индСкс Π·Π°Π½ΠΈΠΌΠ°Π» вСсь дисковый Π±Π»ΠΎΠΊ, нСбольшая Ρ‡Π°ΡΡ‚ΡŒ Π±Π»ΠΎΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована для собствСнно индСксных структур, Π° ΠΎΡΡ‚Π°Π²ΡˆΠ°ΡΡΡ Ρ‡Π°ΡΡ‚ΡŒ β€” для хранСния ΠΊΠΎΠ½Ρ†Π° Ρ„Π°ΠΉΠ»Π° ΠΈ Π΄Π°ΠΆΠ΅ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях для хранСния Ρ„Π°ΠΉΠ»Π° Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ. ОсновноС прСимущСство Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ диску для считывания индСкса ΠΈ всСй ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ссли Ρ„Π°ΠΉΠ» помСщаСтся Π² индСксном Π±Π»ΠΎΠΊΠ΅.

4.3 ΠšΠΠ’ΠΠ›ΠžΠ“Π˜

Из Π³Π»Π°Π²Ρ‹ 1 Π½Π°ΠΏΠΎΠΌΠ½ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… строится иСрархичСская структура Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы; ΠΎΠ½ΠΈ ΠΈΠ³Ρ€Π°ΡŽΡ‚ Π²Π°ΠΆΠ½ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ Π² ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° Π² Π½ΠΎΠΌΠ΅Ρ€ индСкса. ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ β€” это Ρ„Π°ΠΉΠ», содСрТимым ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ являСтся Π½Π°Π±ΠΎΡ€ записСй, состоящих ΠΈΠ· Π½ΠΎΠΌΠ΅Ρ€Π° индСкса ΠΈ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π°, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³. БоставноС имя β€” это строка символов, Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰Π°ΡΡΡ пустым символом ΠΈ раздСляСмая Π½Π°ΠΊΠ»ΠΎΠ½Π½ΠΎΠΉ Ρ‡Π΅Ρ€Ρ‚ΠΎΠΉ (Β«/Β») Π½Π° нСсколько ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚. КаТдая ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, ΠΊΡ€ΠΎΠΌΠ΅ послСднСй, Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, Π½ΠΎ послСдняя ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ„Π°ΠΉΠ»Π°, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰Π΅Π³ΠΎΡΡ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ. Π’ вСрсии V систСмы UNIX Π΄Π»ΠΈΠ½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ограничиваСтся 14 символами; Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, вмСстС с 2 Π±Π°ΠΉΡ‚Π°ΠΌΠΈ, ΠΎΡ‚Π²ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ Π½Π° Π½ΠΎΠΌΠ΅Ρ€ индСкса, Ρ€Π°Π·ΠΌΠ΅Ρ€ записи ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° составляСт 16 Π±Π°ΠΉΡ‚.

Π‘ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π² Π±Π°ΠΉΡ‚Π°Ρ… Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° НомСр индСкса (2 Π±Π°ΠΉΡ‚Π°) Имя Ρ„Π°ΠΉΠ»Π°

0 83 .
16 2 ..
32 1798 init
48 1276 fsck
64 85 clri
80 1268 motd
96 1799 mount
112 88 mknod
128 2114 passwd
144 1717 umount
160 1851 checklist
176 92 fsdbld
192 84 config
208 1432 getty
224 0 crash
240 95 mkfs
256 188 inittab

Рисунок 4.10. Π€ΠΎΡ€ΠΌΠ°Ρ‚ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° /etc

На РисункС 4.10 ΠΏΠΎΠΊΠ°Π·Π°Π½ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Β«etcΒ». Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Ρ„Π°ΠΉΠ»Ρ‹, Π² качСствС ΠΈΠΌΠ΅Π½ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Ρ‚ΠΎΡ‡ΠΊΠ° ΠΈ Π΄Π²Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ ("." ΠΈ Β«..Β») ΠΈ Π½ΠΎΠΌΠ΅Ρ€Π° индСксов Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ с Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌΠΈ индСксов Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, соотвСтствСнно. НомСр индСкса для Ρ„Π°ΠΉΠ»Π° "." Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Β«/etcΒ» ΠΈΠΌΠ΅Π΅Ρ‚ адрСс со смСщСниСм 0 ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 83. НомСр индСкса для Ρ„Π°ΠΉΠ»Π° Β«..Β» ΠΈΠΌΠ΅Π΅Ρ‚ адрСс со смСщСниСм 16 ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 2. Записи Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ пустыми, ΠΏΡ€ΠΈ этом Π½ΠΎΠΌΠ΅Ρ€ индСкса Ρ€Π°Π²Π΅Π½ 0. НапримСр, запись с адрСсом 224 Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Β«/etcΒ» пустая, нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° ΠΊΠΎΠ³Π΄Π°-Ρ‚ΠΎ содСрТала Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ…ΠΎΠ΄Π° для Ρ„Π°ΠΉΠ»Π° с ΠΈΠΌΠ΅Π½Π΅ΠΌ Β«crashΒ». ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° mkfs ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½ΠΎΠΌΠ΅Ρ€Π° индСксов для Ρ„Π°ΠΉΠ»ΠΎΠ² "." ΠΈ Β«..Β» Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ индСкса Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы.

Π―Π΄Ρ€ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ это Π΄Π΅Π»Π°Π΅Ρ‚ Π² Ρ„Π°ΠΉΠ»Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΡƒΡŽ структуру ΠΈ Π±Π»ΠΎΠΊΠΈ с уровнями прямой ΠΈ косвСнной адрСсации. ΠŸΡ€ΠΎΡ†Π΅ΡΡΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΎ записи Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ рСзСрвируСтся ядром, благодаря Ρ‡Π΅ΠΌΡƒ обСспСчиваСтся ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ структуры ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°. ΠŸΡ€Π°Π²Π° доступа ΠΊ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ смысл: ΠΏΡ€Π°Π²ΠΎ чтСния Π΄Π°Π΅Ρ‚ процСссам Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°; ΠΏΡ€Π°Π²ΠΎ записи позволяСт процСссу ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ записи Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ старыС (с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ систСмных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ creat, mknod, link ΠΈ unlink), Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‡Π΅Π³ΠΎ измСняСтся содСрТимоС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°; ΠΏΡ€Π°Π²ΠΎ исполнСния позволяСт процСссу ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ поиск Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° (ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Β«ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒΒ» ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ бСссмыслСнно). На ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ УпраТнСния 4.6 ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ΠΌ ΠΈ поиском Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅.

4.4 ΠŸΠ Π•Π’Π ΠΠ©Π•ΠΠ˜Π• Π‘ΠžΠ‘Π’ΠΠ’ΠΠžΠ“Πž Π˜ΠœΠ•ΠΠ˜ ЀАЙЛА (ПУВИ ПОИБКА) Π’ Π˜Π”Π•ΠΠ’Π˜Π€Π˜ΠšΠΠ’ΠžΠ  Π˜ΠΠ”Π•ΠšΠ‘Π

ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ производится ΠΏΠΎ Π΅Π³ΠΎ составному ΠΈΠΌΠ΅Π½ΠΈ (ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡƒΡ‚ΠΈ поиска), ΠΊΠ°ΠΊ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… open, chdir (ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³) ΠΈΠ»ΠΈ link. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Π½ΡƒΡ‚Ρ€ΠΈ систСмы ядро Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с индСксами, Π° Π½Π΅ с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΏΡƒΡ‚Π΅ΠΉ поиска, ΠΎΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΈΠΌΠ΅Π½Π° ΠΏΡƒΡ‚Π΅ΠΉ поиска Π² ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ индСксов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ доступ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ. Алгоритм namei ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ поэлСмСнтный Π°Π½Π°Π»ΠΈΠ· составного ΠΈΠΌΠ΅Π½ΠΈ, ставя Π² соотвСтствиС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ ΠΈΠΌΠ΅Π½ΠΈ индСкс ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ² возвращая ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ индСкса для Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡƒΡ‚ΠΈ поиска (Рисунок 4.11).

Из Π³Π»Π°Π²Ρ‹ 2 Π½Π°ΠΏΠΎΠΌΠ½ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ процСсс связан с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ (ΠΈ ΠΏΡ€ΠΎΡ‚Π΅ΠΊΠ°Π΅Ρ‚ Π² Π΅Π³ΠΎ Ρ€Π°ΠΌΠΊΠ°Ρ…); рабочая ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, отвСдСнная ΠΏΠΎΠ΄ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, содСрТит ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° индСкс Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°. Π’Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠ· процСссов Π² систСмС, Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ процСсса, являСтся ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³. ΠŸΡƒΡ‚ΡŒ ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ процСсса Π±Π΅Ρ€Π΅Ρ‚ Π½Π°Ρ‡Π°Π»ΠΎ ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° процСсса, ΡΠ²Π»ΡΡŽΡ‰Π΅Π³ΠΎΡΡ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ Π΄Π°Π½Π½ΠΎΠΌΡƒ (см. Ρ€Π°Π·Π΄Π΅Π» 5.10). ΠŸΡ€ΠΎΡ†Π΅ΡΡΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ систСмной ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ chdir (ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³). ВсС поиски Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° процСсса, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ имя ΠΏΡƒΡ‚ΠΈ поиска Π½Π΅ прСдваряСтся Π½Π°ΠΊΠ»ΠΎΠ½Π½ΠΎΠΉ Ρ‡Π΅Ρ€Ρ‚ΠΎΠΉ, указывая, Ρ‡Ρ‚ΠΎ поиск Π½ΡƒΠΆΠ½ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ с ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°. Π’ любом случаС ядро ΠΌΠΎΠΆΠ΅Ρ‚ Π»Π΅Π³ΠΊΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ индСкс ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ начинаСтся поиск. Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ хранится Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ области процСсса, Π° ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ индСкс систСмы хранится Π² глобальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ [12].

Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ namei /* ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡƒΡ‚ΠΈ поиска Π² индСкс */

входная информация: имя ΠΏΡƒΡ‚ΠΈ поиска

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

{

Β if (ΠΏΡƒΡ‚ΡŒ поиска Π±Π΅Ρ€Π΅Ρ‚ Π½Π°Ρ‡Π°Π»ΠΎ с корня)
Β Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ индСкс = индСксу корня (Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ iget);

Β elseΒ 
индСкс = индСксу Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° (Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ iget);

Β Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ (ΠΏΠΎΠΊΠ° ΠΏΡƒΡ‚ΡŒ поиска Π½Π΅ кончился)
Β {