270 likes | 466 Views
OS. 김도 한. OS?. 군대 , 병역특례 , 휴학으로 가는 지름길 저도 …. OS?. CS330 운영체제 및 실험 전공필수 전산과의 가을축제. 뭐 하는 과목인가. 목표 운영체제와 관련된 개념 이해 프로그래밍 스킬. 뭐 하는 과목인가. 실제로 프로그래밍과 선행학습과 인터넷 검색을 통해 운영체제를 깨우침 체득한 내용을 수업에서 다시 알려줌. Project 1. Concepts Thread & Process Machine Abstraction Synchronization
E N D
OS 김도한
OS? • 군대, 병역특례, 휴학으로 가는 지름길 • 저도…
OS? • CS330 운영체제 및 실험 • 전공필수 • 전산과의 가을축제
뭐 하는 과목인가 • 목표 • 운영체제와 관련된 개념 이해 • 프로그래밍 스킬
뭐 하는 과목인가 • 실제로 • 프로그래밍과 선행학습과 인터넷 검색을 통해 운영체제를 깨우침 • 체득한 내용을 수업에서 다시 알려줌
Project 1 • Concepts • Thread & Process • Machine Abstraction • Synchronization • Lock, Semaphore, Condition Variable • Scheduling • Priority • Donation
Project 1 • Programming • Alarm Clock • Timer Interrupt • Sleep • Priority Scheduling • Donation
Project 1 • 어려움 • 처음이라서 무조건 어려움 • 매우 어려움 • 코드 리딩 • 큰 규모의 프로그램 이해하기 • 코드를 읽는 데 많은 시간을 쓸수록 고생이 훨씬 줄어든다 • 내장 라이브러리 pintos/src/lib • Thread의 개념 확실히 이해하기 • Synchronization 혼자 깨우치기 • Semaphore Implementation • Tick > wake_time • Nested Donation
Project 1 • 알고리즘 : 중상 • 디자인 : 중상 • 코딩 : 중하 • 디버깅 : 중하
Project 2 • Concepts • User program • System Call • Memory Layout • Stack, Heap, Text, Data
Project 2 • Programming • Argument Passing • System Call • Exec, wait, open, read, write, …
Project 2 • 어려움 • 한번 해봤지만 그래도 어려움 • 일정 기능들을 제대로 구현할 때까지 디버깅이 불가능하다 • 전체 프로젝트 중에서는 쉬운 편 • 포인터 가지고 놀기 • Palloc_get_page? 뭔지 모르겠지만 따라 써보자 • 내장 library 사용 (strtok_r) • Multi-oom (멀티 오오미!) • Test Driven Development
Project 2 • 알고리즘 : 하 • 디자인 : 중하 • 코딩 : 중 • 디버깅 : 중상
Project 3 • Concepts • Virtual Memory • Paging • Page, Frame, Swapping • Dirty / Accessed bit • Memomry Mapped File • Lazy Loading
Project 3 • Programming • Paging • Frame Table • Supplement Page Table • Swap Table • Swap In/Out • Stack Growth • Memory Mapped File • mmap, munmap – System Call • Lazy Loading
Project 3 • 어려움 • Frame, page, swap table을 백지 상태에서 시작해야 한다 • 알고리즘을 만드는 부분은 적으나 확실한 디자인을 우선으로 해서 실수를 최소화 해야 한다 • 전체 프로젝트 중 최고 난이도 • Test code도 이해하기가 힘들다 – 뭘 테스트 하는거지? • Library – Bitmap, Hash • Advanced Student들은 고급 기능에 challenge! • Dead Lock!
Project 3 • 알고리즘 : 중하 • 디자인 : 상 • 코딩 : 상 • 디버깅 : 상
Project 4 • Concepts • File System • Directory • File • Inode
Project 4 • Programming • Buffer Cache • Disk read, write • Write Behind • Extensible File • Modify Inode like Paging • File Growth • Subdirectories
Project 4 • 어려움 • 코드를 따라가다 보면 Assembly 코드가 나오는데 대충이라도 동작을 이해하지 못하면 코딩할 수가 없다 • 마지막이라 그런지 어려움 • 3번까지 프로젝트를 하면서 자신감이 붙을 때 쯤 다시 좌절을 느낌 • Inode Design에 따라 코드가 많이 달라짐 • Test Driven Development • Dead Lock!
Project 4 • 알고리즘 : 중하 • 디자인 : 중상 • 코딩 : 상 • 디버깅 : 상
가급적이면 프로젝트 메이트와 함께 디자인, 코딩 진행 – 페어 프로그래밍의 새로운 재미
매번 프로젝트를 시작하기 전에 새로운 코드를 찬찬히 이해하는 것이 중요함 • 방대한 스케일의 코드가 유기적으로 동작하고 있음
수업을 열심히 들을 뿐만 아니라 매뉴얼, 인터넷 검색, 선행학습이 필요함! • 실수를 많이하는 중요한 내용 중 대부분은 수업 시간에 안가르쳐 줌 • 열심히 실패해서 깨우치고 나면 그 때 수업에서 알려 줌
코딩하기 전에 디자인이 확실하지 않으면 훨씬 많은 시간을 낭비 • 아무리 철저하게 고려해도 빠뜨린 부분들이 나온다
소스 보지 마세요 • 인터넷에 있는 많은 소스들은 결과는 맞을지 몰라도 구현은 엉터리인게 많음 • 편법을 안쓰면 실력이 상승