Dacă mai multe programe se găsesc în acelaşi timp în memoria internă şi partajează resursele sistemului de calcul atunci sistemul utilizează tehnica multiprogramării; dacă în multiprogramare se folosesc mai multe procesoare, atunci sistemul utilizează tehnica de gestiune denumită în multiprelucrare. Se poate aprecia că multiprogramarea este un concept software, iar multiprelucrarea un concept hardware.
Un sistem de calcul utilizează tehnica multiprelucrării dacă cel puţin două CPU lucrează în paralel; unităţile centrale de prelucrare pot executa instrucţiunile unui singur program au pot executa instrucţiuni din programe diferite.
Oportunitatea multiprelucrării constă în :
- încărcarea partajată a programelor pentru execuţie, fiecare procesor având acces la firul de aşteptare alcătuit din lucrările solicitate a se executa;
- separarea diverselor funcţii ale sistemului, existand cate un program responsabil pentru fiecare funcţie;
- creşterea fiabilităţii sistemului, pentru care există două posibilităţi:
- duplexarea sistemelor, prin care una sau mai multe componente hardware sunt dublate, una fiind in activitate iar cealaltă va fi activată la apariţia unui defect al primei componente; pe durata funcţionării corecte a procesorului principal, procesorul secundar poate fi folosit pentru alte operaţii;
- sisteme duale, sunt sistemele in care două procesoare centrale prelucrează simultan acelaşi program de aplicaţie, periodic verificandu-se reciproc privind validarea rezultatelor.
Sisteme master/slave
Unul din obiectivele multiprelucrării este de a degreva o CPU, de sarcini specifice ca:
tabelări de date, editări de texte, gesţiunea colecţiilor de date (fişiere, baze de date); pentru a realiza acest deziderat, la o CPU - denumită slave, este cuplată o CPU care este destinată coordonării activităţilor din sistem - denumită master (fig.2.5.).
Master-ul poate să coordoneze toate operaţiile de intrare/ieşire in timp ce slave-ul execută operaţii complexe; in acest caz masterul este referit ca "front-end processor" avand rol de interfaţă intre slave şi dispozitivele periferice de intrare/ieşire.
Fig. 2.5. Front-end processor
Dar masterul se poate utiliza şi ca interfaţă intre slave şi colecţii voluminoase de dateexistente in memoria externă, situaţie in care este referit ca "back-end processor" fiind responsabil de gestiunea colecţiei de date (fig.2.6.)
Fig.2.6. Back-end processor
Prin urmare, in multiprelucrarea sistemelor organizate in varianta master/slave, fiecare CPU fi dedicată unor sarcini specifice sau poate fi utilizată in mod alternativ pentru execuţia unei aceleiaşi sarcini, in vederea furnizării unor răspunsuri mai rapide.
Planificarea execuţiei lucrărilor
În funcţie de gradul de planificare al lucrărilor şi al sistemului de comunicaţie, se disting următoarele clase de sisteme (fig.2.7.):
1) sisteme cu CPU identice care sunt determinate de modul in care CPU partajează memoria:
* memorie unică pentru CPU cuplate in care mai multe CPU partajează o memorie;
* memorie proprie pentru fiecare CPU din sistem.
De remarcat este faptul că se pot include şi variante master/slave.
Fig.2.7.a) memorie unică şi CPU identice
Fig.2.7.b) memorie proprie şi CPU identice
Fig.2.7.c) memorie unică şi CPU master/slave
Fig.2.7.d) memorie unică şi CPU master/slave
Legăturile dintre memoria internă şi CPU se pot realiza in următoarele variante:
- legătură matriceală (cross bar) prin intermediul unui sistem de comunicaţie, cererile neservite fiind plasate intr-un fir de aşteptare gestionat prin hardware sau software;
- legătură prin canale multiple cand procesoarele partajează o cale unica pentru fiecare modul de memorie;
- legătură printr-un singur canal folosit partajat acesta constituind interfaţa dintre toate CPU şi memoria internă.
2) sisteme cu CPU diferite care presupun existenţa unui număr de CPU periferice care lucrează în paralel cu CPU principală; pot fi organizate sub formă de:
- arie de procesoare (processor array) care implică divizarea unui program în activităţi independente ce se pot executa simultan pe CPU existente in configuraţie;
- conductă (pipe) ceea ce permite operarea directă asupra unui şir de vectori (pipeline) elementele şirului fiind reprezentate de CPU;
- puternic conectate, caracterizate de o creştere a volumului de lucrări executate datorită controlului direct exercitat de CPU din configuraţie asupra resurselor;
- slab conectate, care pot partaja: sistemul de comunicaţie, volumele de memorie cu acces direct, programele de servici prin care componenta software dintr-un sistem comunică cu componenta software din alt sistem, pentru cereri de partajare a resurselor; nu există un control asupra resurselor unui procesor exercitat de alt procesor.
Planificarea execuţiei lucrărilor in multiprelucrare depinde de modul de conectare al sistemelor, existand următoarele variante:
1) planificarea in cazul sistemelor diferite se poate realiza:
- manual, fără nici o planificare, doar cu comutarea de la un procesor la altul;
- prin urmărirea incărcării echilibrate a sistemelor, dacă acestea sunt slab conectate şi dispun de CPU proprie;
2) planificarea in cadrul sistemelor master/slave in care toate resursele sunt disponibile tuturor CPU; in acest caz, memoria internă şi dispozitivele periferice de intrare/ieşire sunt alocate la procese nu la CPU, iar CPU sunt asigurate să execute procesele de către modulul de planificare a execuţiei proceselor (sisteme puternic conectate).
În cazul tehnicii de planificare master/slave, o CPU master reţine starea tuturor proceselor din sistem şi planifică activitatea tuturor CPU slave.
3) planificarea in cazul sistemelor omogene. In această situaţie, CPU sunt tratate ca CPU
slave, avand loc o planificare descentralizată; se crează o listă in memoria internă ce conţine numele proceselor şi starea lor, fiind permis oricărei CPU să acceseze această listă.
În momentul intreruperii execuţiei unui proces, CPU căreia i-a fost atribuit merge la lista proceselor şi găseşte procesul pe care il va lansa in execuţie (va folosi acelaşi algoritm de planificare pentru alegerea următorului proces de executat din lista proceselor gata pentru execuţie).