Generelt om operativsystemer

Like dokumenter
Funksjonalitet og oppbygning av et OS (og litt mer om Linux)

Generelt om operativsystemer

Operativsystemer og grensesnitt

Minnehåndtering i operativsystemer

Minnehåndtering i operativsystemer

Definisjon av prosess

Tildeling av minne til prosesser

Tildeling av minne til prosesser

Håndtering av minne i et OS

oppgavesett 4 INF1060 H15 Øystein Dale Hans Petter Taugbøl Kragset September 22, 2015 Institutt for informatikk, UiO

Filer i Linux og Bourne-again shell

oppgavesett 4 INF1060 H16 Hans Petter Taugbøl Kragset Øystein Dale Christian Resell 27. september 2016 Institutt for informatikk, UiO

Tildeling av minne til prosesser

Scheduling og prosesshåndtering

Generelt om permanent lagring og filsystemer

1. Introduksjon til operativsystemer

Læringsmål og pensum. v=nkiu9yen5nc

Hvorfor lære om maskinvare*?

Brukerprogram OS hardware

Filer i Linux og Bourne-again shell

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 1 Introduksjon til Programmering og Python. Professor Alf Inge Wang

AlgDat 10. Forelesning 2. Gunnar Misund

Læringsmål og pensum. Oversikt. Systemprogramvare Operativsystemer Drivere og hjelpeprogrammer. To hovedtyper programvare

Introduksjon til kurset og dets innhold

6105 Windows Server og datanett

Kapittel 1: Datamaskiner og programmeringsspråk

Operativsystemer og nettverk

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

Vedlegg 1: Oversikt over noen mulige leverandører

"How I hate this damned machine, I wish that I could sell it, It never does what I want it to, But only what I tell it".

AlgDat 12. Forelesning 2. Gunnar Misund

Fungerer applikasjonene våre på Windows 7!? Microsoft Application Compatibility Toolkit

Eksempler på ikke-blokkerende systemkall:

Software installasjon og andre ettertanker

Oppgave 1 - Linux kommandolinje (%)

Lars Vidar Magnusson. October 11, Lars Vidar Magnusson () Forelesning i Operativsystemer October 11, / 28

Installasjonsmanual for 1 st part TAPI

Sorteringsproblemet. Gitt en array A med n elementer som kan sammenlignes med hverandre:

Introduksjon til programmering og programmeringsspråk

Introduksjon til fagfeltet

IT1101 Informatikk basisfag, dobbeltime 18/9. Kommunikasjon med perifere enheter. Kontrollere. Kontrollere (2) I/O-instruksjoner

EKSAMEN OBJEKTORIENTERT PROGRAMMERING Alle trykte og skrevne. Java API dokumentasjon er tilgjengelig lokalt på hver maskin.

Installere JBuilder Foundation i Mandrake Linux 10.0

Introduksjon...5. Systemkrav...7. For Windows...9

Hvorfor objektorientert programmering? Objektorientert programmering i Python: Introduksjon. Læringsmål uke 7. Undervisning og pensum IN1000

Hvorfor objektorientert programmering?

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

Oversikt. Informatikk. INF1000: Grunnkurs i objektorientert programmering. Utenom INF1000 Informasjon & hjelp

Eksamen DAT 103. Oppgave 2. Kandidatnr.: 145 1) B 2) B 3) A 4) A 5) D 6) C 7) B 8) A 9) A 10) D

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

Kravspesifikasjon MetaView

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

C# (.Net) EE1212 Objektorientert programmering

Dagens temaer. Kort repetisjon. Mer om cache (1) Mer om cache (2) Read hit. Read miss. Write hit. Hurtig minne. Cache

Operativsystemer: Litt IT-historie

Nadine Pedersen GRIT Datamaskinen- kjenn din Mac

GJENNOMGANG UKESOPPGAVER 9 TESTING

Introduksjon til programmering og programmeringsspråk. Henrik Lieng Høgskolen i Oslo og Akershus

P L A N I A 8 S Y S T E M K R A V PLANIA 8 SYSTEM KRAV. Plania 8 Systemkrav.docx av 8

Kapittel 9: Følge Instruksjoner Prinsipper for Datamaskinens Virkemåte

HiOA TDK. Ingeniørfag data. DATS1600 Programutvikling. Eva Hadler Vihovde. Prosjektoppgaven Prosessdokumentasjon - Alternativ 1

Kurset består av to relativt uavhengige deler. Foreleser: Hårek Haugerud, rom PS431

TDT ITGK - Hardware. Kapittel 9: Følge Instruksjoner - Prinsipper for Datamaskinens Virkemåte. Terje Rydland - IDI/NTNU

Logaritmiske sorteringsalgoritmer

Hvorfor operativsystemer? Introduksjon til operativsystemer. Samtidighet. Praktiske hensyn. Kjell Åge Bringsrud INF103

Bits&Bytes Om datamaskinens oppbygging og virkemåte. TOS - IKT Tirsdag 4. desember 2012 Seksjon for digital kompetanse

Marius Rogndalen Karlsen, Informatikk Lab oppgave

Operativsystemer: Litt IT- og Linux-historie

VMware ESX og krav til hardware

Hva er en stack? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist

Hva er en stack? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist

Definisjon av prosess

Introduksjon til operativsystemer

Filterprogrammer og redirigering av I/O

Kraftig Dual-Core-ytelse for dagens og morgendagens bedrifter

Skisse til løsning for eksamensoppgave i TDT4186 Operativsystemer

EKSAMEN. Operativsystemer og nettverk

Innhold. 1 Operativsystemet Linux. Operativsystemet Linux. 1.1 Hva er Linux?

Datastrukturer for rask søking

Demo for første sprint

2. HVA ER EN KOMPONENT?

Datamaskinens oppbygning

Introduksjon til Eclipse

Innhold. Kom i gang med IRiR. 1 Installer R & RStudio. 2 Last ned siste versjon av IRiR-skriptet

Del 1 Setup - BIOS Oppgaver: 1. Hva slags CPU har maskinen? Beskriv de tekniske egenskapene ved CPU en.

Saia PG Kjære kunde,

Filsystemet fra innsiden

Fullstendig ytelsesbehandling

OS Struktur Prosesser Kommandotolker Distribuert Filer Skript Mer?

Læringsmål uke 7. Objektorientert programmering i Python: Introduksjon. Innhold uke 7. Lite tilbakeblikk: Programflyt og skop

TDT4258 Eksamen vår 2013

Sweex Powerline 200 Adapter

Transkript:

Generelt om operativsystemer

Hva er problemet? Styring av maskinvare og ressurser tilknyttet en datamaskin er komplisert, detaljert og vanskelig Maskinvare, komponenter og programvare endres og forbedres raskt og ofte Vi må ha et system som håndterer dette for oss, slik at maskinen blir enklere å bruke og alltid er oppdatert og fungerer korrekt

Løsning: Et operativsystem (OS) Et OS er en samling med programvare som håndterer styringen av datamaskinen Forenkler bruken av datamaskinen for både brukere og applikasjoner OS er oftest ferdig installert på datamaskinen Lett å oppdatere manuelt eller automatisk

Operativsystemet gir en lagdeling OS er et mellomlag som skjuler kompleksiteten og dynamikken i maskinen OS tilbyr grensesnitt mot brukere og applikasjoner Figuren er en forenkling, men viser prinsippet for bruken av OS

Hovedoppgavene til et OS Styring av maskinvare Deling av maskinens ressurser Abstraksjon vekk fra detaljer om maskinvare og systemprogramvare

Designprinsipp for OS All maskinvare, komponenter og tilknyttede ressurser håndteres internt i OS-et Brukere tilbys et grensesnitt (grafisk eller tegnbasert) mot maskinen i form av kommandoer som kan utføres Applikasjoner tilbys grensesnitt mot datamaskinen i form av et API (Application Programming Interface) med metoder som kan kalles fra applikasjonens programkode

De viktigste deloppgavene til et OS Håndtering av prosesser Håndtering av minnet (RAM) Filhåndtering Håndtering av nettverk, komponenter og utstyr Sikkerhets- og feilhåndtering Interprosesskommunikasjon

Prosesshåndtering* Prosess: Program som kjører/eksekverer OS må kunne håndtere mange prosesser samtidig, inkludert interaktiv dialog med brukere Håndteringen av prosesser må være rask, effektiv og rettferdig * Kapittel 4 i læreboken

Noen deloppgaver i prosesshåndtering Opprette og fjerne prosesser Starte og stoppe prosesser Synkronisere prosesser Fordele mikroprosessorenes (CPU enes) regnekraft mellom de aktive prosessene Prioritere prosesser som ønskes utført raskere/mer effektivt enn andre

Minnehåndtering* Minne, aka: RAM Hukommelse Hurtiglager Brukes for lagring av både data og programkode Minne er alltid en begrenset ressurs Må deles mellom alle prosessene på maskinen * Lite om dette i læreboken, legger ut ekstra lærestoff på kursets nettsider

Noen krav til minnehåndtering i et OS God fordeling av minnet mellom prosessene, når alle prosesser samlet krever mer minne enn tilgjengelig Fungere både statisk (ved oppstart av prosess) og dynamisk (mens prosessen kjører) Beskytte den delen av minnet som er reservert for én prosess mot lesing og endring fra andre prosesser Dele minne mellom prosesser hvis dette er ønskelig Legge lite brukte minneområder midlertidig ut på disk for å frigjøre plass til andre prosesser

Utstyrshåndtering* OS leveres med drivere: Programkode for å håndtere faste komponenter (CPU, RAM...) og plug-ins (grafikk, nettverk, printere...) OS tilbyr et Service Provider Interface (SPI): Håndterer nytt/ukjent utstyr ved å installere medfølgende drivere i OS-et OS tilbyr applikasjonene et API for utstyrshåndtering: Enhetlig grensesnitt der detaljer i driverne skjules * Litt mer om utstyrhåndtering kommer senere i kurset

Noen krav til et godt konstruert OS Effektivitet Vedlikehold Korrekthet Standardisering Grensenitt og abstraksjon

Effektivitet Et OS gjør ikke noe produktivt arbeid i seg selv. OS må utføre oppgavene sine effektivt, slik at det meste av maskinens ressurser brukes til applikasjonene Alle OS er optimaliserte mht. effektivitet OS inneholder derfor mange svært kompliserte og meget raske algoritmer for håndtering av datamaskinen, f.eks. Sheduling: Deling av noen få CPU er på mange prosesser Paging: Flytting av data og kode mellom RAM og disk

Vedlikehold Et OS er et meget stort programsystem: Ca. 50 millioner kodelinjer i Windows 7 ( guesstimate ) Ca. 15 millioner linjer fordelt på 35 000 filer i Linux-kjernen Stort antall utviklere involvert Koordineringskostnader og -tid må minimeres Et OS må derfor konstrueres modulært: Nøvendig med en god og logisk oppdeling i moduler Moduler bør kunne vedlikeholdes uavhengig av hverandre

Korrekthet Vi må kunne stole på at OS-et fungerer korrekt: Feil i OS kan gjøre maskinen ubrukelig Må kunne håndtere tilfeldighet og uforutsigbarhet Må ha gode mekanismer for feilhåndtering Krever: Solid teoretisk fundament for implementasjonen God modularisering internt i koden Godt og sikkert grensesnitt mot applikasjonene Gode og omfattende rutiner for testing og feilretting

Standardisering Tjenestene som et OS tilbyr må(?) følge standarder for samhandling med annen programvare * OS-designere må velge gode standardløsninger for bl.a: Hvilke tjenester skal tilbys og hvordan skal de brukes? Implementasjon av tjenestene i høynivå API for f.eks. Java Hvordan skal filene på maskinen organiseres? Hvilke dataformater (tegnsett og tall) skal støttes? Hvordan skal eksekverbare programmer lagres? * Historisk har Linux vært gode på standardisering, mens Microsoft har vært mer proprietært

Grensesnitt og abstraksjon OS må tilby et godt grensesnitt, både mot brukere og utviklere av applikasjoner, som: Følger kjente og vanlige standarder Er stabilt og korrekt Skjuler den interne virkemåte av OS-et Ivaretar kompabilitet selv om maskinvare og systemprogrammer/drivere endres

Grensesnitt og abstraksjon i OS: Analogi til OOP og Java-objekter Grensesnittet mot et OS kan sammenlignes med bruk av klasser i objektorientert programmering: Klasseobjekter i Java tilbyr et grensesnitt i form av public metoder som kan kalles fra utsiden Dataene som lagres i klassen, og selve implementasjonen av metodene, inkapsles/skjules i den interne Java-koden for klasseobjektet Klasseobjektet defineres for brukerne med et grensensnitt som beskriver funksjonaliteten

Brukergrensesnitt i OS: Shell vs. GUI Shell (aka kommandotolker eller skall): Tekstbasert linje-for-linje som i gamle dager Krever mer av bruker, mindre av maskin/nettverk Er en egen programmeringsomgivelse Effektivt til håndtering av store datamengder Uunnværlig til systemadministrasjon GUI (Graphical User Interface): Enklere å forstå, krever mye mer ressurser enn shell Visualisering/grafisk fremstilling av filer og systemtilstand Peke-klikke-dille-mikke databehandling, lite effektivt

OS og systemtjenester Systemtjenestene er tjenester som OS-et kan utføre på kommando, f.eks å: Skrive data til disk Reservere en del av minnet Systemtjenester utføres av OS-et når en applikasjon gjør et systemkall ved å kalle en metode fra OS-ets API Eksempel: Når metoden write kalles, vil den utføre en systemtjeneste som skriver data til en fil. OS-et sørger for at dette gjøres på riktig måte uten at applikasjonen trenger å kjenne detaljene om hardware og drivere.

Kjernen i et OS Alle systemtjenestene som tilbys til applikasjoner er samlet i det som kalles OS-ets kjerne (kernel) Kjernen oppdateres oftest automatisk ved behov (ny maskinvare, forbedringer av OS-algoritmer etc.) Kjernen er tilpasset maskinvaren Kjernen til et OS er oftest skrevet i C eller direkte i maskinkode for effektivitet