Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-11-2007, 10:24   #1
das
Senior Member
 
Iscritto dal: Jan 2001
Città: Livorno
Messaggi: 1386
Domande sullo sfruttamento dell multicore

Volevo sapere:

Basta che l'applicazine sia multithread perchè poi windows gestisca il carico su tutti i processori disponibili ?

La memoria è una sola per tutti oppure a ciascun core ne è assegnata un po' ?

Se tramite puntatore due thread in esecuzione su due diversi core cercano di accedere alla stessa area di memoria che succede ?
das è offline   Rispondi citando il messaggio o parte di esso
Old 13-11-2007, 11:05   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da das Guarda i messaggi
Basta che l'applicazine sia multithread perchè poi windows gestisca il carico su tutti i processori disponibili ?
Sì, nel senso che una applicazione multi-thread è tale da avere più flussi di esecuzione e siccome i thread vengono schedulati dal S.O., se esso si occupa di suddividere (più o meno) correttamente il carico di lavoro, allora chiaramente è ok.

Quote:
Originariamente inviato da das Guarda i messaggi
La memoria è una sola per tutti oppure a ciascun core ne è assegnata un po' ?
La memoria fisica principale è una sola. E viene gestita dal sistema operativo.
I processi però hanno spazi di indirizzamento diversi, separati. Mentre tutti i thread all'interno di un processo condividono lo stesso spazio di indirizzamento.
Ogni core potrebbe anche avere delle memorie cache proprie.

Quote:
Originariamente inviato da das Guarda i messaggi
Se tramite puntatore due thread in esecuzione su due diversi core cercano di accedere alla stessa area di memoria che succede ?
Se entrambi in lettura no problem. Se c'è una scrittura di mezzo, allora ci possono essere problemi.
Parlando in generale, l'accesso concorrente ad uno stato "mutabile" richiede una appropriata sincronizzazione tra i thread.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 13-11-2007, 17:59   #3
das
Senior Member
 
Iscritto dal: Jan 2001
Città: Livorno
Messaggi: 1386
Quote:
Originariamente inviato da andbin Guarda i messaggi

La memoria fisica principale è una sola. E viene gestita dal sistema operativo.
I processi però hanno spazi di indirizzamento diversi, separati. Mentre tutti i thread all'interno di un processo condividono lo stesso spazio di indirizzamento.
Ogni core potrebbe anche avere delle memorie cache proprie.
Dunque se il mio thread 1 usa un puntatore che punta alla locazione A
e il thread 2 usa un puntatore che punta alla stessa locazione di memoria.

Sono sicuro che entrambi continuano a leggere in A lo stesso dato anche se il S.O. li ha messi su core differenti, giusto?

Quote:
Se entrambi in lettura no problem. Se c'è una scrittura di mezzo, allora ci possono essere problemi.
Parlando in generale, l'accesso concorrente ad uno stato "mutabile" richiede una appropriata sincronizzazione tra i thread.
E' difficile da implementare, non esiste un modo standard per ottenere questo sincronismo ?
das è offline   Rispondi citando il messaggio o parte di esso
Old 13-11-2007, 18:32   #4
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da das Guarda i messaggi
Sono sicuro che entrambi continuano a leggere in A lo stesso dato anche se il S.O. li ha messi su core differenti, giusto?
Sì, sei sicuro. Ci sono dei meccanismi di sincronizzazione a livello hardware che permettono fare una lettura consistente di locazioni di memoria usate da due o più processori.

Su Windows per la schedulazione dei thread ti puoi affidare allo scheduler del kernel oppure consigliargli di assegnare un dato thread ad un dato processore in modo da cercare di forzare la schedulazione dei thread (ad esempio in modo da modificarla in base alla quantità di processori presenti nel sistema).

E' fondamentale quando si lavora sui thread conoscere buona parte della teoria su corse critiche, deadlock, mutua esclusione, semafori e le varie strutture che permettono una condivisione consistente dei dati fra thread.
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 05:43.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v