4T2F / ThinkBig2

🌟씽크빅 2팀 스터디 🌟
2 stars 0 forks source link

가상 메모리(Virtual Memory)의 개념과 동작 원리에 대해 설명해주세요. #32

Open hamfan524 opened 6 months ago

hamfan524 commented 6 months ago

가상 메모리의 필요성과 장점에 대해 설명해주세요. 페이징(Paging) 기법의 개념과 동작 원리, 페이지 테이블의 역할에 대해 설명해주세요. 세그먼테이션(Segmentation) 기법의 개념과 페이징과의 차이점에 대해 설명해주세요.

hamfan524 commented 6 months ago

가상 메모리(Virtual Memory)의 개념과 동작 원리에 대해 설명해주세요.

가상메모리란?

메모리가 실제 메모리보다 많아 보이게 하는 기술로, 컴퓨터 시스템에서 실제 메모리(RAM)와 보조 저장 장치(하드 디스크 등)를 조합하여 프로그램이 필요로 하는 메모리 공간을 확장하는 기술입니다.

필요성 및 동작 원리

물리 메모리는 컴퓨터에 장착된 실제 메모리로서 최대 크기는 CPU에 의해 제한됩니다.

그렇다면 물리메모리보다 큰 프로세스를 실행시키려 하거나, 여러 프로세스들을 동시에 실행하려하는데 메모리들의 합이 물리 메모리보다 더 크다면 운영체제는 어떻게 해결하는가에 대한 고민을 해볼 수 있습니다.

위 문제를 해결하기 위해 가상메모리가 나오게 되었는데, 사용자나 응용프로그램에게 무한의 메모리가 있다고 느끼도록하는 기법입니다.

image

가상 메모리는 프로그램이 사용하는 메모리를 작은 조각들로 나눕니다. 이 조각들을 "페이지"라고 부릅니다. 각 프로그램은 자신만의 가상 주소 공간을 가지는데, 이 공간도 페이지로 나눠집니다.

프로그램이 실행되면 필요한 페이지들이 메모리에 로드됩니다. 하지만 모든 페이지가 동시에 메모리에 올라갈 수는 없기 때문에, 실제로 사용되는 페이지만 메모리에 올립니다. 만약 필요한 페이지가 메모리에 없으면, 해당 페이지를 디스크에서 메모리로 가져옵니다.

가상 메모리는 또한 페이지 교체 기법을 사용하여 메모리에 여유가 없는 경우에 어떤 페이지를 디스크로 내보낼지 결정합니다. 이를 통해 가장 중요한 페이지를 메모리에 유지하면서도 여러 프로그램이 동시에 실행될 수 있습니다.

페이지 교체 기법들은 정보처리기사 준비하며 다 외웠었는데 이젠 다 까먹었네요. 언젠가 기회가 된다면 정리해보겠습니다.

요약하자면, 가상 메모리는 각 프로그램이 필요로 하는 메모리를 효율적으로 관리하여 여러 프로그램이 동시에 실행될 수 있도록 합니다.


가상 메모리의 필요성과 장점에 대해 설명해주세요.

위에서 읽은 필요성과 동작원리를 보면 유추할 수 있겠지만, 장점들을 나열해보겠습니다.

  1. 더 많은 프로그램 실행: 가상 메모리를 사용하면 실제 메모리(RAM)보다 큰 메모리 공간을 프로그램에 제공할 수 있어요. 당연히 엄청 큰 프로그램이나 많은 프로그램을 동시에 실행할 수 있습니다.
  2. 메모리 효율성 향상: 모든 프로그램을 한 번에 메모리에 올릴 필요가 없고, 필요한 부분만 메모리에 로드하여 자원을 절약하기에 메모리를 효율적으로 사용할 수 있습니다.
  3. 프로세스 간 분리: 각 프로세스는 자신만의 가상 주소 공간을 가지므로, 프로세스 간에 메모리를 완전히 격리할 수 있어 보안과 안정성을 높일 수 있습니다.
  4. 메모리 접근 속도 향상: 주로 사용되는 프로세스만을 메모리에 유지하여 메모리 접근 속도를 향상시킬 수 있습니다.
  5. 대용량 파일 처리: 가상 메모리를 사용하면 대용량 파일도 메모리에 올릴 수 있어서, 대용량 파일을 효율적으로 처리할 수 있습니다.

페이징(Paging) 기법의 개념과 동작 원리, 페이지 테이블의 역할에 대해 설명해주세요.

개념

페이징 기법은 프로세스의 주소공간과 물리 메모리를 페이지 단위로 분할하고, 프로세스의 각 페이지를 물리 메모리의 프레임에 분산 할당하고 관리하는 기법입니다.

용어 구별을 위해 가상 주소에 있는 분할 공간 하나를 페이지, 물리 주소의 분할 공간 하나를 프레임이라고 합니다.

페이지(Page): 가상 주소 공간을 페이지 단위로 나눈 것. 프로그램이 필요로 하는 메모리 공간을 페이지 단위로 분할하여 관리합니다.
프레임(Frame): 물리 메모리 공간을 프레임 단위로 나눈 것. 메모리(RAM)가 페이지와 같은 크기의 작은 조각으로 나뉘어지며, 각 프레임은 고유한 주소 범위를 가지고 있습니다.

동작 원리

  1. 프로세스가 실행될 때, 운영 체제는 가상 주소를 페이지 번호와 오프셋(offset)으로 분할합니다. 페이지 번호는 페이지 테이블을 통해 실제 메모리 주소로 변환됩니다.

  2. 페이지 테이블은 각 페이지의 가상 주소와 실제 메모리 주소 간의 매핑 정보를 저장합니다. 따라서 페이지 테이블을 참조하여 가상 주소를 실제 메모리 주소로 변환하여 해당 페이지를 찾습니다.

  3. 만약 필요한 페이지가 현재 메모리에 없는 경우, 페이지 부재(Page Fault)가 발생하여 해당 페이지를 디스크에서 메모리로 로드합니다.

페이지 테이블 역할

세그먼테이션(Segmentation) 기법의 개념과 페이징과의 차이점에 대해 설명해주세요.

개념

세그먼테이션(Segmentation) 기법은 메모리 관리 기법 중 하나로, 프로그램의 가상 주소 공간을 논리적인 단위인 세그먼트(segment)로 나누는 방법입니다.

각 세그먼트는 프로그램의 논리적인 부분을 나타내며, 세그먼트는 크기가 서로 다를 수 있습니다. 세그먼트는 코드, 데이터, 스택 등과 같이 프로그램의 다양한 부분을 나타낼 수 있습니다.

세그먼테이션 테이블에는 페이징 테이블에는 없었던 limit와 address 값이 있는데 세그먼트가 메모리 영역 어디까지를 잡고있는가에 대한 내용을 다룹니다.

페이징기법과의 차이점

  1. 단위

    • 페이징은 프로그램의 가상 주소 공간을 고정된 크기의 페이지로 나누지만, 세그먼테이션은 프로그램을 논리적인 단위인 세그먼트로 나눕니다. 페이지는 모두 동일한 크기를 가지지만, 세그먼트는 크기가 다를 수 있습니다.
  2. 단위 관리

    • 페이징은 페이지 단위로 메모리를 관리하고 주소 변환을 수행합니다. 세그먼테이션은 세그먼트 단위로 메모리를 관리하고 주소 변환을 수행합니다. 따라서 페이징은 페이지 번호와 오프셋을 사용하여 주소 변환을 수행하지만, 세그먼테이션은 세그먼트 식별자와 오프셋을 사용하여 주소 변환을 수행합니다.
  3. 단편화

    • 페이징기법은 내부 단편화가 일어날 수 있지만(아주 작음) 외부 단편화는 일어나지 않습니다. 하지만, 세그멘테이션 기법은 물리 메모리의 외부 단편화가 생겨 물리 메모리 관리가 복잡할 수 있습니다.

내부 단편화

  • 할당된 메모리 공간이 사용되지 않고 남는 부분으로, 해당 영역은 프로세스에 할당되었지만 사용되지 않는 상태입니다.
  • 페이징에서는 각 페이지가 고정된 크기를 가지므로, 프로세스가 필요로 하는 메모리 공간이 페이지 크기의 배수가 아닐 경우에 내부 단편화가 발생할 수 있습니다.
  • 예를 들어, 페이지 크기가 4KB이고 프로세스가 10KB의 메모리를 요청하는 경우, 마지막 페이지는 2KB만 사용되고 나머지 2KB는 사용되지 않아 내부 단편화가 발생합니다.

외부 단편화

  • 외부 단편화는 사용 가능한 메모리 공간 중에 프로세스를 할당할 수 없는 작은 조각들로, 이러한 작은 조각들이 총 메모리 공간을 소모하게 됩니다.
  • 세그멘테이션에서는 세그먼트들이 서로 다른 크기를 가지므로, 할당된 메모리 공간들 사이에 남는 작은 공간들이 발생하여 외부 단편화가 발생할 수 있습니다.
  • 예를 들어, 세그먼트 A(6KB), B(4KB), C(8KB)가 메모리에 할당되어 있고 세그먼트 B가 해제되는 경우, 세그먼트 B의 크기인 4KB만큼의 공간이 발생하여 외부 단편화가 발생합니다.
Hminchae commented 6 months ago

세그먼트의 구조는 어떻게 생겼나요ㅎㅎ

hamfan524 commented 6 months ago

세그먼트의 구조는 어떻게 생겼나요ㅎㅎ