la gestione della memoriascov8.altervista.org/3a/tpsit/presentazioni/parte13.pdf · 2017. 11....

Post on 24-Sep-2020

3 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related