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

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

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

Definisjon av prosess

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

IN 147 Program og maskinvare

HØGSKOLEN I SØR-TRØNDELAG

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

Dagens tema. Nyttige programmer Programmet make. Hvis én fil endres, hvilke filer må da kompileres på nytt?

Brukerprogram OS hardware

Dagens tema. Nyttige programmer Programmet make. Flyt-tall Representasjon av flyt-tall. Standarden IEEE 754. Systemkall i Unix

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

Brukerhåndtering av prosesser i Linux

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

Oppgave 1 - Linux kommandolinje (%)

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

Faglig kontakt under eksamen: Orestis Gkorgkas

HØGSKOLEN I SØR-TRØNDELAG

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

CPU-Scheduling. Fag: Operativsystemer

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

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

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.

Betinget eksekvering og logiske tester i shell

Prøve- EKSAMEN. Operativsystemer med Linux

Prosesser. Dagens tema. Hva er en prosess? En prosess er et program under utførelse.

Scheduling og prosesshåndtering

Kjøresystemer. Hva er et kjøresystem? Den abstrakte maskinen SIMPLESEM (2.6) Klassifisering av språk: Parametre (2.7.7) Statiske språk (

1. Introduksjon til operativsystemer

Eksempler på ikke-blokkerende systemkall:

EKSAMEN. Operativsystemer og nettverk

Nybegynnerkurs i C. Øyvind Grønnesby. 14. oktober Introduksjon Typer Operatorer Kontrollstrukturer Pekere Makroer Lenker

Definisjon av prosess

HØGSKOLEN I BERGEN Avdeling for ingeniørutdanning Data

EKSAMENSOPPGAVE I FAG TDT4186 OPERATIVSYSTEMER. Faglig kontakt under eksamen: Svein Erik Bratsberg og Arvid Staupe

Del 4 Noen spesielle C-elementer

Forelesning Instruksjonstyper Kap 5.5

Operativsystemer og grensesnitt

Del 1 En oversikt over C-programmering

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

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

Debugging. Tore Berg Hansen, TISIP

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

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

NSA mandag 4. oktober Brukerbehandling Systempolitikk Kontroll av resurser Om system logger Litt om cron og cfengine

Oppgave 8.1 fra COD2e

Minnehåndtering i operativsystemer

Hvordan en prosessor arbeider, del 1

Øvingsforelesning 5 Python (TDT4110)

Løsningsforslag til eksamen 24. november 2015

Operativsystemer og nettverk

EKSAMEN. Operativsystemer. 1. Læreboken "A Practical Guide to Red Hat Linux" av Mark Sobell 2. Maks. tre A-4 ark med selvskrevne notater.

Introduksjon til DARK assembly

Lynkurs i shellprogrammering under Linux

Semantikk. Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7) Semantikk. Semantikk. En måte å svare på: gi semantikken til språket!

Minnehåndtering i operativsystemer

-/tmp med navn på alle kataloger og filer etter at disse

Læringsmål og pensum. v=nkiu9yen5nc

Tildeling av minne til prosesser

Litt om Javas class-filer og byte-kode

Repetisjon - Modul 1

Programmeringsspråket C Del 2

Dagens tema: Parallellstyring

Dagens tema (kapittel 15 i Englander-boken)

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

Kort notat om parallellstyring IN147

EKSAMEN. Dato: 7. desember 2016 Eksamenstid: 09:00 13:00

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

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

Øvingsforelesning 5 Python (TDT4110)

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

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

I denne oppgaven skal vi repetere litt Python-syntaks, det er en god blanding av alle tingene du har lært i Python til nå.

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

Stein Gjessing. Institutt for informatikk. Universitetet i Oslo. Institutt for informatikk

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

Høgskoleni Østfold. Ny/utsatt EKSAMEN

Håndtering av minne i et OS

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

Videregående shellprogrammering i Linux

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

Kommersiell Unix Linux og frie Unix kloner

Oving 2. Oppgave 1. #include <stdio.h> int main(int argc, char **argv) { char *navn = argv[1]; printf ("Navnet ditt er %s\n", navn); } Oppgave 2

Programmeringsspråket C Del 2

Programmeringsspråket C Del 2

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

Repetisjon Novice Videregående Python PDF

Skisse til løsning for eksamensoppgave i TDT4186 Operativsystemer

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

Tildeling av minne til prosesser

Ny EKSAMEN. Operativsystemer og nettverk

Høgskolen i Gjøvik. Avdeling for elektro- og allmennfag E K S A M E N. EKSAMENSDATO: 12. desember 1995 TID:

Fakultet for informasjonsteknologi, Løsning på kontinuasjon i TDT4186 Operativsystemer August 2005,

Dagens tema. Datamaskinenes historie. De første moderne datamaskiner. Løsning. Menneskene har alltid prøvd å lage maskiner for å løse sine problemer.

Innhold. Virtuelt minne. Paging i mer detalj. Felles rammeverk for hukommelseshierarki Hukommelseshierarki-2 1

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

EKSAMEN Løsningsforslag. med forbehold om bugs :-)

1,r H øgs kolen i Østfol d

Transkript:

Prosesser i Prosesstabeller (PCB - Prosess Control Block) Se på PD: kommandoene ps og top Bakgrunns Opprettelse av : fork og exec pid og ppid Foreldre, barn og barnebarn Utførelse av kommando i Eksempler på fork og exec Operativsystemer 1

Prosess-tabellen prosess-tabell prosessdeskriptorer køer PD 1 PD 2 PD 3 PD 4 PD 5 cpu-registre ressurser programkode date etc cpu-registre ressurser programkode date etc cpu-registre ressurser programkode date etc cpu-registre ressurser programkode date etc cpu-registre ressurser programkode date etc cpu-kø i/o-kø cpu-registre ressurser programkode date etc Operativsystemer 2

Prosess-tilstander og overganger Operativsystemer 3

Prosesstabell Prosesstabellen består av alle PD hvert innslag inneholder en PD PD lages ved opprettelsen av prosessen hele tid i minnet PD fjernes når prosessen termineres danner flere ventekøer: Prosesser, CPU og I/O Operativsystemer 4

Prosess-tabell Prosess-tabell Prosess-kø cpu-kø i/o-kø Første prosess i cpu-køen er kjørende prosess Prosess-tabellen inneholder adresser (pekere) til hver prosessdeskriptor-blokk PD 1 PD 2 PD 3 PD 4 PD 5 Operativsystemer 5

Plassering av PDer CPU Register 1 Register 2 Instruksjonspeker: PCB1 PCB2 Minne klsa fd l ksadf lkasdfj lasdkjflsdkjfg lsdkjfg lsdkjg lsdkjg lsdkj progra m glskdj glskdj glskdj glskdj glksjd glskjd glskdjg lskdk l data data klsa fd l ksadf lkasdfj lasdkjflsdkjfg lsdkjfg lsdkjg lsdkjg lsdkj cpu -regi stre prog ram dat aomr åde st akk neste in struks jon åpn e fi ler cpu -ti d forbrukt start- tids punkt cpu -regi stre prog ram progra m data prosess-id cpu-registre program dataområde stakk neste instruksjon åpne filer cpu-tid forbrukt start-tidspunkt kjør ende prosess bruker cpu en PCB3 dat aomr åde st akk neste in struks jon åpn e fi ler cpu -ti d forbrukt start- tids punkt cpu -regi stre prog ram dat aomr åde st akk neste in struks jon åpn e fi ler cpu -ti d forbrukt start- tids punkt Operativsystemer 6

Kommandoen ps -ef (prosess status) UID PID PPID %CPU STIME TTY TIME CMD root 0 0 5.9 Oct 08?? 08:49:34 [kernel idle] root 1 0 0.0 Oct 08?? 01:01:41 /sbin/init -a roberttl 8978 23485 0.0 Feb 17 ttypb 0:03.40 -bash (bash) root 18129 19175 0.0 12:39:13 ttypc 0:00.18 ps -ef walterk 19175 21772 0.0 12:38:38 ttypc 0:00.18 -bash (bash) sveinef 4896 13762 0.0 11:44:42 ttype 0:01.73 joe ov3.html sveinef 13762 22765 0.0 11:01:16 ttype 0:00.37 -tcsh (tcsh) Operativsystemer 7

UNIX prosesstilstander Operativsystemer 8

Kommandoen top (top cpu ) load averages: 0.11, 0.28, 0.26 12:52:49 103 processes: 1 running, 27 sleeping, 75 idle Memory: Real: 144M/183M act/tot Virtual: 32M/576M use/tot Free: 2048K PID USERN PRI NICE SIZE RES STATE TIME CPU COMMAND 7370 andersea 44 0 2856K 786K sleep 3:43 1.10% irc-2.8.2 19973 walterk 44 0 3056K 278K run 0:00 0.10% <top> 28 root 44 0 1592K 57K sleep 164:23 0.00% update 288 root 44 0 1760K 155K sleep 108:49 0.00% ypserv 1 root 44 0 440K 40K sleep 61:41 0.00% init 27275 luct 44 0 6272K 1359K sleep 18:55 0.00% ircd 492 root 44 0 1752K 147K sleep 8:09 0.00% cron 10374 oleas 44 0 2624K 573K sleep 3:26 0.00% irc-2.8.2 17043 andersn 44 0 2288K 368K sleep 2:52 0.00% irc-2.8.2 Operativsystemer 9

Bakgrunns - daemons Prosesser som jobber i bakgrunn og startes når systemet starter opp cron daemon Brukes for å sette opp jobber til periodisk kjøring Våkner en gang i minuttet og sjekker om den har noe å gjøre: Dersom det er det kjører den jobben, ellers legger den seg og sover igjen Kan sette opp jobber for kjøring om f. eks. 2 måneder Typisk bruk er backuprutiner som kjøres på tidspunkter med lite belastning En prosess kan legges i bakgrunn ved å legge til tegnet & etter kommandonavnet Eks.: xemacs & Operativsystemer 10

Opprettelse av Alle kommandoer/programmer som utføres i UNIX startes som egne For å starte en prosess må man allerede være i en prosess. Eks.:Skall tar imot kommando ved å starte en ny prosess (pskommando) Prosessen som starter er en ny prosess kalles foreldreprosessen. Prosessen som blir startet av foreldre-process kalles en barneprosess. Systemkallene som brukes er fork og exec. For å identifisere brukes pid (prosess id) og ppid (parent process id) Operativsystemer 11

Foreldre, barn og barnebarn Operativsystemer 12

Foreldre, barn og barnebarn Foreldreprosess Barneproses s Barnebarn Operativsystemer 13

Opprettelse av : metode Foreldreprosessen foretar systemkall fork og lager dermed en eksakt kopi av seg selv. Eneste forskjell er pid - process id En eksakt kopi betyr at en ny identisk PCB for denne barneprosess lages Barneprosessen foretar deretter exec systemkall som bytter ut koden den fikk fra foreldreprosessen med koden for den kommandoen den skal utføre Operativsystemer 14

Opprettelse 1 Rett etter fork-systemkallet har begge prosessene, både foreldre og barn, akkurat samme programkode (shellkoden). Etter at barneprosessen har utført exec-kallet skifter barne-prosessen over til å bruke ls sin programkode. Minne shellprogram data data ls-program Prosesstabell med PD er til prosessene foreldre 231 barn 233 Operativsystemer 15

Opprettelse av 2 opprinnelig prose ss: csh pid: 231 ppid: 1 før fork og exec fork fore ldreprosess: csh pid: 231 ppid: 1 barnepros ess: csh pid: 233 ppid: 231 etter fork exec ppid: parent process-id pid: process-id barnepros ess: ls pid: 233 ppid: 231 etter exec Operativsystemer 16

Utførelse av kommando under UNIX Foreldre-prosess wait Zombieprosess Foreldreprosess Barne-prosess fork execve Foreldreprosess Barneprosess Barneprosess fork - oppretter ny prosess execve - skifter ut programkoden exit - terminerer wait - suspenderer seg sjøl, venter på barneprosess exit Operativsystemer 17

Eksempel 1: printf("hei\n"); fork(); printf("paa deg\n"); Utskrift fra programmet: hei paa deg paa deg Operativsystemer 18

Eksempel 2 Start printf("hei\n"); printf("hei\n"); printf("hei\n"); printf("hei\n"); fork(); fork(); fork(); fork(); printf("paa deg\n"); printf("paa deg\n"); printf("paa deg\n"); printf("paa deg\n"); fork(); fork(); fork(); fork(); printf("gamle venn\n"); printf("gamle venn\n"); printf("gamle venn\n"); printf("gamle venn\n"); Utskrift fra programmet: hei paa deg gamle venn gamle venn paa deg gamle venn gamle venn Operativsystemer 19

Utførelse av kommando Det samme som å starte ny prosess dvs. det trengs fork og exec systemkall shell-prosessen venter hele tid shell utfører et wait-systemkall, mens barneprosessen ls utføres kommando ls > tullfil & går i bakgrunnen Operativsystemer 20

Hvordan fungerer shellprogrammet? Shellet går i en løkke (while (1) ) kommandoen leses og syntaks skjekkes etter fork er det ny prosess (med egen PCB) barneprosess får ny kode (ikke foreldeprosessen) dette oppnås med forskjellig retur verdi nr: foreldreprosess: positiv tall, barneprosess: null Operativsystemer 21

Shell - pseudokode Bruk av fork og execve fra skallet: int int nr; nr; while while (1) (1) { vis_prompt(); les_kommando(kom, param); } nr nr = fork(); if if (nr (nr!=!= 0) 0) wait(&status); /* /* foreldre */ */ else else execve(kom, param, 0); 0); /* /* barn barn */ */ Etter fork - kallet har vi to identiske fork-kallet returnerer en verdi til kallende program: Foreldreprosess får returnert barneprosess sitt pid Barneprosess får returnert verdien 0 (null) Operativsystemer 22

Ny kommando utføres Foreldre (shell), pid = 21 Barn (shell), pid = 31 nr 31 while (1) { vis; les; nr = fork(); if (nr!= 0) wait(...); else execve(...): } fork nr while (1) { vis; les; nr = fork(); if (nr!= 0) wait(...); else execve(...): } nr main() { 0 exec Barn (ls), pid = 31 0 programkode for ls-programmet } exit() Operativsystemer 23

uid og setuid Enhver prosess har en eier. Prosessen for rettighetene til eieren. Av sikkerhetsmessige hensyn er det mange funksjoner som kun spesielt priviligerte brukere har lov til å utføre. Eksempel er å aksessere infoen i PCB-ene For at en vanlig bruker skal kunne gjøre dette lages en kommando ps med såkalt setuid-bit satt. Dette betyr at prosessen får rettighetene til eieren av programfilen og ikke til den som startet programmet som er det vanlige. UID PID PPID %CPU STIME TTY TIME CMD walterk 19175 21772 0.0 12:38:38 ttypc 0:00.18 -bash (bash) root 18129 19175 0.0 12:39:13 ttypc 0:00.18 ps -ef Operativsystemer 24

Neste leksjon: Administrasjon av utstyrsenheter Klikk her for å se på neste leksjon. Operativsystemer 25