Introduction to System Programming (CSE 4009): Fall 2018
- 강사
- 조교
- 시간 및 장소
- 목요일, 금요일: 13:00~15:00
- 목요일: 서울정보통신관 207호
- 금요일: 서울정보통신관 503호, 510호
- 목요일, 금요일: 13:00~15:00
강의 개요
In this class, we will learn the basics of how the computer operates and how the users can interact with the computer hardwares. System programming is the one which makes the applications to interact with the computer hardware and to get the job done. In this work, the students will learn how the program executes. The program is stored at the disk. It is loaded onto memory. Then, the instructions that form the program is executed one by one. When there are multiple programs, they may have to interact with each other in coordinated manner. When some of the data in memory is more important than the others, the program should be able to access the data with different criticality in a controlled manner. When a program is stored in the storage device, a program image follows a certain format so that it can be understood by an operating system. The students will learn the concepts and details with basic implementation of all above mentioned topics in this class. In this class, the lectures are based upon the educational but fully functioning operating system called xv6.
- 교재
- 주교재: xv6 book (available on the web), xv6 code
- 부교재: introduction to computing systems by Yale Patt and Sanjay Patel, McGrawHill, 2nd edition
- 점수 배분
- 중간 고사: 25%
- 기말 고사: 25%
- 과제: 50%
수업과 관련된 질문과 코드등은 피아자를 통해서 공지된다. piazza는 온라인 강의용 사이트로서 전세계 유수대학에서 강의진행을 위해 사용되고 있다. piazza.com에 한양대학교 도메인의 이메일로 가입한 후, CSE4009 과목에 등록하면 된다. 수강신청한 학생들은 이미 등록이 되었을 것이며, 추가 등록한 학생들은 개별적으로 피아자 사이트에서 본 과목에 등록하면 된다. piazza는 영어로는 plaza라고 하면 ‘광장’을 뜻한다. 로마의 저 유명한 스페인 광장의 이름은 Piazza D’Espagna 이다. (Plaza Of Splain)이라는 뜻이다. 본 과목의 피아짜 사이트 주소는 아래와 같다.
일정
- 1주차 (9/6, 9/7). Intro (Chp 0)
- Homework: Booting (Due on Sep. 13)
- Lecture
- 코스 개요
- 운영체제란?
- 시스템 프로그래밍이란?
- Booting
- Lab
- PC 하드웨어, C, Assembly 언어 기본, x86 programming
- Tools (ctags/etags,cscope), GDB-I
- shell 명령어 기초
- manual 사용법
- 2주차 (9/13, 9/14). Building program
- Lecture
- Compiler
- Linker
- Loader
- Elf format
- Lab
- variable types (uint, int, long, long long, unsigned long long and etc.)
- creating library
- finding the address of the function entry point and variables
- Lecture
- 3주차 (9/20, 9/21). Process and Address Space (Chp 1)
- Homework: Shell (Due on Sep. 20)
- Lecture
- OS Organization
- Concept of process
- fork/exec
- importance of the signal and pipe
- Lab
- GDB-II, 커널 디버깅
- 4주차 (9/27, 9/28). Virtual Address (Chp 2)
- Homework: System calls
- Homework: Lazy page allocation
- Lecture
- 휴강
- Lab
- read code
- 5주차 (10/4, 10/5). System Calls, Interrupts and Exceptions I (Chp 3)
- Lecture
- paging and segmentation
- history: why segmentation has disappeared and is not being used.Lab
- Lecture
- 6주차 (10/11, 10/12). System Calls, Interrupts and Exceptions II
- Homework: cpu alarm
- Lecture
- 휴강
- Lab
- 7주차 (10/18, 10/19). Memory management and function call
- Homework: None
- Lecture: traps, interrupts, device drivers, timer interrupts
- Lab
- 8주차 (10/26). 중간 고사
- 9주차 (11/1, 11/2). Locking (Chp 4)
- Homework: Multi-threaded programming
- Lecture
- kernel stack and context switch
- Lab
- 10주차 (11/8, 11/9). Scheduling I (Chp 5)
- Homework: xv6 locks
- Lecture
- malloc, buddy, function call convention, kernel call convention
- Lab
- 11주차 (11/15, 11/16). Scheduling II
- Homework: uthreads
- Lecture
- Spin lock and Sleep lock
- Lab
- 12주차 (11/22, 11/23).
- Homework: barrier
- Lecture
- Lab
- 13주차 (11/29, 11/30). Filesystem I (Chp 6)
- Homework: big file
- Lecture
- Lab
- 14주차 (12/6, 12/7). Filesystem II
- Homework: Crash
- Lecture
- Lab
- 15주차 (12/13, 12/14). Summary
- Homework: None
- Lecture: Booting Again
- Lab
- 16주차 (12/21). 기말 고사
Course Policy
- All homeworks can be done either in the pairs and by yourself. You have to find your partner by yourself and finalized the team by the second week of the semester. If you form a team by yourself, there are 30% extra credit for the homework. You may change your mind and decide to do the homework by yourself. That is allowed. However, you cannot do the other way.
- Plagiarism is not tolerated. If you are found to use part of other people’s code including the one that are publicly available on the web or on the internet, you will get ‘F’ regardless of the rest of your marks. If your code have the same design style with the others even though the code is not precisely identical, you will be questioned for the explanation and will get ‘F’ if there is any possibility that there is plagiarism.