
- •Системное по. Цели, задачи, классификация
- •Операционная система. Основные функции ос. Структура операционной системы.
- •Интерфейс прикладных программ (api). Apidos (программные прерывания) и Win32
- •Дисковая подсистема в архитектуре ibmpc
- •Низкоуровневая организация дисковой памяти. Сервис bios доступа к дисковой подсистеме.
- •Понятие файловой системы. Назначение, требования, функции. Способы организации фс.
- •Объекты файловой системы: файлы, директории, логические устройства, другие виды объектов.
- •Файловые системы на основе fat
- •X.2 Файловая система ntfs
- •Служебные структуры fat и их использование
- •Программный интерфейс файловой системы (функции для взаимодействия с фс, файлового ввода-вывода) – dos, Windows Функции общего назначения
- •Файловый ввод-вывод
- •14. Адресное пространство процесса (задачи).
- •15. Приложения Windows (Win 32), разновидности. Структура оконных приложений
- •1. Основные определения
- •2. Особенности приложений Win 32.
- •3. Событийное управление
- •4. Структура приложения
- •16. Окно Win32: назначение, виды, свойства. Оконные классы.
- •17. Создание и управление окнами.
- •18. Событийное управление в Win32. Сообщения и очереди сообщений Windows (Windowsmessages): назначение, структура, отсылка, доставка, обработка Сообщения и очереди сообщений.
- •19. Цикл обработки сообщений. Оконная процедура: назначение, выполнение, способы активизации и завершения.
- •20. Многозадачность, многозадачные операционные системы, особенности выполнения приложений в многозадачной среде. Модель многозадачности Win 32
- •21. Состояния процессов (многозадачная среда). Состояния процессов (потоков)
- •22. Многозадачность в win32. Планирование и выполнения программ в win32
- •23. Процессы win32. Атрибуты и состояния процессов. Порождение процессов и управление ими. Основы управления процессами Win32
- •24. Потоки и многопоточные приложения. Порождение потоков, состояние потоков, управление ими. Основы управления потоками Win32
- •25. Нити – альтернативное управление выполнением программы Управление нитями
- •26. Распределение времени выполнения программ в многозадачной системе. Приоритеты. Распределение времени между потоками (управление приоритетами)
- •27. Приоритеты процессов и потоков win32. Управление приоритетами.
- •28. Взаимодействие процессов/потоков, взаимное исключение, синхронизация (базовые сведения)
- •29. Реализация взаимного исключения. Механизм criticalsection.
- •30. Синхронизация при управлении процессами и потоками
- •31. Функция ожидания
- •32. Использование каналов и почтовых ящиков для обмена данными
- •33. Использование файловой системы для обмена данными
- •X.2.6. Использование сообщения wm_copydata
- •34. Графическая подсистема win32 – общая характеристика, основные принципы.
- •35. Основные объекты win32 gdi. Средства векторной и растровой графики
- •Растровая графика
- •36. Подсистема памяти. Основные задачи, функции, требования
- •37. Виртуальное адресное пространство, управление памятью.
- •38. Динамическое распределение памяти программами (heap). HeapApiWin32.
- •Функции работы с кучами (heap-область)
- •39. Подсистема памяти win32. Регионы(области) памяти. Группы функций api подсистемы памяти. Адресное пространство процесса.
- •40. Управление на уровне менеджера вирнуальной памяти. (vmm)
- •41. Отображение файлов в память Проецирование файлов в память
- •42. Системный реестр windows: назначение, организация, доступ
Служебные структуры fat и их использование
Существует три вида файловых структур
1) Careful-write file systems – файловые системы, в которых для поддержания целостности запись на диск происходит немедленно при появлении запроса на запись. Пример FAT в MS DOS.
2) Lazy-write file systems – файловые системы, в которых для повышения производительности производится кэширование данных. В случае краха системы данные в кэш могут быть потеряны, а целостность файловой структуры нарушена. Примеры: FAT в Windows 9x и Windows NT, большинство структур в UNIX.
3) Recoverable file systems – файловые системы, которые наряду с кэшированием, повышающим производительность, применяют специальные средства поддержания целостности данных и способны к самовосстановлению после краха системы. К таким системам относятся некоторые файловые системы UNIX, NTFS.
Каждая операция, изменяющая содержимое тома NTFS, рассматривается как транзакция и может быть разбита на последовательность элементарных действий. Когда производится операция изменения содержимого любого файла, в файл протокола (Log file) заносится следующая информация:
– каким образом можно повторить транзакцию (redo);
– каким образом можно отменить транзакцию (undo)
Периодически (каждые несколько секунд) система проверяет дисковый кэш на предмет выполнения операций записи и заносит соответствующие метки в протокол. При каждой загрузке ОС проверяет корректность завершения предыдущего сеанса и при необходимости выполняет восстановление файловой структуры, используя данные протокола.
Программный интерфейс файловой системы (функции для взаимодействия с фс, файлового ввода-вывода) – dos, Windows Функции общего назначения
Интерфейс файловой подсистемы низшего уровня предоставляет функция DeviceIoControl(), которая позволяет обращаться напрямую к драйверу устройства и выполнять большое количество действий: форматирование, извлечение съемного носителя, разбивка диска на разделы и т.д. Фактически большинство остальных функций можно рассматривать как сложную надстройку над DeviceIoControl().
Для получения информации об установленных в системе логических дисков (разделов) служит функция: DWORD GetLogicalDrives(void). Каждый установленный бит возвращаемого значения (начиная с младшего) соответствует существующему в системе логическому устройству. Например, если в системе существуют диски A:, C: и D:, то возвращаемое функцией значение равно 0x0000000d.
Функция DWORD GetLogicalDrivesStrings(DWORD dwBufLen, LPTSTR lpBuffer) заполняет указанный буфер информацией о корневом каталоге каждого логического диска в системе. Так, для приведенного выше примера в буфер будет записано: "A:\0C:\0D:\0\0". Параметр dwBufLen определяет длину буфера. Функция возвращает реальную длину буфера, необходимую для размещения всей информации, независимо от результативности текущего вызова. Этим можно воспользоваться, чтобы выделить буфер необходимой длины (как правило, заранее она неизвестна):
DWORD dw = GetLogicalDrivesStrings(0,NULL);
LPSTR lpDriveStrings =
HeapAlloc(GetProcessHeap(),0,dw*sizeof(TCHAR));
GetLogicalDrivesStrings(dw,lpDriveStrings);
Дляопределениятипадискапредназначенафункция UINT GetDriveType(LPTSTR lpRootPathName). В качестве параметра ей передается символическое имя корневого каталога, например, A:\, а возвращаемое значение может быть одно из следующих: 0 (тип не определен), 1 (корневой каталог не существует), DRIVE_REMOVABLE (гибкий), DRIVE_FIXED, DRIVE_REMOTE (сетевой), DRIVE_CDROM, DRIVE_RAMDISK.
Для получения подробной информации о носителе используется функция GetVolumeInformation. Она заполняет параметры информацией об имени тома, названии файловой структуры, максимальной длине имени файла, дополнительных атрибутах тома, специфических для файловой структуры.
Функция GetDiskFreeSpace() сообщает информацию о размерах сектора и кластера и о наличии свободных кластеров.
GetCurrentDirectory(), GetSystemtDirectory(), GetWindowstDirectory() – получение заданного директория (текущего, системного, основного системного).
SetCurrentDirectory() – установка текущего директория.
CreateDirectory(), RemoveDirectory() – создание и удаление директория.
CopyFile(), MoveFile(), MoveFileEx(), DeleteFile() – копирование, перемещение и удаление файла (MoveFileEx() отличается дополнительными флагами: перенос на другой логический диск, замещение существующего и т.д., в т.ч. задержка исполнения до перезагрузки системы).