Ай, молодца.! Sayman не разобравшись,выхватил строчку из контекста сообщения и перевёл в недостаток.
Так вот обьясняю - о чем там шла речь, Alone говорил, что если программе по запросу предоставляется физические номера страниц, то не возможно организовать виртуальную память, то есть давать программе левые номера страниц (вместо настоящих), и потом, когда программа вызывает функцию включить страницу, то система смотрит - ага , нет сободных страниц, выбирает "жертву", у которой можно страницу забрать, сохраняет странцу в своп-файл, и отдаёт эту страницу проге,сделавшей запрос, а дальше мы имеем ТОРМОЗ,а именно, та другая прога , у которой была забрана страница, грит,типа, а ну подайте мене мою страницу , ща печатать картинки буду (или следующий кусок архива распаковывать), и начинается, система сохраняет страницу 2-й проги в своп-файл,загружает оттуда страницу для первой проги,первая прога начинает обрабатывать данные, а потом переключаются процессы и переключалка должна включить страницу второй проги,и опять всё по новой - сохранили загрузили - переключили
Вот про энто безобразие я и говорил, что его НЕТ, и НЕ БУДЕТ!!!
Специально повторяю, читайте внимательно!
Прога будет создавать свой файл, если система по запросу на выделение страниц скажет, мол, нет свободных страниц.
Ну а сама система будет использовать своп для того чтобы сохранять туда спящие процессы (кусками или полностью ) и тем самым она будет освобождать память для вновь запущенных прог
---------- Post added at 11:25 ---------- Previous post was at 10:55 ----------
Ну я бы назвал это так:
Вы говорите про меню - прямоугольник или квадрат со строчками текста, заголовком и возможно с маленькой картинкой(пиктограммой), а я говорю про окно (тот же прямоугольник) - в которое постоянно выводиться информация - даже если это просто листалка, посточно листаем текст и он в окне должен снизу вверх перемещаться - и как это в Вашем варианте осуществить? для вывода окна с тестком смещенным на одну строку вверх формировать новый описатель окна? - я пробовал в делать нечто подобное в минивиндовс98 - впечатление, что текст на бэйсике выводиться (в смысле очень медленно)
Ну, этот код спокойно располагается в страницах, а непрерывная память на него не раходуется
Ужасная идея! она не годится!!!
НИ В КОЕМ СЛУЧАЕ нельзя связывать кодера по рукам и ногам и указывать ему, что и где хранить - при такой схеме даже вьюевер 3-колорных картинок нельзя сделать!!!
Перелопачивать свои окна будут не все программы а только одна - которой придет сообщение - воздействие на её окно - в результате имеем немерянный выигрыш по скорости
а единый кодовый блок графсистемы займет немеряно памяти (он будет занимать не менен 8 кб (со 2 шрифтами) и 5.5 Кб с одним шрифтом) и теперь в Вашем варианте сюда надо добавить ещё кучу описателей каждого окна - Вы об этом подумали?
даже если описатель займет 200 байт - 10 окон это уже 2 Кб - и где их хранить? в странице с граф.подсистемой ещё место для процедур ядра нужно, или предлагаете сделать полноценный менеджмент памяти, который будет использоваться граф.подсистемой для манипулирования областями памяти с кучей описателей? или сильно усложнит код, увеличит занимаемую им память - и в результате стоит ли овчинка выделки?
Ничего сложного нет, кроме больших затрат памяти и процессорного времени
---------- Post added at 11:45 ---------- Previous post was at 11:25 ----------
Ну я же сказал - будет такая возможность - специальный вызов, для переключения страниц напрямую: типа прога делает call adr2 и страница сразу переключается без всяких "входов в режим ядра, поиск нужной функции , перевода номера логической в физический", только пока не определился с параметрами - вот склоняюсь к тому, что предлагает Alone - при заказе страниц система даёт проге два байта , прога не вникает в их смысл - а это байты,засылаемые в порты,тогда страница переключается максимально быстро
пример для Профи,проге надо две страницы и ей даётся 4 байта(#01,#10,#01,#11), она берет первые 2 байта и вызывает:
ld hl,#0110
call adr2
итого включается страница 8, а прога по барабану, она знаёт что теперь включена ПЕРВАЯ страница этой проги
а потом она берет вторые 2 байта и делает так
ld hl,#0111
call adr2
включается страница 9
и теперь прога знает что включена ВТОРАЯ страница этой проги
но это только для прога, которым нужна скоростное переключение страниц
а для остальных прог эти же 2 байта прога кладёт в ячейку памяти и после переключения процессов при приходе прерывания будет включена нужная страница.





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