русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Распределение оперативной памяти


Дата добавления: 2014-11-28; просмотров: 1462; Нарушение авторских прав


В операционных системах типа Windows NT тоже используется плоская модель памяти. Однако схема распределения виртуального адресного пространства рази­тельно отличается от модели памяти Windows 9x. Прежде всего, в отличие от Windows 9x, в гораздо большей степени задействуется ряд серьезных аппаратных средств защиты, имеющихся в микропроцессорах, а также применено принципи­ально другое логическое распределение адресного пространства.

Все системные программные модули находятся в своих собственных виртуальных адресных пространствах, и доступ к ним со стороны прикладных программ невоз­можен. Центральная супервизорная часть системы, состоящая, как мы теперь зна­ем, из микроядра, исполняющей системы (Win32 executive), модуля обеспечения аппаратной независимости, графического интерфейса устройств и оконного ме­неджера, а также низкоуровневых драйверов устройств, работает в нулевом коль­це защиты в отдельном адресном пространстве.

Остальные программные модули самой операционной системы, которые выступа­ют как серверные процессы по отношению к прикладным программам (клиентам), функционируют также в собственном системном виртуальном адресном простран­стве, невидимом и недоступном для прикладных процессов. Правда, из-за того, что эти программные модули расположены в другом кольце защиты, они изолиро­ваны от ядра системы. Логическое распределение адресных пространств иллюст­рирует рис. 11.3.

Прикладным программам выделяется 2 Гбайт' локального (собственного) линей­ного (неструктурированного) адресного пространства от границы 64 Кбайт до 2 Гбайт (первые 64 Кбайт полностью недоступны). Прикладные программы изо­лированы друг от друга, хотя могут общаться через буфер обмена (clipboard), ме­ханизмы DDE (Dynamic Data Exchange — динамический обмен данными) и OLE (Object Linking and Embedding — связывание и внедрение объектов).



В верхней части каждой области прикладной программы размером по 2 Гбайт раз­мещен код системных библиотек DLL кольца защиты 3, который перенаправляет вызовы в совершенно изолированное адресное пространство, где содержится уже собственно системный код. Этот системный код, выступающий как серверный процесс (server process), проверяет значения параметров, исполняет запрошенную

1 В сериермых версиях Windows 2000 эта граница проходит выше, приложениям выделяется до 3 Гбайт.


Операционные системы Windows NT/2000/XP_______________________________ 391

функцию и пересылает результаты назад в адресное пространство прикладной программы. Хотя серверный процесс сам по себе остается процессом прикладного уровня, он полностью защищен от вызывающей его прикладной программы и изо­лирован от нее.

Рис. 11.3. Модель распределения виртуальной памяти в Windows NT

Между отметками 2 и 4 Гбайт расположены низкоуровневые системные компо­ненты Windows NT кольца защиты 0, в том числе ядро, планировщик потоков и дис­петчер виртуальной памяти. Системные страницы в этой области наделены при­вилегиями супервизора, которые задаются физическими схемами колец защиты процессора. Это делает низкоуровневый системный код невидимым и недоступ­ным по записи для программ прикладного уровня, но приводит к падению произ­водительности из-за переходов между кольцами.

Для 16-разрядных прикладных Windows-программ операционные системы типа Windows NT реализуют сеансы Windows on Windows (WOW). В отличие от Win-


392_______________________________ Глава 11. Операционные системы Windows

dows 9x, система Windows NT дает возможность выполнять 16-разрядные Win­dows-программы индивидуально в собственных пространствах памяти или совмест­но в разделяемом адресном пространстве. Почти во всех случаях 16- и 32-разрядные прикладные Windows-программы могут свободно взаимодействовать, используя механизм OLE, независимо от того, выполняются они в отдельной или общей па­мяти. Собственные прикладные программы и сеансы WOW выполняются в режи­ме вытесняющей многозадачности, основанной на управлении отдельными пото­ками. Несколько 16-разрядных прикладных Windows-программ в одном сеансе WOW выполняются в соответствии с кооперативной моделью многозадачности. Windows NT может также открыть в многозадачном режиме несколько сеансов DOS. Поскольку Windows NT имеет полностью 32-разрядную архитектуру, не су­ществует теоретических ограничений на ресурсы компонентов GDI и User.

При запуске приложения создается процесс со своей информационной структу­рой. В рамках процесса запускается поток выполнения. При необходимости этот поток может инициировать запуск множества других потоков, которые будут вы­полняться параллельно в рамках одного процесса. Очевидно, что множество запу­щенных процессов также выполняются параллельно, и каждый из процессов мо­жет представлять собой мультизадачное (многопоточное) приложение. Задачи (потоки) в рамках одного процесса выполняются в едином виртуальном адресном пространстве, а процессы выполняются в различных виртуальных адресных про­странствах. Короче, все это почти полностью напоминает Windows 9x.

Отображение различных виртуальных адресных пространств исполняющихся про­цессов на физическую память осуществляется по принципам страничной органи­зации виртуальной памяти.

Процессами выделения памяти, ее резервирования, освобождения и замещения страниц управляет диспетчер виртуальной памяти (Virtual Memory Manager, VMM) Windows NT. В своей работе этот компонент реализует сложную страте­гию учета требований к коду и данным процесса для минимизации обращений к диску, поскольку реализация виртуальной памяти часто приводит к большому количеству дисковых операций. Для взаимодействия между выполняющимися приложениями и между приложениями и кодом самой операционной системы используются соответствующие механизмы защиты памяти, поддерживаемые ап­паратурой микропроцессора.

Каждая виртуальная страница памяти, отображаемая на физическую страницу, переносится в так называемый страничный кадр (page frame). Прежде чем код или данные можно будет переместить с диска в память, диспетчер виртуальной памя­ти должен найти или создать свободный или нулевой (заполненный нулями) стра­ничный кадр. Заметим, что заполнение страниц нулями представляет собой одно из требований стандарта на системы безопасности уровня С2, принятого прави­тельством США. Страничные кадры перед своим выделением должны заполнять­ся нулями, чтобы исключить возможность использования их предыдущего содер­жимого другими процессами. Чтобы кадр можно было освободить, необходимо скопировать на диск изменения в его странице данных, и только после этого кадр можно будет повторно использовать. Программы, как правило, не меняют страниц кода. Такие страницы можно просто расформировать (удалить).


Операционные системы Windows NT/2000/XP_______________________________ 393

Диспетчер виртуальной памяти может быстро и относительно легко удовлетво­рить программные прерывания типа страничной ошибки (page fault). Что касается аппаратных прерываний типа страничной ошибки, то они приводят к необходи­мости подкачки нужных страниц (paging), что снижает производительность систе­мы. Мы уже говорили (см. главу 3), что в Windows NT, к большому сожалению, для замещения страниц выбрана дисциплина FIFO, а не более эффективная дис­циплина LRU или LFU, как это сделано в других операционных системах.

Когда процесс использует код или данные, находящиеся в физической памяти, система резервирует место для этой страницы в файле подкачки Pagefile.sys на диске. Это делается с расчетом на то, что данные потребуется выгрузить на диск. Файл Pagefile.sys представляет собой зарезервированный блок дискового пространства, который используется для выгрузки страниц, помеченных как «грязные», для ос­вобождения физической памяти. Заметим, что этот файл может быть как непре­рывным, так и фрагментированным; он может быть расположен на системном дис­ке или на любом другом и даже на нескольких дисках. Размер этого страничного файла ограничивает объем данных, которые могут храниться во внешней памяти при использовании механизмов виртуальной памяти. По умолчанию размер фай­ла подкачки в операционных системах Windows NT 4.0 устанавливается равным объему физической памяти плюс 12 Мбайт, однако пользователь имеет возмож­ность изменить его размер по своему усмотрению. В следующих системах (Win­dows 2000/ХР) начальный размер страничного файла подкачки берется равным полуторакратному объему физической оперативной памяти. То есть, например, для компьютера, имеющего 512 Мбайт оперативной памяти, по умолчанию раз­мер файла Pagefile.sys равен 768 Мбайт. Проблема нехватки виртуальной памяти часто может быть решена за счет увеличения размера файла подкачки. Файл под­качки может быть не один — система поддерживает до 16 файлов подкачки, поэто­му лучше создать их несколько и разместить на быстрых жестких дисках.

В системах Windows NT 4.0 объекты, создаваемые и используемые приложениями и операционной системой, хранятся в так называемых пулах памяти (memory pools). Доступ к этим пулам может быть получен только в привилегированном ре­жиме работы процессора, в котором функционируют компоненты операционной системы. Поэтому для того чтобы объекты, хранящиеся в пулах, стали видимы потокам выполнения приложений, эти потоки должны переключиться в привиле­гированный режим.

Перемещаемый, или нерезидентный, пул (paged pool) содержит объекты, которые могут быть при необходимости выгружены на диск. Неперемещаемый, или рези­дентный, пул (nonpaged pool) содержит объекты, которые должны постоянно на­ходиться в памяти. В частности, к такого рода объектам относятся структуры данных, используемые процедурами обработки прерываний, а также структуры, требуемые для предотвращения конфликтов в мультипроцессорных системах.

Исходный размер пулов определяется объемом физической памяти, доступной Windows NT. Впоследствии размер пула устанавливается динамически и в зави­симости от работающих в системе приложений и служб может изменяться в Широ­ком диапазоне значений.


394_______________________________ Глава 11. Операционные системы Windows

Вся виртуальная память в Windows NT подразделяется на зарезервированную (reserved), выделенную (committed) и доступную (available).

- Зарезервировтшая память представляет собой набор непрерывных адресов,
которые диспетчер виртуальной памяти (VMM) выделяет для процесса, но не
учитывает в общей квоте памяти процесса до тех пор, пока она не будет факти­
чески задействована. Когда процессу требуется выполнить запись в память, ему
выделяется нужный объем из зарезервированной памяти. Если процессу по­
требуется больший объем памяти, то при наличии в системе доступной памяти
дополнительная память может быть одновременно зарезервирована и исполь­
зована.

- Память выделена, если диспетчер виртуальной памяти резервирует для нее место в файле Pagefile.sys на тот случай, когда потребуется выгрузить содержи­мое памяти на диск. Объем выделенной памяти процесса характеризует факти­чески потребляемый им объем памяти. Выделенная память ограничивается размером файла подкачки. Предельный объем выделенной памяти в системе (commit limit) определяется тем, какой объем памяти можно выделить процес­сам без увеличения размеров файла подкачки. Если в системе достаточно дис­кового пространства, то файл подкачки может быть увеличен, тем самым будет расширен предельный объем выделенной памяти.

- Вся память, которая не является ни выделенной, ни зарезервированной, явля­
ется доступной. К доступной относится свободная память, обнуленная память
(освобожденная и заполненная нулями), а также память, находящаяся в списке
ожидания
(standby list), то есть та, которая была удалена из рабочего набора
процесса, но может быть затребована вновь.

Контрольные вопросы и задачи Вопросы для проверки

1. Опишите основные архитектурные особенности операционных систем семей­
ства Windows 9x.

2. Расскажите об организации мультизадачное™ в операционных системах Win­
dows. Какие методы диспетчеризации используются в этих операционных сис­
темах?

3. Расскажите об управлении памятью в операционных системах семейства Win­
dows 9х. Приведите карту распределения памяти и объясните причины невы­
сокой надежности этих операционных систем.

4. Перечислите используемые планировщиком механизмы, которые обеспечивают
бесперебойную работу системы и быструю реакцию на действия пользователя.

5. Опишите основные архитектурные особенности операционных систем семей­
ства Windows NT.

6. Перечислите функции ядра (микроядра). Какова роль исполняющей системы
(Win32 executive)? Какие основные компоненты входят в ее состав?


Контрольные вопросы и задачи_________________________________________ 395

7. Какие функции выполняют компоненты Window Manager, GDI и драйверы
графических устройств? Зачем их код получил нулевой уровень привилегий?
Укажите положительные и отрицательные стороны этого решения.

8. Изложите основные идеи модели безопасности, принятой в системах Win­
dows NT. Что следует понимать под терминами «права» и «разрешения»? Чем
определяются права конкретного пользователя?

9. Что представляет собой список управления доступом? Расскажите о разреше­
ниях файловой системы NTFS. Что такое SID?

 

10. Что означает локальность учетной записи? Бывают ли глобальные (переме­
щаемые) учетные записи? Что такое домен? Какую роль играет контроллер
домена?

11. Расскажите об управлении памятью в операционных системах семейства Win­
dows NT. Приведите карту распределения памяти и объясните причины высо­
кой надежности этих операционных систем.



<== предыдущая лекция | следующая лекция ==>
Основные особенности архитектуры | Задания


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.242 сек.