Πώς ήταν δυνατή η λειτουργία πολλαπλών εργασιών σε παλαιότερες εκδόσεις των Windows;
Θεωρώντας ότι το DOS ήταν ένα λειτουργικό σύστημα single-tasking και τους δεσμούς που είχε με τις πρώιμες εκδόσεις των Windows, πώς οι παλαιότερες εκδόσεις των Windows κατάφεραν να ολοκληρώσουν το multi-tasking; Η σημερινή θέση Q & A της SuperUser εξετάζει τις απαντήσεις σε αυτή την ερώτηση.
Η σημερινή συνάντηση ερωτήσεων και απαντήσεων έρχεται σε επαφή με το SuperUser - μια υποδιαίρεση του Stack Exchange, μια κοινότητα που κατευθύνεται από τους ιστότοπους ερωτήσεων & απαντήσεων.
Windows 95 screenshot ευγενική προσφορά της Wikipedia.
Το ερώτημα
Ο αναγνώστης SuperUser LeNoob θέλει να μάθει πώς οι παλαιότερες εκδόσεις των Windows ήταν σε θέση να λειτουργούν ως συστήματα πολλαπλών εργασιών ;:
Διάβασα ότι το DOS είναι ένα λειτουργικό σύστημα μεμονωμένων εργασιών. Αλλά αν οι παλαιότερες εκδόσεις των Windows (συμπεριλαμβανομένων και των Windows 95;) ήταν απλά περιτυλίγματα για το DOS, πώς θα μπορούσαν να λειτουργήσουν ως λειτουργικό σύστημα πολλαπλών λειτουργιών?
Καλή ερώτηση! Πώς οι παλαιότερες εκδόσεις των Windows κατάφεραν να λειτουργούν ως συστήματα πολλαπλών εργασιών?
Η απάντηση
Οι συνεργάτες SuperUser Bob και Pete έχουν την απάντηση για εμάς. Πρώτα επάνω, ο Μπομπ:
Τα Windows 95 ήταν πολύ περισσότερα από "απλά ένα περιτύλιγμα" για το MS-DOS. Αναφερόμενος στον Raymond Chen:
- Το MS-DOS εξυπηρετεί δύο σκοπούς στα Windows 95: 1.) Χρησιμεύει ως φορτωτής εκκίνησης. & 2.) Ενεργούσε ως επίπεδο οδηγού 16-bit πακέτου προγράμματος οδήγησης συσκευής.
Τα Windows 95 γείτονταν / υπερέβαιναν σχεδόν όλα τα MS-DOS, διατηρώντας το ως στρώμα συμβατότητας, ενώ ταυτόχρονα πραγματοποιούσαν όλες τις βαριές ανύψωσης. Επίσης, πραγματοποίησε προληπτική πολυπαραγγελία για προγράμματα 32 bit.
Προ-Windows 95
Τα Windows 3.x και παλαιότερα ήταν ως επί το πλείστον 16-bit (με εξαίρεση τα Win32s, ένα είδος στρώματος συμβατότητας που γεφυρώνει 16 και 32, αλλά θα το αγνοήσουμε εδώ), εξαρτιόταν περισσότερο από το DOS και χρησιμοποιούσε μόνο συνεταιριστικό multi-tasking - αυτό είναι εκείνο όπου δεν αναγκάζουν ένα τρέχον πρόγραμμα να σβήσει? περιμένουν το τρέχον πρόγραμμα να αποδώσει έλεγχο (βασικά, πείτε "έχω κάνει" λέγοντας στο λειτουργικό σύστημα να τρέξει το επόμενο πρόγραμμα που περιμένει).
- Η λειτουργία πολλαπλών εργασιών ήταν συνεταιριστική, όπως συμβαίνει και με τις παλιές εκδόσεις του MacOS (αν και σε αντίθεση με το DOS 4.x Multi-tasking, το οποίο προκάλεσε προληπτικό πολλαπλών εργασιών). Μια εργασία έπρεπε να αποδώσει στο λειτουργικό σύστημα, προκειμένου να προγραμματίσει ένα διαφορετικό έργο. Οι αποδόσεις ενσωματώθηκαν σε συγκεκριμένες κλήσεις API, κυρίως επεξεργασία μηνυμάτων. Όσο μια εργασία επεξεργάζεται τα μηνύματα έγκαιρα, όλα ήταν ωραία. Εάν μια εργασία σταμάτησε να επεξεργάζεται τα μηνύματα και ήταν απασχολημένη με την εκτέλεση ενός βρόχου επεξεργασίας, η πολλαπλή διαδικασία δεν ήταν πια.
Αρχιτεκτονική των Windows 3.x
Όσο για τα πρόωρα προγράμματα των Windows θα αποφέρει έλεγχο:
- Τα Windows 3.1 χρησιμοποιούν συνεργατικές πολλαπλές εργασίες - που σημαίνει ότι κάθε εφαρμογή που βρίσκεται σε διαδικασία εκκίνησης έχει εντολή να ελέγχει περιοδικά μια ουρά μηνυμάτων για να διαπιστώσει αν οποιαδήποτε άλλη εφαρμογή ζητά τη χρήση της CPU και αν ναι, εφαρμογή. Ωστόσο, πολλές εφαρμογές των Windows 3.1 θα ελέγχουν την ουρά μηνυμάτων μόνο σπάνια ή καθόλου και θα μονοπωλούν τον έλεγχο της CPU για όσο χρόνο χρειάζονται. Ένα προληπτικό σύστημα πολλαπλών εργασιών, όπως τα Windows 95, θα λάβει τον έλεγχο της CPU μακριά από μια τρέχουσα εφαρμογή και θα το διανείμει σε εκείνα που έχουν μεγαλύτερη προτεραιότητα βάσει των αναγκών του συστήματος.
Πηγή
Όλα τα DOS θα δουν είναι αυτή η ενιαία εφαρμογή (Windows ή άλλο) τρέχει, η οποία θα περάσει τον έλεγχο γύρω από χωρίς να βγαίνει. Θεωρητικά, η προληπτική πολλαπλή εκτέλεση μπορεί ενδεχομένως να εφαρμοστεί στην κορυφή του DOS ούτως ή άλλως με τη χρήση ενός ρολογιού σε πραγματικό χρόνο και το υλικό διακόπτει να βγάλει βίαια τον προγραμματιστή. Όπως σχολιάζει ο Tonny, αυτό έγινε στην πραγματικότητα από ορισμένα λειτουργικά συστήματα που λειτουργούν στην κορυφή του DOS.
386 Ενισχυμένη λειτουργία?
Σημείωση: έχουν υπάρξει σχόλια σχετικά με τη βελτιωμένη λειτουργία 386 των Windows 3.x που είναι 32-bit και την υποστήριξη προληπτικών πολλαπλών εργασιών.
Αυτή είναι μια ενδιαφέρουσα περίπτωση. Για να συνοψίσουμε τη σχετική αλληλογραφία blog, ο ενισχυμένος τρόπος 386 ήταν βασικά ένας hypervisor 32-bit, ο οποίος χρησιμοποιούσε εικονικές μηχανές. Μέσα σε μία από αυτές τις εικονικές μηχανές εκτελέστηκε πρότυπη λειτουργία των Windows 3.x, η οποία κάνει όλα τα παραπάνω.
Το MS-DOS θα τρέξει επίσης μέσα σε αυτές τις εικονικές μηχανές και προφανώς ήταν προκαταρκτικά πολλαπλές εργασίες - έτσι φαίνεται ότι ο επεξεργαστής 386 βελτιωμένου τρόπου θα μοιράζονται τις χρονικές στιγμές της CPU μεταξύ των εικονικών μηχανών (μία από τις οποίες έτρεξε κανονικά 3.x και άλλοι που διεξήγαγαν το MS-DOS) και κάθε VM θα κάνει το δικό του πράγμα - το 3.x θα συνεργαζόταν με πολλούς στόχους, ενώ το MS-DOS θα ήταν μεμονωμένο.
MS-DOS
Το ίδιο το DOS ήταν ενιαίο σε χαρτί, αλλά είχε υποστήριξη για προγράμματα TSR που θα παραμείνουν στο παρασκήνιο μέχρι να ενεργοποιηθούν από διακοπή υλικού. Μακριά από αληθινές πολλαπλές εργασίες, αλλά όχι και μεμονωμένες.
Όλη αυτή η συζήτηση για λίγο; Ρώτησα για την πολυ-εργασία!
Λοιπόν, αυστηρά μιλώντας, το bit-ness και το multi-tasking δεν εξαρτώνται ο ένας από τον άλλο. Θα πρέπει να είναι δυνατή η εφαρμογή οποιασδήποτε λειτουργίας πολλαπλών εργασιών σε οποιαδήποτε bit-ness. Ωστόσο, η μετάβαση από επεξεργαστές 16 bit σε επεξεργαστές 32-bit εισήγαγε επίσης και άλλες λειτουργίες υλικού που θα μπορούσαν να έχουν καταστήσει ευκολότερη την εφαρμογή της προληπτικής πολλαπλής λειτουργίας.
Επίσης, δεδομένου ότι τα προγράμματα 32-bit ήταν καινούργια, ήταν πιο εύκολο να τα βγάλουνε σε λειτουργία όταν αποσύρονται βίαια - τα οποία θα μπορούσαν να έχουν σπάσει κάποια παλαιότερα προγράμματα 16 bit.
Φυσικά, αυτό είναι όλο εικασίες. Αν πραγματικά θέλετε να μάθετε γιατί η MS δεν πραγματοποίησε προληπτικές πολλαπλές εργασίες στα Windows 3.x (παρά το βελτιωμένο τρόπο 386), θα πρέπει να ζητήσετε από κάποιον που εργάστηκε εκεί.
Επίσης, ήθελα να διορθώσω την παραδοχή σας ότι τα Windows 95 ήταν απλώς ένα περιτύλιγμα για το DOS.
Ακολουθούμενη από την απάντηση του Pete:
Σε ένα σύγχρονο λειτουργικό σύστημα, το λειτουργικό σύστημα ελέγχει όλους τους πόρους υλικού και οι εφαρμογές που εκτελούνται διατηρούνται σε sandboxes. Δεν επιτρέπεται σε μια εφαρμογή να έχει πρόσβαση στη μνήμη που το λειτουργικό σύστημα δεν έχει διαθέσει σε αυτή την εφαρμογή και δεν μπορεί να έχει απευθείας πρόσβαση σε συσκευές υλικού στον υπολογιστή. Εάν απαιτείται πρόσβαση υλικού, η εφαρμογή πρέπει να επικοινωνεί μέσω προγραμμάτων οδήγησης συσκευών.
Το λειτουργικό σύστημα μπορεί να επιβάλει αυτόν τον έλεγχο, επειδή αναγκάζει την CPU να εισέλθει σε προστατευμένη λειτουργία.
Το DOS, από την άλλη πλευρά, δεν μπαίνει ποτέ σε προστατευμένη λειτουργία, αλλά παραμένει σε πραγματικό τρόπο (*Δες παρακάτω). Σε πραγματικό τρόπο, οι εφαρμογές που εκτελούνται μπορούν να εκτελέσουν οτιδήποτε θέλει, δηλαδή πρόσβαση απευθείας στο υλικό. Αλλά μια εφαρμογή που εκτελείται σε πραγματική κατάσταση μπορεί επίσης να πει την CPU να εισέλθει στην προστατευμένη λειτουργία.
Και αυτό το τελευταίο μέρος επιτρέπει σε εφαρμογές όπως τα Windows 95 να ξεκινήσουν ένα περιβάλλον πολλαπλών νημάτων, παρόλο που βασικά ξεκίνησαν από το DOS.
Το DOS (λειτουργικό σύστημα δίσκων) ήταν, από όσο γνωρίζω, κάτι πολύ περισσότερο από ένα σύστημα διαχείρισης αρχείων. Παρείχε ένα σύστημα αρχείων, μηχανισμούς για την πλοήγηση στο σύστημα αρχείων, μερικά εργαλεία και τη δυνατότητα εκκίνησης εφαρμογών. Επίσης, επέτρεψε ορισμένες αιτήσεις να παραμείνουν κάτοικοι, δηλαδή προγράμματα οδήγησης ποντικιού και εξομοιωτές EMM. Αλλά δεν προσπάθησε να ελέγξει το υλικό στον υπολογιστή με τον τρόπο που κάνει ένα σύγχρονο λειτουργικό σύστημα.
*Όταν το DOS δημιουργήθηκε για πρώτη φορά στη δεκαετία του 1970, δεν υπήρχε προστατευμένη λειτουργία στη CPU. Μόλις ο επεξεργαστής 80286 στα μέσα της δεκαετίας του 1980 ο προστατευμένος τρόπος έγινε μέρος της CPU.
Φροντίστε να περιηγηθείτε στο αρχικό νήμα και να διαβάσετε τη ζωντανή συζήτηση για αυτό το θέμα χρησιμοποιώντας τον παρακάτω σύνδεσμο!
Έχετε κάτι να προσθέσετε στην εξήγηση; Απενεργοποιήστε τα σχόλια. Θέλετε να διαβάσετε περισσότερες απαντήσεις από άλλους τεχνολογικούς χρήστες Stack Exchange; Δείτε το πλήρες νήμα συζήτησης εδώ.