IT-Universitetet i København
 
  Tilbage Kursusoversigt
Kursusbeskrivelse
Kursusnavn (dansk):Operativsystemer og C 
Kursusnavn (engelsk):Operating Systems and C 
Semester:Efterår 2009 
Udbydes under:Bachelor i softwareudvikling (bswu) 
Omfang i ECTS:7,50 
Kursussprog:Dansk 
Kursushjemmeside:https://learnit.itu.dk 
Min. antal deltagere:25 
Forventet antal deltagere:30 
Maks. antal deltagere:40 
Formelle forudsætninger:  
Læringsmål:After the course the student should be able to:

• develop and modify minor programs written in C, and have tried low level operations such as pointers, structs, bit manipulation, and the operating system calls malloc and free. This is exercised by implementing a stack-based abstract machine with memory management and garbage collection, in collaboration with a parallel course.
• use the operating systems facilities (structure of the file system, journaling file systems, program packages, scripting language, and others) to solve problems that otherwise would be solved by programming.
• estimate resource use (time and space) of different ways of storing and accessing data in files, networks etc.
• estimate resource use (time, space) based on knowledge about modern hardware (cpu architecture, stack, multicore).
• check the resource usage (time, space) and estimate the resource usage based on exact understanding of hardware, programming language, OS platform, and memory management strategies (garbage collection).
• estimate both advantages (predictable resource usage during execution) and risks (errors not discovered by the compiler, buffer overruns, security holes etc) when using machine-oriented languages such as C compared to higher-level languages such as Java, C#, F# and other managed languages.
• estimate security in relation to technical alternatives (operating systems, firewalls, programming languages …).
• estimate security in relation to organisational choices (security policies, security strategies, “social engineering” ….)
 
Fagligt indhold:The course will give the student a good understanding how a user programs interact with the operating system, and how operating systems are structured. This interaction is normally hidden, especially in a language such as Java, where the execution of the Java program and its interaction with the operating system are controlled by the Java Virtual Machine. To understand the operating system a basic knowledge of the underlying hardware architecture is necessary. Both have relevance for understanding security mechanisms.

C programming.
The C programming language was originally designed to replace even lower level machine-oriented languages, such as symbolic assembler, especially when implementing operating systems, such as Unix. C is a somewhat higher level language but still gives the programmer relatively detailed control of the central processing unit, and the ability to manipulate main memory in detail without restrictions.

The Operating System.
In this course we study the Linux operating system, a variant of Unix, because its source code and documentation are freely available. The course will focus on the basic functionality of the operating system, especially as seen from a software developer’s viewpoint.
Process Management: Creation and destruction of processes, process synchronization and communication and the control information needed to manage a process. The process life cycle is presented, as well as the data that the operating system collects about running processes, such as memory and processor usage.
Memory management: Basic memory administration such as paging and segmentation. Process memory layout and the programmer’s ability to acquire and release memory.
File and I/O management: The logical and physical file management and the access to data in the files (I/O). Different kind of file systems. File protection and access rights.
All of these operating system functions will be examined through exercises in C.
Moreover, we show that many smaller tasks can be solved without programming by combining existing Unix utility programs through the command shell. This will be covered through small exercises.

Architecture.
In the course the processor architecture is presented as well as the main hardware components. The processor is presented by looking at the instruction set and the execution time of the different kind of machine instructions. The protection mechanisms are presented, the privileged instruction set, the interrupt and trap, user mode and monitor mode and the operating systems ability to context switching. Hardware components and their functions: direct memory access (DMA), interrupt controller, the cache memory, and the I/O-controllers (adapters).

Security.
Security aspects are addressed throughout the course – at the operating system level, the architecture, and in the selected programming language. Security holes such as buffer overruns, denial of service attacks, and spoofing are demonstrated. Also organizational security policies and strategies are discussed. The role of firewalls in the security environment is presented. 
Læringsaktiviteter:12 forelæsninger og 12 øvelsesgange

Kurset holdes på dansk, men litteraturen er fortrinsvis på engelsk.
----
Dette kursus indgår på femte semster på bacheloruddannelsen i software.
Se studieforløbet beskrevet her:
Bachelor softwareudvikling  

Eksamensform og -beskrivelse:X. experimental examination form (7-scale; external exam), 7-trins-skala, Ekstern censur

 

Litteratur udover forskningsartikler:Kompendium dækkende brug af Linux set fra softwareudviklersynspunkt, simpel shell skripting I Linux, operativsystemers opbygning med fokus på Unix, C programmering herunder structs, pointere og bitmanipulation, maskinarkitektur, sikkerhed. 
 
Afholdelse (tid og sted)
Kurset afholdes på følgende tid og sted:
UgedagTidspunktForelæsning/ØvelserStedLokale
Tirsdag 09.00-12.00 Forelæsning ITU 4A16
Tirsdag 13.00-16.00 Øvelser ITU 4A16

Eksamen afholdes på følgende tid og sted:
EksamensdatoTidspunktEksamenstypeStedLokale
2010-01-11 Kontakt kursusansvarlig Mundtlig eksamen ITU 3A14
2010-01-12 Kontakt kursusansvarlig Mundtlig eksamen ITU 3A14