기타/SW 사관학교 정글
-
[SW 정글 65일차] Pintos project 2 입문기타/SW 사관학교 정글 2021. 10. 7. 02:36
오늘 저녁까지 개념공부를 마치고 Pintos project 2 과제에 입문하려고 한다. 바로 구현에 들어가기 전에 이번에는 어떠한 것을 해야하는지를 정리하고 내일부터 코드를 보기 시작할 것이다. 일단은 아래 사이트에서 project2: user programs introduction을 읽고 정리하려고 한다. https://casys-kaist.github.io/pintos-kaist/project2/introduction.html Introduction · GitBook Project2: User Programs Now that you've worked with Pintos and are becoming familiar with its infrastructure and thread package, it'..
-
[SW 정글 64일차] 프로세스의 제어기타/SW 사관학교 정글 2021. 10. 6. 02:56
오늘은 컴퓨터 시스템 8장을 모두 읽고 정리하고 싶은 내용들을 여기에 정리하려고 한다. 아마 이 개념들이 이번 project2를 진행하는 데 있어 중요한 개념들이 될 것이라고 생각한다. Unix는 프로세스를 제어하기 위한 많은 시스템 콜을 제공하는데 어떠한 시스템 콜들이 있는지 알아보자. 1. 프로세스 ID 가져오기 마치 사람들이 고유의 주민번호를 가진 것처럼 프로세스들은 각자의 ID를 가지고 있다. 시스템 콜로 프로세스의 ID를 알 수 있는데 getpid()는 이 함수를 호출한 프로세스의 ID를 리턴한다. 그리고 getppid()는 함수를 호출한 부모 프로세스의 ID를 리턴한다. #include #include pid_t getpid(void); pid_t getppid(void); 2. 자식 프로세스..
-
[SW 정글 63일차] 예외 상황기타/SW 사관학교 정글 2021. 10. 5. 02:57
오늘은 새로운 주차를 시작하기 전에 컴퓨터 시스템 8장 예외적인 제어흐름을 읽으면서 안 내용들을 정리하려고 한다. 이전에 읽은 적이 있지만 이번에 다시 읽으면서 제대로 나의 것으로 만들려고 노력했다. 1. 예외 상황 책에 나온 예외 상황에 대한 정의를 말하기 전에 내가 책을 읽고 이해한 예외 상황에 대해 말하려고 한다. 우리는 어떠한 프로그램을 실행하고 그 프로그램은 프로세스가 된다. 프로세스에는 인스트럭션(instruction)들이 존재하고 인스트럭션이 순차적인 흐름으로 진행하면서 예기치 못한 상황을 접할 수 있다. 예를 들면, 0으로 나누는 연산을 한다던가, 메모리 상에 접근 불가한 영역을 접근하려고 한다던가 등.. 이러한 상황들을 예외 상황이라고 생각한다. 예외 상황은 부분적으로는 하드웨어와 운영체..
-
SW 정글 8주차 회고기타/SW 사관학교 정글 2021. 10. 4. 10:13
[8주차 회고] 2021년 10월 04일 월요일, 8주차가 마무리 되는 날이고 8주차는 전체적으로 어땠는지 이 글을 쓰면서 돌아보려고 한다. 이번 주차부터 pintos를 만들기 시작했다. OS프로젝트는 시작하기 전에 많은 말들이 떠돌았는데 1기 분들이 정말 어려워했고 진행하던 스터디를 모두 중단할만큼 시간이 부족한 프로젝트이다, 우리 손으로 어떻게 OS를 만드냐 등... 일단은 첫 주차를 보내면서 공부를 한 소감은 내게 주어진 문제를 파악하고 해결해나가는 과정, 앞으로 나아가는데 있어 발목을 잡을만큼 이해가 되지 않는 것은 priority donation말고는 없었다. 그래서 팀원과 주차를 시작하면서 계획한대로 하루의 목표량을 해내며 진행이 되었고 일요일에는 나만의 시간을 가지면서 조금 더 os에 대한 ..
-
[SW 정글 62일차] 스케쥴링을 더 알고싶다.기타/SW 사관학교 정글 2021. 10. 4. 03:19
오늘은 어제 공부한 기본적인 스케쥴링 이외에 조금 더 advanced된 스케쥴링을 공부했다. 공부자료로는 three easy pieces를 활용했다. 오늘 정리할 것은 Lottery scheduling이다. Multi-level Feedback Queue는 내가 종이에 정리한 내용을 사진으로 첨부하려고 한다. 지금 시간도 시간인지라 다시 글로 정리하면 아마 일출을 볼 것같기 때문.. 1. Multi-level Feedback Queue 2. Lottery scheduling 어제 정리한 스케쥴링들은 어떻게 하면 최적의 반환 시간을 유지할 수 있을지, 어떻게 하면 최적의 응답 시간을 유지할 수 있을지에 대한 고민을 풀어나가면서 나온 스케쥴링이다. 하지만 Lottery scheduling은 반환 시간이나 응..
-
[SW 정글 61일차] Scheduling (스케쥴링)기타/SW 사관학교 정글 2021. 10. 3. 03:36
오늘은 pintos Project 1 과제를 완료하고 조금 더 운영체제에 대한 지식을 나의 것으로 만드는 시간을 가졌다. 아직, Advanced scheduling 구현을 하지는 못했지만 일단은 옵션이고 지금 내가 알고 싶은 것을 공부하고 싶었다. 공부 자료는 권영진 교수님이 추천해준 three easy peices이다. 일단은 CPU Scheduling까지 읽었는데 정말 이해하기 쉽게 써지기도 했고 OS라는 과목에서 자주 나오는 개념을 조금 다른 시각에서 해석해주는 것이 좋았다. 오늘 배운 것중에서 그래도 project 1과 가장 연관이 많은 scheduling에 대해 정리하려고 한다. 1. 선점형(preemptive) vs 비선점형(non-preemptive) 스케쥴링 먼저, 스케쥴링 하나하나를 정리..
-
[SW 정글 60일차] Pintos Project 1. Priority Inversion 해결하기기타/SW 사관학교 정글 2021. 10. 1. 21:38
오늘은 어제 목표로 한 conditional variable쪽을 수정하고 priority inversion을 해결해주는 방법인 priority donation을 구현하는 것을 했다. 1. 내가 해야할 것은? conditional variable 쪽 수정을 하는 것은 어제 설명과 똑같다. 기존의 코드에서 wait_list에서 스레드가 기다리는 구조인데 wait_list에 무조건 tail쪽으로 push가 되므로 priority scheduling이 이루어지지 않는다. 이를 수정하는 것이 내가 할 일이다. 그리고 오늘의 main 과제는 priority scheduling에 의한 priority inversion 문제 해결하기이다. priority inversion이란 다음과 같은 현상을 말한다. 우선순위가 가..
-
[SW 정글 58일차] Pintos Project 1. Alarm clock기타/SW 사관학교 정글 2021. 9. 30. 02:54
오늘부터 PintOs project 1. Alarm clock 구현에 들어가기 시작했다. 일단은 https://casys-kaist.github.io/pintos-kaist/에 설명되어있는 우리가 해결해야할 과제를 파악했다. 1. 내가 해결해야할 것은? timer_sleep (int64_t ticks) { int64_t start = timer_ticks (); ASSERT (intr_get_level () == INTR_ON); while (timer_elapsed (start) < ticks) thread_yield (); } Pintos에서 기본적으로 구현한 timer_sleep()함수의 구조는 위와 같다. timer_sleep()은 인자로 받은 ticks시간만큼 어떠한 쓰레드를 잠들게 하는 것(r..