Tehnica SPOOLING. Tehnica Time-Sharing.

Tehnica SPOOLING (Simultaneus Peripheral Operations On-Line)

Tehnica SPOOLING reprezintã un mod eficient de exploatare a sistemelor de calcul seriale, bazat pe principiul separãrii operaţiilor de intrare de operaţiile de ieşire şi de restul prelucrãrilor şi pe executarea lor în paralel.
Activitatea de suprapunere a operaţiilor de intrare, prelucrare şi ieşire prin intermediul tehnicii spooling, are ca principal obiectiv imbunătăţirea randamentului sistemului de calcul şi lărgirea gamei de facilităţi oferite utilizatorilor.
Tehnica dispune de următoarele caracteristici:
- disponibilitatea unei memorii externe de capacitate mare şi cu acces direct (discuri magnetice), care asociată cu tehnica multiprogramării permite manipularea unor succesiuni continue de operaţii de intrare, ieşire şi alte prelucrări, ameliorand astfel diferenţa dintre timpul de execuţie al operaţiilor de intrare/ieşire şi timpul de execuţie al operaţiilor de către CPU;
- asigurarea unei încărcări la întreaga capacitate a dispozitivelor periferice de intrare/ieşire;
- esenţialul acestei tehnici constă în organizarea de zone tampon de memorie (buffere) în care
se creează dispozitive periferice de intrare/ieşire virtuale ce permit:
* introducerea de lucrări înainte ca acestea să fie executate;
* redarea rezultatelor la imprimante în timpul execuţiei altor lucrări;
* planificarea execuţiei lucrărilor in ordinea priorităţilor fără a ţine seama de disciplina de introducere a acestora în sistem;
* schimbarea ordinii de execuţie a lucrărilor prin priorităţi asociate.
Organizarea unui sistem spooling este redată în fig. 2.3.

Fig. 2.3. Organizarea unui sistem spooling
P1, P2 se introduc de la tastatură;
P3, P4 aşteaptă încărcarea în memoria internă;
P5, P6, P7, P8 sunt active în memoria internă;
P9, P10 sunt executate şi aşteaptă tipărirea;
P11, P12 se tipăresc.
Executarea lucrãrilor se face în multiprogramare, cu respectarea unor reguli suplimentare:
  • se definesc în memoria externã periferice virtuale corespunzãtoare perifericelor standard I/O utilizate în lucrãrile care se executã;
  • în timpul execuţiei unei lucrãri, dispozitivul standard I/O solicitat este înlocuit, prin redirectare, cu perifericul virtual corespunzãtor; ca urmare, lucrul UCP cu informaţiile de intrare/ieşire este mult mai rapid, pentru cã rata de schimb a informaţiei cu un suport magnetic este mult mai bunã decât în cazul dispozitivelor I/O (care depind de componente mecanice, de factorul uman, etc.);
  • conversia de suport pentru informaţiile de intrare/ieşire între dispozitivele periferice lente şi perifericele virtuale rapide, definite în memoria externã, se poate face:
  • on-line, prin organizarea în sistem a douã partiţii speciale, una pentru operaţiile de intrare şi a doua pentru operaţiile de ieşire;
  • off-line, adicã în afara timpului destinat execuţiei propriu-zise a lucrãrilor, alegând ca variante de lucru:
  • utilizarea unui sistem de calcul mai slab, dedicat operaţiilor de conversie de suport (culegere date de la terminale, editare rapoarte la imprimantã, etc.)
  • utilizarea aceluiaşi sistem de calcul în momente de încãrcare minimã (de exemplu în schimbul de noapte).
Pentru utilizarea tehnicii SPOOLING este nevoie de o memorie externã de capacitate mare, direct adresabilã, unde sã fie organizate perifericele virtuale.
Efectele utilizãrii tehnicii SPOOLING sunt:
  • creşterea randamentului de exploatare a unui sistem serial cu 40-50%, în primul rând prin scãderea timpilor de aşteptare ai UCP
  • creşterea randamentului de utilizare a echipamentelor I/O; acestea sunt utilizate în reprize dar într-o reprizã sunt utilizate la capacitatea maximã.
Exemplu: tehnica SPOOLING se foloseşte sub MS-DOS pentru listãrile la imprimantã, utilizând comanda Print care poate fi executatã în paralel cu alte lucrãri în execuţie, conform tehnicii de exploatare în multiprogramare.


Tehnica Time-Sharing (Sisteme cu timp divizat)

Exploatarea în Time-Sharing (cu "partajarea timpului") porneşte de la un obiectiv asemãnãtor cu exploatarea în multiprogramare: executarea concurentã a proceselor, cu partajarea resurselor sistemului de calcul, de aceastã datã în cazul sistemelor interactive, multiuser.
Tehnica de gestiune a lucrărilor time-sharing este caracterizată de utilizarea concurentă a resurselor unui sistem de calcul de către "n" utilizatori prin intermediul staţiilor de lucru (work stations) plasate local sau la distanţă; elementele globale ce definesc aceste sisteme sunt tehnica divizării timpului şi multiplexarea resurselor intre mai mulţi utilizatori independenţi; termenul de multiplexare semnifică partajarea resurselor sistemului astfel încât se creează mai multe procese, fiecare utilizator avand senzaţia că sistemul îi aparţine integral (practic, se comută sau se multiplexează în timp, de la un utilizator la altul).
În time-sharing CPU este partajată pe bază de cerere, planificarea execuţiei urmărind
obţinerea unui timp de răspuns minim; lucrările nu au priorităţi prestabilite, astfel că acestea trebuie să fie executate intr-o manieră dinamică.
Multiplexarea resurselor între procese necesită existenţa unei componente a programelor de comandă-control capabilă să trateze o largă gamă de întreruperi.
Utilizatorii sunt aleatori, se schimbă în orice moment, lucrează cu programe diferite, se conectează/deconectează la/din sistem independent unii de alţii utilizand perioade de timp diferite pentru execuţia lucrărilor.
Trăsăturile esenţiale ale acestei tehnici constă în:
- protecţia memoriei, prin care programele utilizatorilor trebuie să fie protejate intre ele pentru a nu permite accesul neautorizat, fiecare program fiind limitat la spaţiul său de memorie;
- independenţa utilizatorilor, prin care se stabileşte o cuantă de timp pentru fiecare utilizator;
dacă programul nu s-a terminat in acest interval de timp, este returnat in memoria externă şi plasat  la sfarşitul firului de aşteptare, incărcandu-se alt program in memoria internă, ş.a.m.d.
- alocarea resurselor pentru programele utilizatorilor este efectuată de monitorul rezident în memoria internă (monitor de time-sharing): spaţiu de memorie internă, timp CPU, tratarea cererilor de intrerupere de la terminale, etc.;
Caracteristici hardware solicitate implică:
- memorie internă de capacitate mare şi CPU rapidă pentru asigurarea unui timp minim de răspuns (volum mic de migrări intre memoria internă şi cea externă, respectiv comutarea rapidă între programe);
- ceas de timp real care să genereze intreruperi pentru comutarea CPU de la un program la altul;
- memorie externă cu acces direct in care o soluţie ar fi cuplarea in paralel a memoriei externe la CPU şi terminale, ceea ce implică transferul intre memoria externă şi terminale independent de activitatea CPU;
- sistem de comunicaţie transferul informaţiilor intre CPU şi terminale, linii de comunicaţii, modemuri, concentratoare şi multiplexoare;
- terminale şi CPU adecvate.
Caracteristici software
Caracteristici software sunt realizate in principal de monitorul de time-sharing care gestionează resursele intregului sistem:
- alocarea şi comutarea CPU după timpul alocat pe baza unui algoritm de planificare a execuţiei stabilit astfel incat să se asigure:
- reducerea timpului de răspuns;
- minimizarea timpului necesar comutării intre procese;
- posibilitatea lansării in execuţie a oricărui proces care aşteaptă, lansare ce se execută în funcţie de priorităţi;
- încărcarea echilibrată a sistemului;
- stabilirea locului fiecărui program în firul de aşteptare, în funcţie de prioritate;
- alocarea spaţiului de memorie internă: zona de memorie şi adresa unde se incarcă fiecare program;
- tratarea intreruperilor prin analiza motivului intreruperii care va determină acţiunea ce se intreprinde in continuare;
- gestiunea fişierelor prin care se determină locul unde sunt memorate colecţiile de date, regăsirea lor rapidă, parola de protecţie ş.a..
Modul de lucru al unui sistem time-sharing este redat in fig. 2.4.
Fig. 2.4. Modul de lucru al unui sistem time-sharing
Caracteristic exploatãrii în time-sharing este faptul cã fiecare proces din sistem are alocatã, în mod ciclic, o cuantã de timp, în care dispune de resursele sistemului; la consumarea cuantei respective, un alt proces primeşte controlul pentru o altã cuantã de timp, şamd. Aceastã schemã de execuţie în paralel a proceselor permite unui mare numãr de procese sã fie în sistem, la un moment dat, în diverse stadii ale execuţiei lor. Evenimentul care determinã comutarea între procese nu mai este determinat de proces ci este determinat de consumarea timpului de execuţie afectat procesului.
Segmentul de timp alocat unui proces nu este fix şi poate sã difere de la un proces la altul; el se determinã dupã anumite criterii, cum ar fi: numãrul de procese din sistem, natura lor, etc.
Criteriile de împãrţire a timpului între procese au în vedere:
  • minimizarea timpului necesar comutãrii între procese (o cuantã prea micã de timp pentru execuţie duce la creşterea timpului necesar comutãrii între procese în comparaţie cu timpul de execuţie propriu-zisã a proceselor)
  • minimizarea timpului de execuţie a fiecãrui proces (o cuantã prea mare de timp de execuţie pentru un proces duce la creşterea timpului de aşteptare pentru celelalte procese din sistem). 
Metoda de alocare a resurselor între mai multe procese, prin împãrţirea timpului de alocare în cuante şi alocarea resursei fiecãrui proces câte o cuantã de timp se numeşte multiplexarea resurselor.
Tehnica time-sharing este utilizatã în sisteme interactive, în care importanţa lucrãrilor care se executã în sistem este relativ aceeaşi. În cazul sistemelor multiuser, ea face posibilã conectarea simultanã la sistem a unui mare numãr de utilizatori şi tratarea tuturor cererilor acestora în condiţii asemãnãtoare. Accesul utilizatorilor la sistem se face prin intermediul terminalelor I/O de la care pot trimite comenzi sau lansa în execuţie programe şi la care pot primi mesaje de la siste sau pot extrage rezultatele prelucrãrilor.
Obiectivul principal al exploatãrii în time-sharing este satisfacerea tuturor cererilor utilizatorilor conectaţi la sistem şi reducerea timpului de rãspuns al sistemului.
Consultarea stãrii terminalelor de intrare-ieşire, pentru identificarea unor noi cereri utilizator se face utilizând metoda polling : sunt parcurse circular terminalele conectate la sistemul de calcul şi, prin intermediul unei instrucţiuni de test, este verificatã starea fiecãrui terminal; dacã este identificatã apariţia unei cereri la un terminal, atunci aceasta este tratatã, generându-se un proces. Consultarea stãrii terminalelor este fãcutã în paralel cu executarea proceselor. Terminalele sunt inspectate circular, în aşa fel încât starea fiecãrui terminal este testatã periodic.
Funcţiile pe care le realizeazã un sistem în time-sharing sunt:

  • consultarea stãrii terminalelor prin polling şi lansarea în execuţie a proceselor, în momentul identificãrii unei noi cereri la un terminal;
  • planificarea alocãrii UCP la procesele în execuţie, circular, câte o cuantã de timp pentru fiecare proces; 
  • executarea fiecãrui proces pânã la consumarea cuantei de timp sau pânã la completarea sa (execuţia sa completã), caz în care procesul este distrus şi se activeazã un alt proces în execuţie;
  • alocarea resurselor la fiecare proces prin multiplexarea resurselor;
  • în cazul în care memoria internã devine insuficientã faţã de numãrul de procese care sunt lansate în execuţie, ca urmare a cererilor formulate de la terminale, sistemul poate utiliza tehnica swapping, pentru evacuarea temporarã a unor procese din memoria internã sau poate folosi memoria virtualã;
  • comutarea între procese se face la iniţiativa sistemului de operare, la consumarea cuantei de timp afectate procesului; comutarea între procese se face cu memorarea stãrii procesului întrerupt, pentru a fi posibilã reluarea lui; comutarea între procese poate necesita şi transferuri între memoria internã şi memoria externã, dacã procesul care se activeazã a fost evacuat în memoria externã;
  • este asiguratã protecţia între procesele concurente, în cazul resurselor utilizate de mai multe procese;
  • Necesitãţi hardware pentru sistemele de calcul exploatate în time-sharing:
  • dispozitiv de timp care sã genereze întreruperi la încheierea unei cuante de timp, ca semnal pentru comutarea între procese
  • memorie internã de capacitate mare, pentru a scãdea necesitatea folosirii memoriei externe ca extensie logicã a memoriei interne, reducând necesitatea schimburilor cu memoria externã la comutarea între procese
  • UCP rapidã, pentru scãderea timpului de rãspuns la cererile utilizator şi pentru realizarea unei comutãri rapide între procese.
Exemplu: de sistem în time-sharing este sistemul de operare Unix.