- •Вопросы по курсу «Операционные системы» весеннего семестра 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. Службы
21. Работа с файлами в ос Windows: синхронная и асинхронная.
Файл – набор данных, организованных в виде совокупности записей одинаковой структуры. Для управления этими данными создаются соответствующие системы управления. Возможность иметь дело с логическим уровнем структуры данных представляет файловая система – набор спецификаций по хранению, организации и контролю доступа, а также обработке данных.
Работа с файлами в ОС WINDOWS организована на др. уровне по сравнению с ОС UNIX
CreateFile – данная функция открывает и создает файл, однако этим её возможности не исчерпываются. Перечислим объекты которые можно открыть при помощи этой функции: 1)файлы 2)консольные потоки 3)коммуникационные ресурсы (порты компов COM, LPT) 4)каталоги 5) дисковые устройства 6) дрова 7) почтовые ящики 8) каналы
Все перечисленные объекты закрываются стандартной функцией CloseHandle.
Однако после получения дескриптора на объект дальнейшая работа ведется с помощью различных функций зависящих от типа объекта. После получения дескриптора на объект работа с объектом идет по одному из 2-ух направлений:
1) файлы, консольные потоки, ком. потоки, почтовые ящики, каналы
2)каталоги, дисковые устройства, дрова
Первое направление используется для обмена данными, ф-ции: ReadFile, ReadFileEx, WriteFile, WriteFileEx
Второе: DeviceIoControl
Помимо этого для каждого конкретного объекта имеется набор функций специфичных для данного типа объекта.
Основное отличие ф-ций чтения и записи в файл в ОС WINDOWS от соответствующих функций в ОС UNIX (Read, Write) заключается в том, что в WINDOWS возможна как синхронное так и асинхронное выполнение файловых операций.
Открытие файла в асинхронном режиме предполагает передачу при открытии файла в параметре флагов значения FILE_FLAG_OVERLAPPED, а также передачу указателя на структуру OVERLAPPED. Физический смысл асинхронной операции - возврат из функции чтения (записи) происходит сразу же после начала операции, а не после её окончания. Программа может продолжать своё выполнение, но при этом параллельно с ней будет выполняться операция работы с файлами. После того как закончится работа с файлами взводится специальное событие, сигнализирующее об окончании операции.
Проверить событие можно либо с помощью стандартных функций WaitFor, либо с помощью специальной функции GetOverlappedResult. Получить реальное количество записанных или считанных байт можно только с помощью этой функции.
Асинхронная операция является базовой. Из асинхронной операции всегда можно сделать синхронную, но не наоборот.
При работе с файлами с помощью функций ReadFileEx и WriteFileEx не используется событие окончания операции. Вместо этого по окончании операции производится вызов указанной программистом функции FileIOCompletionRoutine Такая организация называется Asynchronous Procedure Call.
Ф-ция FileIOCompletion будет вызвана только в том случае, если нить находится в особом состоянии, так называемым “тревожном” состоянии (alertable state). Нить находится в этом состоянии при выполнении ф-ций с суффиксом Ex. Примеры таких ф-ций: SleepEx, WaitForSingleObjectEx, WaitForMultipleObjectsEx. Для асинхронных операций понятие файлового указателя не работает (функции SetFilePointer, GetFilePointer бесполезны).
