DM510: Operativsystemer (10 ECTS)

STADS: 15016901

Niveau
Bachelorkursus

Undervisningsperiode
Kurset er placeret i forårssemesteret.

Ansvarlige undervisere
Email: jamik@imada.sdu.dk

Skemaoplysninger
Hold Type Dag Tidsrum Lokale Uger Kommentar
Fælles I Tirsdag 16-19 U20 6-10
Fælles I Tirsdag 16-19 U150 11-12,16-17,22
Fælles I Tirsdag 16-19 U28 13
Fælles I Tirsdag 16-19 U46 14
Fælles I Tirsdag 16-19 U48A 18-21
H1 TE Onsdag 12-14 U154 22
H1 TE Torsdag 14-16 U154 18-19
H1 TE Fredag 12-14 U156 5-14,16-17,20-21
H2 TE Tirsdag 08-10 U156 18
H2 TE Tirsdag 14-16 U156 19
H2 TE Onsdag 14-16 U153 21
H2 TE Onsdag 14-16 U154 22
H2 TE Torsdag 08-10 U156 5
H2 TE Fredag 14-16 U24 6
H2 TE Fredag 08-10 U53 7
H2 TE Fredag 10-12 U155 8
H2 TE Fredag 10-12 U153 9
H2 TE Fredag 14-16 U156 10,12-14,16-17,20
H2 TE Fredag 10-12 U146 11
Vis hele skemaet
Vis personligt skema for dette kursus.

Kommentar:
Ubegrænset deltagerantal.

Indgangskrav:
Ingen

Faglige forudsætninger:
Studerende, der følger kurset, forventes at:
  • Stoffet fra DM548 Computerarkitektur og systemprogrammering forudsættes kendt.


Formål
At give de studerende viden om strukturering af computersystemer, om sammenspillet mellem hardware og software og operativsystemers rolle heri, og om de ressource-abstraktioner som et operativsystem tilbyder.

Studerende vil få viden om faktiske operativsystemer, planlægnings-algoritmer, sikkerheds- og beskyttelses-mekanismer, filsystemer og proces-kommunikation. Studerende vil lære C-programmering på operativsystemsniveau.

Kurset giver tildels fagligt grundlag for kurset ‘oversætter-konstruktion

I forhold til uddannelsens kompetenceprofil har kurset eksplicit fokus på at:
  • Give kompetence til:
    • håndtere komplekse og udviklingsorienterede situationer i studie- og arbejdssammenhænge
    • identificere egne læringsbehov og strukturere egen læring i forskellige læringsmiljøer
  • Give færdigheder i:
    • træffe og begrunde fagligt relaterede beslutninger
    • beskrive, formulere og formidle problemstillinger og resultater til enten fagfæller og ikke-specialister eller samarbejdspartnere og brugere
  • Give viden om
    • principper for konstruktion af computerhardware og styresystemer, herunder distribuerede og parallelle systemer


Målbeskrivelse
For at opnå kursets formål er det læringsmålet for kurset, at den studerende demonstrerer evnen til at:
  • Beskrive forskellige metoder og arkitekturer til at realisere operativsystemer, samt beskrive de fundamentale abstraktioner som et operativsystem tilbyder.
  • Beskrive hvordan multiple kontrol-flows kan blive realiseret, diskutere problemer relateret til concurrency, og beskrive hvordan synkronisation og kommunikation mellem kontrol-flows kan opnås.
  • Diskutere metoder for schedulering af CPU, disk og page-replacement.
  • Beskrive hvordan hukommelse kan gøres virtuel, og hvordan den kan håndteres som ressource.
  • Beskrive filsystembegrebet, mulige implementationer heraf og diskutere hvordan ekstern hukommelse kan tilknyttes et computersystem.
  • Beskrive samspillet mellem systemprogrammel, operativsystemkerner og hardware.
  • Beskrive de to hovedprincipper for design af distribuerede operativsystemer, og beskrive netværksbegrebet og den lagdelte tilgang til at realisere netværksprotokoller.
  • Beskrive sikkerhedsbegrebet i operativsystemer, diskutere eksisterende løsninger, og beskrive sikkerhedsproblemer som virus, orm, trojansk hest og buffer overflow.
  • Implementere systemprogrammel under brug af moderne operativsystemabstraktioner.
  • Anvende basale operativsystemabstraktioner i netværksprogrammering.
  • Programmering i C på operativsystem niveau.
Efter programmeringsprojekterne forventes den studerende at kunne:
  • Tilføje et systemkald til et Linux-operativsystem.
  • Implementere et kernemodul i et Linux operativsystem.
  • Implementere organisationslaget i et filsystem.
  • Skrive en let læselig og velstruktureret rapport.
Indhold
Kurset indeholder følgende faglige hovedområder:
Struktur af operativsystemer, systemkald, interrupts, processer, multi-threading, CPU schedulering, kritisk sektion, synkroniseringsmekanismer, klassiske synkroniseringsproblemer, atomiske transaktioner, deadlock handling, swapping, allokering af hukommelse, paging, segmentering, demand paging, page replacement, frame allocation, filer, mapper, mounting, håndtering af fri hukommelse, diskstruktur, disk-schedulering, RAID, sikkerhed og sikkerhedsproblemer, access-matricer, kryptering, autentifikation, distribuerede operativsystemer, netværk, distribuerede filsystemer, virtualisering, programmering i C på operativsystemniveau
 


Litteratur
    Meddeles ved kursets start.


Kursets hjemmeside
Dette kursus benytter e-learn (blackboard).

Forudsætningsprøver
  1. Et antal programmeringsopgaver. Intern bedømmelse ved underviser. Bestået/ikke bestået. Opgaverne er en forudsætning for deltagelse i eksamenselement a). (15016912).
Eksamen- og censurform:
  1. Mundtlig eksamen. 7-trinsskala, ekstern censur. (10 ECTS). (15016902).
Vejledende timetal
På naturvidenskab er undervisningen tilrettelagt efter trefasemodellen dvs. intro, trænings- og studiefasen.
Introfase: 36 timer
Træningsfase: 24 timer, heraf:
 - Eksaminatorie: 24 timer

Aktiviteter i studiefasen
  • Anvendelse af den tilegnede viden i projekter.
Undervisningsform

Sprog
Dette kursus undervises på dansk eller engelsk, afhængigt af underviseren. Dog altid på Engelsk ved deltagelse af internationale studerende.

Kursustilmelding
Se tilmeldingsfrister.

Pris for åben uddannelse
Se priser for enkeltkurser.

Denne kursusbeskrivelse var gyldig fra 1. februar 2017 til 31. januar 2019.