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

Like dokumenter
Eksempler på ikke-blokkerende systemkall:

Operativsystemer og grensesnitt

Definisjon av prosess

P1 P2 P3 P1 P2 P3 P1 P2. OS gjør Contex Switch fra P1 til P2

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

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

Generelt om operativsystemer

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

Definisjon av prosess

Forelesning inf Java 1

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

Scheduling og prosesshåndtering

Forelesning inf Java 1

som jobbet nærmest døgnet rundt i 18 måneder i Menlo Park i California for å forberede den neste bølgen innen computing.

Litt Java-historikk. Litt Java-historikk. Ulike varianter for ulike behov. Litt Java-historikk. The Green Team

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

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

Tildeling av minne til prosesser

Kapittel 1. Datamaskiner og programmeringsspråk. 1.1 Programmering

Fra Python til Java, del 2

Minnehåndtering i operativsystemer

INF1000 : Forelesning 1 (del 2)

Kommersiell Unix Linux og frie Unix kloner

Hvordan en prosessor arbeider, del 1

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

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program

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

Kapittel 1: Datamaskiner og programmeringsspråk

Dagens tema C, adresser og pekere

Ark 3 av 26. printf("i adresse %08x ligger b med verdien %d.\n", &b, b); printf("i adresse %08x ligger a med verdien %d.

2 Om statiske variable/konstanter og statiske metoder.

TDT4258 Eksamen vår 2013

Hvordan laste ned og installere Java på Windowsplattformen

Minnehåndtering i operativsystemer

Eksamensoppgave i TDT4258 Energieffektive datamaskinsystemer

Læringsmål og pensum. v=nkiu9yen5nc

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

OPPGAVESETT 1 INTRO. Delta på andre forelesning i emnet, der hovedkomponentene til datamaskinen blir introdusert. Ta notater!

Det matematisk-naturvitenskapelige fakultet

2 Om statiske variable/konstanter og statiske metoder.

Forelesning inf Java 1

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

DAT kandidatnummer: 142

Kapittel 1: Datamaskiner og programmeringsspråk

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon

Hvordan installere Java og easyio på Windows

INF5110 Obligatorisk Oppgave 2 del 2. Andreas Svendsen SINTEF. 23. April Oversikt

Ukeoppgaver 1: 30. aug 3. sep (INF Høst 2010)

INF1000 (Uke 5) Mer om løkker, arrayer og metoder

INF225 høsten 2003 Prosjekt del 4: kodegenerering

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

IN våren 2019 Onsdag 16. januar

IN våren 2018 Tirsdag 16. januar

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 samtidig.

Jentetreff INF1000 Debugging i Java

Eksamensinformasjon. Linux kommandolinje. Linux kommandolinje. Eksamensinformasjon. Fakultet: Teknologi, kunst og design. Tid: 3 t.

Velkommen til. INF våren 2016

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

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre

Installasjonsveiledning for Ordnett Pluss

IN1020. Obligatorisk oppgave 1. Formål

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

Dette er en historie..

Håndtering av minne i et OS

Dagens program. Sanntidsprogrammering med Linux. Embedded Linux: Begrensninger. Hvorfor Linux?

EKSAMEN. Operativsystemer. Kontroller at oppgaven er komplett før du begynner å besvare spørsmålene.

Java. Henrik Lieng Høgskolen i Oslo og Akershus

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

INF våren 2017

Runtime-omgivelser Kap 7 - I

I et Java-program må programmøren lage og starte hver tråd som programmet bruker. Er dette korrekt? Velg ett alternativ

Tre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm

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

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse. INF 5110, 10/5-2011, Stein Krogdahl

Runtimesystemer Kap 7 - I

Programmering i C++ Løsningsforslag Eksamen høsten 2005

Litt om Javas class-filer og byte-kode

INF5110. Oblig 2 presentasjon

INF1000: Forelesning 7

Testsituasjon Resultat Kommentar. Fungerer som det skal!

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

Oppgave 1 - Linux kommandolinje (%)

Installasjonsveiledning for Ordnett Pluss

INF Oblig 2 semantikksjekk og kodegenerering

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

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

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

Debugging. Tore Berg Hansen, TISIP

INF 1000 høsten 2011 Uke september

Litt administrativt. Informatikk studiet og INF1000. Etter denne forelesningen skal du. INF1000: Grunnkurs i objektorientert programmering

INF 1000 (uke 2) Variabler, tilordninger og uttrykk

INF1000: Forelesning 7. Konstruktører Static

INF1000 undervisningen INF 1000 høsten 2011 Uke september

Operativsystemer, prosesser og tråder

Eksempel: Body Mass Index (BMI)

Programmeringsspråket C Del 3

Tråder Repetisjon. 9. og 13. mai Tråder

Øving i Tornado og VxWorks

Praktisk informasjon. Repetisjon: While-løkker. I dag. INF1000 (Uke 5) Mer om løkker, arrayer og metoder. Oblig 2 er lagt ut

Tilstandsmaskiner med UML og Java

Transkript:

prosess = At en kokk lager en porsjon middag i et kjøkken CPU = kokk ressurser = kjøkken, matvarer, oppskrift thread/tråd = den sammenhengende serien(tråden) av hendelser som skjer når kokken lager en porsjon Når porsjonen er ferdig er porsessen avsluttet.

To alternativer: 1 To uavhengige = to kjøkken, kokken løper frem og tilbake og lager en porsjon i hvert kjøkken. Følger en oppskrift i hvert kjøkken(men oppskriften er den samme). 2 En prosess med to = Ett kjøkken, kokken bytter på å jobbe med de to porsjonene og lager to porsjoner fra samme oppskrift med felles ressurser for de to porsjonene.

Tradisjonell prosess: kun en kokk jobber i et kjøkken og lager kun en porsjon av gangen. Ønsker man å lage flere porsjoner samtidig, så må man lage flere kjøkken. Med : flere kokker kan jobbe i samme kjøkken samtidig og lage flere porsjoner på en gang.

den sammenhengende rekken av hendelser/instruksjoner som utføres når et program kjøres tråden som følges når et program utføres og som går fra instruksjon til instruksjon Lettvekts prosess Programmereren (og ikke OS) vet hva som skal gjøres. Han/hun kan detaljstyre til å samarbeide om oppgaver som skal utføres.

Single threaded prosess Multi threaded prosess PCB Data Kode Felles PCB PCB 1 PCB 2 PCB 3 data 1 data 2 data 3 Felles data Felles kode Utviklingen til en prosess følger en "tråd" igjennom programkode og data. Tre uavhengige "" utvikler seg samtidig innenfor felles programkode og data. Alle tre tilhører samme prosess.

Ressursdeling Flere eksisterer innenfor samme prosess. Deler på kode, data og delvis PCB. Respons Interaktive applikasjoner kan ha en tråd med høy prioritet som kommuniserer med brukere og lavprioritet som gjør grovarbeid. Effiktivitet Tar mindre tid å lage nye og mindre tid å context-switche mellom. Kan ta 30x så lang tid å lage en ny prosess som å lage en ny thread. Context switch kan ta 5x så lang tid. Multiprosessor Hver tråd kan tildeles en egen CPU. Felles variabler Ofte nyttig med felles minne for, men det er tungvint å sette opp. Dette er trivielt for.

For å lage må man arve klassen Thread. Viktige Thread-metoder: start() Allokerer minne, stack etc. og kaller run(). run() Her uføres jobben tråden skal gjøre. yield() Tråden gir fra seg CPU en. setpriority() Setter thread-prioritet. Min = 1, Max = 10, default = 5. sleep(ms) Tråden sover i ms millisekunder

Native : Java- scheduleres av OS, slik at de kjører uavhengig av hverandre og samtidig. Green : Java betraktes av OS som en prosess og JVM schedulerer trådene selv. jdk1.1 var implementert slik på Linux. Det går ikke klart frem av spesifikasjonene for JVM (Java Virtual Machine) hvordan prioritet skal implementeres og her er det forskjeller mellom Linux og Windows.

$ sudo apt-get install default-jdk $ emacs Calc.java& $ javac Calc.java # Calc.class lages; bytecode $ java Calc # Starter JVM (Java Virtual Machine) # som kjører byte-koden group1@osg1:~$ java -version java version "1.6.0_38" ubuntu16.04:~/$ java -version openjdk version "1.8.0_121"

som blir definert som static vil være felles for alle trådene. Andre vil kun kunne brukes av den enkelte tråd. static int count; int id; I eksempelet oppdateres count av begge trådene, mens det eksisterer en id for hver tråd.

Program s-data id = 1 Felles data count s2-data id = 2 s s2 Figure: Deklareres en variabel som static blir den felles for alle.