OS-X, ett distribuerat realtidsoperativsystem (C) Francis Görmarker 1994
|
|
- Kurt Åström
- för 9 år sedan
- Visningar:
Transkript
1 OS-X, ett distribuerat realtidsoperativsystem (C) Francis Görmarker 1994 Detta dokument beskriver operativsystemet OS-X, ett kompakt, distribuerat realtidsoperativsystem för mikrodatorer.
2 Innehåll 1.0 Inledning Processhantering Inledning Schemaläggning mm InterProcess Communication Start av process Terminering av process Remote Procedure Call Standard RPC Filsystem Inledning Universal File Identifiers Directory server File server Systemstruktur Memory server Funktion RPC-gränssnitt Process server Funktion RPC-gränssnitt Directory server Funktion RPC-gränssnitt File server Funktion RPC-gränssnitt Exec server Funktion RPC-gränssnitt Name server Funktion RPC-gränssnitt Network server Funktion RPC-gränssnitt Länkprotokoll Tillståndsbeskrivning OS-X, ett distribuerat realtidsoperativsystem 2 (37)
3 Innehåll 11.0 Drivrutiner Inledning Gränssnitt mot hårdvaran Gränssnitt mot drivrutiner Systemanrop Minneshantering Processhantering IPC Filhantering Diverse Inhoppsadresser OS-X, ett distribuerat realtidsoperativsystem 3 (37)
4 Inledning 1.0 Inledning OS-X är ett operativsystem för små mikrodatorsystem och finns för närvarande implementerat på några olika Z80-baserade system. Systemet har vissa influenser av UNIX men är ej avsett att på något sätt vara UNIX-kompatibelt. Några av de lånade koncepten är: Hierarktiskt, dynamiskt monterbart filsystem baserat på i-noder och mycket enkel katalogstruktur. Processhierarki med fork/join, ärvning av öppna filer mm. Hantering av IO-enheter via special files och IPC med hjälp av sockets. De lånade koncepten är i många fall nedskalade för att bättre passa in i ett i huvudsak enanvändar- mikrodatorsystem. Processmodellen skiljer sig kraftigt ifrån UNIX-modellen, i OS-X är alla processer likvärdiga dvs det finns ingen kernel mode. Både tung- och lättviktprocesser kan skapas, tungviktsprocesser kan ha separata fysiska adressrymder och kan endast skapas med systemanropet exec, lättviktsprocesser skapas med hjälp av systemanropet fork och delar alltid adressrymd med sin förälder. IPC (Inter-Process Communication) sker via dynamiskt allokerade sockets och är baserad på meddelandesändning från punkt till punkt. Meddelandestorleken är begränsad till 256 bytes och kan utföras blockerande eller icke-blockerande vid sändning och mottagning. Systemkärnan implementeras av ett antal procedurer och processer. Systemanrop utförs genom proceduranrop till ett antal lågnivårutiner i delat minne eller som RPC mot systemprocessen som hela tiden lyssnar på en välkänd socket. OS-X bygger på principen med en minimal kärna och ett antal server-processer som tillhandahåller filsystem, programexekvering mm. Då OS-X använder ett generellt RPC-baserat gränssnitt för filhantering, programexekvering mm så är det mycket enkelt att skriva distribuerade applikationer och att köra applikationer i distribuerad miljö. OS-X, ett distribuerat realtidsoperativsystem 4 (37)
5 Processhantering 2.0 Processhantering Inledning Processer av två typer: tungviktsprocesser med egen adressrymd och lättviktsprocesser som delar adressrymd med minst en tungviktsprocess. Lättviktsprocesser har alltid en tungviktsprocess som förälder och kan ej existera utan sin förälder pga att föräldern äger den delade adressrymden. Vid start av en lättviktsprocess så ärvs alla öppna filer. När en tungviktsprocess terminerar så termineras också alla dess lättvikts- subprocesser och den delade adressrymden avallokeras. Om en lättviktsprocess startar en ny lättviktsprocess så får den närmaste förfader av tungviktstyp som förälder. På detta sätt så har alltid lättviktsprocesser en tungviktsprocess som förälder Schemaläggning mm Alla processer schemaläggs beroende på prioritet. Fyra prioritetsnivåer finns, 0-3 där noll är den lägsta nivån. Processer med samma prioritet shemaläggs med tidsdelning där varje process tillåts exekvera maximalt 8 ms. Processer med hög prioritet exekveras alltid före processer med lägre prioritet. Exempel: en process på nivå tre exekveras tills den terminerar eller blockeras innan någon process på lägre nivå tillåts exekvera. Lågprioriterad hold(), dvs återstart av en process efter hold fås genom att länka in processen sist i activeq för aktuell prioritet. Timeout möjlig vid blockerande ipc_rec(). Varje process har en timer som räknas ner var 32:a tick (dvs var 256:e ms). När timern når noll lyfts processen ur aktuell kö och aktiveras. För aktiva processer sätts timern till noll vilket innebär att timeout ej används. kill() är ett kernel RPC som används för att omedelbart terminera en process, eventuella lättviktiga subprocesser termineras också. För att hantera terminering av förgrundsprocesser från en terminal används en semafor och en högprioriterad systemprocess (breakd). När signal utförs på semaforen så aktiveras breakdprocessen vilken letar upp och terminerar alla processer som har flaggan bflag = true. Flaggan bflag finns i processtabellen för alla processer och den sätts normalt = true då en ny process startas. Anropet set_break() används för att ställa om bflag. Processen breakd terminerar först alla berörda processer och skickar sedan ett meddelande till kernel för att återvinna alla resurser för de terminerade processerna InterProcess Communication IPC av typ meddelandesändning från punkt till punkt via så kallade sockets. Sockets allokeras dynamiskt och representerar ändpunkter för kommunikation mellan processer. Ett meddelande kan innehålla bytes med godtyckliga data Start av process Allmänt: Allokera processbeskrivning, stigande nummer + löpnr. Kopiera pri, tty, argc, argv, cwd, fdesc[0-2], name från föräldern. Initialisera egen termineringssemafor. OS-X, ett distribuerat realtidsoperativsystem 5 (37)
6 Processhantering Sätt upp stacken, allokera plats för alla register och lägg upp terminate och processens startadress. Länka in processen i någon av activeq0 - activeq3 beroende på prioritet. Start av lättviktsprocess: kopiera lokala fildeskriptorer (pekare) från föräldern, vid close() koontrolleras om anroparen äger motsvarande global fildeskriptor (GFD), i så fall frias GFD:n annars frias bara den lokala fildeskriptorn. Start av tungviktsprocess: Allokera nya GFD:s, sätt upp lokala fildeskriptorer och kopiera GFD-data från föräldern. Vid dup() ska en ny GFD allokeras och data kopieras från den ursprungliga GFD:n Terminering av process Sätt T(erminated) -status Signalera på termineringssemaforen Skicka termineringsmeddelande till kernel (för att fria ev. allokerade resurser) Stoppa exekveringen genom att anropa suspend() Då kernel mottar ett termineringsmeddelande så ska: Alla lättviktsprocesser som hör till den aktuella processen termineras. Alla öppna filer stängas Fria alla minnesblock Fria alla sockets och IPC-buffrar Sätta F(ree) -status Sätta processid. = Remote Procedure Call Alla server-baserade systemanrop utförs med hjälp av ett standardiserat RPCformat där meddelanden skickas med de inbyggda IPC-primitiverna. Fält Offset Antal bytes Beskrivning net_src 0 2 Avsändarens nätverksadress Tabell 1. Format på RPC-meddelanden. OS-X, ett distribuerat realtidsoperativsystem 6 (37)
7 Processhantering Fält Offset Antal bytes Beskrivning net_dst 2 2 Mottagarens nätverksadress net_size 4 1 Storlek på användardata protocol 5 1 Protokoll (0=user, 1=RPC) module 6 1 Server modul-id. service 7 1 Servicekod inom aktuell modul seq bits sekvensnummer result 10 2 Resultatkod (0=ok) header Användardata, fix del data? Användardata, variabel del Tabell 1. Format på RPC-meddelanden Standard RPC Följande RPC-anrop bör hanteras av alla typer av server-processer och kan användas för generell övervakning och mätning i systemet. Service Procedur Parametra r Resultat Beskrivning 0 null - - Utför ingenting, returnerar alltid result = 0. 1 ver - data(0), data(1), data(2-65) Returnera versionsnummer i data(0-1), LSB på index 0 och en versionssträng i data(2-65). Strängens längd anges av data(2). 2 shutdown - - Terminera servern. 3 restart - - Starta om servern. Tabell 2. Standardiserade RPC-meddelanden till alla servers. OS-X, ett distribuerat realtidsoperativsystem 7 (37)
8 Filsystem 3.0 Filsystem Inledning Anropsgränssnittet liknar UNIX; varje process har en liten tabell (< 16) med filbeskrivningar. När en fil öppnas så returneras ett index i processens filtabell vilket sedan används för att referera till den öppna filen. Möjlighet finns att läsa data från en fil blockerande eller icke-blockerande. Hårdvaruenheter hanteras som speciella filer av teckentyp eller blocktyp (terminaler resp. diskar). Enheter och vanliga filer hanteras på samma sätt genom att använda open, read, write mm. Under ytan döljer sig ett distribuerat filsystem som bygger på RPC mellan klienter och speciella server-processer som hanterar den direkta manipulationen av filer och enheter. Protokollen inom filsystemet bygger på principen med tillståndslösa servers, dvs varje RPC innehåller all information som behövs för att utföra den önskade operationen och hanteras helt oberoende av föregående anrop Universal File Identifiers Så kallade UFIDs används som lägesoberoende identifierare för filer och enheter i det distribuerade filsystemet. En UFID innehåller fullständig information om en fil så att den kan refereras oberoende av läge i ett nätverk. Filer kan dock ej flyttas mellan olika maskiner/servers utan att modifiera motsvarande UFID. Detta beror på att en UFID innehåller nätverksadressen till den server som hanterar det filsystem (disk) som filen ligger på. Tabellen nedan visar det exakta formatet på en UFID. Offset Storlek Fältnamn Beskrivning 0 2 server Server-adress, MSB = maskin, LSB = socket. 2 1 dev Filtyp och enhet, 4 msb = filtyp, 4 lsb = enhetsnr. 3 1 spare Reserverad för framtida bruk. 4 2 id Lokal filidentifierare, 4 msb = löpnr, 12 lsb = nodnr. eller liknande. Tabell 3. Struktur på Universal File IDentifier. Fältet dev i en UFID anger vilken typ av fil som refereras och vilken subenhet/ filsystem som filen ligger på. En server kan hantera upp till 16 subenheter. Det finns i huvudsak tre typer av filer: vanliga, blockorienterade och teckenorienterade. En vanlig fil lagras oftast på någon disk och ett godtyckligt antal tecken kan både läsas och skrivas på godtycklig position i filen. Blockorienterade filer representerar enheter där endast datablock av en fix storlek kan läsas eller skrivas. Teckenorienterade filer representerar enheter där data läses och skrivs tecken för tecken, t ex terminaler och kommunikationsportar. Tabellen nedan visar vilka filtyper som finns och hur de kodas. OS-X, ett distribuerat realtidsoperativsystem 8 (37)
9 Filsystem Kod Namn Beskrivning 0 ftyp_reg Vanlig fil, både sekvensiell och direkt access kan utföras. 1 ftyp_dir Directory-fil, endast läsning tillåten, speciella operationer finns t ex rename(), delete() mm.. 2 ftyp_stream Teckenorienterad enhet, endast sekvensiell läsning/ skrivning. 3 ftyp_block Blockorienterad enhet, endast läsning/skrivning av block med 1024 bytes. Tabell 4. Kodning av filtyper i UFID Directory server Följande tjänster erbjuds av en directory server: lookup(path,mode) => UFID rename(path,new) delete(path) create(path) => UFID createdir(path) => UFID read_dir(ufid,index,size) => lista med matchande filnamn File server read(ufid,pos,size) => data, size write(ufid,pos,size,data) => size getattr(ufid) => filattribut (ägare, accessrättigheter, tid, datum mm) setattr(ufid,filattribut) OS-X, ett distribuerat realtidsoperativsystem 9 (37)
10 Filsystem Systemstruktur rootserver /dev tty aux hd0 dev.no. drivers / usr bin tmp fd0 UFID dirserver dirserver dirserver dirserver Root-servern hanterar ett virtuellt filsystem där directory-namn mappas till UFIDs för riktiga filsystem. Alla riktiga filsystem hanteras av någon directory-server. När ett nytt filsystem blir tillgängligt så monteras det dynamiskt i rotkatalogen genom att det nya systemets UFID associeras med ett namn hos root-servern. Root-servern hanterar också en virtuell filkatalog (/dev) där enhetsnamn mappas till drivrutiner och där diverse information om varje enhet lagras. OS-X, ett distribuerat realtidsoperativsystem 10 (37)
11 Memory server 4.0 Memory server 4.1 Funktion En memory server administrerar allt dynamiskt allokerbart minne i systemet. Det finns bara en memory server på varje maskin och denna är en del av kernelprocessen. 4.2 RPC-gränssnitt Gränssnittet mot en memory server bygger på standard OS-X RPC. Det exakta meddelandeformatet visas i tabellen nedan. Fält Offset Antal bytes Beskrivning RPC header 0 12 Standardiserad RPC-header med avsändare, mottagare, sekvensnummer mm. Se Tabell 1 på sidan 5. id 12 2 Anroparens process-id. p 14 2 Pekare till aktuellt minnesblock. size 16 2 Storlek på aktuellt minnesblock. map 18 1 Aktuell sidmappning. Tabell 5. Format på meddelande till memory server. Alla tjänster som en memory server erbjuder använder det ovan visade meddelandeformatet och för att välja tjänst anges önskad kod i RPC-headern. Parametrar och resultat används och överförs enligt nedan: Service Procedur Parametra r Resultat Beskrivning 8 alloc size, id, map p Allokera ett minnesblock i aktuell mappning. 9 galloc size, id p, map Allokera ett minnesblock i godtycklig mappning. 10 release p, size, id, map Frigör ett minnesblock. Tabell 6. RPC-meddelanden till memory server. OS-X, ett distribuerat realtidsoperativsystem 11 (37)
12 Memory server Service Procedur Parametra r Resultat Beskrivning 11 clean id - Frigör alla block allokerade av en viss process. 12 change p, size, id, map - Ändra ägare (process-id) för ett visst minnesblock. 13 avail p, map p Returnera antal lediga bytes i viss minnesmappning. Returnerar största lediga block om p <> nil. Tabell 6. RPC-meddelanden till memory server. OS-X, ett distribuerat realtidsoperativsystem 12 (37)
13 Process server 5.0 Process server 5.1 Funktion En process server administrerar start och terminering av processer i systemet. Det finns bara en process server på varje maskin och denna är en del av kernelprocessen. 5.2 RPC-gränssnitt Gränssnittet mot en process server bygger på standard OS-X RPC, detta möjliggör transparent manipulering av processer inom ett nätverk via nätverks-servers. Det exakta meddelandeformatet visas i tabellen nedan. Fält Offset Antal bytes Beskrivning RPC header 0 12 Standardiserad RPC-header med avsändare, mottagare, sekvensnummer mm. Se Tabell 1 på sidan 5. id 12 2 Aktuell process-id. size 14 2? data ? Tabell 7. Format på meddelande till process server. Alla tjänster som en process server erbjuder använder det ovan visade meddelandeformatet och för att välja tjänst anges önskad kod i RPC-headern. Parametrar och resultat används och överförs enligt nedan: Service Procedur Parametra r Resultat Beskrivning 8 fork id - Allokera eventuella resurser då en ny process har startats. 9 exit id - Frigör resurser då en process har terminerat. 10 syschk - - Frigör resurser för alla terminerade processer. 11 kill id - Terminera och frigör resurser för en viss process. Tabell 8. RPC-meddelanden till process server. OS-X, ett distribuerat realtidsoperativsystem 13 (37)
14 Process server Service Procedur Parametra r Resultat Beskrivning 12 pstat id size, data Returnera information om en viss process. OBS id tolkas som index i processtabellen dvs LSB av process-id. Tabell 8. RPC-meddelanden till process server. OS-X, ett distribuerat realtidsoperativsystem 14 (37)
15 Directory server 6.0 Directory server 6.1 Funktion En directory server administrerar mappningen från filnamn och sökvägar till filidentifierare (UFIDs) inom ett eller flera filsystem. Olika typer av operationer på sökvägar och läsning av filkataloger mm hanteras också av directory servers. 6.2 RPC-gränssnitt Gränssnittet mot en directory server bygger på standard OS-X RPC, detta möjliggör transparent sökning efter filer inom ett nätverk via nätverks-servers. Det exakta meddelandeformatet visas i tabellen nedan. Fält Offset Antal bytes Beskrivning RPC header 0 12 Standardiserad RPC-header med avsändare, mottagare, sekvensnummer mm. Se Tabell 1 på sidan 5. uid 12 2 Anroparens användarid. mode 14 2 Aktuellt arbetsläge / flaggor index 16 2 Index för läsning av filkatalog ufid 18 6 Aktuell UFID path Aktuell sökväg / sökmönster / filnamn data Variabelt datafält, används vid läsning av filkataloger mm. Tabell 9. Format på meddelande till directory server. Alla tjänster som en directory server erbjuder använder det ovan visade meddelandeformatet och för att välja tjänst anges önskad kod i RPC-headern. Parametrar och resultat används och överförs enligt nedan: Service Procedur Parametra r Resultat Beskrivning 8 lookup path, mode, ufid ufid Slå upp UFID för filen enligt sökvägen path, i det filsystem som anges av ufid. Tabell 10. RPC-meddelanden till directory server. OS-X, ett distribuerat realtidsoperativsystem 15 (37)
16 Directory server Service Procedur Parametra r Resultat Beskrivning 9 rename path, data - Byt namn på en fil, namnet anges av path och det nya namnet anges av data. 10 delete path Ta bort en fil. 11 create path, mode, uid 12 createdir path, mode, uid 13 read_dir ufid, mode, index ufid ufid mode, index, data Skapa en normal fil med angivet namn, user id, file mode. Skapa en filkatalog med angivet namn, user id, file mode. Läs filkatalog enligt ufid, på angivet index. Katalogen anges av ufid, index är ett löpnummer för läsningen, mode anger hur många bytes som maximalt ska läsas. Vid första anropet ska index=0, vid upprepade anrop ska det index som returnerades vid föregående anrop användas. I fältet mode returneras antalet lästa bytes. Om returnerat index=65535 eller mode=0 så finns inget mer att läsa. Tabell 10. RPC-meddelanden till directory server. OS-X, ett distribuerat realtidsoperativsystem 16 (37)
17 File server 7.0 File server 7.1 Funktion En file server administrerar mappningen från UFIDs till fysiska enheter eller dataareor i olika filsystem. Den direkta manipulationen av filer och enheter sköts alltid av någon file server. En file server kan hantera upp till 16 olika filsystem med upp till 4096 filer i varje filsystem. Varje filsystem har en lokal 4 bits identifierare och varje fil har en 16 bits identifierare som är unik inom ett filsystem. 7.2 RPC-gränssnitt Gränssnittet mot en file server bygger på standard OS-X RPC, detta möjliggör transparent access till filer inom ett nätverk via nätverks-servers. Det exakta meddelandeformatet visas i tabellen nedan. Fält Offset Antal bytes Beskrivning RPC header 0 12 Standardiserad RPC-header med avsändare, mottagare, sekvensnummer mm. Se Tabell 1 på sidan 5. uid 12 2 Anroparens användarid. pos 14 2 Aktuellt position för läsning/skrivning. poshi 16 2 Aktuell position, mest signifikanta delen. size 18 2 Antal bytes att läsa/skriva. ufid 20 6 Aktuell UFID data Variabelt datafält, används vid överföring av data och filattribut mm. Tabell 11. Format på meddelande till file server. Alla tjänster som en file server erbjuder använder det ovan visade meddelandeformatet och för att välja tjänst anges önskad kod i RPC-headern. Parametrar och resultat används och överförs enligt nedan: OS-X, ett distribuerat realtidsoperativsystem 17 (37)
18 File server Service Procedur Parametra r Resultat Beskrivning 8 read uid, pos, poshi, size, ufid 9 write uid, pos, poshi, size, ufid, data size, data size Läs ett datablock på angiven position i angiven fil, returnerar verkligt antal lästa tecken och det lästa datablocket. Skriv ett datablock på angiven position i angiven fil, returnerar verkligt antal skrivna tecken. 10 getattr ufid data Hämta alla filattribut för angiven fil. 11 setattr ufid, data - Sätt alla filattribut för angiven fil. 12 ioctl ufid, size, data size, data Utför enhetsspecifik operation på angiven fil, både läs/skriv. 13 getstat - size, data Hämta statusinformation om alla filsystem och servern. Tabell 12. RPC-meddelanden till file server. OS-X, ett distribuerat realtidsoperativsystem 18 (37)
19 Exec server 8.0 Exec server 8.1 Funktion En exec server hanterar exekvering av programfiler, dvs start av tungviktsprocesser. 8.2 RPC-gränssnitt Gränssnittet mot en exec server bygger på standard OS-X RPC, detta möjliggör transparent exekvering av programfiler lokalt eller på valfri maskin i ett nätverk. Det exakta meddelandeformatet visas i tabellen nedan. Fält Offset Antal bytes Beskrivning RPC header 0 12 Standardiserad RPC-header med avsändare, mottagare, sekvensnummer mm. Se Tabell 1 på sidan 5. uid 12 2 Anroparens användarid. stdin 14 6 UFID för stdandard infil. stdout 20 6 UFID för standard utfil. stderr 26 6 UFID för standard felutskriftsfil. argc 32 2 Antal argumentsträngar i argv. argv Variabel argumentarea, innehåller packade argumentsträngar där första tecknet i varje sträng anger dess längd. Tabell 13. Format på meddelande till exec server. Alla tjänster som en exec server erbjuder använder det ovan visade meddelandeformatet och för att välja tjänst anges önskad kod i RPC-headern. Parametrar och resultat används och överförs enligt nedan: OS-X, ett distribuerat realtidsoperativsystem 19 (37)
20 Exec server Service Procedur Parametra r Resultat Beskrivning 8 exec uid, stdin, stdout, stderr, argc, argv uid Ladda in programfilen enligt första strängen i argv och sätt upp fildeskriptor 0-2 enligt stdin, stdout, stderr. Starta programmet som en tungviktsprocess med argument enligt argc & argv. Returnerar den nya processens id. i uid. Tabell 14. RPC-meddelanden till exec server. OS-X, ett distribuerat realtidsoperativsystem 20 (37)
21 Name server 9.0 Name server 9.1 Funktion Name servern är en allmän nätverkstjänst för dynamisk bindning av namn till nätverksadresser. För att vara allmänt åtkomlig så använder name servern en reserverad socket (id 2). Name servern administrerar en databas som är indelad i ett antal domäner. Varje domän innehåller en tabell med bindningar av nyckelsträngar till heltal. För att slå upp en bindning så utförs ett RPC till name servern med parametrarna: domännamn och nyckelsträng, som resultat fås en felkod och eventuellt det till nyckelsträngen bundna heltalet. Förutom att söka det heltal som är bundet till en viss nyckel så är det möjligt att söka upp den nyckel som är bunden till ett visst heltal i en given domän. Name servern tillhandahåller också funktioner för att läsa av samtliga domännamn och hela domäner. 9.2 RPC-gränssnitt Gränssnittet mot name servern bygger på standard OS-X RPC, detta möjliggör transparent sökning efter tjänster inom ett nätverk via nätverks-servers. Det exakta meddelandeformatet visas i tabellen nedan. Fält Offset Antal bytes Beskrivning RPC header 0 12 Standardiserad RPC-header med avsändare, mottagare, sekvensnummer mm. Se Tabell 1 på sidan 5. domain Aktuellt domännamn key Aktuell nyckelsträng value 44 2 Aktuellt värde data Variabelt datafält, används vid läsning av hela tabeller. Tabell 15. Format på meddelande till name-server. Alla tjänster som name servern erbjuder använder det ovan visade meddelandeformatet och för att välja tjänst anges önskad kod i RPC-headern. Parametrar och resultat används och överförs enligt nedan: OS-X, ett distribuerat realtidsoperativsystem 21 (37)
22 Name server Service Procedur Parametra r Resultat Beskrivning 8 lookup domain, key value Sök värde för domain, key. Returnera value = aktuell bindning, result = 0 om bindning fanns. 9 get_doma ins value value, data Läs domännamn på index enligt value, returnera noll eller flera namn/värde-par i data och nästa index i value. Result = 0 om giltigt index, returvärdet i value < om fler bindningar finns och värdet ska användas som index i nästa läsning. 10 get_keys domain, value 11 bind domain, key, value value, data Läs tabellrad på index enligt value och domain, returnera noll eller flera namn/värde-par i data och nästa index i value. Se get_domains ovan. Skapa bindningen domain, key, value, returnera error = 0 om operationen lyckades. 12 unbind domain, key Ta bort bindningen för domain, key. Error = 0 om operationen lyckades, dvs även om bindningen saknades. Tabell 16. RPC-meddelanden till name server. Vid anrop av get_domains eller get_keys så returneras noll eller flera bindningar ihop packade i fältet data enligt nedan: Bindning 1 Bindning 2 7 asterix obelix Stränglängd, 1 byte Textsträng, x bytes Värde, 2 bytes Slut på bindningar, längd = 0 OS-X, ett distribuerat realtidsoperativsystem 22 (37)
23 Network server 10.0 Network server 10.1 Funktion En network server klarar av full duplex kommunikation över en dubbelriktad länk, men protokollet kräver att maximalt ett sänt obekräftat paket får finnas. Detta gör att endast ett paket behöver buffras för sändning och ett för mottagning. En strikt flödeskontroll fås pga att varje sänt paket måste bekräftas innan nästa kan sändas. Varje paket med data märks av sändaren med ett sekvensnummer. Detta nummer är ett löpnummer i intervallet När ett datapaket tas emot så kontrolleras om dess sekvensnummer är lika med det senast mottagna sekvensnumret, i sådana fall är paketet ett duplikat och ingoreras. Dock skickas för varje mottaget paket med korrekt format och checksumma, ett bekräftelsepaket över länken, dvs även ett duplikat bekräftas. När ett mottaget paket accepterats så sparas dess sekvensnummer för kontroll av nästa paket. Ett bekräftelsepaket saknar datadel och har sekvensnummer 128 för att kunna särskiljas från ett datapaket. Paket med maximalt 250 bytes användardata skickas över en eller flera datalänkar. Data skickas till och från länk-servern med IPC, den första delen av meddelandehuvudet enligt OSX RPC används av datalänk-servern för adressering. När länk-servern startas så anses länken vara nere och då skickas paket innehållande lokalt nodnamn och adress ut på länken med jämna mellanrum tills svar fås. Svaret innehåller andra sidans nodnamn och adress och denna information skickas till den lokala name-servern. Den andra sidans adress sparas av länkservern och används för att styra utgående paket till rätt datalänk. En tabell med kopplingar mellan destinationsadresser och fysiska länkar administreras av länkservern. Om ett testpaket kommer in på någon länk så svarar servern med sitt eget nodnamn och adress, även om länken redan är uppe. När ett testpaket eller ett svar på ett testpaket mottagits så antas länken vara uppe. Sekvensnummren i testpaketen används för att synkronisera de bägge sidornas sekvensnummerräknare. Om ett RPC-paket ska förmedlas via en länk som är nere så svarar länk-servern själv med en negativ ack (result=-1). Efter 5 (?) misslyckade omsändningar så anses länken vara nere och den lokala name-servern informeras då om vilken destination som ej längre är uppe RPC-gränssnitt Normalt så används network servern för paketförmedling via ett nätverk. Data skickas då med primitiverna för IPC till serverns socket. Network servern använder en reserverad socket (id 0) för att vara allmänt åtkomlig. För att kunna hantera IPC via nätverk så kräver servern att alla förmedlade meddelanden har nedanstående format: OS-X, ett distribuerat realtidsoperativsystem 23 (37)
24 Network server Fält Offset Antal bytes Beskrivning net_src 0 2 Avsändarens socket id net_dst 2 2 Mottagarens nätverksadress net_size 4 1 Storlek på användardata protocol 5 1 Använt protokoll (0=raw, 1=RPC) user_data 5 < 250 Användardata Tabell 17. Format på IPC paket till network server Länkprotokoll För att hantera nätverk av maskiner används en process som hanterar nätet på länknivå. På datalänknivå används ett enkelt protokoll som säkerställer att data överförs korrekt mellan två maskiner. Protokollet använder checksummor, bekräftelser och ett enkelt sekvensnummersystem, vilket garanterar att ett meddelande överförs maximalt en gång. Tabellen nedan visar formatet på de paket som skickas över kommunikationslänkar mellan network servers: Fält Offset Antal bytes Beskrivning start 0 1 Starttecken, alltid = 255 check 1 1 Modulo 256 checksumma på byte 3-9 datchk 2 1 Modulo 256 checksumma på data status 3 1 Bit 7 = ack, bit 0-6 är sekvensnummer source 4 2 Avsändarens socket id dest 6 2 Mottagarens socket id size 8 1 Antal bytes i datadelen protocol 9 1 Använt protokoll data användardata Tabell 18. Paketformat på datalänken Tillståndsbeskrivning En network server implementeras lämpligen som en tillståndsautomat. Automaten kan befinna sig i något av dessa tre tillstånd: OS-X, ett distribuerat realtidsoperativsystem 24 (37)
25 Network server Idle: ingen trafik åt något håll Receive: paket under mottagning från länken Sent: paket skickat på länken men ej bekräftat Här följer en kort beskrivning i pseudokod.av hur de olika tillstånden hänger ihop. Tillstånd idle Om data finns i mottagningsbufferten: nollställ mottagningsräknaren och byt tillstånd till receive. Om meddelande väntar på lokal socket: hämta meddelandet, skapa IP-paket, skicka på länken och byt tillstånd till sent. Annars: frigör processorn genom att vänta en stund. Tillstånd receive Om data finns i mottagningsbufferten: hämta tecken Om mottagningsräknaren är noll: Om tecknet = starttecknet: spara i paketbufferten och räkna upp mottagningsräknaren Annars: fel, byt tillstånd till idle. Om mottagningsräknaren = storleken på pakethuvud: kontrollera checksumman Om korrekt: ta emot datadelen i paketet. Annars: fel, vänta en stund, töm mottagningsbufferten och gå till tillstånd idle. Om mottagningsräknaren = storleken på hela paketet: kontrollera checksumman på datadelen och sekvensnumret Om korrekt: skicka bekräftelsepaket, skicka det mottagna paketet till lokal socket och gå till tillstånd idle. Om fel sekvensnummer: skicka bekräftelsepaket, ignorera paketet och gå till tillstånd idle. Annars: fel, ignorera paketet och gå till tillstånd idle. Om mottagningsbufferten är tom: kolla om timeout, gå då till tillstånd idle. Tillstånd sent Tillstånd sent hanteras på samma sätt som receive förutom att om mottagningsfel i tillstånd sent uppstår så ska samma tillstånd behållas, dvs ingen övergång till ilde får ske. OS-X, ett distribuerat realtidsoperativsystem 25 (37)
26 Drivrutiner 11.0 Drivrutiner 11.1 Inledning OSX kan delas in i tre lager eller nivåer, där varje lager innehåller kod på en viss abstraktionsnivå relativt hårdvaran: 1. Hårdvarudefinitioner och accessprocedurer 2. Hårdvaruberoende drivrutiner 3. Systemprocesser och hårdvaruoberoende kod Mjukvaran är nedbruten i ett antal olika kompileringsenheter och endast två (?) av dessa är kopplade till hårdvaran. Övriga moduler har endast länkberoenden till de hårdvaruberoende modulerna. Genom denna uppdelning fås att endast 10% (?) av koden måste modifieras och kompileras om för att flytta operativsystemet till en ny hårvara, dvs 90% av systemet behöver ej kompileras om, endast en omlänkning krävs. För att uppnå denna höga andel maskinoberoende kod så har ett internt anropsgränssnitt definierats mot de hårvaruberoende modulerna Gränssnitt mot hårdvaran null_int; Generell avbrottshanterare, utför endast RETI. set_int(vector: int; handler: pointer); Sätter upp en avbrottshanterare för angiven avbrottsvektor. set_map; Maskinkodsrutin, sätter upp minnesmappning enligt A-registret. reset_watchdog; Maskinkodsrutin, återställer watchdog-kretsen. Denna rutin måste anropas minst 10 gånger per sekund. set_timer(id, time: int; handler: pointer); Sätter upp angiven hårdvarutimer enligt time, och installerar den angivna avbrottshanteraren för denna timer. OSX kräver att timer 0 är en 16bits timer och att timer 1 och 2 är 8bits timers. get_driver(id: int; buf: hw_info_ptr): boolean; Hämtar information om angiven drivrutin och returnerar sant om drivrutinnummret var giltigt. Informationen kopieras till dataarean som utpekas av parametern buf. Följande information fås: enhetsnamn, typ, anropsadresser för dev_read, dev_write, dev_ioctl, hårdvarans basadress och första avbrottsvektorn. get_sysinfo(item: int): int; Returnerar information om systemets hårdvarukonfiguration, t ex klockfrekvens CPU-typ, minnesareor för olika mappningar, antal mappningar mm. OS-X, ett distribuerat realtidsoperativsystem 26 (37)
27 Drivrutiner init_hardware(); Initialiserar hårdvara, avbrottsvektorer mm. get_hostname(): ^string; Returnerar maskinens nodnamn. set_hostname(s: string); Sätter om maskinens nodnamn. get_hostaddr(): int; Returnerar maskinens nodadress. set_hostaddr(n: int); Sätter om maskinens nodadress Gränssnitt mot drivrutiner dev_read(gfd,buf: pointer; size: int): int; dev_write(gfd,buf: pointer; size: int): int; dev_ioctl(gfd,buf: pointer; cmd,size: int): int; OS-X, ett distribuerat realtidsoperativsystem 27 (37)
28 Systemanrop 12.0 Systemanrop Minneshantering mem_alloc(size: int): pointer; Allokerar ett minnesblock i den aktuella mappningen och returnerar blockets startadress eller nil om blocket ej kunde allokeras. mem_release(p: pointer; size: int); Återlämnar ett minnesblock i den aktuella mappningen. gmem_chown(p: pointer; size,id: int; map: char); Ändrar ägare för minnesblocket som anges av p, size och map. Parametern id anger processid. för den nya ägaren av minnesblocket. gmem_avail(map: char): int; Returnerar det totala antalet bytes med ledigt minne i angiven mappning. gmem_max(map: char): int; Returnerar antalet bytes i det största sammanhängande blocket med ledigt minne i angiven mappning. mem_avail(): int; Returnerar det totala antalet bytes med ledigt minne i den anropande processens mappning. mem_max(): int; Returnerar antalet bytes i det största sammanhängande blocket med ledigt minne i den anropande processens mappning Processhantering lock(); Förhindrar processbyte och interupt. unlock(); Tillåter processbyte och interupt. await(var q: waitq); Blockerar den anropande processen och placerar den sist i kön q. cause(var q: waitq); Aktiverar den första processen i kön q. Om kön är tom händer ingenting. _cause; Maskinkodsversion av cause(), parametern överförs i register IX. _await; Maskinkodsversion av await(), parametern överförs i register IX. _icause; Specialversion av _cause() där aktivering av högprioriterad process sker direkt, sk pre-emptive scheduling. OS-X, ett distribuerat realtidsoperativsystem 28 (37)
29 Systemanrop wait(var s: semaphore); Väntar på semaforen s, om räknaren är noll så blockeras processen, annars räknas räknaren ner. signal(var s: semaphore); Signalera på semaforen s, om någon process väntar så aktiveras den, annars räknas räknaren upp. sys_time(): int; Returnerar aktuell systemtid, antal millisekunder sedan systemstart modulo idself(): int; Returnerar den anropande processens id. hold(time: int); Fördröjer den anropande processen i time millisekunder. sleep(); Utför omedelbart processbyte. exit(status: int); Terminerar den anropande processen med angiven statuskod. stop(); Stoppar den anropande processen utan att terminera den. join(id: int): int; Blockerar den anropande processen tills processen id terminerar eller stoppas, returnerar sedan processens exit-status. Om processen id ej existerar så returneras -1. kill(id: int): int; Terminera processen id omedelbart, returnerar 0 om operationen lyckats. Om processen saknas returneras -1. _tty_kill; Maskinkodsfunktion som terminerar alla processer med break-flaggan satt. set_priority(id,pri: int); Sätt prioritetsnivån för processen id. Prioritet 0 är lägst och 3 högst. set_break(id: int; on: boolean); Sätt break-flaggan för processen id enligt on. Om break-flaggan är sann så termineras processen av _tty_kill(). pstat(id: int; buf: ^pstatbuf): boolean; Hämtar information om processen id och lagrar den i dataarean som utpekas av variabeln buf, returnerar true om den angivna processen existerar. argv(n: int): ^string; Returnerar en pekare till den anropande processens argument-sträng nummer n. argc(): int; Returnerar antalet argument i den anropande processens argumentlista. OS-X, ett distribuerat realtidsoperativsystem 29 (37)
30 Systemanrop IPC argp(): pointer; Returnerar den anropande processens argumentpekare, dvs den pekare som skickats till fork då processen startades. Denna pekare har inget att göra med argumentlistan till processen/programmet. fork(proc: procedure; stack_size: int; arg: pointer; name: string): int; Skapar och startar en lättviktsprocess, den nya processen ärver förälderns standardfiler, argumentlista mm. Parametern stack_size anger storleken på den nya processens stack, om stack_size = 0 så får den nya processen samma stackstorlek som föräldern. Parametern arg är en godtycklig pekare som den nya processen kan hämta genom att anropa argp() enligt ovan. Parametern name anger den nya processens namn. Om fork lyckas så returneras den nya processens id, annars -1. init_waitq(var q: waitq); Initialiserar processkön q. init_semaphore(var s: semaphore; value: int); Initialiserar semaforen s och sätter dess räknare till value. create_socket(): int; Skapar en kanal för process-kommunikation. Returnerar kanalens id eller -1 om ingen kanal kunde skapas. alloc_socket(id: int): int; Allokerar kanalen id om den är ledig, returnerar id om operationen lyckats, annars returneras -1. destroy_socket(id: int); Återlämnar kanalen id. ipc_send(src,dst: int; data: pointer; size: int): int; Skickar data med storleken size via kanalen src till kanalen dst. Returnerar antalet överförda bytes om överföringen lyckats, annars 0. ipc_rec(local: int; var src: int; buf: pointer; size: int): int; Tar emot data med maximal storlek enligt size i bufferten buf via kanalen local. Parametern src sätts till den sändande kanalens id och proceduren returnerar antalet mottagna bytes om överföringen lyckats, annars 0. Om size < så fås blockerande mottagning, dvs den anropande processen blockeras tills data mottagits. Om size >= så fås icke-blockerande mottagning av max (size ) bytes. Om inga meddelanden finns vid icke-blockerande mottagning så returneras 0 omedelbart. ipc_rec_tw(local: int; var src: int; buf: pointer; size,timeout: int): int; Som ipc_rec() men timeout fås efter angivet antal millisekunder om inget meddelande mottagits innan dess. rpc_send(src,dst: int; header,data: pointer; hsize,size: int): int; Som ipc_send() men meddelandet sätts ihop av header och data med angivna storlekar. OS-X, ett distribuerat realtidsoperativsystem 30 (37)
31 Systemanrop rpc_rec(local: int; var src: int; header,data: pointer; hsize,size,timeout: int): int; Som ipc_rec_tw() men mottaget meddelande delas upp i header och data med angivna storlekar. Om timeout = 0 fås oändlig timeout. rpc_call(module, service: char; header, buf: pointer; server,hsize,dsize,rsize,timeout: int): int; Utför ett OS-X standard Remote Procedure Call, dvs nätverkstransparent och med sekvensnummerkontroll av svaret mm. Modul och tjänst anges av module respektive service. Parametern header är en pekare till RPC-meddelandets fixa huvud, storleken av denna del anges av hsize. Parametern buf är en pekare till RPCmeddelandets variabla datadel, storleken av denna del vid sändning anges av dsize och maximal storlek vid mottagning anges av rsize. Parametern server anger socket id. för RPC-anropets destination. Parametern timeout används på samma sätt som i systemanropen rpc_rec och ipc_rec_tw ovan. Returnerar resultatkod från RPCanropet, eller -1 om meddelandet ej kunde sändas alt. timeout har fåtts Filhantering open(path: string; mode: int): int; Öppnar filen path enligt mode och returnerar en fildeskriptor (ett litet heltal) om operationen lyckats, annars -1. close(fd: int); Stänger filen som är associerad med fildeskriptorn fd. seek(fd,pos: int); lseek(fd,poslo,poshi: int); Flyttar filpositionspekaren för filen fd till angiven position om filen är en vanlig fil, annars har seek/lseek ingen effekt. fstat(fd: int; buf: ^statbuf): boolean; Hämtar information om den öppna fildeskriptorn fd och lagrar resultatet i variabeln buf^, returnerar true om operationen lyckats. ftype(fd: int): char; Returnerar UFID-typ för den öppna fildeskriptorn fd. ioctl(fd,cmd: int; arg: pointer; size: int): int; Utför enhetsspecifikt kommando på den teckenorienterade specialfilen (enheten) som är associerad med fildeskriptorn fd. Returnerar -1 om operationen misslyckats. dup(fd: int): int; Duplicerar fildeskriptorn fd och returnerar en ny deskriptor som refererar till samma öppna fil som fd. Returnerar -1 om fd ej var associerad med någon öppen fil eller om den anropande processens deskriptortabell var full. read(fd: int; buf: pointer; size: int): int; Läser data av angiven storlek från fildeskriptorn fd och returnerar antalet lästa bytes. Om högsta biten i size är satt så fås icke-blockerande läsning. write(fd: int; data: pointer; size: int): int; Skriver data av angiven storlek på fildeskriptorn fd och returnerar antalet skrivna bytes. OS-X, ett distribuerat realtidsoperativsystem 31 (37)
32 Systemanrop read_dir(fd: int; buf: pointer; size: int): int; Läs data av angiven storlek från fildeskriptorn fd och returnera antalet lästa bytes. Data består av packade strängar där första tecknet i varje sträng anger dess längd. När inga fler filnamn finns fås en sträng med längden noll. Endast hela filnamn läses så antalet lästa bytes kan vara mindre än size även om fler namn finns att läsa. Fildeskriptorn måste vara en öppnad filkatalog, annars returneras noll. Observera att anrop till read_dir() ej kan blandas med anrop till read(), en filkatalog bör endast läsas från början till slut med read_dir(). getc(fd: int): int; Läser en byte från filen fd, returnerar -1 om filslut. putc(fd: int; data: char); Skriver en byte på filen fd. getchar(): int; Läser en byte från standard infilen, returnerar -1 om filslut. putchar(data: char); Skriver en byte på standard utfilen. puts(s: string); Skriver strängen s på standardutfilen. delete(path: string): int; Tar bort det angivna filnamnet ur motsvarande filkatalog, om den sista länken till filen tas bort så tas även filens i-nod och eventuella allokerade diskblock bort. Filkataloger kan tas bort endast om de är tomma. rename(srcpath,dstpath: string): int; Byter namn från srcpath till dstpath. chdir(path: string): int; Sätter den anropande processens arbetskatalog (current working directory) till path. get_cwd(): ^string; Returnerar sökvägen till den anropande processens aktuella arbetskatalog. set_cwd(path: string); Sätt aktuell arbetskatalog enligt path, ingen felhantering. mkdir(path: string): int; Skapar en ny filkatalog med namnet path Diverse get_version(): int; Returnerar aktuellt versionsnummer på operativsystemet. Om operativsystemet har versionsnummer 2.03 så returnerar get_version heltalet 203. get_time(): int; Returnerar aktuell tid som antalet minuter sedan klockan 00:00. OS-X, ett distribuerat realtidsoperativsystem 32 (37)
33 Systemanrop set_time(minute: int); Sätt aktuell tid till angivet antal minuter. Giltiga värden är get_date(): int; Returnera aktuellt datum som antalet dagar sedan år 0, då varje månad antas ha 31 dagar. set_date(day: int); Sätt aktuellt datum till angivet antal dagar. Giltiga värden är exec(host,argc: int; argv: arg_ptr): int; Startar en ny process på maskinen host, med argc argument enligt argumentlistan argv, genom att ladda in den exekverbara filen vars namn anges av argv^[0]. Stackstorleken för den nya processen läses i programfilens huvud. Om operationen lyckas så returneras den nya processens id. Vid anropet utförs ingen sökning efter filen utan den korrekta sökvägen måste anges i argv^[0]. Vid anropet kopieras den anropande processens fildeskriptorer 0-2 och de angivna argument- och omgivningsareorna till den nya processen. Anropet returnerar så snart som ett programsegment har allokerats och en laddprocess startats, dvs programfilen läses in efter anropet. Eventuella läsfel vid laddningen rapporteras genom att den nya processen terminerar med statuskod skild från noll. Observera att värdmaskinen ska anges som maskinnummer * Inhoppsadresser Samtliga ovan beskrivna systemanrop nås genom anrop till nedan definierade absoluta inhoppsadresser. Procedur get_sysinfo get_driver get_hostaddr get_hostname set_hostaddr set_hostname Adress [hex] FD00 FD04 FD08 FD0C FD10 FD14 FD18 FD1C mem_alloc mem_release gmem_chown gmem_avail FD20 FD24 FD28 FD2C Tabell 19. Absoluta adresser för systemanrop. OS-X, ett distribuerat realtidsoperativsystem 33 (37)
34 Systemanrop Procedur gmem_max mem_avail mem_max Adress [hex] FD30 FD34 FD38 FD3C FD40 FD44 FD48 FD4C lock unlock await cause _await _cause _icause wait signal sys_time idself hold sleep exit stop join _tty_kill set_priority set_break argv argc argp sys_fork FD50 FD54 FD58 FD5C FD60 FD64 FD68 FD6C FD70 FD74 FD78 FD7C FD80 FD84 FD88 FD8C FD90 FD94 FD98 FD9C FDA0 FDA4 FDA8 Tabell 19. Absoluta adresser för systemanrop. OS-X, ett distribuerat realtidsoperativsystem 34 (37)
35 Systemanrop Procedur fork init_waitq ini_semaphore Adress [hex] FDAC FDB0 FDB4 FDB8 FDBC FDC0 FDC4 FDC8 FDCC create_socket alloc_socket destroy_socket ipc_send ipc_rec ipc_rec_tw rpc_send rpc_rec rpc_call FDD0 FDD4 FDD8 FDDC FDE0 FDE4 FDE8 FDEC FDF0 FDF4 FDF8 FDFC open close seek lseek ftype dup read write getc putc FE00 FE04 FE08 FE0C FE10 FE14 FE18 FE1C FE20 FE24 Tabell 19. Absoluta adresser för systemanrop. OS-X, ett distribuerat realtidsoperativsystem 35 (37)
36 Systemanrop Procedur getchar putchar puts Adress [hex] FE28 FE2C FE30 FE34 FE38 read_dir get_cwd set_cwd exec FE3C FE40 FE44 FE48 FE4C FE50 FE54 FE58 FE5C FE60 FE64 FE68 FE6C FE70 FE74 FE78 FE7C FE80 FE84 FE88 FE8C FE90 FE94 FE98 FE9C FEA0 Tabell 19. Absoluta adresser för systemanrop. OS-X, ett distribuerat realtidsoperativsystem 36 (37)
37 Systemanrop Procedur Adress [hex] FEA4 FEA8 FEAC FEB0 FEB4 FEB8 FEBC FEC0 FEC4 FEC8 FECC FED0 FED4 FED8 FEDC FEE0 FEE4 FEE8 FEEC FEF0 FEF4 FEF8 FEFC Tabell 19. Absoluta adresser för systemanrop. OS-X, ett distribuerat realtidsoperativsystem 37 (37)
Dagens OS. Unix, Linux och Windows. Unix. Unix. En översikt av dagens OS Titt på hur de gör. Många varianter Mycket gemensamt. En del som skiljer
Dagens OS En översikt av dagens OS Titt på hur de gör Unix, Linux och Windows Unix Många varianter Mycket gemensamt Unix En del som skiljer Vanliga program, shell, etc System calls Interupts and traps
Flera processer. Minneshantering. Trashing kan uppstå ändå. Ersätta globalt
Flera processer Minneshantering Operativsystem lektion 6 Potentiellt problem: Den sida som plockas bort behöver inte vara den sida som används minst!! Det kan finnas andra processer som inte körs eller
Operativsystem. Informationsteknologi sommarkurs 5p, 2004. Agenda. Slideset 7. Exempel på operativsystem. Operativsystem
Informationsteknologi sommarkurs 5p, 2004 Mattias Wiggberg Dept. of Information Technology Box 337 SE751 05 Uppsala +46 18471 31 76 Collaboration Jakob Carlström Slideset 7 Agenda Exempel på operativsystem
Introduktion till integrering av Schenkers e-tjänster. Version 2.0
Introduktion till integrering av Schenkers e- Version 2.0 Datum: 2008-06-18 Sida 2 av 8 Revisionshistorik Lägg senaste ändringen först! Datum Version Revision 2008-06-18 2.0 Stora delar av introduktionen
Vad händer när man kör ett program? Program och processer. Funktionsanrop. Avsluta programmet
Vad händer när man kör ett program? Program och processer När man kompilerar ett program och sedan länkar ihop det så stoppar länkaren in lite extra kod i programmet. Det är denna kod som i sin tur anropar
Datorer och datoranvändning Föreläsningar 2014/15. Föreläsning 1 Unix. Operativsystem. Unix
Datorer och datoranvändning Föreläsningar 2014/15 Per Holm Per.Holm@cs.lth.se Unix 2 (lab 1) Lågnivåprogrammering 23 (lab 2) Datorns hårdvara 45 L A TEX 69 (lab 3) Internet 98 (lab 4) Operativsystem 117
Möte 10: Kommunikation mellan processer - (PI)
Möte 10: Kommunikation mellan processer - (PI) Målet med att köra flera processer är ofta att få dem att samverka, som sagt, men för att få dem att samverka måste de ofta kommunicera. Vi ska studera processkommunikation
Föreläsning 6: Introduktion av listor
Föreläsning 6: Introduktion av listor Med hjälp av pekare kan man bygga upp datastrukturer på olika sätt. Bland annat kan man bygga upp listor bestående av någon typ av data. Begreppet lista bör förklaras.
Operativsystem - input/output, skydd, virtualisering
Operativsystem - input/output, skydd, virtualisering Mats Björkman 2015-03-12 Lärandemål, I/O n Typer av I/O-enheter n Character, Block & Special n Minnesmappad I/O n Typer av I/O-programmering n Programmerad,
Synkronisering. Föreläsning 8
Synkronisering Föreläsning 8 Synkronisering Så stort, intrikat och viktigt att det finns hela kurser om det i parallellprogrammering. Vi fuskar lite med några av de viktigaste bitarna! Synkronisering Vad
... Funktionsanrop. Vad händer när man kör ett program?
Vad händer när man kör ett program? När man kompilerar ett program och sedan länkar ihop det så stoppar länkaren in lite extra kod i programmet. Det är denna kod som i sin tur anropar main-funktionen ungefär
Deluppgift 17 Processhantering: exec, sleep, exit, plist
Linköpings Tekniska Högskola Institutionen för Datavetanskap (IDA), Software and Systems (SaS) (c) Klas Arvidsson Deluppgift 17 Processhantering: exec, sleep, exit, plist Inledning För att få ett praktiskt
HI1025 Operativsystem, KTH Haninge, VT2012
Del 2 av kursen: Systemprogrammering. Tillfälle 5 (F): Introduktion till programmering med parallella processer: fork(), wait(), exit(), getpid(), getppid(), execl(), execvp(). 1. Parallella processer
Hjälpmedel för kompilatorkonstruktion, DVB004
Hjälpmedel för kompilatorkonstruktion, DVB004 Version 4.2 021104 Göran Fries 031104 GF Kompilatorn kan lämpligen konstrueras i tre ganska fristående pass (p1,p2,p3). Första passet gör en lexikalisk analys,
Operativsystem ID1200/06 (ID2200/06 6hp) Tentamen :00-18:00
Operativsystem ID1200/06 (ID2200/06 6hp) Tentamen 2019-04-16 14:00-18:00 Instruktioner Du får, förutom skrivmateriel, endast ha med dig en egenhändigt handskriven A4 med anteckningar. Anteckningarna lämnas
5 Grundläggande in- och utmatning
5 Grundläggande in- och utmatning För att användaren skall kunna kommunicera med programmet krävs att man inkluderar ett eller flera bibliotek med rutiner. I Ada finns det ett antal paket som gör detta
F5: Högnivåprogrammering
F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data via
F5: Högnivåprogrammering
1 F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data
Föreläsning 3.1: Datastrukturer, en översikt
Föreläsning.: Datastrukturer, en översikt Hittills har vi i kursen lagt mycket fokus på algoritmiskt tänkande. Vi har inte egentligen ägna så mycket uppmärksamhet åt det andra som datorprogram också består,
Operativsystem (ID2200/06) XX XX:00-XX:00
Operativsystem (ID2200/06) 2017-01-XX XX:00-XX:00 Namn: Instruktioner Du får, förutom skrivmateriel, endast ha med dig en egenhändigt handskriven A4-sida med anteckningar. Mobiler etc skall lämnas till
Dokumentation för funktionsblocksbibliotek MwaCOMLI
Dokumentation för funktionsblocksbibliotek MwaCOMLI 1. Allmänt... 2 1.1. Versionshistoria... 2 1.2. Implementerade Telegram... 3 1.3. Adressering Flaggor... 4 1.4. Registervärden... 5 2. Fboxar... 6 2.1.
Transportnivån. Kommunikation mellan processer. Kommunikation mellan processer. Sockets och TCP. UDP (User Datagram Protocol) Checksumman
Transportnivån Kommunikation mellan processer :HEVHUYHU 6RFNHW 0LQSURFHVV 6RFNHW /RJLVNNRPPXQLNDWLRQPHOODQDSSOLNDWLRQV SURFHVVHU1lWYHUNVQLYnQLQQHElUORJLVN NRPPXQLNDWLRQPHOODQQRGHU (QVRFNHWSRUW JUlQVVQLWWPHOODQWUDQVSRUWQLYnQRFK
Att använda pekare i. C-kod
Att använda pekare i C-kod (Bör användas av de som känner sig lite hemma med C-programmering!) Rev 1, 2005-11-23 av Ted Wolfram www.wolfram.se Syfte: Man kan tycka att det är komplicerat att använda pekare
Operativsystem ID2200 Tentamen TEN1 3.8 hp :00-18:00
Operativsystem ID2200 Tentamen TEN1 3.8 hp 2018-04-03 14:00-18:00 Instruktioner Du får, förutom skrivmateriel, endast ha med dig en egenhändigt handskriven A4 med anteckningar. Svaren skall lämnas på dessa
Transport Layer. Transport Layer. F9 Meddelandesändning med UDP EDA095 Nätverksprogrammering. Java och UDP TCP/UDP
F9 Meddelandesändning med UDP EDA095 Roger Henriksson Datavetenskap Lunds universitet Transport Layer Transport Layer Bygger vidare på på "Internet Internet Layer" Layer / IP. / IP. Applikationsprogram
Filsystem. Varför? Hur? För att kunna lagra data mer permanent än i RAM. Vettig organisation Vettiga namn
Varför? För att kunna lagra data mer permanent än i RAM Hur? Vettig organisation Vettiga namn Stora/små bokstäver 8-bitars tecken (teckenkodning) File extensions Längd Struktur på filerna Byte efter byte,
Övning från förra gången: readword
(9 september 2010 T4.1 ) Övning från förra gången: readword /** readword.c * * int readword(char w[], int n) { * * Läser tecken tills en bokstav påträffas. * Läser och lagrar sedan högst n-1 bokstäver
Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1.
Schenker har interna system som handhar information som är av intresse för våra kunder/partners. Idag finns ett flertal av dem tillgängliga via Internet, sk Online-tjänster. Dessa erbjuder inte bara hämtning
Fö 8: Operativsystem II. Minneshantering. Minneshantering (1) Minneshantering (2) Minneshantering och Virtuelltminne.
Fö 8: Operativsystem II Minneshantering och Virtuelltminne. Virtuella I/O enheter och Filsystemet. Flerprocessorsystem. Minneshantering Uniprogrammering: Minnet delas mellan operativsystem och användarprogrammet.
Operativsystem ID1200/06 (ID2200/06 6hp) Tentamen :00-18:00
Operativsystem ID1200/06 (ID2200/06 6hp) Tentamen 2019-04-16 14:00-18:00 Instruktioner Du får, förutom skrivmateriel, endast ha med dig en egenhändigt handskriven A4 med anteckningar. Anteckningarna lämnas
Fö 5+6 TSEA81. Real-time kernel + Real-time OS
Fö 5+6 TSEA81 Real-time kernel + Real-time OS Stackens användningsområde * JSR / RTS : returadress * Temporärdata (push / pop) void myfunc(void) { int i; // hamnar nog i register int test[10]; // hamnar
Datorsystem Laboration 2: Minnesmappade bussar
Datorsystem Laboration 2: Minnesmappade bussar Senast uppdaterad: 14 oktober 2012 Version 1.2 Student: Lärare: Underskrift: Underskrift: Datum: Datorsystem Laboration 2 1 Innehåll 1 Inledning 2 1.1 Introduktion..................................
Åtkomst och användarhandledning
Innehållsförteckning Problemspecifikation...1 Åtkomst och användarhandledning...2 Systembeskrivning...3 Lösningens begränsningar...5 Problem och reflektioner...6 Testkörning...7 Bilagor......Källkod...
Grunderna i stegkodsprogrammering
Kapitel 1 Grunderna i stegkodsprogrammering Följande bilaga innehåller grunderna i stegkodsprogrammering i den form som används under kursen. Vi kommer att kort diskutera olika datatyper, villkor, operationer
Olika OS. Unix, Linux och Windows. Unix. Unix. En översikt av ett par OS. Titt på hur de gör. Många varianter. Mycket gemensamt. En del som skiljer
Olika OS En översikt av ett par OS Titt på hur de gör Unix, Linux och Windows Unix Många varianter Mycket gemensamt Unix En del som skiljer Begrepp Hur skapas en process Deamon rocess Föräldrar & barn
Öppna filer och filsystem i PintOS Hemuppgift TDDI81, 21/
Öppna filer och filsystem i PintOS Hemuppgift TDDI8, /0-03 Almquist Mathias (matal09) Nguyen Johan (johng86) Hamzic Mirza (mirha348) Timliden Erik (eriti930) INLEDNING PintOS är ett operativsystem utvecklat
Programmering A C# VT 2010. Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08
Programmering A C# VT 2010 Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08 Innehåll Hjälp och referenser... 3 Kap 1 Introduktion... 3 Steg för steg... 3 Kapitel 2 Variabler...
WAGO IO System Service Seminar. Diagnostik
WAGO IO System Service Seminar Diagnostik 1 Dioder på Controller Link 1/2 Ethernet Länk status Av - ingen ethernet anslutning grön - Ethernet anslutning blinkande grön - Ethernet anslutning skickar / tar
Föreläsning 4. Multiplexering (1/2) Multiplexering (2/2) Multiplexering Närnät
Föreläsning 4 Multiplexering Närnät 10/8/01 Gunnar Karlsson, Bengt Sahlin 1 Multiplexering (1/2) En länk bör kunna användas av flera sändare multiplexering = uppdelning av länken varje sändare allokeras
Innehållsförteckning. Exempel. Åtkomst & användarhandledning
Framsidan Framsidan på din labrapport kan du utforma ganska fritt. Tänk bara på att den ska vara läsbar, och innehålla (minst) följande information: Ditt namn Din e-mail adress här på CS! Kursens namn
CE_O6. Parallell in/utmatning (I/O). Förberedelser till laboration nios2io.
IS1200 Exempelsamling till övning CE_O6, 2015 CE_O6. Parallell in/utmatning (I/O). Förberedelser till laboration nios2io. 6.1. Läs in data från IN-port (skjutomkopplare TOGGLES18) Skriv en subrutin, Get_Data
TDDIU81. Processer och trådar. Andreas Dahlberg, Jonathan Doherty, Tony Magnusson, Patrik Ottosson, Rasmus Siljedahl
TDDIU81 Processer och trådar Andreas Dahlberg, Jonathan Doherty, Tony Magnusson, Patrik Ottosson, Rasmus Siljedahl Sammanfattning Den här rapporten innehåller en kort genomgång av allmän process och trådhantering
Operativsystem ID1200/06 Tentamen :00-18:00
Operativsystem ID1200/06 Tentamen 2018-01-12 14:00-18:00 Instruktioner Du får, förutom skrivmateriel, endast ha med dig en egenhändigt handskriven A4 med anteckningar. Svaren skall lämnas på dessa sidor,
Tentamen TEN1 HI1029 2014-05-22
Tentamen TEN1 HI1029 2014-05-22 Skrivtid: 8.15-13.00 Hjälpmedel: Referensblad (utdelas), papper (tomma), penna Logga in med tentamenskontot ni får av skrivvakten. Det kommer att ta tid att logga in ha
Instuderingsfrågor ETS052 Datorkommuniktion - 2014
Instuderingsfrågor ETS052 Datorkommuniktion - 2014 October 13, 2014 Fråga 1. Beskriv de två komponenterna i PCM. Fråga 2. Förklara hur länklagret kan skilja på olika inkommande paket från det fysiska lagret.
Strängar. Strängar (forts.)
Strängar En sträng i C är helt enkelt en array av char: char namn[20]; För att få strängar att bete sig som om de vore av dynamisk längd markeras strängens slut med null-tecknet \0 : J o z e f S w i a
Operativsystem - Filsystem
Operativsystem - Filsystem Mats Björkman 2015-03-09 Administrativt n Extraföreläsning istället för den inställda: torsdag 12/3 kl 8-10 i Pi n Seminarier preliminärt schema ute n 15 minuter per grupp lämna
API Notera HTTPS POST msg UTF-8. API_key JSON Mobilnummer format 1. Skicka ett SMS till specifikt nummer POST parametrar: from msg API_key Exempel:
API Jojka är utrustat med ett kraftfullt API. Utöka din applikation till att även kommunicera med Jojka. Det är väldigt enkelt att komma igång. Här nedan följer en presentation av alla funktioner. Notera
Övningar till UNIX/Linux Grundkurs och förslag till LÖSNING
Övningar till UNIX/Linux Grundkurs och förslag till LÖSNING 1. Träna på att logga in och ut. 2. Mata ln sleep 60. Mata in kommandot date direkt. Tryck på avbrottstangenten, (CTRL-C). Prova kommandot date
Operativsystem ID2206 Tentamen TEN1 4.5 hp :00-18:00
Operativsystem ID2206 Tentamen TEN1 4.5 hp 2018-04-03 14:00-18:00 Instruktioner Du får, förutom skrivmateriel, endast ha med dig en egenhändigt handskriven A4 med anteckningar. Svaren skall lämnas på dessa
Sockets: server. with Ada.Command_Line; use Ada.Command_Line; with Ada.Exceptions; use Ada.Exceptions; with Ada.Text_IO; use Ada.
Sockets: server with Ada.Command_Line; use Ada.Command_Line; with Ada.Exceptions; use Ada.Exceptions; with Ada.Text_IO; use Ada.Text_IO; with TJa.Sockets; use TJa.Sockets; procedure Server is -- Servern
Tentamen OOP 2015-03-14
Tentamen OOP 2015-03-14 Anvisningar Fråga 1 och 2 besvaras på det särskilt utdelade formuläret. Du får gärna skriva på bägge sidorna av svarsbladen, men påbörja varje uppgift på ett nytt blad. Vid inlämning
1 Översikt. 1.1 Koncept 1 (19) Tomas Rook Dokument typ. 2010-05-03 Rev. Manual
1 (19) larmus dokumentation P100503 1 Översikt 1.1 Koncept larmus ökar användarvänligheten i SCD systemet med så självklara saker som sorterbara kolumner, tydligare vyer och filteringsmöjligheter. Eftersom
1284_omslag.qxd 2005-10-11 11:13 Sida 1 ECDL START OFFICE 2003 Allmän IT Windows XP Word 2003 Outlook 2003
ECDL START OFFICE 2003 Allmän IT Windows XP Word 2003 Outlook 2003 5 Arbeta med mappar och filer I Windows finns det två sätt att arbeta med de olika enheterna i systemet. Vilket du väljer beror på personligt
AVCAD 4.0 for MS SQL-SERVER
SVENSK INSTALLATIONSANVISNING Innan du startar installationen, se till att du har minst 512 MB RAM (rek. 1GB) i din dator. Skärmstorleken bör vara minst 17 tum och upplösningen minst 1280x1024 punkter
Tentamen i Datorkommunikation den 10 mars 2014
Tentamen i Datorkommunikation den 10 mars 2014 Tillåtna hjälpmedel: räknedosa Varje uppgift ger 10 poäng. För godkänt krävs 30 poäng. Uppgift 1 Antag att man ska skicka en fil av storleken 10 kbit från
Operativsystem IS1350
Operativsystem IS1350 LAB 3 2009-09-21 Checklista: ÿ ÿ Inloggningsuppgifter till KTH.SE-konto Tillgång till PC med Windows och C-kompilator, t.ex. Dev-C++ Sammanfattning I den här laborationen ska vi titta
Programmeringsteknik med C och Matlab
Programmeringsteknik med C och Matlab Kapitel 2: C-programmeringens grunder Henrik Björklund Umeå universitet Björklund (UmU) Programmeringsteknik 1 / 32 Mer organisatoriskt Imorgon: Datorintro i lab Logga
Hjälpprotokoll till IP
Hjälpprotokoll till IP IP-protokollet är ju Internets nätverksprotokoll En filosofi vad gäller Internetprotokollen är att man inte ska försöka skapa ett protokoll som kan hantera alla tänkbara problem,
Enklast att skriva variabelnamn utan ; innehåll och variabelnamn skrivs ut
F5: Filhantering in- och utmatning (kap. 2 och 8) 1 Utskrift på skärm, inläsning från tangentbord (kap. 2) Spara och hämta variabler med save och load (kap. 2) Kommandot textread Mer avancerad filhantering:
Objektsamlingar i Java
1 (6) Objektsamlingar i Java Objektorienterad programmering 3 Syfte Att ge träning i att använda objektsamlingar i Java. Mål Efter övningen skall du kunna använda objektsamlingsklasserna ArrayList och
SMD 134 Objektorienterad programmering
SMD 134 Objektorienterad programmering Dagens agenda: Typer i Java: primitiva datatyperna, referenstyper Variabler och variabeltilldelningar med primitiva typer Konstanter av de olika typerna. Heltalsräkning
För installationer av SQL Server som inte görs från Hogias installation måste följande inställningar göras:
Systemkrav 2009 Gäller från och med programversion 2009.2 Avser enanvändarinstallation i Hogias ekonomisystem. Systemkraven specificerar de miljöer och förutsättningar som programvaran är testad i och
IT för personligt arbete F2
IT för personligt arbete F2 Nätverk och Kommunikation DSV Peter Mozelius Kommunikation i nätverk The Network is the Computer Allt fler datorer är sammankopplade i olika typer av nätverk En dators funktionalitet
Objektorienterad programmering D2
Objektorienterad programmering D2 Laboration nr 2. Syfte Att få förståelse för de grundläggande objektorienterade begreppen. Redovisning Källkoden för uppgifterna skall skickas in via Fire. För senaste
CAN ett kommunikationsprotokoll för realtidssystem MOP 12/13 1
CAN ett kommunikationsprotokoll för realtidssystem 1 Seriekomunikation- Datanät- Topologi Buss Ring Nod Nod Nod Nod Nod Nod Nod Nod Nod Nod Nod Nod Nod Nod Nod Nod Nod Stjärna Masknät 2 Seriekomunikation-
Operativsystem Lektion 1. Lärare. Schema. Kurssajten Finns på adressen. Jan Erik Moström. Set Norman
Operativsystem Lektion 1 1 Lärare jem@cs.umu.se, B449 Lektioner etc Set Norman set@cs.umu.se, NAdv105 Labbar, labhandledning 2 Schema Notera att det finns ändringar i schemat!! Under perioden 1-8 mars
Linuxadministration I 1DV417 - Laboration 4 Nätverk, DHCP, säkerhetskopiering, processhantering, Samba och NFS
Linuxadministration I 1DV417 - Laboration 4 Nätverk, DHCP, säkerhetskopiering, processhantering, Samba och NFS Marcus Wilhelmsson marcus.wilhelmsson@lnu.se 18 februari 2014 Innehåll 1 Inledning och mål
Real-time requirements for online games
Real-time requirements for online games En undersökning om protokoll, tekniker och metoder som datorspel använder för att kommunicera över Internet Victor Grape Milad Hemmati Linköpings universitet Linköping
Årsskiftesrutiner i HogiaLön Plus SQL
Årsskiftesrutiner i HogiaLön Plus SQL Installation av HogiaLön Plus version 12.1.14 samt anvisningar till IT-ansvarig eller ITtekniker Viktig information för Terminal Server installation För att programmet
Operativsystem ID1200/06 och ID2200/06 Tentamen TENA 6 hp :00-18:00
Operativsystem ID1200/06 och ID2200/06 Tentamen TENA 6 hp 2018-04-03 14:00-18:00 Omtentander på ID2200 TEN1 3.8 hp och ID2206 TEN1 4.5 hp skall inte skriva denna tentamen! Instruktioner Du får, förutom
Distribuerade System, HT03
UMEÅ UNIVERSITET 21 oktober 2003 Institutionen för Datavetenskap Laborationsrapport Laboration Middleware Distribuerade System, HT03 Jini Namn: Anders Holm, c00asm@cs.umu.se Kjell Johansson, c00kjn@cs.umu.se
Tommy Färnqvist, IDA, Linköpings universitet. 1 ADT Map/Dictionary 1 1.1 Definitioner... 1 1.2 Implementation... 2
Föreläsning 5 ADT Map/Dictionary, hashtabeller TDDI16: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer 16 september 2015 Tommy Färnqvist, IDA, Linköpings universitet 5.1 Innehåll Innehåll
Programvara. A faire Modul 1 utgång Till/Från Elektriska/mekaniska egenskaper: se produktens användarhandbok
Programvara A faire Modul 1 utgång Till/Från Elektriska/mekaniska egenskaper: se produktens användarhandbok Produktreferens Produktbeskrivning Programvarans ref TP-anordning Radioanordning TXB601B 1 utgång
Sockets. Processkommunikation Sammanfattning. Sockets. Domän, typ och protokoll
Processkommunikation Sammanfattning Pipes Kan användas då processerna har en gemensam föräldraprocess. Tillgängligt överallt FIFO Som pipor fast processerna behöver inte ha någon gemensam förälder. XSI
Tentamen, EDA501 Programmering M L TM W K V
LUNDS TEKNISKA HÖGSKOLA 1(0) Institutionen för datavetenskap Tentamen, EDA501 Programmering M L TM W K V 2010 05 31, 8.00 13.00 Anvisningar: Denna tentamen består av 4 uppgifter. Preliminärt ger uppgifterna
Manual Utgåva 1.2. Sidan 1
Sidan 1 SoftIT AB 2003 Sidan 1 Sidan 2 Innehållsförteckning INNEHÅLLSFÖRTECKNING... 2 FÖRORD... 4 FÖRKLARINGAR... 4 INSTALLATION AV INTELLIDOC PÅ SOFTIT:S SERVRAR... 4 INSTALLATION AV INTELLIDOC PÅ EGEN
Denna laboration skapades för elever vid Roslagens Högskola men kan användas av vem som helst. Namnen på servrarna måste i så fall ändras.
Laboration 1, Databashantering med MySQL Av: Marcus Rejås I denna laboration skall du se till att du kommer åt databasmotorn och att det fungerar. Du kommer också att skapa en tabell
OneDrive/SharePoint. Innehåll
OneDrive/SharePoint Det här dokumentet innehåller instruktioner och rekommendationer om hur man på bästa sätt arbetar med filer och dokument i Office 365 OneDrive och SharePoint. Innehåll OneDrive/SharePoint...
Behörighetssystem. Ska kontrollera att ingen läser, skriver, ändrar och/eller på annat sätt använder data utan rätt att göra det
Behörighetssystem Ska kontrollera att ingen läser, skriver, ändrar och/eller på annat sätt använder data utan rätt att göra det Systemet måste kunna registrera vilka resurser, d v s data och databärande
IP Från användare till användare Vägval DNS Jens A Andersson (Maria Kihl) Att skicka data över flera länkar. Nätprotokoll
1 IP Från användare till användare Vägval DNS Jens A Andersson (Maria Kihl) Att skicka data över flera länkar All data som skickas mellan två slutnoder kommer att passera flera vägväljare och länkar på
Objektorienterad programmering i Java
Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet
Tentaupplägg denna gång
Några tips på vägen kanske kan vara bra. Tentaupplägg denna gång TIPS 1: Läs igenom ALLA uppgifterna och välj den du känner att det är den lättaste först. Det kan gärna ta 10-20 minuter. Försök skriva
Datorteknik ERIK LARSSON
Datorteknik ERIK LARSSON Inledning Ken Thompson och Dennis M. Ritchie utvecklade C Turingpriset( Nobelpris i datavetenskap ), 1983 Alan Turing (1912-1954) För deras utveckling av generell OS teori och
Introduktion till arv
Introduktion till arv 6 INTRODUKTION TILL ARV Arv Generell-Speciell Arv för att utnyttja det vi redan gjort Återanvändning Basklass Härledd klass Varför arv? Inför en subklass för att uttrycka specialisering
Standardfilerna Input och Output
Standardfilerna Input och Output Standardfilerna Input och Output är textfiler av typen TEXT (som bara finns för filer). Innehållet är av typen Char och filerna är strukturerade i form av rader. En sådan
Snabbguide Visma Compact API Version 5.1 Copyright 2006-2008 Visma Spcs AB Visma Compact API
Snabbguide Visma Compact API Version 5.1 Copyright 2006-2008 Visma Spcs AB Visma Compact API Introduktion Visma Compact API är ett programmeringsgränssnitt framtaget för att underlätta integration av Visma
3) Routern kontrollerar nu om destinationen återfinns i Routingtabellen av för att se om det finns en väg (route) till denna remote ost.
Routingprocessen Vid kommunikation mellan datorer måste de känna till var och hur de skall skicka paketen, om de datorer som ska kommunicera ligger på samma IP-nät är det ju inget problem. Men är det så
Dagens föreläsning. Diverse Common Lisp. Konstanter, parametrar, globala variabler
21-1-2 1 Dagens föreläsning Hur fungerar ett Lisp system intern struktur av symbolen, tal, listan pekare - delade strukturer - eq minneshantering fri lista - sophämtning/garbage collection stack Diverse
Standardfilerna Input och Output. Filer... Filer... vanlig utbyggnad för ökad dynamik. Filer... filtyper
Standardfilerna Input och Output... Standardfilerna Input och Output är textfiler av typen TEXT (som bara finns för filer). Innehållet är av typen Char och filerna är strukturerade i form av rader. En
5 Internet, TCP/IP och Tillämpningar
5 Internet, TCP/IP och Tillämpningar Syfte: Förstå begreppen förbindelseorienterade och förbindelselösa tjänster. Kunna grundläggande egenskaper hos IP (från detta ska man kunna beskriva de viktigaste
1 Funktioner och procedurell abstraktion
1 Funktioner och procedurell abstraktion Det som gör programkonstruktion hanterlig och övergripbar och överhuvudtaget genomförbar är möjligheten att dela upp program i olika avsnitt, i underprogram. Vår
Konfigurationsmanual FlexTime 1.2
Konfigurationsmanual FlexTime 1.2 Datum: 2010-05-25 INNEHÅLLSFÖRTECKNING 1 ALLMÄNT... 1 2 SERVER... 1 2.1 KONFIGURATIONSFIL... 1 2.1.1 ClientListenPort... 1 2.1.2 ClientKeepAliveInterval... 1 2.1.3 ClientKeepAliveTimeout...
Design och underhåll av databaser
Design och underhåll av databaser 1. Modell av verkligheten 2. Normalformer 3. Introduktion till DDL 4. Skapa databaser 5. Skapa tabeller 6. Skapa index 7. Restriktioner 8. Ta bort databaser, tabeller
Språket Python - Del 2 Grundkurs i programmering med Python
Hösten 2009 Dagens lektion Funktioner Filhantering Felhantering 2 Funktioner 3 FUNKTIONER Att dela upp program Att dela upp program i mindre delar, funktioner är ett viktigt koncept i programmering. Viktigt
International Olympiad in Informatics 2011 22 29 July 2011, Pattaya City, Thailand Tävlingsuppgifter Dag 2 Svenska 1.3. Papegojor
Papegojor Yanee är fågelentusiast. Sedan hon läst om IP over Avian Carriers (IPoAC), har hon spenderat mycket tid med att träna en flock papegojor att leverera meddelanden över långa avstånd. Yanees dröm
Grundprogrammen. combine
Seminarium II Andra seminariet behandlar speciella övningsuppgifter som gavs ut på kurswebben tidigare. Programmen som presenteras är förlag till lösningar på övningsuppgifterna. Genomgående används systemanropet
TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: 13-06-05 Tid: kl 16.00-20.
Umeå Universitet Datavetenskap Anders Broberg 130605 TENTAMEN Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg VT-13 Datum: 13-06-05 Tid: kl 16.00-20.00 Namn: Personnummer:
Programmering i C++ EDA623 Strömmar och filer. EDA623 (Föreläsning 9) HT / 19
Programmering i C++ EDA623 Strömmar och filer EDA623 (Föreläsning 9) HT 2013 1 / 19 Strömmar och filer Innehåll Klassen ios Läsning av strömmar Utskrift av strömmar Koppling av filer till strömmar Direktaccess
Driftdokumentation. Procapita Vård och Omsorg Inkomsthantering. Version 9.1 2011-12-01
Driftdokumentation Procapita Vård och Omsorg Inkomsthantering Version 9.1 2011-12-01 Sida 2/70 Innehållsförteckning 1 Inledning...4 2 Bearbetning allmänt...5 3 Inkomstöverföring FK - Månad...6 3.1 Backup...7