1. Ένα πρόγραμμα γραμμένο σε γλώσσα υψηλού επιπέδου (όπως C ++, Java, Python) πρέπει να μεταφραστεί σε οδηγίες που να κατανοούν μηχανικά. Αυτό συμβαίνει με δύο κύριους τρόπους:
* Συλλογή: Ο μεταγλωττιστής μεταφράζει ολόκληρο το πρόγραμμα σε ένα πλήρες εκτελέσιμο αρχείο (π.χ. ένα αρχείο `.exe` σε Windows ή ένα δυαδικό αρχείο στο Linux/MacOS). Αυτό το εκτελέσιμο περιέχει κώδικα μηχανής ειδικά για την αρχιτεκτονική του υπολογιστή -στόχου.
* Ερμηνεία: Ένας διερμηνέας μεταφράζει και εκτελεί τη γραμμή του προγράμματος ανά γραμμή, χωρίς να δημιουργεί ξεχωριστό εκτελέσιμο. Αυτό είναι πιο αργό από τη συλλογή, αλλά προσφέρει περισσότερη ανεξαρτησία πλατφόρμας. Οι γλώσσες όπως η Python και η JavaScript συνήθως ερμηνεύονται (αν και η συλλογή Just-in-time [JIT] χρησιμοποιείται συχνά για τη βελτίωση της απόδοσης).
2. Φόρτωση: Ο φορτωτής του λειτουργικού συστήματος είναι υπεύθυνος για τη φόρτωση του εκτελέσιμου του προγράμματος στη μνήμη. Αυτό περιλαμβάνει:
* Εύρεση του εκτελέσιμου: Ο φορτωτής εντοπίζει το αρχείο προγράμματος στη συσκευή αποθήκευσης (σκληρός δίσκος, SSD κ.λπ.).
* Μνήμη κατανομής: Διατηρεί χώρο στη μνήμη RAM του υπολογιστή για τον κωδικό, τα δεδομένα και τη στοίβα του προγράμματος. Η στοίβα χρησιμοποιείται για προσωρινά δεδομένα και κλήσεις λειτουργίας. Το σωρό χρησιμοποιείται για δυναμική μνήμη.
* μετεγκατάσταση: Ο φορτωτής ρυθμίζει τις διευθύνσεις μνήμης μέσα στο πρόγραμμα ώστε να αντικατοπτρίζει την πραγματική του θέση στη μνήμη RAM.
* Σύνδεση: Εάν το πρόγραμμα χρησιμοποιεί εξωτερικές βιβλιοθήκες ή ενότητες, ο φορτωτής τις συνδέει με το πρόγραμμα.
3. Δημιουργία του μπλοκ ελέγχου διεργασίας (PCB): Το λειτουργικό σύστημα δημιουργεί ένα PCB, μια δομή δεδομένων που συγκρατεί όλες τις πληροφορίες που απαιτούνται για τη διαχείριση της διαδικασίας. Αυτές οι πληροφορίες περιλαμβάνουν:
* ID διεργασίας (PID): Ένα μοναδικό αναγνωριστικό για τη διαδικασία.
* Counter Program: Επισημαίνει την επόμενη εντολή που θα εκτελεστεί.
* καταχωρητές CPU: Αποθηκεύστε προσωρινά δεδομένα που χρησιμοποιούνται από την CPU.
* Πληροφορίες διαχείρισης μνήμης: Λεπτομέρειες σχετικά με τη μνήμη που διατίθεται στη διαδικασία.
* Κατάσταση I/O: Πληροφορίες σχετικά με τις λειτουργίες I/O της διαδικασίας.
* κατάσταση: Υποδεικνύει εάν η διαδικασία τρέχει, έτοιμη, μπλοκαρισμένη, κλπ.
4. Εκτέλεση: Μόλις φορτωθεί το πρόγραμμα και δημιουργείται το PCB, ο προγραμματιστής του λειτουργικού συστήματος αποδίδει τη διαδικασία σε πυρήνα CPU. Στη συνέχεια, η CPU λαμβάνει οδηγίες από τον κώδικα του προγράμματος στη μνήμη, τις εκτελεί και ενημερώνει ανάλογα το PCB. Η διαδικασία συνεχίζει να εκτελεί μέχρι να ολοκληρωθεί ή να τερματιστεί.
Εν ολίγοις, ένα πρόγραμμα είναι ένα στατικό σύνολο οδηγιών, ενώ μια διαδικασία είναι μια δυναμική παρουσία ενός προγράμματος σε εκτέλεση. Η διαδικασία διαθέτει το δικό της χώρο μνήμης, τους πόρους και το PCB που διαχειρίζεται το λειτουργικό σύστημα. Οι πολλαπλές διαδικασίες μπορούν να εκτελούνται ταυτόχρονα (αν και όχι απαραίτητα ταυτόχρονα σε CPU ενός πυρήνα).
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα