ready_list 정렬: PintOS에서 ready_list는 우선순위에 따라 정렬되어야 하며, 일반적으로 높은 우선순위의 스레드가 앞에 위치합니다.Running 상태의 스레드와 ready_list의 첫 번째 스레드(가장 높은 우선순위)를 비교하여, ready_list의 스레드가 더 높은 우선순위를 가지면 이 스레드로 컨텍스트 스위칭을 수행합니다.thread_wakeup 기능: 이 함수는 timer_interrupt에 의해 호출되며, sleep_list에 있는 스레드들 중 깨어나야 할 시간이 된 스레드들을 ready_list로 이동시킵니다.thread_wakeup에서의 컨텍스트 스위칭: thread_wakeup 함수가 호출될 때, 해당 함수 내부에서 컨텍스트 스위칭을 수행하는 것이 문제를 일으킬 수 있습니다. 이는 thread_wakeup이 timer_interrupt 내부에서 호출되며, 인터럽트 처리 중에는 일반적으로 컨텍스트 스위칭을 수행하지 않는 것이 일반적이기 때문입니다.thread_wakeup에서 스레드를 ready_list로 이동시킨 후에도 즉시 Running 상태로 전환되지 않는 이유는, 현재 실행 중인 스레드가 여전히 실행 가능한 상태일 수 있기 때문입니다. 즉, 현재 Running 상태의 스레드가 아직 실행 시간을 모두 소진하지 않았거나, 높은 우선순위를 가지고 있을 수 있습니다.thread_wakeup 내부가 아니라, 인터럽트 처리가 완료된 후에 수행하는 것이 바람직합니다. 이는 timer_interrupt가 완전히 처리된 후, 우선순위가 높은 ready_list의 스레드로 스위칭할 수 있도록 합니다.ready_list의 첫 번째 스레드를 비교하는 로직을 검토하고, 필요한 경우 수정하여 우선순위가 가장 높은 스레드가 항상 실행될 수 있도록 해야 합니다.thread_switching 함수와 thread_wakeup 함수의 코드를 검토하면서 이러한 문제를 해결하는 데 집중하는 것이 좋습니다. 현재 구현된 로직과 실제 동작하는 상황 사이의 불일치를 찾아내어 수정하는 것이 핵심입니다.