Adding support for multiprocessor systems for an existing OS
Posted: Wed Oct 01, 2008 2:11 pm
I already have a pretty advanced OS (http://www.rdos.net/rdos), that I have worked on since 1988 from time to time. Back then there were no multiprocessor systems (the 386-processor was very expensive also).
I have kernel-threads and a few synchronization primitives (basically critical sections and signals). Signals should pose no problems for execution on more than one processor, but the critical section primitive must be made multiprocessor safe. How would one implement this on a multicore architecture? I also know that Linux uses spinlocks, but I'm not sure how they work, but they are supposed to be multiprocessor-safe AFAIK.
I also seem to have problems with interrupts in newer PCs. Maybe this is because I only support PIC, and not APIC, and these PCs doesn't support PIC anymore? Some PCI devices also seem to not generate interrupts even if they are supposed to according to the PCI-configuration (OHCI-device).
Where can I find the MP specifications? Are they similar in Intel and AMD processors? Are there a common core that is supported in most CPUs?
I have kernel-threads and a few synchronization primitives (basically critical sections and signals). Signals should pose no problems for execution on more than one processor, but the critical section primitive must be made multiprocessor safe. How would one implement this on a multicore architecture? I also know that Linux uses spinlocks, but I'm not sure how they work, but they are supposed to be multiprocessor-safe AFAIK.
I also seem to have problems with interrupts in newer PCs. Maybe this is because I only support PIC, and not APIC, and these PCs doesn't support PIC anymore? Some PCI devices also seem to not generate interrupts even if they are supposed to according to the PCI-configuration (OHCI-device).
Where can I find the MP specifications? Are they similar in Intel and AMD processors? Are there a common core that is supported in most CPUs?