Pintos Alarm 메모

김우진·4일 전

크래프톤 정글

목록 보기
26/26

알면 좋은 것들

1) ticks는 전역 변수임, 다른 전역 변수들도 주의 깊게 보기
2) 뭘하는지보다 누가 하는지에 집중하는게 좋다 ---> 잠든 스레드는 혼자서 꺠어날 수 없다
3) list_insert_ordered 라는 함수가 존재한다
4) thread.h 에 thread 구조체가 있다
5) timer_sleep(30) --> 지금부터 30틱동안 재워 달라는 의미
6) 비슷비슷해 보이는 함수들이 있어 주의한다 --> 함수 기능 제대로 파악하기
7) 타이머는 스레드가 아니라 별도의 하드웨어


기존: 타이머가 시간을 생신 -> 기다리는 스레드가 계속 실행되며 시간 확인
변경 후: 타이머가 시간을 갱신 -> 인터럽트 처리 코드가 깨울 시간을 확인 -> 해당 스레드 깨움


*static 은 함수안의 변수에 붙었을 때는 함수가 끝나도 유지되는 변수라는 의미이다.
함수 또는 전역 변수에 붙으면 해당 .c 파일 안에서만 접근할 수 있단든 의미이다.


작동 과정 정리

알람은 4개의 함수를 사용

  • timer_sleep() : ticks 만큼 재우겠다!, thread_sleep() 호출
  • thread_sleep() : sleep 목록에 넣기 + block 하기
  • timer_interrupt() : 매 틱마다 thread_awake(ticks) 호출
  • thread_awake() : 시간이 다 된 스레드를 thread_unblock()으로 준비 큐에 넣음

중요한 부분

0개의 댓글