윈도우8

윈도우8의 runtime(런타임)

sungtg 2012. 6. 17. 13:15

운영체제 뿐만아니라 프로그램을 만드는데 중요시 하는 부분은 결국 메모리 사용문제입니다.

UI 가 예쁜 것도 좋겠지만 컴퓨터에서 사용되는 프로그램이 얼마나 원할하게 돌아가는가 관건이겠지요..

 

윈도우7을 사용하면서 XP때 보다 훌륭하다고 생각되는 부분이 바로 프로그램들의 실행과 종료가 원할하다는 것이었습니다. XP에서는 메모리 담당 매니저가 중앙집중적으로 관리 되었다면.. 윈도우7에서는 많이 분산되어서..

하드웨어, 소프트웨어, 프로그램의 프로세스단 등 각각의 메모리 관리자를 두어서 관리 된 점이 가장 좋았습니다. 윈도우8에도 윈도우7에 메모리 관리 부분이 이어 질 것 같습니다.

=================================================================

 

윈도우 8에서 메모리 사용량에 목표치.

 

Windows 8에서 애초에 세웠던 목표는 Windows 7 시스템 요구 사항과 동일하게 유지하는 것이었습니다.
또한 공식적인 요구 사항을 동일하게 유지하면서 앱에 더 많은 리소스를 제공하도록 개선할 수 있을 것입니다
구형 시스템에서 확인한 테스트 결과, Windows 7 출시 이전의 많은 시스템에서도 Windows 8이 실행될 것으로 예상됩니다

보드에서 소모되는 메모리를 줄이면서 새로운 기능을 구현할 방법을 찾는 것이 Windows 8 개발의 중점 사항이었습니다

 

윈도우7과 윈도우8의 메모리 사용량 비교.

 

아래 그림은 3년 이상 된 구형 넷북에서 메모리 사용량을 비교한 결과입니다.


                                                              윈도우 7 sp1의 메모리


 
윈도우8의 메모리 


부팅되면서 가장 많이 메모리 부분을 많이 차지 하고 들어가는 부분은 뭐니뭐니 해도 하드웨어 부분입니다.

장치가 많을 수록.. 드라이버가 많이 설치 되어 있다면 부팅 될 때 메모리에 올려 두어야 하기 때문에

자동으로 메모리를 많이 차지 할 수 밖에 없지요...

 

핸들 부분은 하드디스크영역 부분의 커널메모리 쪽을 많이 쓰고.. 

프로세스나 스레드는 ram과 cpu의 리소스를 많이 쓰는 부분인데.. 조금씩 줄었네요..

윈도우8의 메모리 감소 부분..

 

1. 메모리 결합

 

PC에서 RAM 내용을 분석해 보면 메모리의 많은 부분에 동일한 내용이 들어 있습니다.
시스템 RAM 전체에서 중복되는 데이터 복사본이 존재한다는 사실은
곧 서비스와 OS 구성 요소에 대해서도 메모리 사용을 줄일 수 있는 기회를 뜻합니다.
 
그렇다면 어떤 방법으로 줄일 수 있을까요?

때때로 응용 프로그램은 예비용으로 메모리를 할당해 두고
해당 메모리를 모두 동일한 값으로 초기화합니다.

응용 프로그램은 어떤 기능이 사용될 것을 예상하여 메모리를 미리 할당하지만,
사용자가 이 기능을 실행하지 않으면 이 메모리는 실제로 사용되지 않습니다.

실행 중인 여러 응용 프로그램에서 이러한 상황이 동시에 발생하면
시스템에 중복된 메모리 복사본이 여러 개 존재하게 됩니다.
 
메모리 결합이란 ?

 

Windows가 정상 작업 중 시스템 RAM의 내용을 효율적으로 평가하여
모든 시스템 메모리에서 중복된 내용을 찾아내는 기술입니다.

Windows는 복사본을 하나만 남기고 중복된 메모리를 모두 회수합니다.
응용 프로그램이 나중에 메모리에 기록하려고 하면 Windows가 개별 복사본을 제공합니다.

이 모든 과정은 응용 프로그램에 영향을 미치지 않고 메모리 관리자에서 자동으로 처리됩니다.
이 방법을 통해 동시에 실행하는 응용 프로그램 개수에 따라

수십 메가바이트에서 수백 메가바이트에 이르는 메모리를 절약할 수 있습니다.

 

2. 서비스 변경과 축소

 

장치 시작 후 항상 실행되도록 구성된 OS 서비스는 메모리를 지속적으로 사용합니다.

Windows 8을 기획할 당시 OS 서비스 평가를 통해 이 중 13개 서비스를 없애고,
일부 서비스는 '수동' 시작으로 전환하고 '항상 실행되는' 서비스 중 일부는 '필요에 따라 시작하는' 모델로 전환하기로 결정했습니다.

예를 들어 장치가 발견되거나 네트워크 주소가 제공되는 경우와 같이 OS에서 '트리거'가 발생하면 다음 단계가 진행됩니다.

1.서비스가 시작됩니다.
2.서비스가 해당 기능을 수행합니다.
3.더 처리할 사항이 없는지 확인하기 위해 잠시 그대로 유지됩니다.
4.서비스가 중단됩니다.
 
Windows 8에서는 플러그 앤 플레이, Windows Update 및 사용자 모드 드라이버 프레임워크 서비스가 모두 트리거 방식으로 시작됩니다.
반면, Windows 7에서는 이러한 서비스가 항상 실행되고 있었습니다.
 
물론 Windows 8에 새롭게 도입된 기능과 새로운 코드도 무수히 많습니다.
새 기능 중 일부는 새로운 서비스 형태로 구성되며,
이러한 서비스 중 두 가지는 자동으로 시작되고
나머지는 모두 수동으로 시작되거나 트리거 방식으로 시작됩니다.

 

3. 더 적은 메모리로 동일한 작업 처리 가능

Windows에서 응용 프로그램을 실행하고 자체 시스템 관리를 수행하는 동안 프로그램 파일과 데이터는 디스크에서 기본 메모리로 로드됩니다.

현재까지 Windows 7과 Windows 8 개발을 진행해 오면서 정상 작동 중에 메모리 조각(페이지)을 분석하고 이러한 조각이 참조된 빈도를 분석했습니다.

여기서 중요한 개념은 메모리 조각 할당에 대해 일종의 비용을 지불한다면
이 메모리 조각을 자주 사용(참조)하는 것이 좋다는 점입니다.
이 메모리가 필요하긴 하지만 자주 참조하지 않으면 다른 메모리와 합쳐집니다.
 
Windows 7을 출시한 후 곧바로, 초창기 NT 시절(1990년대 초기)까지 거슬러 올라가는 Windows의 하위 수준 구성 요소 몇 가지에 비슷한 기술을 적용했습니다.
이를 위해 코드 아키텍처를 재구성하는 한편,

메모리에서 자주 참조되는 '활성' 부분을 '비활성' 부분으로부터 완전히 분리하는 데이터 구조의 변화를 꾀했습니다.

활성 항목을 밀도 있게 통합함으로써 전체적인 런타임 메모리 사용량을 줄일 수 있었습니다.
 
하위 수준 OS라는 변화의 특성을 감안하여 변경에 따라 충분한 런타임을 확보하도록
최대한 빠른 시일 내에 작업을 마무리하려고 했습니다.

현재까지 이러한 변경은 거의 2년 동안 Windows 8에 적용되고 있으며
수천 명의 Microsoft 직원들이 이 제품을 사용하여 일일 업무를 처리하고 있습니다.

결과적으로 일반적인 시스템에서 메모리 사용량이 수십 메가바이트 줄어든 효과를 지속적으로 확인할 수 있습니다.

 

4. 데스크 톱 vs. 메트로 스타일

 

태블릿을 사용하는 많은 사람들이 이 환경에서 메트로 스타일 앱을 활발하게 사용할 것으로 기대하고 있습니다.

메모리 측면에서 볼 때 일부 장치 사용자들은 몰입감이 뛰어난 메트로 스타일 UI를 주로 사용할 것이라는 점에 착안했습니다.

 

Windows 8에서 데스크톱 환경 고유의 OS 구성 요소는 필요할 경우에만 실행하게 될 것입니다.

이것만으로도 메모리 사용량이 23MB 정도 줄어드는 효과를 얻을 수 있습니다.

작업 관리자는 데스크톱에서 실행되므로 위에 표시한 메모리 수치에는 이 부분이 포함됩니다.

 

5. 세부적인 메모리 할당 우선 순위 지정

Windows 8에서는 응용 프로그램과 시스템 구성 요소가 메모리 할당의 우선 순위를 더 체계적으로 지정합니다.
즉, Windows는 계속 유지해야 할 메모리와 조기에 회수해야 할 메모리를 보다 효율적으로 결정할 수 있습니다.
 
예를 들어, 다른 프로그램에 의해 바이러스 백신 프로그램(AV)이 열리면 파일에 대해 다양한 검사를 합니다.

AV 프로그램이 바이러스 서명 확인을 위해 할당하는 메모리는 일반적으로 일회성이므로, 특정 메모리가 다시 필요하게 될 가능성은 적습니다.

Windows 7에서는 시스템에서 특정 메모리의 우선 순위가 다른 메모리(예: Microsoft Excel의 실행 인스턴스에 의해 할당되는 메모리)와 동일한 것으로 취급됩니다.

메모리가 부족해지면 Windows 7은 Excel과 같이 실행 중인 다른 응용 프로그램의 메모리를 회수하게 되고 결국 이러한 응용 프로그램의 응답 속도가 떨어지게 됩니다. 이는 시스템 응답성을 고려할 때 최선의 선택이라 할 수 없습니다.
 
Windows 8에서는 어떤 프로그램이든 메모리를 '낮은 우선 순위'로 할당할 수 있습니다. 그러면 메모리가 부족할 경우 Windows에서 우선 순위가 낮은 메모리를 회수하여 가용 공간을 늘림으로써 시스템의 응답 속도를 유지하는 데
필요한 다른 메모리를 그대로 유지할 수 있습니다.
 
지금까지 Windows 8에서 메모리 사용을 줄이기 위한 접근 방식과 기본 원리를 소개했습니다.

 

몇 가지 샘플 결과도 보여 드렸으며 메모리에 관해 지금까지 수행된 엔지니어링 측면의 노력도 간단하게 알아보았습니다. 
 

- Bill Karagounis

 

==============================================

메모리는 아무리 관리를 잘해도 워낙에 여러가지 많은 프로그램들을 사용하는 과정에서 오류도 나오게 됩니다

메모리 관리의 100%는 있을 수 없지요..

그래픽이나 동영상 만드는 프로그램들은 메모리 쪽에 무리가 오게 됩니다.

프로그램의 실행 종료는 비슷하지만 데이타를 만드는 과정은 해당 프로그램들의 몫입니다.

위에 적은 내용 중에 메모리를 메모리를 중복해서 여러프로그램들이 나눠쓰는 부분이나 우선순위 설정하는 내용을 잘 읽어 두신다면 스마트폰이든 뭐든 운영체제가 들어간 디바이스 다룰 때는 도움이 될 겁니다. 안드로이드든 애플이든 위의 메모리 관리를 만들때는 똑같은 고민을 했을 겁니다..