응용 프로그램을 위한 전력 효율성 향상

Windows 8 빌드

Windows 기술팀 내부 모습

응용 프로그램을 위한 전력 효율성 향상

  • Comments 1

PC 의 전력 소모를 최소화하면서 반응성과 실용성을 최대화하는 것, 즉 PC를 ‘빠르고 부드럽게’ 만드는 것은 중대한 개발 과제라 할 수 있습니다. 이것은 우리가 Windows에서 적절한 리소스 활용을 위해 먼저 시작하긴 했지만, 개발자가 앱 개발 시 리소스 소모를 고려하기 위해 필요한 사안이기도 합니다. 전력 효율성은 모든 폼 팩터와 사용 시나리오에 적용됩니다. 즉, 전력을 덜 사용하는 것은 모든 사용자가 바라는 일입니다. 이런 점에서 WinRT의 새로운 런타임 모델을 기반으로 하는 Windows 8 PC는 중대한 혁신이 이루어진 부분입니다. 단순히 기능과 호환성을 그대로 유지하면서 기존 데스크톱 프로그램에 업데이트만 하는 정도를 얘기하는 것이 아닙니다. 이전에 논의했던 상태 마이그레이션이나 설치 문제와 마찬가지로, 전력 소모 문제는 새로운 시나리오를 위해 Windows가 새롭게 그려온 영역입니다. 기존의 x-86 기반 PC에서와 같이 모든 지원이 그대로 제공되며 데스크톱에서의 작업도 이전과 똑같습니다. 물론 우리가 보기에는 더 향상되었다고 말할 수 있습니다. Intel 등 지원되는 모든 SoC 하드웨어에서 새 하드웨어를 볼 수 있는데, 이러한 수준의 전력 효율성은 더 광범위하게 적용될 것입니다. 데스크톱 앱의 전력 소모를 개선하기 위해 그 동안 우리가 작업해 온 것들에 대해 다루겠지만, 하루 24시간 내내 연결되어 있는 상황을 가정하여 이를 가능하게 하기 위해 새로운 전력 관리 기능을 지원하는 차세대 하드웨어에서 WinRT 기반의 새로운 앱을 실행하는 것에 대해 살펴보려고 합니다.

기반 기술 팀 및 사용자 경험 팀의 최고 프로그램 관리자인 Sharif Farag와 Ben Srour가 이 글을 작성했습니다.

- Steven


Windows 8 PC에서 배터리 수명을 개선하기 위해 어떤 노력을 기울이고 있는지에 대한 글은 이미 여러 번 실었습니다. Pat Stemen의 더 스마트해진 Windows 전원 관리에서는 스마트폰과 유사한 새로운 전원 모드, 이른바 '온라인 대기 모드'를 SOC(system-on-a-chip) 하드웨어에 구현하기 위해 Windows 8에 어떤 투자가 이루어지고 있는지를 다루었습니다. 또한 배터리 소모가 적은 라이브 타일 업데이트에서는 배터리 수명을 닳게 하는 백그라운드 작업을 많이 만들지 않으면서 라이브 타일에서 최신의 정보를 제공할 수 있게 하는 방법에 대해 이야기했습니다. 이 글에서는 이전 글에서 다루지 않았던 몇 가지 혁신적인 사항, 즉, Windows 8 PC에서 실행 중인 앱을 최대한 활용하면서 전력 사용은 어떻게 최소화할 수 있는지에 대해 더 상세히 논할 것입니다.

Pat이 자신의 글에서 언급한 것처럼 응용 프로그램은 리소스(CPU, 디스크, 메모리 및 기타 리소스 등) 사용 시, 각 리소스에 할당된 전력을 사용하면서 전력 소모량에 영향을 미칠 수 있습니다. 이럴 때는 사용자가 응용 프로그램을 한참 사용하고 있을 때는 필요한 모든 리소스를 활용하도록 하고, 사용되지 않을 때는 최소한으로 줄이면 되겠지요. 이 방법은 당연히 OS에서도 똑같이 적용됩니다. Pat이 이를 개선하기 위한 우리의 노력에 대해 다루긴 했으나 사실상 이 부분에서 수백 개의 작은 개선들이 이뤄졌으며, 이것을 우리는 내부에서 OS의 리소스 사용 및 작업을 제한하기 위한 '전력 소모 개선' 조치라 부릅니다. 물론, 이 개선에 너무 집중한 나머지 고객이 기대하는 기능까지 약화시키지 않도록 조심했습니다. 예를 들어, 시작한 작업이 완료되고 나서야 다른 작업으로 전환될 수 있다든가 하는 것 말입니다.

예를 들어 '라이브 타일' 글에 대해 @ItsMe님이 다음과 같이 질문했습니다.

"백그라운드 복사 작업은 어떻게 되나요? 탐색기 응용 프로그램을 백그라운드에 놓고 Word 문서를 보거나 작성하는 경우 복사 작업을 다시 전체 화면으로 가져올 때까지 복사 작업은 일시 중지되나요? 정말 그런가요?"

대답은 "아니요"입니다. 파일 복사는 지금과 똑같이 동작할 것이며, 복사 작업을 시작한 후에 백그라운드에서 복사가 완료되는 동안 다른 작업을 해도 복사가 일시 중지되지 않습니다. PC를 사용하든 PC를 오래 사용하지 않아 화면 보호기 또는 화면 잠금으로 넘어가든 똑같이 동작합니다. 비활성 앱의 일시 중지는 Metro 스타일 앱에만 적용되며 파일 복사와 같은 기본 OS 기능에는 적용되지 않습니다.

포그라운드에 초점을 맞추다

Windows 8에서 우리는 수많은 Metro 스타일 앱에 적용할 규칙으로 시작했습니다. 즉, 앱이 화면에 없고 화면이 켜져 있지 않은 경우 배터리 수명이 영향을 받지 않습니다. 그렇다고 이것이 WinRT와 사용자 모델의 멀티태스킹이 안 된다는 의미는 아닙니다. 코드에 최신 하드웨어 기능, 네트워킹 요구, 폼 팩터 및 신뢰성/보안/개인정보보호를 언제 어떻게 반영해야 하는지에 대한 새로운 사고 방식입니다. 백그라운드 전자 메일 동기화, 바탕 화면 도구 등 몇 가지 예외는 있겠지만 대부분의 경우 사용자가 앱과 상호 작용하고 있는 동안 앱은 거의 모든 작업을 실행합니다. 앱이 포그라운드에 있지 않을 때는 앱이 완전히 일시 중지되거나, 아니면 앱이 액세스할 수 있는 여러 가지 일반적인 백그라운드 기능(예: 파일 복사)에 따라 제한된 리소스를 사용하도록 만들고자 했습니다.

기본적으로 앱이 다음 세 가지 상태 중 하나가 될 수 있다는 뜻입니다.

  1. 포그라운드에서 실행
  2. 백그라운드에서 일시 중지
  3. 정의된 백그라운드 작업 수행    
포그라운드에서 실행

포그라운드에서 앱을 실행하는 것은 매우 쉽습니다. 앱을 실행하여 CPU, 디스크, 메모리 및 기타 리소스를 필요한 만큼 활용하게 하면 됩니다. 이와 같이 Metro 스타일 앱은 근본적으로 Windows 응용 프로그램의 방식과 동일합니다. 하나의 앱이 전체 화면을 차지하고 있거나 두 개의 앱이 화면에 보이는 상태에서 그 중 하나의 앱을 측면으로 끌어온 경우도 여기에 포함됩니다. 이는 사용자가 PC와 상호 작용하고 있을 때, 즉 화면이 켜져 있는 경우에만 적용됩니다.

빠르고 응답성이 높은 앱을 개발하는 데 있어 고려해야 할 새로운 요소들은 많습니다. 문자에서 GUI 프로그래밍으로의 전환 시에 각각의 개념이 상당히 달랐던 것처럼, 전력과 리소스 소모를 중시하는 앱의 개발에는 새로운 접근 방식이 필요합니다. 예를 들어, 초기의 Windows 프로그래머들은 WNDPROC의 개념에 불만이 있었고 입력을 처리하는 최상의 방식은 인터럽트를 트래핑하고 키 입력을 변환하는 것이라 생각했습니다. 그런데 메시지 기반의 접근 방식은 이를 뒤집었고 Windows는 변환을 처리하여 앱이 언제 키 입력에 신경을 써야 할지 알 수 있도록 했습니다. 이는 초기의 방식과는 매우 달랐습니다. 전 세계에서 판매되는 PC의 75% 이상이 배터리로 구동되는 PC인 만큼, 프로그래머는 말 그대로 어떻게 작업을 해야 할지 재고해야 할 필요가 있습니다.

이와 같은 상황에서 고객의 요구와 하드웨어 진화에 맞춘 보다 진취적인 방식으로 앱 개발에 대해 생각하는 것이 중요합니다. 기존 응용 프로그램 모델은 고객이 원하는 배터리 수명과 절전을 실현하기 위해 진화할 필요가 있었습니다. 물론 우리가 계속 이야기해 온 것처럼, 현재 가지고 있는 데스크톱 응용 프로그램은 지금 Windows 7에서와 똑같이 작동할 것이며, 여러 가지 측면에서 오히려 향상되었습니다. 하지만 시간이 흐르면서 우리는 Windows에서 더 적은 전력으로 더 많은 작업을 할 수 있도록 오락용 도구부터 전문 도구에 이르기까지 새로운 응용 프로그램들로 Windows를 무장시키고 있습니다. 컴퓨팅 가능한 리소스, 필요한 리소스, 컴퓨팅 유형 등이 변화하고 있으며 Windows 8은 이러한 기회에 한발 다가설 수 있는 새로운 기능을 제공합니다.

포그라운드 기반 접근 방식에서 동시성은 이제 빠르고 유동적이며 응답성이 높은 앱을 어떻게 개발할 것인가 하는 문제에 있어 큰 부분을 차지하게 되었습니다. //build/ 컨퍼런스에서 동시성이 높은 응용 프로그램을 개발하기 위해 새로운 도구와 API를 어떻게 사용할 것인지를 보여드린 바 있습니다. 개발자들은 이를 통해 시나리오를 짜는 방법에 대해 다르게 생각해 볼 수 있습니다. 예를 들어, 개별 백그라운드 앱이 필요하지 않을 때도 무언가를 위해 항상 실행되어 배터리를 낭비하는 것이 아니라, 프로그래머가 새 OS 백그라운드 작업 인프라를 활용하여 전력 효율적인 방식으로 백그라운드에서 필요한 작업을 완료할 수 있습니다. 백그라운드 작업은 푸시 알림, 예약된 이벤트 또는 수신 네트워크 데이터 등 여러 가지 방법으로 호출할 수 있습니다. 또한 시스템은 자체적으로 판단하여 PC의 전원이 켜져 있을 때 백그라운드에서 앱이 더 자주 실행되도록 합니다. 다시 말해서, 코드가 항상 실행되는 대신 필요할 때만 실행됨으로써 배터리 수명에 확실한 도움이 된 것입니다. 예를 들어, PC가 켜져 있으면 뉴스 구독 앱이 한밤중에도 자동으로 콘텐츠를 다운로드할 수 있어 앱을 실행했을 때 최신 콘텐츠를 볼 수 있습니다. 이는 작업을 위한 기능을 제한하는 것이 아니라 작업을 위한 새로운 방식이며 중요한 시스템 리소스에 대한 영향도 최소화됩니다.

백그라운드에서 앱 코드가 실행되는 방법의 개선 외에도 도구 인프라와 WinRT API에서도 많은 개선을 이루어 비동기 프로그래밍이 더 쉽고 강력해지도록 만들었습니다. 빠르고 응답성이 높은 앱은 비동기 프로그래밍의 탁월한 장점을 바탕으로 만들어졌습니다. //build/ 컨퍼런스의 메인 세션에서 Anders Hejlsberg는 WinRT 접근 방식을 선보였는데 이는 방대한 카탈로그 항목을 보여주는 것에 초점을 두어 비동기 사용자 환경을 구축하기 위한 것이었습니다. 이러한 기술의 활용을 통해 앱을 위한 훌륭한 시나리오와 포그라운드 성능을 제공할 수 있으며 배터리 수명도 길어집니다.

백그라운드에서 앱 일시 중지

두 번째 상태에서는 앱을 실행한 후 다른 작업으로 전환하면 운영 체제가 앱을 일시 중지합니다. 즉 Windows 스케줄러(프로세스 및 스레드를 위해 CPU 액세스를 스케줄링하는 요소)는 CPU 스케줄링에 이를 포함시키지 않���니다. 운영 체제가 앱을 스케줄링하지 않으므로 앱이 CPU를 사용하지 않아 CPU가 저전력 상태에 들어갈 수 있습니다. CPU를 저전력 상태로 들어가게 하는 것은 배터리 수명을 늘리는 데 매우 중요합니다. 앱을 디버깅하고 일시 중지했을 때 프로세스에서 발생하는 상황과 유사하므로 개발자는 이 접근 방식에 익숙할 것입니다. 기본적으로, 앱을 위해 실행되는 모든 스레드가 중지됩니다. 일시 중지된 앱은 캐시된 상태와 유사하다고 볼 수 있습니다. 앱이 이미 초기화되었으므로 순간적인 앱 전환의 효과를 얻을 수 있습니다. 이는 앱이 백그라운드에서 포그라운드로 전환될 때 운영 체제 스케줄러가 앱 실행이 다시 진행되도록 하는 간단한 원리입니다.

이 새로운 '일시 중지' 상태의 큰 이점은 필요할 때 즉시 재개할 수 있다는 것입니다. 일시 중지된 앱으로 전환하면 앱이 즉시 재시작되며 마지막으로 사용하던 상태로 정확히 돌아갑니다. 이를 통해 Windows 역사상 가장 빠른 속도로 더 많은 앱 사이를 전환할 수 있습니다. 이제 PC에 몇 개의 앱이 실행되고 있는지 신경 쓸 필요가 없습니다. 라이브 타일이 앱에서 어떤 일이 일어나고 있는지 지속적으로 알려주고 앱에서 상태의 저장 및 복원이 가능하며 앱이 항상 실행되고 있는 것처럼 작동합니다.

예를 들어 예정된 비행 일정을 지속적으로 알려주는 앱이 있다고 생각해보십시오. 이 앱은 일시 중지되었거나 백그라운드에서 실행되고 있지 않을 때에도 라이브 타일 알림을 통해 다음 비행 일정 상태를 보여줍니다. 이 앱으로 전환하면 항공편 검색과 같은 마지막으로 했던 작업이 열려 쉽게 이어 작업할 수 있습니다. '어떤 앱이 실행되고 있는가' 하는 것은 다소 추상적 개념이므로 우리는 앱의 실행과 전환이 기본적으로 같아지도록 했습니다. 앱 전환을 위해 백 스택, Alt+Tab, 시작 화면 중 어떤 것을 사용하든 즉시 일시 중지된 앱으로 돌아갈 수 있습니다.

이와 같이, '실행 중인' 프로그램의 목록은 시작 화면에 나타나는 프로그램 목록과 동일하게 실질적인 목적을 위한 것입니다 키보드 사용자인 경우 Window 7에서와 똑같이 실행 중인 모든 프로그램에 대해 Alt+Tab을 사용할 수 있으며 데스크톱 앱에 대한 작업 표시줄 또한 똑같이 동작한다는 것을 기억하십시오. 다중 모니터 시나리오에 맞게 향상된 측면도 있습니다.

앱의 일시 중지가 가능해짐으로써 얻을 수 있는 이점은 배터리 수명이나 시스템 성능에 나쁜 영향을 주지 않고 매우 빠르게 전환을 할 수 있다는 것입니다. 이는 시작하는 데 실행 시간이 긴 앱에 사용자의 작업 흐름을 맞춰야 했던 기존의 데스크톱 앱과는 완전히 달라진 부분입니다.

일반적으로, 백그라운드 작업을 하고 있지 않은 앱을 일시 중지하지 않는 두 가지 경우가 있습니다. 첫 번째는 현재 로그인된 세션에서 아직 앱을 시작하지 않았고 앱 타일을 눌러 시작해야 할 때입니다. 두 번째 경우는 더 흥미롭습니다. 시스템 실행을 위한 메모리가 부족할 때 시스템은 일시 중지된 상태에서 앱을 제거하고 종료할 수 있습니다. 메모리는 한정된 리소스이므로 우리는 가장 자주 사용하는 앱을 즉시 실행 가능하도록 만들고자 합니다. 앱을 일정 시간 동안 사용하지 않았고 운영 체제에 더 많은 메모리가 필요할 경우 일시 중지된 앱 중 하나가 종료됩니다. 메모리 관리자가 일시 중지된 앱을 가져와서 일반적으로 실제 메모리보다 용량이 큰 디스크에 저장하기 때문에 이런 경우는 비교적 드물게 발생합니다. 이러한 앱으로 다시 전환하면 즉시 실행할 수 있게 됩니다. 하지만 시스템이 일시 중지된 앱을 반드시 종료해야 하는 경우가 있습니다. 일반적으로 여러 사용자가 하나의 PC에 로그인되어 있거나 메모리를 많이 사용하는 앱을 여럿 사용하고 있을 때 이런 상황이 발생합니다.

종료할 앱을 선택할 때 운영 체제는 앱이 마지막으로 언제 사용되었는지, 어느 정도의 메모리를 차지하는지 등 여러 요소를 고려합니다. 물론 운영 체제는 사용자가 원할 때 언제든 일시 중지된 앱으로 다시 전환할 수 있도록 가능한 한 적은 수의 일시 중지된 앱을 종료합니다. 앱 모델이 진화하여 앱이 사용되는 동안에도 개발자가 손쉽게 상태를 증분식으로 저장할 수 있고 앱이 다시 실행될 때 간단히 복원할 수 있으므로 일시 중지된 상태에서 앱이 종료되어도 사용자에게는 거의 영향을 미치지 않습니다. 예를 들어 비행 일정 관리 앱은 사용자가 다른 앱으로 전환했을 때 항공편 검색 페이지에 있었던 것을 기억하며, 다시 이 앱으로 전환하면 이 정보를 사용하여 같은 페이지로 돌아오도록 합니다. 앱이 종료된 경우에도 마찬가지입니다.

우리가 강조하려는 중요한 사실은 백그라운드에 일시 중지된 앱이 여러 개 있어 메모리를 차지하고 있는 경우에도 PC의 성능이나 배터리 수명이 나쁜 영향을 받지 않는다는 것입니다. 실제로 사용자는 앱을 직접 관리하거나 닫지 않아도 됩니다. 이는 현재 컴퓨팅 장치에서 사용되는 일반적인 접근 방식이며 운영 체제 설계에 대한 새로운 시각을 나타냅니다. Frasier Spears가 쓴 iOS 멀티태스킹에 대한 글을 한번 읽어보십시오.

성능 또는 배터리 수명 향상을 위해 앱을 꼭 닫지 않아도 되지만 향후 출시될 Windows 8 베타에서는 앱을 닫는 것이 가능합니다. 앱이 오류 상태가 되는 경우나 앱 사용이 끝나 더 이상 앱을 열어 놓지 않아도 되는 경우를 위해서입니다. 마우스, 터치 또는 키보드 바로 가기를 사용하여 앱을 닫을 수 있습니다. 베타 버전이 출시되면 우리가 계획하고 있는 이러한 변화들에 대해 상세히 설명하는 글을 올릴 예정이니 계속 지켜봐 주시기 바랍니다.

개발자 프리뷰 빌드에서 Stocks(주식), News(뉴스), Weather(날씨) 앱 등 빌드에 제공되는 몇 가지 앱을 실행한 후 새 작업 관리자를 열면 일시 중지된 상태를 실제로 볼 수 있습니다. CPU 사용률이 0%으로 나타나는 것에 주목하십시오. 앱이 메모리에 있긴 하지만 사실 작동하지 않고 있는 상태이며 배터리 수명이나 성능에 나쁜 영향을 미치지 않습니다.

작업 관리자에 Metro 스타일 앱이 표시됨. 몇몇 Metro 스타일 앱의 상태: Suspended(일시 중지), CPU 사용률 0%

백그라운드에서 일시 중지된 Metro 스타일 앱

백그라운드 작업 수행

이전에 논했던 것처럼, 개발자는 이전에 백그라운드에서 수행되던 작업을 배터리 수명에 영향을 주는 일 없이 어떻게 완료할 것인가를 생각해야 합니다. 멀티태스킹을 요청하여 실행하면 쉽게 해결되겠지만, 여기에는 백그라운드에서 앱이 항상 실행될 경우 배터리 수명을 늘리거나 향상시킬 수 없다는 단점이 있습니다. 이것은 모바일이나 항상 온라인 상태인 랩톱에서는 매우 중요한 문제입니다. 그래서 Windows 8과 WinRT에서 우리는 Metro 스타일 앱의 백그라운드 처리를 다루기 위한 새로운 API를 만들었습니다.

다시 말하지만, 데스크톱 앱은 이전과 같이 실행될 것이고 배터리 수명에도 현재와 같이 영향을 주게 됩니다. 물론 향상된 부분도 있으며, 이에 대해서는 아래에서 설명할 것입니다.

우리는 리소스 활용에 대해서는 보수적인 입장을 유지하면서, 사람들이 Windows에 기대하는 멀티태스킹과 고급 앱 기능 구현 간에는 균형을 유지하고자 했습니다. 이를 위해 실현하려는 핵심 시나리오의 목록을 작성했고 가장 리소스 효율적인 방식으로 각 시나리오를 구현하기로 했습니다. 그 결과 백그라운드 멀티태스킹 API 집합이 만들어졌고, 이제 앱은 리소스 효율적이고 전력 효율적인 방식으로 백그라운드에서 작업을 완료할 수 있으며 앱 개발자는 추가적인 작업 없이 원하는 앱의 기능에 초점을 맞출 수 있게 되었습니다.

우리는 시나리오 중심의 접근 방식을 통해 백그라운드에서 앱이 해야 하는 가장 일반적인 작업이 가능해지도록 했습니다. 다음은 WinRT에서 Metro 스타일 앱이 백그라운드에서 할 수 있는 작업입니다.

  • 음악 재생
  • 웹 사이트에서 파일 다운로드/업로드
  • 라이브 타일에 최신 콘텐츠 제공
  • 인쇄
  • VoIP 통화 수신
  • 인스턴트 메시지 수신
  • 전자 메일 수신
  • 콘텐츠 공유(예: Facebook에 사진 업로드)
  • 테더링된 장치와 콘텐츠 동기화(예: 사진 동기화)

이러한 시나리오들은 개발자가 사용하는 일반적인 패턴과 우리가 기대하는 일반적인 패턴을 기반으로 합니다. 이 시나리오들 중 일부는 동일한 플랫폼 어포던스를 사용하게 되었습니다. 각각을 살펴보면 Windows 8이 얼마나 강력한지 전체적으로 이해할 수 있습니다.

시나리오

설명

백그라운드 다운로드 또는 업로드

인터넷에서 콘텐츠에 액세스하고 저장하는 것은 아주 일반적인 앱 시나리오입니다. 우리는 앱으로 다시 전환했을 때 최신 콘텐츠가 이미 로드되어 있도록 만들고자 했습니다. 이것은 잡지 또는 뉴스를 기반으로 하는 앱에서 특히 유용합니다. 앱은 새로운 백그라운드 전송 API를 사용하여 백그라운드에서 업로드와 다운로드를 수행할 수 있습니다. 이를 '완전히 브로커링된(Fully brokered)' API라고 하는데, OS가 자체적으로 업로드/다운로드를 수행한다는 뜻입니다. 따라서 앱 코드 실행이 필요 없으며 배터리 수명 연장에도 도움을 줍니다.

백그라운드 오디오

음악을 듣는 것 등의 작업을 할 때는 한 번에 두 가지 이상의 작업을 할 수 있도록 하고자 했습니다. 어떤 종류의 미디어나 커뮤니케이션 앱이라도 백그라운드에서 오디오를 재생할 수 있습니다. 효율성을 최대화하기 위해 오디오를 일시 중지했을 때는 앱도 일시 중지됩니다.

공유

앱이 공유 Charm을 사용하여 클라우드 서비스에 콘텐츠를 전송하고 있을 때 이 작업을 백그라운드에서 완료할 수 있습니다.

화면 잠금 앱

일반적으로 화면 잠금 앱은 최신 정보를 알려야 하며 앱을 사용하고 있지 않을 때에도 언제든지 동작해야 합니다. 가장 일반적인 예는 전자 메일과 VoIP, IM 앱입니다. 화면 잠금 앱이 배터리 구동 시 백그라운드에서, 그리고 화면이 잠겼을 때도 알림을 제공하고 데이터를 동기화할 수 있습니다.

인쇄

앱의 인쇄 동작이 백그라운드로 이동되었을 때도 문서를 인쇄할 수 있습니다.

장치 동기화

화면에 앱이 나타나 있지 않아도 카메라 등 연결된 장치와 PC 간에 콘텐츠를 동기화할 수 있습니다.

Windows 알림 서비스와 라이브 타일

일시 중지 상태일 때도 앱이 Windows 8 PC에 푸시 알림을 전송하여 앱의 라이브 타일에 최신 콘텐츠를 제공함으로써 항상 실행되고 있는 것처럼 느껴집니다.

알림 스케줄링

앱이 특정 시간에 일정을 알릴 수 있으며, 특정 시간에 타일을 업데이트하거나(예: 일정 약속) 바탕 화면에 알림을 띄워 사무실을 떠나기 전에 해야 할 일을 상기시킵니다. 이러한 일정 스케줄링은 앱에 의해 이뤄지나, 알림을 제공하는 작업은 Windows의 몫이며 이는 배터리에 대한 영향을 줄여줍니다.

백그라운드 작업

주기적인 간격으로, 또는 Windows나 IM 서비스에 로그인할 때와 같은 특정 이벤트 발생 시 앱의 코드 실행이 가능합니다. 화면 잠금 앱은 15분마다 코드를 실행할 수 있지만, 화면 비 잠금 앱은 장치가 교류 전력에 연결되어 있을 때만 15분마다 코드를 실행하도록 등록할 수 있습니다.

온라인 대기 모드 및 절전 모드 가능 컴퓨터

Windows 8이 출시될 때쯤이면 그 어느 때보다 다양한 PC가 선을 보일 것입니다. 이 중 대다수는 현재 Windows 7의 실행 시와 유사한 전원 옵션을 취할 것입니다. 완전히 전원이 꺼지는 것 외에도 필요에 따라 또는 비활성 상태가 일정 시간 동안 유지된 후에 '절전' 상태로 들어갈 수 있을 것입니다. 절전 모드일 때는 모든 시스템 활동이 완전히 일시 중지됩니다.

전력 소모량, 0-60초: 화면 켜짐, 60-120초: 화면 어두워짐, 120-180초: 화면 꺼짐, 180-240초: 절전(S3). 데스크톱 앱은 180초 동안 계속 실행되며 이후 PC가 절전 모드가 되면 중지됨. Metro 스타일 앱은 180초 동안 OS에 의해 관리되며 이후 PC가 절전 모드가 되면 중지됨

절전 모드 가능(기본 설정) PC에서의 응용 프로그램 실행

위 차트는 PC가 절전 모드로 들어가기 직전 유휴 상태가 되었을 때, Metro 스타일 앱은 앞서 설명한 관리 방식으로 실행되지만 데스크톱 앱은 어떻게 이전 버전의 Windows에서처럼 계속 실행되는지를 보여줍니다. PC가 절전 모드가 되면 데스크톱 앱과 Metro 스타일 앱 모두 완전히 일시 중지되는데, 이는 배터리 수명에 도움을 줍니다. 컴퓨터가 작동하지 않을 때는 매우 적은 전력을 소모하기 때문입니다. 하지만 데이터 최신성에는 전혀 도움이 되지 않습니다. 컴퓨터가 작동하지 않으면 라이브 타일 업데이트 가져오기, 새 메일 다운로드, 경보 또는 기타 알림을 즉각적으로 알려줄 수 없기 때문입니다.

Pat이 자신의 글에서 다루었듯이, 새로운 차원의 PC를 위해 스마트폰과 유사한 전원 상태를 구현했고 완전히 꺼지는 일이 거의 없도록 만들었습니다. 일반적으로 SoC(System on Chip) 아키텍처를 기반으로 하는 이러한 PC는 일정 시간 동안 비활성 상태일 때 꺼지는 것이 아니라 저전력 상태가 되어 계속 실행되기 때문에 매우 흥미롭습니다. 이 새로운 상태를 '온라인 대기 모드'라고 하며, 놀라운 배터리 수명을 제공하면서 전자 메일을 최신 상태로 유지하고 인스턴트 메시지 또는 전화를 수신하는 것과 같은 훌륭한 연결 시나리오가 이를 통해 가능해집니다. 아래 차트는 온라인 대기 모드일 때 데스크톱과 Metro 스타일 앱의 동작을 보여줍니다. 실제로 이것이 효율적으로 동작하도록 하기 위해 Metro 스타일 앱(앞서 봤듯이 시스템 리소스에 대해 우리는 보수적인 입장을 고수하고 있음)과 데스크톱 앱을 함께 고려해야 했는데, 시스템에 완전하게 액세스를 하거나(포그라운드 또는 백그라운드에서 실행될 경우) 아예 액세스를 하지 않는(PC가 작동하지 않을 경우) 방식으로 수년간 설계되어 왔으므로 이는 힘든 과제였습니다.

전력 소모량, 0-60초: 화면 켜짐, 60-120초: 화면 어두워짐, 120-180초: 화면 꺼짐, 180-240초: 온라인 대기 모드. 데스크톱 앱은 180초 동안 계속 실행되며 이후 PC가 온라인 대기 모드로 들어가면 중지됨. Metro 스타일 앱은 항상 OS에 의해 관리되며 PC가 온라인 대기 모드로 들어갈 때도 마찬가지

온라인 대기 모드 PC에서의 응용 프로그램 실행

이를 위해 '데스크톱 작업 모더레이터(Desktop Activity Moderator)'라는 새로운 요소를 Windows 8에 추가했습니다. 이는 새로운 온라인 대기 모드가 가능한 플랫폼에서만 실행됩니다. 이 요소는 장치가 온라인 대기 상태가 될 때 데스크톱 앱의 리소스 사용을 줄이기 위한 것입니다. 이 저전력 모드에서 앱이 확인 없이 계속 실행된다면 PC는 더 빨리 배터리를 소모할 것입니다. 대신, 데스크톱 응용 프로그램을 일시 중지하고 리소스 사용을 중단하여 배터리 수명을 연장했습니다. 응용 프로그램 측면에서는 PC가 단지 절전 모드로 들어간 것처럼 보일 것입니다. PC가 온라인 대기 모드에서 깨어나면 앱은 마치 PC가 절전 상태에서 깨어난 것처럼 재시작될 것입니다.

그러나 시스템에는 실제로 온라인 대기 모드에 필요한 여러 가지 요소가 있는데, 이들은 일시 중지할 수 없습니다. 여기에는 드라이버, 일부 받은 편지함 및 타사 서비스가 포함되며 앞서 언급한 백그라운드 기능을 사용하는 Metro 스타일 앱도 물론 포함됩니다. 이 중 대다수는 사용자가 장치로 돌아왔을 때 사용자 입력에 응답하는 기능 또는 네트워크 기능 등을 제공합니다. 우리는 이들이 배터리 수명에 큰 영향을 주지 않는지 신중하게 평가한 후 온라인 대기 모드에서 실행될 수 있도록 했습니다. 또한 시스템에서 작업에 대한 응답으로 실행되어야 하는 프로세스들도 있습니다. 이러한 프로세스는 백그라운드 작업이 시작될 때까지는 짧은 시간 동안만 실행되도록 억제되며, 이후에는 제약 없이 실행 가능합니다. 예로는 바이러스 백신 제품을 들 수 있는데, 이는 시스템에서 작업에 대한 응답으로 검사를 실행합니다. 백그라운드 어포던스를 통해 수신 전자 메일을 받는 것과 같은 백그라운드 작업이 일어날 때 바이러스 백신은 이 기간 동안 제약 없이 실행 가능합니다. 그러나 수신 네트워크 작업이 발생하지 않을 때는 대부분의 시간 동안 최소한의 작업만 수행되며 이러한 요소는 배터리 수명에 거의 영향을 주지 않도록 억제됩니다.

요약

보시다시피 Windows 8이 최상의 배터리 수명을 가지도록 우리는 상당한 투자를 했습니다. 그 결과 우리는 전원 연결 상태에 있으면서도 배터리 수명이 지속적으로 길게 유지되는 새로운 응용 프로그램 모델을 개발했습니다. Windows 7용으로 설계되었던 응용 프로그램은 이전과 변함 없이 동작할 것이며, 운영 체제에서 제공되는 백그라운드 인프라를 활용함으로써 더 높은 전력 효율로 작동하는 새로운 전원 연결 환경이 가능하도록 새로운 Metro 스타일 앱을 개발할 수 있습니다.

- Sharif Farag와 Ben Srour

  • Loading...
Leave a Comment
  • Please add 6 and 5 and type the answer here:
  • Post