Project1: priority schedule(2) 이번엔 무엇을 바꿔볼까? 이번에는 Synchronization과 관련된 도구들의 scheduling 방식을 살펴보자. 그 도구들은 semaphore, lock, condition variables가 존재한다. 그런데 현재 PintOS는 여러 thread들이 semaphore, lock, condition variables를 얻기 위해 기다릴 경우 먼저 온 놈이 먼저 사용하는 FIFO 방식을 사용하고 있다. Synchronization 도구들을 기다릴 때, 우선순위가 가장 높은 therad가 CPU를 점유하도록 구현해보자. Semaphore 하나의 공유자원을 사용하기 위해 여러 thread가 sema_down 되어 대기하고 있다고 할 때, 이 공유자원..