- •1. Операционные системы
- •2. Функциональные компоненты локальной ос
- •3. Назначение и функции сетевой ос
- •4. Функциональные компоненты сетевой ос
- •5. Коммуникационные средства
- •6. Классификация ос
- •8. Архитектура ос
- •9. Монолитные и многоярусные ядра
- •10. Функциональные компоненты Linux
- •11. Структура ядра
- •12. Функции слоёв ядра
- •13. Вспомогательные модули
- •14. Микроядерные системы
- •15. Объектная модель функционирования
- •16. Состав исполнительной системы WinNt
- •17. Совместимость
- •18. Множественные прикладные среды. Способы реализации
- •19. Интерфейсы ос
- •20. Файловая система
- •21. Логическая организация файла
- •22. Физическая организация файла
- •23. Общая модель фс
- •Непрерывное
- •2) Цепочечная
- •3) Фиксированный
- •Битовые карты (таблицы) – каждому блоку ставится в соответствие свой бит (1 – занят, 0 – свободен)
- •Цепочки сводных свободных порций
- •Список свободных блоков
- •Индексированный
- •24. Функции фс
- •25. Фс unix-подобных ос
- •26. Структура фс
- •27. Структура фс базовых unix-подобных ос
- •28. Архитектура виртуальной фс
- •29. Последовательность действий при монтировании
- •30. Файловые дескрипторы и трансляция имён
- •31. Физическая организация fat
- •32. Физическая организация ntfs
- •33. Управление процессами
- •34. Контекст и дескриптор
- •35. Структура контекста процесса
- •36. Планирование и диспетчеризация
- •37. Алгоритмы планирования
- •38. Планирование и диспетчеризация в unix системах
- •39. Управление процессами в unix-подобных системах
- •40. Атрибуты, инфраструктура процесса
- •41. Создание процессов
- •42. Этап exec()
- •43. Межпроцессные взаимодействия (ipc)
- •44. Каналы (pipe)
- •45. Fifo
- •46. Пространство имен
- •47. Сообщения
- •48. Семафоры
- •49. Разделяемая память
- •50. Сигналы
- •51. Последовательность событий
- •52. Функции управления процессами
- •53. Сообщения в микроядерных ос.
- •54. Процессы и потоки в WinNt
- •55. Базовая структура процесса, создание процесса в WinNt
- •56. Основные различия управления процессами в различных средах
- •57. Состав потока в WinNt и контекст потока
- •58. Передача сообщений с помощью lpc (локальный вызов процедур)
- •59. Распределенные системы. Удаленный вызов процедур. Rpc (Remote Procedure Call)
- •60. Система ввода-вывода в Win nt
- •61. Реализация свв в Windows nt
- •62. Унифицированная модель драйвера
- •63. Формат пакета irp
- •64. Структура драйвера
- •65. Редиректор и сервер. Встроенные сетевые компоненты
57. Состав потока в WinNt и контекст потока
Основные составляющие потока в исполнительной системе NT таковы:
Поток. Состав:
- уникальный идентификатор (идентификатор клиента)
- содержание набора регистров, отражающее состояние процессора для этого процесса
- два стека (для user и kernel mode)
- собственная область памяти, предназначенная для использования подсистемами, runtime и dll библиотеками.
Регистры, стек и собственная область данных памяти, определяющих состояние потока называются контекстом потока. Фактические данные, составляющие контекст потока, зависят от типа процессора.
58. Передача сообщений с помощью lpc (локальный вызов процедур)
Возможно два подхода реализации сервисов по запросу от приложений.
1) Совместное использование сегментов dll (динамических библиотек).
2) Защита памяти подсистем.
1 – dll однократно прописываетв в АП. Остальные обращаются к ней -> нет тиражирования, нет связывания -> экономия места.
2 - Нужен если: потоки принадлежат одному процессу, для передачи сообщений используются простейшие способы синхронизации, если разные процессы, то возможно копирование информации в собственное АП потока; использование разделяемой памяти; LPC – механизм передачи. Приложение вызывает функции API-dll, после этого производится обращение по точке входа – stub, (осуществляется упаковка сообщений), дальше передается в защищенный локальный сервер LPC или удаленный сервер посредством RPC, тогда сообщение попадает пред сервером в его точку входа stub для преобразования его к виду, понятному для сервера.
LPC предлагает 3 способа передачи сообщения:
Посылка сообщения в объект – порт, связанный с серверным процессом.
Посылка в порт сервера указателя на сообщение, и передача сообщения через общую разделяемую память.
Передача сообщения через особую область памяти в рамках разделяемой, причем определенному потоку.
Для любого из 3-х способов необходимо установить соединение (канал связи для передачи сообщений).
Объект – порт - 2 типа: порт соединения, порт связи. Порт соединения – прием запроса клиента на установление канала связи с сервером.
1) Для соединения с сервером процесс открывает описатель объекта порта, посылает запрос на соединение. 2) Сервер (потока) открывает 2 безымянных объекта порта. (один описатель сохраняется у сервера, другой обращается к клиенту). 3) Клиент использует свой описатель для посылки сообщений серверу и ожидает ответ от него. 4) Сервер использует свой описатель для поддержки аналогичных взаимодействий.
Описатели объектов портов не наследуются. Атрибуты: тело объекта порта очередь сообщений, описатель секций.
Способы передачи сообщений LPC:
Установка канала связи клиент указывает один из возможных способов:
Передача в очередь сообщений объекта порта, используется для сообщений малого размера.
Передача через совместно используемую память (для больших сообщений)
Быстрый LPC.
Копирование в порт: LPC помещает сообщение в один из блоков объекта порта, контекст ядра переключается с клиентского процесса на процесс – сервер. Поток сервера копирует сообщение в АП сервера и обрабатывает его. Результат отправляется в порт связи клиента.
Объект порта хранится в системной памяти. При создании процесса механизм LPC резервирует память из резидентного пула. Ограничение на передаваемые сообщения: блок 256 байт.
Передача через совместно используемую память:
Применяется при условии, что длина сообщения превышает 256 байт (иначе можем разместить сообщение в порте).
Клиент создает объект – секцию (область памяти называется секцией). Как реакция средства LPC реагируют на клиентский запрос и обеспечивают двойное отображение секции на пространство клиента и пространство сервера, причем делает это с использованием аппаратных возможностей процессора (т.е. процессор должен делать двойное отображение – посылать одинаковый адрес клиенту и серверу). Сначала клиент посылает реальное сообщение в секцию, а затем указатель на сообщение (область памяти, где оно расположено) пересылается серверу. После этого ядро переключает контекст клиента на контекст сервера. После переключения контекстов сервер может выполнить обработку. Затем результат передается клиенту с переключением контекста (делается там же через объект-секцию).