Если страницы будут идти последовательно - то память программе надо будет выделять сразу по максимуму. Это не есть гут (представь себе, что ИЕ при запуске сразу резервирует место под полсотни вкладок с ютуба, хотя ты в 99% случаев открываешь только страницы поиска и почту. Чтобы сделать возможным динамическое перераспределение памяти, следует потратить больше ресурсов на поддержку карты распределения.
Именно: иметь список ИД процессов с указанием номера первой физической страницы памяти, а также иметь список страниц памяти, содержащий для каждой страницы один-единственный элемент - номер следующей страицы. Или 0, если это последняя выделенная страница памяти. При выделении кванта времени для очередного процесса ОС просто "суёт" процессору в специальный регистр ИД процесса. Просто и эффективно.
ИМХО - так делать не надо, это прямая дорога к dll-hell. Динамическая библиотека - это разделяемый ресурс, для управления которым и предназначена ОС. Т. е. DLL должна лежать в принадлежащей ОСИ области памяти, а приложения должны выставлять запрос на выполнение библиотечных функций. Т. е. процессор должен, как минимум, поддерживать разделение памяти на 2 области (кольца, в терминологии ИБМ) - память ОС и память приложений.





Ответить с цитированием