- •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) Примеры Установление связи
- •Передача данных
Практика системного программирования ВТиПО-212
Билеты
1 билет.
1) Ядро операционной системы
2) Системные вызовы
3) Примеры
2 билет.
1) Управление процессами
2) Сигналы
3) Примеры
3 билет
1)Обработка Сигнала
2) Группы процессов
3) Примеры
4 билет
1)Посылка сигналов процессами
2)Межпроцессные комуникации
3) Примеры
5 билет
1) Полудуплексные каналы UNIX.
2) Создание каналов на Си.
3) Примеры
6 билет
1) Системный вызов dup. 2) Системный вызов dup2.
3) Примеры
7 билет
1) Атомарные (неделимые) операции с каналами
2)Примечания к полудуплексным каналам
3) Примеры
8 билет
1)Именованные каналы (FIFO: First In First Out): основные понятия
2)Операции с FIFO
3) Примеры
9 билет
1) Базовые понятия System V IPC
2) Идентификаторы IPC
3) Примеры
10 билет
1)Ключи IPC
2)Очереди сообщений. Базовые принципы
3) Примеры
11 Билет
1)Буфер сообщения
2) Системный вызов msgget
3) Примеры
12 Билет
1)Системный вызов msgsnd
2)Системный вызов msgrcv
3)Примеры
13 билет
1)Системный вызов msgctl
2)Семафоры. Основные понятия
3) Примеры
14 Билет
Системный вызов semget.
Системный вызов semop
Примеры
15 билет
1) Системный вызов semctl
2) Разделяемая память. Основные понятия.
3) Примеры
16 билет
1) Системный вызов shmget
2) Системный вызов shmctl
3) Примеры
17 билет
1)Системный вызов shmat
2)Системный вызов shmdt
3)Примеры
18билет
1)Системный вызов mmap
2)Сокеты
3)Примеры
19 билет
1)Создание сокета
2) Привязка к локальным именам
3) Примеры
20 Билет
1)Установление связи
2) Передача данных
3) Примеры
21 билет.
1) Закрытие сокетов
2) Мультиплексирование ввода-вывода
3) Примеры
22 билет.
1) Алгоритмы
2) Оценки эффективности алгоритмов.
3) Примеры
23 билет.
1) Ядро операционной системы
2) Системные вызовы
3) Примеры
24 билет
1) Системный вызов dup. 2) Системный вызов dup2.
3) Примеры
25 билет
1) Системный вызов semctl
2) Разделяемая память. Основные понятия.
3) Примеры
26 билет
1) Группы процессов
2) Обработка Сигнала
3) Примеры
27 билет
1)Создание сокета
2) Привязка к локальным именам
3) Примеры
28 билет
1) Полудуплексные каналы UNIX.
2) Создание каналов на Си.
3) Примеры
29 билет.
1) Закрытие сокетов
2) Мультиплексирование ввода-вывода
3) Примеры
30 билет
1)Установление связи
2) Передача данных
3) Примеры
1 билет
1.Ядро операционной системы
Ядро - это базовая часть любой современной операционной системы (ОС), работающее в защищенном режиме и отделяющее пользовательские процессы от прямого доступа к ресурсам компьютера. Оно включает в себя драйверы устройств, механизм распределения памяти, управление процессами, связями и т.д. Разработчики ядра стараются следовать рекомендациям стандарта «IEEEStd1003.1-1988 (POSIX.1)» для обеспечения переносимости программного обеспечения с одной операционной системы на другую.
2.Системные вызовы
Средством коммуникаций между ядром ОС и пользовательскими программами является системный вызов, представляющий собой способ сделать пользователю запрос ядру на выполнение привилегированной операции или произвести аппаратно-системно зависимое действие. В большинстве систем системные вызовы не прерываются, а приложение останавливается, пока ядро выполняет действие, ассоциированное с этим системным вызовом. Но ядро может вернуться из системного вызова раньше, чем все действие будет завершено полностью. Например, системный вызов
write останавливает пользовательский процесс на время копирования данных от процесса в защищенную память ядра (буфер), но обычно возвращается из системного вызова до того момента, как этот буфер будет записан на диск.
Все основные системные вызовы доступны посредством стандартной библиотеки libc, однако часто реализация включает в себя макрос, который в конце концов вызывает системный вызов. Для архитектуры i386 системные вызовы ограничены 5-ю аргументами, не считая номера вызова, из-за аппаратного числа регистров.
3.Примеры
К примеру, в программе можно
переопределить свой системный вызов close.
#include <syscall.h>
extern int syscall(int,...);
int my_close(int filedescriptor)
{
return syscall(SYS_close, filedescriptor);
}
В библиотеке для определения системного вызова пользуются
специальными макросами. Например, системный вызов close записывается следующим образом:
#include <syscall.h>
_syscall1 (int, close, int, filedescriptor);
Возвращаемое значение syscall может быть равным -1, если вызов неудачен, 0 или больше в случае успеха. В случае неудачи ошибку можно определить по глобальной переменной errno.
