Распределение оперативной памяти
В операционных системах типа 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-разрядные Windows-программы индивидуально в собственных пространствах памяти или совместно в разделяемом адресном пространстве. Почти во всех случаях 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 Мбайт, однако пользователь имеет возможность изменить его размер по своему усмотрению. В следующих системах (Windows 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. Александров Е. К., Рудня Ю. Л. Микропроцессор 80386: как он работает и как
работают с ним: Учеб. пособие / Под ред. проф. Д. В. Пузанкова. — СПб.: Эл-
мор, 1994. 274 с.
2. Богумирский Б. С. Руководство пользователя ПЭВМ: В 2 ч. — СПб.: Ассоциа
ция OILCO, 1992. 357с.
3. Гордеев А. В., Кучин Н. В. Проектирование взаимодействующих процессов
в операционных системах: Учеб. пособие. Л.: ЛИАП, 1991. 72 с.
4. Гордеев А. В., Молчанов А. 10. Системное программное обеспечение: Учебник. —
СПб.: Питер, 2002. 736 с.
5. Гордеев А. В., Молчанов А. Ю. Применение сетей Петри для анализа вычисли
тельных процессов и проектирования вычислительных систем: Учеб. пособие.
Л.: ЛИАП, 1993.80 с.
6. Гордеев А. В., Никитин А. В., Филъчаков В. В. Организация пакетов приклад
ных программ: Учеб. пособие. Л.: ЛИАП, 1988. 78 с.
7. Гордеев А. В., Штепен В. А. Управление процессами в операционных системах
реального времени: Учеб. пособие. Л.: ЛИАП, 1988. 76 с.
8. Григорьев В. Л. Микропроцессор i486. Архитектура и программирование:
В 4 кн. - М.: Гранал, 1993.
9. ГудмэнДж. Секреты жесткого диска. — Киев: Диалектика, 1994. 256 с.
10. Дейкстра Е. Взаимодействующие последовательные процессы // Языки про
граммирования / Под ред. Ф. Женюи. — М.: Мир, 1972.
11. Дейтел Г. Введение в операционные системы: В 2 т. / Пер. с англ. Л. А. Теп-
лицкого, А. Б. Ходулева, В. С. Штаркмапа; Под ред. В. С. Штаркмапа. — М.:
Мир, 1987.
12. Джордейн Р. Справочник программиста персональных компьютеров типа IBM
PC, XT и AT / Пер. с англ. — М.: Финансы и статистика, 1991. 544 с.
13. Дунаев С. UNIX system v. 4.2: Общее руководство. — М.: Диалог-наука, 1995.287 с.
14. Коваленко И. Н. QNX: Золушка в семье UNIX http://www.lgg.ru/-nigl/QNX/
doc/Kovalenko_cinderella.html. 1995.
15. Иртегов Д. В. Введение в операционные системы. — СПб.: БХВ-Петербург,
2002. 624 с.
Список литературы__________________________________________________ 407
16. Кастер X. Основы Windows NT и NTFS / Пер. с англ. — М.: Изд. отдел «Рус
ская редакция» ТОО «Channel Trading Ltd.», 1996. 440 с.
17. Кейлингерт П. Элементы операционных систем. Введение для пользователей
/ Пер. с англ. Б. Л. Лисса и С. П. Тресковой. — М.: Мир, 1985. 295 с.
18. Кейслер С. Проектирование операционных систем для малых ЭВМ. — М.: Мир,
1986. 680 с.
19. Краковяк С. Основы организации и функционирования ОС ЭВМ. — М.: Мир,
1988.480 с.
20. МихалъчукВ. М., РовдоА. А., Рыжиков С. В. Микропроцессоры 80x86, Pentium:
Архитектура, функционирование, программирование, оптимизация кода. —
Минск: Битрикс, 1994. 400 с.
21. Мурата Т. Сети Петри: Свойства, анализ, приложения (обзор) // ТИИЭР,
1989. №4. С. 41-85.
22. Мэдник С, Донован Дж. Операционные системы. — М.: Мир, 1978. 792 с.
23. Немет Э., Снайдер Г., Сибасс С, Хейн Т. UNIX: руководство системного адми
нистратора. Для профессионалов / Пер. с англ. — СПб.: Питер; Киев: Издатель
ская группа BHV, 2002. 928 с.
24. Нортон П. Персональный компьютер фирмы IBM и операционная система MS-
DOS / Пер. с англ. - М.: Радио и связь, 1992. 416 с.
25. Нортон П., ГудменДж. Внутренний мир персональных компьютеров. 8-е изд.
Избранное от Питера Нортона / Пер. с англ.; Питер Нортон, Джон Гудмен. —
К.: Диасофт, 1999. 584 с.
26. Минаси М., Камарда Б. и др. OS/2 Warp изнутри: В 2 т. / Пер. с англ. С. Сокор-
новой. - СПб.: Питер, 1996. Т. 1: 528 с; Т. 2: 512 с.
27. Обухов И. QNX: Как надо делать операционные системы / PC Week RE. 1998.
№ 7. С. 58-59.
28. Озеров В. Советы по Дельфи (Версия 1.3.1 от 1.07.2000) - http://www.web-
machine.ru/delphi.
29. Олифер В. Г., Олифер Н. А. Сетевые операционные системы.:Учебник. — СПб.:
Питер, 2001.544 с.
30. Олифер Н. А., Олифер В. Г. Сетевые операционные системы / Публ. Центра
информационных технологий — www.citmgu.ru.
31. Фодор Ж., БонифасД., Тайги Ж. Операционные системы — от PC до PS/2 / Пер.
с франц. - М.: Мир, 1992. 319 с.
32. Орловский Г. В. Введение в архитектуру микропроцессора 80386. — СПб: Се
анс-Пресс Ltd; Инфокон, 1992. 240 с.
33. ОС QNX: Обзор системы / http://www.lgg.ru/~nigl/QNX/doc/about_qnx.html.
34. Петерсен P. Linux: руководство по операционной системе: В 2 т. / Пер. с англ. —
Киев: Издательская группа BHV, 1998.
35. Петзолд Ч. Программирование для Windows 95: В 2 т. / Пер. с англ. — СПб.:
BHV - Санкт-Петербург, 1997.
36. Питерсон Дж. Теория сетей Петри и моделирование систем / Пер. с англ. —
М.: Мир, 1984. 264 с.
408_________________________________________________ Список литературы
37. Ресурсы Microsoft Windows 98 / Пер. с англ. — М.: Издательско-торговый дом
«Русская редакция», 1999. 1288 с.
38. Ресурсы Microsoft Windows NT Workstation 4.0 / Пер. с англ. — СПб.: BHV —
Санкт-Петербург, 1998. 800 с.
39. Робачевский А. М. Операционная система UNIX. — СПб.: BHV — Санкт-Пе
тербург, 1997. 528 с.
40. Рудаков П. И., Финогенов К. Г. Программируем на языке ассемблера IBM PC.
Ч. 3: Защищенный режим. — М.: Энтроп, 1996. 320 с.
41. Соловьев Г. Н., Никитин В. Д. Операционные системы ЭВМ: Учеб. пособие. —
М.: Высшая школа, 1989. 255 с.
42. Соломон Д., Руссинович М. Внутреннее устройство Microsoft Windows 2000.
Мастер-класс / Пер. с англ. — СПб.: Питер; М.: Издательско-торговый дом
«Русская редакция», 2001. 752 с.
43. Стивене У. UNIX: взаимодействие процессов. — СПб.: Питер, 2002. 576 с.
44. Столлингс В. Операционные системы. 4-е изд. / Пер. с англ. — М.: Издатель-
. ский дом «Вильяме», 2002. 848 с.
45. СтудневА. Boot-менеджеры — кто они и откуда? // Byte Россия. 1998. № 4. С. 70-75.
46. Таненбаум Э. Современные операционные системы. 2-е изд. — СПб.: Питер,
2002.1040 с.
47. Тревеннор А. Операционные системы малых ЭВМ / Пер. с англ. А. Г. Василье
ва. — М.: Финансы и статистика, 1987. 188 с.
48. Фролов А. В., Фролов Г. В. Защищенный режим процессоров Intel 80286,80386,
80486. Практическое руководство по использованию защищенного режима. —
М.: Диалог-МИФИ, 1993. 240 с.
49. Фролов А. В., Фролов Г. В. Операционная система OS/2 Warp. — М.: Диалог-
МИФИ, 1995. 272 с. (Библиотека системного программиста; т. 20)
50. Фролов А. В., Фролов Г. В. Программирование для IBM OS/2 Warp: Ч. 1. — М.:
Диалог-МИФИ, 1996. 288 с.
51. Фролов А. В., Фролов Г. В. Программирование для Windows NT. — М.: Диалог-
МИФИ, 1996. (Библиотека системного программиста; т. 26, 27)
52. Хоар Ч. Взаимодействующие последовательные процессы. — М.: Мир, 1989.264 с.
53. Цикритзис Д., Беристайи Ф. Операционные системы / Пер. с англ. В. Л. Уш-
ковой и Н. Б. Фейгельсон. — М.: Мир, 1977. 336 с.
54. Шоу А. Логическое проектирование операционных систем / Пер. с англ. В. В. Ма
карова и В. Д. Никитина. — М.: Мир, 1981. 360 с.
55. Ющенко С. В. ОС QNX — реальное время, реальные возможности // Мир ПК.
1995. № 5-6.
56. Microsoft Windows 2000: Server и Professional. Русские версии / Под общ. ред.
А. Н. Чекмарева и Д. Б. Вишнякова. - СПб.: BHV, 2000. 1056 с.
57. Understanding Windows NT POSIX Compatibility» by Ray Cort Microsoft Cor
porate Technology Team, Created: May-June 1993.
Дата добавления: 2016-09-20; просмотров: 1466;