Göm menyn
IT-Programmet, Tema 1 i termin 4:

TTIT61 Processprogrammering och Operativ System

/Concurrent Programming and Operating Systems/


Tema 1: Mål

Mål

Inledning

Temat har två övergripande mål:
  • Att få grundläggande förståelse för processabstraktionen, synkronisering, och kommunikation.
  • Att få en inledande insikt i hur operativsystem fungerar och är uppbyggda.
Ett program exekveras ofta som en samling kommunicerande processer. Processerna får deluppgifter som tillsammans löser en större uppgift. Processerna kan exekvera på samma maskin eller på olika maskiner via nätverk. Eftersom interaktivitet via grafiska användargränssnitt är en del av många program är svarstider viktiga. För att kunna konstruera effektiva program är det därför nödvändigt att känna till hur kommunikation och synkronisering mellan parallella processer går till.
Processer kan ses som innehavare av resurser. Resurserna kan vara till exempel öppna filer eller primärminne. Resurser administreras av operativsystemet vilket gör att processer måste använda operativsystemets gränssnitt för att komma åt olika resurser. Att veta vad som händer "under ytan", hur operativsystemet fungerar, är därför grundläggande kunskaper för alla som sysslar med programutveckling.

Nedan följer en mera detaljerad beskrivning av de mål som har satts för temat. Målen beskrivs i allmänhet med hjälp av följande:

  • "Förstå ..." - Djupare förståelse; veta varför; tillräckligt för att kunna dra egna slutsatser om en företeelse.
  • "Veta ..." el. "Kunna ..." - Veta t.ex. hur något fungerar men inte nödvändigtvis varför.
  • "Känna till ..." - Ha fått en mera översiktlig orientering om innebörd och betydelse av en företeelse.
Under målen finns också ett antal nyckelord som kan användas som utgångspunkter.

Processprogrammering

Förstå innebörden och behovet av processkommunikation och synkronisering av processer. Förstå processbegreppet.
Processkommunikation och processynkronisering följer ofta vissa mönster som brukar illustreras i form av standardproblem.
Kunna några standardproblem och hur man löser dom.

Nyckelord:

  • Process
  • Synkronisering
  • Kommunikation
  • Resurshantering
Förstå standardmekanismer för kommunikation mellan processer, t.ex. semaforer och monitorer.
 

Operativsystemet

Gränssnitt

Veta hur man kommunicerar med operativsystemet.
  • Systemanrop.
  • Användargränssnitt i form av kommandotolkar.
Förstå hur systemanrop går till i praktiken. Övergång mellan "user mode" och "kernel mode". Kontextbyte.

Processer

Veta hur processer representeras och hanteras i operativsystemet. Kunna några olika sätt att schemalägga processer. Skillnaden mellan trådar och processer (el. "tasks"). Processer som innehavare av resurser. Olika tillstånd för en process.

Nyckelord:

  • Program
  • Process
  • Exekvering
  • Trådar ("user level" och "kernel level")
  • Resurs
  • "Process control block"
  • "Running", "Ready", "Blocked"
 

Minneshantering

Veta hur operativsystemet hanterar primärminnet. Olika sätt att allokera minne. Olika sätt att hantera ledigt utrymme.  Skillnaden mellan logisk och fysisk adressrymd. Virtuellt minne. Minneshierarkin.
Känna till hur minneshanteringen stöds av hårdvaran i en verklig processor.

Övriga nyckelord:

  • Multiprogrammering
  • Segmentering
  • Sidhantering
  • "Swapping"
  • "Demand paging"
  • Cacheminne

In-/Utmatning

Känna till olika typer av yttre enheter:
  • Teckenbaserade enheter, t.ex. terminal
  • Blockbaserade, t.ex. skivminne
Att känna till hur kommunikation med hårdvara går till.
Nyckelord:
  • Drivrutiner
  • Avbrott
  • Direktminnesåtkomst, DMA

Sekundärminne

Veta hur ett skivminne är uppbyggt. Veta principerna för hur man schemalägger läs- och skrivoperationer. Kunna läsa och förstå datablad för kommersiella produkter.

Nyckelord:

  • Spår, sektor, yta, cylinder

Filsystem

Veta hur filer kan representeras och organiseras (filkataloger). Olika sätt att hantera ledigt utrymme. Känna till hur några verkliga filsystem är uppbyggda, t.ex. Unix.
Nyckelord:
  • Gränssnitt till filer
  • Filåtkomst
  • Filkataloger
  • Allokering av filer

Säkerhet

Veta något om vilka hot som finns mot datorsystem och vilka skyddsmekanismer som finns i operativsystem. Detta gäller även hot som kommer från andra användare eller andra processer i samma system.
Nyckelord:
  • Åtkomstmatris
  • Accesslista

Exempel på operativsystem: Unix, Windows NT

Veta tillräckligt mycket om ett par av de vanligaste operativsystemen för att kunna göra en bedömning av deras respektive för- och nackdelar.
 
TTIT61
Temamål
Temaplan
Schema
Examination
Referenslitteratur
Personal
Register for labs

Föreläsningarna
Programexempel
Forum
Labresultat

Schemaläggning
Kritiska sektioner
Processorstöd för operativsystem
Sekundärminne
UNIX, WinNT
Säkerhet

Intro: C/make
Intro: installation
Threads and synchronisation
System calls
Execution of user programs
File system

Lesson 1
Lesson 2
Lesson 3

C/C++ OH
C/C++ tutorial
C pointers tutorial
Pintos documentation
Memory Issues in Pintos
Pintos on-line documentation
The gnu DDD documentation
DDD tutorial
Debugging topics
Programing with threads

Guidelines for writine and changing source code
Pintos source code

Sidansvarig: Sergiu Rafiliu
Senast uppdaterad: 2011-09-12