Είναι γνωστό ότι ο κώδικας γράφεται από έναν προγραμματιστή και πώς οι άνθρωποι επικοινωνούν με τους υπολογιστές. Ωστόσο, έχετε σκεφτεί ποτέ πώς το λογισμικό όπως ο κώδικας αλληλεπιδρά με το υλικό του υπολογιστή όπως μια CPU (Central Processing Unit); Εάν η απάντηση είναι ναι, τότε έχετε έρθει στο σωστό μέρος.

Για να κατανοήσετε πώς εκτελείται ο κώδικας σε έναν υπολογιστή, πρέπει να καταλάβετε τι κάνει έναν υπολογιστή να χτυπά και πώς μπορεί να χειριστεί. Αρχικά, ας μιλήσουμε πρώτα για τις θεμελιώδεις ιδέες του υλικού υπολογιστή πριν προχωρήσουμε στην πλευρά του λογισμικού των πραγμάτων.

Τι είναι το Binary;

Το Binary είναι ένα σύστημα αριθμών βάσης-2 που χρησιμοποιούν οι επεξεργαστές και η μνήμη για την εκτέλεση κώδικα. Οι δυαδικοί αριθμοί μπορούν να είναι μόνο 1 ή 0, εξ ου και το όνομά τους. Εάν ομαδοποιήσετε οκτώ δυαδικούς αριθμούς (00000000), λαμβάνετε αυτό που είναι γνωστό ως byte, ενώ ένας μεμονωμένος δυαδικός αριθμός (0) ονομάζεται bit.

Πώς ένας απλός διακόπτης παράγει δυαδικά σήματα

instagram viewer

Όλα τα λογικά σχετικά με τους υπολογιστές με μηχανές ξεκινούν με τον απλό διακόπτη. Ένας απλός διακόπτης έχει δύο αγωγούς και έναν μηχανισμό σύνδεσης και αποσύνδεσης. Η σύνδεση και των δύο αγωγών επιτρέπει τη ροή ρεύματος, το οποίο παράγει ένα σήμα στο άλλο άκρο του αγωγού. Από την άλλη πλευρά, εάν οι αγωγοί αποσυνδεθούν, το ρεύμα δεν θα ρέει, που σημαίνει ότι δεν θα παραχθεί σήμα.

Πίστωση εικόνας: 991joseph/Wikimedia Commons

Δεδομένου ότι ένας διακόπτης μπορεί να είναι ενεργοποιημένος ή απενεργοποιημένος μόνο σε μια περίπτωση, παρέχουν τον ιδανικό μηχανισμό για την παραγωγή των σημάτων υψηλού και χαμηλού που χρησιμοποιούνται για την παραγωγή σημάτων τετραγωνικών κυμάτων.

Όταν πατάτε ένα διακόπτη, παράγει ένα σήμα ή ένα bit δεδομένων. Μια κανονική φωτογραφία που λαμβάνεται από ένα smartphone θα έχει περίπου πέντε Megabyte δεδομένων, που ισοδυναμούν με 40.000.000 bit. Αυτό θα σήμαινε ότι θα χρειαστεί να πατήσετε το διακόπτη δεκάδες εκατομμύρια φορές μόνο για να παράγετε αρκετά δεδομένα για μία φωτογραφία που τραβήξατε από το smartphone σας.

Με τους μηχανικούς περιορισμούς ενός διακόπτη, οι μηχανικοί χρειάζονταν κάτι που δεν είχε κινούμενα μέρη και παρείχε μεγαλύτερες ταχύτητες μεταγωγής.

Τρανζίστορ που χρησιμοποιούνται ως διακόπτης

Πίστωση εικόνας τρανζίστορ: Evan-Amos/Wikimedia και Square Wave Πίστωση εικόνας: Sponk/Wikimedia

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

Τι είναι η αρχιτεκτονική CPU;

Στη συνέχεια, τα τρανζίστορ διατάσσονται έξυπνα για να κάνουν λογικές πύλες, μισούς αθροιστές, αθροιστές, flip flops, πολυπλέκτης, καταχωρητές και διάφορα εξαρτήματα που κάνουν τη CPU λειτουργική. Ο τρόπος στοίβαξης αυτών των στοιχείων καθορίζει αυτό που είναι γνωστό ως αρχιτεκτονική CPU.

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

Ακολουθεί ένα δείγμα ενός συνόλου οδηγιών:

Οδηγίες-σετ-δείγμα

Κάθε εντολή σε ένα σύνολο εντολών έχει τη δική της δυαδική διεύθυνση γνωστή ως opcode. Το opcode θα είναι τα πρώτα λίγα δυαδικά bit που θα λένε ποια λειτουργία από το σύνολο εντολών θα χρησιμοποιηθεί.

Συναρμολόγηση-οδηγία-σύνταξη

Μετά τον κωδικό λειτουργίας είναι ο τελεστής. Ο τελεστής περιέχει τιμές και διευθύνσεις όπου θα χρησιμοποιηθεί ο opcode.

Το διάγραμμα δείχνει μια οδηγία 8-bit. Εάν μια CPU έχει αρχιτεκτονική 64 bit, τότε οι οδηγίες μπορούν να εκτείνονται έως και 64 bit σε πλάτος εντολών, καθιστώντας την έναν πιο ικανό επεξεργαστή.

Σχετίζεται με: Πώς διαφέρουν οι CPU RISC και CISC;

Ο Συναρμολογητής

Τώρα που κατανοείτε τα δυαδικά σήματα, μπορείτε να μάθετε πώς ο υπολογιστής σας ερμηνεύει τέτοια σήματα. Ο τρόπος ερμηνείας του κώδικα μηχανής εξαρτάται από τον τύπο της λογικής που χρησιμοποιείται σε έναν assembler (ένα πρόγραμμα χαμηλού επιπέδου που χρησιμοποιείται για την αποκωδικοποίηση και τη συναρμολόγηση κώδικα σε κατάλληλο δυαδικό).

Για παράδειγμα, εάν ο assembler μας χρησιμοποιεί το πρότυπο ASCII (American Standard Code for Information Interchange), ο συναρμολογητής μας θα έπαιρνε τον κωδικό μηχανής που δίνεται και θα τον ερμήνευε με τον ίδιο τρόπο όπως από το ASCII στον πίνακα παρακάτω.

00101001 ΕΝΑ 00101111 σολ 00110101 Μ 00111011 μικρό 01000001 Υ
00101010 σι 00110000 H 00110110 Ν 00111100 Τ 01000010 Ζ
00101011 ντο 00110001 Εγώ 00110111 0 00111101 U
00101100 ρε 00110010 J 00111000 Π 00111110 V
00101101 μι 00110011 κ 00111001 Q 00111111 W
00101110 φά 00110100 μεγάλο 00111010 R 0100000 Χ

Δεδομένου ότι ο συναρμολογητής μας χρησιμοποιεί ASCII (έκδοση 8-bit), κάθε οκτώ δυαδικοί αριθμοί στο δυαδικό ερμηνεύονται ως ένας χαρακτήρας. Ο συναρμολογητής έπαιρνε αυτό το byte και το ερμήνευε σύμφωνα με τα πρότυπα που δίνονται. Για παράδειγμα, το 01000001 01101001 01010100 θα μεταφραστεί στη λέξη "bit".

Κατανόηση της γλώσσας Assembly

Η γλώσσα Assembly είναι μια γλώσσα προγραμματισμού χαμηλού επιπέδου αναγνώσιμη από τον άνθρωπο που χειρίζεται απευθείας τους κωδικούς και τους τελεστές μιας αρχιτεκτονικής CPU.

Ακολουθεί ένα παράδειγμα απλού κώδικα συναρμολόγησης που χρησιμοποιεί το σύνολο εντολών που παρουσιάστηκε προηγουμένως:

1. LODA #5 
2. LODB #7
3. ΠΡΟΣΘΗΚΗ R3
4. STRE M12

Αυτό το μπλοκ κώδικα αποθηκεύεται στη μνήμη RAM έως ότου η CPU ανακτήσει κάθε γραμμή κώδικα μία προς μία.

Ο κύκλος ανάκτησης, αποκωδικοποίησης και εκτέλεσης της CPU

Η CPU εκτελεί τον κώδικα μέσω ενός κύκλου που είναι γνωστός ως Fetch, Decode και Execute. Αυτή η ακολουθία δείχνει πώς μια CPU επεξεργάζεται κάθε γραμμή κώδικα.

Φέρω: Ο μετρητής εντολών εντός της CPU παίρνει μια γραμμή εντολών από τη RAM για να ενημερώσει την CPU ποια εντολή να εκτελέσει στη συνέχεια.

Αποκρυπτογραφώ: Το Assembler θα αποκωδικοποιήσει το αναγνώσιμο από τον άνθρωπο μπλοκ κώδικα και θα το συναρμολογήσει ως σωστά διαμορφωμένα δυαδικά αρχεία για να τα κατανοήσει ο υπολογιστής.

1. 00010101 
2. 00100111
3. 00110011
4. 01011100

Εκτέλεση: Στη συνέχεια, η CPU εκτελεί τα δυαδικά αρχεία εφαρμόζοντας τις οδηγίες που υποδεικνύονται από τον κωδικό λειτουργίας στους τελεστές που παρέχονται.

Ο υπολογιστής θα εκτέλεση είναι ως εξής:

  1. Φορτώστε την πρώτη εγγραφή με 5
  2. Φορτώστε τον δεύτερο καταχωρητή με 7
  3. 5 + 7 = 12, αποθηκεύστε 12 στον τρίτο καταχωρητή
  4. Αποθηκεύστε την τιμή του τρίτου καταχωρητή στη διεύθυνση RAM M12

Ο υπολογιστής έχει προσθέσει επιτυχώς δύο αριθμούς και έχει αποθηκεύσει την τιμή στην καθορισμένη διεύθυνση RAM.

Εξαιρετική! Τώρα ξέρετε πώς ένας υπολογιστής εκτελεί κώδικα. Ωστόσο, δεν σταματά εκεί.

Προχωρώντας Παραπέρα

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

Τι είναι ένας μεταγλωττιστής και ένας διερμηνέας;

Ο μεταγλωττιστής και ο διερμηνέας είναι μεταφραστικά προγράμματα που λαμβάνουν πηγαίο κώδικα (προγράμματα που παράγονται από γλώσσες προγραμματισμού υψηλού επιπέδου) και να τις μεταφράσει σε γλώσσα assembly, την οποία ο assembler θα αποκωδικοποιήσει στη συνέχεια σε δυαδικό.

Ενα διερμηνέας θα πάρει μία γραμμή κώδικα και θα την εκτελέσει αμέσως. Αυτό χρησιμοποιείται συνήθως σε τερματικά όπως το τερματικό Linux Bash Shell και το τερματικό Windows PowerShell. Ιδανικό για την εκτέλεση απλών εφάπαξ εργασιών.

Πίστωση εικόνας: Rlistmedia/Wikimedia Common

Αντίθετα, α μεταγλωττιστής θα πάρει πολλές γραμμές κώδικα και θα τις μεταγλωττίσει για να φτιάξει ένα πρόγραμμα. Παραδείγματα αυτών των προγραμμάτων θα ήταν τα Microsoft Word, Photoshop, Google Chrome, Safari και Steam.

Με τη δημιουργία μεταγλωττιστών και διερμηνέων δημιουργήθηκαν γλώσσες προγραμματισμού υψηλού επιπέδου.

Γλώσσες Προγραμματισμού Υψηλού Επιπέδου

Οι γλώσσες προγραμματισμού υψηλού επιπέδου είναι οποιαδήποτε γλώσσα μετά τον κώδικα συναρμολόγησης. Μερικές από αυτές τις γλώσσες που ίσως γνωρίζετε είναι η C, η Python, η Java και η Swift. Αυτές οι γλώσσες προγραμματισμού έκαναν τον προγραμματισμό πιο ευανάγνωστο και απλούστερο από τη γλώσσα assembly.

Ακολουθεί μια σύγκριση δίπλα-δίπλα για να καταδείξουμε πόσο πιο δύσκολο είναι να προγραμματίσουμε σε συναρμολόγηση από ό, τι με μια γλώσσα προγραμματισμού υψηλού επιπέδου όπως η Python:

Και οι δύο κωδικοί θα εκτυπώσουν "Hello World".

Με αυτές τις γλώσσες προγραμματισμού, οι προγραμματιστές μπορούν να προγραμματίσουν παιχνίδια, ιστότοπους, εφαρμογές και προγράμματα οδήγησης, με εύλογο χρονικό διάστημα.

Σχετίζεται με: Python vs. Java: Η καλύτερη γλώσσα για το 2022

Οι υπολογιστές μπορούν να εκτελέσουν κάθε είδους κώδικα

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

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

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

Γλώσσες προγραμματισμού υψηλού επιπέδου όπως Python, C και Java έχουν δημιουργηθεί για να κάνουν τον προγραμματισμό ευκολότερο, ταχύτερο και βολικό. Η μεγάλη πλειονότητα των προγραμματιστών δεν χρειάζεται πλέον να κωδικοποιεί σε γλώσσα assembly, καθώς οι εύχρηστες γλώσσες προγραμματισμού υψηλού επιπέδου μπορούν να μεταφραστούν στη συγκρότηση μέσω ενός μεταγλωττιστή.

Ας ελπίσουμε ότι τώρα έχετε καλύτερη κατανόηση των βασικών αρχών των υπολογιστών και του τρόπου με τον οποίο εκτελούν τον κώδικα.

Πώς λειτουργεί ένας υπολογιστής και τι είναι μέσα;

Είναι μια απλή ερώτηση, αλλά μια ερώτηση που όλοι αναρωτιούνται από καιρό σε καιρό: πώς λειτουργεί πραγματικά αυτός ο υπολογιστής που έχετε μπροστά σας;

Διαβάστε Επόμενο

ΜερίδιοΤιτίβισμαΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ
Σχετικά θέματα
  • Επεξήγηση τεχνολογίας
  • Προγραμματισμός
  • Επεξεργαστής Υπολογιστή
  • Επεξεργασία
Σχετικά με τον Συγγραφέα
Jayric Maning (Δημοσιεύτηκαν 5 άρθρα)

Λαχταρώντας να μάθει πώς λειτουργούσαν τα πράγματα, ο Jayric Maning άρχισε να ασχολείται με όλα τα είδη ηλεκτρονικών και αναλογικών συσκευών κατά τη διάρκεια της εφηβείας του. Ασχολήθηκε με την εγκληματολογική επιστήμη στο Πανεπιστήμιο του Baguio όπου εξοικειώθηκε με την εγκληματολογία υπολογιστών και την ασφάλεια στον κυβερνοχώρο. Αυτήν τη στιγμή κάνει πολλή αυτο-μελέτη και ασχολείται με την τεχνολογία για να καταλάβει πώς λειτουργούν και πώς μπορούμε να τα χρησιμοποιήσουμε για να κάνουμε τη ζωή πιο εύκολη (ή τουλάχιστον πιο δροσερή!).

Περισσότερα από τον Jayric Maning

Εγγραφείτε στο ενημερωτικό μας δελτίο

Εγγραφείτε στο ενημερωτικό μας δελτίο για συμβουλές τεχνολογίας, κριτικές, δωρεάν ebook και αποκλειστικές προσφορές!

Κάντε κλικ εδώ για να εγγραφείτε