Microsoft mendedahkan bagaimana windows 10 linux subsistem berfungsi

Video: "Microsoft выпустил Windows 10 с ядром Linux" или как работает WSL2 в новой Insider сборке 2024

Video: "Microsoft выпустил Windows 10 с ядром Linux" или как работает WSL2 в новой Insider сборке 2024
Anonim

Bash di Ubuntu pada Windows membolehkan binary Linux ELF64 asli untuk dijalankan pada Windows melalui Subsystem Windows untuk Linux (WSL). Walaupun ramai orang terkejut dengan pengumuman Bash di Ubuntu, ia patut menyebut bahawa ia membuka pintu baru untuk keserasian antara sistem operasi yang berbeza. Microsoft mengambil satu lagi langkah ke hadapan dan mendedahkan bagaimana WSL berfungsi supaya kita dapat lebih memahami bagaimana kedua-dua sistem berkomunikasi antara satu sama lain.

WSL dicipta oleh pasukan Microsoft Windows Kernel dan mengandungi kedua-dua mod pengguna dan komponen mod kernel. Khususnya, sistem ini terdiri daripada:

  • satu perkhidmatan pengurus sesi mod pengguna yang mengendalikan kitaran hayat contoh Linux
  • Pemandu penyedia Pico (lxss.sys, lxcore.sys) yang berperanan untuk meniru kernel Linux dengan menterjemahkan syscalls Linux
  • Proses Pico menganjurkan mod pengguna yang tidak diubah suai Linux (misalnya / bin / bash).

Sambungan antara ketiga komponen tersebut adalah seperti berikut:

Ia adalah ruang antara mod binari Linux pengguna dan komponen kernel Windows di mana keajaiban berlaku. Dengan meletakkan binari Linux yang tidak dimodifikasi dalam proses Pico, kita membolehkan panggilan sistem Linux ditujukan ke kernel Windows. Pemandu lxss.sys dan lxcore.sys menerjemahkan panggilan sistem Linux ke API API dan meniru kernel Linux.

Cabaran utama dalam proses ini adalah untuk menjadikan kedua sistem ini berfungsi bersama:

WSL melaksanakan binary Linux ELF64 yang tidak diubah suai dengan memindah antara muka kernel Linux di atas kernel Windows NT. Salah satu antara muka kernel yang ia paparkan adalah panggilan sistem (syscalls). Syscall adalah perkhidmatan yang disediakan oleh kernel yang boleh dipanggil dari mod pengguna. Kedua-dua kernel Linux dan kernel Windows NT mendedahkan beberapa ratus syscalls kepada mod pengguna, tetapi mereka mempunyai semantik yang berbeza dan umumnya tidak serasi secara langsung. Sebagai contoh, kernel Linux termasuk hal-hal seperti garpu, terbuka, dan membunuh sementara kernel Windows NT mempunyai NtCreateProcess, NtOpenFile, dan NtTerminateProcess yang sebanding.

Subsystem Windows untuk Linux termasuk pemacu mod kernel (lxss.sys dan lxcore.sys) yang bertanggungjawab untuk menangani permintaan panggilan sistem Linux dalam penyelarasan dengan kernel Windows NT. Pemacu tidak mengandungi kod dari kernel Linux tetapi sebaliknya merupakan ruang bersih pelaksanaan antaramuka kernel Linux yang serasi. Pada Linux asli, ketika syscall dibuat dari mod pengguna yang dapat dieksekusi, ia ditangani oleh kernel Linux. Pada WSL, apabila syscall dibuat dari executable yang sama, kernel Windows NT meneruskan permintaan untuk lxcore.sys. Di mana mungkin, lxcore.sys menerjemahkan syscall Linux ke panggilan Windows NT bersamaan yang seterusnya mengangkat berat.

Diambil kira kepentingan Microsoft dalam platform sumber terbuka, ramai yang tertanya-tanya sama ada syarikat gergasi teknologi itu perlu memperolehi syarikat utama yang berfokus pada Linux seperti Canonical, syarikat di belakang sistem operasi Ubuntu. Walaupun Microsoft dan Canonical bekerjasama dalam perisian sumber terbuka, tidak ada sebarang komen mengenai kemungkinan ini.

Jika anda menarik bagaimana interaksi Linux - Windows berkembang, pergi ke Blog Microsoft. Pasukan itu menjanjikan lebih banyak catatan blog mengenai topik ini.

Microsoft mendedahkan bagaimana windows 10 linux subsistem berfungsi

Pilihan Editor