- •Оглавление
- •7.1. Основные понятия 37
- •8.1. Основные понятия 47
- •14.1. Основные понятия 77
- •Введение
- •Раздел 1. Основные сведения об операционных системах Тема 1. Функции и классификация операционных систем
- •1.1. Функции ос
- •1.1. История ос
- •По назначению
- •По режиму обработки задач
- •1.3. Классификация ос
- •По способу взаимодействия с пользователем
- •По принципу построения
- •Вопросы для самоконтроля
- •Тема 2. Структура операционных систем. Системные вызовы
- •2.1. Структура ос
- •Монолитная структура (структура макроядра)
- •Иерархическая структура (многослойное ядро)
- •Структура микроядра
- •2.2. Выполнение системных вызовов
- •2.3. Понятие операционной и программной среды
- •Вопросы для самоконтроля
- •Раздел 2. Процессы и потоки Тема 3. Процессы
- •3.1. Основные сведения о процессах
- •Создание процессов
- •Завершение процессов
- •Иерархия процессов
- •3.2. Модели процесса Модель с двумя состояниями
- •Модель с пятью состояниями
- •3.3. Описание процессов
- •3.4. Управление процессами Создание процессов
- •Переключение процессов
- •3.5. Выполнение кода ос по отношению к процессам
- •Ядро вне процессов (автономное ядро)
- •Ядро в составе пользовательских процессов
- •Ос на основе процессов
- •Вопросы для самоконтроля
- •Тема 4. Системные вызовы управления процессами в ос unix
- •4.1. Создание процесса
- •4.2. Завершение процесса
- •4.3. Изменение образа памяти процесса
- •4.4. Синхронизация между родительским и дочерним процессами
- •4.5. Состояние "зомби"
- •Вопросы для самоконтроля
- •Тема 5. Сигналы в ос unix
- •5.1. Назначение сигналов
- •5.2. Обработка сигналов
- •5.3. Посылка сигнала процессу
- •Вопросы для самоконтроля
- •Тема 6. Потоки
- •6.1. Основные понятия
- •6.2. Основные операции с потоками
- •6.3. Способы реализации потоков в пространстве пользователя
- •В пространстве ядра
- •Смешанная реализация
- •Вопросы для самоконтроля
- •Тема 7. Взаимоблокировки
- •7.1. Основные понятия
- •Типы доступа к ресурсу
- •Условия возникновения взаимоблокировок
- •7.2. Моделирование взаимоблокировок
- •7.3. Обнаружение взаимоблокировок Обнаружение взаимоблокировок при наличии одного ресурса каждого типа
- •Обнаружение взаимоблокировок при наличии нескольких ресурсов каждого типа
- •7.4. Избежание взаимоблокировок Безопасные и небезопасные состояния
- •Алгоритм банкира для одного вида ресурса
- •Алгоритм банкира для нескольких видов ресурсов
- •Вопросы для самоконтроля
- •Раздел 3. Взаимодействие процессов Тема 8. Проблема взаимного исключения и способы ее решения
- •8.1. Основные понятия
- •8.2. Аппаратные способы достижения взаимного исключения Запрещение прерываний
- •Специальные команды, выполняющиеся атомарно
- •8.3. Программные способы достижения взаимного исключения Переменные блокировки.
- •Алгоритм Деккера
- •Алгоритм Петерсона
- •Вопросы для самоконтроля
- •Тема 9. Примитивы синхронизации
- •9.1. Семафоры Определение семафора
- •Применение семафоров
- •9.2. Мьютексы
- •9.3. Мониторы
- •Структура монитора
- •Вопросы для самоконтроля
- •Тема 10. Классические проблемы межпроцессного взаимодействия
- •10.1. Проблема производителя и потребителя
- •10.2. Задача о читателях и писателях
- •10.3. Задача об обедающих философах
- •10.4. Задача о спящем парикмахере
- •10.5. Задача о железнодорожном перегоне
- •Вопросы для самоконтроля
- •Тема 11. Межпроцессное взаимодействие в ос unix
- •11.1. Неименованные каналы
- •Синхронизирующие свойства неименованного канала
- •Системные вызовы для работы с неименованными каналами
- •Шаги в установлении связи через неименованный канал
- •Ограничения неименованных каналов
- •11.2. Именованные каналы
- •Использование именованных каналов
- •Синхронизирующие свойства именованных каналов
- •Системные вызовы для работы с именованными каналами
- •11.3. Очереди сообщений
- •11.4. Разделяемая память
- •Вопросы для самоконтроля
- •Тема 12. Передача сообщений
- •12.1. Характеристика систем передачи сообщений
- •12.2. Модель клиент-сервер
- •Вопросы для самоконтроля
- •Тема 13. Api сокетов ос unix
- •13.1. Межпроцессное взаимодействие при помощи сокетов
- •13.2. Системные вызовы работы с сокетами в ос unix Структура адреса сокета
- •Получить дескриптор сокета (создать сокет)
- •Указать адрес локальной оконечной точки
- •Перевод сокета в пассивный режим
- •Принять соединение с сокетом
- •Установить соединение с сервером.
- •Чтение данных из сокета и запись данных в сокет
- •Операции клиента и сервера
- •14.2. Критерии краткосрочного планирования.
- •14.3. Стратегии краткосрочного планирования. Первым поступил – первым обслужен
- •Кратчайшая задача – первая
- •Наименьшее оставшееся время выполнения
- •Циклическое планирование
- •Приоритетное планирование
- •Вопросы для самоконтроля
- •Раздел 5. Управление памятью Тема 15. Технологии распределения памяти
- •15.1. Фиксированное распределение
- •15.2. Динамическое распределение
- •15.3. Система двойников
- •15.4. Простая страничная организация
- •15.5. Простая сегментная организация
- •Вопросы для самоконтроля
- •Тема 16. Виртуальная память
- •16.1. Предпосылки для организации виртуальной памяти
- •16.2. Страничная организация виртуальной памяти
- •Структура таблицы страниц
- •16.3. Сегментация
- •16.4. Комбинация сегментации и страничной организации
- •16.5. Алгоритмы управления виртуальной памятью
- •Стратегия выборки
- •Стратегия размещения.
- •Стратегия замещения
- •Вопросы для самоконтроля
- •Раздел 6. Ввод-вывод и файловая система Тема 17. Ввод-вывод
- •17.1. Принципы программного обеспечения ввода-вывода
- •Способы осуществления ввода-вывода
- •17.2. Программные уровни ввода-вывода
- •Обработчики прерываний
- •Драйверы устройств
- •Независимое от устройств программное обеспечение ввода-вывода
- •Программное обеспечение ввода-вывода пространства пользователя
- •Вопросы для самоконтроля
- •Тема 18. Физическая организация файловой системы
- •18.1. Цели и задачи файловой системы
- •18.2. Устройство диска
- •18.3. Физическая организация и адресация файла
- •Вопросы для самоконтроля
- •Тема 19. Логическая организация файловой системы
- •19.1. Типы файлов
- •19.2. Иерархическая структура файловой системы
- •Имена файлов
- •Монтирование
- •19.3. Атрибуты файлов
- •Вопросы для самоконтроля
- •Литература
- •Перечень сокращений
Вопросы для самоконтроля
В каких случаях обмен сообщениями является единственно возможным способом межпроцессного взаимодействия?
Поясните понятия длокирующего и неблокирующего системного вызова.
Дайте определение модели взаимодействия типа клиент-сервер.
Модель клиент-сервер популярна в распределенных системах. Можно ли ее также использовать в однокомпьютерных системах?
Тема 13. Api сокетов ос unix
13.1. Межпроцессное взаимодействие при помощи сокетов
Для адресации компьютера в глобальной сети используется IP-адрес – уникальное 32-битное число, назначаемое хосту и используемое во всех операциях связи для связи с хостом.
Для адресации служб используется пара объектов – IP-адрес и порт. Порт – это целое число, используемое ОС для идентификации служб в рамках одного компьютера. Порт не соответствует какой-либо физической сущности. Одна программа-сервер может обеспечивать несколько служб (например, порт 80 – HTTP, порт 21 – FTP).
Для организации обмена по сети необходимо разработать протокол связи – соглашение, определяющее формат и смысл сообщений, которыми обмениваются приложения. Организация взаимодействия программ по сети – сложная задача, включает много подзадач: согласование уровней электрических сигналов, формирование кадров, проверка контрольных сумм, доставка пакетов по адресу назначения, устранение дублирования пакетов, аутентификация пользователей и т.д. Эта сложная задача разбивается на ряд простых, иерархически упорядоченных подзадач. Отдельная программа решает задачи определенного уровня. Т.е. вместо создания единственного гигантского протокола разрабатываются отдельные протоколы для каждой подзадачи.
Протокол – правила, определяющие обмен между компонентами одного уровня. Стек коммуникационных протоколов – иерархический набор протоколов, достаточный для организации взаимодействия узлов в сети. Протоколы нижних уровней могут быть организованы аппаратно или программно, верхних – чисто программно.
В начале 80-х годов международная организация по стандартизации ISO разработала семиуровневую модель OSI (Open System Interconnection) – модель взаимодействия открытых систем. В настоящее время ее заменила пятиуровневая модель Internet (рис. 13.1 ). Каждый уровень решает свою часть задачи связи: ПО конкретного уровня на компьютере-отправителе добавляет нужную информацию к отправляемым данным, а ПО того же уровня на компьютере-получателе использует эту информацию и затем удаляет ее. Например, уровень сетевого интерфейса компьютера 1 добавляет к кадру контрольную сумму перед передачей кадра по сети. Уровень сетевого интерфейса компьютера 2 проверяет и удаляет контрольную сумму входящего кадра до передачи его на сетевой уровень.
Стек протоколов обычно является частью ОС. Прикладная программа может взаимодействовать со стеком протоколов при помощи сокетов.
Сокеты – это интерфейс прикладного программирования (API), который предоставляет ОС для взаимодействия процессов. Это структура данных, используемая как оконечная точка взаимодействия для IPC. Сокет является развитием механизма каналов.
Две программы, взаимодействующие при помощи сокетов, используют пару сокетов. Сокет на локальном компьютере называют локальным сокетом, на удаленном – удаленным сокетом.
Существует два основных типа сокетов:
Потоковый сокет, или сокет с установлением соединения, или сокет TCP. Позволяет создавать двунаправленный, надежный поток данных, "виртуальную цепь". Канал реализуется как пара потоковых сокетов.
Характеристики соединения с помощью сокетов TCP:
двухточечная связь, невозможна широковещательная и групповая передача;
надежное установление соединения и надежная доставка;
передача с управлением скоростью потока данных (данные не передаются быстрее, чем их может принять получатель);
потоковая организация: границы между сообщениями не устанавливаются.
Дейтаграммный сокет, или сокет без установления соединения, или сокет UDP. Позволяет создавать двунаправленный, ненадежный поток данных.
Характеристики соединения с помощью сокетов UDP:
обеспечивают связь "многие-ко-многим", т.е. можно реализовать широковещательную и групповую передачу;
ненадежная доставка;
отсутствие управления скоростью потока данных, если дейтаграммы поступают быстрее, чем они могут быть обработаны, то они отбрасываются без оповещения;
дейтаграммная организация – доставленные данные укладываются в те же границы сообщений, которые были установлены приложением-отправителем;
надежная доставка может быть обеспечена только в локальных вычислительных сетях.
