Допустим, есть AGP видеокарта с 512МБ памяти и есть матплата, на которой стоит 256 МБ памяти. Можно ли использовать часть видеопамяти как системную память? На самом деле вопрос шире. Есть устройство на шине pci/agp/pciE(хоть isa) которое имеет память(ничего кроме видеокарты в голову не приходит). Оно умеет брать на себя некоторую часть адресного пространства процессора. Как это использовать?
В голову приходят только linear frame buffer в большей степени и agp aperture size в меньшей степени, также "размер окна". Можно ли "замапить" часть памяти достаточно простым образом, чтобы не нужно было сложное программирование и переключение "окон"?
Рассуждения- "память стоит дёшево", "слишком большое время доступа" и т.п. можно не приводить.
NortonC если память некого устройства мапится на адресное пространство процессора - то религиозных ограничений тут нет ИМХО - достаточно поправить ядро ОС в части VM и аллокатора и драйвера устройства предоставляющего память научить обходить стороно выделенный участок.
Добавлено спустя 5 минут 15 секунд:
Строго говоря, не обязательно даже чтобы память устройства мапилась на адресное пространство процессора - достаточно только:
1) Иметь возможность получить доступ к произвольному блоку памяти устройства каким-то способом (например чере порты либо маппинг на адресное пространство процессора кусками, либо маппинг целиком)
2) Сказать устройству чтобы оно некоторые области собственной памяти не трогало - ибо устройство-то может быть умным, иметь собственную прошивку и т.п.
3) Далее модифицируется VM и алокатор в ядре - все реально при условии того что первые два условия - выполнены.
ex-K9
в теории - можно. Реально в худшем случае придется переписывать memory management в ядре операционной системы. Напр., как можно рассуждать - у нас есть PM. В нем есть возможность при обращении к отсутствующим страницам памяти вызывать обработчик оного прерывания. Так в нем можно реализовать подгрузку этих самых страниц откуда угодно. В т.ч. и из памяти PCI-у-в. Ну, или откуда угодно
Аццкий ромбовод {:€
Я пока не волшебник - я только учусь! :-P
Можно воткнуть видеокарту с вынутым биосом и не ставить её драйвера. Интересует, конечно, не "прокручивающееся" окно, а маппинг всей памяти. Можно ли обойтись только софтом устройства без модификации ядра ос. Допустим, рассматриваем более широко распространённые ос, чем линух Или же, как только начнётся инициализация шины в ядре, на которой висит устройство, все предыдущие "установки" отвалятся? Идеально было бы иметь драйвер универсальной инициализации видеокарты, может vesa подошёл бы, например, подобно известному
Малоинтересно. Нужен драйвер устройства, а не перехватчик исключений, как можно с более минимальным программированием, иначе- не имеет смысла. Хоть и было мной написано про не имеющие значения задержки, но, чем более железный способ, тем они меньше.
NortonC нет, невозможно без модификации VM/MM ИМХО. Единственный вариант - на поздней стадии инициализации, уже на уровня драйверов эмулировать block device с последующим размещением там свопа. Другое дело, что находясь в ring0 чисто теоретически можно подменять системные вызовы своими аналогами и сделать по сути собственный алокатор для отработки всяческих mmap()/brk().
ex-K9
отсюда
или упирается в "непрерывность" памяти, в том смысле, что "выше 2Г" и модификация нужна, чтобы ос видела её именно как самую обычную память? Иначе память будет, но писать в неё можно будет только тем, кто знает, что она есть?
А если перекопать видеобиос, в влезть в память по DMA???
Либо нечему гореть, либо нечем поджечь!
Baza влезть в эту память всяко можно - драйвера-то лазят... Вопрос в том, чтобы объяснить ОС что у неё эта память есть, а вот уже для этого надо колупаться ядре.
ex-K9
Я незря предложил ковырнуть бивис:
были-же ISA платы с памятью, есть PCI-винчестеры на DIMM-ах.
надо только чтобы система считала это картой памяти, а вторую видяху под видео и оставить....
Либо нечему гореть, либо нечем поджечь!
Скорее всего потребуется не только модификация Расширения BIOS видеокарты, но и модификация его Конфигурационного пространства PCI. А это скорее всего сделать не получится.
Нужно, чтобы устройство кроме DeviceID и VendorID отдавало правильный Class Code, например что-то такое:
Иначе ничего не выйдет, в ISA все гораздо проще.
Второй закон Вышковского: Все можно наладить, если вертеть в руках достаточно долго.
Обслуживавшиеся своим драйвером. По типу EMS, вроде.
Так как раз сделать из VRAM накопитель - сравнительно просто. Но это же не память будет, а все же диск.
Кстати - у линуксоидов есть такой проект.
Не обязательно. Если свой драйвер - то ему пофиг, что там за Class Code у платы - главное, что он системе отдастся как Storage. А вот с драйвером видюхи - да, придется как-то договариваться о юзании ресурсов... Хотя бы в плане обмана - сколько реально мозгов на плате.
А кому счас легко...
Отправить комментарий