Priority Scheduling

ready list에 새로 추가된 thread의 우선순위가 현재 CPU를 점유중인 thread의 우선순위보다 높은 경우 기존 thread를 밀어내고 CPU를 점유하도록 한다.

→ 💡push_back 을 다른 함수로 고쳐보면 될 듯 하다.

  1. push back으로 되어있는 부분을 전부 우선순위가 높은 순서대로 정렬하기

❓모르는 부분

  1. thread_create()함수 수정하기
  2. thread_unblock()함수 수정하기
  3. thread_yield()함수 수정하기

→ 모든 ready_list에 넣을때 우선순위로 정렬되도록 만들어 주었다.

thread_set_priority

/* Sets the current thread's priority to NEW_PRIORITY. */
void
thread_set_priority (int new_priority) {
	int ori_priority = thread_current()->priority;
	thread_current ()->priority = new_priority;
	if(ori_priority > new_priority){
		test_max_priority();
	}
}

test_max_priority

cmp_priority()

static bool cmp_priority(struct list_elem *e1, struct list_elem *e2, void *aux UNUSED){
	int64_t priority1 = list_entry(e1, struct thread, elem)->priority;
	int64_t priority2 = list_entry(e2, struct thread, elem)->priority;
	return priority1 > priority2;
}

‼️구현 완료, 해당 테스트 통과