Дискуссия о распределении памяти в ОС - Basic - Ответ 15263173

Что значит собирать в пачку и сбрасывать на диск? Ну никакого преимущества это не даст. К примеру нужно тебе разметить огромный файл через каждый ГБ, и будешь ты туда-сюда по МБ кидать. В чем преимущество? При использовании маппинга система только 100 - 4 килобайтных куска раскидает. В твоем случае придется раскидывать "нормальными кусками", опять тормоза и излишняя нагрузка на хард + неоправданное уменьшение ресурса SSD.

Так принцип должен быть такой чтобы это было выгоднее использовать чем маппинги. А если выгоды нет то смысл?

Тоже самое - никакой выгоды перед маппингами, даже наоборот оверхед из-за кеша + излишние затраты памяти в случаях распараллеливания доступа. Я уже скидывал ссылку на официальное описание того как маппинги работают.

Вот тут ты сам на "свои грабли" наступил. Как только более приоритетная задача потребует память, твою память быстренько система отправит в системный своп. Ну и дальше по твоему сценарию как ты уже неоднократно написал.

И как ты будешь проверять обращения? Каждое обращение к блоку будешь тестировать? Ненужный оверхед. В Windows уже

есть такой механизм

который поддерживается на уровне железа.

Это изобретение велосипеда, ручная отрисовка и т.п. Как выглядит алгоритм с моей стороны.

1. Создаем файл нужного размера;

2 (а). Создаем DIB-секцию в которую передаем файл-маппинг созданного выше файла, где указываем какую часть файла мы будем использовать (к примеру 1000000 * 100 пикселей);

2 (б). Создаем GDI+ битмап в который передаем наш файл-маппинг и часть файла которую будем использовать;

3. Рисуем обычными GDI / GDI+ функциями на нужном регионе;

4. По завершении отрисовки, сбрасываем целый блок на диск, и переходим к п. 1 пока весь файл не будет обработан.

Все. Задача решена.

Какая разница? Ну если тебе так хочется выгружай хоть по 1ГБ куски в чем проблема? Я же скинул функцию, там указывай нужный размер для выгрузки и все.

Вернуться к обсуждению:

Дискуссия о распределении памяти в ОС Basic