- •Вопросы по курсу «Операционные системы» весеннего семестра 2010-2011 учебного года
- •1. Общие сведения об операционных системах, цели применения ос, структура ос.
- •2. Модель взаимодействия компонентов операционной системы.
- •3. Классификация ос.
- •4.5. Теоретические основы параллельного программирования, понятия: процесс, задача, мультизадачный режим работы ос, нить, контекст нити.
- •6. Теоретические основы параллельного программирования: классификация программных модулей; понятия реентерабельности и повторной входимости программных модулей.
- •7. Прерывания и механизмы обработки прерываний операционной системой.
- •8.9.Диспетчер задач: дисциплины диспетчеризации, критерии оценки дисциплин диспетчеризации задач.
- •10. Теоретические основы параллельного программирования: независимые и взаимодействующие процессы, понятия ресурса и критического ресурса.
- •11. Теоретические основы параллельного программирования: список условий функционирования взаимодействующих процессов, понятие тупика.
- •12. Теоретические основы параллельного программирования: принцип организации критических секций.
- •13. Теоретическая классификация видов взаимодействия процессов: сигналы, семафоры, мьютексы.
- •15. Теоретическая классификация видов взаимодействия процессов: очереди сообщений, файлы, разделяемая память, объект «ресурс».
- •16. Теоретическая классификация видов взаимодействия процессов: почтовые ящики, конвейеры.
- •17 Организация подсистемы безопасности в ос Windows: создание и открытие объектов, понятие описателя, атрибуты безопасности, права доступа, структура описателя безопасности.
- •18.Организация подсистемы безопасности в ос Windows: маркеры, привилегии пользователей, олицетворение.
- •19. Организация подсистемы безопасности в ос Windows: получение доступа к объекту.
- •20. Процессы в ос Windows: понятие Win32 api; main() и WinMain(), создание и завершение процессов и нитей, основные функции работы с процессами и нитями.
- •21. Работа с файлами в ос Windows: синхронная и асинхронная.
- •24. Таймеры ожидания в ос Windows и понятие apc
- •25. Структурная обработка исключений.
- •26. Способы управления памятью: простое непрерывное распределение, оверлейное распределение.
- •1. Простое непрерывное распределение
- •2. Оверлейное распределение (OverLay)
- •27. Способы управления памятью: распределение статическими и динамическими разделами.
- •28. Способы управления памятью: сегментная организация памяти.
- •29. Страничная организация памяти
- •30. Сегментно-страничный способ организации памяти
- •31. Таблицы физических страниц памяти в современных ос. Понятие pfn, понятие mdl.
- •32. Распределение оперативной памяти в современных компьютерах. Спецификация acpi
- •33. Распределение первого мегабайта оперативной памяти в персональных компьютерах.
- •35. Резервирование памяти с помощью функции VirtualAlloc
- •36. Работа с кучами процессов
- •37 . Динамически загружаемые библиотеки (dll). Связывание во время загрузки библиотеки.
- •38. Системные перехватчики (hook
- •40. Службы
13. Теоретическая классификация видов взаимодействия процессов: сигналы, семафоры, мьютексы.
Семафоры: Переменная, контролирующая вход в критическую секцию называется семафором: InterlockedExchange(&Status, 1). Status – семафор.
Семафор – переменная специального типа, которая доступна параллельным процессам для выполнения над ней только 2х операций – открытия и закрытия. У переменной Status можно использовать весь диапазон значений. Однако на практике, переменная – значение семафора есть критический ресурс, доступ к которому осуществляется с использованием критических секций.
Если sem > 0, то семафор открыт. Если sem == 0, то семафор закрыт.
Каждый процесс, проходящий через семафор – уменьшает его значение на единицу. Семафор используется для получения совместного доступа к какому либо ресурсу.
Сигналы. Предназначены для синхронизации процессов. Представляют собой 1 бит информации (1 сигнал). Различаются по номеру, либо по имени. При наличии сигнала процесс-приемник обычно прерывает свое нормальное выполнение и выполняет какие-либо действия.
Сигналы делятся на пассивные и активные:
- Активные – выполнение процесса прерывается и управление передается специальной функции, которая была предварительно связана с сигналом.
- Пассивные сигналы обычно опрашиваются процессом.
Количество сигналов ограничено. В особую группу выделяются сигналы, возникающие при достижении определенного интервала времени. Они называются сигналами от таймера или просто таймерами. Таймеры бывают 2-х видов: однократные и периодические (возникают через определенный отрезок времени).
Функции сигналов: 1)Создать сигнал 2) Проверить сигнал 3) Связать сигнал с функцией 4)Создать периодический сигнал 5) Удалить периодический сигнал
Только в ОС Unix.. В ОС Windows сигналов нет, но есть таймеры.
Замечание 1: Если необходима многократная обработка одного и того же сигнала, процесс должен каждый раз осуществлять системный вызов signal для установления требуемой реакции на данный сигнал.Замечание 2: Процесс не в состоянии узнать, сколько однотипных сигналов им было получено. В том случае, если процесс не успевает обработать все поступившие сигналы, происходит потеря информации.Мьютекс. Мьютекс подобны событиям с ручным сбросом. Кроме того в мьютекс можно входить повторно одной и той же нитью. Создать мьютекс можно с помощью следующей функции:
HANDLE CreateMutex(PSECURITY_ATTRIBUTES psa, BOOL fInitialOwner, PCISIR pszName);
fInitialOwner – при создании мьютекса стать его владельцем и войти в него (мьютекс переходит в NON_SIGNALED) если true.
Вход в мьютекс по функции WaitForSingleObject
Выход по следующей функции:
BOOL ReleaseMutex(HANDLE hMutex);
Число входов в мьютекс должно равняться числу выходов. Если нить владеющая мьютексом умирает то функция WaitFor для этого мьютекса вернет значение WAIT_ABANDONED но при этом войдет в мьютекс
15. Теоретическая классификация видов взаимодействия процессов: очереди сообщений, файлы, разделяемая память, объект «ресурс».
Информацию между параллельными процессами можно передавать с помощью файлов. При этом информация может предоставляться как через содержимое файла, так и через атрибуты файла, а также доступность файла на запись.
В ОС UNIX широко распространен способ блокировки (организации критической секции) через открытие файла на запись, однако, данный способ является медленным.
Достоинства способа:
Очень большие объемы передаваемой информации.
Простота реализации
Доступ к файлу контролирует ос
Сохранность информации при внезапной потере питания
Недостатки способа:
Необходимость периодической очистки содержимого файла, медленная скорость передачи данных.
Очереди сообщений.
По сути является подмножеством почтового ящика. Очередь сообщений привязывается к процессу-приемнику. Процесс-приемник может читать и удалять сообщения из очереди, а остальные процессы могут помещать сообщения в очередь. В очередях сообщений возможно задать дисциплину обслуживания (FIFO, LIFO, приоритетный/произвольный доступ).
При чтении из очереди данные автоматически не удаляются. Есть специальная операция удаления данных из очереди.
Яркий пример очереди сообщений – оконные сообщения ОС Windows.
Достоинство: в одной очереди можно мультиплексировать сообщения от различных процессов. Для демультиплексирования используется атрибут msgtype.
В ОС Windows Win32 API разделяемая память реализуется через проекцию файла на адресное пространство процесса. Файл может быть: либо настоящий файл на диске, либо безымянный файл, который создаётся внутри файла свопинга.
Для получения разделяемой памяти необходимо создать файл, проецируемый в память не на диске, а в свопинге системы, с помощью функции: CreateFileMapping
Флаги проецирования:
PAGE_READONLY - память только на чтение
PAGE_READWRITE
PAGE_WRITECOPY - когда будем писать в память, то в памяти данные изменяются, а в файле нет
SEC_NOCACHE - сразу запись на диск, если нет то буферизация
Проекция файла на адресное пространство процесса задается с помощью функции: MapViewOfFile. Параметры функции:
1 – описатель на объект
2 – желаемый доступ, может быть вида:
FILE_MAP_READ FILE_MAP_WRITE
FILE_MAP_COPY FILE_MAP_ALL_ACCESS
3 – смещение от начала файла
5 – количество байт для окна разделяемой памяти (8 байт)
Функция возвращает адрес этого окна.
Обратная функция:
UnmapViewOfFile(lpBaseAddress);
По окончании работы следует вызвать функции UnmapViewOfFile и CloseHandle для дескриптора спроецированного в память файла.
Разделяемая память. Реализуется через проекцию файла на адресное пространство проекта. Файл мб в настоящем файлоносителе, так и в виртуальном файле, который создаётся в рамках свопинга. Create File Mapping, MapViewOf file – создаёт отображение части файла в адресное пространство. Обратный процесс: UnMapVieWotFile. Преимущества использования разделяемой памяти : 1)наиболее простой способ передачи данных между процессами;
2)операции передачи данных происходят без участия ос.
Недостатки:
1)реализация критических ресурсов возлагается на программиста;
2) на процесс возлагается операция поддержания корректности данных.
