Η Microsoft αποκαλύπτει πώς λειτουργεί το υποσύστημα Windows 10 linux

Βίντεο: Water Cycle Song 2024

Βίντεο: Water Cycle Song 2024
Anonim

Το Bash στο Ubuntu στα Windows επιτρέπει στα δυαδικά αρχεία Linux ELF64 να τρέχουν σε Windows μέσω του Υποσυστήματος Windows για Linux (WSL). Αν και πολλοί άνθρωποι ήταν συγκλονισμένοι από την ανακοίνωση του Bash για το Ubuntu, αξίζει να σημειωθεί ότι ανοίγει νέες πόρτες για τη συμβατότητα μεταξύ διαφορετικών λειτουργικών συστημάτων. Η Microsoft κάνει ένα ακόμα βήμα προς τα εμπρός και αποκαλύπτει πώς λειτουργεί το WSL, ώστε να κατανοήσουμε καλύτερα πώς τα δύο συστήματα επικοινωνούν μεταξύ τους.

Το WSL δημιουργήθηκε από την ομάδα των Microsoft Windows Kernel και περιέχει τόσο λειτουργίες λειτουργίας χρήστη όσο και εξαρτήματα λειτουργίας πυρήνα. Συγκεκριμένα, το σύστημα αποτελείται από:

  • μια υπηρεσία διαχείρισης περιόδων λειτουργίας χρήστη που χειρίζεται τον κύκλο ζωής του περιστατικού του Linux
  • Οι οδηγοί παροχέα Pico (lxss.sys, lxcore.sys) των οποίων ο ρόλος είναι να εξομοιώνουν έναν πυρήνα του Linux μεταφράζοντας τα Linux syscalls
  • Οι διαδικασίες Pico φιλοξενούν τη μη τροποποιημένη λειτουργία χρήστη Linux (π.χ. / bin / bash).

Η σύνδεση μεταξύ των τριών εξαρτημάτων περιγράφεται ως εξής:

Είναι ο χώρος μεταξύ των δυαδικών δυαδικών συνόλων Linux και των στοιχείων του πυρήνα των Windows όπου συμβαίνει η μαγεία. Τοποθετώντας μη τροποποιημένα δυαδικά αρχεία Linux στις διαδικασίες Pico, ενεργοποιούμε τις κλήσεις συστήματος του Linux να κατευθύνονται στον πυρήνα των Windows. Οι οδηγοί lxss.sys και lxcore.sys μεταφράζουν τις κλήσεις συστήματος Linux σε NT API και μιμούνται τον πυρήνα του Linux.

Η κύρια πρόκληση στη διαδικασία είναι να συνεργαστούν τα δύο συστήματα:

Το WSL εκτελεί μη τροποποιημένα δυαδικά αρχεία Linux ELF64 με virtualization μιας διεπαφής πυρήνα 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 μεταφράζει το σύστημα syscall του Linux στην αντίστοιχη κλήση των Windows NT, η οποία με τη σειρά του κάνει βαριά ανύψωση.

Λαμβάνοντας υπόψη το ενδιαφέρον της Microsoft για πλατφόρμες ανοιχτού κώδικα, πολλοί άνθρωποι αναρωτήθηκαν αν ο τεχνολογικός γίγαντας θα πρέπει να αποκτήσει σημαντικές εταιρείες με επίκεντρο το Linux όπως η Canonical, η εταιρεία πίσω από το λειτουργικό σύστημα Ubuntu. Παρόλο που η Microsoft και η Canonical συνεργάστηκαν σε λογισμικό ανοιχτού κώδικα, δεν έκαναν καμία παρατήρηση σχετικά με αυτή τη δυνατότητα.

Εάν ενδιαφέρεστε για το πώς εξελίσσεται η αλληλεπίδραση Linux - Windows, πηγαίνετε στο Blog της Microsoft. Η ομάδα υποσχέθηκε ότι θα ακολουθήσουν περισσότερες δημοσιεύσεις ιστολογίου σε αυτό το θέμα.

Η Microsoft αποκαλύπτει πώς λειτουργεί το υποσύστημα Windows 10 linux