16.01.2015 Views

CS2013-final-report

CS2013-final-report

CS2013-final-report

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

CS2200: Introduction to Systems and Networking, Georgia Institute of<br />

Technology<br />

Atlanta, GA<br />

Kishore Ramachandran<br />

rama@gatech.edu<br />

http://www.cc.gatech.edu/~rama/CS2200-External/<br />

Knowledge Areas that contain topics and learning outcomes covered in the course<br />

Knowledge Area<br />

Systems Fundamentals (SF) 42<br />

Total Hours of Coverage<br />

Where does the course fit in your curriculum<br />

This course is taken in the second semester of the sophomore year. The pre-requisite for this course is a good<br />

knowledge of C and logic design. It is required for all CS majors wishing to specialize in: operating systems,<br />

architecture, programming language and compilers, system security, and networking. It provides a thorough<br />

understanding of the hardware and the system software and the symbiotic inter-relationship between the two.<br />

Students may take advanced courses in operating systems, architecture, and networking following this course in<br />

the junior and senior years. The course is offered 3 times a year (Fall, Spring, Summer) and the enrolment is<br />

typically around 100 students.<br />

What is covered in the course<br />

The course represents a novel integrated approach to presenting side by side both the architecture and the<br />

operating system of modern computer systems, so that students learn how the two complement each other in<br />

making the computer what it is. The course consists of five modules, corresponding to the five major building<br />

blocks of any modern computer system: processor, memory, parallelism, storage, and networking. Both the<br />

hardware and system software issues are covered concomitantly in presenting the five units. Topics covered<br />

include<br />

• Processor design including instruction-set design, processor implementation (simple as well as pipelined<br />

with the attendant techniques for overcoming different kinds of hazards), processor performance (CPI,<br />

IPC, execution time, Amdahl’s law), dealing with program discontinuities (interrupts, traps, exceptions),<br />

and design of interrupt handlers<br />

• Processor scheduling algorithms including FCFS, SJF, priority, round robin, with Linux scheduler as a<br />

real world example<br />

• Memory system including principles of memory management in general (paging in particular) and the<br />

necessary hardware support (page tables, TLB), page replacement algorithms, working set concepts, the<br />

inter-relationship between memory management and processor scheduling, thrashing, and context<br />

switching overheads<br />

• Memory hierarchy including different organizations of processor caches, the path of memory access from<br />

the processor through the different levels of the memory hierarchy, interaction between virtual memory<br />

and processor caches, and page coloring<br />

• Parallel programming (using pthreads), basic synchronization (mutex locks, condition variables) and<br />

communication (shared memory), program invariants, OS support for parallel programming, hardware<br />

support for parallel programming, rudiments of multiprocessor TLB and cache consistency<br />

• Basics of I/O (programmed data transfer, DMA), interfacing peripherals to the computer, structure of<br />

device driver software<br />

• Storage subsystem focusing on hard disk (disk scheduling), file systems (naming, attributes, APIs, disk<br />

allocation algorithms), example file systems (FAT, ext2, NTFS)<br />

- 414 -

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!