Jonny Karlsson 12.2.2007 1 PROCESSPROGRAMMERING Föreläsning 3 (19.2.2007 ) Innehåll: -Namngivna rörledningar -Signaler -Signalhantering.

Slides:



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

Avlusning Debugger (”avlusare”) Breakpoints Watch.
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.
Funktioner och programorganisation
1 Ingenjörsmetodik IT & ME 2009 Föreläsare Dr. Gunnar Malm.
Föreläsning 12 Matlab J-uppgiften.
Programmeringsteknik K och Media
Föreläsning 5 Python: argument från kommando-tolken
Föreläsning 4 Python: Definiering av egna funktioner Parametrar
Distribuerade filsystem
Alice in Action with Java
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 13: I/O-system.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 11: Implementation av filsystem.
Föreläsning 13 Polymorfism, Paket och JAR-filer. Polymorfism Ordet härstammar från grekiskan Poly – många Morf – form Polymorf – många former Någonting.
Föreläsning 5.  Idag  Kap 7 i Dawson  Filer  Felhantering med try…except.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser och instansvariabler -Tabeller av klassobjekt.
Programmering i C# 3. Klasser.
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; }
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 4 ( )‏ Innehåll:Trådsäkerhet - Intrinsic locks och synkronisering - Synchronized statements.
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.
Problemlösning Veckodagsproblemet Gissa talet Siffersumman.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
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.
Modulär programutveckling
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.
Föreläsning 14 ”Enkel” Filhantering.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
DD1310/DD1314/DA3009 Programmeringsteknik Föreläsning 2 Skolan för Datavetenskap och kommunikation.
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.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 3 ( ) Innehåll: -Processtruktur -Processklyvning och kodbyte -Avslutning av processer.
Trådlösa Nätverk Caffe Latte Man-in-the-middle Denial of Service.
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.
Problemlösningsmetodik
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.
William Sandqvist C-programmering ID120V Stack och Kö William Sandqvist
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( )‏ Innehåll:  Introduktion till Java EE (Enterprise Edition)  Enterprise Java Beans.
BVForum - en genomgång för revisorer Sören Thuresson.
PROCESSPROGRAMMERING Föreläsning 1 ( )‏ Innehåll: Introduktion till paralellprogrammering (“concurrent programming”)‏ Introduktion till parallellprogrammering.
Anders Sjögren Filer - långtidslagring. Anders Sjögren Filtyper i DOS talet ett ( intx=1; ) lagrat i en –textfil, (en sekvens av tecken ( bytes )) enligt.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 7 ( ) Innehåll: -IPC: Meddelandeköer.
Anders Sjögren Deklarationsområde och funktioner.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 9 ( ) Innehåll: - IPC: Semaforer.
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.
1 Ingenjörsmetodik IT & ME 2007 Föreläsare Dr. Gunnar Malm.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Gruppövning 0.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 2 ( ) Innehåll: -Fildeskriptorer -Filhantering -Felhantering.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 6 ( )‏ Innehåll:  Att designa parallella program - manuell vs. automatisk parallellisering.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: -Exekveringstrådar.
IT och medier1 Utgående från boken Computer Science av: J. Glenn Brookshear Grundläggande datavetenskap, 4p Kapitel 3 Operativsystem.
Presentationens avskrift:

Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 3 ( ) Innehåll: -Namngivna rörledningar -Signaler -Signalhantering

2Jonny Karlsson Namngivna rörledningar Kallas även FIFO:s Kan användas som kommunkationskanal mellan två processer även om dessa inte är ”släkt” med varandra. En FIFO är i själva verket en typ av fil med speciella egenskaper. Dessa syns i katalogträdet som filer men skiljer sej från vanliga filer genom att de har symbolen p framför skyddskoden. En fil kan ej vara öppen och hanteras av många processer samtidigt men det kan däremot en FIFO. Används huvudsakligen för två ändamål i UNIX: för att via rörledningstecken på kommandoraden (|) skicka utdata från en process som indata till en annan process. På så vis behövs inga temporära filer för att skicka data mellan en klient och en server i Klient-Server miljöer

3Jonny Karlsson Namngivna rörledningar ATT SKAPA EN NAMNGIVEN RÖRLEDNING Skapas från kommandoraden med UNIX kommandot mknod mknod pipename pSkapar en namngiven rörledning med namnet ”pipename” i innevarnade katalog Skapas i ett C-programm med systemanropet mknod() eller mkfifo() mknod(char *pipename, int mode, int dev); pipenamepekar på objektets (rörledningens) filnamn modedefinierar skyddskoden 0010ugo devsaknar betydelse (=0) Ex. mknod(”rorledning”, , 0)

4Jonny Karlsson Namngivna rörledningar HANTERING AV NAMNGIVNA RÖRLEDNINGAR En namngiven rörledning kan öppnas med open() eller fopen(), precis som en fil. int open(char *objektnamn, int mode) objektnamnpekare på en teckentabell som innehåller filnamnet på rörledningen mode0 – öppna för läsning 1 – öppna för skrivning 2 – öppna för både läsning och skrivning FILE *fopen(const char *objektnamn, const char *mode) moder – öppna för läsning w – öppna för skrivning

5Jonny Karlsson Namngivna rörledningar Vid användning av open() kan man med flaggan O_NONBLOCK bestämma vad som händer: Om O_NONBLOCK inte anges som parameter till open() kommer öppning för endast läsning att blockera processen tills någon anna proces öppnar samma FIFO för skrivning. Likväl kommer en öppnig för endast skrivning att blockera processen till någon anna process öppnar samma FIFO för läsning Om flaggan O_NONBLOCK anges som parameter till open() så kommer en öppning för endast läsning att returnera direkt och processen kan fortsätta exekveringen. Om FIFO:n öppnas för skrivning och ingen annan process har öppnat samma FIFO förläsning, kommer felet ENXIO att returneras. 

6Jonny Karlsson Signaler Signaler är kommunikation utan informationsöverföring, inom en process, eller mellan olika processer. Används för processavbrott, dvs. det normala förloppet hos en process kan avbrytas av en signal. Interna signalerSkapas av en exekverande process t.ex: - felaktig instruktion - skrivning av information i en rörledning vars läsända är stängd Externa signalerSkapas t.ex. från: - tangentbordet, t.ex. ctrl-c - Från andra processer systemanropet kill - Från UNIX kommondoraden med kommandot kill En signal identifieras i unix m.h.a. en signalnummer (positivt heltal)

7Jonny Karlsson Signaler STANDARDISERADE SIGNALER I UNIX (Mer info i föreläsningskompendiet och boken) 1.SIGHUP 2.SIGINTTerminal avbrott. Genereras vanligen med ctrl-c 3.SIGQUIT 4.SIGILLGenereras av ogiltig maskininstruktion 5.SIGTRAP 6.SIGIOT 7.SIGEMT 8.SIGFPE 9.SIGKILLGenereras bl.a. av kill -9 processnummer 10.SIGBUS 11.SIGSEGV 12.SIGSYS 13.SIGPIPEGenereras om en process försöker skriva i en rörledning med stängd läsända 14.SIGALRMGenereras av systemanropet alarm(seconds) efter önskat antal sek. 15.SIGTERMGenereras av UNIX kommandot kill processnummer

8Jonny Karlsson Signalhantering UPPFÅNGNING AV SIGNALER ”signal catching” Varje signal i UNIX har en standard funktion som utförs då signalen genereras En signal kan fångas upp och trigga en egen programmerad funktion eller ignoreras genom med systemanropet signal() #include #include typedef void (*sighandler_t) (int); sighandler_t signal(int signum, sighandler_t handler) signumNumret på en signal som man vill uppfånga handerPekare på en void funktion som skall triggas då signalen uppfångas ReturnerarVärdet för den förra ”signal handlern” eller SIG_ERR vid misslyckande.

9Jonny Karlsson Signalhantering En signal kan ignoreras i en process med: signal(signalnummer, SIG_IGN); Man kan återställa grundinställningen för en signal med: signal(signalnummer, SIG_DFL); Alla signaler förtom SIGKILL kan göras uppfångbara med systemanropet signal() 

10Jonny Karlsson Signalhantering Systemanropet pause() kan användas om man vill att en process skall lämna och vänta på en viss signal: #include #include int pause(void);

11Jonny Karlsson Signalhantering ATT SÄNDA EN SIGNAL FRÅN EN PROCESS TILL EN ANNAN Kan i C-programmet göras med systemanropet kill() #include #include int kill (pid_t pid, int signummer); pidprocessnummer för den process som skall ta emot signalen signummersignalnumret som skall skickas till den andra processen Returnerar0 vid framgång -1 vid misslyckande  Ex. 4