본문 바로가기

Roadmap

OS and General Knowledge - 6

Memory Management

메모리 관리는 말 그대로 컴퓨터의 메모리를 관리하는 행위로 다중 프로그래밍에서 OS는 메모리의 일부에 상주하고 나머지는 여러 프로세스에서 사용되는데 서로 다른 프로세스 간 메모리를 세분화하는 작업을 한다.

 

메모리 관리 작업

  • 메모리 할당 상태 추적 - 메모리는 물리적 주소 공간으로 나뉘며 OS는 프로세스가 사용하기 전까지 각 공간을 여유 공간으로 표시한다. 필요한 경우 OS는 이러한 여유 공간에 데이터를 로드하고 할당된 것으로 표시하며 데이터나 명령이 더 이상 필요하지 않으면 OS는 해당 공간을 다시 여유 공간으로 표시하여 이러한 공간에 올라간 데이터를 덮어쓸 수 있다.
  • 스토리지 요구 사항 결정 - 프로세스에 필요한 데이터가 단일 메모리 위치에 들어갈 수 있는 경우는 드문데 OS는 프로그래밍 요구 사항에 따라 실행 중인 각 프로세스에 할당할 메모리 양을 결정해야 된다. 결정 후 OS는 각 프로세스가 사용할 주소 블록을 예약한다.
  • 메모리 사용량 제어 - 메모리는 유한한 자원이며 더 많은 프로세스가 메모리를 사용할수록 사용 가능한 여유 공간이 줄어든다. 다른 프로세스에 대한 메모리 액세스를 제공하기 위해 메모리의 일부를 해제해야 할 수도 있으며 OS는 필요에 따라 메모리 액세스를 제공하기 위해 프로세스와 메모리 공간 간의 스와핑을 관리한다.

 

메모리 관리 기술

  • 페이징 - 논리적 주소 공간은 페이지라고 하는 메모리 단위로 나뉘는데 페이지가 메인 메모리에 로드되면 페이지 프레임에 저장된다. 페이지 프레임은 페이지와 동일한 크기(같은 수의 주소를 가지는)인 순차적 주소 블록이다. 페이징을 사용하면 메모리를 비연속적으로 할당할 수 있다. 즉, 동일한 프로세스의 페이지를 함께 저장할 필요가 없지만 주 메모리에 여유 공간이 있는 곳이면 어디든 할당할 수 있다. 페이지 테이블은 각 페이지에 할당된 페이지 프레임을 추적하는 데 사용된다.
  • 세그멘테이션 - 프로세스에 할당된 메모리 블록은 각 프로세스의 다양한 메모리 요구 사항에 맞게 크기가 다른 세그먼트로 나뉜다. 세그먼트는 고정 주소 공간에 계속해서 저장할 필요가 없으며 필요에 따라 메모리 안팎으로 이동할 수 있다. OS는 프로세스에 필요한 각 세그먼트가 물리적으로 위치한 주소를 기록하는 세그먼트 테이블을 사용하여 각 프로세스에 대한 메모리 할당을 추적한다.
  • 가상 메모리 - OS는 컴퓨터의 다른 저장소를 사용하여 제한된 물리적 메모리 공간을 확장할 수 있다. 하드 디스크를 가상 메모리 역할로 사용한다던지 현재 사용되지 않는 프로세스 부분을 주 메모리에서 하드 디스크의 할당된 공간으로 스왑 한 다음, 사용 중일 때 다시 주 메모리로 스왑 한다던지와 같은 방법이 있다. 이것은 사용 가능한 메모리를 확장하는 이점이 있으며 주 메모리에서 보조 스토리지로 명령어와 데이터를 교환하면 잠재적으로 많은 양의 메모리를 사용할 수 있다는 의미로 보인다. 그러나 하드 디스크와 같은 보조 메모리에 액세스 하는 것은 주 메모리에 액세스 하는 것보다 상당한 성능 저하를 야기할 수 있다.

 

'Roadmap' 카테고리의 다른 글

OS and General Knowledge - 8  (0) 2022.02.10
OS and General Knowledge - 7  (0) 2022.02.09
OS and General Knowledge - 5  (0) 2022.02.07
OS and General Knowledge - 4  (0) 2022.02.04
OS and General Knowledge - 3  (0) 2022.02.03