1 / 27

김도 한

OS. 김도 한. OS?. 군대 , 병역특례 , 휴학으로 가는 지름길 저도 …. OS?. CS330 운영체제 및 실험 전공필수 전산과의 가을축제. 뭐 하는 과목인가. 목표 운영체제와 관련된 개념 이해 프로그래밍 스킬. 뭐 하는 과목인가. 실제로 프로그래밍과 선행학습과 인터넷 검색을 통해 운영체제를 깨우침 체득한 내용을 수업에서 다시 알려줌. Project 1. Concepts Thread & Process Machine Abstraction Synchronization

monte
Download Presentation

김도 한

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. OS 김도한

  2. OS? • 군대, 병역특례, 휴학으로 가는 지름길 • 저도…

  3. OS? • CS330 운영체제 및 실험 • 전공필수 • 전산과의 가을축제

  4. 뭐 하는 과목인가 • 목표 • 운영체제와 관련된 개념 이해 • 프로그래밍 스킬

  5. 뭐 하는 과목인가 • 실제로 • 프로그래밍과 선행학습과 인터넷 검색을 통해 운영체제를 깨우침 • 체득한 내용을 수업에서 다시 알려줌

  6. Project 1 • Concepts • Thread & Process • Machine Abstraction • Synchronization • Lock, Semaphore, Condition Variable • Scheduling • Priority • Donation

  7. Project 1 • Programming • Alarm Clock • Timer Interrupt • Sleep • Priority Scheduling • Donation

  8. Project 1 • 어려움 • 처음이라서 무조건 어려움 • 매우 어려움 • 코드 리딩 • 큰 규모의 프로그램 이해하기 • 코드를 읽는 데 많은 시간을 쓸수록 고생이 훨씬 줄어든다 • 내장 라이브러리 pintos/src/lib • Thread의 개념 확실히 이해하기 • Synchronization 혼자 깨우치기 • Semaphore Implementation • Tick > wake_time • Nested Donation

  9. Project 1 • 알고리즘 : 중상 • 디자인 : 중상 • 코딩 : 중하 • 디버깅 : 중하

  10. Project 2 • Concepts • User program • System Call • Memory Layout • Stack, Heap, Text, Data

  11. Project 2 • Programming • Argument Passing • System Call • Exec, wait, open, read, write, …

  12. Project 2 • 어려움 • 한번 해봤지만 그래도 어려움 • 일정 기능들을 제대로 구현할 때까지 디버깅이 불가능하다 • 전체 프로젝트 중에서는 쉬운 편 • 포인터 가지고 놀기 • Palloc_get_page? 뭔지 모르겠지만 따라 써보자 • 내장 library 사용 (strtok_r) • Multi-oom (멀티 오오미!) • Test Driven Development

  13. Project 2 • 알고리즘 : 하 • 디자인 : 중하 • 코딩 : 중 • 디버깅 : 중상

  14. Project 3 • Concepts • Virtual Memory • Paging • Page, Frame, Swapping • Dirty / Accessed bit • Memomry Mapped File • Lazy Loading

  15. 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

  16. Project 3 • 어려움 • Frame, page, swap table을 백지 상태에서 시작해야 한다 • 알고리즘을 만드는 부분은 적으나 확실한 디자인을 우선으로 해서 실수를 최소화 해야 한다 • 전체 프로젝트 중 최고 난이도 • Test code도 이해하기가 힘들다 – 뭘 테스트 하는거지? • Library – Bitmap, Hash • Advanced Student들은 고급 기능에 challenge! • Dead Lock!

  17. Project 3 • 알고리즘 : 중하 • 디자인 : 상 • 코딩 : 상 • 디버깅 : 상

  18. Project 4 • Concepts • File System • Directory • File • Inode

  19. Project 4 • Programming • Buffer Cache • Disk read, write • Write Behind • Extensible File • Modify Inode like Paging • File Growth • Subdirectories

  20. Project 4 • 어려움 • 코드를 따라가다 보면 Assembly 코드가 나오는데 대충이라도 동작을 이해하지 못하면 코딩할 수가 없다 • 마지막이라 그런지 어려움 • 3번까지 프로젝트를 하면서 자신감이 붙을 때 쯤 다시 좌절을 느낌 • Inode Design에 따라 코드가 많이 달라짐 • Test Driven Development • Dead Lock!

  21. Project 4 • 알고리즘 : 중하 • 디자인 : 중상 • 코딩 : 상 • 디버깅 : 상

  22. 가급적이면 프로젝트 메이트와 함께 디자인, 코딩 진행 – 페어 프로그래밍의 새로운 재미

  23. 매번 프로젝트를 시작하기 전에 새로운 코드를 찬찬히 이해하는 것이 중요함 • 방대한 스케일의 코드가 유기적으로 동작하고 있음

  24. 수업을 열심히 들을 뿐만 아니라 매뉴얼, 인터넷 검색, 선행학습이 필요함! • 실수를 많이하는 중요한 내용 중 대부분은 수업 시간에 안가르쳐 줌 • 열심히 실패해서 깨우치고 나면 그 때 수업에서 알려 줌

  25. 코딩하기 전에 디자인이 확실하지 않으면 훨씬 많은 시간을 낭비 • 아무리 철저하게 고려해도 빠뜨린 부분들이 나온다

  26. 소스 보지 마세요 • 인터넷에 있는 많은 소스들은 결과는 맞을지 몰라도 구현은 엉터리인게 많음 • 편법을 안쓰면 실력이 상승

  27. 감사합니다

More Related