210 likes | 230 Views
CS 3214 Computer Systems. Godmar Back. Course Introduction. About Me. Undergraduate Work at Humboldt and Technical University Berlin PhD University of Utah Postdoctoral Work at Stanford University 11 th Year at Virginia Tech joined August 2004,
E N D
CS 3214Computer Systems Godmar Back Course Introduction
About Me • Undergraduate Work at Humboldt and Technical University Berlin • PhD University of Utah • Postdoctoral Work at Stanford University • 11th Year at Virginia Tech • joined August 2004, • Tenured Associate Professor since June 2010 • Designed this class; 5th time teaching it • Research Interests: • Systems, including Virtual Machines, Cloud Computing, Web Technology CS 3214 Fall 2014
Administrivia CS 3214 Fall 2014
Course Facts • Meet Monday & Wednesday • Section 1: WLH 320: 4:00pm-5:15pm • Check website regularly • http://courses.cs.vt.edu/~cs3214 • Use CS Forum http://www.piazza.com • Send email to cs3214-staff@cs.vt.edu • All students enrolled in CS3214 have access to McB 124 (Systems Lab) CS 3214 Fall 2014
Force/Add • If you are not enrolled, do this now: • Have students log into https://www.cs.vt.edu/F14Force-AddsThe password for your 3214 section is 3214gvb# CS 3214 Fall 2014
Reading Material • Required Textbook • Bryant and O’Hallaron(2nd Edition), 2011 • Will post reading assignments CS 3214 Fall 2014
Class Format • Lectures • Exams • 1 Midterm • 1 Final (Comprehensive) Exams are only offered at the announced time. Missed exams result in zero score. • Programming Projects • Exercises • Please read the syllabus for late policy CS 3214 Fall 2014
Grading • Tentative breakdown (subject to change): • 12.5% Midterm • 22.5% Final • 42.5% Projects (1 & 4 will weigh more heavily than 2 & 3) • 22.5% Exercises • Not grading on standard scale; grade will be based on a curve of students attempting this course: • Median typically between B and C • Grading on a curve means every assignment is important, doing “just enough” is a strategy bound to result in a low grade • Calibrated not just by students in this cohort, but also past offerings • Additional stipulations can cap your grade • Define minimum requirements that must be met for each project • Not meeting requirements for 1, 2, 3, or 4 projects lowers your maximum grade to B+, C+, D+, F respectively • You may still fail CS 3214 Fall 2014
Group Projects • Projects are group projects • Projects 1 and 4 MUST be done by a group • Projects 2 and 3 MAY be done by a group • Working in a group more closely resembles what you do outside of academia • Can design together, code together • Group members must contribute equally • 2 students per group • Can change group, but only between projects • May partner across class sections • Exercises are done individually CS 3214 Fall 2014
Forum Rules (aka Lex skottie) • Not allowed: • Posting of any code that is part of your solution to the forum (*) • Posting the answers to design document or exercise questions • Posting detailed descriptions of your group’s design • Uncivil behavior • (*) Exception: “1-line-rule” • Can post 1 line iff it causes a compile-time error • You are encouraged to post: • Backtraces, debugging output, debugger messages • Illustrating example for a technique • Questions & explanations relating to concept • Questions & answers relating to projects in general • Pointers to external resources you have found CS 3214 Fall 2014
Honor Code • Will be strictly enforced in this class • Will not give warning or engage in discussions before filing honor code cases where I believe they are warranted • Do not cheat • Observe collaboration policy outlined in syllabus • Will use MOSS for software cheating detection • Do not borrow code from other offerings • Follow collaboration policy • Read all policies posted on the website • “I was not aware…” is no excuse • If in doubt, ask! • Cheating = Copying From Someone Else + Misrepresenting Work As Your Own CS 3214 Fall 2014
Acknowledgements • To avoid plagiarism, document (“acknowledge”) your sources • Will draw in lectures from • Textbook • And other texts, in particular Silberschatz et al’s book (“Dinosaur book”); Stalling’s book and Tannenbaum’s Modern Operating Systems • Course material created for other courses • And other sources as appropriate CS 3214 Fall 2014
Prerequisites • Knowledge of computer organization (CS 2506) • Knowledge of algorithms & data structures (CS 2114) • Generally follow the department’s guidelines CS 3214 Fall 2014
Role of this Course • Dual role: • Core requirement • What should every student know about systems? • Preparation for senior-level OS/networking course in Spring • Capstone course for students choosing the Systems & Networking track: design an OS • Perspective taken is that of a programmer using a system, not of a designer building one CS 3214 Fall 2014
Typical System Architecture #include <stdio.h> int main() { printf("Hello World\n"); } #include <stdio.h> int main() { printf("Hello World\n"); } Virtual Machine User Program #include <stdio.h> int main() { printf("Hello World\n"); } #include <stdio.h> int main() { printf("Hello World\n"); } #include <stdio.h> int main() { printf("Hello World\n"); } JIT Garbage Collector Runtime Libraries #include <stdio.h> int main() { printf("Hello World\n"); } Threads user mode Processes Other Libraries (libpthreads, libm, libz, etc. etc. System Call kernel mode Kernel C Library (libc) Hardware: (CPUs/Cores, Memory, Disk, Network, etc.) CS 3214 Fall 2014
Outcomes • Be productive in using an OS – focus on Unix here • Understand execution and optimization • Understand overall architecture and concepts • Understand interaction between apps and OS • Understand concepts underlying threading, scheduling, virtual memory, networking, and virtualization CS 3214 Fall 2014
Topic 0: Unix • Throughout: we will be using Linux • You are expected to already bring, or quickly pick up, the necessary skills • Will not set class time aside for this, but am happy to discuss questions on the forum CS 3214 Fall 2014
Topic 1: Processes • Learn the underlying abstractions of processes and multi-process applications • Gain experience with Unix system calls related to processes • Subtopics: • Process creation and management • Signals and signal handling • Interprocess communication • Project 1 • Write your own shell CS 3214 Fall 2014
Topic 2: Threads • Understand trends in computer architecture and its implications for application design • Explore concurrency and race conditions • Learn commonly used synchronization techniques in C (and Java) • Learn how to manage concurrency • Understand deadlock: causes and preventions • Project 2 • Managing a pool of threads • Future synchronization CS 3214 Fall 2014
Topic 3: Memory • Understanding the construction and management of a process’s memory image • The linking and loading processes • User-level memory management • Explicit vs. automated • User-level APIs for shared memory • Concepts underlying virtual memory and caching • Understand programmer impact • Memory tools • Project 3 • User-level malloc() CS 3214 Fall 2014
Topic 4: Internet • Understand basics of Internet addressing and communication • Understand use of socket API and underlying abstractions, • Understand protocol layering and basic protocol design with a focus on HTTP • Understand how to write multi-threaded and event-based server programs • Fundamentals of Virtual Machine Monitors • Exercise 5 • Set up your own hosted VM in Amazon cloud (AWS) • Project 4 • A multi-threaded HTTP server CS 3214 Fall 2014