Menu
ΠΡΟΗΓ. ΚΕΦ.   ΕΠΟΜΕΝΟ ΚΕΦ.
Menu and Table of Contents

Εισαγωγή στα Λειτουργικά Συστήματα και το Unix

Τι είναι Λειτουργικό Σύστημα - Σκοποί και Λειτουργίες

Λειτουργικό Σύστημα είναι ένα πρόγραμμα (ή συλλογή προγραμμάτων) το οποίο ελέγχει και διαχειρίζεται το υλικό μιας υπολογιστικής μηχανής. Ως υπολογιστική μηχανή συνήθως εννοούμε έναν προσωπικό υπολογιστή και αναφερόμαστε σε αυτόν συνήθως με την ονομασία Personal Computer (PC) ή Ηλεκτρονικός Υπολογιστής (H/Y). Στην πραγματικότητα, όμως, οι υπολογιστικές μηχανές είναι πολλές περισσότερες από τη στενή έννοια ενός Η/Υ. Τα τελευταία χρόνια έχουν κατακλείσει την αγορά μηχανές όπως οι ταμπλέτες (tablets) οι οποίες δεν θεωρούνται Η/Υ με την στενή έννοια, αλλά έχουν όλες τις ιδιότητες (και τις ικανότητες πολλές φορές) ενός προσωπικού υπολογιστή. Επίσης, τα «έξυπνα» κινητά τηλέφωνα (smart phones) μοιάζουν πλέον περισσότερο με Η/Υ παρά με τηλέφωνο, όπως ήταν στην αρχή της χιλιετίας. Τα δυο προηγούμενα είναι ενδεικτικά παραδείγματα υπολογιστικής μηχανής που ελέγχεται από κάποιο Λειτουργικό Σύστημα. Όλοι πλέον γνωρίζουν το Android, Windows Mobile, Symbian, τα οποία είναι Λειτουργικά Συστήματα για κινητές συσκευές. Σπανίως, όμως, μας έρχεται στο μυαλό ότι υπολογιστικές μηχανές είναι και οι DVD-Video Players, τηλεοράσεις, σταθερά τηλέφωνα, ηλεκτρονικά θερμόμετρα, εκτυπωτές κ.ά. Οι παραπάνω συσκευές έχουν εξειδικευμένα Λειτουργικά Συστήματα με τη βοήθεια των οποίων μπορούμε να τις διαχειριζόμαστε και να τις χρησιμοποιούμε. Επίσης, Λειτουργικά Συστήματα υπάρχουν και σε λιγότερο καθημερινής χρήσης συσκευές όπως ιατρικά μηχανήματα, βιομηχανικά ρομπότ, οι ηλεκτρονικοί «εγκέφαλοι» των αυτοκινήτων κ.ο.κ.

Σύμφωνα με τον ορισμό που δίνεται στην έννοια Λειτουργικό Σύστημα στην wikipedia.org [1]: Λειτουργικό Σύστημα είναι ένα λογισμικό το οποίο ελέγχει τους πόρους (υλικού και λογισμικού) ενός υπολογιστή, καθώς επίσης παρέχει κοινές υπηρεσίες προς τα προγράμματα υπολογιστών. Το λειτουργικό σύστημα είναι ένα βασικό συστατικό του λογισμικού του συστήματος σε ένα σύστημα υπολογιστή. Τα προγράμματα εφαρμογών συνήθως απαιτούν την ύπαρξη ενός Λειτουργικού Συστήματος για να λειτουργήσουν.

Με απλά λόγια, ένα Λειτουργικό Σύστημα έχει ουσιαστικά δυο βασικές αρμοδιότητες:

  1. Κάνει διαχείριση των πόρων του υλικού του υπολογιστή (ή γενικά της υπολογιστικής μηχανής) όπως των συσκευών Εισόδου-Εξόδου (πληκτρολόγιο, ποντίκι, οθόνη, κάρτα δικτύου κτλ.) και των συσκευών μνήμης (RAM, δίσκοι κτλ).
  2. Κάνει διαχείριση των διεργασιών που εκτελούνται αναλαμβάνοντας τις παρακάτω ενέργειες:
 

Κατηγορίες Λειτουργικών Συστημάτων

Υπάρχουν διάφορες κατηγοριοποιήσεις Λειτουργικών Συστημάτων. Σημαντικότερες είναι οι παρακάτω:

Multi-tasking Operating System Single-tasking Operating System Λειτουργικό Σύστημα Πολλαπλών Εργασιών Λειτουργικό Σύστημα Μονής Εργασίας

Πολλαπλών Εργασιών (Multi-Tasking) και  Μονών Εργασιών (Single-Tasking) Λειτουργικά Συστήματα

Εάν ένα Λειτουργικό Σύστημα επιτρέπει την παράλληλη εκτέλεση πολλών προγραμμάτων (tasks), τότε ονομάζεται Πολλαπλών Εργασιών. Εάν επιτρέπεται η εκτέλεση μόνο ενός προγράμματος κάθε φορά, τότε ονομάζεται Μονής Εργασίας. Εδώ, πρέπει να επισημάνουμε πως για την παράλληλη εκτέλεση προγραμμάτων δεν είναι απαραίτητο να διαθέτει το υλικό του υπολογιστή πολλούς επεξεργαστές, ούτε πολλούς πυρήνες επεξεργαστών. Τα Πολλαπλών Εργασιών Λειτουργικά Συστήματα καταφέρνουν να εκτελούν ψευδο-παράλληλα πολλές διεργασίες (ή εργασίες) σε έναν μόνο επεξεργαστή. Αυτό επιτυγχάνεται με την εναλλαγή των διεργασιών στον επεξεργαστή - κάθε λίγο χρόνο παύει η εκτέλεση μιας διεργασίας και εκτελείται η επόμενη. Για το πώς επιτυγχάνεται αυτό, υπάρχουν δυο βασικές πολιτικές, οι οποίες ορίζουν και τις αντίστοιχες κατηγορίες Λειτουργικών Συστημάτων:

Pre-emptive Operating System Co-operative Operating System Multi-user Operating System Single-user Operating System Λειτουργικό Σύστημα Πολλαπλών Χρηστών Λειτουργικό Σύστημα Μονού Χρήστη

Πολλαπλών χρηστών (multi-user) και μονού χρήστη (single-user) Λειτουργικά Συστήματα

Τα Λειτουργικά Συστήματα που είναι πολλαπλών χρηστών επιτρέπουν τη χρήση του υπολογιστή από πολλούς χρήστες συγχρόνως. Τέτοια παραδείγματα είναι όλες  οι παραλλαγές του UNIX (unix-like operating systems) και τα MS-windows μετά τα ΝΤ4 (windows 2000, XP, 7, 8 κ.ά.). Τα μονού χρήστη Λειτουργικά Συστήματα επιτρέπουν τη χρήση του υπολογιστή μόνο από έναν χρήστη. Τέτοια παραδείγματα είναι οι παλαιότερες εκδόσεις των MS windows (windows 3.x, windows 95, windows 97 κ.ά.) καθώς και οι παραλλαγές του DOS (MSDOS,AMSDOS, PCDOS, κ.ά.). Εδώ, πρέπει να σημειώσουμε πως αν ένα Λειτουργικό Σύστημα έχει τη δυνατότητα για ορισμό λογαριασμών πολλών χρηστών (user accounts) δεν είναι υποχρεωτικά Πολλαπλού Χρήστη. Τέτοιο παράδειγμα είναι τα windows 97, στα οποία, αν και μπορούν να δημιουργηθούν πολλοί λογαριασμοί χρηστών, μόνο ένας χρήστης μπορεί να χρησιμοποιεί τον υπολογιστή κάθε χρονική στιγμή, δηλαδή δεν μπορούν να εκτελούνται προγράμματα άλλων χρηστών στο παρασκήνιο. Να σημειώσουμε, επίσης, πως, για να είναι ένα Λειτουργικό Σύστημα πολλαπλών χρηστών πρέπει να είναι υποχρεωτικά και Πολλαπλών Εργασιών. Αν ένα Λειτουργικό Σύστημα είναι μονού χρήστη, τότε μπορεί να είναι είτε Πολλαπλών Εργασιών, είτε Μονής Εργασίας. Παράδειγμα τα Windows 95 είναι μονού χρήστη και πολλαπλών εργασιών, ενώ το MSDOS είναι μονού χρήστη και μονής εργασίας. Πλέον, τα περισσότερα μοντέρνα Λειτουργικά Συστήματα είναι και πολλαπλών εργασιών και πολλαπλών χρηστών.

Distributed Operating Systems Κατανεμημένο Λειτουργικό Σύστημα

Κατανεμημένα Λειτουργικά Συστήματα (Distributed Operating Systems)

Ένα κατανεμημένο Λειτουργικό Σύστημα διαχειρίζεται ένα σύνολο από υπολογιστές και δίνει την αίσθηση στους χρήστες ότι πρόκειται για έναν υπολογιστή. Η ανάπτυξη των δικτύων και πλέον του σύννεφου (cloud) έχουν δώσει ώθηση στον Κατανεμημένο Υπολογισμό (Distributed Computing). Όταν ένα σύνολο από υπολογιστές εργάζονται σε συνεργασία τότε λέμε ότι αποτελούν ένα Κατανεμημένο Σύστημα.

Real-Time Operating Systems Λειτουργικά Συστήματα Πραγματικού Χρόνου

Λειτουργικά Συστήματα Πραγματικού Χρόνου (Real-time Operating Systems)

Ένα Λειτουργικό Σύστημα Πραγματικού χρόνου εγγυάται ότι μπορεί να επεξεργαστεί «γεγονότα» (events) ή δεδομένα σε συγκεκριμένο χρόνο. Μπορεί να είναι μονής εργασίας ή πολλαπλών εργασιών. Όταν είναι πολλαπλών εργασιών, τότε απαιτείται η χρήση εξειδικευμένων αλγορίθμων για την εκτέλεση των διεργασιών σε πραγματικό χρόνο. Τέτοιου τύπου Λειτουργικά Συστήματα συναντούμε σε υπολογιστές ή υπολογιστικές μηχανές που χειρίζονται ιατρικά μηχανήματα, εργοστασιακές μονάδες παραγωγής,  έλεγχο αεροπλάνων, έλεγχο αυτοκινήτων κ.τ.λ.

Embedded Operating Systems Ενσωματωμένα Λειτουργικά Συστήματα

Ενσωματωμένα Λειτουργικά Συστήματα (Embedded Operating Systems)

Τα Λειτουργικά Συστήματα που ενσωματώνονται στο υλικό ονομάζονται Ενσωματωμένα (Embedded). Είναι σχεδιασμένα ειδικά για την κάθε μηχανή και προτιμώνται σε μικρές μηχανές (π.χ. PDAs), επειδή λειτουργούν με περιορισμένο αριθμό πόρων καθώς και για συστήματα πραγματικού χρόνου. Παραδείγματα αυτής της κατηγορίας είναι:

Πολλοί θεωρούν ότι τα Λειτουργικά Συστήματα για έξυπνα κινητά τηλέφωνα (smart phones) και ταμπλέτες (tablets) αποτελούν ξεχωριστή κατηγορία: Λειτουργικά Συστήματα Κινητών (Mobile Operating Systems). Στην πραγματικότητα όμως πρόκειται για ενσωματωμένα Λειτουργικά Συστήματα.

Multics Unics PDP-7 Ken Thompson Dennis Ritchie MD McIlroy JF Ossanna MULTICS Unics (UNiplexed Information and Computing Service)

To Λειτουργικό Σύστημα UNIX

Λίγη Ιστορία

Η ιστορία του Unix ξεκινά περίπου στα μέσα της δεκαετίας του 1960, όταν το Τεχνολογικό Ινστιτούτο Μασαχουσέτης (Μ.Ι.Τ.), η AT&T, η Bell Labs και η General Electric ανέπτυξαν ένα πειραματικό Λειτουργικό Σύστημα καταμερισμού χρόνου για τον υπολογιστή τύπου mainframe GE-645. Το λειτουργικό αυτό σύστημα ονομάστηκε Multics []. Το Multics εισήγαγε πολλές καινοτομίες αλλά είχε πολλά προβλήματα. Απογοητευμένοι από το μέγεθος και την πολυπλοκότητα του Multics, τα στελέχη της Bell Labs εγκετέλειψαν το έργο. Οι τελευταίοι ερευνητές που εργάζονταν στο MULTICS, οι Ken Thompson, Dennis Ritchie, MD McIlroy και JF Ossanna, αποφάσισαν να ξαναϋλοποιήσουν το Λειτουργικό Σύστημα σε μικρότερη κλίμακα για τον υπολογιστή DPD-7 της DEC. H έκδοση αυτή αργότερα ονομάστηκε Unics (UNiplexed Information and Computing Service) ως ένα λογοπαίγνιο με την προηγούμενη ονομασία Multics (Multiplexed Information and Computer Services). Το νέο λειτουργικό σύστημα ήταν μια μικρότερη έκδοση του Multics και αρχικά κατασκευάστηκε για τη μηχανή PDP-7 [].

PDP-11

Το 1970, το UNIX μεταφέρθηκε σε PDP-11, για να υποστηρίξει το γραφείο ευρεσιτεχνιών των Bell Labs. Ενώ το 1973 ξαναγράφτηκε σε γλώσσα C από τον Dennis Ritchie για να διευκολυνθεί η μεταφερσιμότητά του σε μελλοντικά συστήματα.

BSD System-V

Το UNIX στα μέσα της δεκαετίας 1970 έως τις αρχές της δεκαετίας 1980 έγινε πολύ δημοφιλές «για εκπαιδευτικούς σκοπούς» σε ακαδημαϊκά περιβάλλοντα. Το 1977 το Πανεπιστήμιο Berkeley (California) έδωσε στη δημοσιότητα τις αρχικές εκδόσεις του Berkeley Software Distribution (BSD) UNIX που τελικά κατέστη μια ανεξάρτητη μορφή του Λειτουργικού Συστήματος. Το 1983 τα Bell Labs έδωσαν στη δημοσιότητα το System V που έγινε η σύγχρονη προσωποποίηση του αυθεντικού συστήματος UNIX.

Τα συστήματα UNIX ακόμη και σήμερα είναι ένας συνδυασμός των εκδόσεων System V και BSD και προσπαθούν να ενσωματώσουν τα απαραίτητα χαρακτηριστικά που επιβάλλει η αποδοχή των παραπάνω προτύπων.

Εκδόσεις

Στο Σχήμα 1 παρουσιάζεται σχηματικά η ιστορία των διαφόρων εκδόσεων UNIX. Από το παρακάτω σχήμα οι περισσότεροι (ειδικά οι νεώτεροι) τα μόνα που έχουν ακούσει έστω ονομαστικά είναι το Linux και το Mac OS X. Και όμως, το Linux και το Mac OS X είναι μόνο ένα μικρό τμήμα σε όλο αυτό το τεράστιο δέντρο, το οποίο απ' ότι βλέπουμε έχει τη ρίζα του το 1969 και συνεχίζει να αναπτύσσεται.

H ιστορία του UNIX
Σχήμα 1: H ιστορία του UNIX (πηγή: http://en.wikipedia.org/Unix []).

To Linux

Το Linux, όπως φαίνεται και στο παραπάνω σχήμα (Σχήμα 1) αποτελεί ένα μικρό υποσύνολο στην όλη ιστορία εκδόσεων του UNIX.  Είναι μια παραλλαγή του UNIX ειδικά σχεδιασμένη για την αρχιτεκτονική του PC (όταν δημιουργήθηκε το Linux χρησιμοποιούνταν ο όρος IBM PC ή IBM compatible). Την αρχική έκδοση δημοσιεσε στο Διαδίκτυο ο Linus Torvalds από τη Φιλανδία το 1991. Είναι δωρεάν για χρήση και ο πηγαίος κώδικας είναι διαθέσιμος υπό την προστασία της Free Software Foundation (FSF) GNU Project. Περιέχει όλα τα χαρακτηριστικά του UNIX.

Λόγω της εμπορικής επικράτησης των PC, αναπτύχθηκαν πολλές διανομές Linux. Οι διανομές μεταξύ τους δεν έχουν διαφορές στο ίδιο το Λειτουργικό Σύστημα και τον πυρήνα, αλλά κυρίως στον τρόπο με τον οποίο διαχειρίζεται και εγκαθιστά ο χρήστης προγράμματα και λειτουργίες, όπως επίσης και στον τρόπο με τον οποίο γίνεται η ρύθμιση παραμέτρων (configuration) του Λειτουργικού Συστήματος. Στο παρακάτω σχήμα (Σχήμα 1) φαίνεται σχηματικά η ιστορία ανάπτυξης των διανομών Linux. Οι βασικές διανομές είναι οι:

Όλες οι υπόλοιπες διανομές είναι παραλλαγές (ή εξειδικευμένες διαμορφώσεις) των τριών αυτών διανομών. Για παράδειγμα το Ubuntu, το οποίο είναι αρκετά δημοφιλές στις μέρες μας λόγω της ευκολίας εγκατάστασης, βασίζεται στο debian. Για το Ubuntu υπάρχουν διάφορες παραλλαγές όπως Ubuntu Server, Ubuntu Desktop, KUbuntu, Xubuntu κ.ά. Όλες αυτές οι διανομές διαφέρουν μεταξύ τους μόνο στις αρχικές ρυθμίσεις και στα αρχικά προγράμματα που εγκαθίστανται αυτομάτως. Έχοντας κάνει εγκατάσταση ένα “Ubuntu Server”, μπορούμε στην πορεία κάνοντας εγκατάσταση ή απεγκατάσταση διαφόρων προγραμμάτων και δυνατοτήτων να το μετατρέψουμε ουσιαστικά σε “Ubuntu Desktop”.

H ιστορία του Linux
H ιστορία του Linux (πηγή: http://en.wikipedia.org/Linux []).

Χαρακτηριστικά

Στο φαίνεται η ιεραρχία σε ένα σύστημα UNIX. Ξεκινώντας από κάτω προς τα πάνω, φαίνεται ότι ο πυρήνας είναι το μόνο στοιχείο που επικοινωνεί με το υλικό του υπολογιστή. Οι εφαρμογές επικοινωνούν με τον πυρήνα, και τελικά μόνο μέσω αυτού μπορούν να κάνουν χρήση του υλικού. Οι χρήστες χρησιμοποιούν εφαρμογές οι οποίες προωθούν τις λειτουργίες τους προς τα κάτω. Το κέλυφος είναι στην πραγματικότητα μια εφαρμογή. Η μόνη, αλλά πολύ σημαντική, λειτουργία που έχει το κέλυφος είναι να προωθεί τις εντολές των χρηστών προς τον πυρήνα. Οι εφαρμογές που μπορούν να χρησιμοποιήσουν οι χρήστες μπορεί να είναι είτε γραφικές, δηλαδή να λειτουργούν μέσω του γραφικού περιβάλλοντος (π.χ.: firefox, chrome, openOffice κτλ.), είτε να εκτελούνται μέσα από ένα τερματικό. Το κέλυφος είναι μια εφαρμογή χωρίς γραφική διεπιφάνεια χρήσης και εκτελείται μέσα σε ένα τερματικό.

Ιεραρχία σε ένα Λειτουργικό σύστημα
Σχήμα 1: Ιεραρχία σε ένα Λειτουργικό σύστημα.
Κέλυφος Προτροπή Shell Prompt

Κύκλος διερμήνευσης εντολής κελύφους

Στον παρόντα εργαστηριακό οδηγό θα μελετήσουμε την χρήση του UNIX (Linux) χρησιμοποιώντας την γραμμή εντολών και συγκεκριμένα το κέλυφος bash. Παρακάτω, θα αναφερθούμε αναλυτικά στον τρόπο λειτουργίας του κελύφους. Αυτό που πρέπει να επισημανθεί σε αυτό το σημείο είναι πως το κέλυφος είναι ένα πρόγραμμα το οποίο αναλαμβάνει να διαβάζει τις εντολές του χρήστη και να δίνει τις κατάλληλες πληροφορίες-εντολές στον πυρήνα για εκτέλεση.

  1. Εμφάνιση του prompt (προτροπής). Δηλώνει ότι το κέλυφος είναι έτοιμο να δεχτεί την επόμενη εντολή.
  2. Λήψη και γραμματική ανάλυση της σύνταξης της επόμενης εντολής,
  3. Εκτέλεση της διαδικασίας εισόδου και μετασχηματισμός της εντολής,
  4. Αρχικοποίηση των απαιτούμενων λειτουργιών,
  5. Αναμονή για ολοκλήρωση των λειτουργιών που είναι σε εξέλιξη,
  6. Επιστροφή στο βήμα 1.

Στην ουσία, λοιπόν, το κέλυφος είναι ένα πρόγραμμα που περιμένει τον χρήστη να πληκτρολογήσει μια εντολή. Μόλις ο χρήστης την πληκτρολογήσει, την ερμηνεύει και κάνει τις απαραίτητες ενέργειες για την εκτέλεσή της. Αφού ολοκληρωθεί η εκτέλεση, τότε περιμένει για την επόμενη εντολή.

Βασικές Οντότητες

Σε ένα σύστημα UNIX υπάρχουν κάποιες βασικές έννοιες που πρέπει να μελετήσουμε πριν προχωρήσουμε στην χρήση τους. Αυτές περιληπτικά είναι οι:

Αρχεία

Σε έναν υπολογιστή μια από τις βασικότερες οντότητες είναι τα αρχεία. Αρχείο (υπολογιστή) είναι ένα σύνολο από δεδομένα. Τα δεδομένα αυτά μπορούν να υφίστανται σε διάφορες μορφές, όπως αρχείο κειμένου, αρχείο φωτογραφίας, αρχείο βίντεο, αρχείο που αντιστοιχεί σε πρόγραμμα κ.ά. Επίσης αρχείο είναι και μια συλλογή από άλλα αρχεία. Η συλλογή αυτή ονομάζεται φάκελος ή κατάλογος (folder ή directory). Μάλιστα στο UNIX η έννοια του αρχείου είναι αρκετά διευρυμένη. Ως αρχεία αναπαριστώνται και οι πόροι του υπολογιστή. Έτσι στο UNIX υπάρχουν διάφοροι τύποι αρχείων:

Αρχείο Φάκελος Σύνδεσμος (Αρχείο) Χρήστες Users

Χρήστες και Ομάδες Χρηστών

Χρήστες (Users)

Σε ένα σύστημα UNIX, υπάρχουν πραγματικοί και εικονικοί χρήστες. Με την έννοια του χρήστη είναι ταυτόσημη και η έννοια του λογαριασμού (account). Για κάθε χρήστη υπάρχει και ένας λογαριασμός χρήστη (user account). Σε κάθε λογαριασμό χρήστη αντιστοιχεί ένα όνομα χρήστη (username) και συνήθως και ένας κωδικός (password). Με αυτά τα δυο στοιχεία αυθεντικοποιούνται οι χρήστες που προσπαθούν να χρησιμοποιήσουν (τοπικά ή απομακρυσμένα) τον υπολογιστή. Τους λογαριασμούς χρηστών μπορούμε να τους χωρίσουμε σε 3 κατηγορίες:

  1. Πραγματικοί χρήστες είναι οι λογαριασμοί που αντιστοιχούν σε φυσικά πρόσωπα. Για παράδειγμα για τον χρήστη Αντώνη Σιδηρόπουλο υπάρχει ένας λογαριασμός με το όνομα χρήστη “asidirop”. O “asidirop”, λοιπόν, είναι ένας πραγματικός χρήστης, αφού αντιστοιχεί σε φυσικό πρόσωπο.
  2. Εικονικοί χρήστες είναι οι λογαριασμοί που δεν αντιστοιχούν σε φυσικά πρόσωπα, αλλά δημιουργούνται για την εξυπηρέτηση λειτουργιών του συστήματος και των υπηρεσιών που εκτελούνται σε αυτό. Για παράδειγμα, σε ένα σύστημα UNIX, το οποίο λειτουργεί και ως εξυπηρέτης ηλεκτρονικής αλληλογραφίας (mail server), δημιουργείται ο χρήστης με όνομα “mail”. Σε αυτόν τον χρήστη ανήκουν όλα τα αρχεία που αφορούν την υπηρεσία αλληλογραφίας. Με αυτόν τον τρόπο κανένας πραγματικός χρήστης δεν έχει πρόσβαση στα αρχεία ηλεκτρονικής αλληλογραφίας. Συνεπώς, κανένας χρήστης δεν μπορεί να διαβάσει την αλληλογραφία κάποιου άλλου χρήστη. Συνήθως για τους λογαριασμούς που αντιστοιχούν σε εικονικούς χρήστες δεν ορίζεται κανένας κωδικός πρόσβασης, εφόσον δεν υπάρχει η δυνατότητα σύνδεσης ενός πραγματικού χρήστη με αυτό.
  3. Ο χρήστης root: Συνήθως αναφέρεται ως υπερχρήστης (superuser) ή διαχειριστής (administrator). Ο χρήστης αυτός είναι εικονικός χρήστης και έχει δικαίωμα να κάνει οτιδήποτε στον υπολογιστή. Όλοι οι υπόλοιποι χρήστες δεν έχουν πρόσβαση σε όλα τα τμήματα του συστήματος (αρχεία ή υπηρεσίες), ενώ ο συγκεκριμένος χρήστης έχει πρόσβαση σε οτιδήποτε.
Groups User Groups Ομάδες χρηστών

Ομάδες Χρηστών (groups)

Για τη διευκόλυνση της συνεργατικότητας των χρηστών, εκτός από τους λογαριασμούς χρηστών, υπάρχουν και οι ομάδες χρηστών. Υπάρχουν Εικονικές ή Πραγματικές Ομάδες χρηστών. Και σε αυτήν την περίπτωση υπάρχουν οι Εικονικές Ομάδες για καλύτερη διαχείριση των υπηρεσιών. Παράδειγμα σε ένα σύστημα μπορεί να υπάρχει η ομάδα “printer”. Η ομάδα αυτή έχει πρόσβαση σε υπηρεσίες και αρχεία σχετικά με εκτύπωση. Συνεπώς όλοι οι χρήστες που ανήκουν σε αυτήν την ομάδα θα μπορούν να χειρίζονται τα παραπάνω και επομένως να προσθαφαιρούν εκτυπωτές ή να τους ρυθμίζουν. Από την άλλη οι Πραγματικές ομάδες ομαδοποιούν χρήστες που έχουν κοινά χαρακτηριστικά ή συνεργάζονται. Για παράδειγμα στον server του τμήματος μας*, ένας φοιτητής που εγγράφηκε στο τμήμα το εξάμηνο 2011-12Χ (2011-12 Χειμερινό Εξάμηνο), ανήκει στην ομάδα με όνομα: x1112. Αντίστοιχα, σε μια εταιρία ή οργανισμό, χρήστες που εργάζονται σε κοινές εργασίες θα πρέπει να ανήκουν στις ίδιες ομάδες, ώστε να έχουν πρόσβαση στα αρχεία της ομάδας.

Επίσης, υπάρχουν οι παρακάτω συνθήκες-περιορισμοί:

  1. Ο κάθε χρήστης ανήκει υποχρεωτικά σε μια ομάδα.
  2. Ένας χρήστης μπορεί να ανήκει σε πολλές ομάδες.
  3. Μια ομάδα μπορεί να μην έχει κανέναν χρήστη.

Ομάδες και Χρήστες

Όπως αναφέρθηκε νωρίτερα, κάθε χρήστης χαρακτηρίζεται από το όνομα χρήστη (username), παράδειγμα “asidirop”. Για κάθε όνομα χρήστη αντιστοιχεί ένας μοναδικός αριθμός. Ο αριθμός αυτός αναφέρεται ως user ID ή uid. Αυτός ο αριθμός χρησιμοποιείται εσωτερικά για να αναπαραστήσει τον καθένα χρήστη. Οπουδήποτε χρειάζεται να αποθηκευτεί η πληροφορία χρήστη, αποθηκεύεται αυτός ο αριθμός. Υπάρχει σε ένα αρχείο (στο /etc/passwd) η αντιστοιχία των uid με τα ονόματα χρηστών.

Αντίστοιχα, κάθε ομάδα χαρακτηρίζεται από το όνομα ομάδας (groupname), παράδειγμα “staff”. Για κάθε ομάδα, αντιστοιχεί ένας μοναδικός αριθμός (αναφέρεται ως groupID ή gid). Ο αριθμός αυτός χρησιμοποιείται εσωτερικά για να αναπαραστήσει την καθεμιά ομάδα.

Αν δώσουμε τις παρακάτω εντολές στον server του τμήματος:

dlabs@aetos:~$ id asidirop
uid=1143(asidirop) gid=993(conit) groups=993(conit)
dlabs@aetos:~$ id v13
uid=1113(v13) gid=1024(x9697) groups=1024(x9697),0(root),4(adm),113(chpasswd),121(su),900(spam),2002(eggrafes),2003(ikaros)

Η εντολή id μας εμφανίζει πληροφορίες για το όνομα χρήστη που ορίζουμε. Η εντολή “id asidirop” μας δείχνει ότι ο χρήστης με το όνομα “asidirop” έχει uid ίσο με 1143 και ως κύρια ομάδα την conit με gid ίσο με 993. Ο συγκεκριμένος χρήστης δεν ανήκει σε άλλες ομάδες. Η ίδια εντολή για τον χρήστη v13, μας δίνει ως αποτέλεσμα ότι ο χρήστης v13 έχει uid=1113 και ως κύρια ομάδα την x9697 με gid=1024. Επιπλέον όμως ο χρήστης v13 ανήκει και στις ομάδες root, adm, chpasswd, su, spam, eggrafes, ikaros και βέβαια μας εμφανίζονται και οι αντίστοιχοι αριθμοί ομάδων.

Διεργασίες (Processes)

Διεργασία καλείται ένα πρόγραμμα, όταν βρίσκεται σε εκτέλεση. Διεργασία είναι μια ενεργή οντότητα (σε επίπεδο λογισμικού) η οποία περιλαμβάνει τον κώδικα του προγράμματος, τα δεδομένα του καθώς και την κατάσταση εκτέλεσης, σε ποιο σημείο, δηλαδή, του προγράμματος βρίσκεται η εκτέλεση []. Επίσης έχει και διάφορες ακόμη ιδιότητες τις οποίες θα τις μελετήσουμε στο Κεφάλαιο Χ. Ένα πρόγραμμα μπορεί να εκτελείται πολλές φορές συγχρόνως, οπότε και δημιουργούνται πολλές διεργασίες που προέκυψαν από το ίδιο πρόγραμμα και οι οποίες είναι (συνήθως) ανεξάρτητες μεταξύ τους. Πολλές φορές, αντί του όρου διεργασία (process), χρησιμοποιείται ο όρος εργασία (task). Χαρακτηριστικό παράδειγμα είναι ο TaskManager των Windows (Σχήμα 1). Προφανώς, υπάρχει πλήθος αντίστοιχων εφαρμογών για UNIX με περισσότερο διαδεδομένη την εντολή “top” (Σχήμα 1), η οποία έχει τη δυνατότητα να εκτελείται σε τερματικό χωρίς να απαιτείται γραφικό περιβάλλον.

O TaskManager των Windows
Σχήμα 1: O TaskManager των Windows.
Η εντολή top του UNIX
Σχήμα 1: Η εντολή top του UNIX.

Πώς να εργαστείτε για την υλοποίηση των ασκήσεων

Υπάρχουν πάρα πολλές επιλογές σε σχέση με τον τρόπο με τον οποίο μπορείτε να εξασκηθείτε:

Αναφορές