Pintos Project1 day 7

John Jean·2024년 8월 30일

pintos

목록 보기
7/7

핀토스

📍 진행상황

[test_case] donate - munliple, multiple2

  • thread 구조체에 새로 추가

    • struct list donators; : 자신에게 우선순위를 기부해준 스레드의 명단 -> 우선순위를 복구할 때 필요함.
    • struct lock *waiting_lock; : 해당 스레드가 기다리고 있는 락을 저장함.
    • struct list_elem donation_elem; : donators를 관리하기 위해 새로 추가한 필드. 기존에 존재하던 elem을 사용하면 안될까 라는 의문 때문에 꽤 오래 고민했었음.
  • lock 구조체에 새로 추가

    • `struct list_elem elem;
  • 새로 추가한 함수

    • remove_with_lock();
    • refresh_priority();
  • donate_priority 수정

// synch.c
void donate_pri(struct lock *l)
{
	struct thread *curr = thread_current();
	struct thread *cur = thread_current();
	struct thread *holder = cur->waiting_lock->holder;
	holder->priority = cur->priority;
}

📍 배운점..

  • thread 구조체 안에 elem과 donators에 넣을 elem을 구분해야 하는 이유

    elem 의 독립성을 확보하기 위함.

  • 내가 올린 gdb 사용법. 내가 올려놓고 정작 사용은 한 번도 하지 않았음. 더 익숙해지면 꽤 쓸만할듯

🐵 이곳에 할일을 추가...

priority-condvar

mlfqs 전부 다!!

profile
크래프톤 6기 정글러

0개의 댓글