SlideShare a Scribd company logo
1 of 21
Download to read offline
MinWin에 대해서



   마이에트 엔터테인먼트
     서버 프로그래머
        최흥배

 Microsoft Visual C++ MVP
Windows 7과 Vista는 같다?

일반적으로 Windows 7은 Windows
Vista와 같은 커널을 사용한다!
사실 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의 Eric
Traut씨는 온라인 프리젠테이션에서 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에서는 Virtual
DLL 기능을 보다 강화해서 커널 자체는 64bit로 하고,
Virtual DLL로 레거시 32bit DLL을 지원하는 것도 고려.
-> OS의 32bit/64bit라는 구별 없이 32bit 환경을 완젂하게
지원하는 64bit OS가 된다

More Related Content

What's hot

03. 이것만은 알자. 컨테이너 기술 기초부터 최신 트렌드 까지
03. 이것만은 알자. 컨테이너 기술 기초부터 최신 트렌드 까지03. 이것만은 알자. 컨테이너 기술 기초부터 최신 트렌드 까지
03. 이것만은 알자. 컨테이너 기술 기초부터 최신 트렌드 까지Opennaru, inc.
 
Ko.xenapp xendesktop-75.cds-75-about-whats-new[1]
Ko.xenapp xendesktop-75.cds-75-about-whats-new[1]Ko.xenapp xendesktop-75.cds-75-about-whats-new[1]
Ko.xenapp xendesktop-75.cds-75-about-whats-new[1]정호 최
 
04.웹시스템 이해 하기
04.웹시스템 이해 하기04.웹시스템 이해 하기
04.웹시스템 이해 하기Opennaru, inc.
 
06. MSA 는 무엇이고 어떻게 다른가?
06.  MSA 는 무엇이고 어떻게 다른가?06.  MSA 는 무엇이고 어떻게 다른가?
06. MSA 는 무엇이고 어떻게 다른가?Opennaru, inc.
 
CI / CD ( 지속적인 통합 / 지속적인 전달 ) 발표 자료 다운로드
CI / CD ( 지속적인 통합 / 지속적인 전달 ) 발표 자료 다운로드CI / CD ( 지속적인 통합 / 지속적인 전달 ) 발표 자료 다운로드
CI / CD ( 지속적인 통합 / 지속적인 전달 ) 발표 자료 다운로드Opennaru, inc.
 
한국사이버테크 Ha dr 구축전략 160527
한국사이버테크 Ha dr 구축전략 160527한국사이버테크 Ha dr 구축전략 160527
한국사이버테크 Ha dr 구축전략 160527성호 윤
 
IBM WebSphere Application Server(WAS) Value chart
IBM WebSphere Application Server(WAS) Value chartIBM WebSphere Application Server(WAS) Value chart
IBM WebSphere Application Server(WAS) Value chartJungWoon Lee
 
MSA ( Microservices Architecture ) 발표 자료 다운로드
MSA ( Microservices Architecture ) 발표 자료 다운로드MSA ( Microservices Architecture ) 발표 자료 다운로드
MSA ( Microservices Architecture ) 발표 자료 다운로드Opennaru, inc.
 
클라우드와 마이크로 서비스를 위한 새로운 시대의 경량화 WAS - IBM WAS Liberty 서버
클라우드와 마이크로 서비스를 위한 새로운 시대의 경량화 WAS - IBM WAS Liberty 서버클라우드와 마이크로 서비스를 위한 새로운 시대의 경량화 WAS - IBM WAS Liberty 서버
클라우드와 마이크로 서비스를 위한 새로운 시대의 경량화 WAS - IBM WAS Liberty 서버JungWoon Lee
 
컨테이너 와 가상화 기술 비교 발표 자료
컨테이너 와 가상화 기술 비교 발표 자료컨테이너 와 가상화 기술 비교 발표 자료
컨테이너 와 가상화 기술 비교 발표 자료Opennaru, inc.
 
10.컨테이너 기술의 이해
10.컨테이너 기술의 이해10.컨테이너 기술의 이해
10.컨테이너 기술의 이해Opennaru, inc.
 
02.JBOSS EAP7(FOR CONTAINER/CLOUD)
02.JBOSS EAP7(FOR CONTAINER/CLOUD)02.JBOSS EAP7(FOR CONTAINER/CLOUD)
02.JBOSS EAP7(FOR CONTAINER/CLOUD)Opennaru, inc.
 
OpenStack으로 바로보는 상용 클라우드 플랫폼
OpenStack으로 바로보는 상용 클라우드 플랫폼OpenStack으로 바로보는 상용 클라우드 플랫폼
OpenStack으로 바로보는 상용 클라우드 플랫폼Tae Young Lee
 

What's hot (16)

03. 이것만은 알자. 컨테이너 기술 기초부터 최신 트렌드 까지
03. 이것만은 알자. 컨테이너 기술 기초부터 최신 트렌드 까지03. 이것만은 알자. 컨테이너 기술 기초부터 최신 트렌드 까지
03. 이것만은 알자. 컨테이너 기술 기초부터 최신 트렌드 까지
 
Ko.xenapp xendesktop-75.cds-75-about-whats-new[1]
Ko.xenapp xendesktop-75.cds-75-about-whats-new[1]Ko.xenapp xendesktop-75.cds-75-about-whats-new[1]
Ko.xenapp xendesktop-75.cds-75-about-whats-new[1]
 
04.웹시스템 이해 하기
04.웹시스템 이해 하기04.웹시스템 이해 하기
04.웹시스템 이해 하기
 
06. MSA 는 무엇이고 어떻게 다른가?
06.  MSA 는 무엇이고 어떻게 다른가?06.  MSA 는 무엇이고 어떻게 다른가?
06. MSA 는 무엇이고 어떻게 다른가?
 
CI / CD ( 지속적인 통합 / 지속적인 전달 ) 발표 자료 다운로드
CI / CD ( 지속적인 통합 / 지속적인 전달 ) 발표 자료 다운로드CI / CD ( 지속적인 통합 / 지속적인 전달 ) 발표 자료 다운로드
CI / CD ( 지속적인 통합 / 지속적인 전달 ) 발표 자료 다운로드
 
한국사이버테크 Ha dr 구축전략 160527
한국사이버테크 Ha dr 구축전략 160527한국사이버테크 Ha dr 구축전략 160527
한국사이버테크 Ha dr 구축전략 160527
 
IBM WebSphere Application Server(WAS) Value chart
IBM WebSphere Application Server(WAS) Value chartIBM WebSphere Application Server(WAS) Value chart
IBM WebSphere Application Server(WAS) Value chart
 
MSA ( Microservices Architecture ) 발표 자료 다운로드
MSA ( Microservices Architecture ) 발표 자료 다운로드MSA ( Microservices Architecture ) 발표 자료 다운로드
MSA ( Microservices Architecture ) 발표 자료 다운로드
 
OCP Switch Overview
OCP Switch OverviewOCP Switch Overview
OCP Switch Overview
 
OpenDaylight 소개
OpenDaylight 소개OpenDaylight 소개
OpenDaylight 소개
 
클라우드와 마이크로 서비스를 위한 새로운 시대의 경량화 WAS - IBM WAS Liberty 서버
클라우드와 마이크로 서비스를 위한 새로운 시대의 경량화 WAS - IBM WAS Liberty 서버클라우드와 마이크로 서비스를 위한 새로운 시대의 경량화 WAS - IBM WAS Liberty 서버
클라우드와 마이크로 서비스를 위한 새로운 시대의 경량화 WAS - IBM WAS Liberty 서버
 
컨테이너 와 가상화 기술 비교 발표 자료
컨테이너 와 가상화 기술 비교 발표 자료컨테이너 와 가상화 기술 비교 발표 자료
컨테이너 와 가상화 기술 비교 발표 자료
 
10.컨테이너 기술의 이해
10.컨테이너 기술의 이해10.컨테이너 기술의 이해
10.컨테이너 기술의 이해
 
Hyper-v
Hyper-vHyper-v
Hyper-v
 
02.JBOSS EAP7(FOR CONTAINER/CLOUD)
02.JBOSS EAP7(FOR CONTAINER/CLOUD)02.JBOSS EAP7(FOR CONTAINER/CLOUD)
02.JBOSS EAP7(FOR CONTAINER/CLOUD)
 
OpenStack으로 바로보는 상용 클라우드 플랫폼
OpenStack으로 바로보는 상용 클라우드 플랫폼OpenStack으로 바로보는 상용 클라우드 플랫폼
OpenStack으로 바로보는 상용 클라우드 플랫폼
 

Viewers also liked

Windows os 상에서 효율적인 덤프
Windows os 상에서 효율적인 덤프Windows os 상에서 효율적인 덤프
Windows os 상에서 효율적인 덤프OnGameServer
 
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows TerminalOnGameServer
 
C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기OnGameServer
 
SDC 3rd 최흥배님 - Boost.multi_index 사용하기
SDC 3rd 최흥배님 - Boost.multi_index 사용하기SDC 3rd 최흥배님 - Boost.multi_index 사용하기
SDC 3rd 최흥배님 - Boost.multi_index 사용하기OnGameServer
 
안준석님 - 안드로이드 프로세스들의 통신 메커니즘 : 바인더 이야기
안준석님 - 안드로이드 프로세스들의 통신 메커니즘 : 바인더 이야기안준석님 - 안드로이드 프로세스들의 통신 메커니즘 : 바인더 이야기
안준석님 - 안드로이드 프로세스들의 통신 메커니즘 : 바인더 이야기OnGameServer
 
Microsoft SharePoint를 활용한 개발환경 구축
Microsoft SharePoint를 활용한 개발환경 구축Microsoft SharePoint를 활용한 개발환경 구축
Microsoft SharePoint를 활용한 개발환경 구축OnGameServer
 
해외 취업 이야기
해외 취업 이야기해외 취업 이야기
해외 취업 이야기OnGameServer
 
Multi thread game server
Multi thread game serverMulti thread game server
Multi thread game serverOnGameServer
 
SDC 3rd 안중원님 - InGame CashShop 개발 하기
SDC 3rd 안중원님 - InGame CashShop 개발 하기SDC 3rd 안중원님 - InGame CashShop 개발 하기
SDC 3rd 안중원님 - InGame CashShop 개발 하기OnGameServer
 
IPv6 이론과 소켓 프로그래밍
IPv6 이론과 소켓 프로그래밍IPv6 이론과 소켓 프로그래밍
IPv6 이론과 소켓 프로그래밍OnGameServer
 
초보자를 위한 분산 캐시 이야기
초보자를 위한 분산 캐시 이야기초보자를 위한 분산 캐시 이야기
초보자를 위한 분산 캐시 이야기OnGameServer
 
이욱진님 - 메모리 관리자로부터 배우기
이욱진님 - 메모리 관리자로부터 배우기이욱진님 - 메모리 관리자로부터 배우기
이욱진님 - 메모리 관리자로부터 배우기OnGameServer
 
Mongo db 시작하기
Mongo db 시작하기Mongo db 시작하기
Mongo db 시작하기OnGameServer
 
임영기님 - 코드 리뷰 시스템 도입하기
임영기님 - 코드 리뷰 시스템 도입하기임영기님 - 코드 리뷰 시스템 도입하기
임영기님 - 코드 리뷰 시스템 도입하기OnGameServer
 
Boost 라이브리와 C++11
Boost 라이브리와 C++11Boost 라이브리와 C++11
Boost 라이브리와 C++11OnGameServer
 
我們都有來喔
我們都有來喔我們都有來喔
我們都有來喔Emma Chang
 

Viewers also liked (20)

Windows os 상에서 효율적인 덤프
Windows os 상에서 효율적인 덤프Windows os 상에서 효율적인 덤프
Windows os 상에서 효율적인 덤프
 
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
 
C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기
 
SDC 3rd 최흥배님 - Boost.multi_index 사용하기
SDC 3rd 최흥배님 - Boost.multi_index 사용하기SDC 3rd 최흥배님 - Boost.multi_index 사용하기
SDC 3rd 최흥배님 - Boost.multi_index 사용하기
 
안준석님 - 안드로이드 프로세스들의 통신 메커니즘 : 바인더 이야기
안준석님 - 안드로이드 프로세스들의 통신 메커니즘 : 바인더 이야기안준석님 - 안드로이드 프로세스들의 통신 메커니즘 : 바인더 이야기
안준석님 - 안드로이드 프로세스들의 통신 메커니즘 : 바인더 이야기
 
Microsoft SharePoint를 활용한 개발환경 구축
Microsoft SharePoint를 활용한 개발환경 구축Microsoft SharePoint를 활용한 개발환경 구축
Microsoft SharePoint를 활용한 개발환경 구축
 
해외 취업 이야기
해외 취업 이야기해외 취업 이야기
해외 취업 이야기
 
Multi thread game server
Multi thread game serverMulti thread game server
Multi thread game server
 
SDC 3rd 안중원님 - InGame CashShop 개발 하기
SDC 3rd 안중원님 - InGame CashShop 개발 하기SDC 3rd 안중원님 - InGame CashShop 개발 하기
SDC 3rd 안중원님 - InGame CashShop 개발 하기
 
IPv6 이론과 소켓 프로그래밍
IPv6 이론과 소켓 프로그래밍IPv6 이론과 소켓 프로그래밍
IPv6 이론과 소켓 프로그래밍
 
초보자를 위한 분산 캐시 이야기
초보자를 위한 분산 캐시 이야기초보자를 위한 분산 캐시 이야기
초보자를 위한 분산 캐시 이야기
 
이욱진님 - 메모리 관리자로부터 배우기
이욱진님 - 메모리 관리자로부터 배우기이욱진님 - 메모리 관리자로부터 배우기
이욱진님 - 메모리 관리자로부터 배우기
 
Mongo db 시작하기
Mongo db 시작하기Mongo db 시작하기
Mongo db 시작하기
 
임영기님 - 코드 리뷰 시스템 도입하기
임영기님 - 코드 리뷰 시스템 도입하기임영기님 - 코드 리뷰 시스템 도입하기
임영기님 - 코드 리뷰 시스템 도입하기
 
Boost 라이브리와 C++11
Boost 라이브리와 C++11Boost 라이브리와 C++11
Boost 라이브리와 C++11
 
3亭賢結婚
3亭賢結婚3亭賢結婚
3亭賢結婚
 
Colormeone
ColormeoneColormeone
Colormeone
 
我們都有來喔
我們都有來喔我們都有來喔
我們都有來喔
 
090719高美
090719高美090719高美
090719高美
 
Saruulbuyn
SaruulbuynSaruulbuyn
Saruulbuyn
 

Similar to MinWin에 대해서

[KCD2020] Win32 API로 다루는 Windows Subsystem for Linux
[KCD2020] Win32 API로 다루는 Windows Subsystem for Linux[KCD2020] Win32 API로 다루는 Windows Subsystem for Linux
[KCD2020] Win32 API로 다루는 Windows Subsystem for LinuxJung Hyun Nam
 
IBM multi vendor service(MVS)_202102
IBM multi vendor service(MVS)_202102IBM multi vendor service(MVS)_202102
IBM multi vendor service(MVS)_202102jiyoungkim158
 
What is Game Server ?
What is Game Server ?What is Game Server ?
What is Game Server ?흥배 최
 
BRK3713 - Microsoft Azure에서 Windows와 Linux를 동시에 사용하는 하이브리드 Kubernetes 클러스터 구축
BRK3713 - Microsoft Azure에서 Windows와 Linux를 동시에 사용하는 하이브리드 Kubernetes 클러스터 구축BRK3713 - Microsoft Azure에서 Windows와 Linux를 동시에 사용하는 하이브리드 Kubernetes 클러스터 구축
BRK3713 - Microsoft Azure에서 Windows와 Linux를 동시에 사용하는 하이브리드 Kubernetes 클러스터 구축Jung Hyun Nam
 
[OpenStack Days Korea 2016] Track3 - VDI on OpenStack with LeoStream Connecti...
[OpenStack Days Korea 2016] Track3 - VDI on OpenStack with LeoStream Connecti...[OpenStack Days Korea 2016] Track3 - VDI on OpenStack with LeoStream Connecti...
[OpenStack Days Korea 2016] Track3 - VDI on OpenStack with LeoStream Connecti...OpenStack Korea Community
 
Vingle tech talk #1
Vingle tech talk #1Vingle tech talk #1
Vingle tech talk #1Tylor Shin
 
[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트Chanwoong Kim
 
OpenStack
OpenStackOpenStack
OpenStackULUG
 
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetesNAVER D2
 
[OpenInfra Days Korea 2018] (Track 3) Software Defined Infrastructure 전략 및 사례
[OpenInfra Days Korea 2018] (Track 3) Software Defined Infrastructure 전략 및 사례[OpenInfra Days Korea 2018] (Track 3) Software Defined Infrastructure 전략 및 사례
[OpenInfra Days Korea 2018] (Track 3) Software Defined Infrastructure 전략 및 사례OpenStack Korea Community
 
Kubernetes에서 Windows Application 호스팅하기
Kubernetes에서 Windows Application 호스팅하기Kubernetes에서 Windows Application 호스팅하기
Kubernetes에서 Windows Application 호스팅하기정현 남
 
Journey to Windows Kubernetes
Journey to Windows KubernetesJourney to Windows Kubernetes
Journey to Windows KubernetesJung Hyun Nam
 
RAD Studio 10.2 도쿄
RAD Studio 10.2 도쿄RAD Studio 10.2 도쿄
RAD Studio 10.2 도쿄Devgear
 
Open infradays 2019_msa_k8s
Open infradays 2019_msa_k8sOpen infradays 2019_msa_k8s
Open infradays 2019_msa_k8sHyoungjun Kim
 
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁Yi-kwon Hwang
 
개발자 지향 WAS : IBM WebSphere Liberty Server
개발자 지향 WAS : IBM WebSphere Liberty Server개발자 지향 WAS : IBM WebSphere Liberty Server
개발자 지향 WAS : IBM WebSphere Liberty ServerJungWoon Lee
 
최민호 - 국내 포털에서의 우분투 (2012Y03M31D)
최민호 - 국내 포털에서의 우분투 (2012Y03M31D)최민호 - 국내 포털에서의 우분투 (2012Y03M31D)
최민호 - 국내 포털에서의 우분투 (2012Y03M31D)Ubuntu Korea Community
 
Windows Kubernetes Deep Dive
Windows Kubernetes Deep DiveWindows Kubernetes Deep Dive
Windows Kubernetes Deep DiveJung Hyun Nam
 
[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함
[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함
[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함Ji-Woong Choi
 

Similar to MinWin에 대해서 (20)

[KCD2020] Win32 API로 다루는 Windows Subsystem for Linux
[KCD2020] Win32 API로 다루는 Windows Subsystem for Linux[KCD2020] Win32 API로 다루는 Windows Subsystem for Linux
[KCD2020] Win32 API로 다루는 Windows Subsystem for Linux
 
IBM multi vendor service(MVS)_202102
IBM multi vendor service(MVS)_202102IBM multi vendor service(MVS)_202102
IBM multi vendor service(MVS)_202102
 
What is Game Server ?
What is Game Server ?What is Game Server ?
What is Game Server ?
 
BRK3713 - Microsoft Azure에서 Windows와 Linux를 동시에 사용하는 하이브리드 Kubernetes 클러스터 구축
BRK3713 - Microsoft Azure에서 Windows와 Linux를 동시에 사용하는 하이브리드 Kubernetes 클러스터 구축BRK3713 - Microsoft Azure에서 Windows와 Linux를 동시에 사용하는 하이브리드 Kubernetes 클러스터 구축
BRK3713 - Microsoft Azure에서 Windows와 Linux를 동시에 사용하는 하이브리드 Kubernetes 클러스터 구축
 
[OpenStack Days Korea 2016] Track3 - VDI on OpenStack with LeoStream Connecti...
[OpenStack Days Korea 2016] Track3 - VDI on OpenStack with LeoStream Connecti...[OpenStack Days Korea 2016] Track3 - VDI on OpenStack with LeoStream Connecti...
[OpenStack Days Korea 2016] Track3 - VDI on OpenStack with LeoStream Connecti...
 
Vingle tech talk #1
Vingle tech talk #1Vingle tech talk #1
Vingle tech talk #1
 
[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트
 
OpenStack
OpenStackOpenStack
OpenStack
 
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
 
[OpenInfra Days Korea 2018] (Track 3) Software Defined Infrastructure 전략 및 사례
[OpenInfra Days Korea 2018] (Track 3) Software Defined Infrastructure 전략 및 사례[OpenInfra Days Korea 2018] (Track 3) Software Defined Infrastructure 전략 및 사례
[OpenInfra Days Korea 2018] (Track 3) Software Defined Infrastructure 전략 및 사례
 
Kubernetes에서 Windows Application 호스팅하기
Kubernetes에서 Windows Application 호스팅하기Kubernetes에서 Windows Application 호스팅하기
Kubernetes에서 Windows Application 호스팅하기
 
oVirt introduction
oVirt introduction oVirt introduction
oVirt introduction
 
Journey to Windows Kubernetes
Journey to Windows KubernetesJourney to Windows Kubernetes
Journey to Windows Kubernetes
 
RAD Studio 10.2 도쿄
RAD Studio 10.2 도쿄RAD Studio 10.2 도쿄
RAD Studio 10.2 도쿄
 
Open infradays 2019_msa_k8s
Open infradays 2019_msa_k8sOpen infradays 2019_msa_k8s
Open infradays 2019_msa_k8s
 
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
 
개발자 지향 WAS : IBM WebSphere Liberty Server
개발자 지향 WAS : IBM WebSphere Liberty Server개발자 지향 WAS : IBM WebSphere Liberty Server
개발자 지향 WAS : IBM WebSphere Liberty Server
 
최민호 - 국내 포털에서의 우분투 (2012Y03M31D)
최민호 - 국내 포털에서의 우분투 (2012Y03M31D)최민호 - 국내 포털에서의 우분투 (2012Y03M31D)
최민호 - 국내 포털에서의 우분투 (2012Y03M31D)
 
Windows Kubernetes Deep Dive
Windows Kubernetes Deep DiveWindows Kubernetes Deep Dive
Windows Kubernetes Deep Dive
 
[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함
[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함
[오픈소스컨설팅]Subversion vs git - 참을 수 없는 간단함
 

Recently uploaded

Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 

Recently uploaded (6)

Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 

MinWin에 대해서

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