Операционные системы. Учебное пособие. Марапулец Ю.В. - 106 стр.

UptoLike

Составители: 

страницы необязательно должны быть расположены последовательно. Все управление
памятью производится с помощью манипуляций с таблицами страниц. Потери связаны
только собственно с самими таблицами страниц и с их 4 Кб размером.
В-третьих, в 32-битных дескрипторах страниц существует еще 12 бит, кроме тех,
которые используются для адреса страницы. Один из этих битов показывает возмож-
ность доступа к конкретной странице (он называется битом доступа, "accessed bit"); дру-
гой показывает, была ли произведена запись в эту страницу (он называется битом мусо-
ра, "dirty bit"). Windows может использовать эти биты для того чтобы определить, можно
ли сохранить эту страницу в файле подкачки для освобождения памяти. Еще один бит -
бит присутствия (present bit) показывает, была ли страница сброшена на диск и должна
ли быть подкачена обратно в память.
Другой бит ("чтения/записи") показывает, разрешена ли запись в данную страницу
памяти. Этот бит обеспечивает защиту кода от "блуждающих" указателей. Например,
если включить следующий оператор в программу для Windows:
*(int*) WinMain = 0 ;
то на экран будет выведено следующее окно сообщение: "This program has performed an
illegal operation and will be shutdown." ("Эта программа выполнила недопустимую опера-
цию и будет завершена"). Этот бит не препятствует компилированной и загруженной в
память программе быть запущенной на выполнение.
Приведем несколько замечаний по поводу управления памятью в Windows 9x:
Виртуальные адреса имеют разрядность 32 бита. Программа и данные имеют адреса в
диапазоне от 0х00000000 до 0x7FFFFFFF. Сама Windows использует адреса от
0х80000000 до 0xFFFFFFFF. В этой области располагаются точки входа в динамически
подключаемые библиотеки.
Общее количество свободной памяти, доступной программе, определяется как ко-
личество свободной физической памяти плюс количество свободного места на жестком
диске, доступного для свопинга страниц. Как правило, при управлении виртуальной па-
мятью Windows использует алгоритм LRU (least recently used) для определения того, ка-
кие страницы будут сброшены на диск. Бит доступа и бит мусора помогают осуществить
эту операцию. Страницы кода не должны сбрасываться на диск: поскольку запись в его
страницы запрещена, они могут быть просто загружены из файла с расширением .ЕХЕ
или из динамически подключаемой библиотеки.
Организацией свопинга занимается VMM. При генерации системы на диске обра-
зуется специальный файл свопинга, куда записываются те страницы, которым не нахо-
дится места в физической памяти. Процессы могут захватывать память в своем 32-
битном адресном пространстве и, затем, использовать ее. При обращении потока к ячей-
ке памяти могут возникнуть три различные ситуации [12]:
Страница существует и находится в памяти
Страница существует и выгружена на диск
Страница не существует
При этом VMM использует алгоритм организации доступа к данным, представленный
на рис.4.6 [8].
Запуск на исполнение EXE - модуля происходит следующим образом: EXE - файл
проецируется на память. При этом он не переписывается в файл подкачки. Просто эле-
менты каталога и таблиц страниц настраиваются так, чтобы они указывали на EXE -
файл, лежащий на диске. Затем передается управление на точку входа программы. При
этом происходит возникает исключение, обрабатывая которое стандартным образом,
VMM загружает в память требуемую страницу и программа начинает исполняться. Та-
кой механизм существенно ускоряет процедуру запуска программ, так как загрузка
108
страницы необязательно должны быть расположены последовательно. Все управление
памятью производится с помощью манипуляций с таблицами страниц. Потери связаны
только собственно с самими таблицами страниц и с их 4 Кб размером.
      В-третьих, в 32-битных дескрипторах страниц существует еще 12 бит, кроме тех,
которые используются для адреса страницы. Один из этих битов показывает возмож-
ность доступа к конкретной странице (он называется битом доступа, "accessed bit"); дру-
гой показывает, была ли произведена запись в эту страницу (он называется битом мусо-
ра, "dirty bit"). Windows может использовать эти биты для того чтобы определить, можно
ли сохранить эту страницу в файле подкачки для освобождения памяти. Еще один бит -
бит присутствия (present bit) показывает, была ли страница сброшена на диск и должна
ли быть подкачена обратно в память.
      Другой бит ("чтения/записи") показывает, разрешена ли запись в данную страницу
памяти. Этот бит обеспечивает защиту кода от "блуждающих" указателей. Например,
если включить следующий оператор в программу для Windows:

*(int*) WinMain = 0 ;

то на экран будет выведено следующее окно сообщение: "This program has performed an
illegal operation and will be shutdown." ("Эта программа выполнила недопустимую опера-
цию и будет завершена"). Этот бит не препятствует компилированной и загруженной в
память программе быть запущенной на выполнение.
      Приведем несколько замечаний по поводу управления памятью в Windows 9x:
Виртуальные адреса имеют разрядность 32 бита. Программа и данные имеют адреса в
диапазоне от 0х00000000 до 0x7FFFFFFF. Сама Windows использует адреса от
0х80000000 до 0xFFFFFFFF. В этой области располагаются точки входа в динамически
подключаемые библиотеки.
      Общее количество свободной памяти, доступной программе, определяется как ко-
личество свободной физической памяти плюс количество свободного места на жестком
диске, доступного для свопинга страниц. Как правило, при управлении виртуальной па-
мятью Windows использует алгоритм LRU (least recently used) для определения того, ка-
кие страницы будут сброшены на диск. Бит доступа и бит мусора помогают осуществить
эту операцию. Страницы кода не должны сбрасываться на диск: поскольку запись в его
страницы запрещена, они могут быть просто загружены из файла с расширением .ЕХЕ
или из динамически подключаемой библиотеки.
      Организацией свопинга занимается VMM. При генерации системы на диске обра-
зуется специальный файл свопинга, куда записываются те страницы, которым не нахо-
дится места в физической памяти. Процессы могут захватывать память в своем 32-
битном адресном пространстве и, затем, использовать ее. При обращении потока к ячей-
ке памяти могут возникнуть три различные ситуации [12]:
• Страница существует и находится в памяти
• Страница существует и выгружена на диск
• Страница не существует
При этом VMM использует алгоритм организации доступа к данным, представленный
на рис.4.6 [8].
      Запуск на исполнение EXE - модуля происходит следующим образом: EXE - файл
проецируется на память. При этом он не переписывается в файл подкачки. Просто эле-
менты каталога и таблиц страниц настраиваются так, чтобы они указывали на EXE -
файл, лежащий на диске. Затем передается управление на точку входа программы. При
этом происходит возникает исключение, обрабатывая которое стандартным образом,
VMM загружает в память требуемую страницу и программа начинает исполняться. Та-
кой механизм существенно ускоряет процедуру запуска программ, так как загрузка


                                         108