Synkronisering af sekventielle processer

Størrelse: px
Starte visningen fra side:

Download "Synkronisering af sekventielle processer"

Transkript

1 Synkronisering af sekventielle processer Klaus Hansen, Niels Elgaard Larsen, Maz Spork, Jørgen Sværke Hansen 15. februar Introduktion Ved en multiprogram forstår vi et program, hvori vi kan specificere, at flere sekvenser af ordrer er under udførelse samtidigt og uafhængigt af hinanden. Disse sekvenser kan enten implementeres som forskellige tråde internt for en proces eller som forskellige processer. I det første tilfælde omtaler man også til programmet som et flertrådet program. I det følgende vil vi referere til sekvenserne som processer. Under specifikationen af en enkelt proces kan vi ikke vide noget om de andre processers hastighed, og dermed hvor langt de er kommet. Dette sidste viser sig at være en af de væsentligste vanskeligheder, når man skal konstruere et multiprogram. Problemet findes i mange sammenhænge i såvel materiel som programmel, og er blevet løst på mange forskellige måder. Principielle overvejelser omkring 1965 førte til Dekkers algoritme og Dijkstras semaforer 1. Varianter af disse findes beskrevet i [SGG04], afsnit 7.2 og 7.5. I det følgende behandles semaforer lidt mere dybtgående. 2 Tidsafhængighed i multiprogrammer Når der opstår en fejl i et sekventielt program, altså i et program med kun én sekvens af ordrer under udførelse, kan denne fejl reproduceres ved at køre programmet igen med de samme data. Vi kan altså foretage programtestning, som vi kender det. Anderledes forholder det sig med multiprogrammer. Nu spiller tiden en rolle, dvs. hastigheden hvormed de enkelte processer afvikles, og resultatet af en kørsel kan ikke nødvendigvis reproduceres. Lad os som eksempel vende tilbage til forespørgselssystemet fra forrige afsnit. I hver post i registret er der en tæller, som angiver hvor mange gange en given post har været aflæst siden den blev oprettet. Når vi således har fundet den post vi søger, skal vi opdatere tælleren og skrive blokken tilbage på pladelageret inden indholdet i posten skrives på terminalen: 1 Ordet semafor stammer fra det franske ord sémaphore (fra græsk "sema"tegn, og "férein"bære) og betegner en signalmast for optisk telegrafi. Ordet bruges stadig på engelsk for jernbanesignal og på italiensk for trafiklys. 1

2 <læs blok>; if (<post fundet>) { blok.post.tæller++; <skriv blok>; Problemet er, at de tre processer arbejder på fælles data beliggende på pladelageret. Når en proces ønsker at opdatere disse, må den ikke blive forstyrret af andre processer, der piller ved de samme data. Opdateringen, der starter med læs blok er først overstået, når skriv blok er udført, og når dette foregår, må andre processer ikke pille ved den samme blok. Problemet kan løses hvis opdateringen kan foregå udeleligt i en kritisk region. En kritisk region knytter sig til de fælles data (her pladelageret), man opererer på; og det er kun processer, der ønsker adgang til de samme data, vi ønsker standset. At have kritiske regioner er desværre ikke nok, når vi skal lave et multiprogram korrekt. Kritiske regioner sikrer kun, at vi kan opdatere fælles data udeleligt; de hjælper os ikke når vi skal transmittere data fra en proces til en anden. Lad os se på et eksempel: I figur 1 ses en konfiguration med en kommunikationsport og en skriver. Vi ønsker et program, der kan indlæse en række linier og kopiere indholdet ud på skriveren så hurtigt som muligt. Et sekventielt program: læs linie; udskriv linie; forever er således ikke tilfredsstillende, da læseren (kommunikationsporten) venter, når skriveren arbejder og omvendt. Vi skal altså overlappe brugen af læser og skriver. Fx således: char indlinie[80], udlinie[80]; process læser { læs(indlinie); memcpy(udlinie, indlinie, 80); forever process skriver { udskriv(udlinie); forever Hvis tiden det tager at kopiere indlinie er lille i forhold til læsehastigheden, vil processen læser indlæse med portens fulde hastighed. Skriveren udnyttes også fuldt ud. Men vil programmet fungere korrekt? Ja, vi har vel allerede en mistanke om, at dette ikke altid vil være tilfældet. De to processer opererer nemlig på den fælles variable udlinie, og resultaterne afhænger derfor af de to processers indbyrdes hastighed. Vi kan tabe en linie, hvis læseren et øjeblik er for hurtig og indholdet i udlinie overskrives inden det er trykt, eller vi kan få flere udgaver af samme linie, hvis skriveren er for hurtig. Problemet kan ikke klares med kritiske regioner. Selvom vi har udelukket processen læser fra at røre udlinie, kan vi jo ikke i processen skriver afgøre om linien skal udskrives eller ej ud fra 2

3 Kommunikationsport Centralenhed Skriver Figur 1: Konfiguration, hvorpå vi kan kopiere indlæste linier ud på en skriver værdien af udlinie alene. Når vi har skrevet indholdet af udlinie er processen nødt til at vente på, at den variable får et nyt indhold, og det kan vi kun få at vide fra processen læser. Tilsvarende er processen læser nødt til at vente med kopieringen til forrige linie er udskrevet. De to processer er altså nødt til at kommunikere omkring brugen af variablen udlinie. Vi skal nu først se på de kritiske regioner, og dernæst hvordan vi klarer en venten som ovenfor, når der er tale om processer i et multiprogram. 3 Semaforer Den simpleste form for kommunikation mellem to processer består i at en proces kan sende et signal til en anden. Til at klare denne form for kommunikation foreslog Dijkstra [Dij] en speciel type variable, semaforer, som er ikke-negative heltal, der tæller antal signaler, som er sendt og endnu ikke modtaget. Han foreslog desuden to operationer på sådanne variable: signaler, hvorved et signal sendes, og vent, hvorved et signal modtages. (Hos Dijkstra kaldes disse operationer V og P 2 ). Da vi jo hverken kender hastigheden af den afsendende eller den modtagende proces er det umuligt at vide om en proces sender signalet før modtageren venter på det eller omvendt. Operationerne signaler og vent er derfor defineret, så det er ligegyldigt i hvilken rækkefølge de udføres. Hvis en proces ønsker at modtage et signal før det er klart, forsinkes processen simpelthen indtil signalet afsendes. Omvendt, hvis signaler sendes hurtigere end de modtages, bliver de simpelt gemt ved, at semaforens værdi tælles op med én for hvert signal. Dermed er synkroniseringen blevet tidsuafhængig. De to operationer ser således ud, idet s er et heltal: 2 Oprindelsen til P og V var ifølge Andrews & Schneider [AS83] med henvisning til Dijkstra oprindeligt de hollandske ord passeren (at passere) og vrijgeven (at frigive). Senere efterrationaliseredes betydningen af P og V til prolagen = proberen verlagen (at forsøge at nedtælle) og verhogen (at optælle). 3

4 vent(s) { if (s> 0) s--; else <vent på at s>0>; signaler(s) { if (ventende) <aktiver en>; else s++; Operationerne navngives lidt forskelligt i litteraturen oftest afhængigt af den valgte semantik for semaforerne, eksempler er: vent kan hedde wait, lock, down, lås, P, enqueue, sleep, acquire; signaler kan hedde signal, open, up, send, åbn, V, dequeue, wakeup, release. I lærebogen [SGG04] afsnit 7.5 kaldes de release og acquire. Lad os nu se, hvordan vi kan bruge disse semaforer til at løse problemerne fra forrige afsnit. Først etablering af udelelig adgang til fælles data. Det klares med en semafor adgang (i bogen kaldet mutex) og så følgende udformning af opdateringen vent(adgang); <kritisk region, hvor der opdateres>; signaler(adgang); Semaforen skal så have værdien 1 til at starte med. Når adgang har værdien 1 er der ikke udført en venteoperation, og ingen proces er i den kritiske region. Er værdien 0, har en eller flere processer udført vent, men kun én har kunnet køre videre, de øvrige venter. Semaforen kan kun have disse to værdier. Dernæst de to kommunikerende processer. Det klares med to semaforer: læst, skrevet. char indlinie[80], udlinie[80]; semafor læst, skrevet; process læser { læslinie(indlinie); vent(skrevet); memcpy(udlinie, indlinie, 80); signaler(læst); forever 4

5 process skriver { vent(læst); udskriv(udlinie); signaler(skrevet); forever Semaforerne initialiseres så skrevet = 1 og læst = 0. Hvis der er flere buffere i systemet end de to, er det let at generalisere løsningen; det kaldes i litteraturen bounded-buffer eller et producer-consumer system. Semaforen skrevet skal da initialiseres til antallet af ledige buffere. De her nævnte semaforer kaldes tællesemaforer, idet de kan antage ikke negative værdier, og operationerne vent/signaler tæller værdien ned/op. Der findes andre semafortyper: binære semaforer, som kun antager værdierne 0, 1; beskedsemaforer, hvor der ikke tælles i en tæller, men sættes beskeder i en kø (antallet af køelementer svarer til tællesemaforens værdier); generelle semaforer, som er beskedsemaforer, hvor beskeder har en type og vent har en yderligere parameter, der angiver en mængde af typer, processen er interesseret i; postkassesemaforer, hvor signaler aktiverer samtlige ventende processer; trafiklyssemaforer, som har to tilstande, rød og grøn, og tre operationer: start, som aktiverer alle ventende og sætter tilstanden til grøn, stop, som sætter tilstanden til rød og passer, som enten lader processer fortsætte (grøn), eller sætter den til at vente (rød tilstand). En semafor er altså ikke et entydigt begreb, men der er nogle fællestræk: 1. Semaforer løser synkroniseringsproblemer en gang for alle, således at disse tages fra brugerprogrammer ind i en fælles kerne. 2. Semaforoperationer er udelelige; hvorledes er ikke et problem i brugerprogrammet. 3. Aktiv venten i venteløkker i brugerprogrammet undgås; skal en proces vente på en betingelse, kan dette ske på en måde således at processkift er muligt. Den ovenfor beskrevne tællesemafor blev vist som en heltalsvariabel, idet konsekvensen af sætningen vent på at s > 0 med hensyn til datastrukturer blev forbigået. I dagliglivet venter man gerne på en hændelse ved at stå i kø, idet køen dog ikke altid er klart synlig. Ved beskrivelsen af semaforer kan vi benytte køstrukturer til at vente i, denne er kaldt prockø nedenfor; bemærk at der ved implementation af operationerne ikke nødvendigvis benyttes en kø eller en liste. Derfor er skitserne for operationerne skrevet uden direkte brug af denne kø. Variablen ventende holder styr på antallet af ventende processer. De forskellige semafortyper kan løseligt beskrives, som angivet herefter. 5

6 Eksempel 1: binær semafor class BinærSem { enum Tilstand {åben, låst tilstand; kø prockø; int ventende; public: void BinærSem(Tilstand t=åben) { tilstand=t; ventende=0; void vent(); void signaler(); ; Eksempel 2: tællesemafor class TælleSem { int tæller; kø prockø; int ventende; public: void TælleSem(int c) { tæller=c; ventende=0; void vent(); void signaler(); ; Eksempel 3: beskedsemafor class BeskedSem { kø bufkø; kø prockø; int ventende; public: void BeskedSem(){ ventende=0; buf *vent(); void signaler(buf *); ; 6

7 Eksempel 4: postkassesemafor class PostkasseSem { kø prockø; int ventende; public: void PostkasseSem() {ventende=0; void vent(); void signaler(); ; Eksempel 5: trafiklyssemafor class TrafiklysSem { enum Farve {grøn, rød farve; kø prockø; int ventende; public: void TrafiklysSem (Farve startfarve=grøn) { farve=startfarve; ventende=0; void vent(); void start(); void stop(); ; De tilsvarende operationer kan nu skitseres; idet <kø>.tilkø(), <kø>.frigiv() og <kø>.tom() nøje svarer til operationerne put, get og isempty på Queue i appendiks A.2. I skitserne er anvendelsen af disse på prockø skjult i <bloker proces> og <aktiver proces>, idet det det er et implementationsanliggende, 1) om der overhovedet er en kø, 2) hvad det er, der sættes i kø og tages ud af kø, og 3) hvorledes en proces blokeres og aktiveres. I stedet for <prockø>.tom() anvendes derfor ventende>0. binær semafor void BinærSem::vent() { if (tilstand==åben) tilstand=låst; else { ventende++; <bloker proces>; void BinærSem::signaler() { if (tilstand==låst) if (ventende>0) { <aktiver proces>; ventende--; else tilstand=åben; 7

8 tællesemafor void TælleSem::vent() { if (tæller>0) tæller--; else { ventende++; <bloker proces>; void TælleSem::signaler() { if (ventende>0) { <aktiver proces>; ventende--; else tæller++; beskedsemafor buf *BeskedSem::vent() { if (!bufkø.tom()) return(bufkø.frigiv()); else { ventende++; <bloker proces>; void BeskedSem::signaler(buf *buffer) { if (ventende>0) { aflever(buf); <aktiver proces>; ventende--; else bufkø.tilkø(buf); postkassesemafor void PostkasseSem::vent() { ventende++; <bloker proces>; void PostkasseSem::signaler() { while (ventende>0) { <aktiver proces>; ventende--; ; 8

9 trafiklyssemafor void TrafiklysSem::vent() { if (farve==rød) { ventende++; <bloker proces>; void TrafiklysSem::start() { farve=grøn; while (ventende>0) { <aktiver proces>; ventende--; void TrafiklysSem::stop(){ farve=rød; Der findes andre løsninger på synkroniseringsproblemet og de kritiske regioner, se Silberschatz, Galvin og Gagne [SGG04], kapitel 7. 4 Valg af semafortype Det er ikke muligt at pege på en af semafortyperne og sige at det er den bedste; hver type er lavet til bestemte formål. At implementere alle mulige semafortyper i en kerne synes derimod at være en upraktisk ide; det ville være bedre at vælge en eller to som er særligt anvendelige, og dermed velegnede til at tage med i en generel kerne. At udvælge fx binære semaforer, fordi de er særligt nemme at implementere på nogle maskiner, er heller ikke en god ide. En måde at sortere på efter anvendelighed er at overveje anvendelsesområder, samt at overveje hvordan én semafortype kunne implementeres ved brug af en anden; dette kunne vise lidt om typernes generalitet. Det vil føre for vidt her at søge alle 20 kombinationer beskrevet; dette overlades til læseren som en opgave. Vi kan dog vise to kombinationer, tællesemafor baseret på binær og postkasse baseret på tællesemafor. Eksempel 1: tællesemafor En tællesemafor konstrueres ved hjælp af to binære semaforer, MUTEX (initielt åben) og LOCK (initielt låst), og en heltalsvariabel tæller (initielt 0). MUTEX sørger for at operationer foregår udeleligt. Operationerne bliver: 9

10 void TælleSem::vent() { LOCK.vent(); MUTEX.vent(); tæller--; if (tæller<> 0) LOCK.signaler(); MUTEX.signaler(); void TælleSem::signaler() { MUTEX.vent(); if (tæller== 0) LOCK.signaler(); tæller++; MUTEX.signaler(); Eksempel 2: postkassesemafor En postkassesemafor kontrueres ved hjælp af en tællesemafor, LOCK (initielt 0), en heltalsvariabel antal (initielt 0), samt en binær semafor MUTEX, som sørger for udelelig udførelse af operationerne, som bliver: void PostkasseSem::vent() { void PostkasseSem::signaler() { MUTEX.vent(); MUTEX.vent(); antal++; for (i= 0; i<antal; i++) LOCK.signaler(); MUTEX.signaler(); antal=0; LOCK.vent(); MUTEX.signaler(); Semaforers anvendelsesområder Resultatet af en komplet undersøgelse bliver, at enhver semafortype er tilstrækkelig, idet alle typer kan konstrueres ud fra én af disse. Tælle- og beskedsemaforer er de to typer, der er mest generelt anvendelige. Hvad er nu anvendelsesområderne for de forskellige typer? Det vil føre for vidt at give udtømmende eksempler, og læseren henvises til rapporten om MIK systemet for detaljer [Sch76]. Her kan kort opsummeres følgende: Semafortype binær semafor tællesemafor beskedsemafor postkassesemafor trafiklys anvendelse tilgang til kritiske regioner (mutual exclusion). administration af en samling ens ressourcer. udveksling af data mellem processer. signal fra en proces til en eller flere andre om at en betingelse er opfyldt. semafor signal om at en proces er i en given tilstand (temmelig speciel). 10

11 FULDE LÆSER SKRIVER FRIE Figur 2: Køer af tomme og fyldte buffere i eksempel 3 I dagligdagen kendes semaformekanismer også: binære semaforer svarer til låsen på en dør, der giver adgang til steder, hvor man gerne vil være alene, fx et toiletrum. Tællesemaforer svarer til adgangen til fx parkeringskældere, restauranter eller diskoteker med begrænset kapacitet der er en kø ved indgangen, når der er flere der vil ind end der er plads til. Beskedsemaforer er sværere at finde eksempler på, ét er et øldepot med tomme og fulde ølkasser. Nedenfor vises eksempler på brug af beskedsemforer til dataudveksling. Det er den samme opgave der løses, en generalisering af eksemplet først i afsnit 3 med to kommunikerende processer, således at der anvendes et vilkårligt antal buffere. Eksempel 3: brug af beskedsemaforer En klassisk anvendelse af beskedsemaforer er Producent-Forbruger-algoritmen. Se Figur 2. typedef char buf[80]; BeskedSem FRIE, FULDE; buf *lbuf, *sbuf, *bufref; process læser { lbuf=frie.vent(); læslinie(*lbuf); FULDE.signaler(lbuf); forever; process skriver { sbuf=fulde.vent(); udskriv(*sbuf); FRIE.signaler(sbuf); forever; 11

12 De to køer skal initialiseres. Det antages at en beskedsemafor har en tom kø, når den erklæres. Der skal derfor fremskaffes N beskeder til FRIE, fx ved for (i=0; i<n; i++) { bufref=alloker(sizeof(buf)); FRIE.signaler(bufref); ; Konklusionen af dette afsnit vil altså blive, at man i et generelt system står over for valget mellem besked- og tællesemaforer, og her er beskedsemaforen langt det stærkeste værktøj 3. Til gengæld er tællesemaforen langt enklere at implementere, og operationerne derfor sandsynligvis hurtigere. Moralen må derfor blive at begge typer med fordel kan medtages i en generel kerne. I de følgende afsnit benytter vi udelukkende tællesemaforer på grund af deres enkle implementation. 5 Opgaver 1. Hvorledes kan frakobling af alle afbrydelser bruges ved implementering af semaforoperationer? 2. Hvad er fordele og ulemper ved at implementere semaforoperationer i mikroprogram eller PAL-kode, således at de ligestilles med egentlige instruktioner i maskinen? 3. Hvorledes kan en binær semafor konstruerers ud fra tællesemaforer? 4. Hvorledes kan en beskedsemafor og en trafiklyssemafor konstrueres ud fra tællesemaforer? 5. Hvorledes kan en tællesemafor konstrueres ud fra en beskedsemafor? 6. Hvorledes kan en tællesemafor konstrueres ud fra en trafiklyssemafor? Litteratur [AS83] [Dij] Gregory R. Andrews and Fred B. Schneider. Concepts and notations for concurrent programming. Computing Surveys, E.W. Dijkstra. Cooperating sequential processes. In Programming Languages. [Sch76] B. Schrøder. Mik - korutineorienteretstyresystem til en mikrodatamat. Technical report, DIKU, [SGG04] J.L. Silberschatz, P.B. Galvin, and G. Gagne. Operating System Concepts with Java (6.ed). John Wiley & Sons, Beskeder (messages) var det eneste interproceskommunikationsprimitiv i RC4000 (se [SGG04] afsnit 22.5), i RC3600 og RC8000 fra Regnecentralen, hvor det beviste sin velegnethed. 12

Planen for idag. Synkroniseringsmekanismer. Krav til løsning. Kritiske regioner. Bagerens algoritme. Kritisk region via delt lager.

Planen for idag. Synkroniseringsmekanismer. Krav til løsning. Kritiske regioner. Bagerens algoritme. Kritisk region via delt lager. Planen for idag Synkroniseringsmekanismer Kritiske regioner Semaforer: Binære semaforer Tællesemaforer Beskedsemaforer Prioritetsinvertering Låse (spinlocks) sikrer udelelig adgang Barrierer synkroniseringspunkt

Læs mere

Planen for idag. Opdatering af delt lager

Planen for idag. Opdatering af delt lager Planen for idag Synkronisering: Tidsafhængighed i multiprogrammer Semaforer: Binære semaforer Tælle semaforer Grænseflader: Hvordan implementeres systemkald Tidsafhængighed i multiprogrammer proces læser

Læs mere

Koordinering. dopsys

Koordinering. dopsys Koordinering At indføre flertrådethed (1) når tråde tages i brug opstår typisk konflikter (et velkendt eksempel er errno ) 2 At indføre flertrådethed (2) en del konflikter kan afhjælpes med thread-local

Læs mere

Abstrakte datatyper C#-version

Abstrakte datatyper C#-version Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter side 1 af 9 sider Skriftlig eksamen i Datalogi Modul 1 Vinter 1999/2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 5% Opgave 2

Læs mere

Videregående Programmering for Diplom-E Noter

Videregående Programmering for Diplom-E Noter Videregående Programmering for Diplom-E Noter 1. Uddelegering Ét af de væsentlige principper i objektorienteret programmering er, at enhver klasse selv skal kunne "klare ærterne". Enhver klasse skal altså

Læs mere

Specifikation Abstrakt OO OS-API Rev. 1.7. Specifikation. Abstrakt, objektorienteret operativsystem-api

Specifikation Abstrakt OO OS-API Rev. 1.7. Specifikation. Abstrakt, objektorienteret operativsystem-api Specifikation Abstrakt, objektorienteret operativsystem-api Indhold 1 Indledning... 3 1.1 Introduktion... 3 1.2 Formål... 3 1.3 Overordnede krav... 3 2 Ressourcer i OS-API et... 4 2.1 Tråde... 4 2.2 Timere...

Læs mere

Datalogi 1F rapportopgave K2 Anonym datakommunikation

Datalogi 1F rapportopgave K2 Anonym datakommunikation Datalogi 1F rapportopgave K2 Anonym datakommunikation 23. april 2004 1 Administrativ information Rapportopgave K2 stilles fredag den 23. april 2004 og skal afleveres senest fredag den 14. maj kl. 11:00

Læs mere

Implementation af Koordinering. dopsys 1

Implementation af Koordinering. dopsys 1 Implementation af Koordinering dopsys 1 Oversigt: Impl. af koordinering Begreber: Kritiske regioner Gensidig udelukkelse Synkroniseringsprimitiver: Binære semaforer / mutexes Tællesemaforer Betingelsesvariabler

Læs mere

Lærevejledning. - en introduktion til maskinarkitektur. faraz@butt.dk Faraz Butt mads@danquah.dk Mads Danquah doktor@dyregod.dk Ulf Holm Nielsen

Lærevejledning. - en introduktion til maskinarkitektur. faraz@butt.dk Faraz Butt mads@danquah.dk Mads Danquah doktor@dyregod.dk Ulf Holm Nielsen Lærevejledning - en introduktion til maskinarkitektur faraz@butt.dk Faraz Butt mads@danquah.dk Mads Danquah doktor@dyregod.dk Ulf Holm Nielsen Roskilde Universitetscenter Naturvidenskabelig Basisuddannelse

Læs mere

Parallelle algoritmer

Parallelle algoritmer Parallelle algoritmer 1 Von Neumann s model John von Neumann 1903-57 Von Neumanns model: Instruktioner og data er lagret i samme lager, og én processor henter instruktioner fra lageret og udfører dem én

Læs mere

DATALOGI 1F. Skriftlig eksamen tirsdag den 10. juni 2003 1 25 % 2 10 % 3 25 % 4 10 % 5 30 %

DATALOGI 1F. Skriftlig eksamen tirsdag den 10. juni 2003 1 25 % 2 10 % 3 25 % 4 10 % 5 30 % Københavns Universitet Naturvidenskabelig Embedseksamen DATALOGI 1F Skriftlig eksamen tirsdag den 10. juni 2003 Opgave Vægtning 1 25 % 2 10 % 3 25 % 4 10 % 5 30 % Alle de sædvanlige hjælpemidler må benyttes,

Læs mere

Indholdsfortegnelse. Udfordringer i dynamisk P-vejvisning. Vejforum 2011. Jonas Olesen, Senior Specialist, ITS (COWI)

Indholdsfortegnelse. Udfordringer i dynamisk P-vejvisning. Vejforum 2011. Jonas Olesen, Senior Specialist, ITS (COWI) Vejforum 2011 Udfordringer i dynamisk P-vejvisning Jonas Olesen, Senior Specialist, ITS (COWI) Indholdsfortegnelse 1 Baggrund 2 2 Nuværende regler for P-vejvisning 2 2.1 Regelhierakiet 2 3 Hvordan er reglerne

Læs mere

Kursus navn: Indledende programmering Kursus nr. 02101

Kursus navn: Indledende programmering Kursus nr. 02101 Danmarks Tekniske Universitet Side 1 af 8 sider Skriftlig prøve, den 15. december 2007 Kursus navn: Indledende programmering Kursus nr. 02101 Tilladte hjælpemidler: Alle skriftlige hjælpemidler Vægtning

Læs mere

SmartAir TS1000. Daglig brug

SmartAir TS1000. Daglig brug SmartAir TS1000 Daglig brug Indhold Brugere... 4 Opret brugere... 4 Brugerliste vinduet... 5 Knapper... 5 Grupper... 6 Søg bruger... 7 Rapport vinduet (brugere)... 7 Døre... 8 Opret døre... 8 Dørliste

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 29. februar, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2 DM502 Forelæsning 2 Repetition Kompilere og køre Java program javac HelloWorld.java java HeloWorld.java Debugge Java program javac -g HelloWorld.java jswat Det basale Java program public class HelloWorld

Læs mere

Planen for idag. Datalogi 1F Forår 2003. Hvad er en proces? Livscyklus for en proces. Hvad består en proces af?

Planen for idag. Datalogi 1F Forår 2003. Hvad er en proces? Livscyklus for en proces. Hvad består en proces af? Datalogi 1F Forår 2003 OS[2]: Processor, tråde og skedulering Jørgen Sværke Hansen Planen for idag Processer: Procesbegrebet Processkift Processers familieliv Kommunikerende processer Tråde En lettere

Læs mere

Real-time programming safety in Java and Ada

Real-time programming safety in Java and Ada Real-time programming safety in Java and Ada Bo Sandén Presenter: Thomas Bøgholm 25. oktober 2007 Forfatteren Artiklen Synkroniserings Begreber Bo Sandén Professor på Colorado Technical University Beskæftiger

Læs mere

Vurderingsprincipper i DDKM af 2015 for kommuner Vejledning til surveyors og Akkrediteringsnævnet November 2015

Vurderingsprincipper i DDKM af 2015 for kommuner Vejledning til surveyors og Akkrediteringsnævnet November 2015 Vurderingsprincipper i DDKM af 2015 for kommuner Vejledning til surveyors og Akkrediteringsnævnet November 2015 Institut for Kvalitet og Akkreditering i Sundhedsvæsenet Kommuner: Vurderingsprincipper kortfattet

Læs mere

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004 Københavns Universitet Naturvidenskabelig Embedseksamen DATALOGI 1E Skriftlig eksamen torsdag den 3. juni 2004 Opgaverne vægtes i forhold til tidsangivelsen herunder, og hver opgaves besvarelse bedømmes

Læs mere

Eksamensadministration, EUD, udtrækning af elever Sidst opdateret 16-03-2010/version 1.3 /UNI C/Steen Eske Christensen

Eksamensadministration, EUD, udtrækning af elever Sidst opdateret 16-03-2010/version 1.3 /UNI C/Steen Eske Christensen Eksamensadministration, EUD, udtrækning af elever Sidst opdateret 16-03-2010/version 1.3 /UNI C/Steen Eske Christensen Indhold Ændringer Centrale begreber Generelt Arbejdsgange mv. Vejledningen består

Læs mere

Processer og koordinering. dopsys 1

Processer og koordinering. dopsys 1 Processer og koordinering dopsys 1 Motivation.. parallelle processer udnytter hardwaren bedre: Batch operativsystemer (50 erne): Multiprogrammering og time-sharing (60 erne): dopsys 2 Motivation.. parallelle

Læs mere

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer Introduktion til datastrukturer Introduktion til datastrukturer Philip Bille Datastrukturer Datastruktur. Metode til at organise data så det kan søges i/tilgås/manipuleres effektivt. Mål. Hurtig Kompakt

Læs mere

i x-aksens retning, så fås ). Forskriften for g fås altså ved i forskriften for f at udskifte alle forekomster af x med x x 0

i x-aksens retning, så fås ). Forskriften for g fås altså ved i forskriften for f at udskifte alle forekomster af x med x x 0 BAndengradspolynomier Et polynomium er en funktion på formen f ( ) = an + an + a+ a, hvor ai R kaldes polynomiets koefficienter. Graden af et polynomium er lig med den højeste potens af, for hvilket den

Læs mere

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer Introduktion til datastrukturer Introduktion til datastrukturer Philip Bille Datastrukturer Datastruktur. Metode til at organise data så det kan søges i/tilgås/manipuleres effektivt. Mål. Hurtig Kompakt

Læs mere

Formålet med undervisning fra mediateket er at styrke elevernes informationskompetence, således de bliver i stand til:

Formålet med undervisning fra mediateket er at styrke elevernes informationskompetence, således de bliver i stand til: Informationssøgning Mediateket ved Herningsholm Erhvervsskole er et fagbibliotek for skolens elever og undervisere. Her fungerer mediateket ikke blot som bogdepot, men er et levende sted, som er med til

Læs mere

Projekt - Valgfrit Tema

Projekt - Valgfrit Tema Projekt - Valgfrit Tema Søren Witek & Christoffer Thor Paulsen 2012 Projektet Valgfrit Tema var et projekt hvor vi nærmest fik frie tøjler til at arbejde med hvad vi ville. Så vi satte os for at arbejde

Læs mere

Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt.

Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt. Merging og hashing Mål Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt. Dette emne er et uddrag af kurset DM507 Algoritmer og datastrukturer (2. semester). Mål

Læs mere

Programmering i C. Lektion 4. 5. december 2008

Programmering i C. Lektion 4. 5. december 2008 Programmering i C Lektion 4 5. december 2008 Funktioner Eksempel Fra sidst 1 Funktioner 2 Eksempel Funktioner Eksempel Eksempel: 1 / f u n k t i o n s p r o t o t y p e r / i n t i n d l a e s ( void )

Læs mere

Datalogi OB, Efterår 2002 OH er, forelæsning 3/9-2002 - forstå datastrukturer og algoritmer (teoretisk forståelse og intuition)

Datalogi OB, Efterår 2002 OH er, forelæsning 3/9-2002 - forstå datastrukturer og algoritmer (teoretisk forståelse og intuition) Datalogi OB, Efterår 2002 OH er, forelæsning 3/9-2002 Datastrukturer og algoritmer Henning Christiansen henning@ruc.dk http://www.ruc.dk/~henning Formål: at kunne - forstå datastrukturer og algoritmer

Læs mere

dcomnet-nr. 8 Simpel aritmetik på maskinniveau Computere og Netværk (dcomnet)

dcomnet-nr. 8 Simpel aritmetik på maskinniveau Computere og Netværk (dcomnet) dcomnet-nr. 8 Simpel aritmetik på maskinniveau Computere og Netværk (dcomnet) Efterår 2009 1 Simpel aritmetik på maskinniveau I SCO, appendix A, er det beskrevet, hvordan man adderer ikke-negative heltal

Læs mere

Tastevejledning Windows XP

Tastevejledning Windows XP Tastevejledning Windows XP Tastevejledningen dækker den danske udgave af Windows XP. Der er taget udgangspunkt i en standard installation, hvor der ikke er foretaget tilpasninger i skærmopsætning, valg

Læs mere

1 Overfør kvalitetsområdedokumenterne fra Revimentor Mastermanual 1. Åbn egen Revimentor, og vælg modulet "Manualen".

1 Overfør kvalitetsområdedokumenterne fra Revimentor Mastermanual 1. Åbn egen Revimentor, og vælg modulet Manualen. Vejledning til en komplet opdatering af Manualen, ydelsesgruppedokumenterne og kvalitetsområdedokumenterne, Office skabeloner samt kundeaftaleskabeloner. Dette hjælpedokument beskriver trin for trin hvordan

Læs mere

Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt.

Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt. Merging og hashing Mål Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt. Dette emne er et uddrag af kurset DM507 Algoritmer og datastrukturer

Læs mere

Notat. Introdansk beskrivelse af fastlagte krav til indberetning af statistikoplysninger fra udbydere 27.06.2012 JL

Notat. Introdansk beskrivelse af fastlagte krav til indberetning af statistikoplysninger fra udbydere 27.06.2012 JL Notat Vedrørende: Skrevet af: Introdansk beskrivelse af fastlagte krav til indberetning af statistikoplysninger fra udbydere Jesper Lund Version: 1.4: rev. af Ankestyrelsen, januar 2014 27.06.2012 JL I

Læs mere

Opkrævninger - menuen 3.1

Opkrævninger - menuen 3.1 Opkrævninger - menuen 3.1 3. OPKRÆVNINGER MENUEN Generelt Det er meget vigtigt, hvad enten der vælges den ene eller den anden opkrævningstype, at der forinden tages en sikkerhedskopi, idet de beregninger,

Læs mere

Introduktion til datastrukturer

Introduktion til datastrukturer Introduktion til datastrukturer Datastrukturer Stakke og køer Hægtede lister Dynamiske tabeller Philip Bille Introduktion til datastrukturer Datastrukturer Stakke og køer Hægtede lister Dynamiske tabeller

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2019 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 27. februar, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

class Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1.

class Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1. Programmering 1999 Forelæsning 4, fredag 10. september 1999 Klasser og objekter Felter, konstruktorer, this Eksempler på klasser: Time, Appointment Eksempler på metoder i Time og Appointment Klassefelter:

Læs mere

19 Hashtabeller. Noter. PS1 -- Hashtabeller. Hashing problemet. Hashfunktioner. Kollision. Søgning og indsættelse.

19 Hashtabeller. Noter. PS1 -- Hashtabeller. Hashing problemet. Hashfunktioner. Kollision. Søgning og indsættelse. 19 Hashtabeller. Hashing problemet. Hashfunktioner. Kollision. Søgning og indsættelse. Sammenligning af hashtabeller og søgetræer. 281 Hashing-problemet (1). Vi ønsker at afbilde n objekter på en tabel

Læs mere

Regulære udtryk og endelige automater

Regulære udtryk og endelige automater Regulære udtryk og endelige automater Regulære udtryk: deklarative dvs. ofte velegnede til at specificere regulære sprog Endelige automater: operationelle dvs. bedre egnet til at afgøre om en given streng

Læs mere

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version Finn Nordbjerg 1/9 Indledning I det følgende introduceres et par abstrakte

Læs mere

18 Multivejstræer og B-træer.

18 Multivejstræer og B-træer. 18 Multivejstræer og B-træer. Multivejs søgetræer. Søgning i multivejssøgetræer. Pragmatisk lagring af data i multivejstræer. B-træer. Indsættelse i B-træer. Eksempel på indsættelse i B-træ. Facts om B-træer.

Læs mere

Processer og tråde. dopsys 1

Processer og tråde. dopsys 1 Processer og tråde dopsys 1 Motivation.. parallelle processer udnytter hardwaren bedre: Batch operativsystemer (50 erne) hhv. små systemer: Multiprogrammering og time-sharing (fra 60 erne og frem): dopsys

Læs mere

dintprog Manual Revision: 1241 August 24, 2010 I Introduktion 3 1 Notation 3 II Begreber 4 2 Grundbegreber om programmering 4

dintprog Manual Revision: 1241 August 24, 2010 I Introduktion 3 1 Notation 3 II Begreber 4 2 Grundbegreber om programmering 4 dintprog Manual Revision: 1241 August 24, 2010 Indhold I Introduktion 3 1 Notation 3 II Begreber 4 2 Grundbegreber om programmering 4 3 Grundbegreber om modellering 4 III Sprogkonstruktioner 5 4 Klasser

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2013 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 5. marts, 2013 Dette projekt udleveres i to dele. Hver del har sin deadline, således

Læs mere

Supplerende tekster forsvinder ikke længere. Program rettet, så man igen kan se hvor en vare er plukket, når der pakkes i pakker.

Supplerende tekster forsvinder ikke længere. Program rettet, så man igen kan se hvor en vare er plukket, når der pakkes i pakker. 6104 Terminsordrer B 00385053 Valutafejl ifbm debitering af fragtsatser Ved beregning af fragtgebyr på salgsordrer i fremmed valuta, beregnet gebyret nu korrekt. Dette gælder både når kurs er angivet på

Læs mere

26 Programbeviser I. Noter. PS1 -- Programbeviser I. Bevis kontra 'check af assertions' i Eiffel. Betingelser og bevisregler.

26 Programbeviser I. Noter. PS1 -- Programbeviser I. Bevis kontra 'check af assertions' i Eiffel. Betingelser og bevisregler. 26 Programbeviser I. Bevis kontra 'check af assertions' i Eiffel. Betingelser og bevisregler. Hvad er programverifikation? Bevisregel for 'tom kommando'. Bevisregel for assignment. Bevisregler for selektive

Læs mere

Løbetræning for begyndere 1

Løbetræning for begyndere 1 Løbetræning for begyndere 1 Lige nu sidder du med en PDF-fil der forhåbentlig vil gavne dig og din løbetræning. Du sidder nemlig med en guide til løbetræning for begyndere. Introduktion Denne PDF-fil vil

Læs mere

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 Opgavebesvarelsen skal afleveres som enten en printerudskrift eller som et passende dokument sendt via email til fjj@noea.dk. Besvarelsen skal

Læs mere

Lineære ligningssystemer

Lineære ligningssystemer enote 2 1 enote 2 Lineære ligningssystemer Denne enote handler om lineære ligningssystemer, om metoder til at beskrive dem og løse dem, og om hvordan man kan få overblik over løsningsmængdernes struktur.

Læs mere

dcomnet-nr. 6 Talrepræsentation Computere og Netværk (dcomnet)

dcomnet-nr. 6 Talrepræsentation Computere og Netværk (dcomnet) dcomnet-nr. 6 Talrepræsentation Computere og Netværk (dcomnet) Efterår 2009 1 Talrepræsentation På maskinkodeniveau (Instruction Set Architecture Level) repræsenteres ordrer og operander ved bitfølger

Læs mere

R e g e l f o r m a l i s m e r til b r u g v e d datamatisk lingvistik.

R e g e l f o r m a l i s m e r til b r u g v e d datamatisk lingvistik. Bente Maegaard, Københavns Universitet, Institut for anvendt og m a t e m a t i s k lingvxstik, Njalsgade 96 2300 K ø b e n h a v n S R e g e l f o r m a l i s m e r til b r u g v e d datamatisk lingvistik.

Læs mere

Athena DIMENSION Varmeanlæg 4

Athena DIMENSION Varmeanlæg 4 Athena DIMENSION Varmeanlæg 4 Juni 2001 Indhold 1 Introduktion.................................. 2 2 Programmets opbygning........................... 2 3 Fremgangsmåde................................ 3

Læs mere

CCS Formål Produktblad December 2015

CCS Formål Produktblad December 2015 CCS Formål Produktblad December 2015 Kolofon 2015-12-14

Læs mere

Kom godt i gang med. Nem Konto. Vejledning til sagsbehandlere. NemKonto hører under Økonomistyrelsen

Kom godt i gang med. Nem Konto. Vejledning til sagsbehandlere. NemKonto hører under Økonomistyrelsen Kom godt i gang med Nem Konto Vejledning til sagsbehandlere NemKonto hører under Økonomistyrelsen Indholdsfortegnelse 1 Introduktion... 2 2 Sådan bruger du NemKonto... 3 2.1 Log på NemKonto... 3 2.2 Signering

Læs mere

Programmering af CS1700-Proxlæser

Programmering af CS1700-Proxlæser Comfort CSx75 Programmering af CS1700-Proxlæser Introduktion CS1700 er en proxlæser og der kan tilsluttes op til 15 læser til CSx75-centralen. Du kan programmere CS1700 til passagekontrol i et eller flere

Læs mere

Generelt Internationalisering

Generelt Internationalisering Bekendtgørelse om krav til anvendelse af Informations- og Side 1 af 7 Generelt Digital Konvergens samarbejdet, har i sit hidtidige arbejde fokuseret på at implementere vindende, digitale standarder, der

Læs mere

Eksamens spørgsmål i Teknologi (Digital) 3. Semester (i)

Eksamens spørgsmål i Teknologi (Digital) 3. Semester (i) Eksamens spørgsmål i Teknologi (Digital) 3. Semester (i) 1. DS1821 1-WIRE KOMMUNIKATION (HERUNDER TIMING KRAV) ------------------------ 2 2. DS1821 SOFTWARE (OPBYGNING AF STYREPROGRAM I SYSTEM51 C) -----------

Læs mere

BRP 6.9.2006 Kursusintroduktion og Java-oversigt

BRP 6.9.2006 Kursusintroduktion og Java-oversigt BRP 6.9.2006 Kursusintroduktion og Java-oversigt 1. Kursusintroduktion 2. Java-oversigt (A): Opgave P4.4 3. Java-oversigt (B): Ny omvendings -opgave 4. Introduktion til næste kursusgang Kursusintroduktion:

Læs mere

Modern Concurrency Abstractions for C#

Modern Concurrency Abstractions for C# Modern Concurrency Abstractions for C# Nick Benton Luca Cardelli Cédric Fournet Presenter: Henrik Kragh-Hansen September 27, 2007 Motivation for concurrency Forbedring af concurrency Baggrundsinformation

Læs mere

SPSS introduktion Om at komme igang 1

SPSS introduktion Om at komme igang 1 SPSS introduktion Om at komme igang 1 af Henrik Lolle, oktober 2003 Indhold Indledning 1 Indgang til SPSS 2 Frekvenstabeller 3 Deskriptive statistikker gennemsnit, standardafvigelse, median osv. 4 Søjlediagrammer

Læs mere

Regler for CTF. (Energinet.dk Gastransmissions regler for Capacity Transfer Facility)

Regler for CTF. (Energinet.dk Gastransmissions regler for Capacity Transfer Facility) Regler for CTF (Energinet.dk Gastransmissions regler for Capacity Transfer Facility) VILKÅR OG BETINGELSER FOR BILATERAL HANDEL MED KAPACITET I TRANSMISSIONSSYSTEMET Version 5.2 Juni 2010 Regler for CTF,

Læs mere

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi Opgave: Brev til Sigurd Lære: John Austin Side 1 af 8 Dato: 14-05-2003

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi Opgave: Brev til Sigurd Lære: John Austin Side 1 af 8 Dato: 14-05-2003 Side 1 af 8 Dato: 14-05-2003 Til Sigurd Som aftalt vil jeg her fremsende vores program til vores 80C535 kit og display. Det gik jo ud på at vi skulle starte med at få den til at intialiserer displayet,

Læs mere

Allan C. Malmberg. Terningkast

Allan C. Malmberg. Terningkast Allan C. Malmberg Terningkast INFA 2008 Programmet Terning Terning er et INFA-program tilrettelagt med henblik på elever i 8. - 10. klasse som har særlig interesse i at arbejde med situationer af chancemæssig

Læs mere

Anklagemyndighedens Vidensbase

Anklagemyndighedens Vidensbase Anklagemyndighedens Vidensbase Indhold 1 OM DENNE VEJLEDNING... 2 2 LOGIN... 3 3 SØGNINGER... 4 3.1 SØG EFTER DOKUMENTER... 4 3.2 NAVIGÉR DIG FREM... 5 3.3 KOMBINÉR SØGNING OG NAVIGATION... 6 3.4 VISNING

Læs mere

Vækst og Forretningsudvikling

Vækst og Forretningsudvikling Vækst og Forretningsudvikling Uddrag af artikel trykt i Vækst og Forretningsudvikling. Gengivelse af denne artikel eller dele heraf er ikke tilladt ifølge dansk lov om ophavsret. Børsen Ledelseshåndbøger

Læs mere

DATALOGI MASKINARKITEKTUR Blok 2 samt Reeksamination i DATALOGI MASKINARKITEKTUR Blok 1 og arkitekturdelen af DATALOGI 1E

DATALOGI MASKINARKITEKTUR Blok 2 samt Reeksamination i DATALOGI MASKINARKITEKTUR Blok 1 og arkitekturdelen af DATALOGI 1E Københavns Universitet Naturvidenskabelig Embedseksamen DATALOGI MASKINARKITEKTUR Blok 2 samt Reeksamination i DATALOGI MASKINARKITEKTUR Blok 1 og arkitekturdelen af DATALOGI 1E Vejledende løsninger til

Læs mere

DM536. Rapport og debug

DM536. Rapport og debug DM536 Rapport og debug Kilder Vigtig.it (Felix Palludan Hargreaves) http://vigtig.it/dm502/howto_report.pdf http://vigtig.it/blog/teaching/#toc-relevant-tips Peter Schneider-Kamp http://imada.sdu.dk/~petersk/dm536/project2.pdf

Læs mere

CD-DIRECT Installationsvejledning

CD-DIRECT Installationsvejledning CD-DIRECT Installationsvejledning Indhold 1. Kom godt i gang med installationen af CD-DIRECT... 3 2. CD-DIRECT Installation... 4 3. Enkeltbruger Type I (uden kopi af databasefilen)... 5 3.1 Opdatering

Læs mere

Håndtering af stof- og drikketrang

Håndtering af stof- og drikketrang Recke & Hesse 2003 Kapitel 5 Håndtering af stof- og drikketrang Værd at vide om stof- og drikketrang Stoftrang kommer sjældent af sig selv. Den opstår altid i forbindelse med et bestemt udløsningssignal

Læs mere

Hashing og hashtabeller

Hashing og hashtabeller Datastrukturer & Algoritmer, Datalogi C Forelæsning 16/11-2004 Hashing og hashtabeller Teknik til at repræsentere mængder Konstant tid for finde og indsætte men ingen sortering af elementerne Specielt

Læs mere

Tilgang til data. To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (også kaldet key, nøgle) for dataelementer.

Tilgang til data. To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (også kaldet key, nøgle) for dataelementer. Merging og Hashing Tilgang til data To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (også kaldet key, nøgle) for dataelementer. API for sekventiel tilgang (API =

Læs mere

Vejledning for vurdering af redesign-forslag fra Design & Usabilityevalueringsprojektet

Vejledning for vurdering af redesign-forslag fra Design & Usabilityevalueringsprojektet Vejledning for vurdering af redesign-forslag fra Design & Usabilityevalueringsprojektet i kurset Systemdesign & HCI, foråret 2004 DIKU, 17.05.04 Kasper Hornbæk & Erik Frøkjær Vedlagt dette dokument finder

Læs mere

DESIGNMANUAL Roskilde Dyrskue - 2016

DESIGNMANUAL Roskilde Dyrskue - 2016 mødested for land & by DESIGNMANUAL Roskilde Dyrskue - 2016 Vores designmanual indeholder regler og retningslinjer samt skal bruges til inspiration i arbejdet med vores visuelle kommunikation. Grunden

Læs mere

Deadlocks dopsys 1 onsdag den 8. december 2010

Deadlocks dopsys 1 onsdag den 8. december 2010 Deadlocks dopsys 1 En deadlock! When two trains approach each other at a crossing, both shall come to a full stop and neither shall start up again until the other has gone. Lov - the Kansas Legislature

Læs mere

Principper for Samtidighed og Styresystemer

Principper for Samtidighed og Styresystemer Principper for Samtidighed og Styresystemer Synkronisering og Deadlocks René Rydhof Hansen Februar 2008 PSS 08 (Forelæsning 03) Synkronisering og Deadlocks Februar 2008 1 / 33 Skemaændringer Forelæsning

Læs mere

Bemærk det sidste kapitel Modtagelse af et brev, som bl.a.. bruges når du skal modtage og indlæse en henvisning.

Bemærk det sidste kapitel Modtagelse af et brev, som bl.a.. bruges når du skal modtage og indlæse en henvisning. Guide: Start- & Slutbreve og modtagelse af breve Udgave mar 2009 Bemærk det sidste kapitel Modtagelse af et brev, som bl.a.. bruges når du skal modtage og indlæse en henvisning. Indholdsfortegnelse Hvorledes

Læs mere

Tips & trick til at finde rundt på halvtolv.dk

Tips & trick til at finde rundt på halvtolv.dk AB Halvtolv, web-redaktionen 18. september 2012 Tips & trick til at finde rundt på halvtolv.dk Det kan ofte være en lidt sej kamp at finde rundt på en ny hjemmeside. Og tit bliver alle mulighederne ikke

Læs mere

Eksempel: Skat i år 2000

Eksempel: Skat i år 2000 Kursus 02199: Programmering afsnit 2.1-2.7 Anne Haxthausen IMM, DTU 1. Værdier og typer (bl.a. char, boolean, int, double) (afsnit 2.4) 2. Variable og konstanter (afsnit 2.3) 3. Sætninger (bl.a. assignments)

Læs mere

Læs Dette Først! DM100i/DM200i Serien Digital frankeringsmaskine. Quick Installeringsguide

Læs Dette Først! DM100i/DM200i Serien Digital frankeringsmaskine. Quick Installeringsguide Læs Dette Først! DM100i/DM200i Serien Digital frankeringsmaskine Dit nye system er designet så du selv kan installere det. Du kan begynde at frankere post om et øjeblik. Det er meget vigtigt, at du nøje

Læs mere

Om at gå til mundtlig eksamen en manual for studerende

Om at gå til mundtlig eksamen en manual for studerende Om at gå til mundtlig eksamen en manual for studerende Hans Hüttel 14. juni 2005 Folk ytrer tit en meget forståelig utryghed ved det at gå til mundtlig eksamen. Eksamen er en unormal situation og som eksaminand

Læs mere

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen (bemærk at log n betegner totals logaritmen): n 2 (log n) 2 2.

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen (bemærk at log n betegner totals logaritmen): n 2 (log n) 2 2. Eksamen august Algoritmer og Datastrukturer (-ordning) Side af sider Opgave (%) n + n er O(n )? n / er O(n / )? n er O(n log n)? n er O((log n) )? n er Ω(n )? Ja Nej Opgave (%) Opskriv følgende funktioner

Læs mere

Versionsbrev. LUDUS Web version 2.29.0. Den 17. oktober 2012. J.nr. 4004-V1047-12

Versionsbrev. LUDUS Web version 2.29.0. Den 17. oktober 2012. J.nr. 4004-V1047-12 Versionsbrev LUDUS Web version 2.29.0 Den 17. oktober 2012 J.nr. 4004-V1047-12 CSC Scandihealth A/S, P.O. Pedersens Vej 2, DK-8200 Århus N Tlf. +45 3614 4000, fax +45 3614 7324, www.csc.com/ludus, sc-ludus@csc.com

Læs mere

Regulære udtryk og endelige automater. Ugens emner

Regulære udtryk og endelige automater. Ugens emner Ugens emner Endelige automater [Martin, kap. 3.2-3.5] endelige automater og deres sprog skelnelighed produktkonstruktionen Java: dregaut.fa klassen automater til modellering og verifikation Regulære udtryk

Læs mere

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 1 (tretten) Eksamensdag: Tirsdag den 8. april 2008,

Læs mere

Forelæsning Uge 4 Torsdag

Forelæsning Uge 4 Torsdag Forelæsning Uge 4 Torsdag Algoritmeskabeloner findone, findall, findnoof, findsumof (i mandags) findbest Levetid for variabler og parametre Virkefeltsregler Hvor kan man bruge de forskellige variabler?

Læs mere

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 7 n 1/ log n. (log n) 4

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 7 n 1/ log n. (log n) 4 Eksamen august 00 Algoritmer og Datastrukturer (00-ordning) Side af sider Opgave (%) n er O(n )? n(log n) er O(n )? n n + (log n) er O(n )? n er O(n )? n er Ω( n )? Opgave (%) Opskriv følgende funktioner

Læs mere

Vejledning for FMS_PBS

Vejledning for FMS_PBS Vejledning for FMS_PBS Vejledning for FMS_PBS... 1 Introduktion... 1 Demokunde... 1 Systemkrav... 1 Installation... 2 Import af kartotek for kunder og vareliste... 3 Betalingsoplysninger til PBS... 4 Supplerende

Læs mere

DATALOGI 1E. Skriftlig eksamen fredag den 7. juni 2002

DATALOGI 1E. Skriftlig eksamen fredag den 7. juni 2002 Københavns Universitet Naturvidenskabelig Embedseksamen DATALOGI 1E Skriftlig eksamen fredag den 7. juni 2002 Opgaverne vægtes i forhold til tidsangivelsen, og hver opgaves besvarelse bedømmes som en helhed.

Læs mere

Hvad sker der med sin i moderne dansk og hvorfor sker det? Af Torben Juel Jensen

Hvad sker der med sin i moderne dansk og hvorfor sker det? Af Torben Juel Jensen Hvad sker der med sin i moderne dansk og hvorfor sker det? Af Torben Juel Jensen De fleste danskere behøver bare at høre en sætning som han tog sin hat og gik sin vej, før de er klar over hvilken sprogligt

Læs mere

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 23n log n. 4 n (log n) log n

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 23n log n. 4 n (log n) log n Eksamen. kvarter 00 Algoritmer og Datastrukturer (00-ordning) Side af sider Opgave (%) Ja Nej n er O(n )? n er O(n )? n er O(n + 0 n)? n + n er O(n )? n log n er Ω(n )? Opgave (%) Opskriv følgende funktioner

Læs mere

Kom godt igang med Inventar registrering

Kom godt igang med Inventar registrering Kom godt igang med Inventar registrering (InventoryDB) (Med stregkodesupport) programmet fra PetriSoft Introduktion... 1 Inventar registrering... 2 Værktøjsudleje... 3 Service database til reperationer

Læs mere

Introduktion. Jan Brown Maj, 2010

Introduktion. Jan Brown Maj, 2010 Jan Brown Maj, 2010 Introduktion OIOXML har eksisteret som det centrale datastandardiseringsparadigme siden 2002. Til OIOXML-konceptet er der et regelsæt betegnet OIO Navngivnings- og Deignregler (NDR),

Læs mere

Algebra INTRO. I kapitlet arbejdes med følgende centrale matematiske begreber:

Algebra INTRO. I kapitlet arbejdes med følgende centrale matematiske begreber: INTRO Kapitlet sætter fokus på algebra, som er den del af matematikkens sprog, hvor vi anvender variable. Algebra indgår i flere af bogens kapitler, men hensigten med dette kapitel er, at eleverne udvikler

Læs mere

Grundlæggende Programmering ITU, Efterår 1999. Skriftlig eksamen i Grundlæggende Programmering

Grundlæggende Programmering ITU, Efterår 1999. Skriftlig eksamen i Grundlæggende Programmering Skriftlig eksamen i Grundlæggende Programmering ITU, 20. januar 2000 Alle hjælpemidler tilladt, dog ikke datamat. Eksamen er skriftlig, fire timer, og bedømmes efter 13-skalaen. Opgavesættet består af

Læs mere

Eksamensopgaver datalogi, dlc 2011 side 1/5. 1. Lodtrækningssystem

Eksamensopgaver datalogi, dlc 2011 side 1/5. 1. Lodtrækningssystem Eksamensopgaver datalogi, dlc 2011 side 1/5 1. Lodtrækningssystem Der skal fremstilles et program, som kan foretage en lodtrækning. Programmet skal kunne udtrække en eller flere personer (eller andet)

Læs mere

Vejledning til Tidtagningssystem til ridebanespring. Sønderborg. Knap for addering af 6 sekunder ved total nedrivning af forhindring.

Vejledning til Tidtagningssystem til ridebanespring. Sønderborg. Knap for addering af 6 sekunder ved total nedrivning af forhindring. Tidsur til Ridebanespring Model: Sønderborg Med visning af tid for hovedspring / omspring. Visning af fejl Automatisk addering af fejl ved overskridelse af fejlfri tid Visning af starttid for næste klasse.

Læs mere

Et udtryk på formena n kaldes en potens med grundtal a og eksponent n. Vi vil kun betragte potenser hvor grundtallet er positivt, altså a>0.

Et udtryk på formena n kaldes en potens med grundtal a og eksponent n. Vi vil kun betragte potenser hvor grundtallet er positivt, altså a>0. Konkrete funktioner Potenser Som udgangspunkt er brugen af potenser blot en forkortelse for at gange et tal med sig selv et antal gange. Hvis a Rskriver vi a 2 for a a a 3 for a a a a 4 for a a a a (1).

Læs mere