COMP 321: Introduction to Computer Systems Scott Rixner Alan L. Cox

Slides:



Advertisements
Similar presentations
Compiler Construction by Muhammad Bilal Zafar (AP)
Advertisements

CSc 2310 Principles of Programming (Java)
Computer Systems & Programming (CS 367) Section 002: Prof. Elizabeth White Spring 2010.
Introduction to Computer Science CS 21a: Introduction to Computing I Department of Information Systems and Computer Science Ateneo de Manila University.
Spring 2008, Jan. 14 ELEC / Lecture 2 1 ELEC / Computer Architecture and Design Spring 2007 Introduction Vishwani D. Agrawal.
General information Course web page: html Office hours:- Prof. Eyal.
Introduction to Computer Systems Topics: Staff, text, and policies Lecture topics and assignments Lab rationale and infrastructure F ’08 class01b.ppt.
June 13, Introduction to CS II Data Structures Hongwei Xi Comp. Sci. Dept. Boston University.
CSCE156: Introduction to Computer Science II Instructor Stephen Scott Website
1 Lecture 1  Getting ready to program  Hardware Model  Software Model  Programming Languages  The C Language  Software Engineering  Programming.
Chapter 2: Impact of Machine Architectures What is the Relationship Between Programs, Programming Languages, and Computers.
CSCE 312 Computer Organization Lecture 0: Course Administration EJ Kim Department of Computer Science and Engineering 338B Bright
COMP 14 – 02: Introduction to Programming Andrew Leaver-Fay August 31, 2005 Monday/Wednesday 3-4:15 pm Peabody 217 Friday 3-3:50pm Peabody 217.
CS 213 Introduction to Computer Systems Course Organization David O’Hallaron August 28, 2001 Topics: Staff, text, and policies Lecture topics and assignments.
Copyright Arshi Khan1 System Programming Instructor Arshi Khan.
Dr. José M. Reyes Álamo 1.  Course website  Syllabus posted.
Introduction COMP104: Fundamentals and Methodology.
CS110/CS119 Introduction to Computing (Java)
Spring 2008 Mark Fontenot CSE Honors Principles of Computer Science I Note Set 1 1.
CS 21a: Intro to Computing I Department of Information Systems and Computer Science Ateneo de Manila University.
CS 0004 –Lecture 1 Wednesday, Jan 5 th, 2011 Roxana Gheorghiu.
Winter 2015 COMP 2130 Introduction to Computer Systems Computing Science Thompson Rivers University Introduction and Overview.
CS2303 C14 Systems Programming Concepts Bob Kinicki.
Introduction and Overview Questions answered in this lecture: What is an operating system? How have operating systems evolved? Why study operating systems?
CSc 2310 Principles of Programming (Java) Dr. Xiaolin Hu.
1 Introduction to Operating Systems 9/16/2008 Lecture #1.
1 A Simple but Realistic Assembly Language for a Course in Computer Organization Eric Larson Moon Ok Kim Seattle University October 25, 2008.
Fall 2015, Aug 17 ELEC / Lecture 1 1 ELEC / Computer Architecture and Design Fall 2015 Introduction Vishwani D. Agrawal.
COMP 3438 System Programming
Carnegie Mellon Course Overview Computer Systems Organization (Fall 2015) Instructor: Jinyang Li.
Sadegh Aliakbary Sharif University of Technology Fall 2012.
Introduction and Overview Summer 2014 COMP 2130 Introduction to Computer Systems Computing Science Thompson Rivers University.
CS355 Advanced Computer Architecture Fatima Khan Prince Sultan University, College for Women.
CS 444 Introduction to Operating Systems
OPERATING SYSTEMS Goals of the course Definitions of operating systems Operating system goals What is not an operating system Computer architecture O/S.
1 Carnegie Mellon The course that gives CMU its “Zip”! Course Overview (18-213): Introduction to Computer Systems 1 st Lecture, Aug. 26, 2014 Instructors:
CE Operating Systems Lecture 3 Overview of OS functions and structure.
Introduction to Computer Systems Topics: Staff, text, and policies Lecture topics and assignments Lab rationale and infrastructure CS 213 F ’03 class01b.ppt.
Introduction Fall 2001 Foundations of Computer Systems Prerequisite:91.166* or * Section A Instructor: Dr. David Hutchinson Office:
Introduction to Computer Systems Topics: Staff, text, and policies Lecture topics and assignments Lab rationale CS 213 F ’02 class01b.ppt “The Class.
Computer Organization II Topics: Theme Five great realities of computer systems How this fits within CS curriculum CS 2733.
Overview of Operating Systems Introduction to Operating Systems: Module 0.
CMSC 2021 CMSC 202 Computer Science II for Majors Spring 2002 Sections Ms. Susan Mitchell.
Copyright ©: Nahrstedt, Angrave, Abdelzaher1 University of Illinois at Urbana-Champaign Welcome to CS 241 Systems Programming University of Illinois at.
1 University of Ilam Systems Programming University of Ilam Mozafar Bag Mohammadi.
CMPE13Cyrus Bazeghi 1 Welcome to CMPE 13 Computing Systems and C Programming Spring 2009 Cyrus Bazeghi.
Spring 2016, Jan 13 ELEC / Lecture 1 1 ELEC / Computer Architecture and Design Spring 2016 Introduction Vishwani D. Agrawal.
1 CS/ECE 354 Fall 2013 “New, and improved!”. 2 Karen Miller Phone: CS.
Chapter 2 Introduction to OS Chien-Chung Shen CIS/UD
Operating Systems CMPSC 473 Introduction and Overview August 24, Lecture 1 Instructor: Bhuvan Urgaonkar.
CS 213 Introduction to Computer Systems Course Organization Guy Blelloch and Bruce Maggs January 16, 2001 Topics: Staff, text, and policies Lecture topics.
CS 2303 Systems Programming Concepts Bob Kinicki A08.
Copyright ©: Nahrstedt, Angrave, Abdelzaher, Caccamo1 University of Illinois at Urbana-Champaign Welcome to CS 241 Systems Programming University of Illinois.
Introduction to Computer Programming Concepts M. Uyguroğlu R. Uyguroğlu.
CSCI/CMPE 4334 Operating Systems Review: Exam 1 1.
1 Chapter 2: Operating-System Structures Services Interface provided to users & programmers –System calls (programmer access) –User level access to system.
Introduction and Overview Winter 2013 COMP 2130 Introduction to Computer Systems Computing Science Thompson Rivers University.
1 Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition Carnegie Mellon Course Overview Introduction to Computer Systems 1.
Final exam: Wednesday, March 20, 2:30pm
Programming COMP104: Fundamentals and Methodology Introduction.
Chapter 3: Windows7 Part 1.
Computer Systems Summary
Systems Programming University of Ilam
Introduction to Computer Systems
CSE 153 Design of Operating Systems Winter 2019
EECE.4810/EECE.5730 Operating Systems
CSCE156: Introduction to Computer Science II
ELEC / Computer Architecture and Design Fall 2014 Introduction
CS201 – Course Expectations
Presentation transcript:

COMP 321: Introduction to Computer Systems Scott Rixner Alan L. Cox

Cox / RixnerCOMP 321 Overview2 Goals Understand programming better  Linking  Exceptions  Memory  I/O  Networking Prepare for systems classes  Computer architecture  Compilers  Operating systems  Networking

Cox / RixnerCOMP 321 Overview3 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 / RixnerCOMP 321 Overview4 Who are we?

Cox / RixnerCOMP 321 Overview5 Who are you?

Cox / RixnerCOMP 321 Overview6 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 / RixnerCOMP 321 Overview7 Problems in Low-Level Programming Imperative programming Few abstractions  No objects, abstract functions,... No safety net  Direct access to system resources  Manual memory management It’s easy to make mistakes When you do, you’re out of luck

Cox / RixnerCOMP 321 Overview8 Programming Survival Skills Planning Good style & documentation Defensive programming Debugging

Cox / RixnerCOMP 321 Overview9 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, 310, …) This is not a course about the C language  You will gain a familiarity with C  There are a lot of C concepts that we will not cover  We will not focus on large-scale design in C C is simply a useful vehicle for learning system-level concepts

Cox / RixnerCOMP 321 Overview10 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?

Cox / RixnerCOMP 321 Overview11 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 / RixnerCOMP 321 Overview12 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 / RixnerCOMP 321 Overview13 Linking Libraries  What are they?  How are they used by your program? Incremental compilation  How can you minimize recompilation?  How are 1000s of files combined into one program? Errors  Why does your program compile but not run?  Why does Windows tell you that “.dll is out of date”?

Cox / RixnerCOMP 321 Overview14 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 / RixnerCOMP 321 Overview15 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 / RixnerCOMP 321 Overview16 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 / RixnerCOMP 321 Overview17 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 / RixnerCOMP 321 Overview18 Logistics Lectures: T/Th 2:30-3:45 Duncan Hall 1070 Labs: T 4:00-5:15 or W 3:00-4:15 Symonds II Lab Lecturers: Alan L. Cox and Scott Rixner TAs: Sean Harger, Rabimba Karanjai, Ankush Mandal, and Rebecca Smith Webpage: Announcements: On Piazza Textbook: Computer Systems: A Programmer’s Perspective, 2 nd Ed. by Bryant and O’Hallaron

Cox / RixnerCOMP 321 Overview19 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 for an accounthttp://apply.rice.edu/

Cox / RixnerCOMP 321 Overview20 Labs Everyone should attend  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 Opportunity to ask questions  Instructor and TAs will be available  You might learn some unexpected neat tricks!

Cox / RixnerCOMP 321 Overview21 Assignments/Projects 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  A C reference book will be helpful Take-home final exam during finals period  No quizzes during the semester

Cox / RixnerCOMP 321 Overview22 Assignment Policies Carefully read the assignments web page  Honor code policy  Slip day policy 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 / RixnerCOMP 321 Overview23 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