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

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

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

Рисунок 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).

Π―Π΄Ρ€ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ открытия для Π±Π»ΠΎΡ‡Π½ΠΎΠ³ΠΎ устройства, содСрТащСго Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму, Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ это ΠΏΡ€ΠΈ нСпосрСдствСнном ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ Π±Π»ΠΎΡ‡Π½ΠΎΠ³ΠΎ устройства (Π³Π»Π°Π²Π° 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 ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ядро Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ имя ΠΏΡƒΡ‚ΠΈ поиска ΠΈ пСрСсСкаСт Ρ‚ΠΎΡ‡ΠΊΡƒ монтирования Π² Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ Β«..Β» ΠΈΠΌΠ΅Π½ΠΈ.


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


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