Introduction to Operating System (Undergraduate Course, Spring 2018): ELE 3021
- 강사
- 조교
- 시간 및 장소
- 강의(Lecture) : 화요일 10:00~12:00, 서울 IT.BT관 207 강의실
- 실습(Lab) : 목요일 10:00~12:00, 서울 IT.BT관 503 강의실
강의 개요
The objective of this class is to provide the student the basic concepts in operating systems and implementation details. Operating System consists of several key concepts: process management, memory management, file system management and I/O subsystem. In this class, we will examine the details of each topic. Student will get exposed to implementation aspect of individual concepts via homeworks and course projects.
운영체제는 컴퓨터 및 정보가전(핸드폰, PDA, TV…), 각종 기기(자동차, 비행기, 발전소)등을 구동하는데 가장 근간이 되는 소프트웨어이다. 최근 각종 하드웨어 기술이 발달되고, 다양한 기기들이 마이크로 프로세서, 메모리, 저장장치, 네트웍 장치를 가지고 있음에 따라, 이들 하드웨어를 구동하고 상위응용프로그램에게 연동서비스를 제공하는 운영체제의 역할이 매우 강조되고 있다. 최근 기업체의 운영체제 기술 핵심인력에 대한 수요가 매우 급격히 증가하는 것도 이와 맥락을 같이 한다 하겠다. 본 과목에서는 운영체제의 개념과 실제 내용에 대해서 학습한다. 프로세스와 쓰레드의 구조 및 작동방법, 메모리 관리기법, CPU 스케쥴링 기법, 저장장치, 입출력장치 주제들에 대해서 학습한다. 본 과목에서는 개념에 대한 학습과 더불어 다양한 프로그램들을 실제 작성함으로써 관련 주제에 대한 실용지식 함양을 목적으로 한다.
- 운영체제에서 학습한 내용을 실습용 운영체제인 PintOS 상에서 실제 구현해 본다. 효율적인 실습을 위해 필요한 소스코드와 환경을 모아서 VDI이미지로 패키지 해놓았다. 실습을 위해 다음 파일을 설치하기 바란다. pintos.ova
- 운영체제 실습 강의 자료 파일은 다음링크를 참고하기 바란다: 운영체제_실습_강의자료.pdf
본과목은 운영체제 이론과 코딩을 통한 실습을 병행하는 수업이다. 커널 개발자들에게는 프로그램 개발시 현란한 편집기가 주어지지 않는다. 작은 텍스트 기반 터미널, 그리고 텍스트 기반 에디터의 사용부터 시작하기 바란다. 이를 위한 기초 도구들에 대한 학습은 시스템 프로그래밍 초기에 다룬다. 에디터, 디버거, 소스 관리도구등의 사용 역량에 따라 개발 효율이 천차만별이다. 수학문제를 풀때, 난잡하게 풀어나가는 것과 차곡차곡 한줄씩 풀어나가는 것은 문제푸는 속도에 영향을 미친다. 제대로된 툴 사용법을 익히는 것은 아무리 강조해도 지나치지 않다. 도구 사용에 대한 간단한 자료는 다음을 참고하기 바란다.
- 도구 사용법 (vi, emacs, ctags, etags, cscope, svn/git) : 도구_사용법
- 교재
- 주 교재
- 운영체제, 아주 쉬운 세가지 이야기, 원유집 외 역, 홍릉과학출판사
- 보조 교재
- Beginning Linux Programming by Neil Matthew and Richard Stones, Nov, 2007
- Understanding the Linux Kernel, 3rd Ed.,Daniel Bovet and Marco Cesati
- Linux Kernel Development, 2nd Ed., Robert Love, Jan. 2005
- UNIX Internals: The New Frontiers by Uresh Vahalia, Oct. 1995
- 주 교재
운영체제와 관련된 질문과 코드등은 피아자를 통해서 공지된다. piazza는 온라인 강의용 사이트로서 전세계 유수대학에서 강의진행을 위해 사용되고 있다. piazza.com에 한양대학교 도메인의 이메일로 가입한 후 CSE 3021 과목에 등록하면 된다. 기 수간신청한 학생들은 이미 등록이 되었을 것이며, 추가 등록한 학생들은 개별적으로 피아자 사이트에서 본 과목에 등록하면 된다. piazza는 영어로는 plaza라고 하면 ‘광장’을 뜻한다. 로마의 저 유명한 스페인 광장의 이름은 Piazza D’Espagna 이다. (Plaza Of Splain)이라는 뜻이다. 본 과목의 피아짜 사이트 주소는 아래와 같다.
일정
- 1 주차
- 이론(3/6): Introduction to Operating Systems, The Process, Process API
- 실습(3/8): Introduction to Pintos, Pintos 실습 환경 설정
- 2 주차
- 이론(3/13): Limited Direct Execution, Scheduling – Introduction, Multi-Level Feedback Queue
- 실습(3/15): Command Line Parsing
- 3 주차
- 이론(3/20): Scheduling – Proportion Share, Multiprocessor Scheduling
- 실습(3/22): System Call
- 4 주차
- 이론(3/27): Address Spaces, Memory API, Address Translation, Exam I
- 실습(3/29): Hierarchical Process Strucutre
- 5 주차
- 이론(4/3): Segmentation, Free-Space Management
- 이론(4/5): Paging Introduction, Paging – Faster Translations (TLBs), Smaller Tables
- 6 주차
- 실습(4/10): File Descriptor, Denying Write to Executable
- 실습(4/12): Alarm System Call
- 숙제 1 (due on 4/18, 18:00): User Program (Command Line Parsing, System Call, Hierarchical Process Structure, File Description, Denying Write to Executable)
- 7 주차
- 실습(4/17): Priority Scheduling, Priority Scheduling and Synchronization
- 이론(4/19): Beyond Physical Memory – Mechanisms, Policies
- 8 주차
- 중간 고사 (4/24, 10:00)
- 9 주차
- 이론(5/1): Concurrency, Thread API, Locks, Lock-based Concurrent Data Structures
- 실습(5/3): Priority Inversion Problem, Multi-Level Feedback Queue Scheduling
- 10 주차
- 이론(5/8): Condition Variables, Semaphores, Common Concurrency Problems
- 실습(5/10): Virtual Memory
- 숙제 2 (due on 5/11, 18:00): Thread (Alarm System Call, Priority Scheduling, Priority Scheduling, Priority Scheduling and Synchronization, Priority Inversion Problem, Multi-level feedback queue scheduler)
- 11 주차
- 이론(5/15): Event-based Concurrency
- 실습(5/17): Memory Mapped File
- 12 주차
- 이론(5/22): 석가 탄신일
- 실습(5/24): Swapping
- 13 주차
- 이론(5/29): I/O Devices, Hard Disk Drives, RAIDs, Exam II
- 실습(5/31): Stack, Buffer Cache
- 숙제 3 (due on 6/1, 18:00): Virtual Memory (Virtual Memory, Memory Mapped File, Swapping, Stack)
- 14 주차
- 이론(6/5): File and Directories, File System Implementation
- 실습(6/7): Extensible File
- 15 주차
- 이론(6/12): Locality and The Fast File System, Crash Consistency, Log-structured File Systems
- 실습(6/14): Subdirectory
- 16 주차
- 기말고사 (6/19, 10:00)
- 숙제 4 (due on 6/22, 18:00): Filesystem (Buffer cache, Extensible File, Subdirectory)