ГИБКОЕ УВЕЛИЧЕНИЕ СТРАНИЦ ПАМЯТИ

1. Один или более машиночитаемых носителей, на которых хранятся выполняемые компьютером инструкции для выполнения способа преобразования множества малых страниц, связанных с одним или более процессами, выполняемыми в вычислительной системе, в большую страницу, причем каждая из множества малых страниц ассоциирована с одной из множества записей таблицы страниц из иерархической системы таблиц страниц, содержащей по меньшей мере два уровня таблиц страниц, причем способ включает в себя:
сканирование (501) последнего уровня иерархической системы страниц в поиске таблицы страниц, в которой каждая из по меньшей мере порогового количества множества записей ассоциирована с одной из множества страниц памяти, приводящее к идентификации подходящей таблицы страниц;
нахождение (504) сегмента памяти, составленного из множества смежных сегментов физической памяти, достаточно больших для хранения каждого из множества сегментов физической памяти, ассоциированных со всеми из множества записей подходящей таблицы страниц;
копирование (505) каждого из множества сегментов физической памяти, ассоциированных со всеми из множества записей подходящей таблицы страниц, в сегмент памяти, составленный из множества смежных сегментов физической памяти, и
корректировку (506) записи таблицы страниц в таблице страниц на один уровень перед последним уровнем иерархической системы таблиц страниц таким образом, чтобы она была ассоциирована с сегментом памяти, составленным из множества смежных сегментов физической памяти.
2. Носитель по п.1, в котором сканирование последнего уровня иерархической системы таблиц страниц включает выборочное сканирования каждого из множества адресных пространств, ассоциированных с одним или несколькими процессами, выполняемыми в вычислительной системе.
3. Носитель по п.1, в котором пороговое количество множества записей составляет общее число записей во всем множестве записей.
4. Носитель по п.1, в котором каждая из множества записей подходящей таблицы страниц ассоциирована с одним из одного или более процессов, выполняемых в вычислительной системе.
5. Носитель по п.1, в котором нахождение сегмента памяти, состоящего из множества смежных сегментов физической памяти, включает в себя копирование данных из первого расположения вблизи области физической памяти во второе расположение, удаленное от указанной области, для создания множества сегментов физической памяти, ассоциированных со всеми из множества записей в подходящей таблице страниц.
6. Носитель по п.1, в котором сегмент памяти, состоящий из множества смежных сегментов физической памяти, находится на предопределенной границе байта.
7. Носитель по п.1, в котором копирование каждого из множества сегментов физической памяти, ассоциированных со всеми из множества записей подходящей таблицы страниц также включает в себя освобождение указанного множества сегментов физической памяти после того, как они были скопированы.
8. Носитель по п.1, в котором упомянутая запись таблицы страниц в таблице страниц на один уровень перед последним уровнем в иерархической системе таблиц страниц была ранее ассоциирована с подходящей таблицей страниц.
9. Носитель по п.1, в котором корректировка записи таблицы переадресации страниц также включает в себя освобождение сегмента памяти, содержащего подходящую таблицу страниц.
10. Один или более машиночитаемых носителей, на которых хранятся исполняемые компьютером инструкции для выполнения способа преобразования большой страницы в множество малых страниц, ассоциированных с одним или более процессами, выполняемыми в вычислительной системе, причем каждая из малых страниц ассоциирована с одной или более записями таблицы страниц из иерархической системы таблиц страниц, содержащей по меньшей мере два уровня таблиц страниц, причем способ включает в себя:
прием (601) уведомления операционной системы, указывающего что большая страница должна быть преобразована в множество малых страниц;
создание (602) новой таблицы страниц;
ассоциирование (603) каждой из множества записей в новой таблице страниц с сегментом большой страницы;
корректирование (604) записи таблицы страниц в таблице страниц на один уровень перед последним уровнем иерархической системы таблиц страниц таким образом, чтобы она была ассоциирована с новой таблицей страниц, в котором указанная запись таблицы страниц в таблице страниц на один уровень перед последним уровнем в иерархической системе таблиц страниц была ранее ассоциирована с большой страницей.
11. Носитель по п.10, в котором уведомление операционной системы вызвано необходимостью выгрузить один или более сегментов большой страницы.
12. Носитель по п.10, в котором уведомление операционной системы вызвано удалением адресного пространства, содержащего большую страницу.
13. Носитель по п.10, в котором новая таблица страниц имеет количество записей, равное размеру большой страницы, деленному на предопределенный размер малой страницы.
14. Один или более машиночитаемых носителей, на которых хранятся исполняемые компьютером инструкции для выполнения способа, включающего в себя:
сканирование (501) последнего уровня иерархической системы таблиц страниц, содержащей по меньшей мере два уровня таблиц страниц, в каждом из множества адресных пространств, ассоциированных с одним или более процессами, выполняемыми в вычислительной системе, в поисках таблицы страниц, в которой каждая из по меньшей мере порогового числа множества записей ассоциирована с одним или более сегментами физической памяти, приводящее к идентификации подходящей таблицы страниц;
нахождение (504) сегмента памяти, состоящего из множества смежных сегментов физической памяти, достаточно больших для хранения каждого из множества сегментов физической памяти, ассоциированных со всеми из множества записей подходящей таблицы страниц;
копирование (505) каждого из множества сегментов физической памяти, ассоциированных со всеми из множества записей подходящей таблицы страницы, в сегмент памяти, состоящий из множества смежных сегментов физической памяти;
освобождение (505) сегмента памяти, содержащего подходящую таблицу страниц;
корректирование (506) записи таблицы страниц в таблице страниц на один уровень перед последним уровнем иерархической системы таблиц страниц, причем упомянутая запись таблицы страниц была прежде ассоциирована с подходящей таблицей страниц, чтобы она была ассоциирована с сегментом памяти, состоящим из множества смежных сегментов физической памяти;
прием (601) указания от подсистемы памяти, неспособной выгружать большие страницы памяти, указывающего, что сегмент большой страницы должен быть выгружен;
создание (602) новой таблицы страниц, где каждая запись в упомянутой новой таблице страниц ассоциирована с сегментом большой страницы, и
корректирование (604) записи таблицы страниц в таблице страниц на один уровень перед последним уровнем иерархической системы таблиц страниц, чтобы она была ассоциирована с новой таблицей страниц, причем упомянутая запись таблицы страниц в таблице страниц на один уровень перед последним уровнем иерархической системы таблиц страниц была ранее ассоциирована с большой страницей.
15. Носитель по п.14, в котором иерархическая система таблиц страниц содержит 4 уровня.
16. Носитель по п.14, в котором каждая малая страница имеет размер 4 КБ.
17. Носитель по п.14, в котором каждая большая страница имеет размер 2 МБ.
18. Носитель по п.14, в котором сегмент памяти, состоящий из множества смежных сегментов физической памяти, находится на предопределенной границе байта.
19. Носитель по п.18, в котором предопределенная граница байта соответствует 2 МБ.
20. Носитель по п.14, в котором таблица страниц иерархической системы таблиц страниц адресуется в соответствии с 64-битной архитектурой.