Operativsystemer og grensesnitt

Like dokumenter
Generelt om operativsystemer

Generelt om operativsystemer

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

Definisjon av prosess

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

Tildeling av minne til prosesser

Minnehåndtering i operativsystemer

Threads Threads (tråder) threads vs prosesser threads vs prosesser Definisjoner av

2 Om statiske variable/konstanter og statiske metoder.

Litt om Javas class-filer og byte-kode

Minnehåndtering i operativsystemer

Læringsmål og pensum. v=nkiu9yen5nc

Tildeling av minne til prosesser

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

Kapittel 1: Datamaskiner og programmeringsspråk

Håndtering av minne i et OS

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

2 Om statiske variable/konstanter og statiske metoder.

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse

Scheduling og prosesshåndtering

Javas klasse-filer, byte-kode og utførelse (og litt om C# sin CIL-kode)

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

1. Introduksjon til operativsystemer

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

Singletasking OS. Device minne Skjerm minne. Brukerprogram. Brukerdata/heap. Stack. Basis for flerprosess-systemer.

Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

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

Kapittel 1. Datamaskiner og programmeringsspråk. 1.1 Programmering

Forelesning ISA-nivået Kap 5.1

Tildeling av minne til prosesser

Overflows. Building Secure Software. Inf 329, Høst Chapter 7. Lars Skjærven

Java. Henrik Lieng Høgskolen i Oslo og Akershus

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

Introduksjon til programmering og programmeringsspråk

TDT4258 Eksamen vår 2013

Eksamensoppgave i TDT4258 Energieffektive datamaskinsystemer

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

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

Filer i Linux og Bourne-again shell

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

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

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

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

Brukerprogram OS hardware

AlgDat 10. Forelesning 2. Gunnar Misund

Stack. En enkel, lineær datastruktur

Eksempler på ikke-blokkerende systemkall:

Hvorfor lære om maskinvare*?

Operativsystemer og nettverk

Introduksjon til kurset og dets innhold

Kapittel 1: Datamaskiner og programmeringsspråk. Java som første programmeringsspråk

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

Lenkelister, iteratorer, indre klasser. Repetisjonskurs våren 2018 kristijb

Velkommen til INF5110 Kompilatorteknikk

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

Samtidige prosesser. Prosessor modus. Hvordan kan OS effektivt kontrollere brukerprosesser? Hvordan kan OS. kontrollere brukerprosesser?

Fra Python til Java, del 2

Kapittel 1: Datamaskiner og programmeringsspråk. Java som første programmeringsspråk

Håndtering av filer og kataloger

Generelt om permanent lagring og filsystemer

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

Programmeringsspråket C Del 3

Filer i Linux og Bourne-again shell

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

Repetisjon: Statiske språk uten rekursive metoder (C1 og C2) Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)

Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)

Hypervisor. Hardware. Virtualisering. App 1. App 2. App 2 App 1 App 2 App 1 CPU RAM I/O. Virtualisering av server/desktop hardware

6105 Windows Server og datanett

Resymé: I denne leksjonen vil du få en oversikt over hva et operativsystem er for noe, hvordan det er bygget opp og hvordan det virker.

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

Oppgave 1 - Linux kommandolinje (%)

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

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

Kapittel 8: Programutvikling

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

Sikkerhet: Virus Sikkerhet i operativsystemet Maskinstøtte for sikkerhet Trojanske hester Ormer. IN 147 Program og maskinvare.

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

GetMutex(lock) { while(testandset(lock)) {} } En context switch kan ikke ødelegge siden testen og endringen av lock skjer i samme instruksjon.

Oversikt. Historie Struktur Moderne UNIX systemer Moderne UNIX kernel struktur 1 UNIX. 2 Linux. 3 Process. 4 Process models

1. Å lage programmer i C++

Kapittel 1. Datamaskiner og programmeringsspråk. 1.1 Hva er en datamaskin? En datamaskins bestanddeler

Transkript:

Operativsystemer og grensesnitt

Ulike måter å bruke OS'et på Application Program Interface (API) Applikasjoner (ofte C-programmer) som f.eks. emacs, som bruker tjenestene i OS ved å kalle på funksjoner i API Service Provider Interface (SPI) Kode fra utsiden (drivere) implementerer tjenester i OSet for f.eks. ny hardware, iht. SPI Programmering i Java* Krever et ekstra lag med programkode mellom Javaprogrammet og OS: Kompilator, Java API og JVM Skall (shell) og GUI for kommandoer fra brukere * Eller tilsvarende høynivåspråk

API, systemtjenester og kjernen Systemtjenestene/systemkall er tjenester som OS-et kan utføre på kommando, f.eks. skrive til disk. Systemtjenester utføres i OS-et ved å kalle en funksjon (oftest skrevet i språket C) fra et applikasjonsprogram (eller fra JVM). Eksempel: Når (C-)funksjonen write kalles, vil den utføre en systemtjeneste som skriver data til en fil. Dette er en systemtjeneste, fordi det er OS-et som sørger for at det gjøres på riktig måte. Systemtjenestene er samlet i OS-ets kjerne (kernel), som gjerne oppdateres automatisk ved behov (ny maskinvare/forbedringer). Systemtjenestene, dvs. OS-ets kjerne, er tilpasset maskinvaren og er ofte skrevet i C eller maskinkode. API er grensesnittet mot systemtjenestene.

Brukermodus og kjernemodus CPU har minst to forskjellige modi: Brukermodus (user mode) Kjernemodus (supervisor mode) Under utføring av normal kode er CPU i brukermodus Kan bare endre programmets egne data i RAM For å kunne utføre instruksjoner som har å gjøre med håndtering av maskinvare, må CPU-en være i kjernemodus: Koden som kjøres får utvidete rettigheter I kjernemodus kan data internt i operativsystemet også endres Gir ekstra sikkerhet, vanlig brukerkode kan aldri forårsake inkonsistens og/eller feil i OS

Utføring av en systemtjeneste Når en systemtjeneste kalles fra en applikasjon skjer dette: CPU-en settes i kjernemodus Kjernens programkode for systemtjenesten utføres CPU-en settes tilbake til brukermodus CPU-en fortsetter å utføre programmet som kalte systemtjenesten Denne operasjonen kalles et programvareavbrudd Kontrollen overføres fra applikasjonens program til OSkjernens programkode for systemtjenesten, og deretter tilbake. Programvareavbrudd gjøres med en egen instruksjon (INT) som setter CPU i kjernemodus.

OS og høynivåspråk/java Java tilbyr et høyere abstraksjonsnivå der: Maskinen er et stykke programvare (JVM) Data kan lagres i variable med navn og type, inne i objekter og i tabeller. Variable opprettes og fjernes automatisk når programkoden utføres. Programmereren bruker et ferdig laget bibliotek av klasseobjekter som tilbyr egne grensesnitt for f.eks. å lese og skrive data fra I/O-enheter og filer. Programmereren ser aldri maskinvaren, OS-et eller systemtjenestene, dette er gjemt i JVM og i klassebibliotekene.

Java i Linux Finnes en lang rekke GUI-verktøy for programutvikling Tekstbasert / fra kommandolinen: Skriv koden i en teksteditor, emacs anbefales Kompilator: javac JVM: java Krever at skallvariablene PATH og CLASSPATH er satt riktig: Skal (bør?) gjøres automatisk ved pålogging

Programvaren som gir abstraksjon Kompilatoren Klasse- / programvarebibliotek Run-time system / Kjøremiljø

Kompilatoren Oversetter et program fra høynivåspråket til kjørbar objektkode* Objektkoden inneholder: Hvilke (virtuelle) maskininstruksjoner som skal utføres Programmets ressursbehov Hvilke andre delprogrammer som skal brukes/lenkes Objektkoden lastes inn sammen med den andre koden som den er lenket til, før kjøring Java-kompilatoren: Produserer ikke maskininstruksjoner for den fysiske datamaskinen, men bytecode for Java Virtual Machine Bytecode er portabel og kan distribueres uten kildekode (applets) * Output fra kompilatorer kalles tradisjonelt for objektkode eller objektmoduler, dette har ingenting med OOP å gjøre.

Klasse- / programvarebibliotek Samlinger av ferdig kode for ulike oppgaver som utføres ofte og mye, f.eks.: GUI-håndtering I/O og andre OS-tjenester Matematikk Manipulering av tegnstrenger Java tilbyr klasseobjekter med grensesnitt som implementerer funksjonalitet Java API inneholder abstraksjonslaget der OStjenestene/systemkallene er gjemt

Run-time system / Kjøremiljø Programmer skrevet i høynivåspråk må kjøres i en omgivelse som utfører støttefunksjoner, bl.a.: Laster inn objektkoden Får OS til å sette av minne og andre ressurser Organiserer bruken av RAM / programmets minneområde under kjøring av programmet Run-time systemet i Java ligger i stor grad internt i Java Virtual Machine (JVM)

Håndtering av minne i run-time Programmet får tildelt et eget minneområde ved oppstart I høynivåspråk er ikke det totale minnebehovet kjent ved oppstart Variablene og objektene har ulik levetid under kjøringen av programmet Run-time systemet har ansvar for å organisere minnet effektivt og gjenbruke minneområder når variable dør under programutførelsen.

Tre ulike typer variable/objekter Statiske: Eksisterer så lenge programmet kjører Plass i minnet kan settes av ved oppstart Automatiske: Parametre og lokale variable til metoder, opprettes ved metodekall Eksisterer så lenge metoden kjører Plassbehov ikke kjent ved oppstart, men avhenger av kalldybden Kan fjernes i omvendt rekkefølge av opprettelsen Dynamiske Opprettes av programmet under kjøring Kan enten fjernes eksplisitt (C, C++) eller automatisk (Java) Plassbehov ikke kjent ved oppstart

Memory stack og memory heap Automatiske variable lagres på en stack: Meget enkel Last-In-First-Out (LIFO) datastruktur Automatiske variable (og returadresser) stables oppå hverandre etter hvert som de opprettes ved metodekall Fjernes i omvendt rekkefølge ved å plukke fra toppen når metodene er ferdig kjørt Dynamiske variable lagres i en heap: Ingen systematikk/logisk rekkefølge i minnebruken Lagrer en heap av ledige minneområder, sortert på størrelse Tar ut minste område større enn det som ønskes reservert Legger område tilbake på heap etter bruk Heap er en datastruktur som er spesielt effektiv og rask for dette

Brukerkommandoer: Skall og GUI Brukere kan gi kommandoer til OS gjennom: Skall / shell 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 Enklere å forstå, krever mye mer ressurser enn shell Visualisering/grafisk fremstilling av filer og systemtilstand Peke-klikke-dille-mikke databehandling, lite effektivt