Sei sulla pagina 1di 39

APPUNTI DI SISTEMI OPERATIVI

RussoAlessioSavaiaGianluca

INDICE

Processi
Creazione
Stato
Implementazione
Thread
Implementazione
UservsKernelspace
SchedulerActivations
PopupThreads
InterprocessCommunication
RaceCondition
Scheduling
Batch
InteractiveSystems
RealTime
Thread
ProblemiClassici
ProduttoreConsumatore
Filosofi
LettoriScrittori
MemoryManagement
BaseeLimitregister
Swapping
MemoriaVirtuale
Paging
PageTable
TLB
Paginazioneapilivelli
InvertedPageTable
Pagereplacement
AlgoritmoOttimale
NRU
FIFO

SistemiOperativi1
SecondChance
Clock
LRU
NFU
Aging
WorkingSet
WSClock
NoteGenerali
LocalevsGlobale
Thrashing
Dimensionepagina
Condivisione
Libreriecondivise
MappedFiles
Bloccarelepagine
Segmentazione
FileSystem
Files
Struttura
Accesso
Directories
Implementazione
Disco
File
Allocazionecontigua
LinkedList
FileAllocationTable
Inodes
Directories
Blocchiliberi
Consistenza
Ottimizzazione
Input/Output
DMA(Directmemoryaccess)
Gestionedelleinterruzioni
I/OSoftware
ProgrammedI/O
InterruptdrivenI/O
DMAI/O
Softwarelayer
DeviceindipendentidalsoftwareI/O
UserspaceI/Osoftware
Dischi

SistemiOperativi2
Magneticdisks
RAIDRedundantArrayofInexpensiveDisks
FormattazionedelDiscoabassolivello
Strutturadiunsettore
CylinderSkew
Interleaving
Formattazionedeldiscoadaltolivello
Algoritmidischedulingperilbraccio
Gestionedeglierrori
Stablestorage
Deadlocks
Risorse
Risorseprerilasciabilinonprerilasciabili
Acquisizionedellarisorsa
Resourcedeadlocks
Condizioniperlostallo
Modelliperlostallo
IgnorarelostalloAlgoritmodellostruzzo
Riconoscerelostalloedeliminarlo
Riconoscerelostalloconunasolarisorsadiognitipo
Riconoscerelostalloconpirisorsediognitipo
Eliminareunostallo
Eliminarelostallotramiteprerilascio
Eliminarelostallotramiterollback
Eliminarelostallotramiteterminazionedeiprocessi
Evitarelostallo
Traiettoriedellerisorse
Statisicurieinsicuri
Algoritmodelbanchiereperunarisorsa
Algoritmodelbanchiereperrisorsemultiple
Prevenirelostallo
Eliminarelacondizionedimutaesclusione
EliminarelacondizionediHold&Wait
Eliminarelacondizionenonprerilasciabilit
Eliminarelacondizionediattesacircolare
Tabellariassuntivadellecondizioni

SistemiOperativi3
Processi
Creazione
fork
Iprocessivengonocreatitramiteunachiamataasistema.InambienteUNIXesistela .
Questachiamataduplicala
coreimage
(spaziodiindirizzamento),ifileaperti,ecc..del
processochiamantecosicchsiavranno2processiinesecuzioniidentici.Solitamenteil
processofiglioeseguesubitounachiamataasistema
exec
chepermettedisostituirelapropria
coreimageconquelladelnuovoprogrammadaeseguire.
LaforkrestituisceilPIDdelprocessofiglio,inquestomodosiriesceadavereunagerarchiadi
processi(unalbero).Nelprocessofigliolaforkrestituisce0.

Stato
Iprocessiunavoltamandatiinesecuzione,possonoritrovarsiin3stati:
RUNNING,seilprocessostaimpegnandolaCPU
BLOCKED,seilprocessoinattesadiunevento
READY,se(inmemoria)prontoperessereeseguito
UnnuovoprocessovienecaricatoinmemoriadovenellostatoREADYovveroprontoper
essereeseguito.SuccessivamentequandoloschedulerdecidediassegnarlilaCPUpassaallo
statoRUNNING.Aquestopuntopossonoaccaderediversecose:
seilprocessorichiedeaccessoallI/Oocomunquenecessitadiuneventoperpoter
continuarelasuaesecuzione,passaallostatoBLOCKED.Ilprocessononpuessere
eseguitofinchleventononoccorrer,nelqualcasopasserebbeallostatoREADY.
seloschedulerdecidediassegnarelaCPUadunaltroprocesso,passaallostato
READY.Ilprocessoprontoperessereeseguitonuovamente.

Implementazione
Ilsistemaoperativotieneunatabella(processtable )doveinognirigacunprocessoetuttii
suoiattributi,compresiquellicheglipermettonodiandarenuovamenteinesecuzione(program
counter,stackpointer,ecc.)ochepermettonoalloschedulerdiprenderedecisioni(priorit,
ecc.).

Ilcambiodiprocessoinesecuzioneoneroso.Bastipensarechesidevonosalvareiregistri,
PC,stackpointer,lacache,TLB,ecc.. ContextSwitch .

SistemiOperativi4
Thread
Sonoflussidiesecuzioneallinternodiunostessoprocessocheprocedonoinparallelocome
accadetradueprocessidiversi,maadifferenzalorocondividonolospaziodiindirizzamentodel
processoacuiappartengono.
Pro:
Ithreadpossonoscambiarsisemplicementeinformazionitraloro
Sonomoltovelocidacreare(100volte)
VelocizzanoilprogrammasesonoI/OBound,poichsoloilthreadinteressatosiblocca
mentreglialtripossonocontinuarelaloroesecuzione.
Immaginarecomeinunwordprocessorilsalvataggiodelfileinterromperebbetuttoil
programma.

Implementazione
UnthreadnecessitadiunproprioPC,stack,registriperpoteressereeseguito.
Possiamoquindivedereilprocessocomeunentitcheraggrupparerisorselogicamente
correlate,mentreilthreadunentitprepostaallesecuzione.

Nonprevistanessunaprotezionetrathread(ilprogrammatoresenedevepreoccupare)
poichsonopensatipercollaborareadifferenzadeiprocessicheinvececoncorronotraloro.

IThreadcomeiprocessipossonotrovarsiindiversistati.

LalibreriaPosixmetteadisposizionediversimetodipercreare,distruggereunthread.Da
segnalareimetodi Pthread_yielde
Pthread_join chepermettononellordinedirilasciarelaCPU
infavorediunaltrothreadediaspettarecheilthreadpassatocomeparamentrotermini.

User vs Kernel space


Ithreaddefinitinellouserspacesonoimplementatitramitelibrerieapposite.Un
runtime
system gestisceithreaddiunprocesso.Ilkernel(SO)nonaconoscenzadellesistenzadei
thread.
Ogniprocessohalapropria threadtable
(analogodellaprocesstable).

Quandounprocessosibloccainattesacheunaltrothreadfiniscaillavoro,chiamauna
proceduradelruntimesystemchedecidequalealtrothreadmandareinesecuzione.Questo
avvienemoltopirapidamentecomparatoconunachiamataasistema(nonhocontextswitch).

Cperunproblema,unachiamataasistemainterrompelinteroprocesso.Perdoquindiil
parallelismoperilqualeilthreadnasce.Inoltreunthreadnonpuessereinterrottodalruntime
systempoichnoncisonoclockinterruptsnellouserspace.

PoichithreadportanobeneficisoloquandosonoI/OBound,equindiquandoeffettuanomolte
chiamateasistema,limplementazionenellouserspacenonefficace.

SistemiOperativi5
Laltroapproccioprevedechesiailkernelagestireithread.Ilkernelmaterrquindiunathread
tableglobale.Quindipergestireithreadsiutilizzerannodellechiamateasistema(plente).Lo
schedulingeffettuatotratuttiithreadnonsoloquellidiunprocesso.Pervelocizzareithread
possonoesseredisabilitatiinvecechedistrutti,inmododariattivarliseservononuovamente.
Unachiamataasistemainquestocasobloccasoloilthreadinteressato.

PROUSER:
Gestionemoltoveloce
Schedulingpersonalizzato
CONTROUSER:
Chiamateasistemaminanoilparallelismo
seunthreadnonrilasciaspontaneamentelaCPUglialtrithreadnonverranoeseguiti

PROKERNEL:
GestionedapartedelSO,Schedulingtrathreaddidiversiprocessi.
Chiamateasistemabloccanosoloilthreadinteressato
CONTROKERNEL:
Gestionetramitechiamateasistema(LENTE)

Scheduler Activations
Eunasoluzioneibrida.Ilthreaduserspaceeffettuaunachiamataasistemachenebloccala
suaesecuzione.Ilkernelneprendeattoenotifica(invecedibloccare)ilruntimesystemcon
una
upcall(vieneeseguitalistruzioneadunindirizzoprefissato,tipointerrupt).Ilruntime
systemprendequindiilcontrolloedecidequalealtrothreadmandareinesecuzione.
Quandoilvecchiothreadsaringradodiriprenderelesecuzione,ilkernelnotificher
nuovamenteconunaupcallilruntimesystem.
Eunapprocciononusualepoichsolitamenteunlivellopibassononnotificalivellipialti.

Popup Threads
Esempioattesadiunmessaggio.
Vienecreatounthreadnormalecheaspettadiessererisvegliatoallarrivodiunmessaggio.Una
voltarisvegliatoavvieneuncontextswitch,prendeilpossessodellaCPUefailsuodovere.
Unpopupthreadinvecevienecreatonelmomentoincuiarrivailmessaggio.Ilvantaggioche
nonhobisognodirecuperarelesuevecchieinfo(contextswitch)poichilthreadnuovo!

SistemiOperativi6
Interprocess Communication
Scambiodati
Raceconditionsurisorse
Accessoazonecondivise

Race Condition
Perevitarlabisognagarantirela
mutuaesclusione inquellapartediprogrammadoveidue
processivannoatoccaredaticondivisi(criticalregion).
Bisognaevitarecheiprocessientrinocontemporaneamentenellaregionecritica,senzacheun
processochenonvisitrovadentroneblocchiunaltro,ochedebbaaspettareuntempoinfinito
perentrarvici.

Soluzioninonfunzionali:
Disabilitareinterrupt(nobuono,valesoloperunaCPU)
VariabilediLock
Alternanzastretta
BusyWaiting

Soluzionifunzionali:
TSL,istruzioneatomicachesalvailvaloredellucchettoelosettaa1.
SleepeWakeup,chepermettonoadunthreaddiandareinletargo(yield)aspettandodi
esseresvegliatoquandopotrentrarenellaregionecritica.
Semafori,downeup(atomiche,chiamateasistemachedisabilitanogliinterruptper
pocheistruzioni,notbad)controllanounavariabile.Ladownprovaadecrementarema
setrovazerovainsleep.Lauplaaumentaerisvegliaithreaddormienti.
Mutex,bloccarelaccessoaunainteraregioneseillockchiuso
VariabiliCondizionate,utilinellasincronizzazione(aspettarecheunavariabilecambi
valore)
Monitor,interezoneincuilaccessoconsentitosoloadunthreadpervolta(tipomutex
maimplementatonellinguaggiodialtolivello).Menoerroripoichlofailcompilatore.

Scheduling
CPUBoundvsI/OBound.Ingeneralemegliodarelaprecedenzaaisecondi.
Altrecaratteristichegeneralisono:
dareadogniprocessounugualequantitdiCPU
Evitareidle

Batch
Devonofareunagrandequantitdilavoro.Massimizzareilthroughput,garantendochelaCPU
vengautilizzatailmassimopossibile.
FCFS,faciledaimplementare.PenalizzaI/OBound.
SJF,minimizzailturnaround.Ottimoseiprocessiarrivanoallostessoistante

SistemiOperativi7
Interactive Systems
Eimportantelareattivitdelsistema.Minimizzareilresponsetimeinbasealleaspettative
dellutente.
RoundRobin,ognunohailsuoquanto.Quantotroppopiccoloimplicatroppooverhead,
troppograndeneperdoinreattivit.
Priorit,alcuniprocessisonopiuimportantipoichsiinterfaccianoconlutente.Le
prioritvengonoscalateperdareopportunitatuttidiessereeseguiti,oppurequanti.Le
prioritpossonoancheessereassegnatedinamicamente(favorireI/OBound)
Codemultiple,Lecodeaprioritmaggiorehanno1quantopoivengonoscalati
raddoppiandoilquanto.ReattivitenonpenalizzatroppoiCPUBound.

Real Time
Iprocessidevonoessereeseguiticategoricamenteentrouncertolimiteditempo(Deadlines).

Thread
Loschedulerdevetenercontodelcontextswitch,inesistentetrathreaddellostessoprocesso.

SistemiOperativi8
Problemi Classici
Produttore Consumatore
Ilproduttoreriempeunbufferfinchnonpieno.Ilconsumatoretoglieelementifinchcen.
Ilproblemastanelfattocheseilconsumatorevieneinterrottotralistruzionechecontrollail
buffer(vuoto)elawait,luisiperdeilwakeupdelproduttoreesibloccatutto.

void produce()
{
int i = 0
while(i++<MAX)
{
pthread_mutex_lock(&lock) //accesso esclusivo a questarea
if(size==BUFF_SIZE)
pthread_cond_wait(&buff_controller, &lock) //aspetto che il buffer si svuoti
buffer[size++] = rand()
printf("P\titem inserted\t%d\tsize=%d\n", buffer[size-1], size)
if(size==1)
pthread_cond_signal(&buff_controller) //sveglio il produttore
pthread_mutex_unlock(&lock)
}
pthread_exit(0)
}
void consume()
{
int i = 0
while(i++<MAX)
{
pthread_mutex_lock(&lock)
if(size==0)
pthread_cond_wait(&buff_controller, &lock)
size--
printf("C\titem removed\t%d\tsize=%d\n", buffer[size], size)
if(size==BUFF_SIZE-1)
pthread_cond_signal(&buff_controller)
pthread_mutex_unlock(&lock)
pthread_yield() //libero la CPU (consumo il bene)
}
pthread_exit(0)
}

Filosofi

SistemiOperativi9
5filosofisedutiaduntavolocircolaremangianoopensano.Permangiarenecessitanodi2
forchette,masultavolovenesonosolo5.Lobbiettivofarsichetuttiifilosofimanginoinun
tempochenonsiainfinito.
Ilproblemacheseadesempiotuttiifilosofiprendesserolaforchettaallalorodestra,nessuno
potrebbemangiare,nessunosgancialerisorseaspettandolaltraforchetta. Deadlock.
Lasituazioneincuiunfilosofo(processo)nonhamaiaccessoallerisorsevienechiamata
starvation .

Eccounasoluzionecheprevedelutilizzodeimonitor.

public synchronized void prendiForchette()


{
forchette[0].occupata = true
forchette[1].occupata = true
}

public synchronized void posaForchette()


{
forchette[0].occupata = false
forchette[1].occupata = false

notifyAll()
}

Lettori Scrittori
Databasecheammettepilettoriincontemporanea,maunoscrittoredeveavereaccesso
esclusivo.Quandounoscrivenessunaltropuscrivereoleggere.
Ilproblemastanelfattochesepermettiamoailettoridipoterleggeresempre,loscrittorenon
avrmaiaccessoaldatabaseamenochetuttiilettorinonescano E
nonnearrivinoaltri.

SistemiOperativi10
Memory Management
Ilpuntofocalenellagestionedellamemoriala virtualizzazione .Coniprocessiabbiamovisto
cheunambientemultiprogrammatopossibile,maunprogrammaperpoteressereeseguito
devestareinmemoria!
Unaltroconcettofondamentalequellodi spaziodiindirizzamento :ogniprocessohaunsuo
autonomospaziodiindirizzi,ovveroogniprocessopensadipossederetuttigliindirizzi
disponibiliperlarchitetturachesistausando(16,32,64bit).Questoancheselamemoriafisica
disponibileinferiore!

Insistemichenonutilizzanovirtualizzazionesullamemoriapossibileavereunsolo
programmaallavoltainmemoria,conconseguentecontextswitchcheprevedeunswapoutsu
discodelvecchioprocessoeswapindiquellonuovo.
Unaltroapproccio(IBM)quellodella staticrelocation .Ilprogrammaquandovienecaricatoin
memoriavienemodificatoinmodocheleistruzionichefannoriferimentoasaltiaindirizzi
assolutivenganoaggiornatiinbaseadovevienecaricatoilprogrammainmemoria.Questo
approcciorallentaevidentementeloperazionedicaricamento.

Base e Limit register


Unaltroapproccioquellodiprevedere2registri,ilbasee
limit
register,neiqualisono
contenutilindirizzoinizialeefinaledidovevienecaricatoilprogrammainmemoria.Adogni
chiamataafunzioneleistruzionicheutilizzanosaltiadindirizziassolutivengonosommateconil
registrobase,inmododasaltarealgiustoindirizzo,econfrontateconillimit,perfarsichenon
escanodallalorogiurisdizione.Adognicontextswitchevidentementeilsistemaoperativodeve
aggiornarequestiregistri.Losvantaggiocheadogniistruzioneditiposaltosideveeffettuare
unacomparazione(nonmoltopesante)eunaaddizione(moltopesante).

Swapping
Nontuttiiprocessiriesconoastareinmemoria.Servequindiunmeccanismochepermettadi
spostareiprocessidamemoriaadisco,eviceversa,inmodoefficiente.

Alliniziolamemoriaimmaginiamolavuota.Caricoprocessiinmemoriafinchhospazioper
farlo.Immaginiamooracheunprocessoabbiaterminatolasuaesecuzione,lodovrquindi
spostaresudisco(swapout)sisarcreatounbucoinmemoriachepuessereusatoda
qualunquenuovoprocesso(bastachecistia!).

Doposvariatiswap,lamemoriasarpienadibuchiovverosidicechesar
frammentata .Per
evitarequestoognitotsecondisipotrebbedeframmentarla,ovverocompattarla,maquesta
operazionedispendiosa(circa5secper1GB).Inoltreunprogrammanonhadimensionefissa,
potrebberichiederealtramemoriadinamicamenteinquestocasoilSOdovrebbetrovargliun
bucopigrandeotoglieremomentaneamenteilprocessodallamemoria.

SistemiOperativi11
Lagestionediquestotipodimemoriapuavvenirein2modi:
Bitmap ,lamemoriavienedivisainunitdiallocazione(moltopiccole)eilSOtieneuna
tabelladoveperogniunitsihaunbitazeroseliberaoad1seoccupata.Quando
unnuovoprocessodidimensione k
deveesserecaricato,bisognacercarenellatabella
unasequenzadi k
zericonsecutivi,operazionemoltodispendiosa.
LinkedList ,ognielementodellalistarappresentaounprocessoounbuco.Ogninodo
portaconslinformazionedidoveiniziaequantograndeilsegmentodimemoria(il
processooilbuco).Quandounnuovoprocessodeveesserecaricatodiversialgoritmi
sonopossibili:firstfit,bestfit(frammentamolto),worstfit,quickfit(listedigrandezza
predefinita),listeseparate,ecc..

Memoria Virtuale
Ilconcettoallabasecheiprogramminonnecessitanodellinterospaziodiindirizziperessere
eseguiti.Unprimoapprocciostatoquindiquellodegli
overlays,ovveroilprogrammatore
dovevadividereilprogrammaindiversepartichepotevanoesserecaricateedeseguite
separatamenteinmemoriaquestoperappesantivaillavorodelprogrammatoreeinducevaa
errori.Ilsecondoapprocciostatoil
paging
.

Paging
Lospaziodiindirizzamentovirtualediunprocessovienedivisoin paginedidimensionefissata
(4KB).Ognipaginapuesserecaricatainmemoria,anchessadivisain pageframes della
stessadimensione.

Ilprocessofaquindiusodiindirizzivirtuali:lindirizzo1024virtualenoncorrispondeal1024
fisico,bisognasapereinqualepageframestatacaricatalapaginacorrispondenteallinidirizzo
virtuale1024!Sievincechedeveesistereunatabelladicorrispondenzapaginapageframe
perogniprocesso.

LaMMU(memorymanegementunit)sioccupaditradurregliindirizzivirtualiinindirizzifisicie
inviarlisulbus(lamemorianonaconoscenzadellavirtualizzazione).Nontuttelepagine
sarannocaricateinmemoriaquindisidevetenereconto,tramiteunbit,dellapresenzao
assenzadiunapaginainmemoria.Quandovienechiamataunapaginachenonpresentein
memoriasiparladi pagefault,esarilSOadoccuparsene.
Unindirizzovirtuale(16bit)quindidivisoin2parti:numerodipaginavirtuale(4bit)eoffset
internoallapagina(12bit).Loffsetlostessopoichpagineepageframeshannolastessa
dimensione,mentreilnumerodipaginavienefattocorrisponderealpageframeinmemoria
tramitelapagetable.Inquestoesempiohounospaziodiindirizzamentodi 216 indirizzidiviso
in 24 paginedidimensione 212 .

SistemiOperativi12
Page Table
Ogniprocessohalapropriapagetableinmemoriadoveognirigacorrispondeadunapagina
delprocesso.Ognirigacontiene:
PageFrameNumber,ovverodovcollocatalapaginainmemoria
Present/Absentbit,cheindicaselapaginainmemoriaosudisco
Protectionbits,indicanosetalepaginapuesserescritta/letta/eseguita
Modifiedbit,indicaselapaginastatamodificataovverosedeveaggiornareil
contenutosudiscoomeno( dirtybit
)
Referencedbit,indicaselapaginastataindirizzata(utilenelpagereplacement)

Notarecheselatabelladellepaginefosseinteramenteinmemoriaadognichiamatadi
lettura/scritturainmemoriasitrasformainunaricercanellapagetabledellindirizzofisico.
DiversamentesefosseinteramenteinHWsarebbeimmensamentecostosaunatabelladi 220
righe.

TLB
Il
TranslationLookasideBuffer unacachecompletamenteassociativa(ovveroinunariga
viscrittoesplicitamenteilnumerodipaginaeilnumerodipageframe)dovesonocontenute
alcune(64)righedellatabelladellepagine.Funzionacomeunacache,ovverotramiteil
principiodilocalitneltempoenellospazio ,doveunaMISScomportalospostamentodalla
memoriaalTLBdellapaginarichiesta.SidevedistingueretraMISSepagefault!

LagestionedelTLBpuesserefattatramiteHW,ovverolaMMUconoscedovesono
memorizzatelepagineinmemoriaeaggiornailTLBincasodiMISSoppureviaSWdoveil
sistemaoperativoadoccuparsidiaggiornareilTLB.SiscopertocheseilTLBabbastanza
grandenonvimoltadifferenzainterminidiprestazionieinoltrenelsecondocasolaMMU
moltopisemplice(risparmiospaziosulchip).

Paginazione a pi livelli
Sidividelindirizzovirtuale(32bit)in3parti:PT1(10),PT2(10),OFFSET(12).
InmemoriatengoquindiunatabellachevieneindicizzatadaPT1( 210 righe)contenenteil
numerodellapaginadisecondolivellodaaccedere(hoquindi1024paginedisecondolivello).
PT2( 210 righe)vieneusatoperaccedereallarigadellapaginadisecondolivellochecontieneil
pageframeinteressato.

Questofunzionaperchunprogrammanonutilizzamaituttoilpropriospaziodiindirizzamento,
quindimoltepaginenonsarannomaiusate!Inmemoriatengosoloquelletabellecontenentile
paginecheutilizzerpilaPT1.

Ilproblemadiquestoapprocciocheutilizzandounarchitetturaa64bit,laPT1risulterebbe
avere 252 righe(circa30PB).

SistemiOperativi13
Inverted Page Table
Lasoluzionestanellinvertirelacorrispondenza.Seprimasifacevacorrispondereadogni
paginaunpageframe,orasifacorrispondereadognipageframeunapaginadiunprocesso.
Lagrandezzadellatabelladipenderquindidalladimensionedellamemoria.
Siperdeinvelocitnellatraduzionepoichpiprocessihannolostessonumerodipagina.
Quindisidevecercarelapagina x
delprocessoy
perognirigadellatabella.UtilizzandoilTLB
laricercaavvieneallastessavelocitdiprima,ilproblemaarrivaconlaMISS.Pervelocizzare
laricercapossonoessereorganizzatetabelleindicizzateconhash.

Page replacement
Quandoarrivaunpagefaultdevodeciderequalepaginatoglieredallamemoriaperfarspazioa
quellamancante.Unavoltasceltalapaginadevocontrollareildirtybitpoichselapaginastata
modificatadevoaggiornareildisco.

Algoritmo Ottimale
Nonimplementabile.Prevedechesialapaginacheverrusatapiavantineltempoadessere
tolta.Sfortunatamentenonsipuprevedereilfuturo.

NRU
PrevedediscartareunapaginachenonstatausatarecentementeanalizzandoibitR/M
ovveroguardandoselapaginastataindirizzata(R=1)e/omodificata(M=1).Adogniclock
interruptilbitRvieneazzeratocosidatenerecontosolodellemenorecenti.
Lalgoritmosemplicemafaschifo.

FIFO
Firstin,Firstout.

Second Chance
EunFIFOmigliorato,ovveroselapaginachestaperuscirehaR=1vienespostatainfondoeil
bitRvieneazzerato.

Clock
Eugualeasecondchancemaimplementatotramiteunalistacircolaredoveilpuntatorenon
rimanesullatestamaallultimonodoanalizzato,velocizzandolalgoritmo.

LRU
Leastrecentlyusedprevedediutilizzareunalistaordinatadallapaginautilizzatapi
recentementeaquellapivecchia.Tenerlaaggiornatatroppodispendioso.
UnasecondaimplementazioneprevedeuncontatoreHWchecontaadogniistruzione.Dopoun
indirizzamentoilvaloredelcontatorevienesalvatonellapagetable.Lapaginaconilvalorepiu
bassoquelladatogliere.
Unterzoalgoritmoquellodellamatrice:ogniriga/colonnaindicaunapaginaquandoquella
paginavieneindirizzatasisettaa1larigaea0lacolonna.Lapaginaconlarigaconmenouni
quelladatogliere.

SistemiOperativi14
NFU
Notfrequentlyused,ognipaginahauncontatore(SW)chevieneincrementatoinbasealvalore
delbitR.Lapaginaconilcontatorepibassostatalettamenovolte.Ilproblemacheseuna
paginastatausatamolto1orafa,hailcontatorealtoequindinonvienetoltaanchesenon
piusata.

Aging
ComeNFUsolocheilbitRvienesommatonelbitpisignificativodopoavershiftatoil
contatore.Inquestomodoprocessiusatinondirecenteavrannoibitshiftativiaequindiun
valoredelcontatorepibasso.Ovviamenteildifettostanelfattocheilpossiamoregistrarefinoa
totbitnelpassato(8bitazeropotrebbesignificarechenonvieneusatada8tickoppureda1
ora).

Working Set
Unnuovoapproccioquellodicapirequalipagineservonoadunprocessoperessereeseguite
inuncertointervalloditempo.Quellepaginefannopartedelworkingset(notacheilWSevolve
lentamenteneltempo).OvviamenteilWSdeverimanerepreferibilmenteinmemoria,poich
togliereunapaginadelWSimplicaaveremoltipagefaultsuccessivamente( thrashing).
PaginecheilprocessoutilizzavaprimadiessereswappedoutfannopartedelWSedevono
esserecaricateseilprocessovadinuovoinesecuzione( prepaging ).

Unaimplementazioneefficientequelladiutlizzareil
currentvirtualtime
invecechedei
contatori.QuandounapaginaindirizzatavieneaggiornatoilsuoRbit(azzeratoadognitick).
AdognipagefaultiltimerdellepagineconR=1vieneaggiornatoaltempocorrente,invecele
pagineconR=0vengonoscartateseillorotimerhaunvaloretroppoindietroneltempo
(confrontatoconquelloattuale)altrimentinonvienescartatomanonvieneneancheaggiornato.

WSClock
Funzionacomesopra,maimplementatocomelalgoritmodiClock.Unanotainpiche
quandotrovounapaginachenonfapartedelWScontrollaancheildirtybit:seaunonon
possorimuoverelapaginaperchprimadevoaggiornarequellasudiscoquindifacciopartire
unascritturaeintantocercoaltrepaginecheabbianoildirtybitazero(velocidasostituire).

Note Generali
Locale vs Globale
Lasceltadellapaginadascartarepuesserefattaallinternodiunsoloprocessooppuretra
tuttiiprocessiinmemoria.SeGlobalesipuscegliereunnumerominimodipaginecheun
processopuavereedunnumeromassimoinmodocheseilWSevolvesipudarepispazio
aqueiprocessichenenecessitanoemenoaquelliconunWSristretto.Sesiusaquellolocale
sidarunospaziougualeatuttiiprocessi,ilchhapocosenso.
Esisteunalgoritmo,il
PFF(PageFaultFrequency),chedeterminalospaziodiallocazioneda
destinareadunprocessoinbasealnumerodipagefaultcheproduce.

SistemiOperativi15
Thrashing
Seunprocessogeneratroppipagefault,ilPFFprovaadarglipispaziomanoncen
abbastanzaquindiilSOpudecideredispostarloinmemoriaperunperiododitempo.

Dimensione pagina
Paginegrandiimplicano
frammentazioneinterna
.Paginepiccoleimplicanotabellegrandi.

Condivisione
Condividereiltestodiunprogrammatrapiprocessisemplicesesidividelospaziodi
indirizzamentotraDatieIstruzioni.
Condividereidatideveaveredelleaccortezzeinpi.LapaginamarcatacomeREADONLY,
cosseunprocessoprovaascrivereilSOinterviene,dividele2partiepermettelascrittura
(
copyonwrite ).

Librerie condivise
Quandosicompilaunprogrammanonvengonolinkatelelibreriemaunasubroutine.Leffettivo
linkavvienealruntime.Questopermettediaveresolountestodellalibreriausatodapi
processi.

Mapped Files
Ifilevengonospostatidadiscoinmemoria.Lescritturesufilesonoscritturesumemorianonsu
discofinchilfilenonvienechiuso.Inquestomodosipossonocondividereifiletraprocessi.

Bloccare le pagine
ImmaginaunprocessochepermetteadundispositivoI/Odiriempireunbufferinmemoria.
Quelprocessovienebloccato(aspettacheildispositivofinisca)eunaltroprocessogeneraun
pagefault.Lapaginacontenenteilbuffernondeveessererimossapernessunmotivoaltrimenti
perdoidati!Esisteunmodoperbloccarelepaginainmemoria( pinning ).

Segmentazione
Siassegnaunospaziodiindirizzamentopersonaleadognipartediunprogramma(ancheuno
spazioperogniprocedurasesivuole).Lapaginazionequindiunsegmentounico.Ilvantaggio
cheisegmentipossonoaveredimensionenonfissata,ilcheperportaadelleconseguenze.
Indirizzareunamemoriaasegmentiimplicailfattodiaverenellindirizzounapartecheindichi
qualilsegmentoeloffsetallinternodelsegmento.Semplificaillinkingelacondivisione.

SistemiOperativi16
File System
Files
UnFilesemprecreatodaunprocesso,maadifferenzadellapartedatipersisteinmemoria
secondariainmododaessereutilizzatopiavantineltempo(anchedaaltriprocessi).
LestensionediunfilepiunaconvenzionecheunaregolainUNIX.Windowsinveceassocia
adogniestensioneunprogrammaperaprireilfile.

Struttura
IfileinUNIXeWindowssonosemplicementeunasequenzadibyte,staalprocessocheli
utilizzadareunsignificato.
Unalternativastrutturareinrecorddinbyte.Inquestomodosisemplificalascritturaolettura
incertiambientidovecomodopoterleggereoscriveredegliinterirecordpervolta.
Inultimaanalisiidatipotrebberoesserestrutturaticomeunalberodirecordcontententiuna
chiave,utilinellaricercaeutilizzatiinalcuniambienti.

Ifileeseguibiliinvecehannogeneralmenteunformatoparticolareperesserericonosciuti:

MagicNumber Numerocheidentificailfilecomeeseguibile

TextSize Dimensionedeltesto

DataSize Dimensionedellapartedati

BSSSize Dimensionedellapartedatiinizializzati

SymbolTableSize Nomidellevariabili,utileneldebugging

EntryPoint

Flags Attributi

Text Testodelprogramma

Data Dati

Relocationbits

SymbolTable Usataperildebug

Accesso
Sipuaccedereaifilein2modi:
Sequenzialmente,ovveroscorrobyteperbyte
Random,possosaltaresubitoadunacertaposizione

SistemiOperativi17
Directories
Utilizzateperraggruppareinsiemidifile.Esisteunagerarchiainmodochelutentesiafacilitato
neltrovareilfilechecerca.
Perinoltrarsinelledirectorysihabisognodipathcheindicanodovesitrovaunfile.Esistono
duetipidipath:
assoluti,siiniziaaelencareilpercorsodallacartellaroot
relativi,siiniziadallaworkingdirectory

Implementazione
Disco
IFileSystemsonoimplementatisudisco.
Ilsettore0diundiscovienechiamato
MasterBootRecord (MBR)eserveafarpartireilSO.
LafinedellMBRcontienelatabelladellepartizionidoveunainparticolaredenominatacome
attiva.IlBIOSesegueilbootblock
(primobloccodellapartizioneattiva)cheasuavoltacarica
ilSOinmemoria.

File
Ifilesonodivisi,unpocomeaccadeperiprocessi,inblocchididimensionefissata.
Laregola:blocchipiccoliimplicasprecoditempo,blocchigrandisprecodispazio
(frammentazioneinterna).

Allocazione contigua
Ifilesonosalvatiinblocchicontigui.Seunbloccohadimensionedi1KB,unfiledi50KBviene
memorizzatoin50blocchiconsecutivi.
Questoapprocciosempliceemoltoperformante(unavoltatrovatoilbloccoinizialelatestina
leggetuttoilfileinunavolta).
Unosvantaggiopesanteperlaframmentazione.
VieneutilizzatoneiCDROM,doveifileunavoltascrittinonpossonoesserepicancellati.

Linked List
Ilfilerappresentatodaunalistadoveogninodocontienelinformazionedellaposizionedel
bloccosuccessivo.Nonhoframmentazionemaunaletturaimpiegatroppotempoinoltreutilizzo
unapartedibloccoperilpuntatoreinvececheperildatostesso.
Unvantaggiochebastasalvarenelladirectorylindirizzodelprimobloccoperrecuperaretutto
ilfile.

File Allocation Table


Inmemoriasitieneunatabelladoveognirigacorrispondeunbloccoinmemoria.Inognirigavi
scrittoqualilprossimobloccodaricercarenellatabellastessa.Ladifferenzaconlalistaqui
soprachequestatabellainmemoriaprimariaedquindimoltopivelocelaccesso
(scorrerla).Perladimensionediquestatabellacrescelinearmenteconladimensionedeldisco
poichognibloccodeveesseremappato.

SistemiOperativi18
Inodes
Ilfilestrutturatocomeunarray(dimensionefissata)diindirizziaiblocchidimemoriaoccupati
daquelfile.Seunfilehabisognodipiindirizzi,lultimoelementodellalistapunteradun
bloccoinmemoriadovesarannocontenutialtriindirizzi.
Linodedeveesserecaricatoinmemoriasoloquandoilfileapertoquindinonoccupasempre
spazio.Eccoun esempiodiaccessoafile
tramiteinode.

Directories
Devonocontenerelinformazionenecessariaalocalizzareilfilesudiscoilpuntatorealprimo
bloccooccupatodalfilesufficienteaquestoscopo.Inoltreladirectorydeveconteneregli
attributidituttiifilechecontiene.

Blocchi liberi
Esistonodueapprocci:
Listelinkate
bitmap
Analizziamoilprimo,immaginandodiavereblocchidi1KBecheperindirizzareunbloccoin
memoriaservano32bit.Lalistavieneimplementatausandocomenodiiblocchisudisco,dove
ognibloccocontiene1KBdiindirizzidiblocchiliberi(1KB/32bit=255indirizzi+indirizzoalnodo
successivo).Inundiscoda500GBconblocchida1KBsihanno 500 * 220 blocchidamappare,
servonoquindi 500 * 220/255 blocchi(circa2milionidiblocchicorrispondentia2GB)per
mapparetuttalamemoria.Poichsiamosudiscoquestodatononcipreoccupa.

Inmemoriaprimariasitienesolo1bloccodellalista(occupo1KBchecorrispondeaconoscere
255KBdidiscolibero)inmodocheseunprocessocreaunfilesadovememorizzarloepu
aggiornarevelocementelalista,analogamentesedevecancellarlo.Mantendendoinmemoria
unbloccopienoametsihalefficienzaottimale.Tenendoloquasipieno(diblocchiliberi)seun
filevieneeliminatoilbloccoinmemoriasarsaturatoequindidovrsalvarloinmemoriae
crearneunonuovosesubitodopounfilevienecreatodovrcederedeiblocchiquindidovr
caricaredallamemoriailvecchioblocco.ComesievincectroppoI/Oinutilechesipuevitare
tenendoilbloccopienoamet.

Ibitmapinvecememorizzanounbitperbloccoemappanotuttalamemoria.Permappare
500GBdivisiinblocchida1KBhobisognodi 500 * 220 bit(circa65MB),moltomenochenel
casoprecedenteanchesequandolamemoriaquasipienaladifferenzaminima.

SistemiOperativi19
Consistenza
Laconsistenzadelfilesystempuesserecontrollatadadiversitooloffertidalsistemaoperativo
stesso.Cichequestiprogrammifannocontrollarelalistadeiblocchiliberielinteroalbero
delledirectorycontandoquantevolteunbloccooccorrediversesituazionipossonopresentarsi:
Ognibloccopresenteunasolavoltainunadelledueliste:tuttook.
Unbloccononpresenteinentrambeleliste:nessunproblemasolounosprecodi
memoria.
Unbloccopresenteinentrambe:deveesseretoltosubitodallalistadeiblocchiliberi
altrimentipuessereassegnatoadunaltrofile.
Unbloccopresente2voltenellalistadiquelliliberi:devoeliminareunoccorrenza
altrimentipuvenirassegnato2volte.
Unbloccopresente2voltetraifile(2diversifile):unodei2filesarsicuramente
corrotto,nonpossofaraltrocheduplicarequelbloccoinmodocheognifileabbiailsuo
blocco.

Ottimizzazione
Cacheperridurregliaccessialdisco.
BlockReadAhead,leggodeiblocchianchesenonsonostatirichiestielimettoin
cache.
Ridurreimovimentidelbracciodeldiscocercandodicollocareiblocchidiunfilein
modointelligente.
Deframmentareildiscoinmododariallocareifileinmodocontiguo.

SistemiOperativi20
Input/Output
IlS.O.sioccupadigestirelecomunicazioniconidispositividiI/O.
LaparteelettronicadiununitI/Oilcontroller:nelcontrollercisonodeiregistriusatiper
comunicareconlaCPU,perfarcicisono2metodi:
1. AognicontrolregisterassegnatounI/Oportnumber=> I/OPortspace .
2. Aognicontrolregisterassegnatounindirizzodimemoriaunivocononutilizzato(quindi
laramnonpotrusarlo)=> MemorymappedI/O :
3. Oppureimplemetazioneibrida.
InpraticalaCPUmettesulbusdisistemalindirizzorichiesto,especificasefapartedellI/O
Port/MemorySpace.
OgnidispositivodiI/Oattaccatoauncomputerhabisognodiuncodicechedipendedal
dispositivoperesserecontrollato:i
devicedriver .

DMA (Direct memory access)


ConimetodidescrittilaCPUaprendereidatidallunitdiI/O.SelaCPUbusyesta
facendoaltrocipotrebberoesseredeiritardi.UnmetodoalternativoilDMA.IlDMAun
componenteelettronicochepuaccederealbusdisistema.AlpostodiusarelaCPUper
gestirelacomunicazioneconidispositividiI/OseneoccupailDMA.
Quellochesuccedequesto:laCPUinizialmentedicealDMAcosaedovedevesalvareidati
(memoriaprimaria),poidaquelmomentoilDMAsioccupadigestireidatidelleunitI/O.Una
voltacompletatomandauninterruptallaCPU.

Gestione delle interruzioni


1. QuandoundeviceprontoedevefarequalcosaconlaCPU,ildevicemandaun
interruptsulbusdisistema.
2. QuestosegnalepresoacaricodallInterruptController,ilqualevedesecisonoaltri
interruptincodaopudirettamenteinviarequestointerruptallaCPU.
3. LaCPUquandoriceveuninterruptsmettedifarequellochestavafacendoecominciaa
occuparsidicichehacausatolinterrupt,prendendoilPC(programcounter)
dallinterruptvector(gestiscelinterruzione).
4. Quandovieneeseguitalagestionediuninterruptsisalvanoiregistriassemblerdel
processointerrotto(nellostackdelkernel),segnalatoallInterruptcontrollerquandopu
inviareunnuovointerrupt,svegliatoildriveropportuno,eseguitoloscheduler,e
caricatoilnuovoprocesso.

I/O Software
Deviceindependence: Possibilescrivereprogrammichepossonoaccedereaidispotivi
diI/Osenzadoverspecificareildispositivoindettaglioqual.
Uniformnaming: Ilnomedelfileodeldispositivonondevedipenderedaldispositivo
(deveessereunastringaounintero).
Errorhandling: Seilivellibassinonriesconoaoccuparsidellerrore,alloradevono
essereilivellialtiaoccuparsene(livellosoftware).

SistemiOperativi21
Synchronous(blocking)vsAsynchronous(interruptdriven): MaggiorpartedellI/O
asincrono(vediilDMA,lacpuimpostailDMAepoifaaltrofinchnongliarriva
linterruptchehafinitoiltrasferimento).Perisoftwarepifacileusarelamodalit
sincrona:dopounasystemcallmagaridiletturadiundispositivo,ilprogramma
sospesoerimaneinattesafinchidatinonsonodisponibilinelbuffer.Tuttoquesto
gestitodalO.S.
Buffering: dovemettoidatiunavoltaarrivati?Inmemoriaoinunaltrodispositivo?
Sharablevsdedicateddevices: AlcunidispositiviI/Opossonoessereutilizzatidapi
utentiallostessomomento.Alcuniinveceno.Einquestoultimocasosihannoi
Deadlocks .(Peresempioinastrimagneticinonpossonoessereutilizzatidapiutenti
insieme,mentreidischidioggisi).

Programmed I/O
SeunprocessovuolescriveresuundispositivodiI/Oinquestamodalitesegueiseguenti
step:
1. SystemcallperacquisireildispositivodiI/O(errorsenondisponibile).
2. LO.S.copiaidatidascriveresuunbuffernelkernelspace.
3. LOS.aspettafinchildispositivodiI/Odisponibileescriveidati.Senonriesceafinire
aspettadinuovofinchildispositivonondinuovodisponibile:questamodalitsi
chiamapolling
obusywaiting .
SemplicemausalaCPUfulltimefinchnonhafinito.

Interruptdriven I/O
EcomeilprogrammedI/O,malaCPUalpostodiaspettareildispositivofaaltro,ovvero
eseguealtriprogrammi(contextswitch).UnavoltacheildispositivodiI/Ohafinitoinviaun
interrupt.

DMA I/O
LosvantaggiodellinterruptdrivenI/Ochepotrebberoessercimoltiinterrupt.Unasoluzione
diusareilDMAchesioccupadigestiretuttoquanto.IlDMAprogrammatocomeProgrammed
I/O.SolocheilDMAcontrollerafareillavoroenonlacpu.Svantaggi?Epilento.

Software layer
Ildriverdiundispositivolapartedelsistemaoperativocheinteragisceconildispositivo:
legge/scriveiregistridicontrollo
trattalecaratteristicheabassolivello
fornisceunainterfacciaastrattadeldispositivoindipendentedaidettaglihwalrestodel
sistemaoperativo
tipicamentesviluppatodalcostruttoredeldispositivo

Tipicofunzionamentodiundriver:

SistemiOperativi22
1. Inizializzaildispositivo
2. Accettarichiestedioperazionienecontrollalacorrettezza
3. Gestiscelecodedellerichiestechenonpossonoesseresubitoservite
4. SceglielaprossimarichiestadaservireelatraduceinunasequenzaSdicomandia
bassolivellodainviarealcontrollore
5. TrasmetteicomandiinSalcontrolloreeventualmentebloccandosiinattesadel
completamentodellesecuzionediuncomando
6. Controllalesitodiciascuncomandogestendoeventualierrori15
7. Invialesitodelloperazioneedeventualidatialrichiedente

Leinterfacceastrattefornitedaidrivervengonoclassificateinduecategorieprincipali:
1. interfacceablocchi(blockoriented):
lalettura/scritturasuldispositivofisicoavvieneunbloccoallavolta
tipicamenteidatiscrittivengonobufferizzatinelSOfinchnonsiraggiunge
lampiezzadiunblocco(es:dischi,nastri)
2. interfacceacaratteri(characteroriented):
lalettura/scritturasuldispositivofisicoavvieneuncarattereallavolta
Noncbufferizzazione(tastiera,mouse,)

Alcunidispositivifornisconoentrambeleinterfacce.Solitamenteidriverimplementanodelle
funzionistandarddiletturascrittura(read(),write()).

Device indipendenti dal software I/O


AlcunifunzionisonoindipendentidaldispositivodiI/Ousato.Questesono:
Interfacciaunificataperlefunzionalitdisistemaforniteaidriver
Bufferingdelleinformazioni
Errorandsignaling
Allocareerilasciarelerisorse
Deviceindependentblocksize

User space I/O software


FunzionalitdelsoftwarediI/Ochegirainspazioutente:
1. librerielinkabilidaprogrammiutente(es.stdio,unistd...)
passanoiparametrialleSystemcallsnelmodogiusto
gestisconolaformattazione(es.printf()..)
2. spooling
processoutente(daemon)
directorydispool(incuilutentecopiailfiledastampare,dopoildaemonsi
occuperdistampareilfile,lunicochepufarlo)

SistemiOperativi23
SistemiOperativi24
Dischi
Ipicomunisonoidischimagnetici(harddisks,floppydisks)eidischiottici(cdrom,etc..)

Magnetic disks
Idischimagneticisonoorganizzatiincilindri,dicuiognicilindrocontienetantetracciequanti
sonoipiattideldiscoimpilatiunosopralaltro.Letracciesonodiviseinsettori(Ognisettore
numeratoattornoallacirconferenzadeldisco).

Neivecchidischiilnumerodisettoripertraccia
eralostessopertuttiicilindri.Idischimodernihannopisettorinellaparteesternadelpiatto
cheinquellainterna.
NeidischimodernisupportatounsistemachiamatoLogicalBlockAddressing,ilquale
specificacheisettorisonoidentificatipartendoda0inmanieracrescente,senzapreoccuparsi
dellageometriadeldisco.

SistemiOperativi25
RAID Redundant Array of Inexpensive Disks
LideanatapercercaredimigliorarelI/Odeidischi,cheadifferenzadellavelocitdellecpu,
nonhalastessacrescitadivelocit.
Lideabasediaveretantidischi(nonsolouno)perpermettereilparallelismo.Questofatto
graziealControlloreRaid.IlcontrolloreRaidfasichealS.O.larraydidischiappaiacomeun
unicodisco.Idatipossonoesseredistribuitisupidischiperfavorirelelettureparallelediparti
dellostessofile,perfarcicisonodiversetipologiediRAID(distribuireidatisupidischisi
chiama striping):

RaidLevel0 Ildiscovirtualedivisoin strips(striscie) ,doveognistripcontiene x settori.Lostrip0conterr


isettorida0a x 1 .Se x = 1 lostripcorrispondealsettore.Nellivello0ilRAIDmettegli
stripsconsecutivineidriveseguendolastrategiaRoundRobin(Vediimmaginesotto).
Performanceeccellenteedifacileimplementazione.Reliabilitymoltobassa,noncridondanza
=>nonunveroRAID.

RaidLevel1 Comeraiddilivello0macunacopiadibackupdituttiidischi.Quindicridondanza.

RaidLevel2 IlRAIDlevel2nonlavoraconstrips(strisce)disettori,malavorainbaseallaWORD,o
addiritturainbasealbyte.Peresempio:sisuppongadilavoraresudatidi4bit.Suquesti4bit
ciaggiungiamoilcodicedihamming=>diventadi7bit.Poiognibitvienescrittosuundrive
diversoinparallelo.Questoschemarichiedechetuttiidrivesianosincronizzati,inoltrevengono
eseguitimolticalcoliperilcodicedihamming.

RaidLevel3 Esimilealraidlivello2,maalpostodiusareuncodicedihammingvieneusatounbitdiparite
scrittonelparitydrive.

RaidLevel4 Funzionacomeilraiddilivello0,maogniXstripsvienecalcolatoilparitybytedeglistrips.Per
esempiosevogliofareilparitybytedi4stripseognistripsgrandeYbytes,farloXORdi
questistrips,cherisulterinunparitystripdilunghezzaYbytes.

RaidLevel5 Comelivello5maiparitybytesonosparsifraidrive(vediimmagine).

SistemiOperativi26
Formattazione del Disco a basso livello
Struttura di un settore
Ilsettorediundiscofattoinquestomodo(vedilimmagine).

Solitamenteunsettorecontiene512bytedidati.Ladimensionediquesticampidipendedachi
produceidischi,ancheseperesempiosolitamentelECCha16bytedidimensione.
Inoltretuttigliharddiskshannodeisettoridiriserva(sparesectors)dapoterusareper
rimpiazzareisettoridanneggiati.

Cylinder Skew
Laposizionedelsettore0diognitracciaspostatarispettoallatracciaprecedentediuncerto
numerodisettori:questonumerosichiamaoffset,edanchechiamatocylinderskew
(pendenzadelcilindro).Questofattoperpermetterealbracciomeccanicodeldiscodileggere
pitraccieinununicaoperazionecontiguasempreperderedati.Ovvero:seleggounatraccia
intera,eritornoalsettore0,semidevospostareallatracciasuccessivanelfrattempochemi
spostosonogisulsettore0dellatracciasuccessiva,perviadiquestooffset.


Supponiamodiavereundiscocheruotaa
6msec .Ognitracciacontiene300settori.
Quindifaunsettoreogni:
6*103 = 20 106 = 20sec
*3 102 *
Seperfarpassarelatestinadaunatraccia
allaltraservono 800sec alloradurantequesto
tempopassano 800/20 = 40 settori.Quindiil
cylinderskewdovrebbeesseredi40settori.

SistemiOperativi27
Interleaving

Leggeresenzainterruzionirichiedeunbufferdatidigrandidimensioninelcontroller.
Consideriamouncontrollercheha
unbufferdi512byte,eognisettore
hadimensionedati512byte.Quindi
ilbufferpucontenerealmassimo
unsettorepervolta.Sevolessimo
leggereduesettoriconsecutivi,una
voltalettoilprimodovremmo
calcolarelECCetrasferireidatiin
memoria,nelfrattempolaltrosettore
passatovia.Questopuessere
evitatointervallandoisettoriunocon
laltrocomenellimmagine.

Formattazione del disco ad alto livello


Unavoltacompletatalaformattazionedibassolivello,ildiscovienedivisoinpartizioni(dischi
logici).DoveognipartizioneavrilsuoFileSystem(vedilapartedeifilesystem).

Algoritmi di scheduling per il braccio


Iltemporichiestoperleggereoscrivereunbloccodaldiscodeterminatoda3fattori:
1. Seektime (tempodiricerca,ovveroiltempocheimpiegailbraccioaspostarcialcilindro
giusto),solitamenteilvalorepialtoepidecisivo=>ridurlomiglioraleperformance
dimolto
2. Rotationaldelay (tempocheserveperfarpassareilsettorecercatosottolatestinadel
braccio)
3. Tempoditrasferimentodati

Vediamodeglialgoritmipermigliorareilseektime:

FCFS (
FirstCome,FirstServed ):ognirichiestainviataalbracciomeccanicoviene
messainunacodaFIFOedeseguitaunaallavolta.Nonsipufarmoltoperottimizzare.
SSF (
ShortestSeekFirst ):basatosulFCFS,basatosulfattoditrovarelarichiesta
cherichiedeilminortempodiseektime(dispostamentodellatestina).Semiarrivano
richiestepericilindri1,7,13,18esononelcilindro12,primaleggonelcilindro13,poi
nel18,infinenel7e1.RispettoalFCFSdimezzaimovimentidelbraccio.Ilproblema
delSSFchesecontinuanoadarrivarerichiestepercilindriconnumeroalto,eil
bracciogili,ilbracciorimarrsemprelasenzaandareainumeribassiacausadella

SistemiOperativi28
congestionedirichieste.

Elevatoralgorithm (
algoritmodellascensore ):Questoalgoritmocercadirisolvereil
problemadelSSF.Sitieneunbitcheindicaladirezionedelbraccio,UPoDOWN.Se
upilbracciosispostaversoicilindrialti,sennoilcontrario.Senoncisonorichieste
pendentinelleposizioniseguenti,ilversodidirezionedelbracciosiinverte.Una
modificaaquestoalgoritmocheunavoltaarrivatiallarichiestadiposizionepialta,
siripartedalfondo,ovverodallarichiestaconposizionepibassaesivaversolalto.

Gestione degli errori


Neisettoridanneggiaticisonogeneralmentedueapprocci:
1. Occuparseneconilcontrollerdeldisco
2. LasciarechesiailO.S.aoccuparsene

Nelprimoapproccio,primacheildiscosiavenduto,testatoedscrittaunalistadeisettori
danneggiati.Perognisettoredanneggiatocunsettorediriservachelosostituisce
(naturalmentenonsonoinfiniti).
Cisonoduemodiperfarequestasostituzione:
1. Alivellologicosegnarecheunodeisettoridiriservailsettoredanneggiato,ovver
mappare(vediimmagineb))
2. Shiftotuttiisettoriavantidiuno(vediimmaginec)).

SistemiOperativi29

Stable storage

Idealmenteundiscodovrebbefunzionaresempresenzaerrori.Cinonpossibile.Quelloche
sipufareilseguente:quandounafattaunarichiestadiscrittura,ildiscooscrive
correttameneidati,ononfaniente,lasciandoidatiesistentiintatti.Questosistemachiamato
StableStorage edimplementatoalivellosoftware:lobiettivodimantenereildisco
consistente.Nellostablestorage,ognivoltacheeseguiamounascritturasigarantiscecheil
valorescrittocorrettooppureugualeaquellovecchio:permettedimettersialriparodaerrori
chesiverificanoduranteunascrittura.

Lostablestoragefunzionaconduedischiidentici,coniblocchicorrispondentichelavorano
insieme.Inassenzadierrori,iblocchicorrispondentisuentrambiidischisonoidentici(idati
sonoidentici).
Sonodefinite3operazioni:

1. Stablewrites: Scrivounbloccosulprimodisco,poiverificosestatoscritto
correttamente.Senonlostato,allorariprovofinchnonvaabuonfine.Dopo n
fallimenti,ilbloccosostituitoconunodiriserva,eloperazioneripetuta.Unavolta
scrittocorrettamentesul1disco,rifacciolastessaoperazionesulsecondo.
2. Stablereads: Primaleggeunbloccodaldisco1.Seilchecksumcalcolatonon
combaciaconlECC,vienerilettofinoa n volte.Sedopo n voltenonancorastato
letto,alloravienelettodal2disco.
3. Crashrecovery: Dopouncrash,unprogrammadirecoveryconfrontaentrambiidischi
pervedereledifferenzefraiblocchi.Sedueblocchisonouguali,nonfattoniente.Se
unodiquestihaunECCincorretto,ilbloccocorrottosovrascrittoconidatibuoni.Se
entrambiiblocchihannoECCgiusto,madatidifferenti,ilbloccodal1discoscrittonel
corrispondentebloccodel2disco.

SistemiOperativi30
Deadlocks
Uninsiemediprocessiin
stallo
seogniprocessonellinsiemestaaspettandouneventoche
solounaltroprocessonellostessoinsiemepugenerare.

Generalmenteleventoilrilasciodiunarisorsa(stampanti,nastri,tabelle,)
Nessunodeiprocessiinstallopu
Passareinesecuzione
Rilasciarerisorse
Essereriattivato

SupponiamocheunprocessooccupilarisorsaAecherichiedalarisorsaB:seallostesso
istanteunaltroprocessooccupaBerichiedeA=>entrambiiprocessirestanobloccati(vanno
indeadlock).

Risorse
Cisonoduetipidirisorse:
1. Undispositivohardware(stampante)
2. Uninformazione(es:unrecorddiundatabase)

Unarisorsaqualcosachedeveessereacquisita,usata,erilasciatanelcorsodeltempo.

Seunarisorsanondisponibilequandorichiesta,ilprocessochelarichiedeforzatoad
aspettare.InalcuniO.S.ilprocessobloccatoautomaticamentequandounarichiestafallisce,
erisvegliatoquandolarisorsadisponibile.
Inaltriinvecelarichiestafallisceebastaconuncodicedierrore.

Risorse prerilasciabili non prerilasciabili


Unarisorsapuavereduecaratteristiche:
1. Prerilasciabile:
:untipodirisorsachepuesserepresadalprocessochelasta
usandosenzanessuneffettonegativo(es:lamemoriacentrale).
2. Nonprerilasciabile:untipodirisorsachenonpuesserepresadalprocessochela
stausandosenzaeffettinegativi(es:CDROM).

Acquisizione della risorsa


Peralcunitipidirisorse(es:irecordsdiundatabase),toccaalprocesso
utentedigestirelerisorse.Unmododiassegnareunsemaforoaogni
risorsa,inizializzatoa1(ancheimutexvannobene).

Nellimmagineadestrasivedeunesempiodicomevengonogestite2
risorseconunsoloprocesso.
Lecosesicomplicanosecisonopiprocessi.

SistemiOperativi31
Nelcasodidueprocessi,lafigura(a)mostra
uncodicesenzastalli.Lafigura(b)invece
mostrauncodiceconunpotenzialestallo:
ovveroilcasocheilprocessoAprendala
risorsa1econtemporaneamenteilprocesso
Bprendalarisorsa2,dopodichidue
processiaspetterannoallinfinito.

Resource deadlocks
Condizioni per lo stallo
Estatodimostratocheperesserciunostallodirisorsesidevonopresentareleseguenti
condizioni :

1. Mutuaesclusione :ognirisorsaoassegnataaunsoloprocessoolibera.
2. Hold&wait :processichehannoacquisitodellerisorseechelestannoutilizzando
possonorichiederenuoverisorse.
3. Risorsenonprerilasciabili :risorseacquisitedaunprocessononpossonoessere
rilasciateinanticiposenzachesiailprocessostessoarilasciarle.
4. Attesacircolare :ogniprocessoaspettaunarisorsaoccupatadaunaltroprocessonella
catenacircolare.

Modelli per lo stallo


Grazieaigrafiorientatipossiamomodellarecomevengonoallocatelerisorseinmodovisivo.
Indichiamoiprocessicondeicerchi,elerisorsecomedeiquadrati:
Unafrecciachevadallarisorsaalprocessoindicachelarisorsastataacquisitadal
processoinquestione.
Unafrecciachevadalprocessoallarisorsaindicacheilprocessohafattorichiestaper
larisorsa.

SichiamanoanchegrafidiHolt.

SistemiOperativi32
Ingeneralecisonoquattrostrategiausateneglistalli:
1. Ignorarelostallo.
2. Riconoscereedeliminarelostallo: :aspettarecheaccadalostalloepoiagire.
3. Evitare(impedire)lostallo conunascrupolosaallocazionedellerisorse.
4. Prevenirelostallonegandounadellequattrocondizionerichieste.

Ignorare lo stallo Algoritmo dello struzzo



Questoalgoritmosemplicementeignoralostallo,fafintacheilproblema
nonesista.Eunasoluzioneragionevoleselostalloaccaderaramente,
edilcostoperevitarelostallotroppoelevato.

SolitamenteUnixeWindowsusanoquestometodo.


Riconoscere lo stallo ed eliminarlo


Conquestatecnica,ilsistemanoncercadiprevenireglistallidallavvenire:invecelilascia
avvenireedopodichprovaarisolverli.

Riconoscere lo stallo con una sola risorsa di ogni tipo


Pervedereseesisteunostallo,nelcasocisiasolounarisorsadiognitipo,bastafareun
graficodellerisorse(ungradodiHolt).Seesisteunciclonelgraficoalloracunostallo.Da
questografopossiamopurevederequalisonoiprocessicoinvolti.

Riconoscere lo stallo con pi risorse di ogni tipo


Nelcasocisianopirisorsediognitipo,potrebberisultaredifficileusaredeigrafi.Inquesto
casosiusalanotazionematriciale.
Indichiamocon:
E = (E1, E2, ..., En) ilvettoredellerisorseesistenti,doveognicomponentedelvettore

SistemiOperativi33
indicailnumeromassimodirisorsediqueltipo(Peresempio E1 potrebbeessereil
numerodiscanners, E2 ilnumerodiCDROM,etc...).
A = (A1, A2, ..., An) ilvettoredellerisorsedisponibili,doveognicomponentedelvettore
indicailnumeredirisorsedisponibilidiqueltipo.
P = (P 1, P 2, ..., P n) ilvettoredellerisorsepossedute,equivalea E A.
(m)x(n)
C
0 ,matricecon m righe(unarigaperprocesso),e n colonne(unaperognitipo
dirisorsa).Questamatricecontieneilnumerodirisorseallocatetipodirisorsadaogni
processo.
(m)x(n)
R 0 ,matricecon m righe(unarigaperprocesso),e n colonne(unaperognitipo
dirisorsa).Questamatricecontieneilnumerodirisorserichiestepertipodirisorsada
ogniprocesso.
n
Nesegueche C ij + Aj = Ej (Ilnumeromassimodirisorseesistentideltipo j ugualeal
i=1
numerodirisorsedisponibiliditipo j piilnumerodirisorseditipo j usatedaiprocessi).

Percontrollaresecisonostallibisognaprocederecos:
Controllosecisonorichiestechepossonoesseresoddisfato(controllolamatrice R ,
comparandoognirigaconilvettore A ).Senonsipusoddisfarenessunarichiestail
sistemainstallo.
Nelcasononcisianostalli,dolerisorseaunprocessocuipossosoddisfarelarichiesta
dirisorse.Dopodichscrivoilnuovovettore A aggiungendolerisorserilasciatedal
processoinquestione.

Nellimmaginesivedechesipu
soddisfarelarichiestaperil
processodella3riga.
UnavoltafattoilvettoreAsaril
seguente: A = (2, 2, 2, 0) .
Dopodichcancellola3rigadalle
duematricievedocheposso
soddisfarelarichiestadelprocesso
nella2riga A = (4, 2, 2, 1) .
Orapossosoddisfareanchela
richiestadel1processo Nonci
sonostalli.

SistemiOperativi34
Eliminare uno stallo
Unavoltariconosciutochecunostallobisognaeliminarloeripristinareilsistema.

Eliminare lo stallo tramite prerilascio


Siforzailrilasciodiunarisorsadapartediunprocesso,perpoterdarelarisorsaaunaltro
processoepoiridarlaalprocessooriginale.

Eliminare lo stallo tramite rollback


Siesegueunsalvataggioperiodicodellostatodeiprocessi,incasodistallosiripristinalostato
delprocessochehacausatolostallo(ovverodetieneunarisorsacherichiestadaaltri
processi)aunostatoincuinonavevaacquisitoquestarisorsa.

Eliminare lo stallo tramite terminazione dei processi


Eilmetodopisemplice.Siforzalaterminazionediunodeiprocessinelciclodistallo.Se
possibilesisceglieunprocessochepuesserefattoripartire.

Evitare lo stallo
Solitamentenonsipufarusodeimetodipresentatiprecedentementeperriconoscereuno
stallo,perchvienefattaunarichiestaallavolta,enontutteinsieme.
Sipossonocomunqueevitareglistallisecisonodatecerteinformazionidallinizio.Purtroppo
sarquasiimpossibileimplementareinunsistemadeglialgoritmiperevitarelostallo.

Traiettorie delle risorse


Iprincipalialgoritmiusatiperevitareglistallisibasanosulconcettodi
statisicuri .Ilsistema
operativoquandodeveassegnareunarisorsavedeseassegnandolacipotrebbeessereuno
stallo.

Inquestaimmaginelelineeobliqueche
vannoinunsoloversoindicanocheil
processoAoBsonoinattesadiuna
risorsa.Nelcentro [I 2, I 3]x[I 6, I 7] si
hannolineeobliqueinentrambele
direzioni.Sesiarrivasseinquellostato
siavrebbeunostalloperchtuttieduei
processiaspetterebberoperunarisorsa
chehalaltroprocesso.

SistemiOperativi35
Stati sicuri e insicuri
Sibasasullutilizzodeivettori E, A edellematrici R, C .Unostatodetto
sicuro
seesiste
almenounordineincuilerichiestedirisorsedeiprocessipossanovenireseguitesenzafinirein
unostallo,ancheserichiedonoilnumeromassimodirisorsechepotrebberoservirgli.

Facciamolesempioconunsolotipodirisorsa:supponiamocisianoalmassimo10elementidi
questarisorsa.


Partiamodallafigura(a):ilprocessoAha3elementidiquestarisorsa,Bneha2eCnehaaltre
2.Datochecisonoalmassimo10elementisignificachenerimangono3liberi.AdA
potrebberoservirefinoa9elementidiquestarisorsa,Bfinoa4,Cfinoa7.Cisignificache
con3elementiliberipossosoddisfareBdatocheglienebastanosolo2perarrivarea4(b).Una
voltafattociho5elementiliberi PossosoddisfareilprocessoC(c).Infineho7elementi
liberi,quindipossosoddisfareA Nonsonoavvenutistalli,eunostatosicuro.

Alatocla
dimostrazione
diunostato
nonsicuro.

Bisognanotarecheunostatononsicurononandr sicuramenteinstallo. Questoperchsono


decisionipresesulnumeromassimodirisorsecheogniprocessopotrebbechiedere,inrealt
unprocessonerichiedermoltemenodirisorse.Quellochepossiamodire cheseunostato
sicuro,alloragarantitochenoncisarannostalli.

Algoritmo del banchiere per una risorsa


Primadiiniziarelesecuzioneogniprocessodichiarailmassimonumerodirisorsecheglisono
necessarie.Adognirichiestadiunanuovarisorsalalgoritmocontrollaseaccoglierelarichiesta
portaadunostatosicurooinsicuro:

Perogniprocessosicalcolanoleunitdirisorsaancorarichiedibili(R=MaxHas)

SistemiOperativi36
SiconsideranoiprocessiinordinediRcrescentecontrollandocheognunopossa
ancorarichiedereRrisorseeterminarecorrettamente
Setuttiiprocessipossonoterminarecorrettamentelostatosicuro
Sololerichiestecheportanoastatisicurisonoaccolte.

Algoritmo del banchiere per risorse multiple


Funzionaesattamentenellostessomododelriconoscere
lostalloconpirisorsepertipo.Solamentechelamatrice
C siriferiscealnumeromassimodirichiestechepotrebbe
fareilprocesso.Purtropporaramenteusatoperchnon
siconosconoaprioriquanterisorsepotrebbeusareal
massimounprocesso.Naturalmentesiapplicaancheal
casoconunasolarisorsa.

Prevenire lo stallo
Perprevenirelostallobisognaeliminarealmenounadellequattrocondizioninecessarieper
avereunostallo.

Eliminare la condizione di muta esclusione


Alcunidispositivi(adesempiolestampanti)possonoesseregestiticonspool:
Iprocessiscrivonoloutputinunareadispool
Soloilgestoredellastampanterichiedeeusalastampante
Quindilostalloperlastampanteeliminabile
Purtroppoper:
Nontuttiidispositivipossonoesseregestiticonspool
Cipuesserestallonellaccessoallareadispool

Bisognaevitarediassegnareunarisorsaquandononstrettamentenecessario,efarinmodo
cheilminornumeropossibilediprocessipossarichiedereunarisorsa.

SistemiOperativi37
Eliminare la condizione di Hold & Wait
Bisognaprevenirecheiprocessichehannogiacquisitodellerisorsenepossanoacquisire
dellealtre.
Perfarcibisognarichiederechetuttiiprocessifaccianodomandapertuttelerisorseche
userannoprimachevenganoeseguiti.Seognirisorsadisponibileilprocessoverreseguitoe
lerisorseallocate.

Unproblemacheiprocessinonconosconoaprioriquanterisorseuseranno.Infattiselo
sapesserosipotrebbeusarelalgoritmodelbanchiere.Unaltroproblemacheconquesto
metodolerisorsenonsarebberoutilizzateinmodoottimale.

Unavariazionedirichiederealprocessochehafattodomandaperunarisorsadirilasciare
temporaneamentetuttelerisorsechehagiacquisito,equindirichiederetuttequelle
necessarie.

Eliminare la condizione non prerilasciabilit


Questaopzionenonpossibile:dipendeanchedaltipodirisorsa(conlamemoriasipufare,
conunastampanteno:nonpossocederelastampanteaunaltroprocessoametdella
stampa!).Sipufarevirtualizzandolarisorsa(spoolingperesempio).Nontuttelerisorsesi
possonovirtualizzare.

Eliminare la condizione di attesa circolare


Lacondizionediattesacircolarepuessereeliminatainvarimodi:
1. Unmododiimplementareunasempliceregola: unprocessolegatosoloe
solamenteaunasolarisorsainqualsiasimomento .Nelcasogliservisseuna
secondarisorsadeveprimarilasciarelaprima.
2. Unaltrometododi ordinarelerisorseinmodonumerico .
Laregolalaseguente:unprocessopurichiederelerisorsequandovuole,male
richiestedevonoesserefatteinmodonumericocrescente.Seunprocessohaacquisito
unarisorsaditipo1poipotrchiedererisorseditipo>1.
Nelcasoilprocessoabbiaacquisitounarisorsaditipo3,nonpotracquisirerisorsedi
tipo<3.
Unapiccolavariantelaseguente:seunprocessorilasciatuttelerisorsepoipotr
ripartiredallarisorsadinumeropibasso.

SistemiOperativi38
Tabella riassuntiva delle condizioni

SistemiOperativi39

Potrebbero piacerti anche