Multicore - Scheduling
-
Dazu musst Du diese erstmal initialisieren, sprich: Stack, GDT, Paging, etc. pp.
Danach kannst Du die jeweiligen CPUs dirigieren
-
Gibts dazu irgendwelche hilfreichen Links?
-
Für Intel System:
[url=http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-software-developer-vol-3a-part-1-manual.html]Intel64 and IA-32 Architectures Software Developer's Manual
Volume 3A: System Programming Guide[/url]Für AMD ... google
-
AMD interessiert doch eh nicht :p
Vielen Dank
-
http://de.wikipedia.org/wiki/Semaphor_(Informatik)
http://de.wikipedia.org/wiki/Bulk_Synchronous_Parallel_Computer
http://de.wikipedia.org/wiki/Message_Passing_Interface
http://de.wikipedia.org/wiki/Hardwareseitiges_Multithreading
usw. usw....und viel weitere Theorie und Praxis aus der Parallelwelt, hat nicht so sehr viel mit Assembler zu tun, eher mit Nachrichten hin und herschicken, synchronisieren, natürlich Hardwarethreads und so Sachen.
-
Also so ganz werd ich daraus jetzt auch nicht schlau. Was ich suche ist eine kurze Hilfe ala "So kriegst du deinen Code parallel zum laufen". Wie das Scheduling und Synchronisation dann funktioniert ist mir erst mal nicht so wichtig. (Ich frage auch nur aus rein technischem Interesse.)
-
http://de.wikipedia.org/wiki/OpenMP
https://computing.llnl.gov/tutorials/openMP/
..mit threads
..http://stackoverflow.com/questions/1036467/parallel-api-for-c-c-on-windows
-
Ich meine natürlich schon als Programmierer eines Betriebssystems und nicht auf Userebene
-
Vielleicht hilft dir http://www.osdever.net/tutorials/view/multiprocessing-support-for-hobby-oses-explained weiter. Für mehr Details bzgl. Implementierung ist aber dann in der Regel das schon erwähnte Intel bzw. AMD Manual die richtige Lektüre.
-
Die Intel Docs sind doch das was Du suchst! Lesen musst Du dann nur noch selber..
Schau mal in den ACPI Abschnitt.
Was Du brauchst ist eine Initialisierungs-Routine für die APs und ein SIPI Call damit diese in die Initialisierungsroutine springen, erst danach kannst Du diese für Aufgaben nutzen.