- •Классификация системного программного обеспечения
- •Другая классификация
- •Требования к системному программному обеспечению
- •2. Операционная система. Основные функции ос. Структура операционной системы.
- •3. Интерфейс прикладных программ (api) ос. Api Win32 (системные функции).
- •Api операционных систем.
- •Структура api-программ
- •4. Дисковая подсистема в архитектуре ibm pc.
- •5. Низкоуровневая организация дисковой памяти. Сервис bios доступа к дисковой подсистеме.
- •Емкость Диска
- •Оглавление Диска (Каталог)
- •Основные Положения На Память
- •6. Понятие файловой системы. Назначение, требования, функции. Способы организации фс.
- •7. Объекты файловой системы: файлы, директории, логические устройства, другие виды объектов. Файловая система
- •Имена файлов
- •Типы файлов
- •Логическая организация файла
- •Физическая организация и адрес файла
- •Права доступа к файлу
- •Кэширование диска
- •Общая модель файловой системы
- •Отображаемые в память файлы
- •Современные архитектуры файловых систем
- •8. Файловые системы на основе fat (либо по желанию ntfs, s5fs, ufs, ext и т.Д.).
- •9. Служебные структуры файловых систем fat и их использование.
- •1.3.2. Файловые системы
- •Файловая система fat Краткие теоретические сведения
- •Обзор файловой системы fat
- •Имена файлов в fat
- •Преимущества файловой системы fat
- •Недостатки файловой системы fat
- •Обзор файловой системы hpfs
- •Суперблок
- •Запасной блок
- •Преимущества файловой системы hpfs
- •Недостатки файловой системы hpfs
- •Обзор файловой системы ntfs
- •Надежность
- •Дополнительные функции
- •Поддержка posix
- •Устранение ограничений
- •Преимущества файловой системы fat
- •Недостатки файловой системы ntfs
- •Соглашения именования в ntfs
- •10. Программный интерфейс файловой системы (функции для взаимодействия с фс, файлового ввода-вывода) - dos, Win32.
- •12. Вычислительный процесс. Состояния вычислительного процесса.
- •[Править]Создание программ
- •[Править]Использование программ
- •[Править]Правовые аспекты
- •13. Адресное пространство процесса (задачи).
- •20. Адресное пространство процесса
- •14. Приложения Windows (Win 32), разновидности. Структура оконных (windowed) приложений.
- •2. Особенности приложений Win 32.
- •17. Событийное управление в Win32. Сообщения и очереди сообщений Windows (Windows messages): назначение, структура, отсылка, доставка, обработка.
- •18. Цикл обработки сообщений. Оконная процедура: назначение, выполнение, способы активизации и завершения. Краткие теоретические сведения
- •19. Многозадачность, многозадачные операционные системы, особенности выполнения приложений в многозадачной среде.
- •Краткие теоретические сведения поток
- •Краткие теоретические сведения
- •27. Взаимодействие процессов/потоков, взаимное исключение, синхронизация (базовые сведения)
- •Синхронизация субъектов взаимодействия
- •Сравнительная характеристика механизмов взаимодействия
- •33. Графическая подсистема Win32 (gdi) - общая характеристика, основные концепции, объекты (инструменты).
- •Х.1 Общие сведения
- •Х.2 Системы координат и единицы измерения
- •Х.3 Цвета и палитры
- •Х.4 Основные инструменты графической подсистемы
- •Х.4 Растровая графика
- •Х.5 Управление областями вывода и отсечением
- •Х.6 Некоторые аспекты использования графической подсистемы
- •34. Подсистема памяти. Основные задачи, функции, требования. 35. Виртуальное адресное пространство, управление памятью с использованием виртуального адресного пространства.
- •37. Подсистема памяти Win32. Регионы (области) памяти. Группы функций api подсистемы памяти.
- •38. Распределение памяти на уровне менеджера виртуальной памяти (vmm api - Win32). In (35) 3. Архитектура памяти в Win32® api. 3.2. Управление виртуальной памятью. Vmm.
- •39. Отображение файлов в память (File mapping - Win32).
- •4.1 Адресное пространство процесса.
- •4.2 Функции работы с виртуальной памятью.
- •4.3 Проецирование файлов в память
- •4.4.1 Запуск исполняемых файлов и динамически связываемых библиотек
- •4.4.2 Проецирование файлов данных
- •4.4.3 Взаимодействие процессов через общую область данных
- •4.4 Функции работы с кучами (heap-область)
- •4.5 Глобальные и локальные объекты "память"
- •4.6 Функции crt Memory api
- •X.2. Структура подсистемы памяти Win 32 и группы функций
- •40. Системный реестр Windows: назначение, организация, доступ.
4.4.3 Взаимодействие процессов через общую область данных
Два процесса могут совместно использовать объект “проецируемый файл”. При этом, при помощи функции MapViewOfFile каждый процесс проецирует этот объект на свое адресное пространство и используют эту часть адресного пространства как разделяемую область данных. Общий механизм таков: один процесс создает объект “проецируемый файл” с помощью функции CreateFileMapping и порождает другой процесс, передавая ему наследуемый описатель этого объекта, которым порожденный процесс может пользоваться наравне с родителем. Проблема передачи порожденному процессу конкретного значения описателя может быть решена различными способами, например, в виде параметров при запуске процесса, через переменные среды, посредством сообщения в главное окно и т.д. Кроме того, для идентификации разделяемого объекта можно использовать его имя (параметр lpName), которое является глобальным в системе.
Если один процесс меняет разделяемую область данных, то она меняется и для другого процесса. Операционная система обеспечивает когерентность разделяемой области данных для всех процессов. Но для обеспечения когерентности процессы должны работать с одним объектом “проецируемый файл”, а не с одним файлом.
4.4 Функции работы с кучами (heap-область)
Т.н. “куча” (heap) – динамически распределяемая область данных, предоставленная процессу. По умолчанию размер кучи составляет 1 Мбайт, но он может быть изменен параметром /HEAP при построении исполняемого модуля.
Куча идентифицируется ее описателем (handle), посредством которого осуществляется доступ к ней. Каждому создаваемому процессу обязательно выделяется одна основная куча (куча “по умолчанию”), описатель которой возвращает функция:
HANDLE GetProcessHeap(VOID).
Для работы с кучей предназначены следующие основные функции.
LPVOID HeapAlloc(hHeap,dwFlags,dwSize) – выделение блока памяти заданного размера из кучи (возвращает указатель на этот блок в адресном пространстве кучи).
LPVOID HeapReAlloc(hHeap,dwFlags,lpOldBlock,dwSize) – изменение размера выделенного блока памяти (при этом блок может быть перемещен, если в куче нет места для простого расширения).
BOOL HeapFree(hHeap,dwFlags,lpBlock) – освобождение ранее выделенного блока памяти в куче.
Так как приведенные выше функции предусматривают явное указание кучи, одновременно можно использовать более одной кучи, что целесообразно для:
– защиты друг от друга различных структур данных.
– повышения эффективности управления памятью.
– уменьшения рабочего множества процесса.
Кратко поясним последние два положения.
Хотя в системах со страничной организацией отсутствует проблема фрагментации физической памяти, сохраняется проблема фрагментации адресного пространства. Если эта проблема не актуальна в полном адресном пространстве (4 Гбайт), то в пространстве кучи (стандартно 1 Мбайт) она существенна. Если элементы структур данных различаются по размеру, то полезно размещать эти структуры в разных кучах.
Работа с разными структурами данных, в соответствии с принципом локальности, чаще всего происходит не одновременно. Границы элементов разных структур не выровнены на границу страницы, поэтому обращение к одной структуре вызывает подкачку всей страницы вместе с другими структурами, что увеличивает рабочее множество процесса.
Для создания дополнительной кучи используется функция:
HANDLE HeapCreate(DWORD dwFlags,DWORD dwInitSize,DWORD dwMaxSize)
Более подробная информация об этих и других функциях для работы с кучами содержится в соответствующей документации.