- •20 Билет
- •1)Установление связи
- •2) Передача данных
- •2.Системные вызовы
- •3.Примеры
- •2 Билет.
- •1.Управление процессами
- •2. Сигналы.
- •3 Билет
- •1.Обработка Сигнала
- •2) Группы процессов
- •3)Примеры
- •4 Билет
- •1)Посылка сигналов процессами
- •2)Межпроцессные комуникации
- •3)Примеры в качестве примера можно привести программу ,которая принимает сигналы о прерывании (sigint) и сама посылает их (в результате выполнения функции kill
- •5 Билет.
- •6 Билет.
- •7 Билет
- •1)Атомарные (неделимые) операции с каналами
- •2)Примечания к полудуплексным каналам
- •8 Билет
- •1)Именованные каналы (fifo: First In First Out): основные понятия
- •2)Операции с fifo
- •3) Примеры
- •9 Билет
- •1) Базовые понятия System V ipc
- •2) Идентификаторы ipc
- •10 Билет
- •11 Билет
- •1)Буфер сообщения
- •13 Билет
- •1)Системный вызов msgctl
- •2)Семафоры. Основные понятия
- •1)Системный вызов semget.
- •2) Системный вызов semop.
- •15 Билет
- •1) Системный вызов semctl
- •2) Разделяемая память. Основные понятия.
- •3) Примеры
- •16 Билет
- •1) Системный вызов shmget
- •2) Системный вызов shmctl
- •3) Примеры
- •17 Билет
- •Системный вызов shmat
- •Системный вызов shmdt
- •18 Билет
- •Системный вызов mmap
- •19 Билет
- •1) Создание сокета
- •2) Привязка к локальным именам
- •3) Примеры:
- •20 Билет
- •1)Установление связи
- •2) Передача данных
- •3) Примеры Установление связи
- •Передача данных
- •21 Билет
- •1. Закрытие сокетов.
- •22 Билет.
- •1) Алгоритмы
- •2) Оценки эффективности алгоритмов.
- •3) Примеры
- •23 Билет
- •1.Ядро операционной системы
- •2.Системные вызовы
- •3.Примеры
- •24 Билет.
- •25 Билет
- •1) Системный вызов semctl
- •2) Разделяемая память. Основные понятия.
- •3) Примеры
- •26 Билет
- •1) Группы процессов
- •2)Обработка Сигнала
- •3)Примеры
- •27 Билет
- •1) Создание сокета
- •2) Привязка к локальным именам
- •3) Примеры:
- •28 Билет.
- •29 Билет
- •1. Закрытие сокетов.
- •30 Билет
- •1)Установление связи
- •2) Передача данных
- •3) Примеры Установление связи
- •Передача данных
17 Билет
Системный вызов shmat
Если аргумент shmaddr является нулем, ядро пытается найти нераспреоделенную область. Это рекомендуемый метод. Адрес может быть указан, но в типичных случаях это используется только для облегчения работы аппаратного обеспечения или для разрешения конфликтов с другими при ложениями. Флаг SHM_RND может быть добавлен в аргумент флага битовой операцией ¾ИЛИ¿, чтобы заставить переданный адрес выровняться
по странице (округление до ближайшей страницы).
Кроме того, если устанавливается флаг SHM_RDONLY, то разделяемый
сегмент памяти будет распределен, но помечен readonly.
Если сегмент был правильно привязан, и процесс имеет указатель на
начало сегмента, чтение и запись в сегмент становятся настолько же легкими, как манипуляции с указателями.
Системный вызов shmdt
После того, как разделяемый сегмент памяти больше не нужен процессу, он должен быть отсоединен вызовом shmdt. Как уже отмечалось, это не то же самое, что удаление сегмента из ядра. После успешного отсоединения значение элемента shm_nattch структуры shmid_ds уменьшается на 1. Когда оно достигает 0, ядро физически удаляет сегмент.
Пример
int shmat ( int shmid, char *shmaddr, int shmflg );
int shmdt ( char *shmaddr );
18 Билет
Системный вызов mmap
Системный вызов mmap. Хотя системный вызов mmap и не явля
ется частью IPC System V, но он имеет много схожего с принципами разде
ляемой памяти и очень часто применим на практике для межпроцессных
коммуникаций. Итак, системный вызов mmap ¾отображает¿ (мапирует)
файлы или устройства в память.
Функция mmap мапирует в область памяти с фиксированным размером
length, начиная со смещения в файле offset с начальным адресом start.
Так же как и в случае вызова функции shmat, если параметр start ра
вен 0, то система сама подыскивает свободную область памяти. Функция
возвращает указатель на реально выделенную область памяти. Аргумент
prot задает права доступа к памяти (они не должны конфликтовать с
правами доступа к файлу), которые могут быть следующие:
• PROT_EXEC страницы памяти могут быть выполнены;
• PROT_READ страницы памяти можно читать;
• PROT_WRITE в страницы памяти можно записывать;
• PROT_NONE нет доступа к страницам памяти.
Сокеты
Создание сокета. Для создания сокета используется системный вызов socket.
s = socket(domain, type, protocol);
Этот вызов основывается на информации о коммуникационном домене и о типе сокета
Пример
void * mmap(void *start, size_t length, int prot , int
flags, int fd, off_t offset);
int munmap(void *start, size_t length);
int msync(const void *start, size_t length, int flags);
19 Билет
1) Создание сокета
s = socket(domain, type, protocol); Этот вызов основывается на информации о коммуникационном домене и типе сокета.
Функция socket создает конечную точку для коммуникаций и возвращает файловый дескриптор, ссылающийся на сокет, или -1 в случае ошибки. Данный дескриптор используется в дальнейшем для установления связи.
2) Привязка к локальным именам
Сокет создается без имени. Пока
с сокетом не будет связано имя, удаленные процессы не имеют возможности ссылаться на него и, следовательно, на данном сокете не может бытьполучено никаких сообщений.
