2011-03-23 12 views
1

메모리 조각 모음에 대한 기사를 읽으면서 메모리 조각 모음을 수행하는 소프트웨어의 몇 가지 예가 있다는 것을 상기 시켰습니다. 내가 궁금해, 어떻게 작동합니까? 그것은 전혀 작동합니까?메모리 조각 모음 소프트웨어. 어떻게 작동합니까? 작동합니까?

편집 : xappymah는 프로세스가 메모리 레이아웃이 갑자기 변경 배울 매우 놀랄 수 있다는 점에서 메모리 조각 모음에 대한 좋은 인수했다. 그러나 내가 보았 듯이 OS가 글로벌 메모리 제어를위한 일종의 API를 제공 할 가능성은 여전히 ​​존재합니다. 그러나 심하게 설계된 경우 악의적 인 의도로 사용할 가능성이 높아지기 때문에 조금 어려울 듯합니다. 어떤 종류의 것을 지원하는 OS가 있다면 누구나 알고 있습니까?

+1

소프트웨어 개발의 관점에서 볼 때 매우 흥미로운 질문입니다. 예를 들어 나를 위해 "메모리 조각 모음"은 BS와 같은 소리입니다 (관리되는 환경이 아니면) - 정말 가능한지 알고 싶습니다. – sharptooth

+1

두 번째 질문에 대해. 나는 약간의 연구를했으며 그러한 API가 Windows 나 Mac OSX와 같은 최신 OS에 존재한다는 것을 알았습니다. 물론 이러한 기능을 사용하려면 관리 (루트) 권한이 필요하며 부정확 한 행동은 실제로 엉망이 될 수 있습니다. (BTW, 모든 OS에서 그러한 API의 존재는 매우 논리적이지만, 적어도 OS 자체에 필요하기 때문에) : – xappymah

+0

@xappymah : 고맙습니다. 나는이 주제가 매우 흥미롭고 여전히 호기심에 대한 연구를해야 할 것입니다. 나는 원래의 대답을 받아 들였습니다. – manneorama

답변

1

프로세스 수준에서 실제 메모리 조각 모음은 메모리에 할당 된 개체에 대한 일종의 액세스 권한을 갖고 관리 할 수있는 Java VM과 같은 관리 된 환경에서만 가능합니다.

하지만 관리되지 않는 응용 프로그램에 대해 말하면 모든 프로세스 (도구와 응용 프로그램 모두)가 자체 주소 공간에서 실행되고 액세스 권한이 없으므로 타사 도구를 사용하여 메모리를 제어 할 가능성이 없습니다 OS의 도움 없이는 다른 사람에게 그러나 다른 프로세스의 메모리에 접근하여 (OS 등을 해킹하여) 수정을 시작한다고해도 대상 응용 프로그램이 매우 놀랄 것이라고 생각합니다. 그냥 상상해보십시오, 당신은 메모리의 덩어리를 할당, 그 주소를 시작하고 다음에 "VeryCoolMemoryDefragmenter"때문에이 메모리 덩어리가 다른 곳으로 옮겨졌습니다. :)

+0

+1,이 의미가 있지만 그 프로그램이 다른 종류의 조각 모음을 수행한다고하면 어떻게 될까요? – sharptooth

+0

글쎄, 그 프로그램은 항상 자신의 메모리 조각 모음을 할 수 있습니다 :) 어쨌든, 우리는 (전혀 조각 모음뿐만 아니라) 메모리 최적화에 대해 이야기하고있다하더라도 은색 글 머리 기호가 없습니다. 대부분 "메모리를 최적화"할 수 있다고 주장하는 대부분의 프로그램은 스왑의 모든 메모리를 비우는 것입니다. 최악의 경우 - 컴퓨터에 바이러스가 감염되거나 시스템이 손상 될 수 있습니다. 불행히도 모든 응용 프로그램은 메모리 사용을 자체적으로 관리해야합니다. – xappymah

-2

내 생각에 메모리는 일종의 플래시 드라이브입니다. 이 칩은 거짓말 탐지기처럼 정보를 기록하고 재생하는 회전 디스크 핀이 없기 때문에 단편화되지 않습니다. 이것이 하드 디스크 단편화의 방식입니다. SSD 드라이브가 매우 빠르고 효과적이며 안정적이며 유지 보수가 필요없는 이유입니다. SSD는 엄청난 기억이고 비슷한 모양입니다.

관련 문제