Windows 7 부팅 애니메이션 엔지니어링

 

 

Windows 7에 대한 논의에서 부팅/시작의 시퀀스 및 부팅을 신속히 행하는 것이 얼마나 중요한지 알았습니다. 동시에 최대 절전 모드 상태에서 머신을 다시 시작할 때 또는 머신을 켰을 때 HDD 라이트가 반짝반짝 하는 것을 바라보는 것이 얼마나 지루한 일인지도 이해하고 있습니다. PC를 실행 했을 때의 첫경험을 향상시키기 위해, 부팅 시퀀스 개선에 착수했습니다. 매우 간단한 일이라 생각하실지 모르지만 문제해결은 그렇지 않습니다. 우리의 목표는 시스템 부팅 성능에 영향을 미치지 않고 즐겁게 하는 것입니다. 이 엔지니어링에 대한 설명과 부팅 시퀀스을 해설하기 위해 코어 사용자 경험팀의 프로그램 관리자인 Karen Wong이 이 글을 집필했습니다. --Steven-

디자인

사람과 감정적으로 연결되어 있는 소프트웨어 특징의 일부를 언급하기 위해 「퍼스낼러티 (개성)」라는 말을 사용했습니다. 「light (빛)」와「energy (에너지)」는 Windows 7 의 퍼스낼러티를 표현하기 위해서 사용합니다.

디자인 관점에서 말하면, 기능의 시각적 표현은 성능과 품질에 대한 사용자의 사고 방식에  중요한 역할을 합니다. 우리의 목적은 Windows 를 멋지게 실행하는 것으로, Windows 7 의 퍼스낼러티인 “light”와 “energy”에서 온 것입니다. 그리고, 자연에서 이것들이 이루는 형태들이 디자인 팔레트가 되었습니다. 예를 들어, 「bioluminescence (생물 발광)」, 「organic (유기적인)」, 「humble beauty (소박한 아름다움)」, 「atmosphere (분위기)」등이 브레인 스토밍(brainstorming)에서 자주 언급된 말이었습니다. 다소 진부하게 들릴지도 모르지만, Windows 7 의 전체적인 목표입니다.

20개 이상의 부팅 시퀀스 디자인을  생성 및 리뷰, 테스트하였습니다. 디자인은 색 채도나 밝기, 움직임의 복잡함, 조명 효과등에 의해서 달라집니다.  다음은 설계 중에 그려진 스케치입니다:

 

Design sketches for the proposed boot animation

Windows 7 의 최종 디자인은 4가지 방향에서 에너지가 접근하여 하나가 되고, 창에 투영된 빛을 형성한다는 것입니다 (물론, Windows의  창과 닮은 것은 우연이 아닙니다!). .

최고의 성능

만약 모든 것을 Vista 와 같이 부팅 애니메이션을 새로운 폴더 Windows 7 용으로만 업데이트 한다면, 우리가 목표로 하는 새로운 폴더 수준의 성능이과 품질을 달성할 수 없습니다. 실제로, Windows 7에서 새로운 폴더 부팅 애니메이션을 구현하려면 방대한 코드 변경이 필요합니다.

Vista에서 부팅 로더는 640x480 의 저해상도 스크린을 사용하며, 녹색 진행 상황 막대에 필요한 파일크기도 매우 작습니다. 게다가 Vista 부팅 스크린은 색농도도 낮고, 16 bpp (bit per pixel) 입니다. Windows 7에서는 새로운 폴더 부팅 애니메이션에서 풍부한 색채를 구현하기 위해 32 bpp 로 늘렸습니다. Vista에서 실행시의 진행 상황을 보여주는 업데이트는 CPU 경유로 구현했지만, I/O 시간의 영향을 받기 쉽기 때문에 가끔 애니메이션에 어려움이 발생합니다. 저해상도의 스크린으로, 색농도도 한정되고, 영향을 받기 쉬워 Windows 7에서 작업을 하려면 많은 수고를 해야 합니다.

우선, 부팅 애니메이션을 표시하는데, Windows 7 부팅 로더에서는 지금까지와는 다른 메커니즘을 사용합니다. 컴퓨터의 데이터 보존부분 (BIOS 또는 UEFI)에서 frame buffer에 포인터를 설정하여, 고해상도의 이미지 (1024 x 768)를 표시합니다. 커널과 실행에 필요한 장치 드라이버가 메모리를 로드하는 동안에 이미지를 애니메이션화합니다. 디스플레이용의 네이티브 그래픽 드라이버는 아직 메모리에 로드되어 초기화되지 않기 때문에 애니메이션은 CPU 를 사용하고, 또 그래픽 디스플레이의 frame buffer를 업데이트 하여 실행됩니다.  성능을 신속화하기 위해서 CPU 가 기입을 병용 하는 캐시를 사용합니다.

Michael Fortin 에 의한 부팅 성능에 대해 블로그에서 실행 초기 단계는 커널, 장치 드라이버 파일 및 그 다른 시스템구성요소의 파일을 로드하여, I/O 의 제약을 받는 것이 설명됩니다. 따라서 실행 초기에 지연이 발생하는 것을 피하기 위해, 부팅 애니메이션 크기를 스크린의 좁은 범위로 한정했습니다. 넓은 크기의 애니메이션은 그 만큼 큰 애니메이션의 이미지를 로드해야 하기때문에, 그 결과 파일 I/O 가 증가합니다. 애니메이션의 이미지는 비트맵을 리소스로서 압축되고, WIM 이미지 압축에 의해 압축됩니다. WIM 이미지 압축은 전체적인 파일크기를 줄여서 로드하는데 필요한 I/O 를 줄일 수 있습니다. 스크린의 좁은 범위에 애니메이션을 표시하여 약간 낮은 프레임비율을 사용하여, frame buffer를 업데이트하는 CPU 오버헤드를 필요 최저한의 수준으로 유지하여, 실행 시간에 오버헤드를 추가합니다.

실행 성능 뿐만 아니라 품질을 향상하기 위한 변화도 있습니다. 그것은 그래픽 모드의 마이그레이션을 줄이는 것입니다. 이 마이그레이션은 그래픽 하부구조나 Windows 셸의 초기화 시에 일어납니다. Vista에서는 이 때문에 사용자에게 로그온 화면을 표시하기까지 (또는 시스템 사용자가 한명밖에 없는 경우는 사용자의 데스크톱을 표시하기까지) 몇차례 디스플레이를 변경하여 (검게 점멸), 실행 경험을 원활하지 않았습니다.

새로운 애니메이션을 가능하게 하기 위해 성능과 품질 향상을 위해서 실행 구조를 자세히 살펴보았는데, 부팅 애니메이션 활동에 의해 데스크톱까지의 시간을 한층 더 단축할 기회가 생겨 기쁩니다. Vista에서는 사용자가 머신을 켜면, 부팅 시퀀스는 Windows 플래그 또는 「펄」 애니메이션이 로그온 스크린 (사용자가 자동 로그인 설정을 한 경우는 데스크톱)  표시됩니다. Vista  실행 구조의 제약에 따라 이 펄 애니메이션은 실행 코드가 이미 완료된 경우에만 재생됩니다.

 

Vista boot animation

Vista 의 부팅 시퀀스, 펄 애니메이션을 포함한다

그런데, 새로운 폴더 실행 영상은 Windows 7 의 퍼스낼러티를 반영한 표현력 풍부한 애니메이션을 표시합니다. 펄 애니메이션은 장황한 느낌이 들어 삭제했습니다. 그 결과, 실행이 완료된 후 애니메이션을 재생하는 시간이 절약되었습니다. 

 

Windows 7 boot animation.

Windows 7 의 부팅 시퀀스, 펄 애니메이션 삭제

Vista에서는 최고 품질 경험을 만들기 위해, 사운드는 펄 애니메이션과 동시에만 실행됩니다. 그러나, 이것은 일부 하드웨어에 대해서 성능에 영향을 줄 가능성이 있었습니다. 이것은 시스템의 사운드 스택은 펄의 시퀀스를 완료하기 위해서 로드되어야 하기 때문입니다. 시스템의 사운드 재생 준비가 갖추어질 때까지 기다리는 경우, 데스크톱이 표시 될 때까지 지연될 가능성이 있습니다. 따라서 이번 사운드는 비동기적으로, 로그온 화면이 로드된 후에 재생되도록 변경했습니다. 테스트된 대부분의 하드웨어에서는 로그온 화면이 표시된 타이밍입니다. 즉 이 변경은 성능 장점에 추가하여 사용자 머신이 사용 가능한 상태가 된 것을 알려주어 사용자 경험을 향상시킵니다.

실행에 관한 코드의 최적화와 Vista 의 펄 애니메이션 삭제에 의해, 데스크톱에 도달할 때까지의 시간을 증가시키지 않고 실행중에 표현력 풍부한 고품질 애니메이션을 추가할 수 있습니다.

폭넓은 하드웨어 대응

실행시의 경험은 사용자의 하드웨어에 따라서 크게 다릅니다. 다양한 하드웨어에 최고의 비주얼 경험을 확실히 하기 위해 몇가지 설계 의사결정을 했습니다. 그러나, 시스템이 데스크톱을 표시하기까지 걸리는 시간은 주로 하드웨어에 의존합니다.

예를 들어, 실행시 애니메이션이 시작되기까지 지연된다는 것을 알고 계실지 모르지만, 이 지연시간은 시스템의 하드웨어에 따라서 다릅니다. 즉각 반응을 보이도록 최적화하기 위해서 Windows 가 시스템상의 모든 프로세서를 시작하는 기회를 얻기 전에 실제로는 실행 화면상에 텍스트를 표시합니다. 그것은 실행중에 애니메이션이 나머지 I/O 와 비동기로 실행할 수 있는 경우에만 가능합니다 (앞서한 얘기와 같이 최선의 성능과 품질에 필요합니다).

또, 실행 중에 Windows 플래그 크기가 스크린 크기에 의해서 조금 바뀌는 것을 알고 계실지도 모릅니다. Windows 7 의 기술적인 제한 때문에 시스템의 원래 해상도와 관계없이 실행시에는 항상 추천되는 최저 해상도인 1024x768 로 표시됩니다. 요즘 대부분의 하드웨어는 부팅 시퀀스를 중앙에 표시하는 것이 아니라, 확대하여 화면 가득 표시하도록 설정됩니다. 그 결과, 부팅 애니메이션도 1024x768 와는 다른 비율로 스크린상에 확대됩니다. 그러나, 시각적인 품질이 유지되도록 일반적인 비율로 일련의 흐름을 테스트 했습니다.

실행, 재시동 및 최대 절전 모드 상태에서 다시 시작

사용자는 최대 절전 모드 상태에서 복귀할 때에도 같은 경험을 체험할 수 있습니다.

사용자 지정

여러분의 상당수는 애니메이션을 사용하거나 일련의 흐름을 사용자가 지정할 수 있는지 궁금해 하실 것입니다. 아쉽지만, Windows 7에서는 지원하지 않습니다. 이미 Windows 7에서 많은 「개인 설정」요소, 예를 들어 베타에서 시험할 수 있는 새로운 폴더 테마 팩 등을 소개했습니다. 이유는 매우 명백한데, 실행시에 임의의 요소가 메모리에 로드되는 것을 허가하면, 시스템의 보안을 보장할 수 없기 때문입니다. Windows 를 시작하는 초기 단계에서는 파이어 월이나 바이러스 소프트웨어는 아직 이용 가능한 상태가 아니기 때문에 시스템은 주의깊게 감시된 기존 상태에서 실행해야 합니다. 성능에 주는 영향을 고려하여, 모든 타사가 그것을 실시하는 것을 보장 하기 위해서 필요한 코드를 기본 제공할 수는 없습니다. Windows 7 의 설계 목표 중 하나는 사용자 여러분 한사람 한사람을 표현하는 충분한 기회가 되어, 자신의 PC 를 정말로 자신만의 PC로 만드는 것입니다.

Windows 7에서는 Windows PC 를 시작할 때의 경험을 좀 더 즐겁게 만든는 것을 목표로 했지만, 이 블로그나 다른 포럼을 통해 보내주시는 피드백에서 우리는 올바를 방향으로 나아가고 있다고 믿고 있습니다. --Karen

Published Thursday, March 12, 2009 12:52 AM by e7blog

Filed under: Design