Μάθημα 4: Λειτουργικά Συστήματα & Δίκτυα
4. Λογισμικό (Software)
Το λογισμικό αποτελεί το σύνολο των προγραμμάτων που καθοδηγούν τη λειτουργία της μηχανής και επιτρέπουν στον χρήστη να αλληλεπιδρά με αυτήν.
Σε αντίθεση με το υλικό (hardware), που είναι τα φυσικά μέρη του υπολογιστή, το λογισμικό είναι άυλο και καθορίζει τι κάνει ο υπολογιστής και πώς το κάνει.
Το λογισμικό διακρίνεται σε δύο κύριες κατηγορίες:
1. Λογισμικό Συστήματος (System Software), το οποίο διαχειρίζεται τους πόρους του υπολογιστή και εξασφαλίζει την επικοινωνία με το χρήστη.
2. Λογισμικό Εφαρμογών (Application Software), το οποίο εκτελεί συγκεκριμένες λειτουργίες προς όφελος του τελικού χρήστη.
4.1 Λειτουργικά Συστήματα (Operating Systems)
Το Λειτουργικό Σύστημα (ΛΣ) είναι το βασικότερο κομμάτι του λογισμικού συστήματος.
Αποτελεί το ενδιάμεσο στρώμα μεταξύ χρήστη και υλικού, συντονίζοντας όλες τις δραστηριότητες που πραγματοποιούνται μέσα στη μηχανή.
Ο ρόλος του είναι να διαχειρίζεται την εκτέλεση των προγραμμάτων, να επιβλέπει τη χρήση των πόρων, να εξασφαλίζει την ομαλή λειτουργία και να προσφέρει ασφάλεια.
4.2 Δραστηριότητες Λειτουργικού Συστήματος
Ένα λειτουργικό σύστημα επιτελεί πλήθος δραστηριοτήτων, όπως:
1. Παροχή υπηρεσιών αλληλεπίδρασης ανθρώπου–μηχανής.
2. Εκκίνηση και δρομολόγηση προγραμμάτων.
3. Έλεγχος και επίβλεψη εκτέλεσης προγραμμάτων.
4. Διαχείριση αποθήκευσης δεδομένων και μνήμης.
5. Εξασφάλιση ασφάλειας και σωστής λειτουργίας του συστήματος.
Με άλλα λόγια, το λειτουργικό σύστημα είναι ο συντονιστής όλων των ενεργειών μέσα στον υπολογιστή.
4.3 Η Εξέλιξη των Λειτουργικών Συστημάτων
4.3.1 Συστήματα ενός επεξεργαστή
Στα πρώτα συστήματα, υπήρχε μόνο ένας επεξεργαστής και η εκτέλεση γινόταν κατά δέσμες (batch processing), χωρίς καμία αλληλεπίδραση με τον χρήστη.
Τα προγράμματα και τα δεδομένα δίνονταν στον υπολογιστή από έναν υπεύθυνο συστήματος (computer operator), και οι εργασίες εκτελούνταν με σειρά προτεραιότητας (FIFO).
Με την εξέλιξη, εμφανίστηκε η διαλογική επεξεργασία (interactive processing), όπου ο χρήστης μπορούσε να αλληλεπιδρά με το σύστημα.
Η επόμενη πρόοδος ήταν η επεξεργασία πραγματικού χρόνου (real-time), όπου η απόκριση του υπολογιστή έπρεπε να είναι άμεση.
Τέλος, η τεχνική καταμερισμού χρόνου (time-sharing) επέτρεψε τη χρήση μιας μηχανής από πολλούς χρήστες ταυτόχρονα, εισάγοντας την έννοια του multitasking.
4.3.2 Συστήματα πολλών επεξεργαστών
Με την ανάπτυξη των υπολογιστικών αναγκών, δημιουργήθηκαν συστήματα με πολλούς επεξεργαστές (multiprocessor systems), επιτρέποντας την ταυτόχρονη εκτέλεση πολλών διεργασιών.
Αυτά τα συστήματα αντιμετωπίζουν ζητήματα όπως:
Ισορροπία φόρτου (load balancing), ώστε οι επεξεργαστές να χρησιμοποιούνται αποδοτικά.
Κλιμάκωση (scaling), δηλαδή η διαίρεση μιας εργασίας σε μικρότερες υποεργασίες που κατανέμονται στους διαθέσιμους επεξεργαστές.
4.4 Κατηγορίες Λογισμικού
Το λογισμικό διακρίνεται σε δύο μεγάλες κατηγορίες:
1. Λογισμικό Εφαρμογών (Application Software):
Περιλαμβάνει προγράμματα που εκτελούν συγκεκριμένες εργασίες, όπως επεξεργασία κειμένου (Word), λογιστικά φύλλα (Excel), βάσεις δεδομένων (Access), παιχνίδια κ.ά.
2. Λογισμικό Συστήματος (System Software):
Ενσωματώνει το λειτουργικό σύστημα και τα εργαλεία που επιτρέπουν την επικοινωνία με το υλικό, όπως τα utilities (π.χ. antivirus, file management tools).
Παραδείγματα λειτουργικών συστημάτων: MS-DOS, Windows, MacOS, UNIX, Linux.
Στην πράξη, υπάρχει συχνά επικάλυψη μεταξύ των κατηγοριών, καθώς ορισμένα προγράμματα έχουν μικτά χαρακτηριστικά.
4.5 Η Δομή ενός Λειτουργικού Συστήματος
Ένα λειτουργικό σύστημα αποτελείται από δύο κύρια μέρη: το κέλυφος (Shell) και τον πυρήνα (Kernel).
4.5.1 Το Κέλυφος (Shell)
Το Shell είναι η διεπαφή (interface) μεταξύ χρήστη και λειτουργικού συστήματος.
Σήμερα, τα περισσότερα συστήματα διαθέτουν γραφικό περιβάλλον (GUI), όμως διατηρείται και η δυνατότητα χειρισμού μέσω γραμμής εντολών (command line).
Σε λειτουργικά τύπου UNIX υπάρχουν πολλαπλά κελύφη (Bourne, C, Korn shell).
Το Shell περιλαμβάνει τον Διαχειριστή Παραθύρων (Window Manager) που επιτρέπει την παραθυρική οργάνωση του περιβάλλοντος εργασίας.
4.5.2 Ο Πυρήνας (Kernel)
Ο Kernel είναι ο πυρήνας του λειτουργικού συστήματος και συντονίζει όλες τις κρίσιμες λειτουργίες:
1. Διαχείριση Αρχείων (File Manager): Οργάνωση, αποθήκευση, εύρεση και διαχείριση αρχείων.
2. Οδηγοί Συσκευών (Device Drivers): Επιτρέπουν στο ΛΣ να επικοινωνεί με συσκευές όπως εκτυπωτές και πληκτρολόγια.
3. Διαχείριση Μνήμης (Memory Manager): Συντονίζει τη χρήση της κύριας και της εικονικής μνήμης.
4. Χρονοπρογραμματιστής (Scheduler): Καθορίζει ποια διεργασία θα εκτελεστεί επόμενη.
5. Διαχειριστής Εκτέλεσης (Dispatcher): Διαχειρίζεται την εναλλαγή διεργασιών και τον καταμερισμό του χρόνου CPU.
4.6 Η Διαδικασία Εκκίνησης (Booting Process)
Κατά την ενεργοποίηση του υπολογιστή, εκτελείται το πρόγραμμα εκκίνησης (bootstrap program) που βρίσκεται στη ROM.
Αυτό το πρόγραμμα φορτώνει το λειτουργικό σύστημα από τον δίσκο στη μνήμη και του παραδίδει τον έλεγχο.
Η διαδικασία αυτή ονομάζεται booting και αποτελεί την αφετηρία λειτουργίας κάθε υπολογιστή.
4.7 Συντονισμός Ενεργειών – Processes
Η εκτέλεση ενός προγράμματος δημιουργεί μια διεργασία (process) — μια δυναμική, μεταβαλλόμενη οντότητα που περιλαμβάνει τον μετρητή προγράμματος, τους καταχωρητές και τα δεδομένα στη μνήμη.
Ο scheduler τηρεί τον πίνακα διεργασιών (process table) και καθορίζει ποια διεργασία θα εκτελεστεί, ενώ ο dispatcher φροντίζει να εκτελεστεί πράγματι.
Η τεχνική time-sharing διασφαλίζει ότι κάθε process έχει ίσο χρόνο εκτέλεσης μέσω context switching, δημιουργώντας την ψευδαίσθηση της ταυτόχρονης εκτέλεσης (multitasking).
4.8 Επικοινωνία και Ανταγωνισμός Μεταξύ Processes
Η επικοινωνία μεταξύ διεργασιών (inter-process communication) είναι απαραίτητη για τον συντονισμό των ενεργειών του συστήματος.
Το πιο χαρακτηριστικό παράδειγμα είναι το μοντέλο Client–Server, όπου ένας server (π.χ. File Manager) εξυπηρετεί αιτήματα από άλλα processes.
Ωστόσο, όταν δύο διεργασίες διεκδικούν τους ίδιους πόρους, μπορεί να δημιουργηθεί αδιέξοδο (deadlock).
Για την αποφυγή του χρησιμοποιούνται τεχνικές όπως το spooling (π.χ. στη χρήση εκτυπωτή).
4.9 Δίκτυα Υπολογιστών
Η ανάγκη διαμοιρασμού πόρων και πληροφορίας οδήγησε στη δημιουργία δικτύων υπολογιστών.
Τα λειτουργικά συστήματα προσαρμόστηκαν για να υποστηρίζουν δικτυακές λειτουργίες και επικοινωνία.
4.9.1 Κατηγορίες Δικτύων
1. LAN (Τοπικά Δίκτυα) – περιορισμένα γεωγραφικά.
2. MAN (Μητροπολιτικά Δίκτυα) – μεγαλύτερης έκτασης.
3. WAN (Ευρείας Περιοχής) – π.χ. το Internet.
Υπάρχουν Ανοιχτά (Open) και Κλειστά (Proprietary) δίκτυα, ανάλογα με τον ιδιοκτήτη και τη διαχείριση.
4.9.2 Τοπολογίες Δικτύων
Οι πιο συνηθισμένες μορφές τοπολογίας είναι:
Αρτηρίας (Bus)
Δακτυλίου (Ring)
Αστέρα (Star)
Ακανόνιστη (Irregular)
4.10 Το Διαδίκτυο (Internet) και ο Παγκόσμιος Ιστός (WWW)
Το Internet είναι το “δίκτυο των δικτύων” και δημιουργήθηκε το 1973 στο πλαίσιο του προγράμματος DARPA.
Αποτελείται από domains που αναγνωρίζονται μέσω IP διευθύνσεων (π.χ. 195.168.109.115) και ονόματα τομέων (domain names) όπως uniwa.gr.
Η διαχείριση των ονομάτων γίνεται από το ICANN, και οι servers που τηρούν αυτά τα δεδομένα ονομάζονται Name Servers.
Ο Παγκόσμιος Ιστός (World Wide Web) επιτρέπει την πρόσβαση σε υπερκείμενα (hypertexts) που περιέχουν κείμενο, εικόνα, ήχο και βίντεο.
Οι σελίδες (Web pages) συνδέονται με links, ενώ κάθε πόρος αναγνωρίζεται από ένα URL (Uniform Resource Locator).
4.11 Επίπεδα Λογισμικού του Internet και Μεταφορά Δεδομένων
Το Internet βασίζεται σε πολυεπίπεδη αρχιτεκτονική (μοντέλο OSI), με 7 επίπεδα.
Ωστόσο, στην πράξη χρησιμοποιούνται 4 κύρια επίπεδα:
1. Εφαρμογής (Application)
2. Μεταφοράς (Transport)
3. Δικτύου (Network)
4. Σύνδεσης (Link)
Η αποστολή ενός μηνύματος μέσω Internet περιλαμβάνει τη διάσπασή του σε πακέτα, την αποστολή του μέσω ενδιάμεσων σταθμών και τη σύνθεσή του στον προορισμό.
Η διαδικασία αυτή θυμίζει τη μεταφορά ενός φυσικού δέματος μέσω ενδιάμεσων σημείων (όπως μια μεταφορική εταιρεία).