Allokera minne ur non-paged pool (windows)
Hej
Kan börja med att säga att detta tillhör mitt exjobb och jag har skrivit på en NDA så därför är jag lite sparsmakad med vissa detaljer.
Jag undersöker möjligheten att i windows allokera kontinuerligt "non-paged" fysiskt minne, detta minne vill jag sedan dela med ett realtids OS som körs på samma maskin och har tillgång till samma fysiska minne.
På realtids sidan tar jag sedan emot den fysiska adressen och mappar in det i virtuella adressområdet hos en process.
Det finns ingen som helst synkronisering/kommunikation mellan minneshaterarna i de båda operativsystemen, så därför krävs det att det fysiska minnet som ska delas är ordnat i ett sammanhängande block och aldrig får swappas ut på disk.
Nu till min frågor/funderingar:
Är detta möjligt att åstadkomma?
Jag har läst om en funktion som heter MmAllocateContiguousMemory som skulle kunna åstadkomma just detta, men den används bara för drivrutiner men jag kommer köra i user space.
Men det finns kanske något annat sätt?
Finns det risk att jag äventyrar stabiliteten hos operativsystemet? Vad är det man måste tänka på om man vill göra detta?
Vart jag är nu:
Har lyckats att allokera minne på realtids sidan, mappa in detta i en windows process och läsa/skriva från/till det.
Anledningen till att jag vill göra tvärt om är att det handlar om kod som ska portas och det skulle spara enormt mycket tid.
Men frågan är om det är värt besväret.
PS: Har inte järnkoll när det gäller detta område så jag kan ha blandat ihop vissa termer och svamlat till det lite