Microsoft, Windows 10 Linux 하위 시스템 작동 방식 공개

비디오: Why You Can't Name A File CON In Windows 2024

비디오: Why You Can't Name A File CON In Windows 2024
Anonim

Windows의 Ubuntu의 Bash를 사용하면 Linux 용 Windows 서브 시스템 (WSL)을 통해 기본 Linux ELF64 바이너리를 Windows에서 실행할 수 있습니다. 많은 사람들이 Bash on Ubuntu 발표에 충격을 받았지만 다른 운영 체제 간의 호환성을위한 새로운 문을 열었습니다. Microsoft는 한 걸음 더 나아가 WSL의 작동 방식을 공개하여 두 시스템이 서로 통신하는 방식을 더 잘 이해할 수 있도록합니다.

WSL은 Microsoft Windows Kernel 팀에서 만들었으며 사용자 모드와 커널 모드 구성 요소를 모두 포함합니다. 보다 구체적으로 시스템은 다음과 같이 구성됩니다.

  • Linux 인스턴스 수명주기를 처리하는 사용자 모드 세션 관리자 서비스
  • Linux syscalls를 번역하여 Linux 커널을 에뮬레이트하는 역할을하는 Pico 공급자 드라이버 (lxss.sys, lxcore.sys)
  • Pico는 수정되지 않은 사용자 모드 Linux (예: / bin / bash)를 호스팅합니다.

세 구성 요소 간의 연결은 다음과 같이 설명됩니다.

사용자 모드 Linux 바이너리와 마법이 발생하는 Windows 커널 구성 요소 사이의 공간입니다. Pico 프로세스에 수정되지 않은 Linux 바이너리를 배치하면 Linux 시스템 호출을 Windows 커널로 보낼 수 있습니다. lxss.sys 및 lxcore.sys 드라이버는 Linux 시스템 호출을 NT API로 변환하고 Linux 커널을 에뮬레이트합니다.

이 과정에서 가장 큰 과제는 두 시스템이 함께 작동하도록하는 것입니다.

WSL은 Windows NT 커널 위에 Linux 커널 인터페이스를 가상화하여 수정되지 않은 Linux ELF64 바이너리를 실행합니다. 노출되는 커널 인터페이스 중 하나는 시스템 호출 (syscall)입니다. syscall은 사용자 모드에서 호출 할 수있는 커널에서 제공하는 서비스입니다. Linux 커널과 Windows NT 커널은 모두 수백 개의 시스템 콜을 사용자 모드에 노출하지만 의미가 다르며 일반적으로 직접 호환되지 않습니다. 예를 들어, Linux 커널에는 fork, open 및 kill과 같은 것이 포함되어 있고 Windows NT 커널에는 NtCreateProcess, NtOpenFile 및 NtTerminateProcess가 있습니다.

Linux 용 Windows 하위 시스템에는 Windows NT 커널과 함께 Linux 시스템 호출 요청을 처리하는 커널 모드 드라이버 (lxss.sys 및 lxcore.sys)가 포함되어 있습니다. 드라이버는 Linux 커널의 코드를 포함하지 않지만 Linux 호환 커널 인터페이스의 클린 룸 구현입니다. 기본 Linux에서 syscall이 사용자 모드 실행 파일로 작성되면 Linux 커널에 의해 처리됩니다. WSL에서 동일한 실행 파일로 syscall을 수행하면 Windows NT 커널은 lxcore.sys로 요청을 전달합니다. 가능하면 lxcore.sys는 Linux syscall을 동등한 Windows NT 호출로 변환합니다.

오픈 소스 플랫폼에 대한 Microsoft의 관심을 고려할 때 많은 사람들은 기술 대기업이 Ubuntu 운영 체제를 지원하는 Canonical과 같은 주요 Linux 중심 회사를 인수해야하는지 궁금해했습니다. Microsoft와 Canonical은 오픈 소스 소프트웨어에 대해 협력했지만이 가능성에 대한 의견은 발표하지 않았습니다.

Linux – Windows 상호 작용이 어떻게 발전하는지에 관심이 있다면 Microsoft 블로그로 이동하십시오. 팀은이 주제에 대한 더 많은 블로그 게시물이 뒤따를 것이라고 약속했습니다.

Microsoft, Windows 10 Linux 하위 시스템 작동 방식 공개