Microsoft เปิดเผยวิธีการทำงานของระบบย่อย windows 10 linux

วีดีโอ: à¸�ารจับà¸�ารเคลื่à¸à¸™à¹„หวผ่านหน้าà¸�ล้à¸à¸‡Mode Motion Detection www keepvid com 2024

วีดีโอ: à¸�ารจับà¸�ารเคลื่à¸à¸™à¹„หวผ่านหน้าà¸�ล้à¸à¸‡Mode Motion Detection www keepvid com 2024
Anonim

Bash บน Ubuntu บน Windows เปิดใช้งานไบนารี Linux ELF64 แบบเนทิฟเพื่อให้ทำงานบน Windows ผ่านระบบย่อย Windows สำหรับ Linux (WSL) ถึงแม้ว่าหลาย ๆ คนจะตกใจกับการประกาศของ Bash บน Ubuntu แต่ก็เป็นสิ่งที่ควรค่าแก่การกล่าวถึงว่าจะเปิดประตูใหม่สำหรับความเข้ากันได้ระหว่างระบบปฏิบัติการที่แตกต่างกัน Microsoft ก้าวไปอีกขั้นและเผยให้เห็นว่า WSL ทำงานอย่างไรเพื่อให้เราสามารถเข้าใจได้ดีขึ้นว่าระบบทั้งสองสื่อสารกันอย่างไร

WSL ถูกสร้างโดยทีมเคอร์เนล Microsoft Windows และมีทั้งโหมดผู้ใช้และส่วนประกอบโหมดเคอร์เนล โดยเฉพาะอย่างยิ่งระบบประกอบด้วย:

  • เซอร์วิสตัวจัดการเซสชันโหมดผู้ใช้ที่จัดการกับวงจรชีวิตอินสแตนซ์ Linux
  • ไดรเวอร์ของผู้ให้บริการ Pico (lxss.sys, lxcore.sys) ซึ่งมีบทบาทคือเลียนแบบเคอร์เนล Linux โดยการแปล Linux syscalls
  • กระบวนการ Pico โฮสต์ Linux โหมดผู้ใช้ที่ไม่ได้แก้ไข (เช่น / bin / bash)

การเชื่อมต่อระหว่างองค์ประกอบทั้งสามอธิบายไว้ดังต่อไปนี้:

มันเป็นช่องว่างระหว่างลินุกซ์โหมดผู้ใช้และส่วนประกอบเคอร์เนลของ Windows ที่เกิดเวทย์มนตร์ ด้วยการวางไบนารีลินุกซ์ที่ไม่ได้แก้ไขในกระบวนการ Pico เราเปิดใช้งานการโทรของระบบ Linux เพื่อนำไปยังเคอร์เนลของ Windows ไดรเวอร์ lxss.sys และ lxcore.sys แปลการเรียกระบบ Linux เป็น NT APIs และจำลองเคอร์เนล Linux

ความท้าทายหลักในกระบวนการนี้คือการทำให้ทั้งสองระบบทำงานร่วมกัน:

WSL ดำเนินการไบนารี Linux ELF64 ที่ไม่ได้แก้ไขโดยการจำลองเสมือนอินเตอร์เฟสเคอร์เนล Linux ที่ด้านบนของเคอร์เนล Windows NT หนึ่งในอินเตอร์เฟสของเคอร์เนลที่ถูกเปิดเผยคือการเรียกของระบบ (syscalls) syscall เป็นบริการที่ให้บริการโดยเคอร์เนลที่สามารถเรียกได้จากโหมดผู้ใช้ ทั้งเคอร์เนล Linux และเคอร์เนล Windows NT เปิดเผยหลายร้อย syscalls ไปยังโหมดผู้ใช้ แต่มีซีแมนทิกส์ต่างกันและโดยทั่วไปไม่เข้ากันโดยตรง ตัวอย่างเช่นเคอร์เนล Linux ประกอบด้วยสิ่งต่าง ๆ เช่น fork, open และ kill ในขณะที่เคอร์เนล Windows NT มี NtCreateProcess ที่เปรียบเทียบได้, NtOpenFile และ NtTerminateProcess

ระบบย่อย Windows สำหรับ Linux ประกอบด้วยไดรเวอร์โหมดเคอร์เนล (lxss.sys และ lxcore.sys) ที่รับผิดชอบการจัดการการร้องขอการเรียกระบบ Linux ในการประสานงานกับเคอร์เนล Windows NT ไดรเวอร์ไม่มีรหัสจากเคอร์เนล Linux แต่เป็นการใช้งานคลีนรูมของอินเตอร์เฟสเคอร์เนลที่เข้ากันได้กับ Linux แทน บน Linux ดั้งเดิมเมื่อ syscall ทำจากโหมดผู้ใช้ที่สามารถเรียกทำงานได้จะถูกจัดการโดยเคอร์เนล Linux บน WSL เมื่อ syscall ถูกสร้างขึ้นมาจากการปฏิบัติการเดียวกันเคอร์เนลของ Windows NT จะส่งต่อการร้องขอไปยัง lxcore.sys หากเป็นไปได้ lxcore.sys จะแปล Linux syscall ให้เทียบเท่ากับการเรียก Windows NT ซึ่งจะเป็นการยกที่หนัก

เมื่อพิจารณาถึงความสนใจของ Microsoft ในแพลตฟอร์มโอเพ่นซอร์สหลายคนสงสัยว่ายักษ์ใหญ่ด้านเทคโนโลยีควรซื้อ บริษัท ที่มุ่งเน้น Linux เป็นหลักเช่น Canonical บริษัท ที่อยู่เบื้องหลังระบบปฏิบัติการ Ubuntu แม้ว่า Microsoft และ Canonical จะร่วมมือกับซอฟต์แวร์โอเพ่นซอร์ส แต่ก็ไม่ได้แสดงความคิดเห็นใด ๆ เกี่ยวกับความเป็นไปได้นี้

หากคุณสนใจวิธีการโต้ตอบของ Linux - Windows ให้ไปที่บล็อกของ Microsoft ทีมสัญญาว่าจะมีการโพสต์บล็อกเพิ่มเติมในหัวข้อนี้

Microsoft เปิดเผยวิธีการทำงานของระบบย่อย windows 10 linux