În sistemele de operarea exita patru tipuri de pagini:
-pagini de tip nucleu : se caracterizează pein faptul că nu vor mai fi mutate din memorie niciodată din moment ce s-a efectuat încărcarea sistemului de operare.Efectiv,reprezintă conținutul nucleului.
-pagini de rezervă : este necesar să se scrie în afara hardului atunci când se schimbă în memorie, deoarece trebuie să aibă loc sincronizarea acestor schimbări . Aceste pagini rețin pe disk tot ceea ce conțin fișierele;
-pagini de program : lucrează cu prgramele și librăriile, ale căror conținut le memorează. Sunt de formă read-only,deci nu va fi necesar să se aducă modifiari în ceea ce le privește.
-pagini anonime : nu stochează nimic pe disk . Se utilizează în momentul în care este nevoie de înregistrarea unor informații.
IV. Memoria cache (Olteanu Alexandru)
Memoria cache este definită ca fiind o memorie specializată care se folosește pentru a micșora timpul de acces la datele din memoria principală. Aceasta se află între memoria principală și procesor. Din punct de vedere al construcției, memoria cache este mult mai rapidă ca memoria principală.
Memoria cache se bucură de un timp de acces extrem de mic la informația din memoria internă. Memoria cache are o capacitate mică însă o viteză mare. Aceasta este construită din circuite ȘRAM și are aventajul adăugării unor cipuri de memorie. Acest tip de memorie se bazează pe următoarele principii:
-Instrucțiunile programului se află situate una lângă alta.
-Se poate folosi un bloc de memorie de multe ori.
Acestea fiind zise, în memoria cache se află copii de informații și date care sunt și în memoria principală. Prima oară căutarea se face în memoria cache, atunci când se caută o anumită informație, iar după aceea se trece cu căutarea în memoria principală.
Primul pas îl reprezintă încărcarea datelor din memoria principla în memoria cache. După aceea, acestea pot fi accesate într-un mod rapid în memoria cache de procesor.
Un avantaj al memorie cache îl constituie creșterea vitezei de operare, plecând de la presupunerea că nicio informație nu va fi accesată decât o singură data ci de mai multe ori, lucru adevărat mai ales pentru buclele de program. Majoritatea sistemelor care conțin microprocesoare sunt înzestrate cu memorii cache interne, numite on-chip și memorii cache externe. Putem aminti aici și sistemele care au cache-uri separate în cazul instrucțiunilor și datelor și de asemenea sistemele cu cahe-uri unificate care pot fi folosite și pentru instrucțiuni și pentru date.
La început memoriile cache aveau o dimensiune mică. De exemplu, Motorola 68040 este un sistem cu cache-uri separate care este folosit pentru date de dimensiuni de 4 Kbyte și pentru instrucțiuni de dimensiuni de 4 Kbyte. Tot ca exemplu putem consideră Intel 486 care este un sistem cu cache unificat de dimensiune 8 Kbyte. Un alt exemplu este Pentium care are sistem cu cache-uri separate de dimensiune 8 Kbyte.
În prezent, se dorește implementarea de cache-uri separate de dimensiuni tot mai mari. Ba mai mult se dorește chiar implementarea unor cache-uri care să fie pe 2 nivele: un nivel de capacitate mică, însă cu o viteză mare și un alt nivel cu o capcaitate mare, daro viteză mică.Pentru că implementarea memoriei cache să nu fie în zadar, aceasta trebuie să aibă o viteză de operare mult mai mare decât memoria principală.
Memoria cache pe cip
Acești nivel reprezintă de fapt nivelul 1 de memorie și se caracterizează prin faptul că este mult mai lent decât registrele și nu are nevoie de anumite circuite de iterfata. Însă, memoria cache pe cip, comparativ cu memoria externă este mai rapidă. Aici, la nivelul acesta, există diferență vizibilă între informații de gestiune,cod și date.
În ceea ce privește organizarea memorie cache pe chip, se poate spune că este o stiva de tip FIFO, unde vârful acestei stive este reprezentat de registrul unei instrucțiuni.
Trebuie menționat faptul că memoria cache pe chip este destinată programelor și că organizarea să rezultă în urmă extragerii liniare a instrucțiunilor, de aceea este posibil ca următoarea extragere a cuvântului de cod să se afle chiar la următoarea adresă. Această liniaritate poate fi deranjată datorită instrucțiunilor de salt, al căror traseu se face prin spațiul de adresare și astfel are loc vidarea stivei.
Avantajul memoriei cache pe chip va fi diminuat pentru o perioadă mică de timp atunci când are loc încărcarea unor noi cuvinte de cod aduse din memoria externă. Exacutia în unitatea centrală de prelucrare a instrucțiunilor durează ceva timp, iar stiva FIFO este umplută de către unitatea de gestiune într-un mod mult mai rapid decât vidarea efectuată de unitatea centrală de prelucare, care, după cum am spus mai sus, are rolul de a extrage instrucțiunile. Așadar, după ce se excuta un salt, va avea loc refacerea șirului de așteptare.
Din diferite motive se poate genera o neînțelegere între unitatea de gestiune reprezentate de stiva First În First Out și unitatea centrală de prelucrare. Această neînțelegere apare mai exact din cauza faptului că unitatea centrală de prelucrare este nevoită să facă un ciclu de citire sau un ciclu de scriere a memoriei, în timp ce unitatea de gestiune trebuie să facă un ciclu de citire, în scopul completării șirului de instrucțiuni, de unde se poate trage concluzia că prioritatea îi aparține ciclului care realizează prelucrarea de date. Memoria cache pe chip se poate folosi și în memorarea informațiilor care au o frecventa mare de utilizare.
Organizarea memoriei cache pe circuit poate fi asemănată cu organizarea memoriei cu un acces aleator, care se compune dintr-o parte de etichetă, numită tag și dintr-o parte de date.
Memoria tag este alcătuită dintr-o informație care îi corespunde adresei din unitatea centrală de prelucrare, care la rândul ei se folosește pentru a obține acces la unele date.
Memoria dată este alcătuită, bineînțeles din valorile unor date.
Deși până acum am prezentat unele beneficii și avantaje în utilizarea memoriei cache pe chip, trebuie să menționez că există și o serie de probleme din punct de vedere arhitectural atunci când se realizează implementarea acestei memorii:
- Dimenisunea mare a memoriei tag în comparație cu dimensiunea memorie data. Deci, are loc în consum mare al ariei de Și în ceea ce privește gestiunea.
S-a constatat că implementarea memoriei cache pe chip duce la creșterea viteze
pentru efectuarea transferului ce are loc prin barieră circuitului, când de fapt viteză ar fi trebuit să descrească.
Acest tip de memorie funcționează după principiul Least recently used, însă nu putem spune că tot ce ține de comandă memorie cache pe chip poate fi controlat printr-un anumit program.
2. Memoria cache pe placă
Realizarea de memorii cache pe CPU are aceleași avantaje că cele pe circuit. Acestea sunt:
-
întârzierea datorată circuitellor de interfațare, transmisia și regimurile tranzitorii ale informațiilor pe magistrală sistemului cer introducerea unei stări de așteptare ,în special pentru microprocesoarele foarte rapide
-
memoria cache pe aceeași placă facilitează obținerea tîmpilor de acces la sistemul de memoriedar la un preț apropiat de cel al memoriei mai mari și mai lente dar apropiați de cei oferiți de memoria cache de mare viteză
La sistemele multiprocesor există un motiv în plus de introducere a memoriei cache, concurență între diferitele CPU pentru accesarea memorieiduce la întârzieri ,de aici și creșterea timpului mediu de acces la memorie.
3. Elemente de bază în gestiunea memoriei
3.1 Monoprogramarea fără utilizarea de paginare sau swap
Această tehnică rară se mai utilizează în stațiile curente, dar mai sunt șanse să o găsim în unități de calcul portabile sau în unele sisteme dedicate dar și printre primele stații apărute,deși și acolo tehnicile de implementare sunt diferite de la caz la caz.
Sistemul de operare la baza memoriei RAM se găsea la primele mainframeur, restul atribuindu-se memoriei de program iar primele pc-uri apărute erau dotate cu o memorie ROM deducata pentru drivere și BIOS (basic input/output system), care a fost prima dată introdus de IBM,fiid una dintre puținele soluții de la acea dată care cerea un nivel de abstractizare independent de sistemul de operare dar care avea avantajul de a fi suficient de bine documentat. Acesta ajută sistemul cu o serie de funcții de bază, punea la dispoziție opțiuni de configurare dar și realiză pașii necesari încărcării sist. de operare în memoria RAM.
Memoria ROM a fost înlocuită cu memoria EEPROM (flash-ROM) în zilele noastre din cauza necesității de flexibitate dar și a programării ce lasă de dorit, aceasta din urmă fiind mai ușor de actualizat.
Un sistem îndelung utilizat la palmtopuri dar și în unitățile de calcul embeded este păstrarea sistemului de operare într-o unitate ROM separată de memoria RAM de program. Șist. de operare care era la început a încrustat: nu putea fi înlocuit decât prin înlocuirea efectivă, fizică a memoriei ROM. În zilele noastre, datorită evoluției memoriilor non-volatile configurabile, așa zisele flash-ROM uri, este posibilă, fără înlocuirea fizică a ROM-ului, actualizarea conținutului existent în acesta.
Pentru acestu lucru există două tehnici de bază la palmtopuri. Prima se bazează pe ashadowing” și necesită stocarea componentelor actualizabile din memoria Rom în zona memoriei RAM. Problemele asociate acestei metode sunt legate de componentele respective care ocupă RAM ul respectiv în primul rând, unele dintre acestea fiind câteodată prea mari pentru a încăpea, iar ce-a de-a 2-a problemă este că dacă unitatea ar fi , la un moment dat, pornită la rece, aceste actualizări s-ar pierde. Ce-a de-a 2-a tehnică necesită rescrierea întregii pagini, utilizând bootstrap-ul. . Această metodă comandă unitatii portabile să încarce doar anute compenente în memoria ROM când acesta este pornit, indiferent dacă este la cald sau la rece. Problema care însoțește această tehnică este aceea că cele mai multe dintre sisteme au un spațiu limitat de memoria și nu au capacitatea de a stoca întreaga imagine în timpul rescrierii .
Doar un singur program poate fi procesat într-un anumit moment de timp de către unitatea de calcul, copiind programul de pe unitățile de stocare în memorie după care îl execută până la final, după care procesarea se oprește și se așteaptă următoarea comandă de către unitatea de calcul. La venirea comenzii, această se încarcă în memorie, îl suprascrie pe primul și îl execută.
Acest modul nu mai este folosit în zilele noastre decât pe anumite unități embeded, deoarece costul acestora de producție este mai redus dar și din lipsa cerinței pentru aplicația respectivă a unui nivl superior de gestionare.
3.2 Multiprogramarea cu partiții fixe
Cerințele din zilele noastre a dus la creerea unor noi tehnici ce pot rula mai multe procese simultan. Prelucrarea continuă a procesorului în acest caz reprezintă un avantaj clar, acesta putând începe executarea unui program în timp ce altul așteaptă terminarea procedurilor de I/O, acest lucru ducând la o creștere a eficienței sistemelor de calcul față de sistemele clasice de rulare a fiecărui program pe rând. Această tehnică a fost utilizată de la bun început în serverele de rețea pentru a executa procese diferite pentru clienți diferiți simultan, în zilele noastre chiar și unitățile client având această capabilitate, monoprogramarea dispărând total din zona aceasta.
Permiterea existenței simultane a mai multor programe care se execută concomitent în memoria internă este tehnică d eexploatare a sistemelor numită multiprogramare. Această execuție simultană în părți fixe se face cu condiția ca acestea din urmă să nu utilizeze , la un moment de timp, același moment de timp, aceiași resursa a sistemului. Această execuție din multiprogramare se face pe loturi, fiecare dintre aceastea având fixată o partiție fixă di memoria internă(partitie= zonă continuă de lungie și adresă fixă din memorie).
Lucrările sunt executate pe secvențe înăuntrul fioecarui lot, după care sunt lansate automat în execuție. Unitatea de prelucrare face comutatia de l ao partiție la alta, controlată de sistemul de operare, și realizaeaza execuția multiplă a proceselor, comutarea se face atunci când unitatea nu este utilizată în acel moment de timp, iar în urmă unor evenimente interne proceselor de execuție se face și comutarea. Pentru fiecare partiție în parte există o prioritate de execitie după care se alocă și resursele sistemului de calcul, dar și în funcție de disponibilitatea acestora. Atunci când este cerută o resursă care nu este disponibilă la momentul respectiv, procesul este băgat în așteptare până când resursa în cauză se eliberează. Alocarea resurselor se face în funcție de prioritatea de partiție( atunci când mai multe procese o solicită) . De asemenea, semnalarea apariției unui eveniment care poate cauza comutări între procese este dată de un sistem de întreruperi ale sustemului de calcul.
Dimensiunea partițiilor fiind limtata de dim. totală a memoriei aduce la aparotia unei probleme în sensul ordinii organziarii loturillor pentru accesul programelor la partiții. Memoria totală poate fi împărțită în patri inegale pentru stocarea programelor. unul dntre algoritmii folosiți este cel în care programul este așezat la coadă pentru cea mai mică partiție ce poate fi conținută. Problema aici este pentru aplicațiile mici care așteaptă loturi multiple pentru a intra în partiția corespunzătoare ei, deși deja există spațiu suficient într-o partiție mai mare pentru ea.
O altă metodă constă în organizarea pe rând a proceselor, pentru ca acestea să fie stocate în prima partiție suficient de mare care devine disponibilă. Dezavantajul aici este dat de sarcinile mici care intră în partiții mari, iar spațiul neutilizat nu mai poate fi folosit, ceea ce nu este eficient din punctul de vedere al organizării memoriei. O îmbunătățire ar consta în căutarea întregii liste de intrare pentru o partiție care devine liberă să aleagă cea mai mare în care încape, dar aici exista posibilitatea ca cele mai mici să nu mai aibă timpul necesar să între.
3.3 Modelarea Multiprogramarii
Avantajul multiprogramarii constă în utilizarea crescută a procesorului. De exemplu dacă media de execute a unui proces este de doar 20% față de timpul total pe care acesta îl petrece în memorie, la 5 procese simultane care se alfa în memorie, procesorul este utilizat permanent. Datorită faptului că presupunem că cele 5 procese nu vor aștepta deloc aceeași interfara de i/o, rezultă că această metodă este nerealistă.
O îmbunătățire poate fi atunci când privim utilizarea procesorului din pct de vedere probabilistic. Dacă presupunem că un anumit proces utilizează o parte p din timp în care așteaptă executarea procesului de i/o, în cazul în care există n procese în memorie, probabilitatea că toat aceste n procese să aștepte pentru intrare/ieșire este p*n, de aici utilizarea procesului fiind 1-pn. În concluzie, dacă procesul ar petrece 80% din timp în așteptarea intrării/ieșirii, ar fi nevoie de 10 procese existente în memorie simulta pentru a scădea timpul pierdut de procesor sunt 10%.
Descrierea de mai sus este doar o aproximare, pentru a fi conciși. Aici, presupunem de la bun început că cele n procese sunt independente, dar în cazul real se consideră uficient că un sistem care are de exemplu 5 procese în memorie, 3 să ruleze iar 2 să fie în așteptare. Deoarece un singue procesor nu poate execută 3 procese simultan, unul din procese devenit pregătit în timpul în care procesorul este ocupat va trebui să aștepte, de aici rezultând că procesee sunt independente.
O altă presupunere pe care o putem face este aceea că mașină de calcul are, de exemplu, 32 MB memorie, șist de operare ocupând 16 MB și fiecare program în parte să ocupe 4 MB. De aici rezultă că doar 4 programe pot fi în memorie în același timp. Având o medie de așteptare de 80%, utilizarea procesorului de aproximativ 60%, aceasta neglijând cerințele sistemului de operare. Dacă am adăuga încă 16 MB de memorie, sistemul poate trece de la 4 la 8 programe încărcate simultan în memorie, de aici și o cresttere a utilizării procesorului la 83%. O altă adăugare de 16 MB ar duce această eficientă de folosire la 93%,dar fără utilitate reală foarte mare.
3.4 Analiza performentelor sistemelor multiprogramate
Acest model prezentat poatte fi utilizat și la analiză prelucrării pe loturi. Procesorul nu e utilizat de toate procesele în același interval de timp. Având o așteptare în jur de 80%, un proces petrece de 5 ori mai puțin timp în utilizarea efectivă a procesorului decât cât așteaptă în memorie, chair și atunci când nu există cereri multiple pentru accesul la acesta. Când sosește un al 2=lea proces, crește utilizarea procesorului din cauza gradului ridicat de multiprogramare, deoarece fiecare proces are jumătate de timp acces la procesor iar pierderea timpului de acces se reduce. Când sosește a 3-a sau a 4-a sarcină, timpul de acces scade în continuare iar eficientă utilizării procesorului crește.
Bibliografie
Radu Radescu –“Arhitectura Sistemelor de Calcul” (1)
Andrew Tanenbaum-“Modern Operating Systems ed 3” (2)
Curs SO (3)
www.regielive.ro/sistemedeoperare
http://www.cs.cmu.edu/
http://elf.cs.pub.ro/
http://so-usb.blogspot.ro/