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

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

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

#include β€Ήfcntl.hβ€Ί

main() {

Β int i, j;

Β char buf1[512], buf2[512];

Β i = open("/etc/passwd", O_RDONLY);

Β j = dup(i);

Β read(i, buf1, sizeof(buf1));

Β read(j, buf2, sizeof(buf2));

Β close(i);

Β read(j, buf2, sizeof(buf2));

}

Рисунок 5.21. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° языкС Π‘ΠΈ, ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ использованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ dup

5.14 ΠœΠžΠΠ’Π˜Π ΠžΠ’ΠΠΠ˜Π• И Π”Π•ΠœΠžΠΠ’Π˜Π ΠžΠ’ΠΠΠ˜Π• Π€ΠΠ™Π›ΠžΠ’Π«Π₯ Π‘Π˜Π‘Π’Π•Πœ

ЀизичСский диск состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… логичСских Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ², Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ Ρ€Π°Π·Π±ΠΈΡ‚ дисковым Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠΌ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Ρ€Π°Π·Π΄Π΅Π»Ρƒ соотвСтствуСт Ρ„Π°ΠΉΠ» устройства, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ имя. ΠŸΡ€ΠΎΡ†Π΅ΡΡΡ‹ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π°, открывая ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ» устройства ΠΈ Π·Π°Ρ‚Π΅ΠΌ вСдя запись ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈΠ· этого Β«Ρ„Π°ΠΉΠ»Π°Β», прСдставляя Π΅Π³ΠΎ сСбС Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ дисковых Π±Π»ΠΎΠΊΠΎΠ². Π­Ρ‚ΠΎ взаимодСйствиС Π²ΠΎ всСх дСталях рассматриваСтся Π² Π³Π»Π°Π²Π΅ 10. Π Π°Π·Π΄Π΅Π» диска ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму, ΡΠΎΡΡ‚ΠΎΡΡ‰ΡƒΡŽ ΠΈΠ· Π±Π»ΠΎΠΊΠ° Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, супСрблока, списка индСксов ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² (см. Π³Π»Π°Π²Ρƒ 2). БистСмная функция mount (ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ) связываСт Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π° Π½Π° дискС с ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠ΅ΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм, Π° функция umount (Π΄Π΅ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ) Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму ΠΈΠ· ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ. Ѐункция mount, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π΄Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Π² дисковом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΊΠ°ΠΊ ΠΊ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС, Π° Π½Π΅ ΠΊΠ°ΠΊ ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ дисковых Π±Π»ΠΎΠΊΠΎΠ².

Бинтаксис Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ mount:

mount(special pathname, directory pathname, options);

Π³Π΄Π΅ special pathname β€” имя ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° устройства, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ дисковому Ρ€Π°Π·Π΄Π΅Π»Ρƒ с ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой, directory pathname β€” ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ, Π³Π΄Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ файловая систСма (Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Ρ‚ΠΎΡ‡ΠΊΠ° ΠΈΠ»ΠΈ мСсто монтирования), Π° options ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, слСдуСт Π»ΠΈ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму Β«Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния» (ΠΏΡ€ΠΈ этом Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ°ΠΊ write ΠΈ creat, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ производят запись Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму). НапримСр, Ссли процСсс Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ mount ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

mount("/dev/dsk1", "/usr', 0);

ядро присоСдиняСт Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму, Π½Π°Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽΡΡ Π² дисковом Ρ€Π°Π·Π΄Π΅Π»Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ Β«/dev/dsk1Β», ΠΊ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ Β«/usrΒ» Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ Π΄Π΅Ρ€Π΅Π²Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм (см. Рисунок 5.22). Π€Π°ΠΉΠ» Β«/dev/dsk1Β» являСтся Π±Π»ΠΎΡ‡Π½Ρ‹ΠΌ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ, Ρ‚.Β Π΅. ΠΎΠ½ носит имя устройства Π±Π»ΠΎΡ‡Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ имя Ρ€Π°Π·Π΄Π΅Π»Π° Π½Π° дискС. Π―Π΄Ρ€ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Π΄Π΅Π» Π½Π° дискС с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ содСрТит Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму с супСрблоком, списком индСксов ΠΈ ΠΊΠΎΡ€Π½Π΅Π²Ρ‹ΠΌ индСксом. ПослС выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ mount ΠΊ ΠΊΠΎΡ€Π½ΡŽ смонтированной Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ Β«/usrΒ». ΠŸΡ€ΠΎΡ†Π΅ΡΡΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ Π² ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС ΠΈ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ систСма ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒΡΡ. Волько систСмная функция link ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² вСрсии V Π½Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ связи ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΌΠΈ Ρ€Π°Π·Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΌ систСмам (см. Ρ€Π°Π·Π΄Π΅Π» 5.15).

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

Рисунок 5.22. Π”Π΅Ρ€Π΅Π²ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм Π΄ΠΎ ΠΈ послС выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ mount

Π―Π΄Ρ€ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ монтирования с записями ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ записи Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ монтирования содСрТатся:

β€’ Π½ΠΎΠΌΠ΅Ρ€ устройства, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму (упомянутый Π²Ρ‹ΡˆΠ΅ логичСский Π½ΠΎΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы);

β€’ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π±ΡƒΡ„Π΅Ρ€, Π³Π΄Π΅ находится супСрблок Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы;

β€’ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ индСкс ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы (Β«/Β» для Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы с ΠΈΠΌΠ΅Π½Π΅ΠΌ Β«/dev/dsk1Β» Π½Π° РисункС 5.22);

β€’ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° индСкс ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, ΡΡ‚Π°Π²ΡˆΠ΅Π³ΠΎ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ монтирования (Π½Π° РисункС 5.22 это ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Β«usrΒ», ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΉ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС).

Бвязь индСкса Ρ‚ΠΎΡ‡ΠΊΠΈ монтирования с ΠΊΠΎΡ€Π½Π΅Π²Ρ‹ΠΌ индСксом ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, возникшая Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния систСмной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ mount, Π΄Π°Π΅Ρ‚ ядру Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π»Π΅Π³ΠΊΠΎ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм Π±Π΅Π· получСния ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… свСдСний.

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

входная информация:

 имя Π±Π»ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°

 имя ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Ρ‚ΠΎΡ‡ΠΊΠΈ монтирования

Β ΠΎΠΏΡ†ΠΈΠΈ (Β«Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния»)

выходная информация: отсутствуСт

{

Β if (ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ являСтся ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ)Β 
return (ΠΎΡˆΠΈΠ±ΠΊΡƒ);

Β ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ индСкс для Π±Π»ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° (Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ namei);

Β ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²;

Β ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ индСкс для ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, Π³Π΄Π΅ производится ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ namei);

Β if (индСкс Π½Π΅ являСтся индСксом ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΠΈΠ»ΠΈ счСтчик ссылок ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ β€Ί 1)Β 
{

Β  ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ индСксы (Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ iput);

Β Β return (ΠΎΡˆΠΈΠ±ΠΊΡƒ);

Β }

Β Π½Π°ΠΉΡ‚ΠΈ свободноС мСсто Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ монтирования;

Β Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ открытия Π±Π»ΠΎΡ‡Π½ΠΎΠ³ΠΎ устройства для Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°;

Β ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ свободный Π±ΡƒΡ„Π΅Ρ€ ΠΈΠ· Π±ΡƒΡ„Π΅Ρ€Π½ΠΎΠ³ΠΎ кСша;

Β ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ супСрблок Π² свободный Π±ΡƒΡ„Π΅Ρ€;

Β ΠΏΡ€ΠΎΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ поля супСрблока;

Β ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ индСкс ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ систСмы (Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ iget), ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ монтирования;

Β ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΡƒ Π² индСксС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ являСтся Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ монтирования;

Β ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ индСкс ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° (Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ iput);

Β ΡΠ½ΡΡ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ с индСкса ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Ρ‚ΠΎΡ‡ΠΊΠΈ монтирования;

}

Рисунок 5.23. Алгоритм монтирования Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы

На РисункС 5.23 ΠΏΠΎΠΊΠ°Π·Π°Π½ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ монтирования Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы. Π―Π΄Ρ€ΠΎ позволяСт ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π΄Π΅ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ΠΌ процСссам, Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅ΠΌ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… являСтся ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ. ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ возмоТности Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ mount ΠΈ umount всСм ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ Π±Ρ‹ ΠΊ внСсСнию с ΠΈΡ… стороны хаоса Π² Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, ΠΊΠ°ΠΊ ΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠΌΡƒ, Ρ‚Π°ΠΊ ΠΈ ΡΠ²ΠΈΠ²ΡˆΠ΅ΠΌΡƒΡΡ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ нСостороТности. Π‘ΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π·Ρ€ΡƒΡˆΠΈΡ‚ΡŒ систСму Ρ‚ΠΎΠ»ΡŒΠΊΠΎ случайно.

Π―Π΄Ρ€ΠΎ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ индСкс ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму, ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ‰ΡƒΡŽ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ ΠΈ младший Π½ΠΎΠΌΠ΅Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ дисковый Ρ€Π°Π·Π΄Π΅Π», ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ индСкс ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ файловая систСма Π±ΡƒΠ΄Π΅Ρ‚ смонтирована. Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ ссылок Π² индСксС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‰Π΅Π΅ 1 (ΠΈ мСньшС 1 ΠΎΠ½ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ β€” ΠΏΠΎΡ‡Π΅ΠΌΡƒ?), Π² связи с Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ΠΌ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ опасных ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Ρ… эффСктов (см. ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 5.27). Π—Π°Ρ‚Π΅ΠΌ ядро Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚ свободноС мСсто Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ монтирования, ΠΏΠΎΠΌΠ΅Ρ‡Π°Π΅Ρ‚ Π΅Π³ΠΎ для использования ΠΈ присваиваСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ полю Π½ΠΎΠΌΠ΅Ρ€Π° устройства Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Π’Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ назначСния производятся Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ процСсс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ, слСдуя ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ открытия устройства ΠΈΠ»ΠΈ считывая супСрблок Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ процСсс Ρ‚Π΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ попытался Π±Ρ‹ ΡΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму. ΠŸΠΎΠΌΠ΅Ρ‚ΠΈΠ² для использования запись Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ монтирования, ядро Π½Π΅ допускаСт использования Π² Π΄Π²ΡƒΡ… Π²Ρ‹Π·ΠΎΠ²Π°Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ mount ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ записи Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Запоминая Π½ΠΎΠΌΠ΅Ρ€ устройства с ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ систСмой, ядро ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΡΠΏΡ€Π΅ΠΏΡΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌΡƒ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ систСмы Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ процСссами, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅, Π±ΡƒΠ΄ΡŒ ΠΎΠ½ΠΎ Π΄ΠΎΠΏΡƒΡ‰Π΅Π½ΠΎ, ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹ привСсти ΠΊ нСпрСдсказуСмым послСдствиям (см. ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 5.26).