我正在閱讀OS理論,其中我發現一個進程具有虛擬地址空間(爲簡單起見,使用技術庫和限制寄存器鬆散),但無法訪問任何其他地址。但是在嵌入式系統中,我們可以使用placement new或reinterpret_cast(C++)來訪問內存映射的IO地址,但如果我們無法訪問除進程的虛擬地址空間之外的任何其他地址,這將如何實現呢?進程如何訪問不屬於它的虛擬地址空間的內存映射IO地址?
class ControlReg {
public:
bool ready() const { return readyBit; }
private:
volatile unsigned readyBit :1;
};
ControlReg *pcr = reinterpret_cast<ControlReg*>(0xFFFF0000); // address 0xFFFF0000 is still virtual or absolute physical mapped address?
是否有一些指令可以讓進程訪問任何地址? 。我很困惑,我猜,任何人都可以幫助我清楚地看待事情嗎?
感謝