| Credit Hours: | 4 |
| Course Coordinator: | Su-Hui Chiang |
| Course Description: | Further introduction to computer systems from a software perspective. Basic operating systems concepts and calls. Defining, measuring and improving program performance. The memory hierarchy: storage technologies, caches, virtual memory, memory allocation techniques. Prerequisite: CS 162, 200. |
| Prerequisites: | Computer organization and assembly language (CS 200)
Two quarters of introductory programming |
| Goals: | Introduce computer systems from a software perspective. Teach
C and assembly language programming and reading skills.
Teach basic systems programming skills and tools. Show how
to measure and improve program performance based on an
understanding of key aspects of machine architecture.
Upon the successful completion of this course students will be able to:
- Explain how and why machine exceptions occur and how they are handled
at machine level.
- Explain how system calls are invoked using traps on Linux/IA32 (or
similar) systems.
- Explain the idea of multiprocessing and context switching.
- Explain application-level signal handling.
- Explain the impact of pipelining and superscalar processing on program
performance.
- Explain the role of optimizing compilers.
- Describe one or more parallel architectures and how they can improve
program performance.
- Explain the idea of the memory hierarchy.
- Describe the important characteristics of various storage technologies,
including memory and disks.
- Explain the purpose and consequences of improving memory locality.
- Explain in detail how caches work, and simulate the behavior of a cache
given a sequence of memory references.
- Explain the basic idea of virtual memory and its uses.
- Explain the goals and implementation issues for dynamic memory allocation.
- Explain the idea of garbage collection.
- Write C programs that perform file I/O, and use system calls and signals,
in particular to perform process control.
- Measure program performance using O/S timing facilities.
- Use profiling to identify performance bottlenecks in C programs.
- Optimize C programs guided by analysis of the generated machine code.
- Optimize code to improve cache performance.
|
| Textbooks: | Computer Systems: A Programmer's Perspective, Bryant and O'Hallaron, Prentice
Hall, 2002.
The C Programming Language, 2nd ed., Kernighan and Ritchie, Prentice Hall, 1998. |
| References: | None. |
| Major Topics: | Exceptions and Interrupts
Processes and Process Control
File I/O and System Calls
Performance Measurement
Performance Improvement
Memory Hierarchy
Caches
Virtual Memory
Memory Allocation |
| Laboratory Exercises: | Programming system calls (2 weeks)
Measuring program performance (2 weeks)
Improving program performance (2 weeks)
Using cache simulator (2 weeks)
Program memory allocator (2 weeks) |