Beskeder/beskedkøer Afsender- proces hej Modtager- proces.. msgsnd(..,"hej",..);.. msgrcv(..);.. Afsender skal bl.a. angive den besked der ønskes afsendt.

Slides:



Advertisements
Lignende præsentationer
Kort om JavaScript Afvikles i browser på klienten Sendes fra server (php, asp, aspx, htm) eller startes i klient som htm/html fil. Skabelon: –”main” -
Advertisements

Introduktion til Javascript – Grundlæggende Webdesign, F2004. Introduktion til Javascript.
TEST 2 modul 1 20 spørgsmål. Du skal klikke med musen på det rigtige svar, så kommer du automatisk til næste spørgsmål Klik for start.
Introduktion til HTML Formularer V1 introduktion til formularer Den sidste af HTML strukturmarkørerne er FORM-markøren, der bruges til at lave.
OS[2]: Processor, tråde og skedulering
Arkitektur - data.
Programmeringsparadigmer.
Formularer (Access, del 3)
Digitalisering i Praktiken Workshops den 9. februar 2007
07 – Kort om OO Introduktion.
Computerens anatomi! Hvad skal du vide før du køber din egen?
Kommunikation / it.
Sikkerhed/Otto Knudsen 1 Diagnostics  Debug af web-applikationer.
Perspektiverende Datalogi Internetalgoritmer MapReduce Gerth Stølting Brodal.
Pc-kørekort Sådan virker pc’en Keld Hinsch.
Almindelige ("hårde") links (i filsystemer med i-noder) opg.txt jens: pia: ln /home/pia/opg.txt /home/jens/opg.txt hård link: ny post får i-node-nummer.
CSS ver. 2 Rikke Møller-Poulsen. Visning af billeder?!? Er der stadig nogen, der har problemer med at få vist billeder på deres site?
Flerbrugermaskine Fælles maskine Root: webserver Peter: uploader filer Pia: programudvikling 1 langvarig proces, evt. med børneprocesser skiftende behov.
Semaforer Hvordan virker semop() hvis der er flere operationer ? I hvilken rækkefølge vækkes blokerede semaforer ? man semop.. The system call semantic.
Første generation (maskiner/operativsystemer) 45-55: radiorør Kun maskinsprog programmering = skrivning af nullerog ettaller Intet operativsystem programmør.
DS-kursusgang nr. 4 IPC generelt IPC eksempel: beskedkøer IPC tidsforbrug: kontekstskift, skedulering C: abstraktion, funktionsbiblioteker.
DS-kursusgang nr. 5: Sockets Intro Java-klasser til at arbejde med sockets. Forskellen på sockets i C og i Java. TCP/IP protokol familjen. Afslutning:
Grundlæggende programmering Efterår 2001
01 – Java platform for starters. 2 NOEA2009Java-kursus – Java Platform Introduktion til Java Baggrund Hvad er Java? Faciliteter i Java.
Introduktion til Access (Access, del 1)
Adresserum Adresserum: Det interval af adresser, der kan arbejdes med i den samme proces (fra 0 til største adresse) Lippiatt++: adresser fylder 8 bit.
GP5, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 5 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
11.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2000 © Processer Oversigt, principper og teknikker Kapitel 11.
18 – Java Server Faces. 2 NOEA2009Java-kursus – JSF 2 Web-applikationer - 1 Brugere interagerer med en Web-browser Browseren sender forespørgsler til.
Context- og flow-diagrammer (databaser, del 3)
Swapping og paging Flytning af processer (swapping) eller dele af processer (paging) mellem arbejdslager og fjernlager. Baggrund: På den ene side skal.
AJAX/Otto Knudsen 1 AJAX Motivation Definition. AJAX/Otto Knudsen 2 Motivation En typisk web-applikation er synkron klienten sender en forespørgsel og.
Udregning af UseCasePoints UCP = UUCP*TCF*EF UseCasePoint = Ujusteret Use Case Point * Tekniske Komplexitets Faktor * Miljø Mæssige Faktor.
To måder at overføre objekt- referencer mellem processer (1) Via naming service - interface RMISolver (2) Som parametre til fjernprocedurekald - interface.
Fundamentale datastrukturer
1. Database-systemer, introduktion
Introduktion til databaser (databaser, del 1)
Simulering af spisende filosoffer
Introduktion til Access (Access, del 1). RHS – Informationsteknologi – Fra design til udvikling Vi ved nu, hvordan vi finder et design for en database,
Interaktionsformer En begrebsmæssig model kan understøttes med forskellige interaktionsformer Interaktionsformen fastlægger centrale egenskaber: Hvordan.
8.6 Transaktioner1 Transaktioner 8.6 Transactions in SQL.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Procestræ under afvikling af cp init login shell cp cp src dest.
Intro Siden sidst: evaluering på opgaver og virtuel kursus.
Fremstilling af Simple WEB steder [ITPL] Foråret 2004
Per P. MadsenStyresystemer og tjenester1 Indhold: 1.Introduktion til styresystemer. 2.Processer og tråde. 3.Synkroniseringsmetoder og InterProcesCommunikation.
C#: Udtryk og metoder Kilde: Joe Hummel. 2 Nordjyllands Erhvervakademi – 2008 Indhold “With regards to programming statements and methods, C# offers what.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Hvad består en distribueret applikation af ? Processer der kører på hver deres maskine Tråde - 1 eller flere "letvægtsprocesser" per proces Objekter i.
PD – kursusgang 3 Introduktion til Java Script. Mål Viden om hvordan JavaScripts indlejres i HTML dokumenter Viden om programmering i JavaScript  Erklæring.
Intro Siden sidst: evaluering på opgaver og virtuel kursus Kursussammensætning: forelæsning – læse – arbejde selvstændigt – newsgroup – øvelsestime – aflevering.
DWDK – øvelsestime 3 CSS – let the fun begin!!. Tilgængelige slides Disse slides ligger på mit public drev
Operativsystemer, processor og tråde. Disposition Operativsystem Kerne funktionalitet Presser og adresserum Tråde.
Per Printz Madsen Linux proces og tråd programmering Per Printz Madsen Aalborg Universitet Institut for.
Per Printz Madsen 1 Linux kernen Monolithic kernel Support for dynamiske moduler Få kerne tråde Preemptive.
Per P. MadsenStyresystemer og tjenester1 Threads.
Tekst filer Tekstfiler opbygges normalt af linier, hvor disse ikke behøver at være samme længde. Når man skal arbejde med tekstfiler, ønsker man metoder.
Deadlock Definition deadlock (baglås) er en tilstand som en mængde af processer kan være i en mængde processer er i deadlock hvis alle processerne står.
Udvikling af mobilsites Einar Gislason / FTF. Mobilsites Mobilvenlige sites.
1 Processer. 2 fork int fork(); Danner en ny proces med samme indhold som forældre processen. I begge processer er programtælleren placeret lige efter.
Samtidighed. Disposition Formål med tråde Eksempel på fordel ved tråde Thread-pooling Livscyklus Problemstillinger Algoritmer ◦Dekkers ◦Peterson Opsumering.
Intro Siden sidst: evaluering på opgaver og virtuel kursus.
Indledende Programmering Uge 6 - Efterår 2006
Multiple processer på web-site Web- server filer Kunde 1 Kunde 2 Kunde p1p2p internet.
Deadlock Definition deadlock (baglås) er en tilstand som en mængde af processer kan være i en mængde processer er i deadlock hvis alle processerne står.
Anvendelse.
Tre lags arkitektur.
Programmering.
Tråde & Executors – uge 2.
Tråde & Executors – uge 2.
Præsentationens transcript:

Beskeder/beskedkøer Afsender- proces hej Modtager- proces.. msgsnd(..,"hej",..);.. msgrcv(..);.. Afsender skal bl.a. angive den besked der ønskes afsendt adresse = beskedkø Beskedkø kendes kun af processer på maskinen Der sendes ikke acknowledgement Modtagerproces "forbruger" besked ved læsning

Opg. 4 / ugeseddel 39 Filosof 0Filosof 4... Grafik- proces Filosoffer kommunikerer indbyrdes for at deles om gaflerne Filosoffer sender beskeder til grafikproces om hvad der ønskes udskrevet på skærmen

Interproces-kommunikation (IPC) Den mest naturlige: beskeder Metoder/faciliteter vi har gennemgået tidligere: Filer Semaforer Pipes Andre metoder/faciliteter: Signaler Delt hukommelse mellem separate processer

Hvorfor IPC ? Processer har behov for at udveksle information Men processer har ikke umiddelbart adgang til hinandens data. Konkret pga. beskyttelse af processens adresserum. Generelt kan man sige at den enkelte proces tror den har maskinen for sig selv. Eksempler på kommunikation: "boss"-proces sender input data til "worker"-proces 1 proces fortæller ander processer: "jeg er i kritisk region, hold jer væk"

Hvorfor overhovedet multiple processer i samme applikation ? Eksempler: browser viser første del af webside før hele siden er kommet frem databasesystem tillader samtidige forespørgsler e-handelssytem tillader samtidige brugere Opgaver, der skal løses samtidigt med andre opgaver, placeres i separat proces. Administration af samtidighed overlades til operativsystem Programmet for den enkelte opgave kan skrives som om programmet havde maskinen for sig selv. Bortset altså fra nødvendigheden af IPC !

Separate processer vs. eksplicit programmering af fordeling af cpu-tid while (TRUE) { {for PH = philosopher 0,1,2,4 do} run_philosopher_for_0.1_sec(PH); }; } // ?? Hvordan vides hvor hvor delopgave er kommet til (hvilken programlinje) ? Hvordan undgås tidsspilde pga. blokering ? Teknisk set måske muligt, men vanvittig kompliceret.

Beskeder/beskedkøer ….. msgsnd(..);.. msgrcv(..);.. Afsender skal angive - adresse (kø) & indhold - længde af besked - prioritet - flag som styrer opførsel i specialtilfælde

C-strukturer til beskeder // Simpel besked struct besked { long int prioritet; char txt[40]; }.. struct besked min_besked = {0,"Filosof 3 har gaffel 2 og 3"};.. msgsnd(,(void *)&min_besked,40, ); // Kompleks besked struct ordre { long int rute; // hvilken flyrute ? char ordre; // 'b' = bestil, 'a' = afbestil int antal; // antal billetter char navn[40]; // personen der afgiver ordren }

Lighedspunkter i systemkald: filbehandling, semaforer, beskedkøer start fd = open()semid = semget()msqid = msgget() operationFilerSemaforerBeskedkøer brug read(fd,buf,size) write(fd,buf,size) semop(semid,..) msqsnd(msgid,&mess,sz,..) msgrcv(msqid,&mess,sz,...) slut close(fd)semctl(semid,..)msqid = msgget() Heltal til identifikation af fil/semafor/kø ID returneres af systemkald til oprettelse Filer og beskedkøer arbejder med pointere til data

Sammenligning filer/beskedkøer Generelle egenskaber Kapacitet ? Persistens ? Tilgængelighed ? Mere specifikke egenskaber Effektivitet ? Navngivning ? Sikkerhed ?

Tråde "Billedlig" betydning af tråd: en rækkefølge af udførte instruktioner dvs. en slags "tracing" af programudførelsen GOTO my_label my_label Instruktioner

Tråde ("billedlige") ved fork().. pid = fork(); switch(pid) { case -1: printf("fork() mislykkedes \n"); break; case 0: printf("Jeg er børneprocessen"); break; default: printf("Jeg er faderprocessen"); }.. Faderproces børneproces

Tråde som "letvægtsprocesser" En multitrådet applikation opnår multitasking med flere tråde i samme proces. Jævnfør procesdefinition: Adresserum med stak, tekst og data Procestabelindgang med bl.a. systemressourcer En eller flere tråde der deles om tekst, data og systemressourcer Eksempler: Java: class Thread C: POSIX-tråde

1 eller flere tråde i samme proces 1 computer 2 processer med hver sin tråd 1 computer 1 proces med 2 tråde

Flere processer: fork() + exec() stak tekst data sh ps efter fork() efter exec() sh ps PC

Flere processer: fork() uden exec() Efter fortsat program udførelse: forskellig værdi af processens PC (Program Counter) forskellig stak (procedurestak) forskellige data men stadig samme programtekst samt parametre filo

Fordele ved multitrådning filo-p To processer To tråde filo-t Fordele Skabelse af tråde er hurtigere Kommunikation mellem tråde hurtigere end mellem processer Proces har ret til at prioritere mellem sine egne tråde Tråde deler både processens tekst- og data-del.

Opdeling i delopgaver: boss/worker-model boss worker 1 proces er "boss" udgør kontaktpunkt fordeler delopgaver "ledelse" f.eks. omfordeling, drab, m.m. Design-overvejelser:

Klient/server-model boss worker Server, f.eks. webserver eller database Klient, f.eks. webbrowser forespørgsel svar

Pipeline-model Velegnet til fase-vis bearbejdning af data hvis de enkelte faser er uafhængige muligt at lagre data i buffere imellem faserne eksterne afhængigheder medfører at det ikke kan forudses hvornår der skal arbejdes i hvilke faser

Arrays og pointere char txt[] = "hello world!\n";; // skaber txt[0].. txt[14] samt txt // hvor txt er adressen på txt[0] putchar(txt[0]); // vi vil se det 1. Tegn ! putchar(txt[13]); // vi vil se det 14. Tegn ! // txt[13] findes ved at lægge 13 til txt putchar(*(txt)) // samme som txt[0] putchar(*(txt + 13)) // samme som txt[13] Navnet på et array ( txt ) er en adresse, nemlig adressen på array-ets første element (txt[0]) og har således lighedspunkter med en pointer. C tillader "pointer-aritmetik" både med pointere og arraynavne.

Beregning af længden af en streng // naturligt program int strlen(char s[]) { int pos; for (pos=0; s[pos] != '\0'; pos++); // s + pos lægges sammen i hver iteration return pos; } // optimeret med pointer-aritmetik int strlen(char *s) { char *pos; for (pos = s; *pos != '\0'; pos++); //.. hvilket er sparet væk her ! return (pos - s); }