Systemprogrammering för ingenjörer TDBB15 – HT03 Lärare och handledare Thomas Johansson Samuel Carlsson
I dag Information om kursen Labbar Registrering Introduktion till C och Unix
Om kursen Det är viktigt att ni kommer igång med labbarna så fort som möjligt annars kommer ni att få stora problem rent tidsmässigt. Inga bonuspoäng Vi har inga bonuspoäng eller nåt liknande på kursen. Inlämningstider För att få labbarna rättade så ska labbarna lämnas in i tid.
Om kursen Handledning Samuel har handledning på sitt rum, se tider på kursens webbsida Webben Nästan all information ges i elektronisk form – antingen via kursens hemsida på eller via mail till gruppen TDBB15. Ta för vana att alltid kolla webben före varje föreläsning. E-post Om du vill skicka posten vidare – skapa en fil.forward i din root-katalog med nya adressen i.
Regler Läs igenom länkarna på kursens hemsida Regler och riktlinjer vid Riktlinjer vid labgenomförande Att skriva labrapport Tentamensregler Hederskodex Datorkontraktet (som du ska ha undertecknat och lovat följa) Internansökan Riktlinjer vid labgenomförande Att skriva labrapport Tentamensregler Hederskodex Datorkontraktet Internansökan Speciellt nya labregler
Obligatoriska inlämningsuppgifter (’Labbar’) Tre stycken labbar Uppvärmning Minishell Kanske Kryptering Inlämningstider finns på schemat Observera info på labbens förstasida Labbarna introduceras på gruppövningstiderna Börja i tid ! Om du missar en inlämningstid kan det ta lång tid innan din labb rättas... Gruppövningar: labbar + frågestund
Boken En slags ’illiustrerad manual’ Inte så mycket teori om uppbyggnaden av operativsystem, men det är inte kursens huvudmål Många exempel; de finns på webben också
Kursplan
Systemprogrammering Syftet med kursen är att ni skall lära er att programmera i en Unix omgivning på en nivå som är lägre än vad ni tidigare är vana vid. Under kursen kommer ni att bli "smutsiga" om fingrarna genom att fara runt och utnyttja finesser i operativsystemet på ett sätt som ni inte har gjort i tidigare kurser. Unix är det operativsystem som vi använder, det finns hundratals andra, från gigantiska system till små realtidskärnor.
C-programmering Förhoppningsvis kan ni redan programmera i C Det finns flera olika c-stilar: K&R, Allman etc Exemplen liknar Unix:s källkod, men kanske inte är de mest läsbara Tidiga system anpassade till låga prestanda hos maskinvaran -> mycket ’tricks’ för att spara tid, minne Kompilatorer numera är ganska intelligenta ’Okynnesoptimering’ kan t.o.m. leda till att program går långsammare... Välj bra algoritmer men låt kompilatorn sköta resten ! Programmerartid är dyrare än cpu-tid !
Unix Unix är skrivet i C, ursprungligen av Dennis Ritchie, Ken Thompson och andra, på Bell Labs i början av 70- talet. Ursprung i Multics, namnet är en liten ordvits. Många versioner BSD - Berkeley System V – AT&T POSIX – IEEE/ISO standard Linux – Linus Torvalds ...
Operativsystem Många funktioner: Resurshantering Cpu-tid Primärminne Lagringsutrymme Användargränssnitt Filsystem Säkerhet Nätverk API
Snabbgenomgång Fleranvändarsystem Många tjänster och möjligheter (och vissa faror) Fönstersystem Kommandorad Några vanliga begrepp Skalprogram Filsystem - är som de allra flesta andra filsystem hierarkiskt i sin uppbyggnad. Sökväg Working directory Hemkatalog
Filer File descriptors Stdin, stdout, stderr Buffrad och obuffrad I/O
Program, processer Program Processer Process control Från skalprogram Från ett C program User ID Group ID
Signaler Signaler Tidsangivelser
API, bibliotek Systemanrop och biblioteksanrop Både C och Unix deklarerar ett antal olika begränsningar, tex på hur stora tal som kan representeras, hur långt ett filnamn kan vara eller hur många filer som kan vara öppna samtidigt. Systemdatatyper
Diverse C Pekare till "nånting" Kom ihåg att man kan deklarera "pekare till nånting" genom att deklarera en pekare till void.