
- •Ос в общей структуре компьютера.
- •История операционных систем.
- •Классификация современных ос. Задачи современных ос.
- •6. Понятие процесса – ключевое понятие ос.
- •8. Трансляторы: компиляторы и интерпретаторы.
- •9. Иерархия зу (запоминающих устройств).
- •10. Управление оперативной памятью (оп). Менеджер памяти; swapping; виртуальная память.
- •11. Модели организации виртуальной памяти.
- •12. История ос unix.
- •13. Общая архитектура unix. Основные подсистемы ядра.
- •14. Пользовательская среда unix.
- •Командный интерпретатор shell.
- •16. Система каталогов в oс unix. Управление с помощью команд языка Bourn shell.
- •17. Управление файлами с помощью команд языка Bourn shell. Перенаправление ввода/вывода.
- •19. Обработка аргументов командной строки. Переменные окружения.
- •20. Пользователь и группа. Права доступа к файлу.
- •21. Системные вызовы и функции стандартных библиотек. Обработка ошибок.
- •22.Структура программы на языке с. Параметры главной функции (пример).
- •23. Файловая система ос unix: монтирование, индексные дескрипторы, жесткие и символические ссылки, файлы устройств.
- •24.Системные вызовы для работы с файлами
- •25. Понятие «процесс» в ос unix. Контекст процесса; свойства процесса; состояние процесса.
- •26.Создание процессов и упр-е ими.
- •27. Запуск внешней программы
- •29.Общая классификация средств взаимодействия процессов в ос unix.
- •30.Иерархия процессов в ос unix. Понятие сеанса. Фоновые процессы.
- •31.Каналы – средства взаимодействия процессов. Неименованные каналы. Организация конвейера (пример программы).
- •33.Сигналы как средство взаимодействия процессов в ос unix. Диспозиция сигналов.
- •34.Ограничения для процесса в ос unix (по ресурсам). Связь со свойствами процесса.
- •36.Отображение файлов в виртуальное адресное пространство. Разделяемая память.
- •37. Взаимодействие процессов через псевдотерминал.
- •38. Недостатки потокового взаимодействия процессов. Средства System vipc. Пространство имен. Общие принципы работы со средствами System vipc.
- •39. Организация очереди сообщений в ос unix. Структура сообщения. Отправка и принятие сообщений.
- •40.Семафоры, как средство взаимодействия процессов System vipc. Понятие атомарной операции. Массив семафоров.
- •41.Разделяемая память, как средство взаимодействия процессов System vipc.
- •42.Взаимодействие по сети. Понятие протокола. Семейства адресации и типы взаимодействия. Создание сокета в ос unix.
- •45. Потоковые сокеты. Клиент – серверная модель.
- •46. Проблема очередности действий и ее решение.
- •47. Процессы-демоны. Система журнализации.
- •48. Загрузка и жизненный цикл в ос unix.
- •49. Взаимоисключения. Понятие критической секции. Устаревшие подходы к организации взаимного исключения.
- •50.Поддержка взаимоисключения на уровне ос. Мьютексы и семафоры (Дейкстры). Команда ассемблера tsl.
- •51.Проблема тупиков. Граф ожидания
- •52. Нити исполнения (pthreads) в ос unix. Мьютексы pthreads.
- •53.Графический интерфейс в ос unix. Базовые принципы построения x_window.
- •54.Файловая подсистема. Общая структура. Методы выделения дискового пространства. Управление дисковым пространством.
- •55.Файловая подсистема. Структура файловой системы на диске. Реализация директорий. Поиск в директории (хеширование).
- •56.Подсистема ввода/вывода. Схема взаимодействия подсистем ос. Понятие драйвера. Типы драйверов.
42.Взаимодействие по сети. Понятие протокола. Семейства адресации и типы взаимодействия. Создание сокета в ос unix.
Создание сокета в ОС UNIX. Работа с адресом сокета. Завершение работы сокета.
Создание сокета:
Int socket (int address_family, int type, int protocol);
Задает использование семейства адресации
AF_INET для взаимодействия по сети по средствам tcp/ip
AF_UNIX в рамках 1 машины, адрес сокета это имя файла.
Задает тип взаимодействия type : const, sock_stream, sock_dgram
Задает конкретный используемый протокол, корректно в параметре поставить 0
-1 ошибка, в случае успеха № файлового дескриптора, связанного с созданным сокетом.
Работа с адресом:
Int bind( int sockfd, struct sockaddr*addr( указывает на структуру, созд адрес), int addrlen); размер структуры адреса в байтах. Реально в качестве параметра addr будет использовать структуру которая зависит от использований семейства адресации. В семействах AF_INET использование struct sockaddr_in умеет хранить ip адрес+код, объявляется она со след полями sin_family семейство адресации = AF_INET, sin_part № порта в сетевом порядке байт, sin_addr задает ip адрес. В семействах AF_UNIX используется struct sockaddr_un sun_family; sun_path массив из 108 символов, в которую записывается строка имени файла. Вызов bind возвращает 0 в случае успеха, -1 ошибка. Существует множество ситауций ошибок ( ошибка в случае использовании привилегированного № порта 0..1023, если задействован порт, который уже использован. Программно обрабатывать ошибка от bind обязательно.
Завершение : int close(int fd);
Вы также можете запретить передачу данных в каком-то одном направлении, используя shutdown.
int shutdown(int sockfd, int how);
Параметр how может принимать одно из следующих значений:
* 0 - запретить чтение из сокета
* 1 - запретить запись в сокет
* 2 - запретить и то и другое
Хотя после вызова shutdown с параметром how, равным 2, вы больше не сможете использовать сокет для обмена данными, вам всё равно потребуется вызвать close, чтобы освободить связанные с ним системные ресурсы.
Сокеты дейтаграммного типа.
Если bind не организован, то данные мб только отправляться. Int sendto(int s, const void*buf, int len, int flags, const struct sockaddr*to, socklen_t*tolen);
Int recvfrom(int s, const void*buf, int len, int flags, const struct sockaddr*from, socklen_t*fromlen);
Параметр s задает дескриптор сокетов, buf указывает на буфер, содержащий данные для передачи, либо для размещения принятых, len размер, flags используется для задания дополнительных опций (для норм работы поставить 0), в вызове sendto параметр to указывает на структуру, содержащую адрес сокета, на который необходимо отправить данные, адрес получателя сообщения (sockaddr_in для AF_INET, sockaddr_un для AF_UNIX) параметр to len равен размеру этой структуры. Параметр from указывает на структуру в которой нужно записать адрес отправителя, fromlen представляет собой указатель на переменную типа socklen_t. Причем передающая система вызовом кусмакщь в неее нужно занести размер адресной структуры. После вызова переменной содержащей количество байт, который вызывается в эту структуру в итоге записан.