Exam topics
The questions on the final exam will be about the core concepts explored in the
following modules.
Seminar questions
If you passed all the seminars and remember what you learnt, you should be able
to pass the final exam with grade 3 without much extra effort.
- Use the seminar questions to prepare for the final exam.
- The quesiton on the final exam may not be limited to the questions from the
seminars, but most questions on the final exam will be related to similar
topics and similar in style.
Lecture slides
The majority of the questions on the final exam will be about topics and
concepts covered in the lecture slides.
- To pass the final exam with grade 3 you probably can focus your exam
preparations on the seminar questions and the lecture slides.
Self study slides
A few questions may also be about topics and concepts covered in the self study
slides.
- If you aim for grade 4 or 5 on the final exam, in addition to the lecture
slides and seminar quesitons, you should also inlcude the self study slides in
your exam preparations.
Programming assignments
A few questions may be related to the programing assignments and how these
assignments relate to the core concepts of the course.
- If you passed all the programming assignments and remember what you
learnt, you should be able to pass the final exam with grade 3 without much
extra effort.
Overview of core concepts
The majority of the questions on the exam will be about the core concepts listed
in the below sections. These lists may not be complete but should serve as an
indication what is considered the most important concepts in each module.
Module 1 - Fundamental concepts
- Basic computer architecture
- CPU
- ALU
- registers
- primary storage (RAM)
- secondary storage (hard drives, solid state disks)
- Input/Output (I/O)
- Program, executable and process
- CPU context
- Kernel
- Dual mode operation
- Synchronous and asynchronous events
- Exceptions and interrupts
- System calls
- Multiprogramming
- Multitasking
Module 2 - The process concept
- The process memory space (aka the process memory image)
- Process control block (PCB)
- Context switch
- Basic process management:
- fork()
- exit()
- exec()
- wait()
- Process states
- New
- Ready
- Running
- Terminated
- Waiting
- Zombie
- Signals
- File descriptors
- Pipes
Module 3 - CPU scheduling
- Different types of scheduling: scheduling criteria
- Short term
- Long term
- Medium term
- Dispatch
- Scheduling criteria
- CPU utilization
- Throughput
- Turnaround time
- Waiting time
- Response time
- Classification of processes
- CPU burts, I/O burst
- CPU bound vs I/O bound
- Interacive vs batch
- Real-time
- Scheduling dispatch
- Basic scheduling algorithms
- FCFS and the convoy effect
- SJF
- PSFJ
- RR
- Priority scheduling
- Preemption
- Starvation
- Ageing
- Multilevel queue scheduling
- Without feedback
- With feedback
- Linux and Solaris scheduling
Module 4 - Threads, synchronization and deadlock
Threads
- Parallelism vs concurrency
- Thread resource management
- Text
- Data
- Stack
- Heap
- CPU context
- Challenges when using threads
- Divining activities
- Balance
- Data splitting
- Data dependencies
- Testing and debugging
- Atomic and non-atomic operations
- Race conditions and data races
- Thread pools
- User level threads vs kernel level threads
Synchronization
- Critcal section
- Mutual exclusion (mutex)
- Progress
- Bounded waiting
- Starvation
- Petersson’s solution
- Spin locks
- Test-And-Set
- Swap
- Busy waiting
- Semaphores
- Mutex locks
- Synchronization problems
- Critical section and mutual exclusion
- Rendezvous
- Bounded buffer
- Readers and writers
- Priority inversion and priority inheritance
Deadlock
- Conditions for deadlock
- Mutual exclusion
- Hold and wait
- No preemption
- Circular wait
- Dinging philosophers
- Resource allocation graph (RAG)
- Deadlock prevention
- Deadlock avoidance
- Safe state
- Resource allocatio graph (RAG)
- Banker’s algorithm
- Deadlock detection
- Wait for graph
- Banker’s algorithm
Module 5 - Memory management, files and file systems
Memory management
- Process control block (PCB)
- Process memory space (aka process memory image)
- Single contiguous allocation
- Partitioned allocation
- Dynamic storage allocation
- Holes
- First-fit, best-fit, worst-fit
- Internal fragmentation
- External fragmentation
- Logical and physical address spaces
- Memory managment unit (MMU)
- Compaction
- Address binding
- Paging
- Page table
- Translation lookaside buffer (TLB)
- Virtual memory
- Memory resident
- Swapping
Files and file systems
- Persistent data storage
- Files and directories
- Block data storage
- Sequential access
- Direct access and random access
- Disk allocation
- Contigous
- Linked
- FAT
- Indexed
- Multilevel index
- File control block (FCB)
- In memory file system structures
- File descriptor table
- System-wide open file table
- Per-process open file table
- Hard and soft links