ero molto confuso, ma questo thread chiarito i miei dubbi:Threads & Processes Vs MultiThreading & Multi-Core/MultiProcessor: come sono mappati?
Multiprocessing, Multithreading,HyperThreading, Multi-core
Ma affronta le query dal punto di vista hardware. Voglio sapere in che modo queste caratteristiche hardware sono associate al software?
Una cosa che è evidente è che non c'è differenza tra MultiProcessor (= Mutlicpu) e multipolari diverso da quello in multicore tutte le CPU risiedono su un unico chip (die) dove come in Multiprocessor tutte le CPU sono i propri chip & collegati insieme.
Quindi, i sistemi multiprocessore/multiprocessore sono in grado di eseguire più processi (firefox, mediaplayer, googletalk) allo "sametime" (a differenza del contesto che commuta questi processi su un singolo processore). Giusto?
Se corretto. Sono chiaro finora. Ma la confusione sorge quando il multithreading entra in scena.
MultiThreading "è per" elaborazione parallela. destra?
Quali sono gli elementi che sono coinvolti nel multithreading all'interno della CPU? diagramma? Per sfruttare la potenza dell'elaborazione parallela di due compiti indipendenti, quali dovrebbero essere i requriements della CPU?
Quando le persone dicono il cambio di contesto dei thread. Non capisco davvero. perché se il suo contesto cambia di thread allora la sua elaborazione non parallela. i thread devono essere eseguiti "simultaneamente simultaneamente". destra?
La mia nozione di multithreading è quella: Considerando un sistema con CPU singola. quando il processo è passato a Firefox. (supponiamo) ogni tab di firefox sia un thread e tutti i thread siano eseguiti rigorosamente allo stesso tempo. Non è come se un thread fosse stato eseguito per un po 'di tempo, ma un altro thread ha richiesto fino a quando non è arrivato il tempo di commutazione del contesto.
Cosa succede se eseguo un software multithread su un processore che non è in grado di gestire i thread? Voglio dire, come fa la CPU a gestire questo software?
Se tutto è buono finora, ora la domanda è QUANTI FILETTI? Deve essere limitato dall'hardware, immagino? Se l'hardware supporta solo 2 thread e avvio 10 thread nel mio processo. Come potrebbe gestire la CPU? Pro e contro? Dal punto di vista dell'ingegneria del software, mentre lo sviluppo di un software che verrà utilizzato dagli utenti in un'ampia varietà di sistemi, quindi come dovrei decidere se dovessi andare per il multithreading? se sì, quanti fili?
+1 ma un problema simmetrico: "5. Il numero di ... _concurrent_ è identico a # dei processori logici." Dovrebbe essere simultaneamente Più thread eseguiti su un singolo processore logico vengono eseguiti simultaneamente in caso di commutazione. –