Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

5.8 СОЗДАНИЕ СПЕЦИАЛЬНЫХ ФАЙЛОВ

Системная функция mknod создает в системе специальные файлы, в число которых включаются поименованные каналы, файлы устройств и каталоги. Она похожа на функцию creat в том, что ядро выделяет для файла индекс. Синтаксис вызова системной функции mknod:

   mknod(pathname,type and permissions,dev)

где pathname - имя создаваемой вершины в иерархической структуре файловой системы, type and permissions - тип вершины (например, каталог) и права доступа к создаваемому файлу, а dev указывает старший и младший номера устройства для блочных и символьных специальных файлов (глава 10). На Рисунке 5.13 приведен алгоритм, реализуемый функцией mknod при создании новой вершины.


     алгоритм создания новой вершины                            

     входная информация:  вершина (имя файла)                   

                          тип файла                             

                          права доступа                         

                          старший, младший номера устройства    

                          (для блочных и символьных специальных 

                          файлов)                               

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

     {                                                          

        если (новая вершина не является поименованным каналом   

         и пользователь не является суперпользователем)         

            возвратить (ошибку);                                

        получить индекс вершины, являющейся родительской для    

         новой вершины (алгоритм namei);                        

        если (новая вершина уже существует)                     

        {                                                       

            освободить родительский индекс (алгоритм iput);     

            возвратить (ошибку);                                

        }                                                       

        назначить для новой вершины свободный индекс из файловой

         системы (алгоритм ialloc);                             

        создать новую запись в родительском каталоге: включить  

         имя новой вершины и номер вновь назначенного индекса;  

        освободить индекс родительского каталога (алгоритм      

         iput);                                                 

        если (новая вершина является блочным или символьным спе-

         циальным файлом)                                       

            записать старший и младший номера в структуру индек-

             са;                                                

       освободить индекс новой вершины (алгоритм iput);        

     }                                                          

Рисунок 5.13. Алгоритм создания новой вершины

Ядро просматривает файловую систему в поисках имени файла, который оно собирается создать. Если файл еще пока не существует, ядро назначает ему новый индекс на диске и записывает имя нового файла и номер индекса в родительский каталог. Оно устанавливает значение поля типа файла в индексе, указывая, что файл является каналом, каталогом или специальным файлом. Наконец, если файл является специальным файлом устройства блочного или символьного типа, ядро записывает в индекс старший и младший номера устройства. Если функция mknod создает каталог, он будет существовать по завершении выполнения функции, но его содержимое будет иметь неверный формат (в каталоге будут отсутствовать записи с именами "." и ".."). В упражнении 5.33 рассматриваются шаги, необходимые для преобразования содержимого каталога в правильный формат.


     алгоритм смены каталога                                   

     входная информация:  имя нового каталога                   

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

     {                                                          

        получить индекс для каталога с новым именем (алгоритм   

         namei);                                                

        если (индекс не является индексом каталога или же про-  

         цессу не разрешен доступ к файлу)                      

        {                                                       

           освободить индекс (алгоритм iput);                   

           возвратить (ошибку);                                 

        }                                                       

        снять блокировку с индекса;                             

        освободить индекс прежнего текущего каталога (алгоритм  

         iput);                                                 

        поместить новый индекс в позицию для текущего каталога  

         в пространстве процесса;                               

     }                                                          

Рисунок 5.14. Алгоритм смены текущего каталога

Предыдущая глава || Оглавление || Следующая глава

VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...