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