[an error occurred while processing this directive]
Ну правильно, только (+)
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Dr.Alex 29 марта 2004 г. 16:21
В ответ на: я не эксперт по защите памяти, но как должно реализовыватся в ОСе отправлено yes 29 марта 2004 г. 15:26

что значит "выдавать каждому процессу разные адреса"?
Ведь во-первых, каждый процесс может генерить виртуальные адреса в зоне 0-32М, это его суверенное право.
Во-вторых - в системе ведь нет 4Г памяти, а всего может быть метров 16, а запустить 1000 изолированных процессов всё равно охота.
Попытаюсь ещё раз обьяснить, как это по-моему работает (не в линуксе, а абстрактно).
(С применением PID)
В памяти валяется не просто одна таблица (ТТ), а одна таблица с собственными записями для каждого процесса (они могут быть существенно разными), которые охота переключать с помощью PID, а не просто заменяя указатель на TT.
Для примера:
процесс 0 (c MVA 0-32М) - адреса транслируются в область 0x0С000000-0x0DFFFFFF,
при этом область 0x0C000000-0x0C00FFFF настраивается как r/w и кэшируемая, остальная часть даёт fault.
процесс 1 (c MVA 32-64) - адреса транслируются в область 0x0С000000-0x0DFFFFFF (ту же самую, это же вся рама),
при этом область 0x0C010000-0x0C01FFFF настраивается как r/w и кэшируемая, остальная часть даёт fault.
И так далее, каждому процессу выделяем 64К.

Поскольку мы имеем одну таблицу, не надо очищать её кэш (TLB) при её смене (она же не меняется).
Но хрен с TLB, он маленький по сравнению общим кэшом, но и кэш очищать не надо, так как задачи генерят разные MVA благодаря r13. Да, замещение линеек будет происходить, но это же не то же самое, что вычистить весь кэш! Так как задачи переключаются между собой не единожды, а постоянно, то они просто делят "поровну" кэш между собой. А в каком-то "устоявшемся" состоянии, когда все задачи курят, содержимое кэша может вообще не меняться!

А вы как предлагаете заставить все задачи генерить разные адреса и не портить друг другу инфу?
Чего уж проще, прибавить N*32M к адресу, что и делается! Но при отсутствии 4Г памяти это должно работать только вкупе с ММУ!

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru