Page Lock

최승혁·2023년 6월 7일
0

Swap operation 중의 page lock

절차

  • swap-in 중 kernel은 prefetching을 시도
  • Prefetching을 위해 새 page를 할당
  • 새로 할당된 page는 초기에 lock이 걸려있는 상태
    • Data가 없는 상태에서 스레드가 접근하면 동시성 에러 발생
  • Swap-in operation 동작이 끝난 후 page unlock
  • 만약 unlock 하기 전, 스레드가 해당 page에 접근하면 커널은 다음과 같은 처리를 진행
    • Page wait table에 스레드를 추가
    • 접근한 스레드를 대기 큐나 블록 큐로 상태 전이
    • Swap operation 완료 후 page wait table을 통해 해당 페이지에 접근하려 했던 스레드들을 레디 큐로 전이
    • Kernel의 scheduling 알고리즘에 따라 다시 스레드 실행

page wait table

  • Page address를 기준으로 스레드를 저장하는 해시 테이블 구조체
  • Lock 중인 page에 접근하는 모든 스레드를 저장
  • mm/filemap.c 참조

page structur

  • long flags bit를 활용하여 page의 상태 표시
  • flags는 include/linux/page_flags.h 참조

관련 함수

  • lock_page(): page lock 설정
  • unlock_page(): page lock 해제
  • PageLocked(): page lock 검사
  • trylock_page(): page lock 검사
profile
그냥 기록하는 블로그

0개의 댓글