Operativsystemer.  Begrepet kritisk region er sentralt i forbindelse med datamaskinsystemer.  Generelt kan en kritisk region defineres som et sted der.

Slides:



Advertisements
Liknende presentasjoner
HVA ER ?.
Advertisements

Support, nye funksjoner og tjenester fra Uni Pluss
Teknologi i klasserommet
v/Tormod Engebu, IKAVA KDRS 13. november 2013
Ebus Management Center En liten bruksanvisning for de enkleste funksjonene.
Høgskolen i Oslo Webprogrammering Tilstandsbevaring Sessions og cookies.
Er datasikkerhet viktig for deres firma ? Hva ville dere gjøre hvis alle data plutselig ble borte ved: •Tyveri ? •Brann ? •Datahavari ? •Menneskelig svikt.
Hvordan etablere nettbutikk med GoOnline Commerce
22 tips for den faglitterære forfatteren
eDialog24 Operator Nyheter og endringer i versjon Sentinel eDialog24 AS Ingvald Ystgaards vei 3A 7047 Trondheim Telefon: Faks:
Bilderedigering 6e Kopiere bilde
Slik kommer du til «Personverninnstillinger»: Logg inn på Facebook.
Lag film. Lag video •Videoteknologien har utviklet seg raskt de siste årene. Digital video er i ferd med å avløse analoge systemer. Med digital video.
En innføring i spillet: Dobbeltkrig – Grønn
Kapittel 6 Data Backup Service. Tradisjonell arkitektur •Mange klienter •En server (evt. et cluster) •Klientene tar backup m jevne mellomrom •Inkrementell.
Sikkerhet - bakgrunn og introduksjon til kryptosystemer
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Gruppe 6 Gunnar Henrik Mathias Morten Ronny Svein Ivar.
Operativsystemer.  En prosess kan sees på som et stykke arbeid som skal utføres på datamaskinen.  Ofte vil det være flere prosesser/tråder på datamaskinen.
Begrenset redigering “Klubbjournalister” For web ansvarlig klubb.
PowerPoint laget av Bendik S. Søvegjarto Konsept, tekst og regler av Skage Hansen.
Input / output Operativsystemer.
Operativsystemer.  Begrepet kritisk region er sentralt i forbindelse med datamaskinsystemer.  Generelt kan en kritisk region defineres som et sted der.
IS-102 Klassedefinisjoner
Forside Korteste sti BFS Modifikasjon Dijkstra Eksempel Korrekthet Analyse Øving Spørsmål Dijkstras algoritme Åsmund Eldhuset asmunde *at* stud.ntnu.no.
Aksess kontroll None shall pass.
Eksempel AOA (Activity On Arc)
Kompleksitetsanalyse
Generelt I/O if/else Funksjoner Lists Løkker Dictionaries Annet Listebehandling Klasser Python med noen algdat-anvendelser Åsmund Eldhuset asmunde *at*
Operativsystemer.  Tilstandsmaskiner kalles på engelsk Finite State Machines.  Tilstandsmaskiner er en metode til å beskrive systemer med logisk og.
Operativsystemer for multiple prosessorer
Om prosesser.
Feilhåndtering. Feil er uunngåelige! Erfaring viser at feil i dataprogrammer som består av mer enn noen få linjer ikke er til å unngå. For å få et godt.
Jæger: Robuste og sikre systemer INF150 Programmering mandag 2.10 Default values – standardverdier ved oppstart MER OM: Sub-prosedyrer og sub-funksjoner.
Gjennomgang av prøven Tidsangivelse. Prøven deles ut Vi fyller ut øvelsen sammen.
Hva er Fronter.
1 Innføring i IDS (Intrusion Detection System) Som en enkel start på forskjellige måter å oppdage inntrengere på, skal vi se på en variant av dette som.
Gruppe 32E presenterer. Windows 2003 Server Novell Netware 6.5.
Apache POI.
En beskrivelse av IKT i skolen Sett fra en lærers ståsted
Input / output Operativsystemer.
Hvordan uttrykke krav Kapittel 4.4. Innledning Målet er å samles rundt ett entydig språk som ikke kan misforståes eller feiltolkes. Gjør sporbarheten.
Gruppe 3 – Presentasjon 2 Henning Kristiansen, Mats Lindh, André Hauge og Vegard Simensen.
Teknikker for å bedre design- prosessen -Design by contract -Prototyping design -Fault-tree analyses.
NEWS Et uvurdelig hjelpemiddel i hverdagen. Hva skal vi gjennom i dag Hva er news? Hva brukes news til? Programmer og grupper Noen ord og uttrykk Noen.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
INF 295 Algoritmer og datastrukturer Forelesning 10 Invarianter og Hashing Hans Fr. Nordhaug (Ola Bø)
Høgskolen i Oslo Webprogrammering Ajax og PHP. I dag l Hvordan få en bedre brukeropplevelse via Ajax- script l Gjennomgang av kode l Oppgaveløsning på.
Publisering på verdensveven Kursdag 1 VÅFF, våren 2002.
Hvordan kan foreldre bruke de vangligste funksjonene i Itslearning.com
ESøknad - Et webbasert system for elektronisk innlevering av søknader om forskningsmidler Kort presentasjon av systemet beregnet på prosjektledere/forskere.
Andre funksjoner.
INF 4130 Eksamen 2008 Gjennomgang.
Jæger: Robuste og sikre systemer INF150 Programmering mandag 18.9 Lesing av data fra fil og skriving av data til fil. Side 411 – 4.. Kap 4.
Programmering sif8005. Praktisk informasjon  Innleveringsfrist øvinger: mandag kl  Alle øvinger er obligatoriske  Studass tilgjengelig 6 timer.
KONFIDENSIELT. Distribusjon bare til partnere i henhold til avtalen om taushetsplikt. Microsoft gir ingen uttrykte eller underforståtte garantier. © 2012.
Parallellisering av Coin3D for Systems in Motion av Sveinung Thunes.
Disaster Preparation/Recovery Solutions and Messaging Backup/Restore Exchange server 2003.
Android-Programmering Våren Oversikt Ytelse vs responsivitet Strategier for og opprettholde responsiviteten Tråder Asynchronous Task.
Notes ved UiO Steinar Skogheim. Steinar Skogheim, USIT Målet med dette kurset Målet er å gi en oversikt over hvordan Notes generelt fungerer og brukes.
Myter – organisasjon og ledelse i barnehagen
Inf1000 (Uke 5) Arrayer, filer og tekst
Jæger: Robuste og sikre systemer INF150 Programmering torsdag 14.9 Ulike måter for å lese inn og skrive ut data. Kap. 3.5 mer om if – setninger Ferdige.
Android-Programmering Våren Oversikt Long-running operasjoner Introduksjon til Android services On-demand service Bruk av servicer på tvers av prosesser.
© UNIVERSITETETS SENTER FOR INFORMASJONSTEKNOLOGI UNIVERSITETET I OSLO USIT Side 1 Patching En patch er en fiks for en eller flere feil i et program/operativ.
Teknologi. Simulator oversikt Nettverk Kontroll- systemer Subsea Muligheter for egenproduserte kontrollsystemer for Fugro-verdenen Større mulighet.
Kom i gang med Python Pål Hellesnes SYSTEMUTVIKLER
Internett som elektronisk kommunikasjonsmiddel
IN3030 – Effektiv parallellprogrammering Uke 1 2. del, våren 2019
Utskrift av presentasjonen:

Operativsystemer

 Begrepet kritisk region er sentralt i forbindelse med datamaskinsystemer.  Generelt kan en kritisk region defineres som et sted der det kan oppstå kollisjoner. Operativsystemer

 I trafikken vil et veikryss være en kritisk region fordi biler lett kan kollidere der.  Derfor er veikryss regulert enten av trafikklys, rundkjøringer eller regler for vikeplikt. Operativsystemer

 En definisjon på kritisk region i et dataprogram  En kritisk region er et stykke programkode som forsøker å få tilgang til en ressurs som ikke kan deles. Operativsystemer

 Om flere tråder får tilgang til samme ressurs kan det føre til kollisjoner.  Dette kan igjen føre til at programmet ikke fungerer på normal måte. Operativsystemer

 Vi skal se på et eksempel på en kollisjon mellom to tråder.  Vi har to tråder som bruker en felles tallvariabel som heter sum.  Den ene tråden øker verdien til sum med 1.  Den andre tråden avtar verdien til sum med 1. Operativsystemer

 Vi har følgende situasjon double sum= 0.0 ;// Felles variabel Tråd 1sum += 1; Tråd 2sum -= 1; Operativsystemer

 I tråd 1 legges 1 til i sum. I tråd 2 trekkes 1 fra sum.  Dette vil som oftest fungere bra.  Men det kan gå galt hvis trådene forsøker å gjøre dette samtidig når det skjer en trådutskifting i prosessor. Operativsystemer

 Det som kan skje er at tråd 1 er i prosessor og blir avbrutt av en trådutskifting akkurat når den skal utføre sum += 1  Da blir tråd 1 tatt ut av prosessor og tråd 2 blir lastet inn i prosessor. Operativsystemer

 La oss si at tråd 1 akkurat har lest inn at sum er lik 4 før den tas ut av prosessor.  Når tråd 1 blir avbrutt vil trådutskiftingen føre til at register verdiene til tråden lagres.  Det vil si at verdien 4 lagres for variabelen sum. Operativsystemer

 Når tråd 2 starter å kjøre i prosessor vil tråd 2 også lese inn at verdien til sum er lik 4.  Tråd 2 vil så utføre sum -= 1  Verdien til sum er nå lik 3. Operativsystemer

 Når tråd 1 allokeres inn i prosessor på ny vil verdiene i registeret som ble lagret, leses inn.  Tråd 1 vil bruke registerverdien til sum fordi denne var akkurat lest inn for bruk, når tråd 1 skulle utføre sum += 1 Operativsystemer

 Tråd 1 vil så utføre sum += 1  Siden tråd 1 bruker at sum var lik 4 vil verdien til sum bli lik 5.  Dette medfører at oppdateringen av sum som ble gjort av tråd 2 vil bli mistet. Operativsystemer

 Konsekvensen av at de to trådene har oppdatert variabelen sum samtidig er at den ene oppdateringen er mistet.  Og dette vil føre til programfeil. Operativsystemer

 Tråd 1 og tråd 2 har begge en kritisk region i koden sin  Tråd 1sum += 1  Tråd 2sum -= 1  Det er derfor behov for et system som sørger for at tråd 1 og tråd 2 ikke er inne i sin kritiske region samtidig. Operativsystemer

 For å sørge for at tråd 1 og tråd 2 ikke er inne i sin kritiske region samtidig kan vi bruke en semafor.  Eller vi kan bruke klassen Monitor som sørger for at variabelen sum bare nås av en tråd om gangen. Operativsystemer

 Kritiske regioner i programkode må reguleres med synkroniserings- mekanismer.  Synkroniseringsmekanismer har derfor en viktig oppgave å unngå programfeil. Operativsystemer

 I Windows operativsystem benyttes mange ulike synkroniseringsmekanismer. Noen av dem er  Keyed Events  Spinlocks  Fast Mutex og Guarded Mutex  Pushlocks Operativsystemer

 Windows bruker en synkroniserings- mekanisme som kalles Keyed Events.  Events brukes i tilfeller hvor tråder samarbeider om en oppgave.  Dette er i tilfeller der en tråd må vente på at en hendelse (Event) har skjedd før den selv kan utføre en handling. Operativsystemer

 En Keyed Event tillater en tråd til å spesifisere en nøkkel (key) som angir hvilken hendelse den venter på.  Tråden vil da vente inntil en annen tråd signaliserer at en hendelse med den samme key har skjedd. Operativsystemer

 Spinlock er en låsmekanisme som benyttes av kjernen i Windows operativsystem til å oppnå eksklusiv rådighet til ressurser.  Før en tråd i kjernen skal få tilgang til en kritisk region, må den spørre en Spinlock om tilgang. Operativsystemer

 Tråden venter i en løkke (spinner) inntil Spinlocken blir ledig.  Tråden vil derfor være i ventetilstand, det vil si være ikke aktiv, mens den venter på at Spinlocken skal bli ledig. Operativsystemer

 Når en tråd har fått tilgang til en Spinlock vil den ha eksklusiv rådighet til den helt til den gir slipp på den igjen.  Å bruke en Spinlock er derfor bare effektivt om en tråd bare skal ha Spinlocken et kort tidsrom. Operativsystemer

 Noe som kalles Queued Spinlocks benyttes ofte istedenfor vanlige Spinlocks.  Queued Spinlocks benytter køer til å henge forespørsler på. Operativsystemer

 Fast Mutex gir ofte bedre ytelse enn en vanlig mutex.  Årsaken er at de kan gå utenom vanlig prosessplanlegging.  Dette gir Fast Mutex spesielt god ytelse i miljøer med flere prosessorer. Operativsystemer

 Guarded Mutex som benyttes av Windows Server 2003 og senere versjoner av Windows brukes til samme oppgaver som Fast Mutex, men er enda raskere. Operativsystemer

 Pushlocks brukes istedenfor Spinlocks for å beskytte datastrukturer i kjernen.  Pushlocks benyttes kun av Windows operativsystem, men det fins også noen drivere som benytter Pushlocks.  En fordel med Pushlocks er at de tar liten plass. Operativsystemer

 Tilgang til en Pushlock kan være både eksklusiv og delt.  Tilgangen kan være delt hvis data bare skal leses.  Hvis en tråd skal forandre på dataene må tilgangen vær eksklusiv. Operativsystemer

 Kritiske regioner kan føre til en situasjon som kalles vranglås (Deadlock).  En vranglås oppstår når to tråder begge forsøker å få tak i en ressurs som den andre kontrollerer. Operativsystemer

 I et datamaskin system er det mange ressurser som kan bli brukt av bare en prosess av gangen.  Dette er ressurser som skjerm, printere, CD spillere, filer, … Operativsystemer

 For en prosess er det ofte behov for tilgang ikke bare til en ressurs, men til flere.  Hvis flere prosesser forsøker å få tilgang til mer enn en ressurs hver kan dette gi opphav til vranglås. Operativsystemer

 Et eksempel på vranglås er når to tråder har åpen hver sin fil for skriving og begge ønsker å åpne den andre trådens fil.  Tråd A har åpen fil 1  Tråd B har åpen fil 2  Tråd A ønsker å åpne fil 2 og tråd B ønsker å åpne fil 1. Begge vil vente evig. Operativsystemer

 Et annet eksempel på vranglås er følgende.  To prosesser ønsker samtidig å skanne et dokument og skrive det til en CD.  Begge prosesser har derfor bruk for både skanneren og CD-en. Operativsystemer

 Den ene prosessen prøver først å få tilgang til skanneren.  Den andre prosessen er programmert annerledes og prøver først å få tilgang til CD-en. Operativsystemer

 Når så prosess 1 forsøker å få tilgang til CD-en og prosess 2 forsøker å få tilgang skanneren samtidig oppstår vranglås. Operativsystemer

 Situasjonen er følgende Operativsystemer Prosess 1Prosess 2 Skanner CD-ROM

 Vranglås kan også oppstå i nettverk.  Ofte er printere, skannere og liknende utstyr en felles ressurs i nettverket.  Vranglås kan derfor oppstå hvis flere maskiner prøver å få tak i delte ressurser i et nettverk samtidig. Operativsystemer

 Vranglås kan også oppstå i situasjoner hvor det ikke er input/output utstyr som inngår.  Vranglås kan for eksempel oppstå ved bruk av en database. Operativsystemer

 To prosesser bruker en database.  Prosess A har lukket noen data i databasen.  Prosess B har lukket noen andre data i databasen.  Hvis nå begge prosesser forsøker å få tak dataene som den andre prosessen har lukket, oppstår vranglås. Operativsystemer

 Et teoretisk tilfelle av vranglås kan oppstå ved trådutskifting i prosessor.  Vi skal igjen se på eksempelet der vi har to tråder som bruker en felles tallvariabel. Den ene tråden legger til et tall i variabelen og den andre tråden trekker fra et tall. Operativsystemer

double sum;//Felles variabel I tråd 1Enter(sum); sum += 1; Exit(sum) ; I tråd 2Enter(sum) ; sum -= 1; Exit(sum) ; Operativsystemer

 Det som kan skje er at akkurat når tråd 1 har utført lukking av sum så er tiden ute for tråd 1 i prosessor og tråd 2 lastes inn i prosessor.  Det som så skjer er at Enter(sum) også skjer i tråd 2. Operativsystemer

 Følgen av at begge tråder har klart stenge tilgangen til variabelen sum er vranglås.  Variabelen sum vil være låst for både tråd 1 og tråd 2.  Begge tråder vil vente i evig tid på å få tilgang til variabelen sum. Operativsystemer

 En definisjon på vranglås er følgende  Noen prosesser er i vranglås hvis hver prosess venter på en hendelse som bare en av de andre prosessene kan forårsake.  Siden alle prosessene venter vil ingen av dem gjøre noe som åpner for de andre prosessene. Operativsystemer

 For at vranglås skal oppstå må følgende betingelser være oppfylt 1. Eksklusiv rådighet betingelsen. 2. Holde og vente betingelsen. 3. Ikke operativsystemstyrt betingelsen. 4. Sirkulær vente betingelsen. Operativsystemer

Eksklusiv rådighet betingelsen innebærer at om en tråd har fått adgang til en ressurs vil ingen andre tråder få tilgang til ressursen. Operativsystemer

Holde og vente betingelsen beskriver situasjonen ved vranglås. Trådene holder på en ressurs og venter på tilgang til en annen ressurs. Operativsystemer

Ikke operativsystemstyrt betingelsen innebærer at en ressurs ikke kan tas fra en prosess. En prosess vil holde på en ressurs inntil den selv gir slipp på den. Operativsystemer

Sirkulær vente betingelsen er når tråder venter på hverandre. Prosess p1 har ressurs R1 og vil ha ressurs R2. Prosess p2 har ressurs R2 og vil ha ressurs R1. Denne situasjonen kan også involvere flere enn to tråder. Derfor navnet sirkulær venting. Operativsystemer

Eksempel på Sirkulær venting med tre tråder involvert. Operativsystemer p1 p2 p3 R2 R1 R3

 Operativsystemet kan forholde seg til vranglås på fire måter 1. Ignorere vranglåsen. 2. Finne vranglåsen og rette den opp. 3. Prøve å unngå at vranglås oppstår når ressurser allokeres. 4. Prøve å unngå at vranglås oppstår ved å unngå at betingelsene for dem oppstår. Operativsystemer

En måte å forholde seg til vranglås på er å ignorere den. Dette kan være akseptabelt hvis vranglås er et sjeldent fenomen.  At et program stopper å virke en gang i året pga vranglås har liten betydning. Operativsystemer

 Et operativsystem kan forsøke å finne vranglås og rette den opp.  Det er utviklet teknikker for å registrere vranglås.  Operativsystemer som gjør dette prøver som oftest ikke å forhindre vranglås. Operativsystemer

 Hvis operativsystemet har oppdaget vranglås er det forskjellige strategier å fjerne den 1. Gjenoppretting ved at operativsystemet griper inn. 2. Gjenoppretting ved tilbakestilling. 3. Gjenoppretting ved å stanse prosesser. Operativsystemer

 Gjenoppretting ved at operativsystemet griper inn innebærer at operativsystemet tar en ressurs fra en prosess og gir den til en annen prosess.  Imidlertid er det ofte vanskelig eller umulig å rette opp en vranglås på denne måten. Operativsystemer

 Gjenoppretting ved tilbakestilling innbærer at en prosess som er med i vranglåsen settes tilbake i tid, slik at den kan begynne allokeringen av ressurser på nye.  For å få til tilbakestilling av prosesser benyttes noe som kalles sjekkpunkter. Operativsystemer

 Sjekkpunkter i en prosess vil si at status for prosessen lagres på en fil på bestemte tidspunkter.  Dette gjør at prosessen kan startes på ny fra et sjekkpunkt. Operativsystemer

 Gjenoppretting ved å stanse prosesser innebærer at operativsystemet avslutter en eller flere prosesser for å fjerne en vranglås.  Dette medfører at de andre prosessene kanskje vil kunne forsette. Operativsystemer

 Istedenfor å forsøke å finne og rette opp vranglås kan operativsystemer forsøke å unngå vranglås.  Operativsystemet kan prøve å unngå at vranglås oppstår når ressurser allokeres. Operativsystemer

 Operativsystemet kan også prøve å unngå at vranglås ved unngå de fire betingelsene for vranglås 1. Eksklusiv rådighet betingelsen. 2. Holde og vente betingelsen. 3. Ikke operativsystemstyrt betingelsen. 4. Sirkulær vente betingelsen. Operativsystemer

Eksklusiv rådighet betingelsen innbærer at for at vranglås skal oppstå er det kun en prosess som har tilgang til ressursen. Hver ressurs er tilgjengelig for kun en prosess om gangen. Denne betingelsen er imidlertid nødvendig for mange ressurser som printere, filer, … Operativsystemer

Holde og vente betingelsen innbærer at for at vranglås skal oppstå vil prosesser holde på en ressurs mens den forsøker å få tilgang til en annen. En måte å unngå dette på er å kreve at en prosess oppgir ressurser den har før den får tilgang til en ny ressurs. Operativsystemer

 Ikke operativsystemstyrt betingelsen innbærer at for at vranglås skal oppstå tas prosesser ut av prosessor ved trådutskifting.  Hvis en prosess får lov til å bli ferdig med en ressurs før den tas ut av prosessor vil vranglås ikke oppstå. Operativsystemer

 Sirkulær vente betingelsen innebærer at for at vranglås skal oppstå må en prosess forsøke å få tilgang til flere ressurser samtidig.  Dette innebærer at hvis en prosess kun forsøker å få tilgang til en ressurs om gangen vil vranglås unngås. Operativsystemer

 Kommunikasjon vranglås er en type vranglås som ikke har med ressurser å gjøre.  Sett at en prosess A sender en forespørsel til prosess B, og så blokkerer inntil den får svar.  Hvis svaret fra prosess B blir borte, får vi en vranglås. Operativsystemer

 Sulting (Starvation) er et problem som er nær knyttet til vranglås.  En tråd som ikke kommer inn i prosessor er i en låst situasjon som ligner vranglås. Operativsystemer

 Vranglås er et mulig problem i et hvert operativsystem.  Vranglås kan oppstå på en rekke forskjellige måter.  To eller flere prosesser vil være involvert i en vranglås. Operativsystemer

 Ved bruk av Monitor kan vranglås unngås ved å angi et tidsintervall. if (Monitor::TryEnter(sum, 300)) { // kode beskyttet av Monitor her } else { // kode å utføre om TryEnter mislykkes } Operativsystemer

 Vranglås fører til en situasjon der en eller to tråder aldri vil bli ferdig med sin oppgave uten at operativsystemet griper inn. Operativsystemer

 Operativsystemet har en del strategier for å unngå vranglås.  Operativsystemet undersøker om vranglås eksisterer, spesielt hvis det merker at systemet går tregt. Operativsystemer

 Hvis operativsystemet finner vranglås forsøker det å få bort vranglåsen.  Måten operativsystemet forsøker rette opp vranglås på er å få systemet tilbake til det stadium som var før vranglåsen oppsto. Operativsystemer

 Windows Server operativsystem har en ressursbehandler (Resource Manager).  Å unngå vranglås på servere er en oppgave for ressursbehandleren.  Ressursbehandleren prøver å oppdage og korrigere vranglås. Operativsystemer

 Driver Verifier er en mekanisme i Windows operativsystem som kan benyttes til å finne feil i drivere og annen kode i kjernen.  Microsoft bruker Driver Verifier til å kontrollere egne drivere og andres drivere som skal være kompatible med Windows. Operativsystemer

 I tillegg til å være et verktøy er Driver Verifier også et hjelpemiddel for systemadministratorer som kommer ut for et system krasj.  Driver Verifier kan blant annet benyttes ved vranglås. Operativsystemer

 Man kan benytte Driver Verifier til å sjekke om det er vranglås.  Driver Verifier holder rede på bruk av Spinlocks og Mutexer.  Driver Verifier kan derfor se etter mønster som kan fremkalle en vranglås. Operativsystemer

 Ofte er det mange tråder som kjører samtidig på en datamaskin.  Disse trådene må på en eller annen måte samkjøres.  Det er derfor behov for mekanismer som tar seg av denne samkjøringen. Operativsystemer

 Vi har sett på følgende mekanismer for samkjøring av tråder.  Semafor  Mutex  Event  Monitor Operativsystemer

 Disse synkroniseringsmekanismene kan deles i to grupper etter hvordan de fungerer. 1. Lukker 2. Signaliserer Operativsystemer

 Semafor, mutex og monitor lukker en ressurs slik at andre tråder ikke kommer til.  Event derimot er en mekanisme som signaliserer når en hendelse er inntruffet. Operativsystemer

 Både, semaforer, mutex, monitor og events kan benyttes til interprosess kommunikasjon.  Interprosess kommunikasjon vil si kommunikasjon mellom ulike programmer, ikke bare tråder. Operativsystemer

 For at en semafor skal kunne benyttes til interprosess kommunikasjon må den gis et navn.  Når et program har opprettet en semafor i minnet, kan andre programmer få tak i den i minnet via navnet. Operativsystemer

 Semaforer med navn kan benyttes av andre programmer som kjører på operativsystemet.  Å bruke navn som kan nås overalt i et operativsystem krever forsiktighet.  Hvis to semaforer har samme navn vil dette kunne føre til at feil semafor blir tatt i bruk. Operativsystemer

 Det finnes flere andre klasser i Class Library som kan benyttes til synkronisering enn de vi har sett på til nå. Noen er  class Threadpool  class Interlocked  class ReaderWriterLock Operativsystemer

class Threadpool gir en enkel måte å synkronisere bakgrunnstråder. Alt vi behøver å gjøre er å henge tråden på en liste. Da vil operativsystemet ta seg av synkroniseringen. Operativsystemer

Man kaller ThreadPool::QueueUserWorkItem(gcnew WaitCallback(minTraad));  En tråd med funksjonen minTraad vil da henges på en liste og systemet sørger for synkronisering. Operativsystemer

class Interlocked Denne klassen gir en metode til å synkronisere en variabel som brukes av flere tråder. Klassen sørger for at kollisjoner mellom tråder ikke gjør at operasjoner går tapt. Operativsystemer

class Interlocked Denne klassen gir en metode til å synkronisere en variabel som brukes av flere tråder. Klassen sørger for at kollisjoner mellom tråder ikke gjør at operasjoner går tapt. Operativsystemer

 if ( 0 == Interlocked::Exchange(brukerRessurs, 1)) { // Har tilgang til ressursen// }  int brukerRessurs;  brukerRessurs er en variabel som angir hvor mange tråder som bruker ressursen. Operativsystemer

class ReaderWriterLock synkroniserer tilgangen til en ressurs. 1. Klassen lar flere tråder lese fra en ressurs samtidig. 2. Men hvis en tråd skal skrive til ressursen vil ressursen lukkes slik at bare denne tråden har tilgang til ressursen. Operativsystemer

class ReaderWriterLock fungerer best når det er flest tråder som skal lese ressursen og få som skal skrive.  Tråder som skal lese og tråder som skal skrive henges på forskjellige køer.  Køen med tråder som skal lese gjøres gjerne ferdig før tråder som skal skrive slippes til. Operativsystemer

class AutoResetEvent  Denne klassen gir beskjed til en tråd som venter, om at en hendelse har skjedd.  Klassen kan derfor brukes til synkronisering av tråder som samarbeider. Operativsystemer

 class ManualResetEvent  Dette er en annen klassen som kan brukes til synkronisering av tråder som samarbeider.  Vi skal se på forskjellen på class AutoResetEvent og class ManualResetEvent. Operativsystemer

 Vi har tidligere sett på class EventWaitHandle  Denne klassen har en input parameter EventResetMode.  Verdien for EventResetMode avgjør om en hendelse skal registreres automatisk eller manuelt. Operativsystemer

 Valg AutoReset :  Når signalisert med Set() vil hendelsen registreres automatisk og tråden vil løslates.  Kall på WaitOne() vil lukke adgang for andre tråder. Operativsystemer

 Valg ManualReset :  Når signalisert med Set() vil alle ventende tråder løslates og hendelsen vil vente på å registreres manuelt.  Kall på WaitOne() i en tråd vil derfor ikke lukke adgang for andre tråder. Operativsystemer

 AutoReset: Tillater bare en tråd tilgang til en ressurs om gangen  ManualReset: Tillater flere tråder tilgang til en ressurs samtidig. Operativsystemer

 Minnebehandling omhandler 1. Hvordan allokere minne til programmer. 2. Hvordan frigjøre minne det ikke er bruk for. Operativsystemer

 Hvordan minnet behandles, vil ha innvirkning på datamaskinens ytelse.  Minnebehandling er derfor en viktig oppgave på en datamaskin. Operativsystemer

 Følgende gir en oversikt over noen problemer med minnebehandling.  Det må være plass til flere programmer i minnet samtidig.  Det er ikke bestandig plass til alle programmer i minnet.  Programmer vil ha ulike adresser i minnet ved ulike kjøringer. Operativsystemer

 Hvis det ikke er plass til flere programmer i minnet samtidig, kan man benytte avvekslende inn- og ut-lasting av programmer. Operativsystemer

 Ved avvekslende inn- og ut-lasting av programmer bytter prosesser på å være i minnet.  En prosess lastes inn i minnet og kjører en stund, for deretter å fjernes fra minnet igjen.  Deretter lastes en ny prosess inn i minnet som får kjøre en stund. Operativsystemer

 Denne utbyttingen av prosesser i minnet kalles swapping på engelsk.  Swapping er en gammeldags metode som ble benyttet tidligere. Operativsystemer

 De fleste moderne minnemodeller faller i følgende tre kategorier. 1. Flat minnemodell 2. Sideinndelt minnemodell 3. Segmentert minnemodell Operativsystemer

 En flat minnemodell benytter lineær indeksering. Indeksene starter på 0 og går opp til et maksimum.  Prosessor bruker indeksene til å få direkte adgang til data lagret i minnet. Operativsystemer

 En flat modell gir en enkel organisering av minnet.  Det er behov for lite ressurser til minnebehandling og man får rask tilgang til data. Operativsystemer

 Sideinndelt minnemodell er mer komplisert enn flat modell og gir litt langsommere tilgang til data.  Sideinndeling (Paging) er en måte å hente og lagre data på fra et lagringsmedia til minnet.  Data behandles som et sett med like store blokker kalt sider (Pages). Operativsystemer

 Fordelen med sideinndeling er at  Det er ikke nødvendig å laste hele programmer inn i minnet på en gang.  Man jobber hele tiden med like store enheter.  Sideinndeling er en viktig del av teknikken som benyttes ved virtuelt minne. Operativsystemer

 Segmentert minnemodell likner sideinndelt minnemodell, men sidene varierer i størrelse.  Dette gjør segmentert minnemodell mer fleksibelt og effektivt en sideinndeling. Operativsystemer

 Ved segmentering er programmer delt i uavhengig adresserte segmenter.  Segmentene er lagret i minnet uten å være sammenhengende. Operativsystemer

 Ulempen med segmentert minnemodell er det er et komplisert system å behandle.  Det er vanskelig å programmere det opp og det kan lett oppstå feil. Operativsystemer

 Virtuelt minne er en teknikk som gir programmer inntrykk av at datamaskinen har et enhetlig og sammenhengende minne.  Dette selv om minnet kan være plassert fysisk på forskjellige medier. Operativsystemer

 Fordelen med en virtuell minnearkitektur er at deler av en prosess kan ligge på harddisken om det ikke er nok plass i minnet. Operativsystemer

 Nesten all implementering av virtuelt minne deler det virtuelle adresserommet inn i sider.  Når en prosess kjører i prosessor leses den inn side for side på samme måte som når vi leser en bok. Operativsystemer

 Operativsystemer benytter teknikken med virtuelt minne til å gjøre det lettere å bruke det fysiske minnet.  Virtuelt minne gjør det lettere for store dataprogrammer å kjøre på systemet. Operativsystemer

 Alle moderne operativsystemer benytter teknikker med virtuelt minne. Operativsystemer

 Minnebehandleren (Memory Manager) i Windows benytter en virtuell minnearkitektur.  I Windows har hver prosess et virtuelt adresserom.  Det virtuelle adresserommet er delt opp i sider. Operativsystemer

 Windows bruker en virtuell minnebehandler.  En virtuell minnebehandler benytter sideinndeling (Paging).  Den laster derfor ikke inn hele programmer når de skal kjøres, men kun aktive deler. Operativsystemer

 Windows støtter sideetterspurt virtuelt minne (Demand-paged Virtual Memory).  Med sideetterspurt menes at operativsystemet bare laster inn sider i minnet som blir etterspurt av en prosess som kjører. Operativsystemer

 Minnebehandleren (Memory Manager) tar seg av behandlingen av minnet.  Den allokerer plass for programmer i minnet når det er behov for det.  Og den fjerner programmer fra minnet igjen når de er ferdig. Operativsystemer

 Minnebehandleren gjør følgende  Implementerer virtuelt minne.  Utfører oppgaver på minne.  Gir støtte for store minner.  Gjør tjenester liksom å holde rede på filer som er en del av minnet.  Gir støtte til hurtigbufringsbehandleren. Operativsystemer

 Dynamisk minneallokering er avsetting av minne til et program som kjører på datamaskinen.  En del av minnet som er avsatt til et dataprogram kalles for frilageret (the Heap). Operativsystemer

 Programmerere kan bruke frilageret til å opprette variabler og objekter.  Variabler og objekter som opprettes i frilageret vil være der til de slettes av programmet eller av søppeloppsamleren (garbage collector). Operativsystemer

 Hver prosess har minst et frilager.  Når prosessen starter opprettes et standard prosessfrilager som eksisterer helt til prosessen blir avsluttet.  Prosesser kan også opprette flere private frilager. Operativsystemer

 Når en tråd kjører må den ha tilgang til en midlertidig lagringsplass hvor den kan lagre lokale variabler, funksjonsparametre og returneringsadresser etter et funksjonskall.  Den delen av minnet som benyttes til dette kalles et stakklager (Stack). Operativsystemer

 I Windows benytter minnebehandleren to stakklagre for hver tråd.  En brukerstakk og en kjernestakk. Operativsystemer

 Når en tråd lages vil det automatisk opprettes en brukerstakk som vanligvis er på 1 MB.  Kjerne stakker er gjerne mye mindre, en vanlig størrelse har vært 12 KB. Operativsystemer