Course Overview
Download
Report
Transcript Course Overview
CS-213
Introduction to Computer
Systems
Yan Chen
Topics:
Staff, text, and policies
Lecture topics and
assignments
Lab rationale
CS 213 F ’06
Teaching staff
Instructor
Prof. Yan Chen (Thu 2-4pm, Tech L459)
TA
TBD
Undergraduate assistant
Responsible for grading the homework and projects
Location and Time
Lecture: 2-3:20pm, Tech M164
–2–
CS-213, F’06
Prerequests
CS211 or equivalent
Required
Experience with C or C++ Required
CS311
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
–3–
CS-213, F’06
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,
–4–
“Advanced Programming in the Unix Environment”,
Addison-Wesley, 1992
CS-213, F’06
Homeworks, Labs, and Exams
3 labs, remove the malloc lab due to lack of TA
3 ~ 4 homeworks, 2 exams
Grading
10% Homeworks
10% Class attendance and discussion
30% Programming labs (10% per lab)
25% Midterm (covers first half of the course)
25% Final (covers second half of the course)
Late Policy
After 1 day, maximum score is 90%
After 2 days, meximum score is 80%, etc.
–5–
CS-213, F’06
Policies: Assignments
Work groups
You must work in groups of 2 for all labs
Handins
Assignments due at 11:59pm on specified due
date.
Electronic handins only.
–6–
CS-213, F’06
Course Components
Lectures
Higher level concepts
Recitations
None due to lack of TA
Labs
The heart of the course
2 ~ 3 weeks
Provide in-depth understanding of an aspect of
systems
Programming and measurement
–7–
CS-213, F’06
Getting Help
Web
http://www.cs.northwestern.edu/~ychen/classes/cs213f06/
Copies of lectures, assignments, exams, solutions
Newsgroup
cs.213
For more info on newsgroup access,
https://www.cs.northwestern.edu/support/services/news.php
Clarifications to assignments, general discussion
Personal help
–8–
Professors: office hours 2-4pm on Thu.
CS-213, F’06
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:
–9–
Removal from course with failing grade.
CS-213, F’06
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 root ([email protected])
For accessing the TLAB facilities
- contact Carol Surma
([email protected])
– 10 –
CS-213, F’06
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
– 11 –
CS-213, F’06
The Memory Hierarchy (2)
Topics
Memory technology, memory hierarchy, caches,
disks, locality
Includes aspects of architecture and OS.
– 12 –
CS-213, F’06
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
– 13 –
CS-213, F’06
Virtual Memory (2)
Topics
Virtual memory, address translation, dynamic
storage allocation
Includes aspects of architecture and OS
– 14 –
CS-213, F’06
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.
– 15 –
CS-213, F’06
Lab Rationale
Doing a lab should result in new skills and
concepts
Data Lab: computer arithmetic, digital logic.
Bomb Lab: assembly language, using a debugger,
understanding the stack.
Exploit Lab: understanding the calling stack
organization and buffer overflow vulnerabilities.
– 16 –
CS-213, F’06
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
– 17 –
Architecture, Embedded Systems
CS-213, F’06
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
– 18 –
CS-213, F’06
Course Perspective
Most Systems Courses are Builder-Centric
Computer Architecture
Design pipelined processor in Verilog
Operating Systems
Implement large portions of operating system
Compilers
Write compiler for simple language
Networking
Implement and simulate network protocols
– 19 –
CS-213, F’06
Course Perspective (Cont.)
Our 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
Not just a course for dedicated hackers
We bring out the hidden hacker in everyone
– 20 –
Cover material in this course that you won’t see
elsewhere
CS-213, F’06
Hello World
What happens and why when you run “hello”
on your system?
/*hello world*/
# include <stdio.h>
int main()
{
printf(“hello, world\n”);
}
Goal: introduce key concepts, terminology, and
components
– 21 –
CS-213, F’06
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
– 22 –
The same sequence of bytes might represent a
CS-213, F’06
character string or machine instruction
Programs Translated by Other Programs
unix> gcc –o hello hello.c
printf.o
hello.c
Source
program
(text)
Prehello.i
processor
(cpp)
Compiler hello.s
(cc1)
Modified
source
program
(text)
Assembly
program
(text)
Assembler hello.o
(as)
Relocatable
object
programs
(binary)
Linker
(ld)
hello
Executable
object
program
(binary)
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: a binary file whose bytes encode machine language
instructions
Linking
E.g., hello.c uses printf(), it resides in a separate precompiled
– 23 –
object file printf.o
CS-213, F’06
Why do We Care about This?
Optimizing program performance
To write efficient code
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
– 24 –
Buffer overflow bugs
CS-213, F’06
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
– 25 –
prints a prompt
CS-213, F’06
Hardware organization
Buses
CPU
Register file
PC
ALU
System bus
Memory bus
Main
memory
I/O
bridge
Bus interface
I/O bus
USB
controller
Mouse Keyboard
– 26 –
Graphics
adapter
Transfer fixedsized chunks of
data (WORDS)
Intel Pentium ->
4Bytes bus
Disk
controller
Display
Disk
Expansion slots for
other devices such
as network adapters
hello executable
stored on disk CS-213, F’06
Hardware organization
I/O Devices
CPU
Register file
PC
ALU
System bus
Memory bus
Main
memory
I/O
bridge
Bus interface
I/O bus
USB
controller
Mouse Keyboard
– 27 –
Graphics
adapter
System connections
to external world
Mouse, keyboard
(input)
Display, disk device
(output)
Disk
controller
Display
Disk
Expansion slots for
other devices such
as network adapters
hello executable
stored on disk CS-213, F’06
Main Memory
Hardware organization
CPU
Register file
PC
ALU
System bus
Memory bus
Main
memory
I/O
bridge
Bus interface
I/O bus
USB
controller
Mouse Keyboard
– 28 –
Graphics
adapter
Temporary
storage device
Holds both a
program and the
data it
manipulates with
Disk
controller
Display
Disk
Expansion slots for
other devices such
as network adapters
hello executable
stored on disk CS-213, F’06
Hardware organization
CPU
Register file
PC
ALU
System bus
Bus interface
– 29 –
Main
memory
I/O
bridge
Control Processor Unit
(CPU)
Memory bus
Executes instructions
stored in main memory
Program Counter (PC or
Register) contains the
address of some
machine-language
instruction from memory
CPU
Reads the instruction
from memory
Performs simple
operation (load, store,
update)
Updates the PC to point to
CS-213, F’06
next instruction
Running the Hello Program
Reading the hello command from the keyboard
Register file
PC
ALU
System bus
Memory bus
Main "hello"
memory
I/O
bridge
Bus interface
I/O bus
USB
controller
Mouse Keyboard
– 30 –
Graphics
adapter
Disk
controller
Expansion slots for
other devices such
as network adapters
Display
Disk
User types "hello"
CS-213, F’06
Running the Hello Program
Shell program loads hello.exe into main memory
Register file
PC
ALU
System bus
Memory bus
"hello,world\n"
Main
memory
hello code
I/O
bridge
Bus interface
I/O bus
USB
controller
Mouse Keyboard
– 31 –
Graphics
adapter
Disk
controller
Display
Disk
Expansion slots for
other devices such
as network adapters
hello executable
CS-213, F’06
stored on disk
Running the Hello Program
The processor executes instructions and displays “hello…”
Register file
PC
ALU
System bus
Memory bus
Main "hello,world\n"
memory
hello code
I/O
bridge
Bus interface
I/O bus
USB
controller
Mouse Keyboard
– 32 –
Graphics
adapter
Disk
controller
Display
"hello,world\n"
Disk
Expansion slots for
other devices such
as network adapters
hello executable
stored on disk CS-213, F’06
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
CPU chip
Register file
L1
cache
ALU
(SRAM)
Cache bus
L2 cache
(SRAM)
– 33 –
System bus
Bus interface
Memory
bridge
Memory bus
Main
memory
(DRAM)
CS-213, F’06
Storage Devices Form a Hierarchy
Storage at one level serves as cache at the next
level
L0:
Smaller,
Registers
faster,
and
costlier
(per byte)
storage
devices
L1:
L2:
L3:
Larger,
slower,
and
cheaper
(per byte)
storage
devices
L4:
On-chip L1
cache (SRAM)
L1 cache holds cache lines retrieved
from the L2 cache.
Off-chip L2
cache (SRAM)
Main memory
(DRAM)
L2 cache holds cache lines
retrieved from memory.
Main memory holds disk
blocks retrieved from local
disks.
Local secondary storage
(local disks)
Local disks hold files
retrieved from disks on
remote network servers.
L5:
– 34 –
CPU registers hold words retrieved from
cache memory.
Remote secondary storage
(distributed file systems, Web servers)
CS-213, F’06
Operating System (OS)
OS – a layer of software interposed between the
application program and the hardware
Application programs
Software
Operating system
Processor
Main memory
I/O devices
Hardware
Two primary purposes
– 35 –
To protect the hardware from misuse by
applications
To provide simple and uniform mechanisms for
manipulating low-level hardware devices
CS-213, F’06
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
– 36 –
Main memory
I/O devices
CS-213, F’06
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
Time
shell
process
hello
process
Application code
OS code
Context
switch
Application code
OS code
– 37 –
Application code
Context
switch
CS-213, F’06
Virtual Memory
Illusion that
each
process has
exclusive
use of main
memory
0xffffffff
0xc0000000
Kernel virtual memory
Memory
invisible to
user code
User stack
(created at runtime)
0x40000000
Memory mapped region for
shared libraries
printf() function
Example
Run-time heap
(created at runtime by malloc)
The virtual
address
space for
Linux
Read/write data
Read-only code and data
Loaded from the
hello executable file
0x08048000
– 38 –
0
Unused
CS-213, F’06
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
Many system-level issues arise in presence of
network
Coping with unreliable media
Cross platform compatibility
– 39 –
Complex performance issues
CS-213, F’06