You are on page 1of 4

ΕΣΩΤΕΡΙΚΗ ΛΕΙΤΟΥΡΓΙΑ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ

Έχουμε αναφέρει ήδη, ότι ο υπολογιστής είναι ένα σφιχτοδεμένο ζευγάρι υλικού (συσκευών) και
λογισμικού (προγραμμάτων). Κάθε ένα από τα μέλη του ζευγαριού είναι απολύτως απαραίτητο για το
άλλο: Το υλικό είναι φτιαγμένο έτσι ώστε να μπορεί να κάνει υπολογισμούς, να συγκρίνει στοιχεία, να
μεταφέρει από το ένα σημείο στο άλλο δεδομένα (αλλάζοντας μερικές φορές τη μορφή τους) και να
αποθηκεύει είτε προσωρινά (στη μνήμη RAM) είτε μόνιμα (στη μνήμη ROM και στην περιφερειακή
μνήμη) τα προγράμματα και τα δεδομένα αυτών των προγραμμάτων. Όλα αυτά τα κάνει ακολουθώντας
πιστά τις εντολές του λογισμικού. Αντίστοιχα, το λογισμικό αποκτά αξία μόνο όταν βρίσκεται σε ένα
τέτοιο περιβάλλον υλικού που να μπορεί να «κατανοήσει» τις εντολές του. Όταν συμβαίνει αυτό, λέμε
ότι το λογισμικό και το υλικό είναι συμβατά μεταξύ τους.

Μιλώντας πρώτη φορά για λογισμικό είδαμε ότι κάποια ομάδα προγραμμάτων (προγράμματα
αυτοελέγχου και BIOS1) βρίσκεται μόνιμα αποθηκευμένη στη ROM για να τη βρίσκει διαθέσιμη κάθε
φορά που ξεκινάει ο υπολογιστής. Επίσης έχουμε μιλήσει για μια άλλη ομάδα προγραμμάτων που λέγεται
λειτουργικό σύστημα και που φροντίζει να διαχειρίζεται τις περίπλοκες λειτουργίες του υπολογιστή
επιτρέποντας έτσι στους ανθρώπους να επικοινωνούν με το μηχάνημα άνετα. Στις πρώτες φάσεις
ανάπτυξης των ηλεκτρονικών υπολογιστών δεν υπήρχαν λειτουργικά συστήματα με αποτέλεσμα η
επικοινωνία ανθρώπου – υπολογιστή να είναι εξαιρετικά επίπονη και να γίνεται μόνο από ειδικούς.

Για να καταλάβουμε πως δουλεύει ένας υπολογιστής θα πούμε πρώτα δυο λόγια για το που πρέπει να
βρίσκεται το λογισμικό (τα προγράμματα δηλαδή) όταν εκτελείται, μετά θα παρακολουθήσουμε τις
ενέργειες της Κεντρικής Μονάδας Επεξεργασίας (CPU) κατά την εκτέλεση μιας εντολής ενός
προγράμματος και κατόπιν θα δούμε τι ακριβώς συμβαίνει κατά τη διάρκεια του ξεκινήματος, της
χρήσης και του κλεισίματος του υπολογιστή μας.

ΛΟΓΙΣΜΙΚΟ ΚΑΙ ΚΥΡΙΑ ΜΝΗΜΗ: Κάθε πρόγραμμα αποτελείται από μια σειρά εντολών (καμιά φορά
αυτή η σειρά είναι πολύ μεγάλη: υπάρχουν προγράμματα που αποτελούνται από εκατομμύρια εντολές).
Εκτός από τις εντολές, τα προγράμματα περιέχουν και κάποια σταθερά ή μεταβλητά δεδομένα. Με
εξαίρεση τα προγράμματα που βρίσκονται αποθηκευμένα στη ROM, όλα τα άλλα (περιλαμβανόμενων και
των προγραμμάτων του λειτουργικού συστήματος) βρίσκονται στο σκληρό δίσκο ή σε κάποια άλλη
μονάδα περιφερειακής (δευτερεύουσας) μνήμης.

Παρά το γεγονός ότι στους μεγάλους αποθηκευτικούς χώρους της δευτερεύουσας μνήμης μπορούμε να
έχουμε φυλαγμένο ένα σημαντικό πλήθος από προγράμματα, πρέπει να καταλάβουμε έναν θεμελιώδη
κανόνα των υπολογιστών: ένα πρόγραμμα για να μπορέσει να «τρέξει», δηλαδή να εκτελεσθεί, πρέπει
να βρίσκεται -ολόκληρο ή τουλάχιστον ένα βασικό μέρος του- μέσα στη κύρια μνήμη. Αυτό σημαίνει ότι
αν θέλουμε να χρησιμοποιήσουμε ένα πρόγραμμα πρέπει να το μεταφέρουμε από τη δευτερεύουσα στη
κύρια μνήμη (για να είμαστε ακριβείς, πρόκειται περί αντιγραφής και όχι μεταφοράς). Τη μεταφορά
αυτή, που συνήθως τη λέμε «φόρτωση προγράμματος», την αναλαμβάνει το λειτουργικό σύστημα μετά
από σχετική εντολή μας που μπορεί να είναι τόσο απλή όσο το πάτημα ενός πλήκτρου.

Ας θυμηθούμε ότι η κύρια μνήμη αποτελείται από μια μεγάλη σειρά από θέσεις κάθε μια από τις οποίες
έχει συγκεκριμένη διεύθυνση. Έτσι, κάθε μια από τις εντολές (καθώς και κάθε ένα από τα σταθερά ή
μεταβλητά «κομμάτια» δεδομένων) ενός προγράμματος που φορτώνεται στη κύρια μνήμη θα ξεκινά σε
κάποια συγκεκριμένη διεύθυνση. Λέμε «θα ξεκινά» γιατί οι πιο πολλές εντολές (καθώς και τα
«κομμάτια» δεδομένων) πιάνουν χώρο που αντιστοιχεί σε περισσότερες από μία διευθύνσεις.

1
Μέρος της βιβλιογραφίας αντιμετωπίζει τα προγράμματα αυτοελέγχου ως τμήμα του BIOS.
24
Πριν προχωρήσουμε, καλό είναι να θυμηθούμε ότι και η ίδια η CPU περιέχει κάποιους μικρούς χώρους
μνήμης που ονομάζονται καταχωρητές.

ΑΝΑΚΛΗΣΗ ΚΑΙ ΕΚΤΕΛΕΣΗ ΕΝΤΟΛΗΣ: Ας φανταστούμε τώρα, ότι ένα πρόγραμμα έχει φορτωθεί
στη μνήμη. Πώς ακριβώς εκτελείται; Οι εντολές του εκτελούνται όλες μαζί; Μήπως κατ’ ομάδες; Είναι
ώρα να γνωρίσουμε έναν άλλο βασικό κανόνα των υπολογιστών: Οι εντολές ενός προγράμματος
μεταφέρονται (αντιγράφονται) μία προς μία από τη μνήμη στον επεξεργαστή (δηλαδή τη CPU) και εκεί
μέσα εκτελούνται. Άρα δε φτάνει που το πρόγραμμα πρέπει πρώτα να «ταξιδέψει» από τη δευτερεύουσα
στη κύρια μνήμη, πρέπει κομματάκι – κομματάκι (δηλαδή εντολή προς εντολή) να κάνει ένα δεύτερο
ταξίδι από τη μνήμη στον επεξεργαστή). Ας παρακολουθήσουμε μια εντολή που έφτασε η ώρα της να
εκτελεστεί:

α) Η Κεντρική Μονάδα Επεξεργασίας ξέρει ποια εντολή πρέπει να εκτελέσει γιατί μέσα σε ένα
σύνολο κυκλωμάτων της που λέγεται μονάδα ελέγχου υπάρχει ένα κύκλωμα που ονομάζεται μετρητής
προγράμματος. Μέσα στο μετρητή προγράμματος υπάρχει η διεύθυνση της μνήμης από την οποία
αρχίζει η επόμενη προς εκτέλεση εντολή. Έτσι, τελειώνοντας η CPU με τη μια εντολή μπορεί χωρίς
καθυστέρηση να ασχοληθεί με την επόμενη, συμβουλευόμενη αυτή τη διεύθυνση. Προχωρά λοιπόν και
διαβάζει από αυτή τη διεύθυνση ένα αντίγραφο της εντολής (κάνει, όπως λέμε, ανάκληση εντολής). Για
την ακρίβεια εκείνο που διαβάζει η CPU είναι το πρώτο μέρος της εντολής που είναι και η «ταυτότητά»
της, το τμήμα δηλαδή που λέει τι είδους εντολή είναι. Αυτή τη ταυτότητα τη λέμε κωδικό εντολής.
Συνήθως ο κωδικός της εντολής ακολουθείται από κάποιο «υπόλοιπο» (οπότε καταλαβαίνουμε ότι σε
αυτές τις περιπτώσεις η δουλειά της ανάκλησης είναι μισοτελειωμένη). Υπάρχουν και μερικές εντολές
που αποτελούνται μόνο από κωδικό, οπότε και η ανάκλησή τους τελειώνει σ’ αυτό το στάδιο.

β) Μόλις το αντίγραφο του κωδικού της εντολής φτάσει στη CPU μπαίνει σε έναν καταχωρητή που
λέγεται καταχωρητής εντολών και αμέσως μετά η μονάδα ελέγχου ξεκινά την αποκωδικοποίηση του
κωδικού αυτού. Μπορούμε να παρομοιάσουμε την αποκωδικοποίηση σα μια προσπάθεια της μονάδας
ελέγχου να καταλάβει τι είδους εντολή είναι αυτή που μόλις έχει ανακαλέσει. Δεν πρέπει όμως να
ξεχνάμε ότι αυτό δεν είναι παρά μια παρομοίωση: οι μηχανές, ακόμα και αν δίνουν την εντύπωση
κάποιας «εξυπνάδας», όπως οι υπολογιστές, δε μπορούν να καταλάβουν τίποτα! Στη πραγματικότητα
εκείνο που συμβαίνει είναι ότι η ίδια η μορφή του κωδικού καθοδηγεί τα κυκλώματα της
αποκωδικοποίησης να ενεργοποιήσουν μια σειρά από ενέργειες που στο σύνολό τους αποτελούν την
καθ’ αυτό εκτέλεση της εντολής.

γ) Η εκτέλεση ξεκινά με την αντιγραφή του κομματιού της εντολής που ακολουθεί τον κωδικό της.
Τα διάφορα τμήματα αυτού του υπολοίπου αντιγράφονται μέσα στους κατάλληλους για κάθε περίπτωση
καταχωρητές. Όταν γίνει και αυτό, η μονάδα ελέγχου συνεχίζει και, συντονίζοντας όσα τμήματα υλικού
πρέπει να συμμετάσχουν, συμπληρώνει την εκτέλεση μέχρι και το τέλος της. Μια σημαντική ομάδα
κυκλωμάτων που συνήθως συμμετέχει στην εκτέλεση των εντολών είναι η αριθμητική και λογική
μονάδα. Αυτή ανήκει (όπως και η μονάδα ελέγχου) στη CPU και αποτελείται από κυκλώματα που
δουλειά τους είναι να κάνουν αριθμητικές πράξεις και συγκρίσεις. Τα αποτελέσματα των πράξεών της,
τα βάζει σε έναν καταχωρητή που ονομάζεται συσσωρευτής, ενώ τα αποτελέσματα των συγκρίσεων σε
έναν άλλο καταχωρητή που λέγεται καταχωρητής κατάστασης. Λάβετε υπόψη σας ότι δεν απαιτούν
όλες οι εντολές να γίνει κάτι μέσα στην αριθμητική και λογική μονάδα. Υπάρχουν εντολές που απλώς
μεταφέρουν δεδομένα ή διευθύνσεις ανάμεσα στη μνήμη και τη CPU. Κάποιες εντολές μάλιστα μπορούν
να μεταβάλουν τη τιμή του μετρητή προγράμματος, πετυχαίνοντας έτσι «πηδήματα» από το ένα σημείο
του προγράμματος στο άλλο. (Αυτή η δυνατότητα των ελευθέρων μεταβάσεων - «πηδημάτων» από το
ένα σημείο του προγράμματος σε ένα άλλο, είναι που μας επιτρέπει να φτιάξουμε προγράμματα που
επαναλαμβάνουν μυριάδες φορές κάποιες ομάδες εντολών, πετυχαίνοντας τη λύση προβλημάτων που
είναι αδύνατο ή εξαιρετικά χρονοβόρο να λυθούν με άλλο τρόπο).

25
δ) Το αποτέλεσμα της εκτέλεσης μιας εντολής είναι είτε η μεταβολή των τιμών κάποιων
καταχωρητών είτε η μεταφορά δεδομένων μεταξύ μνήμης, CPU και κυκλωμάτων υπεύθυνων για την
σύνδεση κάποιας περιφερειακής συσκευής. Το ωραίο της υπόθεσης είναι ότι όσο η εντολή εκτελείται, τα
κυκλώματα της μονάδας ελέγχου φροντίζουν να μεταβάλουν κατάλληλα τη τιμή του μετρητή
προγράμματος, ώστε με το τελείωμα της μιας εντολής η CPU να είναι έτοιμη για την επόμενη.
Ακολουθώντας αυτόν τον «κύκλο» ανάκλησης, αποκωδικοποίησης και εκτέλεσης η CPU καταφέρνει
βήμα - βήμα (αλλά με ασύλληπτη για τον άνθρωπο ταχύτητα) να ακολουθήσει το «μονοπάτι» των
εντολών και έτσι να εκτελέσει το πρόγραμμα.

ΕΚΚΙΝΗΣΗ: Ο μετρητής προγράμματος κάθε ενός επεξεργαστή είναι φτιαγμένος έτσι που μόλις
ανοίξουμε τον υπολογιστή να «σημαδεύει» σε μια συγκεκριμένη διεύθυνση της μνήμης. Μέσα σε αυτή τη
διεύθυνση (που ανήκει στη ROM) υπάρχει η πρώτη εντολή (η μια εντολή «πηδήματος» στη πρώτη
εντολή) ενός προγράμματος που βοηθάει τον υπολογιστή να ελέγξει τον εαυτό του. Αυτός ο
αυτοέλεγχος ονομάζεται POST (Power On Self Test – Αυτοέλεγχος Εκκίνησης) και αν ολοκληρωθεί
σωστά εξασφαλίζει ότι όλα τα βασικά τμήματα του υπολογιστή βρίσκονται σε καλή κατάσταση και
επικοινωνούν επαρκώς μεταξύ τους. Σαν «βασικά τμήματα» εννοούμε σε αυτή τη περίπτωση τη κύρια
μνήμη και τις απολύτως απαραίτητες μονάδες εισόδου και εξόδου, όπως το πληκτρολόγιο και η οθόνη.

Μετά την εκτέλεση των προγραμμάτων του POST αρχίζουν να εκτελούνται κάποια προγράμματα που
σκοπό έχουν να εξασφαλίσουν την επικοινωνία με τις υπόλοιπες περιφερειακές μονάδες (και ιδιαίτερα
με αυτές της περιφερειακής μνήμης). Σε αυτό το σημείο ζητείται η βοήθεια του BIOS (Basic Input-
Output System – Βασικό Σύστημα Εισόδου-Εξόδου) που δεν είναι τίποτε άλλο από μια ομάδα
προγραμμάτων που βοηθούν όλα τα άλλα προγράμματα να επικοινωνούν με το υλικό. Το BIOS είναι
μόνιμα αποθηκευμένο στη ROM και χρησιμοποιείται όχι μόνο στο ξεκίνημα του υπολογιστή, αλλά και
καθ’ όλη τη διάρκεια της λειτουργίας του. Κάποια στοιχεία που απαιτούνται σε αυτή τη φάση, αντλούνται
από τη CMOS-RAM που φυλάει τις βασικές παραμέτρους, δηλαδή τα τεχνικά χαρακτηριστικά καθώς
και την ώρα του συστήματος. Η CMOS-RAM καταφέρνει να κρατάει αυτά τα δεδομένα ακόμη και όταν ο
υπολογιστής είναι κλειστός επειδή τροφοδοτείται από μια μικρή μπαταρία που βρίσκεται πάνω στη
μητρική πλακέτα.

Μόλις αποκατασταθεί η επικοινωνία με τις μονάδες της περιφερειακής μνήμης επιχειρείται η μεταφορά
από αυτές προς τη κύρια μνήμη του πυρήνα (kernel), δηλαδή των απολύτως απαραίτητων
προγραμμάτων του λειτουργικού συστήματος που του επιτρέπουν να αναλάβει τη διαχείριση του
υπολογιστή. Αν αυτή η μεταφορά (που, για άλλη μια φορά, πρόκειται για αντιγραφή) τελειώσει με
επιτυχία, ο πυρήνας αναλαμβάνει να φορτώσει όποια άλλα τμήματά του λειτουργικού συστήματος
απαιτούνται (μεταξύ των οποίων και εκείνα που είναι υπεύθυνα για την επικοινωνία του χρήστη με τον
υπολογιστή), καθώς και ότι άλλο πρόγραμμα έχει καθοριστεί να εκτελείται κατά τη διάρκεια της
εκκίνησης. Σε αυτό το σημείο ο υπολογιστής είναι έτοιμος να δεχθεί εντολές από τον χρήστη.

ΧΡΗΣΗ: Αυτό που βλέπουμε στην οθόνη μας όταν τελειώσουν οι διαδικασίες της εκκίνησης, είναι το
περιβάλλον επικοινωνίας μέσω του οποίου μπορούμε να δώσουμε εντολές στον υπολογιστή μας. Έχουμε
μάλιστα αναφέρει, ότι μπορεί να αντιμετωπίσουμε είτε ένα γραφικό περιβάλλον επικοινωνίας (graphical
user interface) είτε ένα περιβάλλον γραμμής εντολών (command line interface). Το περιβάλλον
επικοινωνίας δεν είναι παρά ένα κομμάτι του λειτουργικού συστήματος που η τεχνική του ονομασία είναι
φλοιός (shell) ή διερμηνέας εντολών2 (command interpreter). Σκοπός του διερμηνέα εντολών είναι να
παίρνει εντολές από εμάς και να τις διαβιβάζει στο κατάλληλο τμήμα του λειτουργικού που θα φροντίσει
για την εκτέλεσή τους. Σχεδόν πάντα οι εντολές μας ενεργοποιούν την εκτέλεση ενός προγράμματος.

2
Δεν πρέπει να συγχέουμε τον διερμηνέα εντολών με τον διερμηνέα (interpreter) που είναι ένα είδος
μεταφραστικού προγράμματος, ανήκει δηλαδή στα προγράμματα ανάπτυξης λογισμικού.
26
Όταν το λειτουργικό σύστημα λάβει την εντολή να ξεκινήσει την εκτέλεση ενός προγράμματος,
φροντίζει να το φορτώσει στη μνήμη και να περάσει τον έλεγχο σε αυτό. Πιο συγκεκριμένα, η
φόρτωση του προγράμματος συνίσταται στην αντιγραφή των εντολών του από τον δίσκο (ή από
όποιο άλλο μέσο δευτερεύουσας μνήμης βρίσκεται εγκατεστημένο) σε ένα ελεύθερο τμήμα της
κύριας μνήμης έτσι ώστε να μη δημιουργηθεί πρόβλημα στα άλλα προγράμματα (όπως και στο ίδιο
το λειτουργικό σύστημα) που βρίσκονται ήδη μέσα στη μνήμη. Το λειτουργικό σύστημα κρατάει
πίνακες που περιέχουν στοιχεία για το ποια κομμάτια της RAM είναι ελεύθερα κάθε στιγμή και
έτσι αποφεύγεται η πιθανότητα να πέσει το ένα πρόγραμμα πάνω στο άλλο. Ένα πράγμα που το
αναφέραμε ήδη, αλλά αξίζει τον κόπο να τονιστεί ξανά, είναι ότι μπορεί ένα πρόγραμμα να
«τρέχει» χωρίς να βρίσκεται ολόκληρο μέσα στη μνήμη: το λειτουργικό σύστημα έχει την
ικανότητα να διατηρεί μέσα στη μνήμη μόνο εκείνα τα κομμάτια του προγράμματος που απαιτούνται
κάθε στιγμή για τη σωστή λειτουργία του. Επίσης μπορεί να κρατά μέσα στη μνήμη περισσότερα
από ένα προγράμματα και να περνά τον έλεγχο στο καθένα από αυτά όταν αυτό χρειάζεται.

Η φράση «να περνά τον έλεγχο» έχει τη εξής σημασία: Το πρόγραμμα για να τρέξει πρέπει να
χρησιμοποιήσει τη CPU. Κατά συνέπεια πρέπει η CPU να ενημερωθεί, με κάποιο τρόπο, για το πού
βρίσκονται οι εντολές του. Η ενημέρωση αυτή γίνεται από το λειτουργικό σύστημα που μεταφέρει
στον μετρητή προγράμματος τη διεύθυνση της πρώτης εντολής του προγράμματος στο οποίο
«περνά τον έλεγχο». Βέβαια, πριν την ενημέρωση του μετρητή προγράμματος γίνονται όλες οι
απαραίτητες ενέργειες φύλαξης της κατάστασης της CPU, έτσι ώστε με το τελείωμα (οριστικό ή
προσωρινό) του προγράμματος να γίνει ομαλά η μετάβαση στο λειτουργικό σύστημα. Πολλές φορές
ένα πρόγραμμα που τρέχει, ζητά από το λειτουργικό σύστημα διάφορες εξυπηρετήσεις (που
συνήθως αφορούν την επικοινωνία του με τις περιφερειακές μονάδες). Σε αυτές τις περιπτώσεις
το λειτουργικό σύστημα αναλαμβάνει προσωρινά τον έλεγχο και φροντίζει να διεκπεραιώσει τις
εργασίες που του ζητά το πρόγραμμα, και τελειώνοντας του ξαναδίνει τον έλεγχο.

ΚΛΕΙΣΙΜΟ: Όταν τελειώσουμε τη δουλειά μας με τον υπολογιστή πρέπει να φροντίζουμε να τον
κλείνουμε με τον σωστό τρόπο. Αφού δηλαδή έχουμε αποθηκεύσει τη δουλειά μας, και αφού έχουμε
κλείσει τις εφαρμογές που χρησιμοποιήσαμε, πρέπει να τερματίζουμε την επικοινωνία μας με το
λειτουργικό σύστημα ομαλά. Αυτό είναι απαραίτητο γιατί καθ’ όλη τη διάρκεια της λειτουργίας του
υπολογιστή, το λειτουργικό σύστημα κρατά στη κύρια μνήμη ορισμένα στοιχεία που πρέπει να
αποθηκευτούν πριν από το κλείσιμο. Αν εμείς αγνοήσουμε τις οδηγίες για ομαλό κλείσιμο του
υπολογιστή μας και πατήσουμε το πλήκτρο τροφοδοσίας (power) τα στοιχεία αυτά σβήνονται από τη
μνήμη με αποτέλεσμα την επόμενη φορά που θα τον ανοίξουμε να αντιμετωπίσουμε μια προβληματική
εκκίνηση.

27

You might also like