Definisjon av prosess

Like dokumenter
Definisjon av prosess

Operativsystemer og grensesnitt

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

Prosesstabeller (PCB - Prosess Control Block) Se på PD: kommandoene ps og top Bakgrunnsprosesser Opprettelse av prosesser:

Generelt om operativsystemer

Generelt om operativsystemer

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

Scheduling og prosesshåndtering

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

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

Eksempler på ikke-blokkerende systemkall:

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

Minnehåndtering i operativsystemer

Minnehåndtering i operativsystemer

Tildeling av minne til prosesser

HØGSKOLEN I SØR-TRØNDELAG

Hvorfor lære om maskinvare*?

1. Introduksjon til operativsystemer

Tildeling av minne til prosesser

TDT4258 Eksamen vår 2013

Brukerhåndtering av prosesser i Linux

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

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

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

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

Filterprogrammer og redirigering av I/O

HØGSKOLEN I BERGEN Avdeling for ingeniørutdanning Data

HØGSKOLEN I SØR-TRØNDELAG

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

Oppgave 1 - Linux kommandolinje (%)

Filterprogrammer og redirigering av I/O

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

Generelt om permanent lagring og filsystemer

Læringsmål og pensum. v=nkiu9yen5nc

Faglig kontakt under eksamen: Orestis Gkorgkas

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

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

Dagens program. Operativsystemer Prosesser og systemkall i UNIX Hente prosessens nummer Starte prosesser Vente på prosesser Utføre programmer

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

Brukerprogram OS hardware

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

Tildeling av minne til prosesser

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

EKSAMEN. Operativsystemer og nettverk

Eksamensoppgave i TDT4258 Energieffektive Datamaskinsystemer

Tråder og concurrency i Linux

Eksamensoppgave i TDT4258 Energieffektive datamaskinsystemer

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

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.

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.

Innledende Analyse Del 1: Prosjektbeskrivelse (versjon 2)

4. Installasjonsveiledning. Experior - rich test editor for FitNesse -

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

ITPE/DATS 2400: Datamaskinarkitektur og Nettverk

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

Filer i Linux og Bourne-again shell

INF2270. Input / Output (I/O)

1. Introduksjon til operativsystemer

Kommersiell Unix Linux og frie Unix kloner

HØGSKOLEN I SØR-TRØNDELAG

Oppgave: Last ned og installer bzflag apt-get install bzflag 121A - Virtualisering

Operativsystemer og nettverk

6107 Operativsystemer og nettverk

Dokumentasjon av Installasjon

AVSLUTTENDE EKSAMEN I. TDT4160 Datamaskiner Grunnkurs. Torsdag 29. November 2007 Kl

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

Et forsøk på definisjon. Eksempel 1

Overordnet maskinarkitektur. Maskinarkitektur zoomet inn. I CPU: Kontrollenheten (CU) IT1101 Informatikk basisfag, dobbeltime 11/9

Kapittel 1: Datamaskiner og programmeringsspråk

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

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

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

Håndtering av filer og kataloger

Del 4 Noen spesielle C-elementer

Oppgave 2: Gå til roten (/) av systemet. Finn minst tre forskjellige måter å gå tilbake til hjemmekatalogen din på.

Brukermanual for Quizbuilder

Introduksjon til kurset og dets innhold

Øving 0 - Xcode TDT4102

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

Forelesning inf Java 1

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

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

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

Hjemmeeksamen 2 i INF3110/4110

Skriv ordbøker og litteratur på Tegnspråk med en nett-tjener i lommeformat! For ivrige Tegnskrift (SignWriting )- brukere!

Innhold. Introduksjon til parallelle datamaskiner. Ulike typer parallelle arkitekturer. Prinsipper for synkronisering av felles hukommelse

Håndtering av filer og kataloger

Fra Python til Java, del 2

Transkript:

Prosesser og tråder

Definisjon av prosess Enkel definisjon: En prosess er et program som kjører på datamaskinen Mer presis definisjon: En prosess er en samling av ressurser som er nødvendige for å utføre en oppgave som er beskrevet med programkode på en datamaskin

Ressursene som utgjør en prosess Programkoden: Ferdig kompilerte maskininstruksjoner som er lastet inn i RAM og er klar for kjøring Minneområdet (RAM) som er reservert for prosessen Filer og I/O-enheter som skal leses/skrives Kontrolldata som OS bruker for å styre prosessen: Prioriteter Rettigheter (til filer, minne, I/O-porter etc.) En eller flere tråder ( threads of execution )

Tråder / threads Tråd ( thread of execution ): Utførende enhet som går gjennom programkoden og eksekverer maskininstruksjoner Tråder må ha egne interne kontrolldata* for å holde rede på bl.a.: Hvor i programkoden tråden befinner seg Hvilken maskininstruksjon som er den neste som skal utføres (eksekveringsstack) Hvilke dataverdier som instruksjonen skal bruke *: Tråddata lagres oftest i registre i CPU en

En prosess kan inneholde én eller flere tråder Tråder kan kjøre parallellt og uavhengig av hverandre, men mange problemer krever at trådene synkroniseres

Analogi med et kjøkken Kjøkken Formål: Lage mat Kokker Råvarer og utstyr Oppskrifter Prosess Formål: Løse oppgave Tråder Minne, disk, kontrolldata Programkode

Prosess vs. program * Et program er en statisk enhet: Ligger lagret som kildekode eller maskinkode Koden forandrer seg ikke når programmet utføres En prosess er en dynamisk enhet: Endrer seg hele tiden under kjøring av programmet Trådenes programteller, stack og registre oppdateres Variablene som er lagret i RAM endrer verdier Filer åpnes, skrives til, lukkes *: Merk at begrepene program, prosess og tråd ofte brukes om hverandre og upresist

Tråd vs. prosess Tråder: Sekvensiell flyt av utførelse inne i en prosess Flere tråder kan kjøre parallelt ( samtidig ) Trådene er lettvekts-prosesser : Mye raskere å opprette ny tråd enn ny prosess Mye raskere kommunikasjon mellom samarbeidende tråder inne i en prosess, enn mellom ulike prosesser Parallelle tråder er utfordrende for programmereren: Trådene deler minne, mye feil/inkonsistens mulig Samarbeidende tråder må synkroniseres i koden

Single- og multithread OS Tidlige OS: Prosesser med bare én tråd : Begrepet threads fantes ikke, bare separate prosesser Deling av data mellom prosesser er vanskelig Prosesser med bare én tråd stopper når de må vente på en ressurs, f.eks. I/O eller en annen maskin på nettet OS med flere tråder i hver prosess: Multi-thread OS (og Internett) vanlige for ~20 år siden Flere tråder gjør at f.eks. nettlesere lett kan fortsette selv om en server ikke svarer Både Windows og Linux er multi-thread

Prosessenes tilstand En prosess har hele tiden en tilstand, som endres etter som programmet kjøres/tiden går Tilstanden til en prosess bestemmes av: Dataene som ligger i RAM Status for alle ressursene som er tilknyttet prosessen Tilstanden til alle trådene som kjører inne i prosessen Hele tilstanden til en prosess må kunne lagres unna, f.eks. ved avbrudd (interrupt) i CPU for å gjøre I/O Prosessen må etterpå kunne hentes frem igjen og gjenskapes slik at den fortsetter å kjøre med nøyaktig samme tilstand som da den ble lagret

Lagring av prosesstilstander i OS Tilstanden til hver enkelt prosess lagres i en prosessdeskriptor, som bl.a. inneholder: Prosessnavn og -eier Prioritet og rettigheter Informasjon om minneområde(r) som er tildelt Trådliste Informasjon om selve programmet for prosessen Informasjon om forelder- og barneprosesser Deskriptorene for alle prosessene som finnes på maskinen lagres i prosesstabellen i OS-et

Lagring av trådtilstander Tilstanden til hver av trådene i en prosess lagres i en tråddeskriptor, som bl.a. inneholder: Instruksjonspeker, som inneholder adressen til instruksjonen i programkoden som tråden nå utfører Innholdet i CPU-registre Trådens utføringsstatus, som er en av tre mulige: ready running klar til å kjøre i CPU, venter på tur kjører i CPU blocked kan ikke kjøre, venter på f.eks. I/O Tråddeskriptorene lagres lokalt i prosessene

Forelder- og barneprosesser Alle prosesser lages ved at en tråd i en prosess oppretter en ny prosess, gjennom et systemkall til Linux-kjernen * Prosessen som lages er barn av forelder-prosessen: F.eks. blir alle prosesser som startes fra kommandolinjen barn av prosessen som kjører shellet OS lagrer alle barn-forelder forhold mellom prosessene En forelderprosess kan vanligvis styre, stoppe, starte og slette sine egne barneprosesser Tilsvarende slektskap finnes mellom trådene i en prosess *: Med unntak av den aller første prosessen, init

Spawn*: Opprettelse av en Linux-prosess I Linux brukes begrepet spawning om det som skjer når en forelderprosess oppretter en barneprosess Spawning gjøres av shellet eller av en annen applikasjon, ved å utføre et av disse systemkallene i Linux-kjernen: fork() vfork() clone() wait() exec() Systemkallene er API-funksjoner skrevet i språket C Alle systemkallene for spawning er dokumentert i mansystemet (section 2: system calls) *: spawn: to produce; to give birth to; give rise to

fork, vfork Oppretter en barneprosess som er en kopi av forelder-prosessen, inkludert programkoden, innholdet av RAM, registre, filer, prosess- og tråddata fork: Barneprosessen får et eget minneområde i RAM vfork: Barne- og forelderprosess deler minneområdet

clone, wait wait Virker på samme måte som fork, men forelderprosessen går i vente-tilstand (sleep mode) inntil barneprosess terminerer Shellkommandoer startes oftest med wait clone Forelder og barn er kopier som deler minneområde og de fleste andre ressurser knyttet til prosessen Brukes til å opprette nye tråder i Linux

exec for å starte nye programmer De fire andre systemkallene for spawning oppretter kopier av forelderprosessen exec erstatter nåværende prosess med en ny prosess Hele innholdet av prosessen som kaller exec slettes, og byttes ut med helt nye prosessdata Vanlig å først gjøre en fork, og deretter la den nye barneprosessen gjøre exec for å bytte ut seg selv med et nytt program som skal startes

init Den aller første prosessen som startes i Linux etter booting init opprettes av Linux-kjernen, som igjen startes av ROM-kode init er stamfaren til alle andre prosesser på systemet init er foreldreløs, alle andre prosesser har en forelder

Prosess-kjeder og -trær Kan alltid dannes en kjede av prosesser fra nåværende prosess til forelder, til forelders forelder osv. helt opp til init En prosess kan spawne flere barn, alle prosessene som kjører på et Linux-system utgjør derfor et prosess-tre pstree kommando for å se (deler av) prosesstreet

Eksempel på prosess-tre Gir følgende kommando i Bash: cat cut d: f1 sort Bash (shellet) er en egen prosess på maskinen Bash vil her starte tre nye prosesser, en for hver kommando Linux setter opp prosessene slik at de kommuniserer med hverandre via pipe-buffere Lokalt prosess-tre: bash / \ / \ cat cut sort

Eksempel på prosess-kjede init starter GUI-systemet gnome gnome starter gnome_terminal, terminalvinduet bash kjører inne i dette terminalvinduet Deretter startes en find-kommando fra kommandolinjen: init \ gnome \ gnome_terminal \ \ bash \ find