КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Концепция файла (применительно к ОС UNIX). Типы файлов (перечислить). Файлы данных и каталоги
Межпроцессовые коммуникации в ОС UNIX (сигналы, семафоры, программные каналы, очереди сообщений, разделяемая память). Порождение процессов в ОС UNIX и отношения между ними. Процессы демоны. ОС Unix – это программа выполн в собств вирт адресном пространстве. В Unix-системах, fork() — системный вызов, создающий новый процесс (потомок), который является почти точной копией процесса-родителя, выполняющего этот вызов. После fork() процесс-потомок чаще всего выполняет системный вызов exec(), загружающий в пространство процесса новую программу. Дочерний поцесс наследует все св-ва родительского процесса, включая дескрипторы файла. Родительский процесс может проверить состояние дочернего процесса. При завершении дочернего процесса по вызову, объект ядра связ с процессом – task_struck. Объект ядра не уничтожается. Родит процесс проверяет состояние дочернего через вызов wait и только после этого объект удаляется. Виды процессов: 1) системные и 2) процессы демоны (службы), процессы работающие вне интерактивного режима. 3) Прикладные процессы (все остальные в рамках режима пользователя). Способы порождения демонов: 1)через скрипты, 2) через спец формы задач, 3) через команду at <имя прогр> <время>, 4) запуск процесса в терминале. Основная идея взаимодействия процессов – заключается в создании глобальных объектов, доступных всем процессам, с учетом их прав доступа. Все средства взаимодействия процессов разделяют на две группы: Средства обмена данными и Средства синхронизации процессов. Средства обмена данными. Одно из основных средств обмена данными в семействе ОС UNIX является разделяемая память – сегмент памяти доступный нескольким процессам одновременно. Для работы с разделяемой памятью используются четыре системных вызова: shmget создает новый сегмент разделяемой памяти или находит существующий сегмент с тем же ключом; shmat подключает сегмент с указанным дескриптором к виртуальной памяти обращающегося процесса; shmdt отключает от виртуальной памяти ранее подключенный к ней сегмент с указанным виртуальным адресом начала; shmctl служит для управления параметрами сегмента разделяемой памяти. Создание сегмента не означает немедленного выделения под него основной памяти. Это действие откладывается до выполнения первого системного вызова. id – десикрптор сегмента разделяемой памяти; cmd – команда управления сегментом разделяемой памяти. !!!Уничтожение: Если к моменту выполнения системного вызова ни один процесс не подключил сегмент к своей виртуальной памяти, то основная память, занимаемая сегментом, освобождается, а соответствующий элемент таблицы разделяемых сегментов объявляется свободным.В противном случае в элементе таблицы сегментов выставляется флаг, запрещающий выполнение системного вызова shmget по отношению к этому сегменту. Таким образом. Обмен данными между процессами выполняется путем записи и чтения данных по адресу подключенного сегмента разделяемой памяти с использованием обычных машинных команд чтения и записи. Сигналы представляют процессам систему прерываний на логическом уровне. Они используются в 3-х случаях: Для обработки исключительных ситуаций Для обработки внешний и внутренних прерываний Для управления системой прерываний (маскирование, демаскирование). Коды сигналов хранятся в системной библиотеке signal. Семафоры – средство синхронизации процессов, на основе задержки выполнения процесса до изменения состояния некоторой системной переменной (структуры) глобальной для всех процессов. Семафор в ОС UNIX состоит из следующих элементов: значение семафора; идентификатор процесса, который хронологически последним работал с семафором; число процессов, ожидающих увеличения значения семафора; число процессов, ожидающих нулевого значения семафора. Для работы с семафорами поддерживаются три системных вызова: semget для создания и получения доступа к семафору; semop для манипулирования значениями семафоров (это именно тот системный вызов, который позволяет процессам синхронизоваться на основе использования семафоров); semctl для выполнения разнообразных управляющих операций над набором семафоров. Системный вызов к семафору позволяет проверить его состояние, уменьшить или увеличить. Механизм синхронизация процессов с помощью семафоров следующий. При организации доступа к общему ресурсу с помощью семафора создается критическая секция. Критическая секция - часть ресурса, доступ к которому разрешен строго определенному числу процессов. Количество разрешенных процессов определяется максимальным числом ресурсов, контролируемых семафором. Основные правила для семафоров: Когда счетчик текущего значения ресурсов > 0 семафор переходит в свободное состояние. Если счетчик = 0, семафор занят. Счетчик текущего числа ресурсов в семафоре не может быть <0, Счетчик текущего числа ресурсов не может быть больше максимального числа ресурсов. Очереди сообщений – механизм передачи сообщений от одного процесса к другому. При этом необязательно чтобы процессы были активны. Необходимо наличие активного объекта ядра – "очередь", который создается одним из процессов или сторонним процессом. Источник и приемник выполняют операцию открыть объект очередь, послать сообщение в очередь, извлечь (принять) сообщение. Для приема сообщений используется системный вызов msgrcv, msgget для образования новой очереди сообщений или получения дескриптора существующей очереди; msgsnd для посылки сообщения (для его постановки в указанную очередь сообщений); msgrcv для приема сообщения (вернее, для выборки сообщения из очереди сообщений); msgctl для выполнения ряда управляющих действий. Программные каналы – прототипы клиент серверной обработки. Различаются два вида программных каналов: именованные; неименованные. Именованный программный канал может служить для общения и синхронизации произвольных процессов, знающих имя данного программного канала и имеющих соответствующие права доступа. Неименованным программным каналом могут пользоваться только создавший его процесс и его потомки (необязательно прямые).Для создания именованных программных каналов (или получения доступа к уже существующим каналам) используется обычный системный вызов open. Основным отличием от случая открытия обычного файла является то, что если именованный программный канал открывается на запись, и ни один процесс не открыл тот же программный канал для чтения, то обращающийся процесс блокируется (усыпляется) до тех пор, пока некоторый процесс не откроет данный программный канал для чтения (аналогично обрабатывается открытие для чтения). Повод для использования такого режима работы состоит в том, что, вообще говоря, бессмысленно давать доступ к программному каналу на чтение (запись) до тех пор, пока некоторый другой процесс не обнаружит готовности писать в данный программный канал (соответственно читать из него). В в основе ОС UNIX лежат два основных принципа построения: Концепция процесса, Концепция файла. Концепция файла в ОС UNIX включает следующие положения: Файлы ОС представляются индексными дескрипторами (inode), которые описывают всю структуру данных на диске. Каталоги – это файлы, содержащие список записей, которые описывают соответствие дескриптором и именем файла. Индексный дескриптор – структура, которая содержит описание файла (тип файла; права доступа; владельца файла; ячейки времени изменения файла; размер; указатели на блок данных файла). Типы файлов: файл, дирректория, конвейер,сокет, символическая ссылка, спец файлы устройств. Каталоги - это файлы отдельного типа. В действительности, каталог это файл, содержащий список записей. Каждая запись содержит номер индексного дескpиптоpа и имя файла. Когда какой-либо процесс использует путь к файлу, ядpо ищет в каталогах соответствующий номер индексного дескpиптоpа. После того, как имя файла было пpеобpазовано в номеp индексного дескpиптоpа, этот дескpиптоp помещается в память и затем используется в последующих запросах.Отсутствует системный вызов, позволяющий прямо писать в файл-каталог. Запись в файлы-каталоги производится неявно при создании и уничтожении файлов и каталогов, однако читать из файла-каталога при наличии соответствующих прав можно (пример - стандартная утилита ls,
Дата добавления: 2015-04-23; Просмотров: 593; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |