Windows API의 공유 메모리 과정

  • 매핑될 파일을 위한 file mapping 생성
  • 맵드 파일의 view를 프로세스의 가상 주소 공간 내에 구축
    • 생산자는 공유 메모리 객체를 메모리 매핑을 기능을 이용하여 생성한다.
    • CreateFile()을 통하여 파일을 열고 HANDLE을 반환한다.
    • CreateFileMapping()을 토앟여 매핑을 생성하여 named shared-memory object를 생성
    • MapViewOfFile()을 통하여 view를 생성한다.

버디 시스템

  • 물리적으로 인접한 페이지로 구성된 고정 크기의 세그먼트를 사용하여 메모리 할당
  • power-of-2 allocator를 사용하여 메모리 할당
    • 2의 거듭제곱 크기 단위로 요청을 충족
  • ex: 256KB 청크가 있을 때 커널이 21KB를 요청한다면 256KB 를 128KB 크키의 2개로 분할 하고 또 한개를 64 → 32 로 분할하고 32에서 21KB를 할당 하는 방식
  • 장점: 사용되지 않는 청크를 더 큰 크기의 청크로 빠르게 병합 할 수 있다.
  • 단점: 단편화

대체 전략 슬랩 할당기

  • 슬랩(Slab)은 하나 이상의 물리적으로 인접한 페이지
  • 캐시(Cache)는 하나 이상의 슬랩으로 구성
  • 커널 자료구조 마다 하나의 캐시 배정
    • 각 캐시는 objects로 채워짐
  • 캐시가 생성될 때, free로 표시된 object로 채워짐
  • 자료구조가 저장될 때 object가 used로 표시
  • 슬랩이 사용중이면 다음 슬랩을 배정함
  • 장점: 단편화가 발생하지 않음

프리페이징

프로세스가 시작할 때 발생하는 많은 수의 페이지 폴트 개수를 줄이기 위하여프로세스가 필요로 할 것 같은 페이지를 참조되기 전에 메모리에 반입 하는 기법
그러나 프리페이징한 페이지가 사용되지 않으면 입출력과 메모리가 낭비된다.
s 개의 페이지가 프리페이징 되고, 그중 a 페이지만 사용한다고 가정 한다면
페이지 폴트를 줄인 비용 s*a 가 불필요하게 프리페이징 한 비용 s*(1-a) 보다 큰가 작은가 비교 하여
프리페이징이 효율적인지 비효율적인지 판단 할 수 있다.

페이지 크기 고려 사항

  • 단편화 (페이지 크기가 작아야 유리)
  • 페이지 테이블 크기 (페이지 크기와 반 비례)
  • 주소 변환(Resolution) (페이지 크기가 작아야 유리)
  • 입출력 오버헤드 (페이지 크기가 큰게 유리)
  • 페이지 폴트의 횟수 (페이지 크기가 큰게 유리)
  • 지역성 (페이지 크기가 작은게 더 정교하게 페이지 안을 구성 할 수 있다)
  • TLB 크기와 유효성 (테이블 사이즈가 클 수록 비용이 더 많이 들어감)
  • 현재는 페이지의 크기가 점점 커지는 추세

(Translation Lookaside Buffer)TLB 범위

  • TLB Reach = (TLB Size) X (Page Size)
  • 이상적으로 각 프로세스의 작업 집합이 TLB에 저장되면 좋다.

'CS > OS' 카테고리의 다른 글

파일, 디스크, 디렉터  (0) 2023.05.29
대용량 저장장치 시스템 1  (0) 2023.05.23
스레싱  (0) 2023.05.22
페이징  (0) 2023.05.21
메인 메모리  (0) 2023.05.02

+ Recent posts