- •41. Структура записей и содержимое файлов-каталогов unix:
- •44. Формат і призначення таблиці переміщень в об'єктних файлах
- •45. Адресний простір і атрибути процессу
- •46. Блочний ввід/вивід. Драйвери блочних пристроїв
- •Блочные драйверы
- •47. Взаємодія процесів Пам'ять сумісного користування
- •48. Взаємодія процесів. Черги повідомлень
- •Оценка интенсивности использования дисков с помощью команды iostat.
- •49. Відлагодження програм. Системний виклик 'ptrace'
- •50. Дисковий ввід/вивід. Буферний кеш. (здеся для общего развития дохера всего…удаляйте что не нужно, а то я хз как скоротить)
46. Блочний ввід/вивід. Драйвери блочних пристроїв
Блочный ввод/вывод главным образом предназначен для работы с каталогами и обычными файлами файловой системы, которые на базовом уровне имеют блочную структуру. на пользовательском уровне теперь возможно работать с файлами, прямо отображая их в сегменты виртуальной памяти. Эта возможность рассматривается как верхний уровень блочного ввода/вывода. На нижнем уровне блочный ввод/вывод поддерживается блочными драйверами
Блочные драйверы
Блочные драйверы предназначаются для обслуживания внешних устройств с блочной структурой (магнитных дисков, лент и т.д.) и отличаются от прочих тем, что они разрабатываются и выполняются с использованием системной буферизации. Другими словами, такие драйверы всегда работают через системный буферный пул. Обращение к блочному драйверу для чтения или записи всегда проходит через предварительную обработку, которая заключается в попытке найти копию нужного блока в буферном пуле.
47. Взаємодія процесів Пам'ять сумісного користування
Поскольку OS UNIX является многозадачной ОС, то параллельное выполнение нескольких процессов является обычной практикой ее функционирования. При этом актуальной является проблема управления взаимодействием процессов. Для управления взаимодействием процессов в фазе "пользователь", OS UNIX предоставляет средства внешней синхронизации и коммуникации процессов.
Процессы могут взаимодействовать друг с другом непосредственно путем разделения (совместного использования) участков виртуального адресного пространства и обмена данными через разделяемую память. Системные функции для работы с разделяемой памятью имеют много сходного с системными функциями для работы с сообщениями. Функция shmget создает новую область разделяемой памяти или возвращает адрес уже существующей области, функция shmat логически присоединяет область к виртуальному адресному пространству процесса, функция shmdt отсоединяет ее, а функция shmctlимеет дело с различными параметрами, связанными с разделяемой памятью. Процессы ведут чтение и запись данных в области разделяемой памяти, используя для этого те же самые машинные команды, что и при работе с обычной памятью. После присоединения к виртуальному адресному пространству процесса область разделяемой памяти становится доступна так же, как любой участок виртуальной памяти; для доступа к находящимся в ней данным не нужны обращения к каким-то дополнительным системным функциям.
Синтаксис вызова системной функции shmget:
shmid = shmget(key,size,flag);
где size - объем области в байтах. Ядро использует key для ведения поиска в таблице разделяемой памяти: если подходящая запись обнаружена и если разрешение на доступ имеется, ядро возвращает вызывающему процессу указанный в записи дескриптор.
48. Взаємодія процесів. Черги повідомлень
Очереди сообщений располагаются в адресном пространстве ядра операционной системы в виде однонаправленных списков и имеют ограничение по объему информации, хранящейся в каждой очереди. Каждый элемент списка представляет собой отдельное сообщение. Сообщения имеют атрибут, называемый типом сообщения . Выборка сообщений из очереди (выполнение примитива receive ) может осуществляться тремя способами:
В порядке FIFO, независимо от типа сообщения.
В порядке FIFO для сообщений конкретного типа.
Первым выбирается сообщение с минимальным типом, не превышающим некоторого заданного значения, пришедшее раньше других сообщений с тем же типом.
Реализация примитивов send и receive обеспечивает скрытое от пользователя взаимоисключение во время помещения сообщения в очередь или его получения из очереди. Также она обеспечивает блокировку процесса при попытке выполнить примитив receive над пустой очередью или очередью, в которой отсутствуют сообщения запрошенноготипа, или при попытке выполнить примитив send для очереди, в которой нет свободного места.
Очереди сообщений, как и другие средства System V IPC, позволяют организовать взаимодействие процессов, не находящихся одновременно в вычислительной системе.
