cs 3214 computer systems

24
CS 3214 Computer Systems Godmar Back Lecture 1

Upload: pierce

Post on 16-Mar-2016

49 views

Category:

Documents


2 download

DESCRIPTION

CS 3214 Computer Systems. Godmar Back. Lecture 1. About Me. Undergraduate Work at Humboldt and Technical University Berlin PhD University of Utah Postdoctoral Work at Stanford University 7 th Year at Virginia Tech joined August 2004, Tenured Associate Professor since June 2010 - PowerPoint PPT Presentation

TRANSCRIPT

CS 3214Computer Systems

Godmar Back

Lecture 1

CS 3214 Fall 2010

About Me• Undergraduate Work at Humboldt and Technical

University Berlin• PhD University of Utah• Postdoctoral Work at Stanford University• 7th Year at Virginia Tech

– joined August 2004, – Tenured Associate Professor since June 2010– 3rd time teaching this class

• Research Interests:– Systems

ADMINISTRIVIA

CS 3214 Fall 2010

CS 3214 Fall 2010

Course Facts• Meet Tuesday & Thursday 11:00am-12:15pm (GBJ 102) • Check website regularly

– http://courses.cs.vt.edu/~cs3214 • Use CS Forum http://forum.cs.vt.edu/• Send email to

[email protected]• TAs:

– Scott Schneider– Puranjoy Bhattacharjee (50%)– Xiaomo Liu (50%)– Patrick Boyd (UTA)

• All students enrolled in CS3214 have access to McB 124 (Systems Lab)

CS 3214 Fall 2010

Email Etiquette

• Please enter your name in webmail so it appears in From: line

• Be coherent when you email

CS 3214 Fall 2010

Reading Material

• Required Textbook– Bryant and O’Hallaron

(2nd Edition), 2011– Will post reading

assignments

CS 3214 Fall 2010

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 2010

Grading• Tentative breakdown (subject to change):

– 12.5% Midterm– 22.5% Final– 42.5% Projects– 22.5% Exercises

• Not grading on standard scale; grade will be based on a curve of students attempting this course:– Median will divide B- and B– 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 to pass the class

(aka “Auto-Fail Rules”)– Minimum Requirements must be met for each project– Necessary, not sufficient conditions

CS 3214 Fall 2010

Group Projects• Projects are group projects• 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• Exercises are done individually

CS 3214 Fall 2010

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

• If in doubt, ask before posting!

CS 3214 Fall 2010

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 2010

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 2010

Prerequisites• Knowledge of computer organization (CS 2506)• Knowledge of algorithms & data structures (CS

2114)

• Please submit prerequisite form

• Some knowledge of C

CS 3214 Fall 2010

Talking about C…#define offsetof(TYPE, MEMBER) \

((size_t) &((TYPE *) 0)->MEMBER)struct point { int x; int y; int z; char c; float o;};Q.: What is offsetof(struct point, y)? offsetof(struct point, o)?

0: x (4 byte int)

8: z (4 byte int)12: c (1 byte char)

4: y (4 byte int)

16: o (4 byte float)13: 3 byte padding

CS 3214 Fall 2010

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

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 2010

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• Exercise 1 may help

CS 3214 Fall 2010

Topic 1: Programs and Data• Understand how programs are built, how they

execute– Role of the compiler, assembler, and linker

• Learn to read and understand x86 code• Learn how to use a debugger• Understand security implications• Assume knowledge of bytes & bits as provided in

CS250X• Projects:

– “Binary Bomb”– “Buffer Bomb”

CS 3214 Fall 2010

Topic 2: Performance

• Learn– how to optimize code– how not to optimize code– how to measure performance– the impact of memory hierarchies

CS 3214 Fall 2010

Topic 3: Processes and Threads

• Learn the underlying abstractions• Learn how to use them• Subtopics:

– System calls and exceptions– Thread and process APIs– Interprocess Communication

• Project:– Write your own shell

CS 3214 Fall 2010

Topic 4: Concurrency & Synchronization

• Learn about race conditions• Learn commonly used synchronization

techniques in C and Java• Learn how to manage concurrency• Understand deadlock and how to prevent

it

CS 3214 Fall 2010

Topic 5: Memory• Understand user-level memory management

– Explicit vs. automated– User-level APIs for shared memory

• Understand concepts underlying Virtual Memory

• Understand impact on programmer– Memory tools

• Project:– User-level malloc()

CS 3214 Fall 2010

Topic 6: I/O and Networking

• Understand I/O facilities and layers• Understand use of socket API and

underlying abstractions, and basic protocol design with a focus on HTTP

• Understand how to write multi-threaded and event-based programs

• Project:– A multi-threaded HTTP server

CS 3214 Fall 2010

Topic 7: Virtualization

• Understand underlying concepts• Understand resource management

• Exercise:– Set up your own hosted VM in Amazon cloud

(AWS)

CS 3214 Fall 2010