![](/user_photo/2706_HbeT2.jpg)
- •Глава 1. Принципы разработки программ в современных ос ................................. 12
- •§ 1.1. Операционные системы для пэвм ................................................................. 12
- •§ 1.2. Основы программирования в ос Windows ..................................................... 26
- •§ 4.3. Организация памяти в ос Windows................................................................. 103
- •§ 8.5. Обмен информацией по технологии связывания и внедрение объектов ......210
- •Глава 1. Принципы разработки программ в современных ос
- •§ 1.1. Операционные системы для пэвм
- •§ 1.2. Основы программирования в ос Windows
- •§ 1.3. Принципы разработки динамических библиотек
- •Глава 2. Организация многозадачности в современных ос
- •§ 2.1. Общие принципы организации многозадачности
- •§ 2.2. Основы многозадачности в ос Windows
- •Глава 3. Прерывания и исключения
- •§ 3.1. Система обработки прерываний
- •§ 3.2. Общие принципы обработки исключений
- •Глава 4. Организация памяти в современных ос
- •§ 4.1. Общие принципы организации памяти
- •§ 4.2. Способы распределения памяти
- •§ 4.3. Организация памяти в ос Windows
- •§ 4.4. Интерфейсы api-функций для управления памятью в ос Windows
- •Глава 5. Организация ввода-вывода в современных ос
- •§ 5.1. Общие принципы организации ввода-вывода
- •§ 5.2. Общие принципы размещения данных на магнитных дисках
- •§ 5.3. Организация файлового ввода-вывода в ос Windows
- •Глава 6. Реестр ос windows
- •§ 6.1. Структура и особенности реестра Windows
- •Глава 7. Организация безопасности в ос windows
- •§ 7.1. Технологии безопасности, реализованные в Windows
- •§ 7.2. Создание структуры security_attributes
- •Глава 8. Технологии обмена информацией в ос windows
- •§ 8.1. Обмен информацией посредством буфера обмена Windows
- •§ 8.2. Обмен информацией посредством каналов
- •§ 8.3. Обмен информацией с использованием сокетов
- •§ 8.4. Обмен информацией по технологии динамического обмена данными
- •§ 8.5. Обмен информацией по технологии связывания и внедрение объектов
- •Глава 9. Технологии обработки мультимедиа
- •§ 9.1. Обзор мультимедийных устройств Windows
- •§ 9.2. Элементарные api-функции для обработки звука
- •§ 9.3. Технология обработки формата riff
Глава 4. Организация памяти в современных ос
§ 4.1. Общие принципы организации памяти
Оперативная память (ОП) - один из важнейших ресурсов ОС, без которого не-
возможна работа на персональном компьютере. Поэтому изучение механизмов исполь-
зования памяти различными задачами и самой операционной системой по значимости
аналогично изучению механизмов многопоточности, событий, прерываний и т.п. С по-
явлением первых поколений ЭВМ в них было введено понятие оперативной памяти,
которую часто называют физической памятью. Оперативная память представляет со-
бой упорядоченное множество ячеек, и все они пронумерованы, то есть к каждой из них
можно обратиться, указав ее порядковый номер (адрес). Количество ячеек физической
памяти ограничено и фиксировано. Центральный процессор извлекает из ОП команды и
данные и помещает в нее результаты вычислений. Одновременно с этим, с точки зрения
программиста, ОП - область, с которой можно работать с помощью некоторого набора
логических имен (переменных), которые могут быть символьными или числовыми. Сле-
дует отметить, что множество переменных неупорядочено, хотя отдельные элементы и
могут располагаться в некотором порядке, например, элементы массива. Имена пере-
менных и входных точек программных модулей составляют пространство имен.
Операционная система должна связать каждое указанное пользователем имя с фи-
зической ячейкой памяти, то есть осуществить отображение пространства имен на физи-
ческую память компьютера. В общем случае это отображение осуществляется в два эта-
па, представленных на рис.4.1 [2]: сначала системой программирования, а затем
операционной системой, управляющей соответствующими аппаратными средствами. В
современных ОС переход с первого этапа на второй осуществляется через промежуточ-
ный виртуальный или логический адрес. При этом можно сказать, что множество всех
допустимых значений виртуального адреса для некоторой программы определяет ее
виртуальное адресное пространство или виртуальную память. Виртуальное адрес-
ное пространство зависит прежде всего от архитектуры процессора и от системы про-
граммирования и практически не зависит от объема реальной физической памяти, уста-
новленной в персональном компьютере.
Любая система программирования осуществляет трансляцию и компоновку про-
граммы, используя библиотечные программные модули. В результате работы системы
программирования полученные виртуальные адреса могут иметь как двоичную форму,
так и символьно-двоичную, то есть некоторые программные модули и их переменные
получают какие-то числовые значения, а другие, адреса для которых в данный момент
не могут быть определены, имеют по-прежнему символьную форму и их окончательная
привязка к физическим ячейкам будет осуществлена на этапе загрузки программы в па-
мять перед ее непосредственным выполнением.
Одним из частных случаев отображения пространства имен на физическую память
[2] является тождественность виртуального адресного пространства физической
памяти. При этом нет необходимости осуществлять второе отображение. В данном
случае говорят, что система программирования генерирует абсолютную двоичную про-
грамму; в этой программе все двоичные адреса таковы, что программа может испол-
няться только в том случае, если ее виртуальные адреса будут точно соответствовать
физическим. Часть программных модулей любой операционной системы обязательно
должны быть абсолютными двоичными программами. Эти программы размещаются по
фиксированным адресам и с их помощью далее можно реализовывать размещение ос-
тальных программных модулей, подготовленных системой программирования, на раз-
личных свободных физических адресах.
92
Рис.4.1. Связь переменной с физической памятью
Если рассматривать общую схему двухэтапного отображения адресов, то с пози-
ции соотношения объемов упомянутых адресных пространств можно отметить наличие
следующих трех ситуаций [2]:
• объем виртуального адресного пространства программы VVменьше объема физиче-
ской памяти Vp;
• V = Vp;
• V > Vp.
Первая ситуация, при которой VV < Vp, в настоящее время практически не встре-
чается, но тем не менее это реальное соотношение. Скажем, не так давно 16-разрядные
мини-ЭВМ имели систему команд, в которых пользователи-программисты могли адре-
совать до 216=64K адресов (обычно в качестве адресуемой единицы выступала ячейка
памяти размером 1 байт). А физически старшие модели этих мини-ЭВМ могли иметь
объем оперативной памяти в несколько мегабайт. Обращение к памяти столь большого
объема осуществлялось с помощью специальных регистров, содержимое которых скла-
дывалось с адресом операнда (или команды), извлекаемым и/или определяемым из поля
операнда (или из указателя команды). Соответствующие значения в эти специальные
регистры, выступающие как базовое смещение в памяти, заносила операционная систе-
ма. Для одной задачи в регистр заносилось одно значение, а для второй (третьей, четвер-
той и т. д.) задачи, размещаемой одновременно с первой, но в другой области памяти,
заносилось, соответственно, другое значение. Вся физическая память, таким образом,
разбивалась на разделы объемом по 64 Кбайт, и на каждый такой раздел осуществля-
лось отображение своего виртуального адресного пространства.
Ситуация, когда VV = Vp, еще совсем недавно (80-90-е годы XX века) встречалась
достаточно часто, особенно характерна она была для недорогих вычислительных ком-
93
плексов. Для этого случая имелось большое количество способов распределения опера-
тивной памяти.
Наконец, в настоящее время наиболее вероятной является ситуация VV > Vp. Реа-
лизовано несколько способов распределения памяти для этого случая, отличающихся
как сложностью, так и эффективностью. Все эти способы можно разделить на две боль-
шие группы - непрерывные и разрывные [2, 5]. В первом случае каждая задача размеща-
ется в одной непрерывной области памяти, во втором разбивается на несколько не свя-
занных между собой областей. Рассмотрим наиболее известные способы распределения
памяти.