memory compaction in OS X Maverick

어디선가 들은 것 같지 않나? 메모리 컴팩션.

OS 수업을 들은 사람이라면 이게 뭔지 알 것이다. 즉 메모리 fragementation으로, 실제 빈 공간의 총량은, 로딩될 프로그램보다 더 큰데, 연결된 공간의 부족으로 로딩할 수가 없는 경우에 쓰이는 메모리 공간을 한쪽으로 몰아 둠으로써, 사용할 수있는 공간을 연속적인 공간으로 확보하는 것이다.

지금 Keynote를 다시 보고 있는데,  이 compressed memory는 전혀 새로운게 아니다. 이미 System 7때 있었고, Windows에서도 heap compaction이라고 불리는 것이다 물론 구체적인 구현과 전략같은 세세한 면에선 다를 수있지만, 전체적인 것은 같다.

OS X 10.0이 나올때, “prebinding” 이란 이름의 메모리 로딩 기법이 나오면서 사라졌고, 그 이후엔 prebinding도 없어지고 자동으로 된다면서 성능이 향상되었다고 광고했다.

그럼 왜 다시 이 메모리 compaction이 나왔을가를 생각하면, 아마 4K 비디오나 기타 메모리를 많이 쓰는 소프트웨어들이 늘어나면서 예전과 같은 문제가 결과적으로 나왔기 때문일거라는 생각이다.

그럼 어떻게 실행중인 프로그램이 있는데, 그들이 쓰는 메모리를, 프로그램의 수행에 저장을 두지 않고 압축할까? (사실 압축이란 말은 틀리고, compaction, 그러니까 몰아 놓는 것이다. memory fragmentation을 없애려고) heap이란 개념을 쓸텐데, 이건 보통 stack, heap할 때 그런 뜻이 아니라, pointer to pointer를 이용하는 것이었다.
(음.. 요샌 애플이 CS/CSE에서 통상적으로 쓰는 용어를 쓰지만 Mac OS 7 뭐 이럴때는 자기네가 용어를 만드는 것을 좋아했다. 그래서 stack이니 heap이니 하는 이 바닥에서 공통적으로 이해되는 용어도, 메모리 컴팩션을 설명할때는 pointer to pointer에 의해서 위치 이동이 될 수있는 메모리 공간을, 엄밀하게는 메모리 공간을 포인팅하는 메로리 공간을 heap이라고 했다. 헷갈리게 말이지.)

마베릭에선 이것을 어떻게 처리했을까 궁금하다.

즉 그동안 memory compaction을 하지 않던게 이상한거다. 로딩 속도를 빨리하고, 메모리 공간이 그만큼 커졌기 때문에 그다지 필요하지 않고, 효율적인 메모리 사용보다는 속도가 더 중요해졌기 때문엔데, 이젠 점점 big data란 말이 유행할 정도이고, 비디오 재생은 물론 편집, 인코딩등이 PC로 활발이 되기 때문에, 메모리 사용한계를 거의 이전보다 쉽게 도달하기 때문에 다시 넣은게 아닐까 한다.

물론 그때와 비교해, 무료 약 20년 이상의 시간이 지났기 때문에, 실제 구현 기법이라던가, 좀더 효율적인 방법이 OS 를 연구하는 사람들간에 연구되었을 것으로 기대한다.

요번 WWDC에서의 발표에서 인상적인 부분은, 종합선물 세트같은 OS X의 기능 소개가 아니라, 진짜 우리 CS를 전공한 사람들이 말하는 OS, 그리고 System Software에 변화가 생겼다는 것이고, 이 말은 Apple이 이 부분을 간과하고 있지 않다는 뜻이다.
사실 Leopard 이후에, OS 자체는 그다지 변하지 않았다. 그 위에서 돌아가는 서비스가 변한거지.

내가 보기에 iOS 7이나 Mac OS X나, Mac Pro 다 인상적이었지만, 제일 고무적인 부분이 그 부분이었다.

모처럼 1990년대 초반과 비슷한 느낌을 가졌다.

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: