hi,
Eine Multicore CPU bootet nur mit einem Core. Du musst dann selbst den zweiten Core aktivieren (meist über den APIC). Jeder Core hat alle Register (general purpose regs, segment regs, gdtr, ldtr, idtr, ... auch tlb) seperat. Jeder Core führt immer zumindest einen anderen Thread aus. Falls auf den gleichen Speicher zugegriffen werden kann, muss man die Zugriffe synchronisieren, ansonsten kann es zu Deadlocks kommen. Dies geht normalerweise über Mutex (mutual exclusion), Semaphore oder Critical Sections. Du brauchst auch für jeden Core deinen eigenen kernel-level Stack (beim stack-based taskswitching).
Dein Beispiel mit dem Pixel ist triffts eigentlich eher nicht, da das gleiche auch passiert, wenn du zwei Prozsse hast, welche nacheinander auf den vram zugreifen. Such einfach mal nach Deadlock, da gibts sehr viel gravierendere Beispiele.