MinWin에 대해서
Upcoming SlideShare
Loading in...5
×
 

MinWin에 대해서

on

  • 1,656 views

 

Statistics

Views

Total Views
1,656
Views on SlideShare
1,656
Embed Views
0

Actions

Likes
2
Downloads
4
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

MinWin에 대해서 MinWin에 대해서 Presentation Transcript

  • MinWin에 대해서 마이에트 엔터테인먼트 서버 프로그래머 최흥배 Microsoft Visual C++ MVP
  • Windows 7과 Vista는 같다?일반적으로 Windows 7은 WindowsVista와 같은 커널을 사용한다!
  • 사실 Windows 7에서 커널에 변화가 있었다 .그렇다고 완젂히 바뀐 것은 아니고 Vista의 커널을 베이스로 해서 튠업그렇기 때문에 Windows 7의 커널 API 등은 Vista와 같다
  • Windows 7과 Server 2008 R2는 같은 커널• Vista와 Server 2008와 같은 소스 트리에서 빌드• Release 후는 GDR 및 LDR 2개의 소스 트리를 사용 General Distribution Release = Windows Update Limited Distribution Release = Hotfix• 서비스 팩에서 브랜치를 리셋
  • 64bit만 Release
  • Windows 7의 버전은 왜 6.1?• 애플리케이션 호환성을 위해• Release 타이밍에서는 많은 애플리케이션은 Vista의 메이저 버젂 6을 인식 하고 있다고 예상• 버젂 이름은 변경 량을 반영하는 것이 아니다
  • Windows 7 커널 개발 미션• 성능 향상과 필요 메모리 용량을 줄이는 것• Vista 커널을 한번 정리해서 최소한의 기능을 정리
  • MinWin ?MinWin은 2003년 3월 MS가 Longhorn을 컴포넌트화하고 있을 때부터 개발.- MinWin은 Longhorn의 ‘기초가 되는 OS’ 부분의 컴포넌트라고 소개.처음 계획은 MinWin은 Vista에서 사용할 예정2007년까지는 MinWin을 Server Core 버젂이라고 생각 했음2007년 10월 MS의 Distinguished Enginner의 EricTraut씨는 온라인 프리젠테이션에서 Windows 7용으로 MinWin을 개발하고 있는 상황을 설명.
  • MinWin• 꼭 필요한 최소한의 바이너리로 구성• 컴포넌트화 하는 최초의 Step• 기본이 되는 Windows 환경에 Boot 가능• OS의 기본 동작이랑 API 호출 등을 갂략화• 상위 레이어는 각각 개별로 개발 가능
  • MinWin• Windows 환경으로 Boot하는 네트워크 서비스만을제공• David Culter의 NT : 커널, 파일 시스템 드라이버,TCP/IP 스택, 디바이스 드라이버, 코어 시스템 서비스• WMI, 그래픽, 오디오, Shell 등은 포함하지 않는다.
  • MinWin Layering Shell, Graphics, Multimedia, Layered Services, Applets, Etc. Kernel, HAL,MinWin TCP/IP, File Systems, Drivers, Core System Services
  • MinWin - Footprnt(리소스 사용량)• 파일 수 : 150• 디스크 사용량 : 30MB• 메모리 사용량 : 40MB
  • DLL 리팩토링• MinWin을 개발할 때 역점을 둔 것은 Vista에서 제공하고 있는 시스템 DLL을 정비하는 것• Vista가 가진 레거시 DLL을 그대로 Windows 7으로 가져가면 Vista와 같이 성능면에서 단점이 생김- MinWin을 개발할 때 ‘DLL 리팩토링’ 이라는 작업이 함
  • DLL 리팩토링 해야 할 것•구현 내용은 변경하지 않고 DLL 구성이랑 구조를 변경하여 레거시한 환경을 MinWin에는 가져가지 않도록 하는것• MinWin에서는 Windows가 가진 수 많은 API도 정리- 예를 들면 32bit와 64bit에서 중복되는 기능을 정리하고, 복수의 기능을 하나의 DLL로 모으는 것• 그래서 MinWin에서 동작하고 있는 커널은 Vista의 커널과는 완젂히 다르게 되었다
  • 커널이 바꼈다면 기존 애플리케이션은?• 커널이 바뀌어서 Vista용 애플리케이션은 MinWin을 베이스로 한 Windows 7에서는 동작하지 못함• 그래서 레거시 DLL을 새로운 MinWin API에 매핑하는‘Virtual DLL’이라는 기능이 준비됨• 기존의 애플리케이션은 레거시 DLL을 로드 레거시 DLL이 MinWin API에 포워드 콜 예 : Kernel32.dll -> Kernelbase.dll Advapi32.dll -> Kernelbase.dll
  • API Set• 문제점 DLL이 복수의 API Set을 포함 DLL의 구현과 API Set 갂에 의존 관계가 존재• API Set은 Virtual DLL로 대응 API 구현과 API의 내부적 아키텍처 분리• MinWin API Set이 최초의 Virtual DLL 예 : Microsoft-Windows-System-Heap-L1-1-0.dll L[System Layer]-[API Major Ver]-[API Minor Ver]
  • Virtual DLL에서 레거시 DLL에 매핑• 매핑 스키마는 Apisetschema.dll에 구현• Kernel은 boot 시에 스키마를 각 프로세스 매핑• 로더는 스키마를 참조할 DLL 로드 시에 매핑• Virtual DLL은 애플리케이션 호환을 위해서 존재 예 : Dependency Walker Virtual DLL 1 ApiSetSchema.dll Logical DLL Virtual DLL 2
  • • Window 7에서는 커널을 젂면적으로 바꾸었지만 Vista와같은 동작이 보증• 또 Windows의 차기 버젂인 Windows 8에서는 VirtualDLL 기능을 보다 강화해서 커널 자체는 64bit로 하고,Virtual DLL로 레거시 32bit DLL을 지원하는 것도 고려.-> OS의 32bit/64bit라는 구별 없이 32bit 환경을 완젂하게지원하는 64bit OS가 된다