CS 3650: Review for Midterm
The following provides a summary on some of the topics that we studied during
the semester. You are still responsible for all of the pre-midterm readings
listed on the syllabus -- not just what is listed here.
- Assembly (Ch 2.1 - 2.8, Appendix A.6, A.9, A.10 and green card)
- Calling conventions.
- Instruction formats: register and memory access.
- looping and branching constructs.
- Call frames (ability to write a simple function that involves setup and
teardown of call frames).
- Memory accessing (ability to translate a simple C program involving
pointers).
- CPU layout and vaious control lines.
- "C" and Pointers
- Arrays: declaration, initialization, access.
- Pointers: declaration, initialization, access.
- Accessing arrays using pointers; address calculation for array members.
- C Strings: various operations like strlen() and strncpy().
- Memory management using malloc and free.
- System Calls and Shell (man pages; ostep.org: Ch. 4-5)
- Process management: fork, exec, wait, etc.
- File I/O: open/close/read/write and fopen/fclose/fread/fwrite, etc.
- File descriptor handling: open, close, and dup.
- Signals: sending signals, signal handlers, etc.
- Cache (Ch. 5.3-5.4)
- Size vs. speed
- Locality of reference: temporal, spatial, cpu-affinity.
- Types: direct mapped, set-associative, and fully associative.
- Cache hit and miss calculation: cache lines size, tag and index
calculation, etc.
- Replacement algorithms: FIFO, LRU, MRU, random, etc.
- Cache updates: write back vs. write through.
- Virtual Memory (ostep.org: Ch. 15,18,19,21)
- Address space: virtual and physical; programmer's model.
- Virtualization and paging: MMU, TLB, virtual and physical pages, page
tables, etc.
- Swapping and page replacement.
- Various bits in a Page Table Entry (PTE): dirty, swapped, access rights,
valid, etc.