Introduction to Computer Systems - COMP.321 Overview

undefined
COMP 321:
Introduction to Computer Systems
Alan L. Cox
alc@rice.edu
Scott Rixner
rixner@rice.edu
C
o
x
C
O
M
P
 
3
2
1
 
O
v
e
r
v
i
e
w
2
Goals
Understand programming better
Linking
Exceptions
Memory
I/O
Networking
Prepare for systems classes
Computer architecture
Compilers
Operating systems
Networking
Security
C
o
x
C
O
M
P
 
3
2
1
 
O
v
e
r
v
i
e
w
3
Computer Organization
Hardware/software interface (ELEC 220)
Basic hardware organization of computer systems
Assembly language
How low-level software manipulates hardware
state
System/application interface (COMP 321)
Abstract hardware organization
C language (one step above assembly language)
How to use operating system services to access
system resources
C
o
x
C
O
M
P
 
3
2
1
 
O
v
e
r
v
i
e
w
4
Why use C?
Interfacing with run-time and operating systems is
more suited to low-level programming
Much of the software that you use is written in C
Understanding C and assembly is key to understanding
how programs execute
Behavior of programs in presence of bugs
High-level language model breaks down
Tuning program performance
Understanding sources of program inefficiency
Implementing system software
Compiler has machine code as target
Operating systems must manage process state
C
o
x
C
O
M
P
 
3
2
1
 
O
v
e
r
v
i
e
w
5
Problems in Low-Level Programming
Imperative programming
Few abstractions
No objects, abstract functions, ...
No safety net
Direct access to system resources
Manual memory management
When you do, you’
re out of luck
C
o
x
C
O
M
P
 
3
2
1
 
O
v
e
r
v
i
e
w
6
Programming Survival Skills
Planning
Good style & documentation
Defensive programming
Debugging
C
o
x
C
O
M
P
 
3
2
1
 
O
v
e
r
v
i
e
w
7
What this course is 
not
 
This is not a course about the art of
programming
Other courses have/will cover programming
principles (e.g., COMP 215, 318, …)
 
This is not a course about the C language
You will gain a familiarity with C
There are many C concepts that we will not discuss
We will not cover large-scale program design in C
 
C is simply a useful vehicle for learning
system-level concepts
C
o
x
C
O
M
P
 
3
2
1
 
O
v
e
r
v
i
e
w
8
Course Perspective
Upper-level systems courses teach how
systems work so you can 
build
 them
Computer architecture
How does a microprocessor work?
Compilers
How does a compiler work?
Operating systems
How does an operating system work?
Networking
How do network protocols work?
Security
How does SSL/TLS work?
C
o
x
C
O
M
P
 
3
2
1
 
O
v
e
r
v
i
e
w
9
Course Perspective
This course teaches how to 
use
 systems
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
This course covers some material that you
won’
t see elsewhere
C
o
x
C
O
M
P
 
3
2
1
 
O
v
e
r
v
i
e
w
10
10
Syllabus Overview
Machine-level representation of programs
Assembly to C
Linking and Virtual Memory
How does a program actually get loaded and run?
Exceptions
Critical events can happen outside your program
I/O, Networking, and Concurrency
Programs must communicate to be useful
C
o
x
C
O
M
P
 
3
2
1
 
O
v
e
r
v
i
e
w
11
11
Linking
Libraries
What are they?
How are they used by your program?
Incremental compilation
How can you minimize recompilation?
How are 100’s of files combined into one program?
Errors
Why does your program compile but not run?
Why does Windows tell you that 
<blah>.dll is out
of date
?
C
o
x
C
O
M
P
 
3
2
1
 
O
v
e
r
v
i
e
w
12
12
Virtual Memory
Address spaces
What does a program
s address space look like?
How are programs loaded into memory?
How are programs isolated and protected from
each other?
How do programs share memory?
Allocating memory
Where is your program
s data stored?
What if you need more memory?
How is this allocation managed?
C
o
x
C
O
M
P
 
3
2
1
 
O
v
e
r
v
i
e
w
13
13
Exceptions
Running programs
How does the shell work?
What is a process, and how is it created?
Communicating with a program
What happens when you type Ctrl-C, Ctrl-Z, etc.?
How does your program find out about external
events?
System calls
What happens to your program when you invoke
the operating system?
C
o
x
C
O
M
P
 
3
2
1
 
O
v
e
r
v
i
e
w
14
14
I/O, Networking, and Concurrency
I/O interface
How are files read, written, shared, etc.?
Which I/O functions should you use and why?
Network access
Who manages the network?
How can your program access the network?
Concurrency
What are some of the problems with concurrency?
How are concurrent programs written?
C
o
x
C
O
M
P
 
3
2
1
 
O
v
e
r
v
i
e
w
15
15
Exposure to Real Programs
Over the course of the semester you will be
exposed to several 
real
 programs
Shell
You will write pieces of a functioning Unix shell
Dynamic memory allocator
You will write a functioning memory allocator
And more…
C
o
x
C
O
M
P
 
3
2
1
 
O
v
e
r
v
i
e
w
16
16
Logistics
Lectures: 
TR 2:30-3:45 PM KCK 100
Labs:
 
 
W 2:00-3:15 PM or 3:30-4:45 PM PCF 4
Lecturers: 
Alan L. Cox and Scott Rixner
TAs: 
See web page
Web page: 
https://www.clear.rice.edu/comp321/
Announcements: 
On Piazza
Textbook: 
Computer Systems: A Programmer
s
Perspective
, 3
rd
 Ed. by Bryant and O
Hallaron
C
o
x
C
O
M
P
 
3
2
1
 
O
v
e
r
v
i
e
w
17
17
Weekly Labs
Emphasis
C programming, debugging
In-depth hands-on exercises
General programming tips
Other cool topics in computer systems as time
permits
Requires access to CLEAR servers
Go to 
http://apply.rice.edu/
 for an account
Requires a GitHub account
C
o
x
C
O
M
P
 
3
2
1
 
O
v
e
r
v
i
e
w
18
18
Labs
Everyone should do the labs
You should treat labs like lectures
Many key concepts needed by assignments will be
covered in labs
Especially crucial for those who have never
programmed in C
And for those who have not programmed in a Unix
environment
Extra credit for turning in the labs on time
Requirements for receiving extra credit will be
detailed in the first lab
C
o
x
C
O
M
P
 
3
2
1
 
O
v
e
r
v
i
e
w
19
19
Assignments/Exams
Assignments all involve programming
6 assignments throughout the semester
First 2 are to get you familiar with C programming
Last 4 are to teach the course concepts and assume
you are comfortable with C
An introductory book on C may be helpful, e.g.,
Head First C
Comprehensive in-person registrar-scheduled
exam during finals period
No quizzes or exams during the semester
C
o
x
C
O
M
P
 
3
2
1
 
O
v
e
r
v
i
e
w
20
20
Assignment Policies
Carefully read the assignments web page
Honor code policy
Slip day and regrade policies
All assignments will be posted on the web
page
Assignments are due at 11:55PM on the due
date, unless otherwise specified
Assignments must be done on CLEAR servers
Other systems may behave differently!
C
o
x
C
O
M
P
 
3
2
1
 
O
v
e
r
v
i
e
w
21
21
Next Time
Begin introduction to C
Lab this week will show some basic C programs
Start with simple data types
First programming assignment to get everyone
familiar with C
Slide Note
Embed
Share

This course provides an in-depth understanding of computer systems, focusing on programming, exceptions, memory, I/O, networking, and system classes. Students learn about computer architecture, compilers, operating systems, and security. With a blend of theory and practical applications, the course covers hardware/software interfaces, low-level software manipulation of hardware, and the use of C language to access system resources. Emphasis is placed on the importance of C in interfacing with run-time and operating systems for low-level programming, bug management, program efficiency, and system software implementation.

  • Computer Systems
  • Programming
  • C Language
  • Operating Systems

Uploaded on Sep 24, 2024 | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

E N D

Presentation Transcript


  1. COMP 321: Introduction to Computer Systems Alan L. Cox alc@rice.edu Scott Rixner rixner@rice.edu

  2. Goals Understand programming better Linking Exceptions Memory I/O Networking Prepare for systems classes Computer architecture Compilers Operating systems Networking Security Cox COMP 321 Overview 2

  3. Computer Organization Hardware/software interface (ELEC 220) Basic hardware organization of computer systems Assembly language How low-level software manipulates hardware state System/application interface (COMP 321) Abstract hardware organization C language (one step above assembly language) How to use operating system services to access system resources Cox COMP 321 Overview 3

  4. Why use C? Interfacing with run-time and operating systems is more suited to low-level programming Much of the software that you use is written in C Understanding C and assembly is key to understanding how programs execute Behavior of programs in presence of bugs High-level language model breaks down Tuning program performance Understanding sources of program inefficiency Implementing system software Compiler has machine code as target Operating systems must manage process state Cox COMP 321 Overview 4

  5. Problems in Low-Level Programming It s easy to make mistakes When you do, you re out of luck Imperative programming Few abstractions No objects, abstract functions, ... No safety net Direct access to system resources Manual memory management Cox COMP 321 Overview 5

  6. Programming Survival Skills Planning Good style & documentation Defensive programming Debugging Cox COMP 321 Overview 6

  7. What this course is not This is not a course about the art of programming Other courses have/will cover programming principles (e.g., COMP 215, 318, ) This is not a course about the C language You will gain a familiarity with C There are many C concepts that we will not discuss We will not cover large-scale program design in C C is simply a useful vehicle for learning system-level concepts Cox COMP 321 Overview 7

  8. Course Perspective Upper-level systems courses teach how systems work so you can build them Computer architecture How does a microprocessor work? Compilers How does a compiler work? Operating systems How does an operating system work? Networking How do network protocols work? Security How does SSL/TLS work? Cox COMP 321 Overview 8

  9. Course Perspective This course teaches how to use systems 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 This course covers some material that you won t see elsewhere Cox COMP 321 Overview 9

  10. Syllabus Overview Machine-level representation of programs Assembly to C Linking and Virtual Memory How does a program actually get loaded and run? Exceptions Critical events can happen outside your program I/O, Networking, and Concurrency Programs must communicate to be useful Cox COMP 321 Overview 10

  11. Linking Libraries What are they? How are they used by your program? Incremental compilation How can you minimize recompilation? How are 100 s of files combined into one program? Errors Why does your program compile but not run? Why does Windows tell you that <blah>.dll is out of date ? Cox COMP 321 Overview 11

  12. Virtual Memory Address spaces What does a program s address space look like? How are programs loaded into memory? How are programs isolated and protected from each other? How do programs share memory? Allocating memory Where is your program s data stored? What if you need more memory? How is this allocation managed? Cox COMP 321 Overview 12

  13. Exceptions Running programs How does the shell work? What is a process, and how is it created? Communicating with a program What happens when you type Ctrl-C, Ctrl-Z, etc.? How does your program find out about external events? System calls What happens to your program when you invoke the operating system? Cox COMP 321 Overview 13

  14. I/O, Networking, and Concurrency I/O interface How are files read, written, shared, etc.? Which I/O functions should you use and why? Network access Who manages the network? How can your program access the network? Concurrency What are some of the problems with concurrency? How are concurrent programs written? Cox COMP 321 Overview 14

  15. Exposure to Real Programs Over the course of the semester you will be exposed to several real programs Shell You will write pieces of a functioning Unix shell Dynamic memory allocator You will write a functioning memory allocator And more Cox COMP 321 Overview 15

  16. Logistics Lectures: TR 2:30-3:45 PM KCK 100 Labs: W 2:00-3:15 PM or 3:30-4:45 PM PCF 4 Lecturers: Alan L. Cox and Scott Rixner TAs: See web page Web page: https://www.clear.rice.edu/comp321/ Announcements: On Piazza Textbook: Computer Systems: A Programmer s Perspective, 3rd Ed. by Bryant and O Hallaron Cox COMP 321 Overview 16

  17. Weekly Labs Emphasis C programming, debugging In-depth hands-on exercises General programming tips Other cool topics in computer systems as time permits Requires access to CLEAR servers Go to http://apply.rice.edu/ for an account Requires a GitHub account Cox COMP 321 Overview 17

  18. Labs Everyone should do the labs You should treat labs like lectures Many key concepts needed by assignments will be covered in labs Especially crucial for those who have never programmed in C And for those who have not programmed in a Unix environment Extra credit for turning in the labs on time Requirements for receiving extra credit will be detailed in the first lab Cox COMP 321 Overview 18

  19. Assignments/Exams Assignments all involve programming 6 assignments throughout the semester First 2 are to get you familiar with C programming Last 4 are to teach the course concepts and assume you are comfortable with C An introductory book on C may be helpful, e.g., Head First C Comprehensive in-person registrar-scheduled exam during finals period No quizzes or exams during the semester Cox COMP 321 Overview 19

  20. Assignment Policies Carefully read the assignments web page Honor code policy Slip day and regrade policies All assignments will be posted on the web page Assignments are due at 11:55PM on the due date, unless otherwise specified Assignments must be done on CLEAR servers Other systems may behave differently! Cox COMP 321 Overview 20

  21. Next Time Begin introduction to C Lab this week will show some basic C programs Start with simple data types First programming assignment to get everyone familiar with C Cox COMP 321 Overview 21

More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#