• 검색 결과가 없습니다.

1. 서론: 고성능 컴퓨팅

1.4. HPC 프로세서 구조

1.4.5. 가상 메모리

주기억장치가 보조 기억장치(디스크)를 위한 캐시로 이용되는 것을 가상 메모리 기술이라고 한다.

가상 메모리를 사용하는 이유는 다수의 프로그램을 동시에 수행할 때 메모리를 효과적으로 공유 할 수 있게 하고, 작고 제한된 크기의 주기억장치에서 프로그래밍해야 하는 제약을 제거하기 위해 서 이다. 가상 메모리 시스템을 이해하기 위해 중요한 몇 가지 용어 및 개념을 소개한다.

- 가상 주소(virtual address): 프로그램 또는 프로세스에 주어진 주소로 프로세스가 참조하 는 가상 주소 범위를 주소공간(address space)이라고 한다.

- 실제 주소(physical address): 메인 메모리의 주소로 메모리 공간(memory space)이라고 도 한다.

- 메모리 사상: 가상 주소와 실제 주소 사이의 사상으로 주소 변환(address translation)이 라고도 한다.

Paging space

Real Memory Virtual address space

Paging space

Real Memory Virtual address space

그림 1-14. 가상 메모리

주기억장치는 많은 프로그램의 활성화된 부분만을 담고 있다. 이를 통해 주기억장치와 프로세서 까지도 효율적인 공유가 가능해 진다. 물론 많은 프로그램이 같은 메모리를 사용할 경우 서로 방 해 받지 않아야 하며 하나의 프로그램은 자기에게 할당된 주기억장치의 부분만을 읽고 쓸 수 있 어야 한다. 가상 메모리를 통해 프로그램의 주소 공간을 실제 주소로 변환해 주는 번역 과정이 한 프로그램의 주소 공간을 다른 프로그램으로부터 보호해 준다.

가상 메모리 기술을 통해 주기억장치보다 큰 메모리를 사용하는 프로그램 작성이 가능하다. 가상 메모리는 주기억장치(실제 메모리: physical memory)와 디스크로 구성되는 2단계의 메모리 계층 을 관리하는데, CPU는 가상 주소를 만들어 내고 가상 주소는 주기억장치를 접근하는데 사용하는

실제 주소로 번역된다.

페이지는 OS가 프로그램에게 할당하는 (연속)메모리 블록의 최소단위이다. 운영체제는 각 프로세 스를 위해 가상 주소 공간을 만들어 불필요한 페이지를 디스크에 보관해 두고, 필요할 때 메인 메 모리에 올린다. 모든 메모리 접근에서 운영체제는 가상 주소를 실제 주소로 전환하는데, 이때 페 이지 테이블을 이용한다. 각 프로세스는 자신의 페이지 테이블을 가지며 페이지 테이블은 그 프로 세스의 가상 주소 공간을 주기억장치로 사상한다. 만약 찾고자 하는 가상 주소가 주기억장치에 없 다면 이 페이지는 디스크에 존재하게 된다. 실제 페이지는 두 개의 가상 주소가 같은 실제 주소를 가리키도록 해서 공유 가능하다. 이렇게 해서 두 개의 다른 프로그램이 데이터와 코드를 공유할 수 있다.

페이지 테이블은 메모리를 색인하는 테이블로서 주기억장치 내부에 존재하며 가상 주소의 페이지 번호로 색인돼 있고 대응되는 실제 페이지 번호를 갖고 있다. 페이지 테이블이 주기억장치 내에 있어서 프로세스에 의한 모든 메모리 접근은 최소한 두 번 필요한데 실제 주소를 얻기 위한 메모 리 접근과 데이터를 얻기 위한 접근이 그것이다.

페이지 테이블에 대한 참조의 지역성을 이용해 접근 성능을 증가시키기 위해 TLB(Translation Look-aside Buffer)를 이용한다. 가장 최근에 사용된 주소 전환을 TLB에 저장하고 메모리 접근 이 있을 경우 가장 먼저 TLB에서 실제 주소에 대한 사상을 찾게 된다. 프로세스가 TLB에 있지 않은 가상 주소를 사용하려 할 때 TLB 실패가 발생하고, 페이지 테이블을 통해 실제 주소를 찾 게 된다. 만약 참조된 페이지가 실제 메모리에 없다면 페이지 부재(page fault)가 발생하고 디스 크에 저장된 페이지를 찾게 되는 가장 나쁜 경우가 발생하게 된다.