본문 바로가기
OS

[OS] 가상메모리 개념 정리

by Ellery 2020. 11. 16.

OS 공룡책과 패스트캠퍼스 강의, 이화여대 반효경 교수의 KOCW 강의를 정리하였다. 
http://www.kocw.net/home/search/kemView.do?kemId=1046323

  • 가상메모리: 실제 각 프로세스마다 충분한 메모리를 할당하기에는 메모리의 크기가 한계가 있음.

    프로세스는 가상주소를 이용하고, 실제 해당 주소에서 데이터를 읽고 쓸 때만 물리주소로 바꿔줌.

    • 하나의 프로세스만 실행가능한 배치처리시스템에서는 쓸 일이 없으나, 여러 프로세스를 동시 실행하는 시스템에서는 메모리 용량부족, 프로세스 메모리 영역 간의 침범 이슈 때문에 필요함. 프로세스간 공간 분리로 프로세스 이슈가 전체시스템에는 영향을 주지 않음

    • 가상주소를 물리주소로 바꾸는 변환시간을 줄이기 위해서 MMU라는 하드웨어가 필요함. CPU에 코드 실행시 가상 주소메모리 접근이 필요한 경우 해당 주소를 물리주소 값으로 바꿔줌

    • 페이징 시스템: 페이징은 크기가 동일한 페이지로 가상 주소공간과 이에 매칭되는 물리주소 공간을 관리함. 페이지 번호를 기반으로 가상주소-물리주소 매핑정보를 기록해서 사용함

      페이징 시스템은 공유 메모리를 이용하므로 프로세스간 동일한 물리주소를 가리켜 공간을 절약하고, 물리주소 데이터 변경시에 물리주소를 복사할 수 있음.

    • Page Table 페이지 테이블: 물리 주소에 있는 페이지 번호와 해당 페이지의 첫 물리 주소 정보를 매핑한 표. 해당 프로세스에 특정 가상 주소에 엑세스 하려면, 해당 프로세스의 page table에 해당 가상주소가 포함된 page번호가 있는지 확인함. page번호가 있으면 page가 맵핑된 첫 물리주소를 알아내고 거기에 변위값을 더해서 실제 주소로 접근함

    • 다중단계 페이징 시스템: 페이징 정보를 단계를 나누어서 생성함. 필요없는 페이지는 생성하지 않아서 공간 절약 가능함.

    • TLB: 페이지 정보를 캐싱하는 HW. CPU가 MMU를 통해서 가상주소를 요청하면 MMU는 CR3레지스터를 통해서 물리메모리의 프로세스 페이지 테이블에 접근해서 물리주소를 얻는다. 이 단계를 줄이기 위해서 CPU는 페이지 테이블 보다 TLB를 우선적으로 참조한다.

    • 요구 페이징(demand paging): 프로세스의 모든 데이터를 메모리로 적재하지 않고, 실행중 필요한 시점에서만 메모리로 적재함(lazy allocation)

    • 페이지 폴트 인터럽션(page fault): 어떤 페이지가 실제 물리 메모리에 없을 때 일어나는 인터럽트. 프로세스의 페이지 테이블에서 특정 페이지가 물리메모리에 없다고 값이 지정되어 있을 때(valid-invalid bit이 v가 아니고 i) 해당 페이지를 물리메모리에 올림. 페이지 폴트 인터럽션이 일어나면 CPU는 IDT에 가서 해당 인터럽트 번호에 대한 OS 안에 있는 함수를 실행함(저장 매체에 직접 가서 탐색, 저장)

      —> 페이지 폴트가 자주 일어나면 느려지니깐 안 느려지도록 미리 물리메모리에 올려됨

    • 페이지 교체 정책: 특정 페이지를 물리 메모리에 올려야되는데 물리메모리가 꽉 차 있으면 기존의 페이지에 덮어써야됨.

      1. FIFO page replacement
      2. OPT 최적 페이지 교체 알고리즘: 앞으로 오랫동안 사용하지 않을 페이지 교체
      3. **LRU(Least recently used): 가장 오래전에 사용된 페이지를 교체(과거기록기반) - 메모리 지역성 개념과 연결 - 참조 지역성(동일한 값 또는 해당 값에 관계된 스토리지의 위치가 자주 엑세스 되는 특성)
      4. LFU(Least frequently used): 가장 적게 사용된 페이지를 교체
      5. NUR(not used recently): 각 페이지마다 참조,수정비트를 둬서 참조<수정에 우선순위를 두고 가장 참조,수정이 안된 페이지를 교체
    • 스레싱(thrashing): 반복적으로 페이지 폴트가 발생해서 과도하게 페이지 스왑 작업이 일어나서 실제로는 아무 일도 일어나지 않는 상황

  • 세그멘테이션: 가상 메모리를 서로 크기가 다른 논리적 단위인 세그먼트로 분할해서 메모리에 저장함. (외부단편화 기법 ↔내부단편화 기법인 페이지 기법, 페이지 크기가 일정함) .