2009년 11월 22일 일요일

[IT/OS] 윈도우7의 추한 비밀이 드러나다??


윈도우7의 판매가 기존의 운영체제들의 실적에 2배이상이고 비스타와 비교하자면 200배가 넘는다는 정말인지 사실인지 알 수 없는 기사때문에 윈도우7의 판매량에 관한 자료를 찾던중에 '윈도우7의 더러운 비밀이 드러나다'라는 제목의 기사(원문)가 있어서 읽어봤는데 프로그래머가 아닌 저로서는 온전한 이해는 못하지만 그래도 조금은 흥미있는 내용인거 같아서 번역해봤습니다. 번역의 정확성은 높지않지만 내용을 이해하는데는 문제 없을거라 봅니다.


윈도우7의 더러운 비밀이 밝혀지다 (Tim Anderson in Los Angeles )

While chief technology officer Ray Ozzie was away in the clouds at Microsoft's Professional Developer Conference, technical fellow Mark Russinovich got down and dirty with the true heart of Windows - the kernel.
기술담당 Ray Ozzie가 마이크로소프트의 개발자 회의에 빠진가운데 기술보조 Mark Russinovich는 윈도우의 핵심인 Kernel에 관한 문제에 실망했다.

He presented a two-hour session on changes made to the kernel used by both Windows 7 and Server 2008 R2, shedding light on some confusing issues - like the Windows version number, which he said "means nothing at all". Windows 7 is version 6.1, not because it is a minor release, but for compatibility with applications that check the major number and would not run if it said 7.
그는 2시간동안 몇몇 혼란스러운 주제들에 초점을 맞춰서 윈도우7과 서버 2008R2에 사용된 Kernel의 변화에 대해 설명했다.  Russinovich는 윈도우의 버젼 번호는 아무런 의미가 없다고 한다. 윈도우7은 버젼 6.1이며  (그것이 마이너 릴리즈라서가 아니라, 주요 버전 넘버를 검사하여 그것이 7이면 작동하지 않는 어플리케이션들의 호환성 때문에 6.1 버전이다.)수정by pega9143 (이말은 완전한 윈도우7이 아니며 기존의 os코드가 많이 남아있다는 뜻인듯합니다)

Another of his themes was MinWin, a lightweight version of Windows whose purpose has sparked speculation. MinWin exists, he said, and contains the minimum necessary to boot and access the network: kernel, file system driver, device drivers, services and TCP/IP stack. It amounts to around 150 binaries, and requires 25MB disk space and 40MB RAM.
또다른의 주제는 경량 윈도우 버젼인 미니윈도우(MinWin)였다. 그는 부팅과 네트워크 사용(kernel, 파일 시스템 드라이버, 장치 드라이버, 서비스와 TCP/IP stack)에 필요한 최소 자원만 포함한 미니 윈도우가 존재한다고 말했다. 150 binary의 크기이며 25메가 용량과 40메가의 메모리가 필요하다.

MinWin is handy for setup and system recovery, but its real purpose is to introduce what he calls "architectural layering" to Windows. Microsoft needs small footprint versions of Windows, both for embedded use and for the GUI-free Server Core edition. The problem is that the operating system is full of internal dependencies, and as Russinovich admitted: "We don't really understand those dependencies".
미니 윈도우는 설정과 시스템 복구가 쉬우나 이것의 진짜 목적은 그의 표현으로 윈도우의 "구조적 레이어(architectural layering)"를 보여주기 위함이다. 마이크로소프트는 작은 윈도우 버젼이 필요하다. 문제는 윈도우가 너무 많은 내부 하위구조를 가지고있다는것이다. Russinovich는 "우린 정말로 왜 저런 내부 하위구조가 있어야하는지 이해할 수 없습니다"라고 인정했다.

Engineers have added features to low-level APIs that assume the presence of dynamic link libraries (DLLs) that belong with higher level APIs, and when you try to extract just those low-level components, they break. MinWin is a first step in making Windows layered, maintainable and understandable.
상위레벨API에 속한 DLL(dynamic link libraries)을 사용하는 하위레벨 API을 추출할려고 시도하면 API들은 동작을 못한다. 미니윈도우는 유지가능하고 설득력있는 윈도우를 만드는 첫 걸음이다.

In order to make MinWin, Microsoft had to split existing DLLs that had these unwanted dependencies, such as Kernel32.dll. The team created KernelBase.dll, which has only the base functions MinWin requires. Applications expect to find these functions in Kernel32, but they are simply forwarded to KernelBase. Kernel32 itself is outside MinWin.
미니윈도우를 만들기 위해선 마이크로소프트는 kernel32.dll같은 불필요한 DLL들을 제거해야만 한다.  미니윈도우 팀은 미니윈도우가 필요로하는 기본적인 기능만을 가진 KernelBase.dll를 만들었다. 어플리케이션은 이러한 기능을 Kernel32에서 찾도록 되있지만 간단하게 KernelBase로 이전할수 있다. Kernel32 자체는 미니윈도우에 없다.

A related problem is that Microsoft has been in the habit of combining unrelated APIs into the same DLL for performance reasons. Its solution is to create virtual DLLs, which are the API sets programmers call, but which are implemented in logical DLLs that might combine several virtual ones. A schema file that is mapped into every process tells Windows where the real API resides
이것과 연관된 문제로는 마이크로소프트는 성능상의 이유때문에 상관없는 API들을 같은 DLL에 결합시키는 습관에 젖어있다는것이다. 해결방법은 가상DLL들을 만들어서 모든 실행과정을 진짜 API가 들어있는 윈도우에 보고하게끔 하는것이다.(관련 지식이 없어서 무슨말인지는 모르겟으나 대강의 생각은 이런거 같습니다)

Russinovich went on to explain why Windows 7 is faster. Memory footprint was reduced by up to 30 per cent by reviewing excessive memory allocations, and by refactoring the Desktop Window Manager (DWM) to avoid a second copy of every Window being held in memory. The registry is no longer accessed as a memory-mapped file, reverting a change made for Windows XP. Processes that consume large amounts of memory are more aggressively pruned. Microsoft also picked out 300 common user actions, such as clicking the Start menu or opening Control Panel, and gave them intensive optimisation to improve perceived performance.
Russinovich는 윈도우7이 왜 더 빠른지 설명했다. 과도한 메모리사용을 재조사함으로써 30%까지 메모리사용이 줄어들었고 Desktop Window Manager(DWM)를 다시 만들어서 메모리상에서 윈도우가 중복 상주해있는것을 피했다. 레지스트리는 더이상 메모리상에 상주하지않으며 이는 윈도우XP에서 사용된 방법으로 돌아간것이다. 많은 양의 메모리를 사용하는 프로세스들도 삭제됬다. 마이크로소프트는 또한 눈에 보이는 향상을 위해서 메뉴를 클릭하거나 제어판을 여는것 같은 300개의 유저 인터페이스에 집중적으로 최적화를 했다.(근본적인 최적화가 아니라는 말 같습니다)

끝..

댓글 없음:

댓글 쓰기