- •Классификация системного программного обеспечения
- •Другая классификация
- •Требования к системному программному обеспечению
- •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: назначение, организация, доступ.
37. Подсистема памяти Win32. Регионы (области) памяти. Группы функций api подсистемы памяти.
38. Распределение памяти на уровне менеджера виртуальной памяти (vmm api - Win32). In (35) 3. Архитектура памяти в Win32® api. 3.2. Управление виртуальной памятью. Vmm.
VMM(Virtual Memory Manager) - часть операционной системы, занимающаяся управлением виртуальной памятью.
В Win32 используется страничная организация памяти. Размер страниц для платформ Intel и MIPS составляет 4K. Размер страниц для DEC Alpha составляет 8K.
Схема страничного преобразования в процессорах Intel подробно изучалась в курсе “Программирование на языке ассемблера. Часть 3”. Win32 использует двухступенчатую схему страничного преобразования, поддерживаемую процессорами 386, 486,Pentium. Дополнительные схемы, которые поддерживает процессор Pentium Pro, не используются.
Каждому процессу назначается свой каталог страниц. Именно поэтому адресное пространство каждого процесса изолировано.
Организацией свопинга занимается VMM. При генерации системы на диске образуется специальный файл свопинга, куда записываются те страницы, которым не находится места в физической памяти. Процессы могут захватывать память в своем 32-битном адресном пространстве и, затем, использовать ее. При обращении потока к ячейке памяти могут возникнуть три различные ситуации:
Страница существует и находится в памяти
Страница существует и выгружена на диск
Страница не существует
При этом VMM использует следующий алгоритм организации доступа к данным:
Выделение памяти процессу означает выделение ее в файле подкачки.
Запуск на исполнение EXE - модуля происходит следующим образом: EXE - файл проецируется на память. При этом он не переписывается в файл подкачки. Просто элементы каталога и таблиц страниц настраиваются так, чтобы они указывали наEXE - файл, лежащий на диске. Затем передается управление на точку входа программы. При этом происходит возникает исключение, обрабатывая которое стандартным образом, VMM загружает в память требуемую страницу и программа начинает исполняться. Такой механизм существенно ускоряет процедуру запуска программ, так как загрузка страниц EXE - модуля происходит по мере необходимости. Образно говоря, программа сперва начинает исполняться, а потом загружается в память. Если программа записана на дискете, то она перед началом исполнения переписывается в файл подкачки.
39. Отображение файлов в память (File mapping - Win32).
Подсистема памяти в Win32 API (36 37 39)
4.1 Адресное пространство процесса.
В Win32 API используется плоская 32-разрядная модель памяти. Каждому процессу выделяется собственное “личное” (private) изолированное адресное пространство, размер которого составляет 4 Гбайт. Это пространство разбивается на регионы, немного отличные для Windows 95 и Windows NT. Общим для обеих систем является то, что нижние 2 Гбайт этого пространства отведены процессу для свободного использования, а верхние 2 Гбайт зарезервированы для использования операционной системой.
Регионы в адресном пространстве процесса Windows 95
Регионы в адресном пространстве процесса Windows NT
Windows NT лучше защищена от процессов пользователя, чем Windows 95. Это обуславливает большую устойчивость ОС к ошибкам в прикладной программе.
Пример. Программа пытается обнулить страницу за страницей в системной области (старший гигабайт адресного пространства). Операция может завершиться неудачей по двум причинам. Во-первых, реальной страницы по указанному адресу может не быть, а, во-вторых, если страница существует, то может быть запрещен в нее доступ. Программа пытается обнулить страницу (try) и в случае отказа (catch) выводит сообщение и переходит к следующей странице.
/* Win95Killer.cpp */
#include <windows.h>
#include <iostream.h>
void main()
{
DWORD SystemAreaAddress = 0xC0000000; //старший гигабайт
while(1)
{
try
{ // Попытка записи
ZeroMemory((LPVOID)SystemAreaAddress,0x1000);
}
catch(...)
{ // ошибка записи
cout << "Exception: " << hex << SystemAreaAddress << endl;
}
SystemAreaAddress += 0x1000; //Переход к следующей странице (4K)
}
}
Поскольку в Windows 95 отсутствует защита страниц системной области, то программа уничтожает эту область, что приводит к краху системы. Windows NT защищает системную область и, поэтому, “выдерживает натиск” программы.
Управление виртуальной памятью осуществляет т.н. Virtual Memory Manager (VMM), являющийся неотъемлемой частью операционной системы.
Организация памяти в Win32 страничная, размер страниц для платформ Intel и MIPS составляет 4 Kбайт, для DEC Alpha – 8 Kбайт. Win32 использует двухступенчатую схему страничного преобразования, поддерживаемую процессорами i386, 486 и Pentium, дополнительные схемы, поддерживаемые Pentium Pro, не используются.
Каждому процессу назначается свой каталог страниц. Именно поэтому адресное пространство каждого процесса изолировано.
Организацией свопинга занимается VMM. При генерации системы на диске образуется специальный файл свопинга, куда записываются те страницы, которым не находится места в физической памяти. Процессы могут захватывать память в своем 32-битном адресном пространстве и, затем, использовать ее. При обращении потока к ячейке памяти могут возникнуть три различные ситуации:
– страница существует и находится в памяти;
– страница существует и выгружена на диск;
– страница не существует.
Выделение памяти процессу означает выделение ее в файле подкачки.
Запуск на исполнение EXE-модуля происходит следующим образом. EXE-файл проецируется на память. При этом он не переписывается в файл подкачки. Просто элементы каталога и таблиц страниц настраиваются так, чтобы они указывали на EXE-файл, лежащий на диске. Затем передается управление на точку входа программы. При этом возникает исключение, обрабатывая которое стандартным образом, VMM загружает в память требуемую страницу и программа начинает исполняться. Такой механизм существенно ускоряет процедуру запуска программ, так как загрузка страниц EXE-модуля происходит по мере необходимости. Образно говоря, программа сначала начинает исполняться, а потом загружается в память. Если программа записана на дискете, то она перед началом исполнения переписывается в файл подкачки.
Диспетчер управления памятью (VMM) является составной частью ядра операционной системы. Приложения не могут получить к нему прямой доступ. Для управления памятью прикладным программам предоставляются различные интерфейсы (API).
1) Virtual Memory API – набор функций, позволяющих приложению работать с виртуальным адресным пространством: назначать физические страницы блоку адресов и освобождать их, устанавливать атрибуты защиты.
2) Memory Mapped File API – набор функций, позволяющий работать с файлами, отображаемыми в память. Новый механизм, предоставляемый Win32 API для работы с файлами и взаимодействия процессов. Подробно рассматривается в разделе 4.5.
3) Heap Memory API – набор функций, позволяющих работать с динамически распределяемыми областями памяти (кучами). Подробно рассматривается в разделе 4.6.
4) Local, Global Memory API – набор функций работы с памятью, совместимых с 16-битной Windows. Следует избегать их использования.
5) CRT Memory API – функции стандартной библиотеки периода исполнения (runtime).