Computer Science

메모리 관리와 가상메모리

TDCIAN 2023. 5. 3. 08:09

사진에 위키백과 링크 걸어놨습니다!

 

 

메모리 관리(memory management)

- 컴퓨터 메모리에 적용된 리소스 관리의 일종

-  프로그램의 요청이 있을 때 메모리의 일부를 해당 프로그램에 할당하고, 더 이상 필요하지 않을 때는 다시 사용할 수 있도록 할당을 해제하는 것

- 가상 메모리 시스템은 프로세스가 사용하는 메모리 주소를 실제 물리 주소와 구분한다. 이로써 프로세스를 구분하고 디스크 스왑 처리를 사용하여 효과적으로 사용할 수 있는 RAM의 양을 늘릴 수 있게 된다. 가상 메모리 관리자의 품질은 전반적인 시스템 성능에 큰 영향을 미친다.

- 쓰레기 수집(garbage collection)은 프로그램을 위한 컴퓨터 메모리 리소스를 자동으로 할당하고 할당을 해제한다. 프로그래밍 언어 수준에서 일반적으로 추가되어 있는 것이며, 수동 메모리 관리와 대조된다.

 

운영 체제의 메모리 관리에 대한 주된 목표

- 여러 프로세스가 동시에 실행될 수 있도록 메모리 공간을 제공

- 시스템 사용자들에게 만족할 만한 수준의 성능을 제공

- 각 프로그램의 리소스 보호

- 프로세스 사이에 존재하는 메모리 공간 공유

- 프로그래머를 위해 가급적 메모리 공간의 어드레싱을 투명하게 할 것

 

 

가상 메모리(virtual memory)

- 가상 메모리(virtual memory) 또는 가상 기억 장치(virtual storage)는 메모리 관리 기법의 하나로, 기계에 실제로 이용 가능한 기억 자원을 이상적으로 추상화하여 사용자들에게 매우 큰 메모리로 보이게 만드는 것을 말한다.

- 각 프로그램에 실제 메모리 주소가 아닌 가상의 메모리 주소를 주는 방식

- 이러한 방식은 멀티태스킹 운영 체제에서 흔히 사용되며, 실제 주기억장치보다 큰 메모리 영역을 제공하는 방법으로 사용됨

- 가상적으로 주어진 주소를 가상 주소(virtual address) 또는 논리 주소(logical address)라고 한다.

- 실제 메모리 상에서 유효한 주소를 물리 주소(physical address) 또는 실주소(real address)라고 한다.

- 가상 주소의 범위를 가상 주소 공간, 물리 주소의 범위를 물리 주소 공간이라고 한다.

 

- 가상 주소 공간은 메모리 관리 장치(Memory Management Unit)에 의해서 물리 주소로 변환된다.

* 메모리 관리 장치(Memory Management Unit, 줄여서 MMU)는 CPU 메모리에 접근하는 것을 관리하는 컴퓨터 하드웨어 부품이다. 가상 메모리 주소 실제 메모리 주소로 변환하며, 메모리 보호, 캐시 관리, 버스 중재 등의 역할을 담당하며 간단한 8비트 아키텍처에서는 뱅크 스위칭을 담당하기도 한다.

- 이 덕분에 프로그래머는 가상 주소 공간상에서 프로그램을 짜게 되어 프로그램이나 데이터가 주메모리상에 어떻게 존재하는지를 의식할 필요가 없어진다.

- 가상 메모리의 개념은 1957년에 발표되었으며, 1961년 맨체스터 대학교의 Atlas에 최초로 적용되었다. 이후 1965년 MIT가 개발한 멀틱스 시스템에 본격적으로 채용되었다.

- 가상 메모리는 세그먼트(segment) 방식과 페이징(paging) 방식 두 종류가 있다.

 

 

 

 

 

Q. iOS Application 개발 과정에서 가상 메모리에 대해 설명해 줘

 

A. iOS Application 개발 과정에서 가상 메모리(Virtual Memory)는 중요한 개념 중 하나입니다.

 

가상 메모리는 실제 물리적인 메모리(RAM)보다 더 큰 공간을 사용할 수 있게 해줍니다. 이를 통해 어플리케이션이 필요한 만큼의 메모리를 사용하면서도 물리적인 메모리의 한계를 벗어날 수 있습니다.

 

가상 메모리는 운영 체제에서 관리되며, 앱이 사용하는 메모리 공간은 실제 물리적인 메모리와는 분리되어 있습니다. 앱이 실행될 때, 운영 체제는 앱이 필요로 하는 메모리 공간을 가상적인 주소 공간에 할당하여, 이를 가상 주소(virtual address)라고 합니다.

 

앱이 이 가상 주소를 참조할 때, 운영 체제는 해당 주소를 실제 물리적인 메모리 주소(physical address)로 매핑합니다. 이 매핑은 운영 체제의 가상 메모리 관리 기술로 이루어지며, 앱이 필요로 하는 메모리 공간이 더 많은 경우, 일부 가상 주소 공간은 하드 디스크에 스왑됩니다.

 

가상 메모리는 앱이 사용하는 메모리 공간을 효율적으로 관리하면서도, 앱이 더 많은 메모리를 사용하고 싶을 때에도 가능하게 해줍니다. 하지만, 스왑 작업은 물리적인 메모리보다는 훨씬 느리기 때문에, 가상 메모리가 실제적인 성능 저하를 야기할 수 있습니다. 따라서, iOS 개발자들은 메모리 사용량을 최소화하는 것이 중요합니다.

 

 

Q. 가상 메모리의 개념과 도입 배경에 대해 설명해 줘

 

A. 가상 메모리(Virtual Memory)는 프로그램이 필요로 하는 메모리 공간을 물리적인 메모리(RAM)보다 큰 공간에서도 사용할 수 있게 해주는 기술입니다.

 

이 기술은 메모리의 한계로 인해 발생하는 문제를 해결하기 위해 개발되었습니다. 초기의 컴퓨터 시스템에서는 메모리가 매우 작았고, 이로 인해 실행되는 프로그램의 크기가 제한되었습니다. 이에 따라, 프로그램을 실행하기 위해서는 메모리 공간이 부족한 경우, 프로그램을 나누어 실행하거나 메모리를 추가하는 등의 방법을 사용해야 했습니다.

 

하지만, 가상 메모리가 도입되면서 이러한 문제를 해결할 수 있게 되었습니다. 가상 메모리는 물리적인 메모리와는 별개로, 더 큰 공간에서 프로그램이 필요로 하는 메모리를 사용할 수 있도록 해줍니다. 이를 통해, 실행되는 프로그램의 크기를 제한하지 않고 메모리를 효율적으로 사용할 수 있게 되었습니다.

 

또한, 가상 메모리는 여러 프로그램이 동시에 실행되는 경우, 메모리가 부족한 상황에서도 시스템이 더욱 안정적으로 동작할 수 있게 해줍니다. 이는 가상 메모리를 통해, 각 프로그램이 필요로 하는 메모리 공간을 효율적으로 할당하고, 더 많은 메모리를 사용할 수 있는 경우에는 하드 디스크 등의 보조 기억 장치를 사용해 메모리를 확장할 수 있기 때문입니다.

 

따라서, 가상 메모리는 운영 체제에서 관리되며, 운영 체제가 제공하는 메모리 관련 함수를 사용하여 앱에서 가상 메모리를 이용할 수 있습니다. 가상 메모리를 효율적으로 사용하는 것은 iOS 앱 개발에서 성능 최적화와 안정성을 보장하는데 중요한 역할을 합니다.

 

 

Q. iOS Application 개발 과정에서 가상 메모리를 활용하게 되는 상황이 언제인지 설명해 줘

 

A. iOS Application 개발 과정에서 가상 메모리는 운영 체제에서 자동 관리되며, 앱에서 직접적으로 활용하는 것은 불가능합니다. 그러나, 앱이 실행되는 과정에서 가상 메모리를 활용하게 되는 상황은 다음과 같습니다.

 

1. 앱이 실행될 때

앱이 실행될 때, 운영 체제는 앱에서 필요로 하는 메모리 공간을 가상 주소 공간에 할당합니다. 이를 통해, 앱이 실제 물리적인 메모리보다 더 많은 메모리를 사용할 수 있게 됩니다.

 

2. 앱이 더 많은 메모리를 필요로 할 때

앱이 실행 중에 더 많은 메모리를 필요로 할 때, 운영 체제는 하드 디스크 등의 보조 기억 장치를 사용하여 스왑 작업을 수행합니다. 이를 통해, 앱이 더 많은 메모리를 사용할 수 있도록 해줍니다.

 

3. 앱이 사용하지 않는 메모리를 해제할 때

앱에서 사용하지 않는 메모리는 더 이상 필요하지 않으므로, 운영 체제에게 해당 메모리 공간을 반환하여 다른 앱이 사용할 수 있도록 해야 합니다. 이때, 운영 체제는 해당 메모리 공간을 가상 주소 공간에서 해제하고, 실제 메모리에서도 해당 메모리 공간을 해제합니다.

 

따라서, iOS Application 개발 과정에서는 가상 메모리를 직접적으로 활용하는 것이 아니라, 메모리 사용을 최적화하는 것이 중요합니다. 이를 위해서는 메모리 누수(memory leak)를 방지하고, 메모리 사용을 최소화하는 코드를 작성하는 등의 방법이 있습니다.

 

 

 

 

출처

- https://ko.wikipedia.org/wiki/%EB%A9%94%EB%AA%A8%EB%A6%AC_%EA%B4%80%EB%A6%AC

 

메모리 관리 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전.

ko.wikipedia.org

- https://ko.wikipedia.org/wiki/%EA%B0%80%EC%83%81_%EB%A9%94%EB%AA%A8%EB%A6%AC

 

가상 메모리 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 가상 메모리는 활성 RAM과 DASD 상의 비활성 메모리로 결합되어 있다. 가상 메모리 또는 가상 기억 장치(문화어: 가상기억기, virtual memory, virtual storage)는 메모리

ko.wikipedia.org

- Chat GPT(https://chat.openai.com/)