С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Предлагается, чтобы после включения питания - мода супервизора была замаплена на 4Гб адресов внешних устройств, где по адресу 0 начинается пультовое ПЗУ. В принципе - загруженная операционка может позже эту моду перемапить, чтобы установить собственный обработчик исключительных ситуаций, но при сбросе питания и обнулении ОЗУ - мапинг моды супервизора на пространство ввода-вывода автоматически восстанавливается.
Когда у нас есть два процесса, каждый из которых имеет доступ к собственному виртуальному адресному пространству 4Гб, то в общем случае без свопа не обойтись даже на машине с 4Гб ОЗУ. А если у нас 64 процесса или 1024 процесса - тогда и подавно. Поэтому 32-разрядные архитектуры изначально проектируют со свопом.
Если даже перемапленная с пультового ПЗУ в ОЗУ мода обработки исключительных ситуаций больше похожа на "моду пульта" - пусть будет мода пульта.
Архитектуры со свопом могут работать гораздо быстрее, чем без свопа, потому что операционка получает возможность запускать на выполнение файлы любого размера, просто помечая их как "временные файлы подкачки" и без загрузки файла в память - просто передавая управление на "смотрящий в пустоту" стартовый адрес. Тогда во время исполнения программы в память попадут только те страницы файла исполняемой программы, куда будут происходить переходы и вызовы в коде.
За счёт этого гигабайтные файлы стартуют на выполнение за доли секунд, тогда как при отсутствии в архитектуре свопа - их надо или целиком загружать в память, или использовать убогую концепцию оверлеев.
Человек читает - основана на архитектуре PDP-11. Человек читал доку по PDP-11 и он знает, что такое режим супервизора на PDP-11. Человек видит - мода супервизора... Профит!
Назовём единицу выделения памяти (и подкачки) - страницей.
Только здесь. Больше нигде (я уже начинаю запутываться в терминах, значение которых отлично от тех, к которым я привык в доках по PDP-11)
Операционка пометила запускаемую программу как временный файл подкачки (кстати, в Windows аналогичный механизм носит название - файл, отображённый в память, что позволяет легко обойтись без специальных пометок, что бы не дай бог не вмешался диспетчер файла подкачки и не выгрузил в наш (временный) файл подкачки что то ещё) и передала управление на нулевую страницу - пусть там стартовый адрес. Что происходит дальше.
Операционка - я передаю управление на страницу 0
MMU - упс, памяти нет - подгружаем.
Программа - я передаю управление на страницу 20
MMU - упс, памяти нет - подгружаем.
Программа - я передаю управление на страницу 21
MMU - упс, памяти нет - подгружаем.
Программа - я передаю управление на страницу 100
MMU - упс, памяти нет - подгружаем.
Программа - я передаю управление на страницу 101
MMU - упс, памяти нет - подгружаем.
Программа - я передаю управление на страницу 120
MMU - упс, памяти нет - подгружаем.
Программа - я передаю управление на страницу 12
MMU - упс, памяти нет - подгружаем.
Программа - я передаю управление на страницу 45
MMU - упс, памяти нет - подгружаем.
....
Пусть размер программы - 150 страниц.
Вы серьёзно думаете, что в 150 запросов чтения по странице выполнятся быстрее, чем один, читающий 150 страниц за раз? (помните, у нас памяти сейчас у нас... как грязи)
Это называется "отображение файлов в память" и так сейчас работают все операционки. Но ничто не мешает иметь два варианта архитектуры - со свопом и без. В архитектурах без свопа есть только один способ, как при старте программы не загружать её в память целиком - использовать оверлеи.
- - - Добавлено - - -
Возможно не все знают, что программа DIR в RT-11 v5.0 стала оверлейной не потому, что не лезла в память, а для того, чтобы при обычном просмотре каталога с диска считывались только первые блоки программы и лишь при использовании различных экзотических режимов - подгружался оверлей, обрабатывавший дополнительные ключи запуска.
Похоже, чтение идёт избранных мест.
ЗАЧЕМ МОЖЕТ ПОНАДОБИТЬСЯ НЕ ЗАГРУЖАТЬ ПРОГРАММУ В ПАМЯТЬ ЦЕЛИКОМ, если у нас не монструозные программы и памяти как грязи??
Расскажите это динамически-загружаемым библиотекам, которые, кстати, существовали уже в RSX-11M-Plus, а я делал для RSX-11M в восемьдесят-лохматом году.
Не знаю как там с юникс-системах (на 32-битных процах), но в PDP-11 оверлеи - это способ ПОВТОРНО использовать адресное пространство в первую очередь. А ещё был такой вариант - оверлеи, резидентные в памяти, в системах с MMU (насчёт поддержки под XM монитором не скажу - но по идее должна быть, а уж в RSX - даже в M были) - когда программа целиком располагалась в памяти, но тем не менее использовала оверлеи.
- - - Добавлено - - -
Что даёт хорошо заметный эффект ускорения работы программы на чём нибудь типа DX01 - но нахрен не нужно уже даже на дисках типа RK05 при том размере, который у DIR. Или Ваш замечательный 32-битный проц Вы планируете использовать вместе с DX01??
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)