2010-11-11 12 views
12

Sono entrambi la stessa cosa? Esaminando solo i mezzi concomitanti o paralleli della geometria, direi di no:La programmazione concorrente è uguale alla programmazione parallela?

In geometria, due o più linee sono dette concorrenti se si intersecano in un singolo punto.

e

Due linee in un piano che non intersecano o si incontrano sono chiamati parallele linee.

Ancora, nella programmazione, hanno lo stesso significato? Se sì ... Perché?

Grazie

+0

+1 Ottima domanda. Potrebbe essere meglio esistere su http://programmers.stackexchange.com/? 'Programmatori - Stack Exchange è per programmatori esperti interessati a discussioni soggettive sullo sviluppo del software. –

+0

@JohnK Non penso che queste definizioni siano soggettive. –

risposta

6

Sono d'accordo sul fatto che il vocabolario della geometria sia in conflitto. Pensa invece ai binari del treno: due treni che si trovano su binari paralleli possono funzionare indipendentemente e simultaneamente con poca o nessuna interazione. Questi treni corrono simultaneamente, in parallelo.

La difficoltà uso di base è che "concurrent" può significare "contemporaneamente" (con i treni o codice) o "nello stesso luogo" (con le linee geometriche). Per molti scopi pratici (treni, risorse filo) queste due nozioni sono direttamente in conflitto.

Lingua naturale è supposto essere sciocco, ambiguo e confuso. Ma siamo programmatori. Possiamo rifugiarci nella chiarezza, semplicità ed eleganza dei nostri linguaggi di programmazione formale. Come perl.

+2

+1 per essere ben pensato, ma l'ultima frase sicuramente deve essere uno scherzo? –

3

Da Wikipedia:

calcolo concorrente è una forma di calcolo in cui i programmi sono progettati come collezioni di interagire processi computazionali che possono essere eseguite in parallelo .

Fondamentalmente, i programmi possono essere scritti come programmi concorrenti se sono costituiti da processi di interazione più piccoli. La programmazione parallela sta attualmente facendo questi processi allo stesso tempo.

Quindi suppongo che la programmazione simultanea sia davvero uno stile che si presta a processi eseguiti in parallelo per migliorare le prestazioni.

2

No, decisamente concomitante è diverso dal parallelo. ecco esattamente come

La concorrenza si riferisce alla condivisione di risorse nello stesso intervallo di tempo. Ad esempio, diversi processi potrebbero condividere la stessa CPU o condividere la memoria o un dispositivo I/O.

Ora, per definizione, due processi sono concomitanti se uno solo se il secondo inizia l'esecuzione prima che il primo sia terminato (sulla stessa CPU). Se i due processi vengono entrambi eseguiti sulla stessa CPU, ad esempio per CPU single-core, i processi sono concomitanti ma non paralleli: in questo caso, il parallelismo è solo virtuale e si riferisce al sistema operativo che esegue la condivisione dell'ora. Il sistema operativo sembra eseguire diversi processi contemporaneamente. Se è presente una sola CPU single-core, è possibile eseguire solo un'istruzione da un solo processo in un determinato momento.Poiché la scala temporale umana è miliardi di volte più lenta di quella dei computer moderni, il sistema operativo può passare rapidamente da un processo all'altro per dare l'aspetto di diversi processi in esecuzione contemporaneamente.

Se si eseguono i due processi su due diverse CPU, i processi sono paralleli: non c'è condivisione nello stesso intervallo di tempo, poiché ogni processo viene eseguito sulla propria CPU. Il parallelismo in questo caso non è virtuale ma fisico. Vale la pena notare che l'esecuzione su core diversi della stessa CPU multi-core non può ancora essere classificata come completamente parallela, poiché i processi condivideranno gli stessi cache della CPU e li contesteranno.

Problemi correlati