Hi,
ARISTOS wrote:
I will load my kernel at physical address 0xC0000000,
No, you won't - it's very unlikely that there's RAM at physical address 0xC0000000 (even on computers with 4 GiB or more RAM) because this area is typically used for memory mapped PCI devices.
ARISTOS wrote:
I will map the virtual kernel address to the same value (0xC0000000) and I will start some programs. All my interrupt handlers will work virtual addresses right?
Almost everything in the entire OS uses virtual addresses, which means that physical addresses are almost always relatively irrelevant - they only matter very early during boot and for some device drivers (for devices that use DMA and bus mastering).
For an example of how much physical addresses don't matter; my boot loaders set up a temporary physical memory manager and then use it to allocate "deliberately randomised for security purposes" physical pages for everything else. I literally can't know/predict which physical addresses my own boot loader will load my kernel into.
ARISTOS wrote:
Do I will have any problem (something extra to do) using multiprocessor?
For memory management, multiprocessor often doesn't involve anything extra (beyond locks/spinlocks/mutexes to make sure 2 or more CPUs don't confuse each other when using the same data at the same time).
Cheers,
Brendan