Jonny Karlsson 13.9.2005 PROCESSPROGRAMMERING Föreläsning 3 (13.9.2005) Innehåll: -Processtruktur -Processklyvning och kodbyte -Avslutning av processer.

Slides:



Advertisements
Liknande presentationer
Föreläsning 9 Programmeringsteknik och Matlab 2D1312/2D1305
Advertisements

Avlusning Debugger (”avlusare”) Breakpoints Watch.
INTRODUKTION TILL PROGRAMMERING
Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 1 ( ) Innehåll: -Introduktion av kursen -Program och processer -Fildeskriptorer -Filhantering.
Anders Sjögren Lagringsklasser •en variabel i C har två attribut –type( int, float, char..... ) –lagringsklass( auto, extern, register, static ) •lagringsklassens.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 3 ( ) Innehåll: -Namngivna rörledningar.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 3 ( ) Innehåll: -Namngivna rörledningar -Signaler -Signalhantering.
Funktioner och programorganisation
#include void fun(char s[]) { int i=-1; while(s[++i]!=0) { if('a'
Tentamensdags och lab 3…. Större program delas normalt upp i flera filer/moduler vilket har flera fördelar:  Programmets logiska struktur när man klumpar.
Föreläsning 5 Python: argument från kommando-tolken
Föreläsning 4 Python: Definiering av egna funktioner Parametrar
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kap 3 & 4: Processer & trådar.
Tentamensdags och lab 3…. Större program delas normalt upp i flera filer/moduler vilket har flera fördelar:  Programmets logiska struktur när man klumpar.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 7 ( ) Innehåll: -Datakanaler och datakanalpar -Kommunikation på samma dator med datakanaler.
Pointers. int a=5; int f(int b) { a--; b++; return b; } int main() { int a=3; printf("%d,",f(a)); printf("%d",a); return 0; }
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 4 ( )‏ Innehåll:Trådsäkerhet - Intrinsic locks och synkronisering - Synchronized statements.
int res2=Math.max(tal1,tal2);
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: Trådprogrammering i Java - Avbrott (”interrupts”) - Metoden join() -
Deklarera en struct som kan användas för att representera en rät linje Använd den I main för att deklarera en variabel som du initierar så att den representerar.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 4 ( ) Innehåll: -Programmerade rörledningar -Namngivna rörledningar.
William Sandqvist C:s minnesmodell.
PROCESSPROGRAMMERING Föreläsning ‏ Innehåll: Högnivå objekt för trådprogrammering: - Trådgrupper (”Thread pools”)‏ - Exekverare (Executor.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 4 ( ) INNEHÅLL: -Logiska opertorer -Poster.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 4 ( ) Innehåll: - Förening av dataströmmar - Signaler - Signalhantering.
Anders Sjögren Pekare. Anders Sjögren Skapa ett program som byter plats på två heltal Pekare.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 6 ( ) Innehåll: -Producent – konsument problemet -Förmedling av fildeskriptorer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 6 ( ) Innehåll: -IPC: Semaforer -Exekveringstrådar (threads) -Introduktion till Java.
1 Windows programmering Programmering med Threads Borland C++ Builder 4 Modsoft Ab Kent Westerholm.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 12 ( ) Innehåll: -Datakanaler och datakanalpar -Kommunikation på samma dator med datakanaler.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Namnrum, räckvidd och rekursion Linda Mannila
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 11 ( ) Innehåll: - Förmedling av fildeskriptorer.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 2 ( ) Innehåll: -Processtruktur -Processklyvning och kodbyte -Avslutning av processer.
INTRODUKTION TILL PROGRAMMERING
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 2 ( ) INNEHÅLL: -Variabler och datatyper -Tilldelning av variabler -Aritmetiska.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 5 ( ) Innehåll: -Signaler -Signalhantering.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Tabeller -Villkorssatser -Repetitionssatser.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
F4 - Funktioner & parametrar 1 Programmeringsteknik, 4p vt-00 Modularisering ”svarta lådor” Väl definierade arbetsuppgifter Enklare validering Enklare.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 5 ( ) Innehåll: IPC: meddelandeköer IPC: delat minne.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 8: Underprogram Underprogram Räckvidd Parameteröverföring.
1 Sockets Traditionellt har UNIX varit svag på IPC, InterProcess Communication. I augusti 1983 kom en ny IPC-mekanism i 4.2BSD som var enkel om konsistent.
INTRODUKTION TILL PROGRAMMERING
PROCESSPROGRAMMERING Föreläsning 1 ( )‏ Innehåll: Introduktion till paralellprogrammering (“concurrent programming”)‏ Introduktion till parallellprogrammering.
F6 - Pekare 1 Programmeringsteknik, 4p vt-00 Pekare & adresser Alla variabler är knutna till en viss adress i minnet int i; adressen till denna fås med.
Föreläsning 7 Programmeringsteknik och Matlab DD1315 Kommandotolk parametrar Klass Instans Metod konstruktor.
Föreläsning 9 Arv kap 8.1 Interface kap 9.2 Grafiska användargränssnitt (GUI) kap 10.
2D1311 Programmeringsteknik med PBL Föreläsning 4 Skolan för Datavetenskap och kommunikation.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 7 ( ) Innehåll: -IPC: Meddelandeköer.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 9: Implementering av underprogram Aktiveringsposter Exekveringsstacken Implementera dynamisk räckvidd.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 9 ( ) Innehåll: - IPC: Semaforer.
Föreläsning 17 Repetition. Källkodsformat Unicode används åäöμψζ tillåtna i namn på identifierare Inte alla miljöer klarar av det Källkod Bytekod Java.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 6 ( ) Innehåll: - Förening av dataströmmar -Blockerande I/O multiplexering -Icke blockerande.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 2 ( )‏ Innehåll:Trådar: - Avbrott (”interrupts”)‏ - Metoden join()‏ Högnivå objekt för.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 2 ( ) Innehåll: -Fildeskriptorer -Filhantering -Felhantering.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: -Exekveringstrådar.
Get-id.c main( ) { printf( "My PID is %d\n", getpid( ) ); printf( "My parent's PID is %d\n", getppid( ) ); printf( "My User ID (UID) is %d\n", getuid(
Anders Sjögren Enkelt program med funktion /* two_func.c - a program that uses two functions in one file */ /* from Stephen Prata C Primer Plus ISBN
Program indata ? utdata 1/20 Vahid Mosavat, Nada, KTH.
Föreläsning 3 Väsentliga delar i ett Javaprogram Input i paketet extra
Anders Sjögren Programmering i ANSI-C Ett första program för att se vart vi ska...
Anders Sjögren Funktioner något in och något annat ut.
Jimmy Hedman South Pole AB Linuxkonsult sedan -00
Presentationens avskrift:

Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 3 ( ) Innehåll: -Processtruktur -Processklyvning och kodbyte -Avslutning av processer -Processynkronisering

Jonny Karlsson Processtruktur Två olika processtyper i Unix: Huvudprocess-Föräldraprocess-Master Slavprocess-Barnprocess-Slave En föräldraprocess kan ha flera barnprocesser och en barnprocess endast en föräldraprocess

Jonny Karlsson Processtruktur Alla öppna processer identifieras med en unik process-ID (PID) Specialprocesser: PIDAnvänds avFunktion 0kernel Systemprocessen 1initSköter om uppstart av Unix systemet efter ”reboot” 2pagedaemonAnsvarar för sökning i det virtuella minnessystemet pid_t getpid(void)returnerar nuvarande processens PID pid_t getppid(void)returnerar föräldraprocessens PID (1)

Jonny Karlsson Processklyvning Systemanropet fork() används i Unix för att starta upp en ny process från en innevarnade process. (kloning av en process).

Jonny Karlsson Processklyvning pid_t fork (void) Öppnar en ny paralell process (barnprocess) som blir en fullständig kopia av förälderprocessen. Båda processerna fortsätter exekveringen som normalt genast efter fork() anropet. fork() funktionen returnerar ett heltal (pid_t) som kan ha följande värden: -1 =Error 0 = Barnprocess OK till barnprocessen >1=Barnprocessens PID till Föräldraprocessen fork() anropas en gång men returnerar två gånger. Barnprocessen mottar en nolla eftersom en barnprocess inte kan ha fler än en förälderprocess Förälderprocessen mottar den uppstartade barnprocessens PID, eftersom en förälder kan ha flera barnprocesser (2)

Jonny Karlsson Kodbyte Med kodbyte menas uppstart och exekvering av ett programkod lagrat i en annan programfil. Används vanligtvis genast efter processklyvning (fork) och startar upp ett program som skall exekveras av barnprocessen. Funktioner för kodbyte: - execl(), execv(), execle(), execve(), execlp(), execvp() Se manualfilerna (man) int execl(char *name, char *arg1, char *arg2,...., char *argn, 0); namepekare på programkodens filnamn arg1pekare på teckensträng för uppstart av programkoden arg2pekare på parameter 1 arg2pekare på parameter 2 arg2... Sista parameterAlltid 0 (3)

Jonny Karlsson Avslutning av processer En process avslutas vanligen med exit(), return() eller _exit() kommondot i programmets main() funktion. void exit(int status) void _exit(int status) void return(int status) Dessa funktioner berättar för föräldraprocessen hur barnprocessen avslutats. status = 0vid normal processavslutning status = felkodvid processavslutning som förorsakats av ett fel. (4)

Jonny Karlsson Processynkronisering En föräldraprocess kan vänta på avslutning av en barnprocess med systemanropen wait() eller waitpid() pid_t wait (int *status); pid_t waitpid(pid_t pid, int *status, int options) se man fil pid_t Den avslutade barnprocessens PID statusEtt heltalsvärde som hänvisar till barnprocessens ”exit kod” Funktionerna wait() och waitpid() kan vid anropet reagera på tre olika sätt: 1.blockerar föräldraprocessen ifall barnprocessen fortfarande är aktiv 2.returnarar omeldelbart slutstatus från en redan avslutad barnprocess 3.returnerar omedelbart ett felmeddelande ifall föräldern inte har någon barprocess att vänta på (5)

Jonny Karlsson Processynkronisering status kan analyseras med ett antal makron definierade i sys/wait.h: WIFEXITED(status), WEXITSTATUS(status), WIFSIGNALED(status), WTERMSIG(status), WIFSTOPPED(status), WSTOPSIG(status) (se man wait för mera info) exempel: WEXITSTATUS(status)Returnerar barnprocessens ”exit kod” (6)