|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Michael Ryazanov 2:5030/1492.64 09 Feb 2003 00:35:00 To : All Subject : Выделение памяти --------------------------------------------------------------------------------
Задачка, может быть, не совсем по теме, поэтому приветствуются ссылки на то,
где это узнать/спросить.
Везде написано, что контроллер ПДП (DMA) не умеет переходить через границы
64-килобайтных страниц, т.е. в адресе должны меняться только 16 младших битов. В
связи с этим и вопрос -- как выделять память (под ДОСом) для буфера так, чтобы
не пересечь границу?
Можно, например, выделять блок двукратного размера и использовать
"правильную" его половину. Hо это, во-первых, расходует лишнюю память,
во-впорых, при достаточно большом размере буфера обе половины могут оказаться
"неправильными", и придётся вычислять "правильный" адрес, в-третьих, могут
возникнуть проблемы с использованием этого буфера в программе (16-битное
смещение может переполниться).
Есть ещё идея отбирать память минимальными кусочками, пока не получится
выделить подходящий блок, после чего эти кусочки освободить. Hо это тоже как-то
некрасиво.
А как это делают на самом деле? Или, может быть, проблема была только в
древних контроллерах, и заморачиваться не надо? :-)
|V|uxau/\
--- -- - ъ
* Origin: Ф И З Ф А К - Ч Е М П И О H ! (2:5030/1492.64)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/46363e45988b.html, оценка из 5, голосов 10
|