- •Вопросы по курсу «Операционные системы» весеннего семестра 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. Службы
10. Теоретические основы параллельного программирования: независимые и взаимодействующие процессы, понятия ресурса и критического ресурса.
Процессы называются независимыми, множества переменных которых не пересекаются. Взаимодействующие процессы совместно используют несколько общих переменных, и выполнение одного процесса может повлиять на выполнение другого. Ресурсы, которые не допускают одновременного использования несколькими процессами называются критическими. Если нескольким вычислительным процессам необходимо пользоваться критическим ресурсом, то им следует синхронизировать свои действия т.о., чтобы ресурс всегда находился в распоряжении не более чем одного из процессов. Если ресурс используется одним из процессов, то остальные процессы, которым нужен этот ресурс должны ждать, пока он не освободиться, иначе возникают ошибки, поиск и исправление которых является одной из самых трудных задач в программировании. Синхронизация процессов может быть создана на уровне ОС, либо прикладной программы. Взаимодействующие процессы делятся на 2 класса: Конкурирующие и Сотрудничающие (работают так что действие одного передаётся другому).Конкурирующие процессы действуют независимо, но имеют доступ к общим переменным. Сотрудничающие работают так, что результат действия одного процесса передаётся по схеме «поставщик - потребитель». Существует правило : Некорректное использование критических секий приводит к возникновению ошибок поиск и исправление которых является одной из самых сложных задачв прогр.
Пример1: имеются 2-а процесса, х - видно обоим процессам
1-процесс: х=0; while (х!100)х++;
2-процесс: while (1)
{
If(х==100) Printf (“%d”,х); X++;}
}
По данному примеру 2-х процессов невозможно утверждать, что мы хоть что-нибудь увидим на экране, а т.ж. что 1-й процесс когда-нибудь завершиться.
Пример 2: Два процесса и односвязный список.
1-й процесс осуществляет добавление и удаление данных из списка
2-й процесс ищет данные в списке
Если эти два процесса не синхронизировать через критические секции, то это приведёт к краху (процесса 2). Список необходимо сделать критическим ресурсом. Без синхронизации процессов результат непредсказуем. Приведённые процессы рассматривают самую простую ситуацию взаимодействия только 2-х процессов.
11. Теоретические основы параллельного программирования: список условий функционирования взаимодействующих процессов, понятие тупика.
Список условий функционирования взаимодействующих процессов:
1) В любой момент времени только один процесс должен находится в одной из критических секций, связанных с критическим ресурсом.
2) Ни один процесс не должен находится в критической секции бесконечно долго.
3) Ни один процесс не должен ждать бесконечно долго входа в критическую секцию.
3а) Если 2 процесса ждут входа в одну критическую секцию, то решение о том, какой процесс должен ее занять, не должно откладываться бесконечно долго.
4) Если процесс, находящийся внутри критической секции завершается, то она должна освободится (необходимо учитывать возможность аварийного завершения процесса).
Любое нарушение этих правил ведет либо к аварийному завершению процессов либо к ситуации, называемой тупиком (deadlock). Тупик может также возникнуть при неправильной синхронизации процессов для нескольких критических ресурсов. Решением проблемы обнаружения тупиков и выхода из них занимается особое направление прикладной математики, начало которому положил в 1962 год Карл Петри.
