Μετάβαση στο περιεχόμενο

Λειτουργικά συστήματα

Διεργασίες, διαχείριση μνήμης, σύστημα αρχείων και δικαιώματα.

40 λεπτά

Θα μάθεις να

  1. Να περιγράφεις τον ρόλο του λειτουργικού συστήματος ως διαχειριστή πόρων.
  2. Να ξεχωρίζεις πρόγραμμα από διεργασία και να περιγράφεις τις καταστάσεις μιας διεργασίας.
  3. Να εφαρμόζεις τον χρονοπρογραμματισμό εκ περιτροπής σε λίγες διεργασίες.
  4. Να εξηγείς τη σελιδοποίηση και την ιδεατή μνήμη σε γενικές γραμμές.
  5. Να διαβάζεις διαδρομές αρχείων και δικαιώματα τύπου rwx και σε οκταδική μορφή.

Τι κάνει ένα λειτουργικό σύστημα

Στον υπολογιστή σου τρέχουν αυτή τη στιγμή δεκάδες προγράμματα: ο φυλλομετρητής, η μουσική, ο έλεγχος για ενημερώσεις, το ρολόι στη γωνία της οθόνης. Όλα θέλουν επεξεργαστή, μνήμη, δίσκο και δίκτυο, και όλα πιστεύουν ότι έχουν τη μηχανή για τον εαυτό τους. Αυτή την ψευδαίσθηση τη δημιουργεί το λειτουργικό σύστημα (operating system).

Το λειτουργικό έχει δύο ρόλους:

  • Διαχειριστής πόρων. Αποφασίζει ποιο πρόγραμμα παίρνει τον επεξεργαστή και για πόσο, πού στη μνήμη μπαίνει το καθένα, ποιος γράφει στον δίσκο.
  • Ενδιάμεσος. Κρύβει τις λεπτομέρειες του υλικού. Ένα πρόγραμμα λέει «αποθήκευσε αυτό το αρχείο» και δεν χρειάζεται να ξέρει αν ο δίσκος είναι SSD ή μαγνητικός, ούτε ποιος κατασκευαστής τον έφτιαξε.

Το κεντρικό του κομμάτι λέγεται πυρήνας (kernel). Ο πυρήνας τρέχει σε προνομιούχο κατάσταση και μόνο αυτός έχει άμεση πρόσβαση στο υλικό. Τα υπόλοιπα προγράμματα ζητούν ό,τι χρειάζονται μέσω κλήσεων συστήματος (system calls): «άνοιξε αρχείο», «στείλε δεδομένα στο δίκτυο», «δώσε μου μνήμη».

Διεργασίες

Πρόγραμμα είναι ένα αρχείο με εντολές, αποθηκευμένο στον δίσκο. Διεργασία (process) είναι ένα πρόγραμμα σε εκτέλεση: οι εντολές του, τα δεδομένα του στη μνήμη, η τιμή του μετρητή προγράμματος, τα αρχεία που έχει ανοίξει. Το ίδιο πρόγραμμα μπορεί να τρέχει ως πολλές διεργασίες ταυτόχρονα.

Μια διεργασία περνά από πέντε καταστάσεις:

ΚατάστασηΤι σημαίνει
Νέαμόλις δημιουργήθηκε
Έτοιμη (ready)έχει ό,τι χρειάζεται και περιμένει σειρά για τον επεξεργαστή
Εκτελούμενη (running)τρέχει τώρα στον επεξεργαστή
Σε αναμονή (waiting)περιμένει κάτι αργό: τον δίσκο, το δίκτυο, ένα πλήκτρο
Τερματισμένητελείωσε, και το λειτουργικό απελευθερώνει τους πόρους της

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

Χρονοπρογραμματισμός

Όταν οι έτοιμες διεργασίες είναι περισσότερες από τους πυρήνες του επεξεργαστή, ο χρονοπρογραμματιστής (scheduler) του λειτουργικού αποφασίζει ποια τρέχει. Δύο κλασικές πολιτικές:

  • Πρώτη έρχεται, πρώτη εξυπηρετείται (FCFS). Κάθε διεργασία τρέχει μέχρι το τέλος. Απλό, αλλά μια μεγάλη διεργασία κρατά όλες τις άλλες να περιμένουν.
  • Εκ περιτροπής (round robin). Κάθε διεργασία τρέχει για ένα μικρό, σταθερό κβάντο χρόνου και μετά πηγαίνει στο τέλος της ουράς. Κανείς δεν περιμένει πολύ για να ξεκινήσει.

Η εναλλαγή από μια διεργασία σε άλλη λέγεται εναλλαγή περιβάλλοντος (context switch): το λειτουργικό σώζει τους καταχωρητές της μίας και φορτώνει της άλλης. Έχει μικρό αλλά πραγματικό κόστος, γι' αυτό το κβάντο δεν γίνεται απεριόριστα μικρό.

Εκ περιτροπής, με κβάντο 2

Τρεις διεργασίες φτάνουν μαζί στη χρονική στιγμή 0: η A θέλει 5 μονάδες χρόνου, η B 2 και η C 3. Η ουρά ξεκινά A, B, C.

ΒήμαΧρόνοςΤρέχειΑπομένει μετάΟυρά μετά
Ζωντανή ενημέρωση

Διαχείριση μνήμης

Κάθε διεργασία βλέπει τη δική της ιδεατή μνήμη (virtual memory): ένα συνεχές φάσμα διευθύνσεων που ξεκινά από το 00, σαν να ήταν μόνη της. Το λειτουργικό, με τη βοήθεια του υλικού, αντιστοιχίζει αυτές τις διευθύνσεις σε πραγματικές θέσεις της RAM.

Ο συνηθισμένος τρόπος είναι η σελιδοποίηση (paging). Η ιδεατή μνήμη χωρίζεται σε σελίδες ίσου μεγέθους, συνήθως 44 KB, και η RAM σε πλαίσια του ίδιου μεγέθους. Ένας πίνακας σελίδων λέει σε ποιο πλαίσιο βρίσκεται κάθε σελίδα. Οι σελίδες μιας διεργασίας δεν χρειάζεται να είναι συνεχόμενες στη RAM, και δύο διεργασίες δεν μπορούν να δουν η μία τις σελίδες της άλλης.

Όταν η RAM γεμίσει, το λειτουργικό μπορεί να μεταφέρει σελίδες που δεν χρησιμοποιούνται στον δίσκο, στον χώρο εναλλαγής (swap). Αυτό επιτρέπει να τρέχουν προγράμματα που δεν χωρούν στη RAM, αλλά ο δίσκος είναι χιλιάδες φορές πιο αργός. Αν οι σελίδες πηγαινοέρχονται συνεχώς, ο υπολογιστής σχεδόν «παγώνει».

Σύστημα αρχείων και δικαιώματα

Το σύστημα αρχείων οργανώνει τον δίσκο σε δέντρο: φάκελοι (κατάλογοι) μέσα σε φακέλους, και αρχεία στα φύλλα. Κάθε αρχείο βρίσκεται με μια διαδρομή (path).

WindowsLinux, macOS, Android
Απόλυτη διαδρομήC:\Users\maria\ergasia.odt/home/maria/ergasia.odt
Διαχωριστικόανάποδη κάθετοςκάθετος

Μια σχετική διαδρομή ξεκινά από τον τρέχοντα φάκελο. Το .. σημαίνει «ο γονικός φάκελος».

Σε ένα σύστημα με πολλούς χρήστες, κάθε αρχείο έχει δικαιώματα (permissions). Στα συστήματα τύπου Unix, για τρεις κατηγορίες χρηστών, τον ιδιοκτήτη, την ομάδα του και όλους τους άλλους, ορίζονται τρία δικαιώματα: ανάγνωση r (read), εγγραφή w (write), εκτέλεση x (execute).

ΓραφήΙδιοκτήτηςΟμάδαΆλλοιΟκταδικά
rwxr-xr-xrwxr-xr-x755
rw-r--r--rw-r--r--644
rw-------rw-------600

Στην οκταδική γραφή κάθε ψηφίο είναι άθροισμα: r=4r = 4, w=2w = 2, x=1x = 1. Έτσι rwx είναι 4+2+1=74 + 2 + 1 = 7 και r-x είναι 4+1=54 + 1 = 5.

Λυμένα παραδείγματα

Παράδειγμα 1

Τρεις διεργασίες φτάνουν μαζί: P1 θέλει 44 μονάδες χρόνου, P2 θέλει 11, P3 θέλει 22. Με εκ περιτροπής και κβάντο 11, πότε τελειώνει η καθεμία;

Δοκίμασέ το πρώτα. Μετά δες τη λύση.

Παράδειγμα 2

Ένα αρχείο έχει δικαιώματα 750750. Γράψε τα σε μορφή rwx και εξήγησε ποιος μπορεί να κάνει τι.

Δοκίμασέ το πρώτα. Μετά δες τη λύση.

Παράδειγμα 3

Με σελίδες των 40964096 bytes, σε ποια σελίδα βρίσκεται η ιδεατή διεύθυνση 82008200; Αν ο πίνακας σελίδων αντιστοιχίζει αυτή τη σελίδα στο πλαίσιο 55, ποια είναι η φυσική διεύθυνση;

Δοκίμασέ το πρώτα. Μετά δες τη λύση.

Παράδειγμα 4

Βρίσκεσαι στον φάκελο /home/maria/school/fysiki. Γράψε σχετική διαδρομή προς το αρχείο /home/maria/school/pliroforiki/ergasia.txt.

Δοκίμασέ το πρώτα. Μετά δες τη λύση.

Ασκήσεις

Πρώτα ερωτήσεις με επιλογές: διαλέγεις, πατάς «Έλεγξε» και μαθαίνεις αμέσως αν το βρήκες και γιατί. Στο τέλος, λίγες ασκήσεις χωρίς επιλογές — εκεί κρύβεται μόνο η απάντηση.

Πολλαπλή επιλογήΆσκηση 1 από 14
Ποιος είναι ο βασικός ρόλος ενός λειτουργικού συστήματος;

Τα κατάφερες;

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

Λύσε τις ασκήσεις πιο πάνω και θα δεις εδώ πού στέκεσαι.