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

Like dokumenter
Generelt om operativsystemer

Generelt om operativsystemer

Filterprogrammer og redirigering av I/O

Filterprogrammer og redirigering av I/O

Tildeling av minne til prosesser

Operativsystemer og grensesnitt

Tildeling av minne til prosesser

Filer i Linux og Bourne-again shell

Operativsystemer og nettverk

Håndtering av tekstfiler

Filer i Linux og Bourne-again shell

Hvorfor lære om maskinvare*?

Definisjon av prosess

Generelt om permanent lagring og filsystemer

Håndtering av minne i et OS

Minnehåndtering i operativsystemer

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

Operativsystemer og nettverk Løsningsforslag til eksamen Oppgave 1. a) Linux-kommando: java Beregn & b) Shellprogram:

Minnehåndtering i operativsystemer

Scheduling og prosesshåndtering

! Ytelsen til I/O- systemer avhenger av flere faktorer: ! De to viktigste parametrene for ytelse til I/O er:

Tildeling av minne til prosesser

1. Introduksjon til operativsystemer

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

INF2270. Input / Output (I/O)

Lynkurs i shellprogrammering under Linux

Innhold. Om denne boka 1. Kapittel 1 Operativsystemer og mellomvare 5

INF2270. Input / Output (I/O)

Håndtering av tekstfiler

Oppgave 1 - Java og prosesser (20%)

Hvorfor lære om maskinvaren*?

Introduksjon til kurset og dets innhold

Oversikt. Beskrivelse Bash. 1 UNIX shell. 2 Kommandolinje som brukergrensesnitt. 3 Input og output. 4 Bash builtins. 5 Linux utilities.

Eksterne enheter. Dokumentdelenummer: Denne håndboken beskriver hvordan du kobler til eksterne enheter. Mai 2006

Betinget eksekvering og logiske tester i shell

Kapittel 1: Datamaskiner og programmeringsspråk

Håndtering av filer og kataloger

Et eksempel: Åtterspillet

Brukermanual for Quizbuilder

Vedlegg 1: Oversikt over noen mulige leverandører

INF109 - Uke 1b

D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

- Java kan lastes ned gratis For installasjon, se punktet Hvordan laster jeg ned og installerer Java på min maskin?.

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

1. Introduksjon til operativsystemer

Oppgaver til forkurs i informatikk dag 1

TOD063 Datastrukturer og algoritmer

Filsystemet fra innsiden

Operativsystemer To eksepmler

Operativsystemer: Litt IT- og Linux-historie

Kjenn din PC (Windows7)

Algoritmer - definisjon

Forelesning inf Java 1

Forelesning inf Java 1

AlgDat 12. Forelesning 2. Gunnar Misund

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

1 Diverse linuxtips. Innhold

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

Ny EKSAMEN. Operativsystemer og nettverk

Skisse til løsning for eksamensoppgave i TDT4186 Operativsystemer

Utførelse av programmer, metoder og synlighet av variabler i JSP

AlgDat 10. Forelesning 2. Gunnar Misund

Kapittel 1. Datamaskiner og programmeringsspråk. 1.1 Programmering

C# (.Net) EE1212 Objektorientert programmering

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring

Filsystemet fra innsiden

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

Vi anbefaler at du setter deg litt inn i maskinen på forhånd. Det er en DELL Optiplex 620.

Løsningsforslag til eksamen 24. november 2015

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

Internminnet. Håkon Tolsby Håkon Tolsby

Dagens temaer. Fra kapittel 4 i Computer Organisation and Architecture. Kort om hurtigminne (RAM) Organisering av CPU: von Neuman-modellen

PCK Håndterminal. Brukerveiledning

Ta kontakt i pausen. Viktig at vi kommer i gang med dette arbeidet!

1 Diverse linuxtips. Innhold. 1.1 Klipp og lim med musen

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

Kravspesifikasjon Innholdsfortegnelse

HØGSKOLEN I BERGEN Avdeling for ingeniørutdanning Data

Læringsmål og pensum. v=nkiu9yen5nc

Laboppgave. Sondre Gulichsen, Li Lisan Linder. 1. Hva slags CPU har maskinen? Beskriv de tekniske egenskapene ved CPU en.

Håndtering av filer og kataloger

ITPE/DATS 2400: Datamaskinarkitektur og Nettverk

TDT4258 Eksamen vår 2013

Grunnkurs i. Windows Utforsker. Nordre Land kommune IKT-avdelingen

Eksempler på ikke-blokkerende systemkall:

Kjenn din PC (Windows Vista)

Introduksjon til programmering og programmeringsspråk

VMware ESX og krav til hardware

Into da BIOS<3. Bak Skallet

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

Concurrency. Lars Vidar Magnusson. September 20, Lars Vidar Magnusson () Forelesning i Operativsystemer September 20, / 17

6105 Windows Server og datanett

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

Dele anonyme data med Lenovo. Innhold. Harmony

Eksamensinformasjon. Prosesser. Prosesser. Eksamensoppgave. Operativsystemer (DATS/ITPE2500) Bokmål 06. juni 2017 kl

Oppdatere, sikkerhetskopiere og gjenopprette programvare

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

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring

Dagens temaer. Cache (repetisjon) Cache (repetisjon) Cache (repetisjon)

Utførelse av programmer, funksjoner og synlighet av variabler (Matl.)

Transkript:

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

Hovedfunksjoner i et OS OS skal sørge for: Styring av maskinvaren Deling av maskinens ressurser Abstraksjon vekk fra detaljer om maskinvaren Dette skal gjøres ved: Håndtering av maskinvaren internt i OS-et Funksjoner/systemkall som tilbys applikasjoner og brukere OS-ets viktigste oppgaver kan deles opp i: Prosesshåndtering Minnehåndtering Filhåndtering Utstyrshåndtering Interprosesskommunikasjon (Meldingshåndtering)

Prosesshåndtering* Prosess: Program som kjører/eksekverer OS må kunne håndtere mange prosesser samtidig, inkludert interaktiv dialog med bruker(e) Håndtering av prosesser kan deles opp i: Opprette og fjerne prosesser Starte og stoppe prosesser Synkronisere prosesser Fordele CPU'ens regnekraft mellom prosessene Prioritere prosesser som brukere/applikasjoner ønsker skal utføres raskere/mer effektivt enn andre * Kapitlene 4, 6 og 7 i læreboken

Minnehåndtering* Minne: Begrenset ressurs for lagring av både data og programkode Må deles mellom prosessene Håndtering og tildeling av minne må: Fungere både statisk (ved oppstart av prosess) og dynamisk (mens prosessen kjører). Ha en god strategi for fordeling av minnet når alle prosessene samlet krever mer enn det som er tilgjengelig. Beskytte minnet som er reservert for én prosess mot lesing og endring fra andre prosesser (men også dele minne mellom prosesser hvis dette er ønskelig). Effektivisere minnebruk ved å legge lite brukte minneområder midlertidig ut på disk for å frigjøre plass til andre prosesser (paging/virtual memory). * Kapittel 5 i læreboken%

Filhåndtering* Fil: En samling data som logisk hører sammen og som skal lagres permanent, på disk eller annet medium**. OS skal tilby et filsystem som gir en logisk organisering av filene, og som er mest mulig uavhengig av hardware og av type eksternt lagringsmedium. Filsystemet skal: Være katalogbasert, slik at filene kan samles i mapper. Være hierarkisk, slik at katalogene kan inneholde både filer og kataloger Tildele filer og kataloger navn, tidsdata og eier(e) Tilby sikkerhetsmekanismer for beskyttelse av data Være effektivt, slik at filhåndtering ikke blir en flaskehals i OS'et * Kapittel 8 i læreboken ** Alternativ definisjon i Linux: «Alt er filer»

Utstyrshåndtering OS leveres med kode for å håndtere både «faste komponenter» (CPU, DMA...) og en rekke standard «plug-ins» (grafikk-kort, printere...). OS tilbyr et Service Provider Interface (SPI) for å kunne håndtere ny/ukjent maskinvare ved å installere medfølgende drivere i OS-et. En driver (Device Driver) inneholder bl.a. avbruddsrutine(r) som skal kalles når utstyrskomponenten varsler over kontrollbussen at den trenger «betjening» (oftest I/O). OS-et tilbyr applikasjonene et felles grensesnitt mot I/O-enheter, der «alle enheter behandles likt».

Interprosesskommunikasjon* Mekanismer/metoder for å sende data mellom prosessene/trådene som kjører på en (eller flere) datamaskin(er) Krever bruk av synkroniseringmekanismer Kan gjøres på mange ulike måter**, f.eks. «Pipe» i Unix/Linux som bruker standard input/output til å sende tekstlige data tegn for tegn mellom to prosesser «Named pipe» i Windows, som bruker filsystemet til å utveksle data mellom prosesser «Sockets» i Java-programmer * «Meldingshåndtering» i læreboken ** Se f.eks «Inter-process communication» i Wikipedia

Litt om filtre og interprosesskommunikasjon i Linux Mange systemprogram og verktøy i Linux er tegnbaserte filterprogrammer: Leser input linje for linje fra standard innenhet (stdin) Gjør «et eller annet med» (filtrerer) input Skriver output linjevis til standard utenhet (stdout) stdin er i i utgangspunktet tastaturet* stdout er i utgangspunktet skjermen* (terminalen) stdin og stdout kan redirigeres slik at det leses eller skrives til/fra filer eller mellom prosesser i stedet. * Dette er ikke helt sant. «Alt er filer» i Linux, og stdin/stdout er egentlig systemfiler som representerer tastatur og terminalvindu.

Noen Linux-filtre cat se på innholdet av/slå sammen filer++ grep lete etter tegnmønstre i input sort sortere linjene i input more «bla gjennom» en tekstfil cut plukke ut deler/felter av linjene i input head se på begynnelsen av en fil/input tail se på slutten av en fil/input tr «rediger» linjene i input

Redirigering av I/O og interprosesskommunikasjon i Linux Kan bruke noen spesialtegn på kommandolinjen for å endre stdin/stdout: > filnavn stdout settes til å være en fil < filnavn stdin settes til å være en fil >> filnavn legg til output på slutten av fil I tillegg kan vi bruke «piping», der output fra en prosess sendes som input til en annen: cat < fil.txt grep Jan Tegnet ' ' kalles «pipe» i Linux

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å gjøre utføre sine oppgaver effektivt, for å overlate mesteparten av maskinens ressurser til applikasjonene. OS må derfor være optimalisert mht. effektivitet Et OS inneholder mange kompliserte og effektive algoritmer for å håndtere maskinvaren, f.eks.: Timesharing: Deling av én CPU på mange programmer og brukere. Utnytting av «idle-tid», f.eks. overlapping av prosessering med input og output

Vedlikehold Et OS er et svært stort programvaresystem: Ca. 50 millioner kodelinjer i Windows 7 («guesstimate») Ca. 13 millioner kodelinjer fordelt på 35 000 filer i Linuxkjernen (i 2012) Stort antall utviklere involvert Koordineringskostnad og -tid bør minimeres Et OS må konstrueres modulært: God og logisk oppdeling i moduler Modulene må i stor grad 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: Hvilke tjenester skal tilbys? Hvordan skal de brukes? Hvordan skal tjenestene implementeres i høynivåspråk som f.eks. Java? Hvordan skal filene organiseres? Hvilke dataformater (tegnsett og tall) skal støttes? Hvordan skal eksekverbare programmer lagres?

Standarder i Windows og Linux Windows: Egen standard: «Kompatibelt med seg selv» Bakoverkompatibelt mht. både dataformater og kjøring av programmer Linux: Følger fullt ut POSIX-standarden for «portable, UNIX-lignende operativsystemer» POSIX angir bl.a. hvorledes programmer skrevet i programmingsspråket C (som alle bør lære seg...) skal kunne bruke tjenestene som OS tilbyr

Grensesnitt og abstraksjon OS må tilby et godt grensesnitt, både mot brukere og utviklere av applikasjoner, som: Følger kjente og mye brukte standarder Er stabilt Skjuler intern virkemåte av OS-et (jfr. Wine) Ivaretar kompabilitet selv om maskinvare endres Analogi til OOP/Java-objekter: Klasseobjekter tilbyr et grensesnitt i form av metoder som kan kalles «fra utsiden» Implementasjon av metodene inkapsles/skjules i selve koden for klasseobjektet

Oppbygning av et OS: Noen andre viktige ting å kjenne til Konfigurasjonsmuligheter: Gir fleksibilitet i forhold til bruk og omgivelser Enkel rekonfigurering bør gjøres uten omstart Mikrokjerneteknologi Oppstart / Bootstrapping Krever permanent lagring av instruksjoner i ROM Fyrer opp BIOS som sjekker hardware og deretter starter selve OS-et Bootstrap-sekvensen kan også konfigureres