Processes και threads: Τι είναι και πώς λειτουργούν


nc
Δημοσίευση: • Share Article:

@Τα processes και τα threads είναι θεμελιώδεις έννοιες στο σχεδιασμό του λειτουργικού συστήματος. Όλα τα λειτουργικά συστήματα των υπολογιστών ακολουθούν μια αρχιτεκτονική: Αποθήκευση σε δίσκο, σε μνήμη RAM και CPU. Το λειτουργικό σύστημα βρίσκεται στο ενδιάμεσο, μεταξύ hardware και software. Μία εφαρμογή, πχ. στα Windows, αποτελείται από τα ακόλουθα μέρη: κώδικας, δεδομένα όπως πχ μεταβλητές και πίνακες, stack memory και heap memory.
Το λειτουργικό σύστημα φορτώνει ένα πρόγραμμα από τον δίσκο στην μνήμη RAM για την εκτέλεσή του από την CPU. Πολλές φορές, όμως όλο το πρόγραμμα δεν χωρά στη μνήμη. Έτσι, τα σύγχρονα λειτουργικά συστήματα εφαρμόζουν τη λειτουργία paging για να λύσουν αυτό το πρόβλημα. Τα λειτουργικά συστήματα χρησιμοποιούν την CPU για την εκτέλεση πολλαπλών προγραμμάτων χρηστών ταυτόχρονα. Και εν τέλει, που μπαίνουν τα processes και τα threads στα προαναφερόμενα; Για να γίνει κατανοητό, ένα process είναι ουσιαστικά ένα πρόγραμμα που εκτελείται. Όταν ένα πρόγραμμα φορτώνεται στη μνήμη και γίνεται ενεργό, το πρόγραμμα "μεταμορφώνεται" σε process. Η διαδικασία του process απαιτεί αρκετούς πόρους, όπως πρόσβαση στους καταχωρητές, μετρητές και στοίβες.
Το λειτουργικό σύστημα χρησιμοποιεί μια ειδική δομή δεδομένων που ονομάζεται process control block (PCB) για να παρακολουθεί κάθε process. Το PCB παρακολουθεί πληροφορίες όπως τα πάρακάτω:
Process ID
Process state
Open files και network connections
Process owner και permissions
Paging και segmentation info
Scheduling info
CPU registers
Ένα process, δηλαδή, δεν είναι απλώς ο εκτελέσιμος κώδικας ενός προγράμματος. Ένα process είναι o χώρος που περιλαμβάνει τον κώδικα, τα δεδομένα και τους πόρους για εύκολη διαχείριση.

Το Thread

Το threading είναι μια νέα, σχετικά, ιδέα που χωρίζει τον κώδικα του process σε tasks έτσι ώστε να εκτελούνται ταυτόχρονα. Το ακόλουθο παράδειγμα process εξηγεί τη σχέση μεταξύ προγράμματος, process και thread:

1. Το πρόγραμμα περιλαμβάνει ένα σετ εντολών.
2. Το πρόγραμμα φορτώνεται στη μνήμη. Αποτελείται από ένα ή περισσότερα process που τρέχουν.
3. Όταν ξεκινά μια διαδικασία process, της εκχωρείται μνήμη και πόροι. Μια διαδικασία μπορεί να έχει ένα ή περισσότερα threads. Για παράδειγμα, στην εφαρμογή Microsoft Word, ένα thread μπορεί να είναι υπεύθυνο για τον ορθογραφικό έλεγχο και το άλλο για την εισαγωγή κειμένου στο έγγραφο.

Οι κύριες διαφορές μεταξύ process και thread:
1. Οι διεργασίες process είναι συνήθως ανεξάρτητες, ενώ τα threads υπάρχουν ως υποσύνολα μιας διεργασίας process.
2. Κάθε process έχει το δικό της χώρο μνήμης. Τα threads που ανήκουν στην ίδια διαδικασία μοιράζονται την ίδια μνήμη.
3. Ένα process είναι μία βαρειά εργασία. Χρειάζεται περισσότερος χρόνος για τη δημιουργία και τον τερματισμό.
4. Η εναλλαγή περιβάλλοντος είναι πιο ακριβής μεταξύ διεργασιών.
5. Η επικοινωνία μεταξύ threads είναι ταχύτερη.

Foreach programming

Εγγραφείτε για να βλέπετε τα εξειδικευμένα άρθρα.