Cache Policy

class pf.cache.PfCachePolicy[소스]

기반 클래스: ABC, Generic

buffer에서 page frame을 관리하는 cache policy의 기반 추상 클래스입니다.

abstractmethod access(key: Key) None[소스]

key에 해당하는 page frame를 가장 최근에 접근한 것으로 표시합니다.

매개변수:

key (Key) – 대상 page frame의 key.

abstractmethod insert(key: Key) None[소스]

key에 해당하는 page frame를 cache에 추가합니다.

매개변수:

key (Key) – 대상 page frame의 key.

abstractmethod remove(key: Key) None[소스]

key에 해당하는 page frame를 cache에서 제거합니다.

매개변수:

key (Key) – 대상 page frame의 key.

abstractmethod victims() Iterator[소스]

cache에서 evict 후보인 page frame들을 yield 합니다.

생성:

Key – evict 후보 page frame들의 key.

class pf.cache.PfRandomPolicy(seed: int = 0)[소스]

기반 클래스: PfCachePolicy, Generic

evict 후보 page frame을 무작위로 선택하는 cache policy 클래스입니다.

변수:
  • _seed (int) – 랜덤 시드.

  • _rng (Random) – 랜덤 생성기.

  • _set (set[Key]) – cache에 있는 page frame들의 key를 관리하는 컨테이너.

__init__(seed: int = 0) None[소스]

cache policy를 초기화합니다.

매개변수:

seed (int) – 랜덤 시드 (기본값: 0).

access(key: Key) None[소스]

key에 해당하는 page frame를 가장 최근에 접근한 것으로 표시합니다.

매개변수:

key (Key) – 대상 page frame의 key.

insert(key: Key) None[소스]

key에 해당하는 page frame를 cache에 추가합니다.

매개변수:

key (Key) – 대상 page frame의 key.

remove(key: Key) None[소스]

key에 해당하는 page frame를 cache에서 제거합니다.

매개변수:

key (Key) – 대상 page frame의 key.

victims() Iterator[소스]

cache에서 evict 후보인 page frame들을 yield 합니다.

생성:

Key – evict 후보 page frame들의 key.

class pf.cache.PfFifoPolicy[소스]

기반 클래스: PfCachePolicy, Generic

evict 후보 page frame을 FIFO 순서로 선택하는 cache policy 클래스입니다.

변수:

_table (OrderedDict[Key, None]) – cache에 있는 page frame들의 key를 관리하는 컨테이너.

__init__() None[소스]

cache policy를 초기화합니다.

access(key: Key) None[소스]

key에 해당하는 page frame를 가장 최근에 접근한 것으로 표시합니다.

매개변수:

key (Key) – 대상 page frame의 key.

insert(key: Key) None[소스]

key에 해당하는 page frame를 cache에 추가합니다.

매개변수:

key (Key) – 대상 page frame의 key.

remove(key: Key) None[소스]

key에 해당하는 page frame를 cache에서 제거합니다.

매개변수:

key (Key) – 대상 page frame의 key.

victims() Iterator[소스]

cache에서 evict 후보인 page frame들을 yield 합니다.

생성:

Key – evict 후보 page frame들의 key.

class pf.cache.PfClockPolicy(chance: int = 2)[소스]

기반 클래스: PfCachePolicy, Generic

evict 후보 page frame을 Clock 알고리즘으로 선택하는 cache policy 클래스입니다.

변수:
  • _chance (int) – Clock 알고리즘에서 잔여 유예 횟수.

  • _slots (list[Key | None]) – cache에 있는 page frame들의 key를 관리하는 컨테이너.

  • _counter (list[int]) – slot에 해당하는 잔여 유예 횟수를 관리하는 컨테이너.

  • _find (dict[Key, int]) – key에 해당하는 slot의 인덱스를 관리하는 컨테이너.

  • _frees (list[int]) – free slot의 인덱스를 관리하는 컨테이너.

  • _hand (int) – Clock 알고리즘에서 현재 가리키고 있는 인덱스.

__init__(chance: int = 2) None[소스]

cache policy를 초기화합니다.

매개변수:

chance (int) – Clock 알고리즘에서 잔여 유예 횟수 (기본값: 2).

access(key: Key) None[소스]

key에 해당하는 page frame를 가장 최근에 접근한 것으로 표시합니다.

매개변수:

key (Key) – 대상 page frame의 key.

insert(key: Key) None[소스]

key에 해당하는 page frame를 cache에 추가합니다.

매개변수:

key (Key) – 대상 page frame의 key.

remove(key: Key) None[소스]

key에 해당하는 page frame를 cache에서 제거합니다.

매개변수:

key (Key) – 대상 page frame의 key.

victims() Iterator[소스]

cache에서 evict 후보인 page frame들을 yield 합니다.

생성:

Key – evict 후보 page frame들의 key.

class pf.cache.PfCustomPolicy[소스]

기반 클래스: PfCachePolicy, Generic

evict 후보 page frame을 사용자가 구현한 방식으로 선택하는 cache policy 클래스입니다.

이 클래스의 attribute는 자유롭게 정의할 수 있습니다.

__init__() None[소스]

cache policy를 초기화합니다.

이 클래스의 초기화 argument는 자유롭게 정의할 수 있습니다. 다만, 기본값을 정의해야 테스트에서 사용할 수 있습니다.

access(key: Key) None[소스]

key에 해당하는 page frame를 가장 최근에 접근한 것으로 표시합니다.

매개변수:

key (Key) – 대상 page frame의 key.

insert(key: Key) None[소스]

key에 해당하는 page frame를 cache에 추가합니다.

매개변수:

key (Key) – 대상 page frame의 key.

remove(key: Key) None[소스]

key에 해당하는 page frame를 cache에서 제거합니다.

매개변수:

key (Key) – 대상 page frame의 key.

victims() Iterator[소스]

cache에서 evict 후보인 page frame들을 yield 합니다.

생성:

Key – evict 후보 page frame들의 key.