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

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

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

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

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

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

{

 do {

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

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

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

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

   }

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

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

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

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

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

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

   }

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

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

   return (индСкс);

  }

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

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

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

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

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

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

  return (индСкс);

 }

}

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


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


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

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

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

{

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

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

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

  ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡƒΡ‚ΠΈ поиска;

  ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ соотвСтствиС Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ индСкса ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ ΠΈ ΠΏΡ€Π°Π²Π° доступа;

  if (Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ индСкс соотвСтствуСт ΠΊΠΎΡ€Π½ΡŽ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΈΠΌΠ΅Π½ΠΈ Β«..Β») continue; /* Ρ†ΠΈΠΊΠ» с условиСм продолТСния */

поиск ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹:

  ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ (Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ индСкс), повторяя Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ bmap, bread ΠΈ brelse;

  if (ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° соотвСтствуСт записи Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ (Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ индСксС)) {

   ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ индСкса для совпавшСй ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹;

   if (Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹ΠΉ индСкс являСтся индСксом корня ΠΈ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ индСкс являСтся индСксом корня ΠΈ имя ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Β«..Β») {

    /* пСрСсСчСниС Ρ‚ΠΎΡ‡ΠΊΠΈ монтирования */

    ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ запись Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ монтирования для Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ индСкса;

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

    Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ индСкс = индСксу Ρ‚ΠΎΡ‡ΠΊΠΈ монтирования;

    Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ индСкс Ρ‚ΠΎΡ‡ΠΊΠΈ монтирования;

    ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика ссылок Π½Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ индСкс;

    ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ поиску ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ (для Β«..Β»);

   }

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

   Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ индСкс = индСксу с Π½ΠΎΠ²Ρ‹ΠΌ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ (Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ iget);

  }

  else /* ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° отсутствуСт Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ */ return (Π½Π΅Ρ‚ индСкса);

 }

 return (Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ индСкс);

}

Рисунок 5.26. ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π°


Π’ Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ (cd Β«../../..Β») прСдполагаСтся, Ρ‡Ρ‚ΠΎ Π² Π½Π°Ρ‡Π°Π»Π΅ процСсс ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ с ΠΈΠΌΠ΅Π½Π΅ΠΌ Β«/usr/src/utsΒ». Когда имя ΠΏΡƒΡ‚ΠΈ поиска подвСргаСтся Π°Π½Π°Π»ΠΈΠ·Ρƒ Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ namei, Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌ индСксом являСтся индСкс Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°. Π―Π΄Ρ€ΠΎ мСняСт Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ индСкс Π½Π° индСкс ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° с ΠΈΠΌΠ΅Π½Π΅ΠΌ Β«/usr/srcΒ» Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Β«..Β» Π² ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡƒΡ‚ΠΈ поиска. Π—Π°Ρ‚Π΅ΠΌ ядро Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Ρ‚ΠΎΡ€ΡƒΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ Β«..Β» Π² ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡƒΡ‚ΠΈ поиска, Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ индСкс смонтированной (ΠΏΠ΅Ρ€Π΅Π΄ этим) Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы β€” индСкс ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Β«usrΒ» β€” ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌ индСксом ΠΏΡ€ΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ ΠΈΠΌΠ΅Π½ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° namei. НаконСц, ΠΎΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Ρ€Π΅Ρ‚ΡŒΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ Β«..Β» Π² ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡƒΡ‚ΠΈ поиска. Π―Π΄Ρ€ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½ΠΎΠΌΠ΅Ρ€ индСкса для Β«..Β» совпадаСт с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ индСкса, Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌ индСксом являСтся ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ индСкс, Π° Β«..Β» являСтся Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΉ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡƒΡ‚ΠΈ поиска. Π―Π΄Ρ€ΠΎ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ запись Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ монтирования, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΠ΅ монтирования Β«usrΒ», освобоТдаСт Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ индСкс (ΠΊΠΎΡ€Π΅Π½ΡŒ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, смонтированной Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Β«usrΒ») ΠΈ Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚ индСкс Ρ‚ΠΎΡ‡ΠΊΠΈ монтирования (ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Β«usrΒ» Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС) Π² качСствС Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ индСкса. Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ΠΎ просматриваСт записи Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ монтирования Β«/usrΒ» Π² поисках ΠΈΠΌΠ΅Π½ΠΈ Β«..Β» ΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π½ΠΎΠΌΠ΅Ρ€ индСкса для корня Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы (Β«/Β»). ПослС этого систСмная функция chdir Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ процСсс Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅Ρ‚ внимания Π½Π° Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ пСрСсСк Ρ‚ΠΎΡ‡ΠΊΡƒ монтирования.

5.14.2 Π”Π΅ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы

Бинтаксис Π²Ρ‹Π·ΠΎΠ²Π° систСмной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ umount:


umount(special filename);


Π³Π΄Π΅ special filename ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π΄Π΅ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡƒΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму. ΠŸΡ€ΠΈ Π΄Π΅ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы (Рисунок 5.27) ядро обращаСтся ΠΊ индСксу Π΄Π΅ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ устройства, восстанавливаСт Π½ΠΎΠΌΠ΅Ρ€ устройства для ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, освобоТдаСт индСкс (Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ iput) ΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ монтирования запись с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ устройства, Ρ€Π°Π²Π½Ρ‹ΠΌ Π½ΠΎΠΌΠ΅Ρ€Ρƒ устройства для ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ядро Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Π΅ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму, ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² систСмС Π½Π΅ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², для этого ядро просматриваСт Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ индСксов Π² поисках всСх Ρ„Π°ΠΉΠ»ΠΎΠ², Ρ‡Π΅ΠΉ Π½ΠΎΠΌΠ΅Ρ€ устройства совпадаСт с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ Π΄Π΅ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ систСмы. Активным Ρ„Π°ΠΉΠ»Π°ΠΌ соотвСтствуСт ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика ссылок ΠΈ Π² ΠΈΡ… число входят Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ процСсса, Ρ„Π°ΠΉΠ»Ρ‹ с раздСляСмым тСкстом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ (Π³Π»Π°Π²Π° 7), ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΊΠΎΠ³Π΄Π°-Ρ‚ΠΎ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡ‚ΠΎΠΌ Π½Π΅ Π±Ρ‹Π»ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹. Если ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹, функция umount Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎ: Ссли Π±Ρ‹ ΠΎΠ½Π° ΠΏΡ€ΠΎΡˆΠ»Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ сдСлались Π±Ρ‹ нСдоступными.

Π‘ΡƒΡ„Π΅Ρ€Π½Ρ‹ΠΉ ΠΏΡƒΠ» всС Π΅Ρ‰Π΅ содСрТит Π±Π»ΠΎΠΊΠΈ с Β«ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ записью», Π½Π΅ пСрСписанныС Π½Π° диск, поэтому ядро Β«Π²Ρ‹ΠΌΡ‹Π²Π°Π΅Ρ‚Β» ΠΈΡ… ΠΈΠ· Π±ΡƒΡ„Π΅Ρ€Π½ΠΎΠ³ΠΎ ΠΏΡƒΠ»Π°. Π―Π΄Ρ€ΠΎ удаляСт записи с раздСляСмым тСкстом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ находятся Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ областСй, Π½ΠΎ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ (подробности Π² Π³Π»Π°Π²Π΅ 7), записываСт Π½Π° диск всС Π½Π΅Π΄Π°Π²Π½ΠΎ скоррСктированныС супСрблоки ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ дисковыС ΠΊΠΎΠΏΠΈΠΈ всСх индСксов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ этого. Казалось, Π±Ρ‹Π»ΠΎ Π±Ρ‹ достаточно ΠΎΡ‚ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ дисковыС Π±Π»ΠΎΠΊΠΈ, супСрблок ΠΈ индСксы Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π΄Π΅ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² цСлях сохранСния прССмствСнности ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ядро выполняСт Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ дСйствия для всСй систСмы Π² Ρ†Π΅Π»ΠΎΠΌ. Π—Π°Ρ‚Π΅ΠΌ ядро освобоТдаСт ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ индСкс ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ обращСния ΠΊ Π½Π΅ΠΌΡƒ Π²ΠΎ врСмя выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ mount, ΠΈ запускаСт ΠΈΠ· Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ закрытия устройства, содСрТащСго Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму. ВпослСдствии ядро просматриваСт Π±ΡƒΡ„Π΅Ρ€Ρ‹ Π² Π±ΡƒΡ„Π΅Ρ€Π½ΠΎΠΌ кСшС ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ‚Π΅ ΠΈΠ· Π½ΠΈΡ…, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… находятся Π±Π»ΠΎΠΊΠΈ Π΄Π΅ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы; Π² Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· этих Π±Π»ΠΎΠΊΠΎΠ² Π² кСшС большС Π½Π΅Ρ‚ нСобходимости. ДСлая Π±ΡƒΡ„Π΅Ρ€Ρ‹ Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ, ядро вставляСт ΠΈΡ… Π² Π½Π°Ρ‡Π°Π»ΠΎ списка свободных Π±ΡƒΡ„Π΅Ρ€ΠΎΠ², Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π±Π»ΠΎΠΊΠΈ с Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π² Π±ΡƒΡ„Π΅Ρ€Π½ΠΎΠΌ кСшС. Π―Π΄Ρ€ΠΎ сбрасываСт Π² индСксС систСмы, Π³Π΄Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ„Π»Π°Π³ Β«Ρ‚ΠΎΡ‡ΠΊΠΈ монтирования», установлСнный Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ mount, ΠΈ освобоТдаСт индСкс. ΠŸΠΎΠΌΠ΅Ρ‚ΠΈΠ² запись Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ монтирования свободной для ΠΎΠ±Ρ‰Π΅Π³ΠΎ использования, функция umount Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ.