Sobes.tech
Junior — Middle

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

sobes.tech AI

Απάντηση από AI

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

Η βασική αρχή είναι η πολυδιεργασία με διαχωρισμό χρόνου (time slicing). Οι διαδικασίες λαμβάνουν ένα κβαντό χρόνου (time slice), κατά το οποίο εκτελούνται. Μετά το πέρας του κβαντού, ο προγραμματιστής διακόπτει τη τρέχουσα διαδικασία και μεταβαίνει σε άλλη.

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

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