7
La gestione della memoria La memoria centrale (RAM)è una risorsa importante per i calcolatori moderni che deve essere gestita al meglio. L’utente vuole avere una memoria infinita, veloce, economica e non volatile, ma non si può fare contemporaneamente. Il SO utilizza delle tecniche di gestione della RAM cercandola di renderla infinita: è possibile tramite la memoria virtuale. In un calcolatore sono presenti diverse memorie classificate in base alle loro caratteristiche: velocità e capacità. -nastro: capiente, magnetico, sequenziale (memoria di back-up); -disco: capiente, lento, non volatile ed economico (memoria secondaria); -memoria principale: volatile mediamente grande, veloce e costosa; -cache: volatile, veloce, piccola e costosa; -registri: all’interno del processore, estremamente veloci e ridotti ad alcuni byte; La RAM consiste in un ampio vettore di byte, ognuno delle quali ha un proprio indirizzo: la CPU preleva istruzioni e dati direttamente da essa per caricarli nei propri registri, in particolare istruzioni della zona del Program Counter. Ogni istruzione può a sua volta prendere altri dati dalla RAM e quindi un programma è un susseguirsi di caricamenti (LOAD) e archiviazioni (STORE) di istruzioni e di dati. I compiti del gestore della memoria sono principalmente tre: -sapere quali parti della RAM sono in uso e quali sono libere; -scegliere quale parte della RAM allocare ai processi che la necessitano e quindi deallocarla -gestire lo swapping tra la RAM e il disco quando la RAM non è abbastanza grande da mantenere tutti i processi.

La gestione della memoriascov8.altervista.org/3A/tpsit/presentazioni/parte13.pdf · 2017. 11. 21. · La gestione della memoria La memoria centrale (RAM)è una risorsa importante

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: La gestione della memoriascov8.altervista.org/3A/tpsit/presentazioni/parte13.pdf · 2017. 11. 21. · La gestione della memoria La memoria centrale (RAM)è una risorsa importante

LagestionedellamemoriaLamemoriacentrale(RAM)èunarisorsaimportantepericalcolatorimodernichedeveesseregestitaalmeglio.L’utentevuoleavereunamemoriainfinita,veloce,economicaenonvolatile,manonsipuòfarecontemporaneamente.IlSOutilizzadelletecnichedigestionedellaRAMcercandoladirenderlainfinita:èpossibiletramitelamemoriavirtuale.Inuncalcolatoresonopresentidiversememorieclassificateinbaseallelorocaratteristiche:velocitàecapacità.-nastro:capiente,magnetico,sequenziale(memoriadiback-up);-disco:capiente,lento,nonvolatileedeconomico(memoriasecondaria);-memoriaprincipale:volatilemediamentegrande,veloceecostosa;-cache:volatile,veloce,piccolaecostosa;-registri:all’internodelprocessore,estremamentevelocieridottiadalcunibyte;

LaRAMconsisteinunampiovettoredibyte,ognunodellequalihaunproprioindirizzo:laCPUprelevaistruzioniedatidirettamentedaessapercaricarlineipropriregistri,inparticolareistruzionidellazonadelProgramCounter.OgniistruzionepuòasuavoltaprenderealtridatidallaRAMequindiunprogrammaèunsusseguirsidicaricamenti(LOAD)earchiviazioni(STORE)diistruzioniedidati.Icompitidelgestoredellamemoriasonoprincipalmentetre:-saperequalipartidellaRAMsonoinusoequalisonolibere;-sceglierequalepartedellaRAMallocareaiprocessichelanecessitanoequindideallocarla-gestireloswappingtralaRAMeildiscoquandolaRAMnonèabbastanzagrandedamanteneretuttiiprocessi.

Page 2: La gestione della memoriascov8.altervista.org/3A/tpsit/presentazioni/parte13.pdf · 2017. 11. 21. · La gestione della memoria La memoria centrale (RAM)è una risorsa importante

•Caricamentodelprogramma��Ilprogrammaeseguibile,informatobinario,risiedeinunfilesuunamemoriapermanente,comehhd(memsec).Ilproblemafondamentalecheilgestoredellamemoriadeverisolvereètrasformareilprogrammaeseguibile(sumemoriadimassa)inunprocessoinesecuzionememoriadilavoro).Iprogrammichestannoperdiventareprocessicioèperiqualiègiàstatafattalarichiestadicaricamentoinmemoriacentrale,vengonomessiinunacodad’entratadallaqualeneverràselezionatounoopiùdacaricaredapartedelloaderequindidacollocarenellalistadeiprocessipronti(RL).Durantelagenerazionedelfileeseguibileilcompilatoreeillinkergeneranoall’internodelprogrammacollegamentitraistruzionieindirizzisenzasaperedovesarannocollegati.L’assegnazionedegliindirizzièquindiincompleta:vengonocioègeneratidegliindirizzirelativi(INDIRIZZOLOGICO)eall’attoadelcaricamentoveroeproprioquestivengonotrasformatiinindirizziassoluti(INDIRIZZOFISICO).Uncodicechehaquestecaratteristichesichiamacodicerilocabile.Ilcompilatoregeneragliindirizziapartiredallacella0einbaseaquestovengonogeneratituttigliindirizzieicollegamentidati/istruzioni:

• All’attodelcaricamentoinmemoriavieneindividuatol’indirizzoiniziale,indirizzodibase,evienesommatoatuttiiriferimentipresentinelprogramma(OFFSET)questomododiprocedereprendeilnomedirilocazionestatica;

•Rilocazionedinamica(infasediesecuzione):

–Ilcodicevienecaricatoinmemoriadalloaderinunappositoregistro,registrobase

–Usodiunregistrobasechememorizzal’indirizzoeffettivodellaprimalocazionedimemoria

–Durantel’esecuzione,istruzioneperistruzione,sicalcolal’indirizzoassolutoaogniindirizzorelativoilcontenutodelregistrodibase

–Questomododiprocedereprendeilnomedirilocazionedinamica;

IldispositivohardwarecheassociagliindirizzivirtualiagliindirizzifisicièilMMU(MemoryManagementUnit).{Inrealtà̀laMMUesisteanchesenzalamemoriavirtuale(contieneiregistribaseedimensione)}

Page 3: La gestione della memoriascov8.altervista.org/3A/tpsit/presentazioni/parte13.pdf · 2017. 11. 21. · La gestione della memoria La memoria centrale (RAM)è una risorsa importante

Laformulageneraleèquindi:indirizzofisico=indirizzologico+offset

Dovel’offsetèlospiazzamentotralo0logicodelprocessoeilsuoindirizzodibase,cioèlasuaposizioneeffettivadellaprimaistruzioneinmemoriacentrale.

Quindigliindirizzilogicivannoda0aunvaloremassimo,mentreicorrispondentiindirizzifisicivannodaR+0aR+valoremassimo(doveRèilvaloredioffsetpresentenelregistrodirilocazione)

Ilpassaggiotraindirizzologicoeindirizzofisicosidefinisceaddresbinding.

NoisappiamocheunprogrammadeverisiederenellaRAMperessereeseguitomaènecessariochelospazioliberoinmemoriasiasufficientementegrandeeinoltrechequestospaziosiacontiguo.

-OggiiprogrammihannodimensioninotevolisicuramentesuperiorialladimensionedellaRAMÈindispensabilecheprogrammatorescrivounprogrammacercandodirisparmiarespaziocomeneglianni80’.

-neisistemimoltiprogrammatiilcontinuocambiamentoscaricamentodeiprogrammiproduceunaframmentazionedellamemoriacreandodelleregioniliberedidimensionispessoridottemagarilasommadellospaziototaleliberosarebbesufficienteacontenereilprogrammamalepersonenonsonocontigueeilSOl’operazionedicompattamentodellamemoriasospesospesespostandotuttiprogrammigiàcaricati;

E

Page 4: La gestione della memoriascov8.altervista.org/3A/tpsit/presentazioni/parte13.pdf · 2017. 11. 21. · La gestione della memoria La memoria centrale (RAM)è una risorsa importante

-possiamoperòosservarechenontutteleistruzionichesonoscrittiinunprogrammadevonocontemporaneamenteesserepresentimemoriaancheperchémagarinonverrannomaieseguita.•neisistemimultiprogrammatièpossibileeffettuareloscaricamentodeiprocessideltemporaneamenteinattividellaRAMadiscoperliberarespazioincasodinecessitàquest’operazionepreliminarediswappingegenerauninsiemedioperazionicherallentanonotevolmenteilSOprovandouncalodiprestazioni.Nellospecificoilswappingdicomponedi4fasi:-identificareiprocessinativipresentimemoria(peresempioinstatodiattesa);-salvaresullamemoriatemporaneailorodati(Datiglobali,heap,stack);-rimuoveredallamemoriacentrale(scaricamento);-caricarenellospazioappenaliberatoilprocessochedeveessereeseguito(caricamento).•sipossonocaricareinmemoriasolopartifondamentalidelprogrammaelasciaresudiscomodulichesolamentediun’effettivarichiestastranacaricatisuccessivamentememoria:questatecnicasichiamacaricamentodinamicoevienemoltousatanelcollegamentodellelibreriedisistema.•nelcasodiprocessicondimensionemaggioredellanuovacentralepossibileeffettuareaprioriciaofrazionamentodelprogrammaaoperadelprogrammatore,individuandolepartichepossonoesseretraloroalternativecheverrannocaricatememoriaelastessazonapropriaalternativamente.Latecnicasichiamaoverlay,aindicarechenellastessazonadimemoriavengonosovrappostechiuselezionidiprogramma,naturalmenteunalavolta.•moltiprobleminasconodalladifferenzadidimensionecheprogrammi;lasoluzioneottimalesarebbequelladiriservareogniprocessounadimensionefissadimemoriapersemplificareleoperazioniswippingridurrelaframmentazione:atalefinevieneutilizzatalatecnicadipartizionamentodellamemoria.

•Allocazionedellamemoria:ilpartizionamentoIlsistemapiùsempliceperallocarelamemoriacentraleneisistemimultiprogrammatièquellodisuddividerlainpartizionieassegnareunapartizionehounprocessoindipendentementedallasuadimensione,partendodallaprimaEcercandodiriempirecontiguamentetuttelepartizioni.Ancheladimensionedellapartizionemoltoimportanteperchéseitroppograndesisprecanellospaziodimemoriamentreseètroppopiccolacosasuccedeproblemiquantiacaricareprogramma.

Page 5: La gestione della memoriascov8.altervista.org/3A/tpsit/presentazioni/parte13.pdf · 2017. 11. 21. · La gestione della memoria La memoria centrale (RAM)è una risorsa importante

Vengonodiscussiduetipidipartizioneamento.SchemaapartizionefissaNelloschemaapartizionifissaladimensionedellapartizionevienedefinitaall’attodell’inizializzazionedelsistema,quindistaticamente,evienecreataunatabelladovesirizzalostatodellapartizione,indicandoqualisonolibereequalisonooccupate.

LepartizionipossonoancheesseredidimensionediversatraloroEpossonoesserestabilitedall’operatoreallaviadelSO.Partizionevienesuccessivamentegestitaunacodadiprocessiinattesainbaseallelorodimensioni:unjobvieneaggiuntoallacodarelativaallapartizionepiùpiccolacheingradodicontenerlo.Nellafermentazionefissasipossonoverificaredueproblemi:-ilproblemadellaframmentazioneinterna,chesipresentequandolesingolepartizionisonodigrandidimensioni;-ilproblemadellaframmentazioneesterna,chesipresentaquandolesingolepartizionisonodipiccoledimensioni.FrammentazioneinternaSupponiamocheogniprocessodiinterapartizionechevengaschedulatociòpiccolo:azionipartizionepiccolamassaèveramentegrandepercontenerloallacodapienaèinvecelacodaeallafunzionegrandevuota,iljobpiccolovieneassegnatoallapartizionegrande.Potremmospiegarequasituttalapartizionegrandeperunjobmoltopiccolo.FrammentazioneesternaLadimensionediunprocessopuòesserepiùgrandediunaqualunquepartizioneesistenteanchesenelcomplessolamemoriaassociataatuttelepartizionisufficientepercontenerla.Ilproblemadellaframmentazioneinternasipuòrisolveremediantel’usodiunasingolacodaingressoquandosiliberaunapartizioneditraspostaavereduestrategiediassegnazioneaijob:

Page 6: La gestione della memoriascov8.altervista.org/3A/tpsit/presentazioni/parte13.pdf · 2017. 11. 21. · La gestione della memoria La memoria centrale (RAM)è una risorsa importante

- Siricorrelacodaapartirelatestafinoaindividuareunciondolodidimensionitalidapoteresserecontento;

- ripercorrendolacodaindividuandoilgiocoGrandechipuòesserecontenutonellapartizionechelibera:inquestomodo,però,vengonodiscriminatiijobdidimensioniridotte.

Schemaapartizionevariabile

Per eliminare il problema della frammentazione interna occorre avere la possibilità ̀di utilizzare la memoria utente come un unico spazio di memoria che può ̀essere allocato dinamicamente ai processi: un processo è inserito in memoria in una qualsiasi zona libera, a condizione che sia abbastanza grande per contenerlo, creando così una partizione di dimensione pari a quella del processo.

Per individuare lo spazio libero da assegnare ai processi il sistema operativo può ̀usare criteri diversi; due di questi algoritmi sono i seguenti: FIRST-FIT (il primo dove ci sta). In questo caso il processo viene inserito nella prima zona libera abbastanza grande per contenerlo. Questo metodo è molto veloce in quanto parte a scandire la memoria dall’inizio e si ferma appena trova uno spazio libero sufficiente. BEST-FIT (il migliore). Il sistema operativo individua la partizione più ̀piccola sufficiente a contenere il processo in modo che le partizioni più ̀grandi non vengano suddivise inutilmente. In questo caso il sistema operativo scorre tutta la memoria e individua lo spazio più ̀piccolo sufficiente.

Page 7: La gestione della memoriascov8.altervista.org/3A/tpsit/presentazioni/parte13.pdf · 2017. 11. 21. · La gestione della memoria La memoria centrale (RAM)è una risorsa importante

WORST-FIT (il maggiore). Il sistema operativo individua la partizione più ̀grande sufficiente a contenere il processo. È l’opposto del best-fit ed è basato sul presupposto che se lo spazio libero di memoria è grande, lo spazio che rimane libero dopo aver allocato un processo rimane abbastanza grande per potervi allocare altri processi e per non essere sprecato.

Come possiamo vedere dalla figura che segue, che simula lo stato della RAM in seguito all’esecuzione di una sequenza dei processi, il partizionamento dinamico è generalmente soggetto a frammentazione esterna: infatti la determinazione dei processi P1 è P2 e il successivo caricamento del processo P4 hanno provocato la formazione di due frammenti di dimensioni modeste all’interno della RAM