728x90

페이지 테이블(Page table)은 가상 메모리 시스템에서 중요한 구성 요소로, 가상 주소를 실제 물리 메모리 주소로 매핑하는 정보를 담고 있다. 컴퓨터 시스템에서 프로그램은 가상 주소 공간에서 실행되며, 이 가상 주소 공간은 실제 물리 메모리에 매핑된다. 페이지 테이블은 이러한 매핑 정보를 제공하며, 운영 체제의 메모리 관리 부분에 의해 관리된다.

  • 가상 페이지 번호(Virtual Page Number, VPN): 가상 주소를 페이지로 나누었을 때, 해당 페이지의 번호.
  • 물리 프레임 번호(Physical Frame Number, PFN): 실제 물리 메모리에서 해당 페이지가 위치하는 프레임의 번호.
  • 접근 권한: 페이지에 대한 읽기, 쓰기, 실행 권한을 정의한다.
  • 유효 비트(Valid Bit): 해당 페이지가 물리 메모리에 존재하는지 여부를 나타낸다. 유효하지 않은 경우 페이지 폴트가 발생한다.
  • 수정 비트(Modified Bit or Dirty Bit): 해당 페이지가 수정되었는지 여부를 나타내며, 페이지 교체 정책에서 중요하게 사용된다.

CPU가 발생시킨 가상 주소는 페이지 번호와 오프셋으로 구분된다. 페이지 테이블은 이 페이지 번호를 사용하여 해당 페이지가 물리 메모리의 어느 프레임에 매핑되어 있는지 확인한다. 변환된 물리 주소(물리 프레임 번호 + 오프셋)를 사용하여 실제 메모리에 접근한다. 요청된 페이지가 메모리에 없을 경우(유효 비트가 설정되지 않음), 페이지 폴트가 발생하고, 운영 체제는 해당 페이지를 디스크에서 물리 메모리로 로드한다.

 

대규모 가상 메모리를 관리하기 위해, 페이지 테이블은 종종 계층적 구조로 구성되거나, TLB(Translation Lookaside Buffer)와 같은 캐시 메커니즘을 사용하여 주소 변환 과정을 최적화한다. 이러한 최적화는 메모리 접근 시간을 줄이고, 시스템의 전반적인 성능을 향상시킨다.

 

매핑(Mapping)은 소프트웨어나 하드웨어에서 사용하는 가상 주소와 물리적 주소 사이의 관계를 설정하는 과정입니다. 가상 메모리 시스템에서, 프로그램이 사용하는 가상 주소를 실제 메모리(RAM)의 물리적 주소로 변환하는 것이 대표적인 예이다.

 

페이징(Paging)가장 흔히 메모리 관리에서 사용되는 페이징은 가상 메모리 시스템에서 실제 메모리(RAM)를 더 효율적으로 사용하기 위해 고안된 기법이다. 이는 메모리를 고정된 크기의 블록(페이지)으로 나누고, 프로그램이 사용하는 가상 주소 공간을 이 페이지에 매핑하여 관리한다. 페이징을 통해, 시스템은 필요한 페이지만 메모리에 적재하고, 나머지는 디스크에 저장함으로써 메모리 사용을 최적화할 수 있다.

 

페이지 폴트(page fault)는 가상 메모리 시스템에서 발생하는 현상이다. 프로세스가 접근하려는 페이지가 물리 메모리(RAM)에 없을 때 발생한다. 이는 해당 페이지가 디스크에 위치하거나, 아직 메모리에 할당되지 않은 상태일 수 있다. 페이지 폴트가 발생하면, 운영 체제는 필요한 페이지를 디스크에서 찾아 물리 메모리로 로드한다. 이 과정을 통해 프로그램은 계속 실행될 수 있다.

 

페이지 폴트는 모든 가상 메모리 시스템에서 자연스러운 현상이지만, 빈번하게 발생하면 시스템의 성능에 부정적인 영향을 미칠 수 있다. 페이지 폴트가 많이 발생한다는 것은 프로세스가 필요로 하는 데이터나 코드가 물리 메모리에 적절히 위치하지 않고, 디스크 접근이 잦다는 것을 의미한다. 이러한 상황을 최소화하기 위해, 운영 체제는 페이지 교체 알고리즘을 사용하여 어떤 페이지를 메모리에 유지하고 어떤 페이지를 디스크로 내보낼지 결정한다.

 

세그멘테이션 폴트(segmentation fault)는 프로그램이 자신에게 허용되지 않은 메모리 영역에 접근하려고 할 때 발생하는 오류다. 이는 프로그램의 안정성과 보안을 위협할 수 있으며, 일반적으로 운영 체제에 의해 프로그램이 비정상적으로 종료된다.

 

세그멘테이션 폴트는 기화되지 않은 포인터나 이미 해제된 메모리를 참조할 때, 배열의 범위를 넘어서는 위치에 접근하려고 할 때, 혹은 읽기 전용 메모리에 쓰기 시도나 실행할 수 없는 메모리 영역에서 코드를 실행하려고 할 때 발생한다.

 

스와핑(swapping)은 메모리 관리 기법 중 하나이다. 이 기법은 시스템의 가용 메모리가 부족할 때, 메모리에 있는 데이터나 프로세스를 하드 디스크와 같은 보조 저장 장치로 옮기는 과정을 말한다. 스와핑을 통해, 시스템은 메모리를 더 효율적으로 사용할 수 있게 된다.

 

운영 체제는 메모리가 부족하다고 판단할 때, 현재 메모리에서 사용 빈도가 낮은 데이터나 프로세스를 선정한다. 선정된 데이터나 프로세스는 보조 저장 장치로 이동된다. 이 과정을 스와핑 아웃(swap out)이라 한다. 필요할 때, 보조 저장 장치에 저장된 데이터나 프로세스를 다시 메모리로 가져온다. 이 과정을 스와핑 인(swap in)이라 한다.

 

스와핑은 시스템의 전반적인 성능에 영향을 줄 수 있다. 보조 저장 장치는 메모리에 비해 접근 속도가 느리기 때문에, 스와핑 작업이 빈번하게 발생하면 시스템의 반응 시간이 길어질 수 있다. 이를 스와핑 스트레스라고 하며, 시스템의 성능 저하의 원인이 될 수 있다.

 

스레싱(thrashing)은 운영체제에서 멀티태스킹 환경에서 발생할 수 있는 문제로, 시스템의 자원을 대부분 페이지 교체나 스왑 아웃, 스왑 인 같은 메모리 관리 작업에 사용하게 되어 실제 유용한 작업 처리량이 급격히 감소하는 현상을 말한다. 이는 시스템에 너무 많은 프로그램이 동시에 실행되어 메모리 요청이 메모리 용량을 초과할 때 주로 발생한다. 결과적으로 CPU는 대부분의 시간을 유효한 데이터를 찾아 메모리와 스왑 공간(swap space) 사이를 이동하는 데 소비하게 되며, 이로 인해 시스템의 전반적인 성능이 크게 저하되는 것을 말한다.

728x90

+ Recent posts