La gestione della memoriascov8.altervista.org/3A/tpsit/presentazioni/parte13.pdf · 2017. 11....
Transcript of La gestione della memoriascov8.altervista.org/3A/tpsit/presentazioni/parte13.pdf · 2017. 11....
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.
•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)}
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
-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.
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:
- 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.
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