2025/05/20 4

[pintos] 1주차 - Priority Scheduling 구현 과정

alarm 테스트는 모두 pass했다!이제 priority 테스트를 통과시켜보자.구현 요구 사항ready_list에 있는 스레드를 스케줄하여 running 상태로 만들 때 우선 순위에 맞게 스케줄링되도록 만들어야 한다. schedule()함수를 보면 항상 ready_list의 가장 앞에 있는 스레드가 실행되기 때문에 ready_list에 스레드를 넣을 때 마다 priority순서로 정렬되게 만들어야 한다.그러면 저 세 가지 경로로 ready_list에 스레드를 넣는 부분을 변경해야 한다. alarm-clock에서 3번을 해결했으니 priority-scheduling에서 2번을 해결하면 된다!1. 스케줄링하는 부분 이해하기나는 alarm-clock에서 스레드를 wake할 때 sleep_list의 가장 앞에..

정글/Pintos 2025.05.20

[pintos] 1주차 - Priority Scheduling 문서 해석 / 코드 해석

https://casys-kaist.github.io/pintos-kaist/project1/priority_scheduling.html Priority Scheduling · GitBookNo results matching ""casys-kaist.github.io Priority Scheduling레디큐에 현재 실행 중인 스레드보다 우선순위가 높은 스레드가 추가되면 즉시 우선순위가 높은 스레드에게 프로세서를 양보해야 한다.스레드가 lock, semaphore, condition variable을 기다리고 있다면 가장 높은 우선순위를 가진 waiting 스레드가 첫 번째로 wake되어야 한다.스레드는 언제나 우선순위가 올라가거나 내려가지만, 우선순위가 내려가서 더 이상 가장 높은 우선 순위를 가지지 못..

정글/Pintos 2025.05.20

[pintos] 1주차 - Alarm Clock 구현 과정

일단 키워드 공부를 가벼운 수준으로 끝내고, 막대한 양의 코드를 해석하기 시작했다. (이전 글 참고)코드가 조금 숙지되고 나서 구현을 시작하려니 어디서부터 뭘 구현해야 할지 감이 안 잡혔다.구현 요구사항 파악이 덜 되었기 때문이다..! 그래서 내가 뭘 구현해야 할지부터 차근차근 정리했다.이번 포스팅은 내가 alarm clock 프로젝트를 어떻게 구현했는지에 대한 내용이다. 📌 구현 요구 사항timer_sleep()은 현재 스레드를 ticks 만큼의 시간 동안 재우는 함수이다. 원래 busy-wait으로 구현되어있었던 코드를 살펴보자./* Suspends execution for approximately TICKS timer ticks. */voidtimer_sleep (int64_t ticks) { ..

정글/Pintos 2025.05.20

[pintos] 1주차 - Alarm Clock 코드 정리

📍 함수 정리thread_start()pintos-kaist/threads/thread.c인터럽트를 활성화하여 선점형 스레드 스케줄링을 시작함idle 스레드를 만듦/* Starts preemptive thread scheduling by enabling interrupts. Also creates the idle thread. */voidthread_start (void) { /* Create the idle thread. */ struct semaphore idle_started; sema_init (&idle_started, 0); thread_create ("idle", PRI_MIN, idle, &idle_started); /* Start preemptive thread scheduling...

정글/Pintos 2025.05.20