390 likes | 470 Views
Introduction to Computer Systems. CS-213. Topics: Staff, text, and policies Lecture topics and assignments Class overview. Aleksandar Kuzmanovic 3/27/2006. CS 213 S ’06. Teaching staff. Instructor Prof. Aleksandar Kuzmanovic (Wed 10:00-12:00, Tech L457) TA
E N D
Introduction to Computer Systems CS-213 • Topics: • Staff, text, and policies • Lecture topics and assignments • Class overview Aleksandar Kuzmanovic 3/27/2006 CS 213 S ’06
Teaching staff • Instructor • Prof. Aleksandar Kuzmanovic (Wed 10:00-12:00, Tech L457) • TA • David Choffnes (Tu, Th 1-2:30, Ford 2-217) • Recitation (Tu, 5-6:30, Tech MG28) • Undergraduate assistant • TBA (TBA) • Location and Time • Lecture: MW 2-3:20, Tech LR3 • Recitation: Tu, 5-6:30, Tech MG28
Prerequests • CS211 (Fund. of comp. program.) or eq. Required • Experience with C or C++ Required • CS311 (Data structures and mgmt) Useful • CS213 is required CS course • It is prerequisite for CS 343 (Operating Systems) • It is also prerequisite for ALL systems courses • See http://nsrg.cs.northwestern.edu for a current list
Textbooks • Required: • Randal E. Bryant and David R. O’Hallaron, • “Computer Systems: A Programmer’s Perspective”, Prentice Hall 2003. • csapp.cs.cmu.edu • Recommended: • Brian Kernighan and Dennis Ritchie, • “The C Programming Language, Second Edition”, Prentice Hall, 1988 • Richard Stevens, • “Advanced Programming in the Unix Environment”, Addison-Wesley, 1992
Homeworks, Labs, and Exams • 4 labs, 4 homeworks, 2 exams • Grading • 10% Homeworks (2.5% per homework) • 50% Programming labs (12.5% per lab) • 20% Midterm (covers first half of the course) • 20% Final (covers second half of the course) • Final grades: >90 (or 90th percentile): A • >80 (or 80th percentile): B, • >70 (or 70th percentile): C, etc. • Late Policy • After 1 day, maximum score is 90% • After 2 days, maximum score is 80%, etc.
Policies: Assignments • Work groups • You must work in groups of 2 for all labs • Let me and the TA know the groups by the end of the week • Handins • Assignments due at 11:59pm on specified due date. • Electronic handins only.
Course Components • Lectures • Higher level concepts • Recitations • Applied concepts, important tools and skills for labs, clarification of lectures, exam coverage • Labs • The heart of the course • 1 or 2 weeks • Provide in-depth understanding of an aspect of systems • Programming and measurement
Getting Help • Web • http://cs.northwestern.edu/~akuzma/classes/CS213-s06/ • Copies of lectures, assignments, handouts • Clarifications to assignments • Newsgroups • cs.213.announce and • cs.213.discuss • Clarifications to assignments, general discussion • Can’t reply immediately! • Personal help • Professor, Wednesdays 10-noon • TA: Tu, Th 1-2:30
Cheating • What is cheating? • Sharing code: either by copying, retyping, looking at, or supplying a copy of a file. • What is NOT cheating? • Helping others use systems or tools. • Helping others with high-level design issues. • Helping others debug their code. • Penalty for cheating: • Removal from course with failing grade.
Facilities • TLAB (Tech F-252: the Tech end of the bridge that connects Tech and Ford) • - a cluster of Linux machines • - (e.g., TLAB-11.cs.northwestern.edu) • You should all have TLAB accounts by now; • -if not, contact Scott Hoover (scott@cs.northwestern.edu) • For accessing the TLAB facilities • - contact Carol Surma (carol@rhodes.ece.northwestern.edu) • Should you have other problems • - contact the TA directly
Programs and Data (8) • Topics • Bits operations, arithmetic, assembly language programs, representation of C control and data structures • Includes aspects of architecture and compilers • Assignments • L1: Manipulating bits • L2: Defusing a binary bomb • L3: Hacking a buffer bomb
The Memory Hierarchy (2) • Topics • Memory technology, memory hierarchy, caches, disks, locality • Includes aspects of architecture and OS.
Linking and Exceptional Control Flow (3) • Topics • Object files, static and dynamic linking, libraries, loading • Hardware exceptions, processes, process control, Unix signals, nonlocal jumps • Includes aspects of compilers, OS, and architecture
Virtual memory (2) • Topics • Virtual memory, address translation, dynamic storage allocation • Includes aspects of architecture and OS • Assignments • L4: Writing your own malloc package
I/O, Networking, and Concurrency (3) • Topics • High level and low-level I/O, network programming, Internet services, Web servers • concurrency, concurrent server design, threads, I/O multiplexing with select. • Includes aspects of networking, OS, and architecture.
Lab Rationale • Doing a lab should result in new skills and concepts • Data Lab: computer arithmetic, digital logic. • Bomb Labs: assembly language, using a debugger, understanding the stack • Malloc Lab: understanding pointers and nasty memory bugs.
Course Theme • Abstraction is good, but don’t forget reality! • Courses to date emphasize abstraction • Abstract data types • Asymptotic analysis • These abstractions have limits • Especially in the presence of bugs • Need to understand underlying implementations • Useful outcomes • Become more effective programmers • Able to find and eliminate bugs efficiently • Able to tune program performance • Prepare for later “systems” classes in CS & ECE • Compilers, Operating Systems, Networks, Computer Architecture, Embedded Systems
Coarse Goal • Must understand system to optimize performance • How programs compiled and executed • How to measure program performance and identify bottlenecks • How to improve performance without destroying code modularity and generality • Implementations change, but concepts don’t
Course Perspective • Most Systems Courses are Builder-Centric • Computer Architecture • Design a processor • Operating Systems • Implement large portions of operating system • Compilers • Write compiler for simple language • Networking • Implement and simulate network protocols
Course Perspective (Cont.) • This Course is Programmer-Centric • Purpose is to show how by knowing more about the underlying system, one can be more effective as a programmer • Enable you to • Write programs that are more reliable and efficient • Incorporate features that require hooks into OS • E.g., concurrency, signal handlers • Cover material in this course that you won’t see elsewhere
Hello World • In a sense, the goal of the course is to help you understand what happens and why when you run “hello” on your system? • Goal: introduce key concepts, terminology, and components /*hello world*/ # include <stdio.h> int main() { printf(“hello, world\n”); }
Information is Bits + Context • “Hello” is a source code • Sequence of bits (0 or 1) • 8-bit data chunks are called Bytes • Each Byte has an integer value that corresponds to some character (ASCII standard) • E.g., ‘#’ -> 35 • Files that consist of ASCII characters -> text files • All other files -> binary files (e.g., 35 is a part of a machine command) • Context is important • The same sequence of bytes might represent a character string or machine instruction • Machines put everything in bits! • Chapter 2 -> machine representations of numbers
Programs Translated by Other Programs unix> gcc –o hello hello.c • Phases: • Pre-processing • E.g., #include <stdio.h> is inserted into hello.i • Compilation • hello.s -> each statement is an assembly language program • Assembly • hello.o -> is a binary file whose bytes encode machine language instructions • Linking • E.g., hello.c uses printf(), it resides in a separate precompiled object file printf.o printf.o Pre- processor (cpp) Compiler (cc1) Assembler (as) Linker (ld) hello.c hello.i hello.s hello.o hello Source program (text) Assembly program (text) Modified source program (text) Relocatable object programs (binary) Executable object program (binary)
Why do We Care about This? • Optimizing program performance • To write efficient code -> we do need a basic understanding of how a compiler translates different C statements into assembly language • How to tune C programs to help compiler • Understanding link-time errors • Why does it matter what order we list libraries? • Why some link-errors do not appear before run time? • Avoiding security holes • Buffer overflow bugs
Shell unix> ./hello hello, world unix> • Shell • a command-line interpreter that • - prints a prompt • - waits for you to type command line • - loads and runs hello program • - prints a prompt
Hardware organization CPU • Buses • Transfer fixed-sized chunks of data (WORDS) • Intel Pentium -> 4Bytes bus Register file ALU PC System bus Memory bus Main memory Bus interface I/O bridge I/O bus Expansion slots for other devices such as network adapters USB controller Graphics adapter Disk controller Mouse Keyboard Display Disk hello executable stored on disk
Hardware organization CPU • I/O Devices • System connections to external world • Mouse, keyboard (input) • Display, disk device (output) Register file ALU PC System bus Memory bus Main memory Bus interface I/O bridge I/O bus Expansion slots for other devices such as network adapters USB controller Graphics adapter Disk controller Mouse Keyboard Display Disk hello executable stored on disk
Hardware organization CPU • Main Memory • Temporary storage device • Holds both a program and the data it manipulates with Register file ALU PC System bus Memory bus Main memory Bus interface I/O bridge I/O bus Expansion slots for other devices such as network adapters USB controller Graphics adapter Disk controller Mouse Keyboard Display Disk hello executable stored on disk
Hardware organization CPU • Control Processor Unit (CPU) • Executes instructions stored in main memory • Program Counter (PC or Register) contains the address of some machine-language instruction from memory Register file ALU PC System bus Memory bus Main memory Bus interface I/O bridge • CPU • Reads the instruction from memory • Performs simple operation (load, store, update) • Updates the PC to point to next instruction
Running the Hello Program • Reading the hello command from the keyboard Register file ALU PC System bus Memory bus Main memory "hello" Bus interface I/O bridge I/O bus Expansion slots for other devices such as network adapters USB controller Graphics adapter Disk controller Mouse Keyboard Display Disk User types "hello"
Running the Hello Program • Shell program loads hello.exe into main memory Register file ALU PC System bus Memory bus Main memory "hello,world\n" Bus interface I/O bridge hello code I/O bus Expansion slots for other devices such as network adapters USB controller Graphics adapter Disk controller Mouse Keyboard Display Disk hello executable stored on disk
Running the Hello Program • The processor executes instructions and displays “hello…” Register file ALU PC System bus Memory bus Main memory "hello,world\n" Bus interface I/O bridge hello code I/O bus Expansion slots for other devices such as network adapters USB controller Graphics adapter Disk controller Mouse Keyboard Display Disk hello executable stored on disk "hello,world\n"
Caching • A system spends a lot of time moving information from one place to another • Larger storage devices are slower than smaller ones • Register file ~ 100 Bytes • Main memory ~ millions of Bytes • It is easier and cheaper to make processors run faster than it is to make main memory run faster (SRAM – Static RAM) CPU chip Register file L1 cache (SRAM) ALU Cache bus System bus Memory bus Main memory (DRAM) L2 cache (SRAM) Bus interface Memory bridge
L1 cache holds cache lines retrieved from the L2 cache. L2 cache holds cache lines retrieved from memory. Main memory holds disk blocks retrieved from local disks. Local disks hold files retrieved from disks on remote network servers. Storage Devices Form a Hierarchy • Storage at one level serves as cache at the next level L0: Smaller, faster, and costlier (per byte) storage devices Registers CPU registers hold words retrieved from cache memory. On-chip L1 cache (SRAM) L1: Off-chip L2 cache (SRAM) L2: Main memory (DRAM) L3: Larger, slower, and cheaper (per byte) storage devices Local secondary storage (local disks) L4: Remote secondary storage (distributed file systems, Web servers) L5:
Operating System (OS) • OS – a layer of software interposed between the application program and the hardware • Two primary purposes • To protect the hardware from misuse by applications • To provide simple and uniform mechanisms for manipulating low-level hardware devices Application programs Software Operating system Processor Main memory I/O devices Hardware
OS Abstractions • Files are abstractions of I/O devices • Virtual Memory is an abstraction for the main memory and I/O devices • Processes are abstractions for the processor, main memory, and I/O devices Processes Virtual memory Files Processor Main memory I/O devices
Processes • The OS provides the illusion that the program is the only one in the system • Process • OS’s abstraction of a running program • Context switching • Saving the context of one process • Restoring the process of the new process shell process hello process Time Application code Context switch OS code Application code Context switch OS code Application code
Virtual Memory Memory invisible to user code 0xffffffff • Illusion that each process has exclusive use of main memory • Example • The virtual address space for Linux Kernel virtual memory 0xc0000000 User stack (created at runtime) Memory mapped region for shared libraries printf() function 0x40000000 Run-time heap (created at runtime by malloc) Read/write data Loaded from the hello executable file Read-only code and data 0x08048000 Unused 0
Networking • Computers do more than execute programs • They need to get data in and out • I/O system critical to program reliability and performance • They communicate with each other over networks • Because of the Internet, copying info from 1 machine to another has become important