Jonny Karlsson 26.3.2007 PROCESSPROGRAMMERING Föreläsning 7 (26.3.2007) Innehåll: -Datakanaler och datakanalpar -Kommunikation på samma dator med datakanaler.

Slides:



Advertisements
Liknande presentationer
INTRODUKTION TILL PROGRAMMERING
Advertisements

Nu projekterar vi bredband via fiber till Långgatan 14-22, Lenhovda
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 1 ( ) Innehåll: -Introduktion av kursen -Program och processer -Fildeskriptorer -Filhantering.
Frågor Allmän IT-kunskap avsnitt 1 kapitel 1 Repetition 4
Mjukvara och nätverk Vad är det?.
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.
Enkel dator teknik Tips och tricks.
#include void fun(char s[]) { int i=-1; while(s[++i]!=0) { if('a'
Filhantering Grundprincipen för filhantering Öppna filen
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.
C-programmering ID120V William Sandqvist Länkad lista
Nätverkskommunikation
Programmeringsteknik K och Media
Next previous Innehåll Inledning Några enkla exempel Pekare till och kort beskrivning av större exempel Speciella referenser (som används i marginalen)
Strömmar Vid läsning och skrivning används något som kallas strömmar.
Distribuerade filsystem
En introduktion till ’Hård Infrastruktur’
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 13: I/O-system.
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 7 ( ) INNEHÅLL: -Klasser och instansvariabler -Tabeller av klassobjekt.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Pekare och speciell programstruktur i inbyggda system
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö.
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Välkommen till Del 1.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: Trådprogrammering i Java - Avbrott (”interrupts”) - Metoden join() -
OPERATIVSYSTEM WINDOWS
Lektion 3 Mahmud Al Hakim
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.
MEOS på två datorer Motionsorientering. TävlingUngdom Korsad nätverkskabel Server Lägg upp tävlingen på denna Används som anmälan Extra batteri Startas.
1 Joomla © 2009 Stefan Andersson 1. 2 MÅL 2 3 Begrepp Aktör: en användare som interagerar med webbplatsen. I diagrammet till höger finns två aktörer:
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 4 ( ) INNEHÅLL: -Logiska opertorer -Poster.
Operativsystem i nätverk
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 4 ( ) Innehåll: - Förening av dataströmmar - Signaler - Signalhantering.
© 2007 Cisco Systems, Inc. All rights reserved.Cisco Public ITE PC v4.0 Chapter 1 1 Operating Systems Networking for Home and Small Businesses – Chapter.
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.
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.
UDP Pålitlig byteström TCP
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.
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.
Informationsteknologi - Lektion 2 Trådlöst nätverk (WLAN) Trådlöst nätverk (WLAN) Filarkivet: Filarkivet:
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.
NÄTVERKSPROTOKOLL Föreläsning INNEHÅLL - DHCP (Dynamic Host Configuration Protocol)‏
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
NÄTVERKSPROTOKOLL Föreläsning
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.
OPERATIVSYSTEM OCH PRAKTISK LINUX Föreläsning 10 – Vecka INNEHÅLL  Säkra nätverksförbindelser  SSH (Secure Shell)  SSL (Secure Sockets Layer)
F5 - Fält & strängar 1 Programmeringsteknik, 4p vt-00 Fält Många element av samma typ Typexempel : lista av heltal Gemensamt namn Individuella värden nås.
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.
F2 1 Programmeringsteknik, 4p vt-00 Kommentarer Allt mellan /* och */ Varje kommentar byts ut mot en blank av kompilatorn /* Exempel på uttryck, tilldelningsoperatorn.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 2 ( ) Innehåll: -Fildeskriptorer -Filhantering -Felhantering.
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 8 ( ) Innehåll: -Exekveringstrådar.
Enkel dator teknik Tips och tricks. Välja storlek och radavstånd Här väljer du storlek på texten vi vill att ni använder 14 p till rubriker och 12 p till.
Presentationens avskrift:

Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 7 ( ) Innehåll: -Datakanaler och datakanalpar -Kommunikation på samma dator med datakanaler

Jonny Karlsson Datakanaler Är idag den vanligast använda tekniken för datakommunikation Kan användas för kommunikation mellan processer på samma dator. Kan användas för för kommunikation mellan processer på olika datorer som är anslutna till ett nätverk. Stöds praktiskt taget av alla nya UNIX system (LINUX, SOLARIS, IRIX) Tekniken baserar sig på transportering dataströmmar via uttag.

Jonny Karlsson Datakanaler

Datakanaler Då två processer kommunicerar med varandra via datakanaler fungerar den ena processen som server och den andra som klient. Båda processerna bör skapa ett uttag till datakanelen med systemanropet socket() Servern bör koppla in sin kommunikationadress med systemanropet bind() Servern skapar en kommunikationskö till datakanalen med systemanropet listen() Servern inväntar en uppkoppling av en klient med systemanropet accept() Klienten kopplar sitt uttag till serverns adress med systemanropet connect(). Klienten kan utföra connect() först efter att servern utfört accept(). Efter detta kan processerna kommunicera via en uttagsdeskriptor t.ex. med systemanropen read() och write().

Jonny Karlsson Att skapa ett uttag #include int socket(int format, int typ, int protokoll); formatSymboliskt heltalsvärde som betecknar uttagets s.k. addressfamilj: AF_UNSPECOspecificerad AF_UNIXLokal kommunikation på samma UNIX-dator AF_INETKommunikation över ett TCP/IP nät typSymboliskt heltalsvärde som definierar datakommunikationens interna struktur: SOCK_STREAMLikadan struktur som vid filhantering. (ÖVRIGA)Se man fil. protokollSymboliskt heltalsvärde som betecknar uttagets s.k. protokollfamilj: 0UNIX väljer protokollet PF_UNSPECOspecificerad PF_UNIXSamma UNIX-dator PF_INETTCP/IP-nät

Jonny Karlsson Att skapa ett uttag OBS! Synkroniserade par av read() och write() förutsätter typ=SOCK_STREAM RETURNERAREn uttagsdeskriptor (heltal > 0) -1 vid misslyckande

Jonny Karlsson Inkoppling av serverns kommunikationsadress (utförs av serverprocessen) #include bind(int uttagsdeskr, struct sockaddr adress, int längd); uttagsdeskrUttagsdeskriptorn till datakanalen som socket() returnerade adressPekare på en post innehållande serverprocessens adressinformation längdStorleken/längden (i byte) hos den post som adress pekar på RETURNERAR0 vid framgång -1 vid misslyckande

Jonny Karlsson Inställning av kommunikationskön (utförs av serverprocessen) #include listen(int uttagsdeskr, int kölängd); uttagsdeskrUttagsdeskriptorn till datakanalen som socket() returnerade kölängdMaximala antalet platser i kommunikationskön (bör vara > 0)

Jonny Karlsson Väntan på en uppkoppling (utförs av serverprocessen) #include int accept(int uttagsdeskr, struct sockaddr &adress, int &längd); uttagsdeskr uttagsdeskrUttagsdeskriptorn till datakanalen som socket() returnerade adressPekare på en post till vilken klientens adressinformation kopieras längdAdressen till en heltalsvariabel innehållande storleken på den post som adress pekar på (antal byte, heltalsvariabeln skall initialiseras till detta värde) RETURNERAREtt datakanaldeskriptorvärde vid framgång -1 vid misslyckande

Jonny Karlsson Uppkoppling till en serverprocess (utförs av klientprocessen) #include connect(int uttagsdeskr, struct sockaddr adress, int längd); uttagsdeskrUttagsdeskriptorn till datakanalen som socket() returnerade adressAdresspekare på en post som innehåller serverprocessens adressinformation längdStorkilek (i byte) på den post som adress pekar på

Jonny Karlsson Stängning av kommunikation (utförs både av server- och klientprocessen) #include int shutdown(int uttagsdeskr, int mode); uttagsdeskrUttagsdeskriptorn till datakanalen som socket() returnerade mode0 = inkommande kommunikation avstängs 1 = utgående kommunikation avstängs 2 = all kommunikationavstängs RETURNERAR0 vid lyckat anrop -1 vid misslyckande

Jonny Karlsson Avbrytning av förbindelse till inkopplad datakanal (utförs både av server- och klientprocessen) close(uttagsdeskriptor);

Jonny Karlsson Kommunikation på samma dator Adressinfor sparas i en post av typen struct sockaddr: #include #include struct sockaddr { u_short sa_family;//adressfamilj char sa_data[14];//teckentabell för namn }; i sa_family sparas samma värde som gavs som argument till socket() d.v.s. i detta fall AF_UNIX eftersom kommunikationen skall ske lokalt. I sa_data sparas namnet på ett datakanalsobjekt ex. /tmp/sockname Namnet på ett datakanal-objekt skall vara ett nytt datakanal-objekt i angiven lokal katalog (jämför namngivna rörledningar)

Jonny Karlsson Kommunikation på samma dator Serverprocess int sd,ns,len; struct sockaddr serv,cli; len=sizeof(cli); /* initialisering */ sd=socket(AF_UNIX,SOCK_STREAM,0); serv.sa_family=AF_UNIX; unlink(”/tmp/sockname”); /* radering */ strcpy(serv.sa_data,”/tmp/sockname”); bind(sd, &serv,sizeof(serv)); listen(sd,3) ns = accept(sd,&cli,&len); while(1) { //kommunicera via ns } shutdown(sd, 2); close(ns); close(sd);

Jonny Karlsson Kommunikation på samma dator Klientprocess int sd; struct sockaddr serv; sd=socket(AF_UNIX,SOCK_STREAM,0); serv.sa_family=AF_UNIX; strcpy(ser.sa_data,”/tmp/sockname”); connect(sd,&serv,sizeof(serv)); /* kommunikation via sd */ shutdown(sd,2); close(sd); För mer detaljerad information om datakanaler, se föreläsningskompendiet sid 31-35

Jonny Karlsson Datakanalpar Kan enkelt skapas med följande systemanrop: int pd[2]; int socketpair(AF_UNIX, SOCK_STREAM, 0 pd); Detta resulterar i två deskriptorer i pd[] tabellen. Dessa deskriptorer kan sedan användas på samma sätt som vid rörledningar som skapats med pipe() anropet.