Πώς κατανέμει το λειτουργικό σύστημα την εκτέλεση δύο διεργασιών που ξεκίνησαν σε έναν ίδιο πυρήνα επεξεργαστή;
sobes.tech AI
Απάντηση από AI
Το λειτουργικό σύστημα χρησιμοποιεί έναν προγραμματιστή (scheduler) για την κατανομή του χρόνου επεξεργαστή μεταξύ πολλαπλών διαδικασιών, ακόμη και αν διαθέτει μόνο έναν πυρήνα.
Η βασική αρχή είναι η πολυδιεργασία με διαχωρισμό χρόνου (time slicing). Οι διαδικασίες λαμβάνουν ένα κβαντό χρόνου (time slice), κατά το οποίο εκτελούνται. Μετά το πέρας του κβαντού, ο προγραμματιστής διακόπτει τη τρέχουσα διαδικασία και μεταβαίνει σε άλλη.
Αυτό συμβαίνει πολύ γρήγορα (χιλιοστά του δευτερολέπτου), δημιουργώντας την ψευδαίσθηση ταυτόχρονης εκτέλεσης.
Στο Go, εκτός από το λειτουργικό σύστημα, υπάρχει ένας δικός του προγραμματιστής για τις goroutines, που διανέμει την εκτέλεση ελαφρών νημάτων (goroutines) εντός ενός ή περισσότερων συστημικών νημάτων, αλλά σε επίπεδο διαδικασιών αυτό είναι ήδη έργο του λειτουργικού συστήματος.