분류 전체보기
-
[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 정글 59일차] Pintos Project 1. Priority Scheduling카테고리 없음 2021. 9. 30. 18:59
오늘부터 PintOs project 1. Priority Scheduling 구현에 들어가기 시작했다. 일단은 https://casys-kaist.github.io/pintos-kaist/에 설명되어있는 우리가 해결해야할 과제를 파악했다. 1. 내가 해야할 것은? 기존의 Pintos의 스케쥴링 방식은 아래와 같다. 새로운 스레드가 생성되거나 running 혹은 blocked 상태에서 ready 상태로 전이될 때, 스레드들은 ready_list에 담겨 CPU 선점을 기다린다. 여기서, ready_list에 삽입하는 기준은 따로 없고 그냥 맨 뒤에 넣어준다. 즉, Round Robin 스케쥴링을 사용하는 것이다. 그래서 Project1의 2번째 과제로 다른 스레드보다 빨리 CPU를 선점해야하는 스레드를 먼저..
-
[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..
-
[SW 정글 57일차] 프로세스 상태기타/SW 사관학교 정글 2021. 9. 29. 02:51
오늘은 Pintos PROJECT1 THREADS의 첫번째 과제인 Alaram Clock을 reimplement시키기위해 알아야 할 프로세스 상태에 대해 정리하려고 한다. 1. 프로세스 상태 어떠한 프로그램이 실행되었을 때, 커널로부터 메모리를 할당받으면서 프로세스가 되는데 프로세스는 위의 사진과 같은 상태를 가진다. 한 부분씩 보며 해당 상태가 어떠한 상태인지 이해해보자. 1) create 상태 create 상태는 작업(job)을 커널에 등록하고 PCB할당 및 프로세스가 생성된 상태이다. create 상태에서는 가용 메모리 공간을 체크하여 메모리를 할당받은 프로세스는 ready 상태, 할당받지 못한 프로세스는 suspende ready 상태로 전이를 한다. 2) Ready 상태 ready 상태는 프로세..
-
[SW 정글 56일차] Pintos 입문하면서 용어 정리하기기타/SW 사관학교 정글 2021. 9. 28. 03:38
오늘은 Pintos 만들기에 들어갔다. 일단은 document를 읽으면서 무엇을 해야하는지 알아보고 document에서 나온 용어 중 정리하면 좋을 개념들을 정리하려고 한다. 1. Kernel vs Operating System(OS) 개인적으로 커널은 운영체제라는 개념과 헷갈리는 용어이다. 커널은 운영체제의 핵심이 되는 컴퓨터 프로그램의 하나로 하드웨어와 프로세스의 운용을 위한 소프트웨어이다. 커널이라고 하면 운영체제를 말하기도 하고 응용 프로그램들의 실행 환경을 이루고 운용하는 것을 말하기도 한다. 시스템의 자원은 제한되어 있지만 동작되고 있는 프로그램은 많기 때문에 커널은 한 프로그램이 언제 얼마큼 자원을 써야 할지 결정하고 운영 시켜야 한다. 커널의 특징은 다음과 같다. - 커널은 디스크에 파일로..
-
SW 정글 7주차 회고기타/SW 사관학교 정글 2021. 9. 27. 11:50
[7주차 회고] 2021년 09월 27일 월요일, 7주차가 마무리 되는 날이고 7주차는 전체적으로 어땠는지 이 글을 쓰면서 돌아보려고 한다. 7주차를 모두 보내고 난 오늘, 솔직히 많은 아쉬움이 남는 날이다. 7주차는 추석연휴를 끼고 있어서 다른 주차보다 3일이 더 주어졌다. 나는 추석연휴에도 평소처럼 강의실에 나와서 공부를 했다. 나는 개인적으로 계획이 없이 진행하는 것을 선호하지 않아서 7주차가 시작되는 09월 16일 이번 주차는 어떻게 보낼지 계획을 짰다. 일단은 아침에 missing semester를 들을려고 계획을 잡았다. 강의가 총 11강의지만 vim, QnA, 흥미로운 주제들을 skip한다는 가정 하에 8강의만 들으면 됐고 7추가는 총 10일 주어지기에 하루에 한 강의씩들으면 될 것이라고 생..
-
[SW 정글 55일차] HEAD 메소드는 왜 쓸까?기타/SW 사관학교 정글 2021. 9. 26. 16:02
이번 웹 서버 구현 과제를 진행하면서 컴퓨터 시스템 책에 있는 과제문제에 HEAD 메소드 요청에 대한 응답을 구현하라는 것이 있었다. 이번 주 화요일(2021.09.23)에 HEAD메소드가 무엇인지 알아보고 구현을 했는데 지금 돌아보니 왜 HEAD를 쓰는지는 안알아봤다. 그래서 생각난 김에 정리해보려고 한다. 일단은 간단하게 HEAD 메소드가 무엇인지 알아보자. HEAD 메서드는 리소스를 GET메서드로 요청했을 때 응답으로 오는 헤더부분만 요청하는 메소드이다. HEAD 메서드에 대한 응답은 본문(body부분)을 가져선 안되며, 본문이 존재하더라도 무시해야 한다. 그러나, 응답으로 받는 헤더에는 본문 콘텐츠를 설명하는 개체 헤더는 포함할 수 있다. 개체 해더는 entity-body에 대한 메타데이터를 필드..