OS 조교 답변입니다.
제가 설계하신 바를 정확히 이해했는지는 모르겠는데, thread_wakeup 함수가 timer interrupt 처리기 안에서만 실행될 것이라면, 그냥 ready_list의 맨 앞에 필요한 thread를 넣어주면 자동으로 schedule()에서 그 thread로 context switching이 일어나지 않을까요?
각 함수가 어떤 context에서 실행되는지 ASSERT로 계속 확인하는 것이 코드 흐름 파악에 도움이 됩니다.
보내주신 코드를 살펴봤더니, list_remove() 함수 활용 관련해서 문제가 있는 것 같습니다. lib/kernel/list.c 에 달려 있는 주석을 찬찬히 읽어보시는 걸 추천드립니다.