CR: Stack I Topics Outline: Difference between revisions
Line 1: | Line 1: | ||
==Weekly Topics== | ==Weekly Topics== | ||
* History of computer architecture: basic programming models | |||
** CPU-Memory-I/O model (stored programs) | ** CPU-Memory-I/O model (stored programs) | ||
** overlays, multiprogramming, time sharing | ** overlays, multiprogramming, time sharing | ||
** supervisor versus user mode | |||
* Processes & Threads (2 weeks) | |||
** Address spaces, schedulers | |||
** pointers, memory layout | |||
* Concurrency (2 weeks) | |||
** spinlocks, semaphores, monitors | |||
** producer/consumer | |||
** deadlock | |||
* I/O and File Systems (2 weeks) | |||
** I/O performance, latency vs. bandwidth | |||
** VFS (pointers to functions) | |||
** block storage | |||
** filesystem layout, journaling | |||
** flash storage | |||
* Virtual Memory (2 weeks) | |||
** page tables, MMU, TLB | |||
** page table entries, memory protection | |||
** page replacement algorithms (Optimal, LRU, Clock) | |||
** memory hierarchy | |||
==Assignments== | ==Assignments== |
Revision as of 02:57, 2 February 2011
Weekly Topics
- History of computer architecture: basic programming models
- CPU-Memory-I/O model (stored programs)
- overlays, multiprogramming, time sharing
- supervisor versus user mode
- Processes & Threads (2 weeks)
- Address spaces, schedulers
- pointers, memory layout
- Concurrency (2 weeks)
- spinlocks, semaphores, monitors
- producer/consumer
- deadlock
- I/O and File Systems (2 weeks)
- I/O performance, latency vs. bandwidth
- VFS (pointers to functions)
- block storage
- filesystem layout, journaling
- flash storage
- Virtual Memory (2 weeks)
- page tables, MMU, TLB
- page table entries, memory protection
- page replacement algorithms (Optimal, LRU, Clock)
- memory hierarchy
Assignments
Assignments would all be divided into two parts:
- Part A must be attempted in lab and checked by a TA or instructor. Slow students can continue to work during office hours which should run after lab; however, part A is not explicitly graded in lab, more it is used to make sure students don't get stumped early. This part should be doable by good students in 10-15 minutes.
- Part B has more extensive exercises but still should be doable by good students in an hour or so.
Part A and B are turned in within one week. There should also be optional exercises that are not graded, but that could occupy good students for multiple hours.
Note that all assignments should include skeleton code for Part A that runs out of the box and requires only minor modifications. (Students thus get the confidence of playing with working code.) Part B exercises will require students to make more extensive modifications and/or write code from scratch.
Potential assignments:
- command line basics: standard in/out, command line pipes, standard commands, job control
- basic strings and pointers (printf, scanf), pointer/array equivalence, gdb
- Command line arguments, pointer arithmetic, C preprocessor
- running programs with execve, PATH, environment variables, basic malloc
- dynamic buffers for file I/O, memory mapped I/O
- fork, clone, shared memory, basic locking
- sockets, netcat (TCP mainly, UDP optional)
- libraries, linking, C->assembly, function calling conventions, ltrace, strace