Introduction to Computer Systemscsl.skku.edu/uploads/SSE2030F11/0-sse2030.pdf · 시스템...
Transcript of Introduction to Computer Systemscsl.skku.edu/uploads/SSE2030F11/0-sse2030.pdf · 시스템...
SSE2030:
Introduction to
Computer Systems
Jin-Soo Kim ([email protected])
Computer Systems Laboratory
Sungkyunkwan University
http://csl.skku.edu
2 SSE2030: Introduction to Computer Systems | Fall 2011| Jin-Soo Kim ([email protected])
Introduction
Schedule
• 12:00 – 13:15 (Mon) 15:00 – 16:15 (Wed)
• Lecture room #400126 (Semiconductor Bldg.)
Course homepage
• http://csl.skku.edu/SSE2030F11/
3 SSE2030: Introduction to Computer Systems | Fall 2011| Jin-Soo Kim ([email protected])
About Me
Jin-Soo Kim
• Associate Professor @ SSE & SW & CE Dept.
• Computer Systems Laboratory
• Office: Semiconductor Bldg. #400630 (6th floor)
• Email: [email protected]
• URL: http://csl.skku.edu/jinsoo
• Tel: 031-299-4593
• Office hours: Monday & Wednesday
• The best way to contact me is by email.
4 SSE2030: Introduction to Computer Systems | Fall 2011| Jin-Soo Kim ([email protected])
System Software Track
문제해결방법 자료구조및 알고리즘
컴퓨터그래픽스* 인공지능*
논리회로 컴퓨터시스템
개론 컴퓨터구조
프로그래밍 언어와컴파일러
멀티코어시스템
논리회로설계실험 마이크로프로세서 컴퓨터
네트워크 이동컴퓨팅
공학수학1 마이크로프로세서
실험 시스템
운영체제 임베디드시스템
설계 임베디드시스템
실습
전자기학1 디지털시스템 SoC설계
기초전기회로1 기초전기회로2 소프트웨어공학* 시스템시뮬레이션
기초전기회로실험 정보보호개요* 데이터베이스*
객체지향시스템 설계*
이산수학§
5 SSE2030: Introduction to Computer Systems | Fall 2011| Jin-Soo Kim ([email protected])
Course Outline (1)
Goal:
How does the computer system work?
or
How does your program run?
6 SSE2030: Introduction to Computer Systems | Fall 2011| Jin-Soo Kim ([email protected])
Course Outline (2)
Computer systems
7 SSE2030: Introduction to Computer Systems | Fall 2011| Jin-Soo Kim ([email protected])
Course Outline (3)
Computer systems internals
CPU Mem I/O Devices
Operating Systems
Hardware
Software
Architecture
Application
8 SSE2030: Introduction to Computer Systems | Fall 2011| Jin-Soo Kim ([email protected])
Course Outline (4)
Levels of abstraction
Operating system
Architecture
Programming languages & compilers
Data structures & algorithms
Application programs
Microarchitecture
Hardware description languages
Digital logic
VLSI layout
Processing, Fabrication
Chemistry, Physics
9 SSE2030: Introduction to Computer Systems | Fall 2011| Jin-Soo Kim ([email protected])
Course Plan
Introduction to computer systems
• Operating systems
• Compilers, linkers, and loaders
• Assembly languages
• Operating systems
• Performance optimizations
Advanced programming
• Basic Unix system programming
• Network programming
• Concurrent programming using processes and threads
• Assembly programming
10 SSE2030: Introduction to Computer Systems | Fall 2011| Jin-Soo Kim ([email protected])
Course Components
Lectures
• Concepts
• Backgrounds
Projects
• The heart of this course!
• Provide in-depth understanding of an aspect of systems
• Intensive C/Assembly programming on Linux platform
• Design, implementation, measurement, optimization
11 SSE2030: Introduction to Computer Systems | Fall 2011| Jin-Soo Kim ([email protected])
Lectures
Topics
• An introduction to Unix
• Processes and files
• Network programming
• Concurrent programming
• Representing and manipulating data
• Assembly programming
• Linking
• Processor architecture
• Memory hierarchy
12 SSE2030: Introduction to Computer Systems | Fall 2011| Jin-Soo Kim ([email protected])
Projects (1)
Basic Unix system calls
• File I/O
• Process management
• Inter-Process Communication (IPC)
Concurrent programming
• Processes
• Threads
Network programming
• Sockets
Assembly programming (x86)
13 SSE2030: Introduction to Computer Systems | Fall 2011| Jin-Soo Kim ([email protected])
Projects (2)
Policies
• There will be 5+ programming assignments
• Each project must be done individually
• We will divide you into 4 project groups – One TA is assigned to each project group
– There is an official Lab. class once a week
• Lab. class – TA explains a project assignment
– TA instructs basic things to know to solve the problem
– You discuss with other students on the problem
– TA evaluates your code
14 SSE2030: Introduction to Computer Systems | Fall 2011| Jin-Soo Kim ([email protected])
Projects (3)
Evaluation
• Your solution will be evaluated in the following ways: – Demonstration
– Oral tests
– Documentation
– Your progress
• You should be able to answer any questions on basic system architecture, design decisions, and implementation details
• Always pay attention to – Performance issues
– Documentation
15 SSE2030: Introduction to Computer Systems | Fall 2011| Jin-Soo Kim ([email protected])
Projects (4)
TAs
• 김형준 (석2): Head TA
• 고병문 (석2)
• 김제민 (석1)
• 우영재 (석1)
Contacting TAs
• During Lab. class
• E-mail, phone, office, MSN, etc.
16 SSE2030: Introduction to Computer Systems | Fall 2011| Jin-Soo Kim ([email protected])
Prerequisites
C programming skills (GEDD07)
Basic knowledge of Unix/Linux systems
ICE2001: Logic circuits
SSE2029: Data structures and algorithms or ICE2002: Data structures
17 SSE2030: Introduction to Computer Systems | Fall 2011| Jin-Soo Kim ([email protected])
Textbook
Computer Systems: A Programmer’s Perspective
• Randal E. Bryant and David R. O’Hallaron, Second Edition,
Prentice-Hall, Inc. 2010.
• http://csapp.cs.cmu.edu
18 SSE2030: Introduction to Computer Systems | Fall 2011| Jin-Soo Kim ([email protected])
References (1)
C Programming
• C Programming Language
B. Kernighan and D. Ritchie, Second Edition,
Prentice Hall, 1988.
19 SSE2030: Introduction to Computer Systems | Fall 2011| Jin-Soo Kim ([email protected])
References (2)
Programming in Unix
• Advanced Programming in the UNIX Environment W. Richard Stevens and Stephen A. Rago, Second Edition, Addison-Wesley, 2005.
20 SSE2030: Introduction to Computer Systems | Fall 2011| Jin-Soo Kim ([email protected])
References (3)
Programming in Linux
• Advanced Linux Programming Mark L. Mitchell, Jeffrey Oldham, and Alex Samuel, New Riders Publishing, 2001. Downloadable at http://www.advanedlinuxprogramming.com/
21 SSE2030: Introduction to Computer Systems | Fall 2011| Jin-Soo Kim ([email protected])
References (4)
Network Programming
• UNIX Network Programming Volume 1: The Sockets Networking API W. Richard Stevens, Bill Fenner, and Andrew M. Rudoff, Third Edition, Addison-Wesley, 2003.
22 SSE2030: Introduction to Computer Systems | Fall 2011| Jin-Soo Kim ([email protected])
References (5)
Threads Programming
• Programming with POSIX Threads David R. Butenhof, Addison-Wesley, 1997.
• POSIX Threads Programming LLNL Tutorial at http://computing.llnl.gov/ tutorial/pthreads
23 SSE2030: Introduction to Computer Systems | Fall 2011| Jin-Soo Kim ([email protected])
References (6)
Assembly Programming
• The Art of Assembly Language Programming,
Randall Hyde,
http://webster.cs.ucr.edu/
• Intel Architectures Software Developer’s Manual,
Volume 1: Basic Architecture
Volume 2: Instruction Set Reference
Volume 3: System Programming Guide
http://www.intel.com/products/processor/manuals/index.htm
24 SSE2030: Introduction to Computer Systems | Fall 2011| Jin-Soo Kim ([email protected])
Class Policies (1)
Grading Policy (subject to change)
• Class attendance (10%)
• Exams (35%)
• Projects (55%)
25 SSE2030: Introduction to Computer Systems | Fall 2011| Jin-Soo Kim ([email protected])
Class Policies (2)
Class Attendance Policy
• If you miss one or both of exams, you will fail this course.
• Do not be late! You should be present in the lecture room when I take class attendance.
• You can miss the class up to “four” times without any penalty. – For unexcused absences and for excused absences as well
• There will be a bonus for students who attend all the classes.
26 SSE2030: Introduction to Computer Systems | Fall 2011| Jin-Soo Kim ([email protected])
Class Policies (3)
Cheating Policy
• What is cheating? – Copying another student’s solution (or one from the Internet)
and submitting it as your own
– Allowing another student to copy your solution
• 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: – Severe penalty on the grade and report to dept. chair
• Ask helps to your TA if you experience any difficulty!
27 SSE2030: Introduction to Computer Systems | Fall 2011| Jin-Soo Kim ([email protected])
Final Remark
It will be tough and challenging
But, this course is NOT intended to torture you.
You will gain systems-level perspective and programming skills.
SSE2030 serves as a foundation for the following courses:
• Operating systems, Computer architecture
• Programming languages/compilers
• Microprocessor systems, Embedded systems
• Computer networks, and many more…
28 SSE2030: Introduction to Computer Systems | Fall 2011| Jin-Soo Kim ([email protected])
Any Questions?
29 SSE2030: Introduction to Computer Systems | Fall 2011| Jin-Soo Kim ([email protected])
Project 0 (1)
Write a C program called “genesis” • Usage: genesis [chapter] [verse]
• Prints the corresponding text in “genesis” of the Holy Bible for the given chapter and verse
• Use the file “genesis.txt” available from http://atschool.eduweb.co.uk/SBS777/bible/text/genesis.txt
$ genesis 1 1 [Genesis 1:1] In the beginning God created the heaven and the earth. $ genesis 1 99 Invalid chapter or verse.
30 SSE2030: Introduction to Computer Systems | Fall 2011| Jin-Soo Kim ([email protected])
Project 0 (2)
Goals
• Test whether you have an adequate C programming background
• Test whether you can set up a development environment on Linux by yourself
Submission
• Send your C source code to [email protected]
• Make sure to identify yourself in the source code (Student ID & name)
• Due: 11:59PM, Sep. 2 (Fri)