Διαφήμιση
Οι περισσότεροι υπολογιστές αποστέλλονται σήμερα με έκδοση 64 bit των Windows και συχνά ελάχιστη ποσότητα μνήμης RAM. Αυτό θέτει υπό αμφισβήτηση την απόδοση αυτών των συστημάτων. Αυτό ισχύει ιδιαίτερα όταν οι χρήστες θέλουν να εκτελούν το παλιό τους λογισμικό 32-bit σε αυτούς τους νέους υπολογιστές.
Αυτό εγείρει μια ενδιαφέρουσα ερώτηση. Εσυ χρειάζεστε περισσότερη ή λιγότερη μνήμη RAM Πόση μνήμη RAM χρειάζεστε πραγματικά;Η μνήμη RAM είναι σαν βραχυπρόθεσμη μνήμη. Όσο περισσότερο κάνετε πολλές εργασίες, τόσο περισσότερο χρειάζεστε. Μάθετε πόσα διαθέτει ο υπολογιστής σας, πώς να αξιοποιήσετε στο έπακρο τον εαυτό σας ή πώς να κερδίσετε περισσότερα. Διαβάστε περισσότερα για να εκτελέσετε μια εφαρμογή 32-bit σε ένα Έκδοση 64-bit των Windows Τι είναι το 64-bit Computing;Η συσκευασία ενός υπολογιστή ή υλικού υπολογιστή είναι γεμάτη με τεχνικούς όρους και σήματα. Ένα από τα πιο εξέχοντα είναι 64-bit. Διαβάστε περισσότερα ? Αυτή την εβδομάδα, ο Bruce Epper ανακαλύπτει.
Ένας αναγνώστης ρωτά:
Είναι αλήθεια ότι καταναλώνει εφαρμογές 32-bit σε ένα σύστημα Windows 64-bit 1,5 φορές περισσότερη μνήμη σε σύγκριση με την εκτέλεση της εφαρμογής 32-bit σε λειτουργικό σύστημα Windows 32-bit;
Απάντηση του Bruce:
Έχουμε συζητήσει στο παρελθόν τα οφέλη και τα μειονεκτήματα της διατήρησης όλων των 64-bit σε γενικές γραμμές και ορισμένων αποτελέσματα της «ανάμιξης και αντιστοίχισης» Πώς επηρεάζεται η απόδοση των Windows από το υλικό και το λογισμικόΘεωρητικά, το λογισμικό 32-bit θα μπορούσε να ξεπεράσει το αντίστοιχο 64-bit, ανάλογα με τη ρύθμιση του υλικού. Ακούγεται περίπλοκο; Είμαστε εδώ για να έχουμε νόημα και να σας βοηθήσουμε να αξιοποιήσετε καλύτερα το σύστημά σας. Διαβάστε περισσότερα . Σήμερα πρόκειται να εξετάσουμε πώς εκτελούνται οι εφαρμογές 32-bit σε εκδόσεις 64-bit των Windows.
Ένα λειτουργικό σύστημα Windows 64-bit δεν μπορεί να εκτελέσει ένα πρόγραμμα Windows 32-bit χωρίς κάποια πρόσθετη βοήθεια. Είναι πολύ διαφορετικά: από δείκτες και τύπους δεδομένων, έως τον τρόπο με τον οποίο οι κλήσεις συστήματος (πώς τα προγράμματα χρησιμοποιούν τους πόρους του υποκείμενου λειτουργικού συστήματος). Χρειάζεστε κάποιο τρόπο για να τα κάνετε συμβατά.
Κατανόηση του WoW64
Τα Windows χρησιμοποιούν το υποσύστημα WoW64 (Windows32 σε Windows64) για να αντισταθμίσουν τις διαφορές. Λειτουργεί αποτελεσματικά ως μίνι εξομοιωτής Windows 32-bit σε συστήματα x64 και πλήρης εξομοιωτής σε συστήματα Itanium (IA64).
Τα συστήματα IA64 απαιτούν πλήρη εξομοιωτή λόγω των διαφορών στις οδηγίες του επεξεργαστή και στα μεγέθη σελίδων μνήμης (4K σε x86 και x64, 8K σε IA64). Δεδομένου ότι οι επεξεργαστές x64 έχουν όλες τις οδηγίες των επεξεργαστών x86 και χρησιμοποιούν το ίδιο μέγεθος σελίδας μνήμης, δεν χρειάζεται να υπάρχει πλήρης εξομοιωτής.
Και στις δύο περιπτώσεις, το WoW64 παρέχει μια διεπαφή μεταξύ του πυρήνα 64-bit των Windows και της έκδοσης 32-bit του ntdll.dll (αυτό περιέχει μια λίστα με τον πυρήνα Λειτουργίες πυρήνα των Windows), αναχαίτιση των κλήσεων του πυρήνα και αλλαγή τους, ώστε να μπορούν να υποστούν επεξεργασία από τις εγγενείς λειτουργίες 64-bit που παρέχονται από τα Windows πυρήνας.
Υπάρχουν 3 αρχεία DLL που χρησιμοποιούνται σε συστήματα x64 / IA64 για να επιτευχθεί αυτό: wow64cpu.dll, wow64win.dll και wow64.dll. Οι λειτουργίες τους είναι να αφαιρέσουν τα χαρακτηριστικά του επεξεργαστή και να παρέχουν thunks (θα τα φτάσουμε αργότερα) στο win32k.sys που παρέχει τη λειτουργικότητα «παραθύρου» και το ntoskrnl.exe που περιέχει το εκτελεστικό, πυρήνα, διαχειριστή μνήμης, χρονοδιάγραμμα διεργασιών (δεν πρέπει να συγχέεται με τον προγραμματιστή εργασιών που είναι προσβάσιμος από τον Πίνακα Ελέγχου) και άλλα βασικά στοιχεία της λειτουργίας Σύστημα.

Το thunk είναι μια υπορουτίνα (σκεφτείτε αυτές ως μια σειρά οδηγιών που εκτελούν μία μόνο εργασία) που επιτρέπει σε ένα πρόγραμμα να εκτελεί μια κοινή υπορουτίνα ή λειτουργία στο σύστημα.
Σε αυτήν την περίπτωση, εξάγει τα επιχειρήματα από τη στοίβα κλήσεων του προγράμματος 32-bit, τα μετατρέπει σε αντίστοιχα 64-bit και πραγματοποιεί την κλήση του συστήματος 64-bit. Με την επιστροφή από την κλήση, θα μετατρέψει τα αποτελέσματα 64-bit σε 32-bit και θα τα ωθήσει πίσω στη στοίβα κλήσεων του προγράμματος για να καλέσει τον καλούντα.
Όλα τα thunking γίνονται σε λειτουργία χρήστη (η οποία έχει περιορισμένα δικαιώματα) για δύο λόγους. Πρώτον, ελαχιστοποιεί τα αποτελέσματα σφαλμάτων στον κώδικα που θα μπορούσαν να οδηγήσουν σε τρύπα ασφαλείας, καταστροφή δεδομένων ή σφάλμα συστήματος εάν εκτελούνται σε λειτουργία πυρήνα.
Δεύτερον, μειώνει τον αντίκτυπο στην απόδοση που θα είχε εάν εκτελείται σε λειτουργία πυρήνα (η λειτουργία που χρησιμοποιείται από τα βασικά μέρη του λειτουργικού συστήματος) λόγω της επιβάρυνσης κατά την εναλλαγή μεταξύ λειτουργία χρήστη και λειτουργία πυρήνα και πίσω.
Επιστρέφοντας στα συστήματα Itanium, υπάρχουν κάποιες άλλες σημαντικές διαφορές που πρέπει να σημειωθούν. Τα συστήματα IA64 χρησιμοποιούν δύο επιπλέον αρχεία. Το IA32exec.bin είναι ο εξομοιωτής λογισμικού x86 και το Wowia32x.dll παρέχει τη διεπαφή μεταξύ του WoW64 και του εξομοιωτή λογισμικού.
Μια διαδικασία 32-bit θα φορτώσει αυτά τα αρχεία καθώς και την έκδοση 64-bit του ntdll.dll. Αυτά είναι τα μόνα δυαδικά δυαδικά ψηφία που μπορούν να φορτωθούν σε μια διαδικασία 32-bit πριν από τα Windows 7. Τα Windows 7 και νεότερες εκδόσεις έχουν επίσης ένα άλλο DLL, apisetschema.dll, το οποίο θα φορτωθεί σε όλες τις διαδικασίες.

Όταν ξεκινήσει μια διαδικασία 32-bit, θα φορτώσει το Wow64.dll το οποίο με τη σειρά του φορτώνει την έκδοση 32-bit του ntdll.dll και τυχόν απαραίτητα DLL 32-bit από % systemroot% \ SysWOW64. Τα περισσότερα από αυτά τα αρχεία είναι πανομοιότυπα με τα δυαδικά αρχεία σε ένα σύστημα 32-bit, αν και μερικά έχουν ξαναγραφεί για να συμπεριφέρονται διαφορετικά στο WOW64.
Κοιτάζοντας τη λίστα των φορτωμένων DLL μπορούμε να δούμε ότι υπάρχουν 9 DLL φορτωμένα κατά τη διαδικασία στο Win64 που δεν υπάρχουν για το σύστημα Win32.
Τώρα, μπορεί να μπείτε στον πειρασμό να κοιτάξετε τα μεγέθη των αρχείων, να τα προσθέσετε και να το χρησιμοποιήσετε ως βάση για το πόση επιπλέον μνήμη χρησιμοποιείται, αλλά θα καταλήξατε σε ανακριβή αποτελέσματα. Αυτά τα αρχεία, από τη φύση τους, έχουν σχεδιαστεί για κοινή χρήση στοιχείων και ως εκ τούτου, το πρώτο αρχείο που απαιτεί DLL το φορτώνει στη μνήμη.
Τα επόμενα προγράμματα που απαιτούν το ίδιο DLL δεν φορτώνουν ολόκληρο το στοιχείο στη μνήμη. Παίρνουν ένα δείκτη στο ήδη φορτωμένο στοιχείο και εκχωρούν μνήμη RAM για τα επιπλέον στοιχεία που φορτώνονται στη διαδικασία.
Η ρύθμιση δοκιμών μας
Προκειμένου να δω τι συμβαίνει, έχω δημιουργήσει δύο εικονικές μηχανές που χρησιμοποιούν Windows 7 Ultimate με 2 GB μνήμης RAM που έχουν εκχωρηθεί σε καθένα. Ένα από αυτά είναι η έκδοση 32-bit και η άλλη είναι 64-bit. Και οι δύο πέρασαν από την ίδια ακριβώς διαδικασία εγκατάστασης και επιδιόρθωσης.
Μετά την επιδιόρθωση και των δύο συστημάτων, απενεργοποίησα το αρχείο ανταλλαγής και στα δύο για να λάβω μια καλύτερη εικόνα της χρήσης μνήμης, διασφαλίζοντας ότι η μνήμη RAM δεν θα μπορούσε να γίνει σελιδοποίηση στο δίσκο. Μόλις ολοκληρώθηκε, το LibreOffice 5.0.3.2 εγκαταστάθηκε.

Ενα αντίγραφο από Sysinternals Process Explorer Process Explorer - Η πιο ισχυρή αντικατάσταση Task Manager [Windows]Ας είμαστε ειλικρινείς, η Διαχείριση εργασιών των Windows δεν είναι τόσο καλή για την κατανόηση και τη διαχείριση των διαδικασιών που εκτελούνται στον υπολογιστή σας. Ακόμα και στα Windows 8, όπου είναι πολύ βελτιωμένο, ο διαχειριστής εργασιών δεν μπορεί να πλησιάσει το ... Διαβάστε περισσότερα τοποθετήθηκε επίσης και στα δύο μηχανήματα. Αυτό είναι το εργαλείο που χρησιμοποίησα για τη συλλογή πληροφοριών χρήσης μνήμης. Η προεπιλεγμένη ρύθμιση στήλης άλλαξε, ώστε να μπορώ να δω το Σετ εργασίας και την ιδιωτική χρήση WS.
Αυτοί οι αριθμοί σετ εργασίας αντικατοπτρίζουν την ποσότητα RAM που χρησιμοποιείται από τα προγράμματα. Περιπλέκτηκε λίγο περισσότερο, αντικατοπτρίζοντας το μέγεθος της μνήμης που χρησιμοποιούν οι κοινόχρηστες βιβλιοθήκες ακόμη και αν είχαν ήδη φορτωθεί από άλλη διαδικασία. Εξαιτίας αυτού, εάν προσθέσετε ολόκληρη τη στήλη, είναι δυνατόν να καταλήξετε με ένα σύνολο μεγαλύτερη από την εγκατεστημένη μνήμη RAM. Το σετ εργασίας εξακολουθεί να είναι ο καλύτερος δείκτης για το πόση μνήμη απαιτείται για μια διαδικασία.
Οι διαδικασίες που εξετάζουμε δεν στέκονται μόνες τους. Τα διάφορα προγράμματα LibreOffice ξεκινούν μια άλλη διαδικασία, το soffice.exe, η οποία θα εκτελέσει μια ακόμη διαδικασία, το soffice.bin. Πρέπει να εξετάσουμε τα σύνολα και των τριών διαδικασιών για να δούμε την αποτελεσματική χρήση μνήμης κάθε προγράμματος.
Για την αρχική δοκιμή, απλώς άνοιξα μεμονωμένα τους Writer, Calc και Impress για να δούμε πόση μνήμη καταναλώνουν χωρίς φόρτωση δεδομένων και εξαγωγή των δεδομένων από τον Process Explorer. Με το Calc and Impress, είχα ανοίξει ένα αρχείο .xls 3,7 MB και αρχείο .pptx 3,9 MB αντίστοιχα και κατέγραψα τη νέα χρήση μνήμης. Τα αποτελέσματα φαίνονται στον παρακάτω πίνακα. Όλα τα δεδομένα είναι σε KB.

Η μεγάλη έκπληξη έγινε με την Impress. Χωρίς έγγραφο χρησιμοποιούσε 4,1% περισσότερη μνήμη RAM στο σύστημα 64-bit και 9,9% πιο λιγο με το έγγραφο φορτωμένο. Έσκαψα μερικές άλλες παρουσιάσεις και είχα παρόμοια αποτελέσματα με όλες αυτές. Το σύστημα 64-bit κατέληξε να χρησιμοποιεί λιγότερη μνήμη RAM από το σύστημα 32-bit.
Λοιπόν, χρειάζονται οι εκδόσεις 64-bit των Windows περισσότερη μνήμη RAM από τους αντίστοιχους 32-bit όταν εκτελούν εφαρμογές 32-bit; Γενικά, ναι.
Αλλά πρέπει να αναβαθμίσετε τη μνήμη RAM; Πιθανώς όχι. Η διαφορά Πραγματικά δεν είναι τόσο τεράστιο. Σίγουρα δεν είναι 1,5 φορές διαφορετικό.
Ο Bruce παίζει με τα ηλεκτρονικά από τη δεκαετία του '70, τους υπολογιστές από τις αρχές της δεκαετίας του '80 και απαντά με ακρίβεια σε ερωτήσεις σχετικά με την τεχνολογία που δεν έχει χρησιμοποιήσει ούτε δει όλη την ώρα. Επίσης ενοχλεί τον εαυτό του προσπαθώντας να παίξει κιθάρα.