WSL1과 WSL2는 구조적으로 차이가 많다.

 

WSL 활성화 구조

  • WSL이 활성화되면 윈도우 부팅시 Lxss.sys(스텁 드라이버) 로딩, 이후  WSL 드라이버인 LxCore.sys 로딩됨
  • 리눅스 앱은 피코 프로세스(pico process)에서 실행되는데, 피코 프로세스는 윈도우 사용자 공간에 생성되는 경량  가상 공간. LxCode.sys가 피코 프로바이더 동작하면서 리눅스인 척 시뮬레이션을 수행. WSL1에서는 시스템 호출을 번역하는 역할을 수행.
  • LxssManager: LxCore.sys 를 서비스하는 윈도우 서비스. 

 

WSL1

  • 리눅스 바이너리 번역 계층을 통해 윈도우에서 리눅스 환경 제공
  • 리눅스 앱이 호출하는 리눅스 커널 시스템 호출을 항상 LxCore.sys가 NT 시스템 호출로 변환. NT시스템 호출로 매핑할 수 없으면 리눅스 시스템 호출을 NT의 유사 시스템 호출로 바꿔 호출해야 하는데, LxCore가 이 변환 호출 작업을 수행.  유사 시스템 호출조차 불가능할 경우  LxCore가 처리해 주어야야 함. 결국 모든 시스템 호출을 처리해 줄 수 없다보니 WSL1에서는 리눅스 앱 실행이 90% 호환율을 보임.

WSL2

  • 윈도우 호스트 컴퓨터 서비스(하이퍼V 기반 API)를 사용.
  • HyperV에 기반한 경량 가상화 플랫폼을 사용하여 리눅스 환경 제공
  • 리눅스 커널과 경량 하이퍼V 컨테이너를 이용하여 시스템 호출 비호환을 근본적으로 제거함. 하이퍼V는 네이티브 가상화 기술인데, 1형과 2형이 있음. 1형은 NT 커널레벨에서 실행되며, 2형은 커널 레벨 드라이버를 적재하지만 대부분 사용자 공간을 구현. 2형에 속하는 솔루션이 3사 하이퍼바이저(버추얼박스, VMWare 등)이다. 그래서 VirtualBox와 WSL2를 한 머신에서 실행할 수 없다.
  • 도커나 microk8s등을 사용한다면 WSL2를 선택하는게 조금 더 복잡한 설정 작업이 있더라도 낫다.
  • 윈도 10 2019 5월 업데이트 이후(1903)부터 사용 가능.

WSL 2 아키텍쳐

 

  • 예를 들어 파일 열기나 네트워크 포트 열기 작업을 수행하면  WSL1에서는 NT커널에서 직접 처리된 반면, WSL2에서는 가상 HyperV 기기와 동작하는 리눅스 커널에서 처리. WSL2는 가상 기기(디스크 이미지)에 쓰는 작업을 바로 수행하므로 직접 IDE나 SATA등을 흉내내주기 위한 오버헤드를 줄일 수 있다.
  • 성능 최적화를 위해 MS가 직접 하이퍼V 기반의 리눅스 커널을 관리하고 있다.(https://github.com/microsoft/WSL2-Linux-Kernel. )

 

 

  • 2020년 이후 GPU 관련 개선 작업이 진행되어 DirectX, Direct3D, DirectML 작업이 가속화되고, OpenGL, OpenCl,불칸을 지원한다.
  • GPU 병렬처리를 이용하려면 새로운 커널 드라이버인 /dev/dxgkrnl을 사용하면 WDDM(윈도우 디스플레이 드라이버 모델)을 통해 NT커널에서 제공하는 GPU 기능을 이용할 수 있다.  패스-쓰루 드라이버인 셈. 현재는 GPU연산과 오프스크린 렌더링만 지원되고 있음. 

 

  • D3D도 WDDM 확장 버전으로 제공. GUI 지원은 추후.
  • DirectML은 저수준 기계학습 API인데, NVidia GPU가 필요한 CUDA와 달리, DirectML은 인텔과 AMD GPU에서 동작한다. 텐서플로를 돌릴때 유용. MS가 적극 협조하고 있다. CUDA는 nVidia와 협력중이다.
  • 빌드 2020부터 WSL내에서 GUI 공식 지원. 
  • GUI를 WSL에서 동작하는 것은 관심이 없으므로 우선 패스.
반응형

예전부터 내가 좋아하는 2D 퍼즐 게임 또는 아케이드 게임을 만들어봐야지 하는 생각을 가지고 있었다. 그래서 지난번 한빛에서 나온 '레트로의 유니티 에센셜' 책도 읽었고, 영진 닷컴에서 나온 유니티 2D 게임 제작 책도 읽었다.

아이에게 만들어 주고 싶은 게임과 비슷한 모습

이 책을 골랐던 이유는 딱 2D 게임 제작이라는  주제로 유니티 프로그래밍의 범위를 한정시켰기 때문이기도 하고, 원저가 일본 서적이라 일본서적 특유의 간략한 요약정리를 기대했기 때문이었다. 책 내용 전체는 나쁘진 않으나, 만약 유니티를 처음 접한다면 전체적인 게임 제작 순서가 머리속에 정리되지는 않겠다.

유니티 에센셜을 먼저 읽어서 그런지 이 책은 그냥 자리에 앉아서 쑥쑥 읽었다. 다르게 말하면 정말 유니티에 처음이라면 유니티에센셜을 읽는 것이 도움이 될 것 같고, 어떻게든 유니티 툴의 기본 개념은 아는데 2D 게임을 만들어 보고 싶다라고 하면 이 책도 괜찮을 것 같다. 하지만 아쉽게도 나는 유니티 에센셜에 한표를 더 준다. 역설적으로 레트로 책이 워낙 잘 설계된 유니티 책이었다는 느낌을 준 책.

 

평점: 3점/난이도:초급/유니티는 알아야 유니티2D게임 만들 수 있음.

 

YES24 구매 좌표: http://www.yes24.com/Product/Goods/97316714

 

유니티를 몰라도 만들 수 있는 유니티 2D 게임 제작 - YES24

「언제, 무엇을 할 것인가? 」만 알면 유니티를 몰라도 2D 게임을 만들 수 있다!게임용 프로그래밍 언어를 잘 알지 못해도, 완벽하게 코드를 이해하지 못해도 「언제, 무엇을 할 것인가? 」만 알

www.yes24.com

 

반응형

+ Recent posts