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

В операционных системах типа 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. Александров Е. К., Рудня Ю. Л. Микропроцессор 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;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.024 сек.