Reti di computer

Materie:Appunti
Categoria:Elettronica

Voto:

2 (2)
Download:170
Data:28.05.2001
Numero di pagine:16
Formato di file:.doc (Microsoft Word)
Download   Anteprima
reti-computer_3.zip (Dimensione: 37.98 Kb)
readme.txt     59 Bytes
trucheck.it_reti-di-computer.doc     110.5 Kb


Testo

Anno scolastico ’00 / ’01

Quaderno di Sistemi

Reti di computer
E’ un’insieme di elaboratori e di periferiche collegati fra loro in modo da poter trasferire le informazioni da un punto a un altro della rete.
I calcolatori vengono sempre più spesso collegati in rete; i motivi sono:

- Desiderio di condividere le informazioni;
- Risparmio, in quanto è possibile utilizzare alcune risorse costose (es. stampanti, scanner, etc).
In relazione alle reti si possono distinguere due casi :
1- la rete, dal punto di vista fisico, come sistema di linee di comunicazione e nodi intermedi che consentono il passaggio dei dati (topologia della rete).
2- la rete, dal punto di vista logico, cioè le modalità di utilizzo di tali linee per realizzare la comunicazione tra gli utenti (architettura della rete).
Questa distinzione è valida per qualunque sistema di comunicazione.
- Le topologie:
Tutti gli elementi che costituiscono una rete di computer possono essere connessi tra loro in molti modi.
Tra quelle che illustreremo non esiste una che sia in assoluto la migliore.
Queste topologie saranno confrontate tra loro in relazione a tre parametri.
1- Costi iniziali: quanto costa connettere tra loro certi elementi (o nodi) ?
2- Costi di comunicazione: quanto si impiega a spedire un messaggio dal nodo A al nodo B?
3- Sicurezza di resistenza ai guasti (Fault Tolleranche): se un nodo o un collegamento subisce un guasto, possono gli altri nodi comunicare tra loro?
- Topologia a stella:
Prevede un nodo centrale al quale sono connessi tutti gli altri nodi. Il costo iniziale è basso (tutti i nodi hanno una sola linea di collegamento al resto della rete).
I costi di comunicazione sono ridotti, infatti il trasferimento dei dati da un nodo all’altro prevede l’attraversamento di due collegamenti e il passaggio obbligato dal nodo centrale. Basso è il livello di sicurezza: se cade un collegamento del centro con un nodo allora questo rimane isolato. Se si verifica un guasto nel nodo centrale, l’intera rete cade e ogni nodo è isolato da tutti gli altri. Il sistema centrale gestisce tutte le risorse.
- Topologia ad anello:
Ogni nodo è fisicamente connesso con gli altri modo da costituire una struttura circolare.
Un anello può essere uni/bi- direzionale; questa topologia ha una funzionalità non molto superiore a quella della stella, infatti il costo iniziale è basso, la sicurezza dei dati rimane inalterata, mentre i costi di comunicazione subiscono un’incremento. La sicurezza dei dati rimane inalterata nel momento in cui il nodo non funzionante viene saltato.
Se non si garantisce questa continuità allora si assiste allo stop del funzionamento della rete.
- Topologia gerarchica:
Questo tipo di topologia ha senso in ambiti aziendali dove è già presente un’organizzazione strettamente gerarchica (Es. : Banche, Uffici di enti che prevedono sedi comunali, provinciali, regionali).
Questo tipo di struttura rende veloce lo scambio di informazioni fra nodi padre-figlio mentre sono lenti collegamenti tra nodi distanti.
- Topologia completamente connessa:
Questo tipo di rete è la più sicura ma è anche la più costosa, ulteriori vantaggi sono nella velocità per la propagazione delle informazioni.
- Topologia a bus:
Prevede un unico canale di comunicazione condiviso (il bus). I dati sono sicuri perché i messaggi che viaggiano lungo la rete non attraversano fisicamente i nodi.
Un’ulteriore distinzione si basa sulle diverse distanze tra gli elementi che compongono la rete.
Si ha:
- LAN (Local Area Network): coinvolge elementi posti nello stesso edificio; il canale di comunicazione non deve calpestare il suolo pubblico;
- MAN (Metropolitan Area Network): impiega la tecnologia delle LAN ma si estende su di un’area più vasta.
- WAN (Wide Area Network): si può estendere su intere nazioni, è più lenta e quasi sempre pubbblica o di proprietà di più organizzazioni.
- GAN (Global Area Network): è una rete che si può estendere su più nazioni e continenti.
Il modello OSI
L’organizzazione internazionale degli standard (ISO: International Standard Organization) ha definito un protocollo in sette livelli (o strati) denominato modello OSI (Open System Interconnection).
1. Livello (o strato) fisico: riguarda la trasmissione di bit lungo il canale di trasmissione: la funzione principale di questo livello è di garantire che i bit spediti vengano ricevuti correttamente dal destinatario. Il livello fisico è ancora molto legato alle caratteristiche fisiche e meccaniche delle linee di comunicazione.
2. Livello (o strato) di linea: provvede ad organizzare i dati in strutture di bit (possibilmente senza errori) chiamate “frame”, che vengono passate al livello di rete che provvederà a prepararle al “viaggio” lungo la rete. Deve quindi identificare, controllare, impacchettare i dati inserendo delle sequenze predefinite di bit di controllo. Regola inoltre i tempi di comunicazione tra il trasmettitore e il ricevitore.
3. Livello (o strato) di rete: conclude il controllo nella sottorete di comunicazione. La funzione fondamentale è la determinazione del modo in cui i frame vengono instradati dalla sorgente verso il destinatario; ciò dipende dalla topologia della rete (a stella, a bus, etc.); ad esempio, una rete a stella non avrà problemi di instradamento come invece può avere una rete a bus.
4. Livello (o strato) di trasporto: provvede al trasferimento dei messaggi lungo la rete facendo in modo che gli utenti non debbano essere a conoscenza della sua struttura; questo livello deve stabilire e sciogliere le connessioni che definiscono il percorso nella rete che va da sorgente a destinatario.
5. Livello (o strato) di sessione: è il quinto livello del modello OSI; assicura che sistemi diversi possano stabilire tra loro una sessione completa di dialogo, organizzando e sincronizzando lo scambio di messaggi di dati o segnalazioni varie. A questo livello si dovrà controllare se il dialogo può avvenire contemporaneamente o alternativamente in entrambe le direzioni, oppure se è strettamente unidirezionale.
6. Livello (o strato) di presentazione: il livello di presentazione riguarda la sintassi e la semantica delle informazioni trasmesse; finalmente in questo livello si comincia ad analizzare il significato del messaggio che è stato generato e impacchettato dal dispositivo sorgente; per questo, si devono riconoscere e interpretare sia i caratteri di controllo, sia i metodi stessi di conversione dei dati, oppure si devono interpretare i dati se sono in forma crittografata o complessa.
7. Livello (o strato) di applicazione: questo livello è incaricato di fornire i servizi direttamente agli utenti; una delle funzioni di questo livello riguarda anche il trasferimento dei file; anche in questo caso si tratta di definire delle procedure di conversione in modo che questi dati, organizzati e gestiti in modo diverso, siano utilizzabili da tutti gli utenti abilitati nella rete.
Internet
La parola Internet nasce dalla fusione dei termini:
INTERconnect NETwork
Negli anni ’60 gli stati uniti si posero il problema di come garantire la comunicazione fra le varie basi militari, stati e città, in caso di attacco nucleare.
La soluzione sembrò quella di una rete telematica; comunque la rete protetta e difesa, non avrebbe retto a un’esplosione nucleare.
Dopo qualche tempo l’ARPA (Advaced Resarch Projects Agency) del Pentagono decise di varare un grande progetto basato sulla intuizione della mand.
Nel 1969 naque ARPANET, con 4 nodi collegati. Nel 1971 i nodi divennero 15, nel 1972 il loro numero diventò 37.
Col passare del tempo, ci si rese conto che la rete non era “proteggibile”. Si abbandonò il sogno militare e la possibilità di collegare i computer in rete, divenne un’opportunità per tutti gli utenti.
Tra il ’70 e ’80 molti gruppi sociali e molte organizzazioni iniziarono a collegare i propri computer alla rete. Internet venne utilizzato per scopi commerciali.
Internet comincia a delinearsi come una rete di reti. Nel 1984 la National Science Foundation contribuì a migliorare le connessioni.
- IL WWW
Il Web è un sistema ipertestuale sviluppato per potere diffondere le informazioni presenti su Internet.
Il WWW fu sviluppato nel 1989 da un gruppo del CERN (Consiglio Europeo per la Ricerca Nucleare) di Ginevra, guidato da Tim Berners Lee.
L’idea era di distribuire le informazioni con un’interfaccia utente che fosse “amichevole” (“user friendly”).
Il progetto del CERN prevedeva:
• Un unico formato standard di documento, in forma ipertestuale realizzato con un nuovo linguaggio HTML (Hyper Text Markup Language);
• Un metodo per identificare i documenti in modo universale: URL (Uniform Resource Locator);
• Un nuovo protocollo di trasmissione delle informazioni chiamato HTTP (Hyper Text Transfer Protocol).
Un ipertesto è formato da parti di testo, di figure, di grafici; se aggiungiamo anche i suoni, i filmati e le animazioni allora un Ipertesto diventa un Ipermedia.
Attualmente grazie al linguaggio Java, anche le pagine visibili su Internet sono Ipermediali.
- COME SI ACCEDE A INTERNET
E’ necessario:
• Possedere un computer dotato di modem ( Vel. Consigliata: 33600 bps);
• Rivolgersi a un fornitore di servizio Internet (chiamato “Internet Provider”);
I servizi in genere offerti sono:
• Possibilità di collegarsi a computer esistenti nella rete e operare come se si fosse un terminale remoto di quest’ultimo (funzione TELNET);
• Viaggiare nello spazio virtuale seguendo una serie di collegamenti ipertestuali (funzione WWW o Link);
• Raggiungere altri computer senza neanche conoscerne l’indirizzo, tramite menù presentati a video (funzione Ghoper);
• Trasferire da appositi computer a ciò predisposti: programmi, grafici, manuali, giornali in formato elettronico, dati statistici, etc. (funzione FTP);
• Inviare e ricevere messaggi tramite una casella di posta elettronica;
• Cercare l’indirizzo su siti che contengono informazioni che ci interessano (funzioni Archie e Wois);
• Iscriversi a “club virtuali” di utenti, finalizzati alla discussione degli argomenti più disparati (funzione Usenet e Mailing list);
• “chiaccherare” in tempo reale con altri utenti collegati in quel momento, in qualsiasi parte del mondo essi siano (funzione IRC);
- I MOTORI DI RICERCA
I motori di ricerca sono delle applicazioni che aiutano la ricerca delle informazioni su Internet.
Si tratta di grandi archivi che raccolgono il collegamento a milioni di pagine Web, tramite indici di parole e frasi associate ai rispettivi URL.
Perchè interrogare un motore di ricerca:
• Per sapere cosa c’è sulla rete;
• Per cercare un’argomento specifico, attraverso parole chiave; in genere si usa inserire la parola cercata tra doppi apici.
Ad esempio, per ricavare le pagine dove appare il nome Paolo Rossi, si inserisce nella casella Search: “Paolo Rossi”.
Introduzione alla teoria dei sistemi operativi
Il sistema operativo è il gestore delle risorse del calcolatore, cioè il software di base che serve all’utente per lavorare con l’hardware.
Le risorse si possono suddividere in 4 gruppi:
• Memoria centrale
• Processore (o CPU)
• Dispositivi di I/O
• Memoria di massa
Le funzioni fondamentali del sistema operativo sono le seguenti:
1. Prendere traccia della classe di risorse di cui è responsabile (cioè conoscere il loro stato); il modulo gestore dovrà sapere in qualunque momento cosa stanno facendo le risorse: ad esempio, se la risorsa è un disco, dovrà sapere chi vi sta lavorando, se vi sono operazioni di lettura o scrittura, etc..
2. Determinare la politica di allocazione della risorsa, in modo da determinare chi prenderà, cosa, quando, per quanto tempo.
3. Allocare fisicamente la risorsa, secondo la strategia prescelta (qui si ha la reale assegnazione della risorsa).
4. Deallocare la risorsa, sempre secondo la strategia prescelta (ossia rilasciarla).
Una prima classificazione dei sistemi operativi è la seguente:
• Sistemi operativi Monoprogrammati (ad esempio, MS-DOS);
• Sistemi operativi Multiprogrammati (ad esempio, UNIX, XENIX, LINUX);
• Sistemi operativi Distribuiti
- Sistemi operativi Monoprogrammati:
Gestiscono sistemi di elaborazione nei quali è possibile eseguire una sola operazione per volta, quindi, tutte le risorse del sistema sono constantemente dedicati ad esso.
Vantaggi: è un sistema operativo molto semplice.
Svantaggi: le risorse a disposizione del sistema sono utilizzate in modo poco efficiente, con lunghi tempi di inattività.
- Sistemi operativi Multiprogrammati:
Gestiscono sistemi di elaborazione in grado di far “eseguire” più programmi contemporaneamente; nel dettaglio, o un utente manda in esecuzione più programmi, oppure più utenti lavorano contemporaneamente accedendo alla CPU.
Vantaggi: le risorse del sistema sono utilizzate in modo efficiente, con brevi tempi di inattività;
Svantaggi: sistema operativo molto complesso.
- Sistemi operativi Distribuiti:
Lavorano su sistemi di elaborazione nei quali le risorse non sono direttamente connesse ad un unico grande calcolatore responsabile di ogni operazione, e propietario di tutti i dispositivi; sono previsti centri di elaborazione in grado di lavorare singolarmente ma anche connessi tra loro, in modo che le risorse delle singole unità siano disponibili anche per tutte le altre postazioni di lavoro.
Vantaggi: le risorse a disposizione del sistema sono condivise e quindi utilizzate in modo efficiente, con brevi tempi di inattività.
Svantaggi: sistema operativo complesso.
I sistemi operativi possono essere anche classificati secondo la visibilità dell’utente, ossia relativamente al tipo di utilizzo che l’utente può fare.
Si hanno:
• Sistemi operativi Batch;
• Sistemi operativi Time-Sharing;
• Sistemi operativi Real-time;
• Sistemi operativi di Teleprocessing;
• Sistemi operativi Dedicati;
Nei Sistemi operativi Batch l’utente deposita il suo programma in ingresso al sistema, il quale, senza l’interazione dell’uomo, provvederà al movimento opportuno all’esecuzione fino alla produzione dei risultati finali del suo lavoro.
Vantaggi: viene privilegiato un’uso efficiente delle risorse.
Svantaggi: scomodità per l’utente.
I Sistemi operativi Time-Sharing presuppongono un sistema multiprogrammato; il sistema decide di dedicare tempi prefissati ed uguali per tutti (time-slice) per l’utilizzo dei processori.
Vantaggi: l’utente ha l’impressione di avere a disposizione l’intero sistema.
Svantaggi: complessità di gestione.
Fig. 1
Il dispositivo che permette la selezione è chiamato Multiplexer.
Fig. 2
I Sistemi operativi Real-time prevedono un dialogo continuo tra l’utente e il sistema, in tempi brevi (ad esempio agli sportelli bancari o alla prenotazione dei voli).
Vantaggi: velocità di colloquio con il sistema.
Svantaggi: complessità di gestione.
I Sistemi operativi di teleprocessing possono rientrare in una delle precedenti classificazioni. La differenza sta nel fatto che la comunicazione avviene a distanza.
Vantaggi: possibile lontananza tra le risorse del sistema.
Svantaggi: complessità di gestione.
I Sistemi operativi Dedicati fanno riferimento a sistemi che presuppongono operazioni ripetitive ma importanti. (ad es.: il controllo di processi industriali).
Vantaggi: risolvere velocemente le operazioni.
Svantaggi: “Rigidità” nelle modifiche.
- Un po’ di definizioni:
Job: si definisce Job una singola richiesta elementare di utilizzo di una risorsa presente all’interno del programma in via d’esecuzione.
Processo: si definisce processo l’esecuzione di un Job; in modo più rigoroso, il processo è il Job associato alla risorsa che ha richiesto.
Processore: si definisce processore quel dispositivo che consente l’evoluzione ed il completamento di un processo.
In generale, per processore si intende la CPU (ma nel caso dei sistemi operativi il termine è più ampio; infatti,. È definito come una macchina virtuale necessaria al processo per evolvere nel tempo).
Struttura gerarchica di un sistema operativo
Il sistema operativo è una complessa struttura software organizzata in moduli che realizzano i livelli di macchina virtuale.
Il modello che ci accingiamo a descrivere è quello più usato e prende il nome di schema a strati o schema a “cipolla”.
Fig. 3
Analizzando lo schema si ha:
- il livello 0 si riferisce all’hardware della macchina stessa ed è l’unico livello fisico.
- Dal livello 1 al 4 si trovano i singoli moduli di gestione rispettivamente delle risorse: processore, memoria centrale, periferiche, memoria di massa.
- Al livello 5 sono situati i programmi di supporto per il sistema; questo modulo non è necessario per il sistema, tuttavia, può contenere prodotti applicativi per l’utente.
- Il livello 6 contiene il modulo che fornisce il linguaggio di dialogo tra gli utenti ed il sistema operativo; una chiamata espressa nel linguaggio di comando viene tradotto in una chiamata ad un qualsiasi modulo del sistema operativo.
- Approfondimenti
In relazione allo schema a “cipolla” dei sistemi operativi è necessario elencare le 4 funzioni fondamentali.
Nucleo:
1. conoscere lo stato del processore e dei programmi in attesa (prog.: Traffic Controller).
2. decidere chi potrà utilizzare il processore; il programma chiamato Job Scheduler si occupa di questa scelta, mentre il programma, in caso di multiprogrammazione, che detta le condizioni sul tempo e il modo di assegnazione si chiama Process Scheduler.
3. Allocare la risorsa secondo le indicazioni definite in precedenza.
4. Rilasciare il processore secondo le indicazioni fornite al punto 2.
Gestione della memoria centrale:
1. Conoscere lo stato della memoria; quali locazioni sono in uso, da parte di chi e quali sono libere.
2. In caso di Multiprogrammazione decidere chi dovrà avere nello spazio di memoria centrale, quanto e quando.
3. Allocare la memoria secondo i criteri del punto 2.
4. Rilasciare la memoria quando non serve più.
Gestione dell’ I/O:
1. Conoscere lo stato delle periferiche; il programma che si occupa di questo si chiama I/O traffic controller.
2. Decidere le modalità di assegnazione delle periferiche ai programmi; il programma chiamato I/O scheduler si occupa di questa scelta.
3. Allocare la risorsa e dare inizio alle operazioni di I/O.
4. Rilasciare la periferica. Nella maggior parte dei casi l’operazione termina naturalmente.
Gestione della memoria di Massa:
1. Conoscere lo stato dei dispositivi di memoria di massa, il loro uso, il loro modo di accesso, etc. Tutto è complessivamente a carico del File System.
2. Decidere chi potrà accedere alle risorse secondo permessi di utilizzo.
3. Allocare la risorsa; per es. aprire un file.
4. Rilasciare la risorsa; per es. chiudere un file.
Programmi di utilità:
1. Conoscere lo stato, l’organizzazione, il modo d’uso e d’accesso dei programmi di utilità disponibili nel sistema (es. Date, Time).
2. Decidere chi potrà utilizzare l’utility secondo le caratteristiche specifiche.
3. Allocare la funzione utility; per esempio lanciare o richiamere il software relativo.
4. Rilasciare la risorsa; per esempio chiudere la funzione.
Interprete comandi:
1. Conoscere lo stato dei moduli dei sistema esistenti e disponibili per la chiamata dell’utente.
2. Decidere le tecniche di chiamata delle funzionalità del sistema
3. Esaudire la chiamata.
4. Rilasciare la risorsa.
Processi
Il processo può essere inteso come un programma in fase di elaborazione (esecuzione).
La prossimo figura illustra il ciclo di vita di un processo. Gli ovali rappresentano gli stati che il processo assume; mentre le frecce rappresentano le transizioni (ossia i passaggi da uno stato all'altro).
1)

Quando un programma viene mandato in esecuzione, risiede nello stato di Lancio nel quale il sistema operativo si occupa di verificare la sua possibilità di esecuzione.
In sostanza vengono richiamati tutti i livelli di gestione per verificare che siano presenti nel sistema tutte le risorse di cui il programma avrà bisogno: per esempio una sufficiente quantità di memoria centrale, dei disositivi di I/O, etc.
Se la configurazione del sistema non è idonea, il programma si fermerà qui ed il sistema invierà un opportuno messaggio all'utente.
In caso contrario una parte del programma che si chiama job proseguirà nel suo cammino: il gestore della memoria si preparerà si preparerà per il caricamento in memoria del job.
La transizione indicata con (1) porta il job nello stato di Acquisizione nel quale vengono analizzate tutte le singole richieste del job; ogni richiesta di utilizzo di una risorsa viene inserita in una coda di attesa ed il programma viene caricato in memoria per essere eseguito.
La transizione indicata con 2) permette il passaggio nello stato di Attesa.
Il job scheduler controllerà le richieste del singolo job e, quando saranno esaudite tutte tranne quella relativa alla CPU, avverrà il passaggio (tramite la transizione (3) ) nello stato di Pronto ed il sistema operativo creerà un Processo (job + risorsa richiesta).
Nello stato di Pronto è presente un'altra coda di richieste (gestita dal process scheduler) che contiene tutti i processi in attesa di appropriarsi del processore.
Il processo quando è in cima alla lista d'attesa passa nello stato di Esecuzione (con la transizione 4) nel quale può lavorare col processore secondo le modalità definite dal gestore del processore.
A questo punto possono verificarsi alcune eventualità:
1) il processo ha finito il suo lavoro col processore prima dello scadere dell'intervallo di tempo a sua disposizione. In questo caso il processo ha terminato e passa (attraverso la transizione (7)) nello stato di Terminazione rilasciando tutte le risorse che erano in suo possesso;
2) Il processo non ha terminato il suo lavoro allo scadere del'intervallo a sua disposizione. Il processo deve rilasciare il processore, tuttavia ne ha ancora bisogno, quindi (tramite la transizione (5)) rientra nella coda per l'uso del processore nello stato di Pronto;
3) Il processo deve bloccare temporaneamente il lavoro col processore perché ha bisogno, per poter continuare di eventi particolari (ad esempio letture o operazioni di I/O). In questo caso il processo rilascia il processore e (tramite la transizione (6)) passa nello stato di Attesa nel quale resta "congelato" fino a che il modulo I/O traffic controller non gli consentirà riprendere il lavoro facendolo passare nello stato di Pronto tramite la transizione (3).
In definitiva il ciclo di vita di un processo prevede tre code di attesa negli stati di Acquisizione, Pronto e Attesa. Il processo, una volta creato, continuerà a transitare per i tre stati Pronto - Esecuzione - Attesa fino al termine del lavoro.
Processi e risorse
I processi si possono classificare in relazione a come utilizzeranno le proprie risorse ; è valida questa classificazione :
a) Processi sequenziali : un processo si dice sequenziale quando i job vengono eseguiti nello stesso ordine in cui si trovano nel programma originario e le risorse vengono utilizzate secondo l’ordine di richiesta del programma.
b) Processi non sequenziali : un processo si dice non sequenziale quando i job non vengono eseguiti nell’ordine in cui sono indicati, ma vengono salvaguardate alcune condizioni che garantiscono la correttezza dei risultati.
In questo caso si deve tener conto di una rappresentazione che è chiamata diagramma delle precedenze, che indica la precedenza che si deve tenere fra i job del processo.
Li => i job effettuano un’operazione di lettura
Ei => I job effettuano un’operazione aritmetica sui dati
Si => I job effettuano un’operazione di scrittura in memoria
Una tecnica che permette l’esecuzione di processi non sequenziali è chiamata Programmazione parallela, che può essere realizzata attraverso 3 construtti linguistici :
a) Coroutine
b) Fork / Join
c) Cobegin / Coend
a) La Coroutine va indicata nei processi che vanno eseguiti in parallelo ; attraverso l’istruzione RESUME, vi è il passaggio di controllo da una coroutine ad un’altra, ma la differenza rispetto a una procedura normale, in questo caso, non c’è l’obbligo al ritorno alla procedura normale.
Questo costrutto non realizza una vera e propria programmazione parallela, ma una esecuzione alternata fra più processi, fornendo l’illusione di una programmazione parallela.
b) Il costrutto Fork / Join realizza un’esecuzione parallela dei processi ; l’istruzione Fork comporta l’attivazione del processo indicato in modo parallelo rispetto a quello chiamante ; l’esecuzione torna ad essere sequenziale quando il processo chiamante incontra un’istruzione Join ; a questo punto se il processo chiamato è terminato l’esecuzione torna ad essere sequenziale.
c) Il costrutto Cobegin / Coend permette l’esecuzione parallela di singole istruzioni ; rispetto al costrutto precedente vi è una notevole differenza, in quanto, in questo caso, si parla di parallelizzare singole istruzioni all’interno di un unico processo e non più di esecuzioni contemporanee di processi distinti.
Un problema molto importante è quello della sincronizzazione, che permette un’interazione corretta fra più processi.
In questo ambito diventa molto importante il concetto di Programmazione Concorrente.
Molti testi non fanno differenza fra programmazione parallela e programmazione concorrente ; il problema della programmazione concorrente riguarda processi che si trovano a competere (o concorrere) per la proprietà di una stessa risorsa.
Quindi i programmi concorrenti sono quei processi che richiedono la stessa risorse nello stesso istante.
Nei processi concorrenti esistono 3 tipi diversi di relazione :
a) Cooperazione
b) Competizione
c) Interferenza
a) due processi si dicono in cooperazione se sono legati logicamente tra loro ; per es. uno dei due ha bisogno, per evolvere, dei dati dell’altro ; il caso classico è quello della relazione produttore-consumatore.
b) Due processi sono in competizione se sono indipendenti dal punto di vista logico, tuttavia la scarsità di risorse genera una dipendenza reciproca durante il lavoro. Siamo nel caso di due processi che hanno in comune solo la necessità di lavorare con una determinata risorsa.
c) È una degenerazione della competizione ; in questo caso i processi devono prendere le risorse solo in tempi ben precisi. In questo caso ci sono problemi anche di sincronizzazione.

Esempio



  


  1. Ally

    Your cranium must be protecting some very vaaluble brains.