Jonny Karlsson 20.9.2005 PROCESSPROGRAMMERING Föreläsning 4 (20.9.2005) Innehåll: -Programmerade rörledningar -Namngivna rörledningar.

Slides:



Advertisements
Liknande presentationer
Access med Sebastian och Robert
Advertisements

Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 1 ( ) Innehåll: -Introduktion av kursen -Program och processer -Fildeskriptorer -Filhantering.
Hämta företagsdata till Excel
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.
Filhantering Grundprincipen för filhantering Öppna filen
2D1311 Programmeringsteknik med PBL Föreläsning 4 Skolan för Datavetenskap och kommunikation.
Programmeringsteknik för K och Media
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 5 Python: argument från kommando-tolken
Strömmar Vid läsning och skrivning används något som kallas strömmar.
Distribuerade filsystem
DAV B04 - Databasteknik Indexering (kap 14).
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, Kap 3 & 4: Processer & trådar.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 11: Implementation av filsystem.
Beräkningsverktyg info Klimatkollen Vad behövs för att bli godkänd som användare av beräkningsverktyget? Delta i denna webkurs Gör övningsuppgift.
Programhantering Filhantering [”Önskvärda” kunskaper]
EN KOMPLETT INDUSTRIPARTNER ! ALLMÄNT OM MELSEC STYRSYSTEM.
Föreläsning 5.  Idag  Kap 7 i Dawson  Filer  Felhantering med try…except.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 7 ( ) Innehåll: -Datakanaler och datakanalpar -Kommunikation på samma dator med datakanaler.
Pekare och speciell programstruktur i inbyggda system
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.
OPERATIVSYSTEM OCH PRAKTISK LINUX Föreläsning 5 – Vecka INNEHÅLL  Filer  Filtyper  Filändelser  Accessrättigheter för filer.
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.
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 INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
Jonny Karlsson GRUNDKURS I PROGRAMMERING MED JAVA Föreläsning 9 ( ) INNEHÅLL: -Tabeller av klassobjekt -Användning av Java API specifikationen.
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.
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
Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 11 C# I/O Streams C# använder “strömmar” för in- och utmatningsoperationer.
Kenneth Wilhelmsson 1 Logikprogrammering 10 P Onsdag 20 november 2002.
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.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 5 ( ) Innehåll: IPC: meddelandeköer IPC: delat minne.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( )‏ Innehåll:  Introduktion till Java EE (Enterprise Edition)  Enterprise Java Beans.
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.
William Sandqvist PIC-programmeringsmiljön i skolan Datorerna i skolans labsalar är centralt underhållna. Du har inte rättigheter att installera.
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.
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.
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.
Föreläsning 14 Logik med tillämpningar Innehåll u Cuts och negation u Input/output u Extralogiska predikat u Interaktiva program, failure-drivna.
Procedurellt potpurri Dagens samtalsämnen –Klipp (Cut) –If-then-else –fail/0 –repeat/0 Att läsa –The Art of Prolog, kapitel 11 –Relevant avsnitt i Learn.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 2 ( ) Innehåll: -Fildeskriptorer -Filhantering -Felhantering.
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Konstanter float pi; const float pi = ; float *pip = π //Kompileringsfel! const float.
William Sandqvist Distributed Computing Client – Server. En skrivarserver kan vara ett exempel på en Client-Server arkitektur. S Burd, Systems.
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.
Föreläsning 9 Inläsning och utskrift på fil –SimpleTextFileReader –SimpleTextFileWriter Felsökning Java API.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
Välkommen till kattens magiska värld
Presentationens avskrift:

Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 4 ( ) Innehåll: -Programmerade rörledningar -Namngivna rörledningar

Jonny Karlsson Programmerade rörledningar Är det äldsta och fortfarande vanligaste sättet att förverkliga kommunication mellan UNIX-processer Används vanligen för kommunikation mellan en föräldraprocess och en eller flera barnprocesser Begränsningar: Kan endast användas mellan processer som är släkt med varandra i rakt nedstigande led. (minst en fork i mellan) Kommunikationen är Halv-Duplex (kommunikation möjlig endast i en riktning

Jonny Karlsson Programmerade rörledningar ATT SKAPA EN PROGRAMMERAD RÖRLEDNING En programmerad rörledning skapas i ett C-program med systemanropet pipe int pipe(int filedes[2]); pipe skapar, förutom själva rörledningen, ett par fildeskriptorer filedes[0]Pekar på rörledningens läsända filedes[1]Pekar på rörledningens skrivända Returnerar:0 vid framgång -1 vid misslyckande

Jonny Karlsson Programmerade rörledningar ATT SKRIVA TILL ELLER LÄSA FRÅN EN RÖRLEDNING Skrivning till eller läsning från en programmerad rörledning kan göras på samma sätt som vid filhantering Man skriver till rörledningens skrivända: write(filedes[1], buffer, strlen(buffer)); och läser från rörledningens läsända: read(filedes[0], buffer, strlen(buffer)); En fildeskriptor kan associeras med en strömpekare med systemanropet fdopen strompek = fdopen(filedes[1], ”w”); strompek2 = fdopen(filedes[0], ”r”); Vartefter man kan skriva till rörledningen med fprintf(strompek,...) och läsa ur rörledningen med fscanf(strompek2,...)

Jonny Karlsson Programmerade rörledningar STÄNGNING AV EN ÖPPEN RÖRLEDNING Görs på samm sätt som vid stängning av en öppen filer: close(filedes[0]);Stänger rörledningens läsända close(filedes[1]);Stänger rörledningens skrivända

Jonny Karlsson Programmerade rörledningar ANVÄNDNING AV PROGRAMMERADE RÖRLEDNINGAR Om kommunikation i båda riktningarna mellan två processer önskas, krävs två rörledningar Vanligen skapar föräldraprocessen först 2 rörledningar och kallar därefter på fork. Därefter stänger föräldra- och barnprocessen var sin ända av var sin rörledning.  Exempel1

Jonny Karlsson Programmerade rörledningar För en process som uppstartats av barnprocessen till följd av kodbyte (execl) är deskriptortabellen (filedes[2]) som skapats i förldraprocessen obekant. Man brukar därför koppla rörledningens läsända till standard input och skrivända till standard output i barnprocessen. Detta måste göras i barnprocessen före kodbyte. En rörlednings läsanda kopplas till standard input enligt följande: close(0)Standard input stängs dup(filedes[0])Skapar en kopia av rörledningens läsdeskriptor med lägsta möjliga deskriptorvärde (I detta fall 0 eftersom deskriptor 0 stängdes före dup close(filedes[0])Ursprungliga läsdeskriptorn stängs Efter detta kan barnprogrammet som uppstartats som följd av kodbyte läsa data ur rörledningen via deskriptor 0 eller strömpekare stdin En rörlednings skrivända kopplas till standard output på motsvarande sätt.  Exempel 2.

Jonny 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

Jonny 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)

Jonny 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

Jonny 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.  Exempel 3: