Νήμα (υπολογιστές)

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια
Μετάβαση σε: πλοήγηση, αναζήτηση
Μια διεργασία με δύο νήματα εκτέλεσης.

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

Σε ένα μοναδικό επεξεργαστή, η πολυνηματική εκτέλεση γενικά γίνεται με πολυπλεξία διαίρεσης χρόνου (όπως στην πολυδιεργασία): ο επεξεργαστής εναλλάσει μεταξύ διαφορετικών νημάτων. Αυτή η θεματική αλλαγή (context switch) συμβαίνει αρκετά συχνά ώστε ο χρήστης να αντιλαμβάνεται ότι τα νήματα ή διεργασίες εκτελούνται ταυτόχρονα. Σε ένα πολυεπεξεργαστικό ή πολυπύρηνο σύστημα, τα νήματα ή διεργασίες εκτελούνται γενικά ταυτόχρονα, με κάθε επεξεργαστή ή πυρήνα να εκτελεί ένα συγκεκριμένο νήμα ή εργασία. Η υποστήριξη για νήματα ποικίλει ανάμεσα στις γλώσσες προγραμματισμού: κάποιες γλώσσες απλά δεν υποστηρίζουν πάνω από μία εκτέλεση στο ίδιο πρόγραμμα ταυτόχρονα. Παραδείγματα τέτοιων γλωσσών είναι η Python και η OCaml, γιατί η υποστήριξη παραλληλισμού γίνεται με χρήση ενός κεντρικού κλειδιού, το global interpreter lock στην Python, ή master lock στην OCaml. Άλλες γλώσσες μπορεί να περιορίζονται στη χρήση νημάτων χρήστη που δεν είναι ορατές στον πυρήνα και έτσι δεν μπορούν να εκτελεστούν ταυτόχρονα. Από την άλλη, τα νήματα πυρήνα, που είναι ορατά στον χρονοδρομολογητή του πυρήνα, μπορούν να εκτελεστούν ταυτόχρονα.

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

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

[Επεξεργασία] Δείτε επίσης

[Επεξεργασία] Εξωτερικοί σύνδεσμοι



Wikipedia-logo.png Στο λήμμα αυτό έχει ενσωματωθεί κείμενο από το λήμμα thread (computer science) της Αγγλόγλωσσης Βικιπαίδειας, η οποία διανέμεται υπό την GNU FDL και την CC-BY-SA 3.0. (ιστορικό/συντάκτες).
Προσωπικά εργαλεία
Περιοχές ονομάτων

Παραλλαγές
Ενέργειες
Πλοήγηση
Συμμετοχή
Εκτύπωση/εξαγωγή
Εργαλειοθήκη
Άλλες γλώσσες