세그먼테이션

반응형

  가상 메모리 또는 논리 메모리는, 시스템에서 이용될 수 있는 물리적인 메모리의 크기를 초과하여 사용할 수 있는 개념으로서, 자주 사용되는 프로그램의 일부는 보통 주기억장치에 유지하고 그렇지 않은 나머지는 가상 메모리나 디스크에 유지시킨다. 이 가상 메모리를 잘 관리 및 운용하기 위해서 페이징 기법과 세그먼테이션 기법 등이 적용되었다. 즉, 페이징 기법과 세그먼테이션 기법은 가상 메모리의 구현 기법들이다. 페이징 기법이란 가상 메모리에 보관되어 있는 프로그램을 페이지라고 불리우는 일정한 크기의 블록으로 나눈 뒤, 페이지 크기와 동일한 크기인 프레임으로 나뉘어진 주 기억장치에 적재하여 실행하는 것을 의미한다. 사용자가 작성한 프로그램은 고정 사이즈인 페이지 단위로 분해된다. 참고로 물리 메모리도 프레임이라고 불리는 페이지 크기와 동일한 크기의 블록으로 나뉘어진다. 항상 프레임의 정수배로 할당되기 때문에 분할해서 사용하고 남는 일부분인 내부 단편화가 발생한다. 반면에 세그먼테이션 기법이란 가변 크기의 메모리 블록을 할당하는 것으로서, 이 가변 크기의 논리적인 단위를 세그먼트라고 한다. 모든 주소들은 세그먼트의 이름과 그 안에서의 오프셋을 이용해 명시한다. 일정한 크기의 메모리 블록들이 할당되는 것이 아니기 때문에, 빈 메모리 공간들이 수많은 메모리 조각으로 나뉘어져 외부 단편화가 발생할 수 있다. 외부 단편화란 분할의 크기가 프로그램의 크기보다 작아서 사용되지 못하는 것을 의미한다. 페이징 기법과 세그먼테이션 기법을 혼합한 기법들도 있다. 이렇게 혼용할 경우에는 프로그램을 논리적인 세그먼트 단위로 분할하고, 분할된 각 세그먼트를 다시 각각 페이지 단위로 분할하게 된다.

  페이지 기법에서, 접근하고자 하는 데이터나 프로그램이 현재 주 기억장치에 존재하지 않아서 디스크로부터 읽어들어야 하는 경우를 페이지 부재(Page fault)라고 한다. 이 페이지 부재 빈도가 높아서 페이지 교체가 자주 일어나는 것을 스래싱(thrashing)이라고 하는데, 페이지 부재율이 과하게 높으면 해당 프로세스가 더 많은 프레임을 주 기억장치에 가질 필요가 있다는 의미이고, 페이지 부재율이 과하게 낮으면 해당 프로세스가 너무 많은 프레임을 주 기억장치에 가지고 있다는 의미가 된다. 만약 페이지 교체가 너무 자주 일어나게 되면, 페이지 교체를 하는 시간이 프로세스의 처리 시간보다 더 많아질 수 있다. 그래서 적절한 페이지 교체 기법을 갖는 것도 중요한 이슈이다. 페이지 교체 기법에는 선입 선출, 최적 교체, LRU, LRU 근사 페이지 교체, 계수 기반 페이지 교체 등의 여러 기법들이 있다. 먼저 선입 선출(FIFO, First In First Out) 기법은, 메모리에 적재된지 가장 오래된 페이지를 교체하는 것이다. 최적 교체 기법이란 현재의 페이지가 참조된 시점에서, 이후로 가장 오래 사용되지 않을 페이지를 교체하는 것입니다. FIFO 기법의 문제는, 가장 오랫동안 주 기억장치에 있었지만 자주 사용되던 페이지가 교체될 수 있다는 점이다. LRU(Least Recently Used) 기법이란 가장 널리 사용되는 페이지 교체 방법으로서, 가장 오랫동안 사용되지 않은 페이지를 제거하는 방법이다. 최근에 별로 사용되지 않았다면 가까운 장래에도 역시 사용되지 않을 것이라는 가정에 근거한 방법이다. LRU 근사 페이지 교체 기법은, FIFO의 단점 및 LRU의 단점을 참조 비트를 이용하여 보완한 방식이다. 계수 기반 페이지 교체 기법에는 MFU(Most Frequently Used)와 LFU(Least Frequently Used)가 있는데 많이 사용되고 있지는 않다고 한다. MFU는 참조 횟수가 가장 많은 페이지를 교체하는 것이며 LFU는 참조 횟수가 가장 작은 페이지를 교체하는 것이다.

반응형

+ Recent posts