Троан Эрик В.
Шрифт:
Когда выполняется задание переднего плана,
10.8. Создание клонов
Хотя
Это ненамного отличается от
CLONE_VM | Два процесса разделяют пространство виртуальной памяти (включая стек). |
CLONE_FS | Разделяется информация файловой системы (такая как текущий каталог). |
CLONE_FILES | Разделяются открытые файлы. |
CLONE_SIGHAND | Обработчики сигналов разделяются двумя процессами. |
Когда ресурсы разделяется двумя процессами, оба они видят эти ресурсы идентично. Если указан
Если для доставки родительскому процессу специфицирован сигнал, отличный от
Хотя и не рекомендуется, чтобы приложения непосредственно использовали
Глава 11
Простое управление файлами
Файлы — это наиболее распространенная абстракция ресурсов, используемая в мире Unix. Такие ресурсы, как память, дисковое пространство, устройства и каналы межпроцессного взаимодействия (IPC), могут быть представлены в виде файлов. Поддерживая унифицированную абстракцию для этих ресурсов, Unix уменьшает количество программных интерфейсов, которые обязан знать программист. Ниже перечислены ресурсы, доступные через файловые операции.
• Обычные файлы. Это то, о чем большинство пользователей компьютеров думают как о файлах. Они служат репозиториями данных, которые могут расти до необходимых размеров, и обеспечивают произвольный доступ. Файлы Unix являются байт-ориентированными — любое другое логическое представление является результатом программных преобразований; ядро ничего не знает о них.
• Каналы (pipes). Простейший механизм IPC в Unix. Обычно один процесс пишет информацию в канал в то время как другой читает из него. Каналы — это то, что командные оболочки используют для перенаправления ввода-вывода (например,
36
В среде Linux файловая система
• Каталоги. Специальные файлы, которые содержат списки файлов, хранящихся внутри них. Старые реализации Unix позволяли программам читать и писать их в той же манере, что и обычные файлы. Чтобы обеспечить большую степень абстракции, добавлен специальный набор системных вызовов для обеспечения манипуляций каталогами, хотя каталоги по-прежнему открываются и закрываются подобно обычным файлам. Эти функции рассматриваются в главе 14.
• Файлы устройств. Большинство физических устройств представлены в виде файлов. Есть два типа файлов устройств: блочные устройства и символьные устройства. Файлы блочных устройств представляют аппаратные устройства [37] , которые не могут быть прочитаны побайтно; они должны читаться блоками определенного размера. В Linux блочные устройства принимают специальное управление от ядра [38] и могут содержать файловые системы [39] . Дисковые приводы, включая CD-ROM и RAM-диски, являются наиболее часто используемыми блочными устройствами. Символьные устройства могут быть прочитаны по одному символу за раз, и ядро не представляет для них никаких средств кэширования или упорядочивания. Модемы, терминалы, принтеры, звуковые карты и мыши — все это символьные устройства. Традиционно к каждому из них привязана некая сущность в каталоге
37
Не все блочные устройства представляют реальное оборудование. Более правильное описание блочных устройств — это нечто, на чем может располагаться файловая система; блочное устройство обратной связи (loopback block device) отображает на обычный файл логическое блочное устройство, что позволяет файлам содержать в себе целые файловые системы.
38
Точнее говоря, они кэшируются и доступ к ним упорядочен.
39
Это отличается от ряда систем, которые способны монтировать файловые системы как на символьных устройствах, так и на блочных.