Thread: la differenza di concorrenza tra il modello many-to-one e il modello one-to-one

5

Sto studiando parte "Threads" con un libro di testo, concetti di sistema operativo scritti da Abraham Silberschatz, Peter, Greg.

In primo luogo, ho intenzione di dire qualcosa nel libro di testo relativo alla mia domanda, e quindi di porre la domanda. Se qualcuno già conosce la seguente teoria, salta alla mia domanda, per favore.

Il libro ha definito il parallelismo e la concorrenza come segue:

La concorrenza supporta più di un'attività che progredisce.

Esecuzione simultanea su sistema single-core:

Parallelismoimplicacheunsistemapuòeseguirepiùdiunaattivitàcontemporaneamente.

Parallelismosuunsistemamulti-core:

Modello many-to-one : la concorrenza vera non viene acquisita perché il kernel può pianificare solo un thread alla volta.

Modelloone-to-one:forniscepiùconcorrenzarispettoalmodellomolti-a-uno."

Lamiadomandaè:perchélaconcorrenzanonvieneacquisitanelmodellomolti-a-unoeperchéilmodelloone-to-oneoffrepiùconcorrenzadimolti-a-onemodel.

Pensochelaperformancedelmodello"molti a uno non sia ottenuta, ma penso che la concorrenza sia 4 volte più grande del singolo thread. Inoltre, il modello one-to-one offre una concorrenza 4 volte maggiore rispetto a un singolo thread (come per il modello molti-a-uno ). Inoltre, il parallelismo è 4 volte migliore del modello molti-a-uno nelle architetture multi-processore.

La mia conclusione è che il libro di testo è stato scritto erroneamente. Quindi dovrebbe essere cambiato come segue

Modello many-to-one : la concorrenza viene migliorata fino al numero di thread utente, ma le prestazioni non vengono acquisite perché il kernel può pianificare solo un thread alla volta.

Modello one-to-one : la concorrenza è migliorata fino al numero di thread utente e anche le prestazioni sono migliorate fino al numero di processori.

Il mio pensiero è giusto o sbagliato? Grazie per la lettura.

    
posta Danny_Kim 26.10.2015 - 20:15
fonte

1 risposta

8

Il tuo libro di testo non è sbagliato, ma sta usando il termine "concorrenza" a volte un po 'sciolto.

La concorrenza significa che esiste aspetto che più attività vengono svolte contemporaneamente.
La concorrenza reale significa che più le attività sono effettivamente eseguite allo stesso tempo. Questo è anche chiamato Parallelismo. Sembra che il tuo libro di testo stia usando questi termini in modo intercambiabile, il che non è sbagliato, ma può essere fuorviante se trascuri la parola "vero".

Nel modello many-to-one, si ottiene la concorrenza (l'aspetto che le attività vengono eseguite contemporaneamente) ma non è possibile ottenere il parallelismo. C'è solo un thread del kernel e questo non può essere distribuito su più processori.

Nel modello on-to-one, ogni thread utente ha un thread del kernel corrispondente, che fornisce al kernel più opzioni per fornire simultaneità o persino parallelismo.

    
risposta data 26.10.2015 - 21:28
fonte

Leggi altre domande sui tag