
- •1. Понятие операционной системы и цели ее работы
- •Компоненты компьютерной системы
- •Общая картина функционирования компьютерной системы
- •Классификация компьютерных систем
- •Классификация компьютерных архитектур
- •История ос
- •Отечественные операционные системы
- •Облачные вычисления и ос для облачных вычислений(развитие концепций и возможностей ос)
- •Вопрос 2
- •Особенности операционных систем для компьютеров общего назначения (mainframes)
- •Режим разделения времени и особенности ос с режимом разделения времени
- •Системы и ос реального времени
- •Особенности ос для персональных компьютеров
- •Карманные компьютеры (handhelds) и их ос
- •Параллельные компьютерные системы и особенности их ос.
- •Симметричные и асимметричные мультипроцессорные системы
- •Распределенные компьютерные системы и особенности их ос
- •Виды серверов в клиент-серверных компьютерных системах
- •Кластерные вычислительные системы и их ос
- •3. Вычислительные среды
- •Архитектура компьютерной системы
- •Функционирование компьютерной системы
- •Обработка прерываний
- •Архитектура ввода-вывода
- •Вопрос 4
- •Структура памяти
- •Аппаратная защита памяти и процессора
- •Аппаратная защита адресов памяти в системах с теговой архитектурой
- •Организация аппаратной защиты памяти и процессора
- •5. Основные компоненты ос
- •Исполнение программ в ms dos
- •Исполнение нескольких программ в unix
- •Коммуникационные модели
- •6. Уровни абстракции
- •Уровни абстракции ос
- •Структура системы ms dos
- •Структура системы unix
- •Операционные системы с микроядром
- •Виртуальная машина Java (jvm)
- •Цели проектирования и разработки ос
- •Механизмы и политики
- •Реализация операционных систем
- •Генерация операционной системы
- •7. Понятие процесса
- •Состояния процесса
- •Блок управления процессом
- •Переключение с одного процесса на другой
- •Очереди, связанные с диспетчеризацией процессов
- •Переключение контекста
- •Вопрос 8
- •Уничтожение процесса
- •Парадигма (шаблон) взаимодействия процессов: производитель – потребитель
- •9. Коммуникация процессов
- •Непосредственная коммуникация процессов
- •Косвенная коммуникация процессов (про синхронизацию есть немного)
- •Буферизация и очередь сообщений (сокеты)
- •Основные понятия диспетчеризации процессов
- •Вопрос 10 Однопоточные и многопоточные процессы
- •Проблемы многопоточности
- •Потоки posix (Pthreads
- •Потоки в Java
- •Вопрос 12 Основные понятия диспетчеризации процессов
- •Планировщик процессора
- •Критерии диспетчеризации
- •Предсказание длины следующего периода активности
- •Вопрос 13 Диспетчеризация по приоритетам
- •Стратегия Round Robin (rr)
- •Многоуровневая очередь
- •Многоуровневые аналитические очереди
- •Планирование в Solaris
- •Планирование в Windows 2000
- •Вопрос 14 История синхронизации
- •Синхронизация процессов по критическим секциям
- •Алгоритм решения проблемы критической секции
- •Вопрос 15 Синхронизация на основе общих семафоров
- •Семафоры как общее средство синхронизации
- •Общие и двоичные семафоры
- •Решение классических задач синхронизации с помощью семафоров
- •Вопрос 16
- •Мониторы
- •Синхронизация в ос Solaris
- •Синхронизация в Windows 2000
- •Вопрос 17 Проблема тупиков
- •Модель системы
- •Граф распределения ресурсов
- •Поиск тупиков по графу распределения ресурсов
- •Методы обработки тупиков
- •Предотвращение тупиков
- •Избежание тупиков
- •Безопасное состояние системы
- •Вопрос 18
- •19. Управление памятью.
- •Вопрос 20
- •Вопрос 22
- •23. Понятие файла
- •Вопрос 24
Буферизация и очередь сообщений (сокеты)
С коммуникационной линией связывается очередь сообщений, реализованная одним из трех возможных способов:
Нулевая емкость очереди сообщений означает, что сообщения не могут храниться в очереди. Поэтому при использовании данного способа отправитель должен ждать получателя. Такая схема коммуникации называется рандеву (rendezvous) и используется, например, в языке Ада.
Ограниченная емкость очереди сообщений – конечная длина очереди, в которой может храниться максимум n сообщений. Данный способ является общеупотребительным, однако в данном случае, как уже отмечалось, необходимо предотвратить опасность атаки "buffer overrun", т.е. в любой операции проверять длину буфера (очереди). Отправитель должен ждать, если очередь заполнена.
Неограниченная емкость очереди сообщений – (теоретически) она имеет бесконечную длину. В данном случае отправитель никогда не ждет.
Клиент-серверная взаимосвязь – один из наиболее распространенных видов коммуникации процессов
Используются, в частности, следующие ее разновидности, которые мы и рассмотрим:
Сокеты (Sockets)
Удаленные вызовы процедур (Remote Procedure Calls – RPC)
Удаленные вызовы методов (Remote Method Invocation – RMI).
Сокеты – наиболее распространенный
способ связи клиента и сервера в сети.
Впервые они были реализованы в UNIX BSD
4.2. Сокет можно определить как отправную
(конечную) точку для коммуникации -
endpoint for communication. Сокет создается клиентом
для взаимодействия с сервером. Сокет
связан с определенным номером порта,через
который клиент и сервер обмениваются
информацией, используя числовой или
символьный последовательный поток.
Сервер, со своей стороны, прослушивает
порт с заданным номером и создает для
этого серверный сокет. По сути дела,
сокет можно представлять как конкатенацию
IP-адреса и порта. Например, сокет
161.25.19.8:1625 ссылается на порт 1625 на машине
(хосте) 161.25.19.8. Коммуникация осуществляется
между парой сокетов – клиентским и
серверным. Она изображена на рис. 9.1.
Рис.
9.1. Взаимодействие с помощью сокетов.
Удаленные вызовы процедур (Remote Procedure Calls – RPC) впервые предложены фирмой Sun и реализованы в ОС Solaris.
Удаленный вызов процедуры (RPC) – абстракция вызова процедуры между процессами в сетевых системах. Он основан на следующей идее. В клиентской части создаются заглушка (proxy, stub) – локальная процедура, осуществляющая связь с фактической процедурой, находящейся на сервере. Заглушка в клиентской части находит сервер и выстраивает (marshals) параметры для их передачи на сервер по сети. Проблема здесь в том, что адресация на клиенте и на сервере различная, и передавать адрес в памяти каких-либо данных с одного хоста на другой не имеет смысла. Поэтому приходится использовать особую форму передачи информации в виде последовательного потока байтов. Заглушка в серверной части принимает сообщение, распаковывает параметры, преобразует их к нормальному виду и выполняет процедуру на сервере.
Схема организации удаленного вызова
процедуры изображена на рис. 9.2.
Рис.
9.2. Исполнение RPC.
Удаленный вызов метода (Remote Method Invocation, RMI) – механизм в Java-технологии, аналогичный RPC, но в объектно-ориентированной форме.
RMI позволяет Java-приложению на одной машине вызвать метод удаленного объекта.
Схема RMI изображена на рис. 9.3.
Рис.
9.3. Удаленный вызов метода в Java.
Схема выстраивания параметров и
результатов при удаленных вызовах
изображена на рис. 9.4.
Рис.
9.4. Выстраивание параметров при удаленном
вызове.