Λειτουργικά Συστήµατα UNIX Ιστορία του UNIX 1940-50 υπολογιστές για ένα άτοµο και µία εργασία για κάθε χρονική περίοδο επικράτηση batch systems 1960 ερευνητικά συστήµατα διαµοιρασµού χρόνου Dartmouth College: βασισµένο σε BASIC MIT: CTSS 1
Multics CTSS Multics (MIT, Bell Labs, GE) Το Multics απέτυχε λόγω καθυστερήσεων και υποβέλτιστης απόδοσης. Τα Bell Labs αποσύρθηκαν από το πρόγραµµα Multics. Μια οµάδα ερευνητών συνέχισε την έρευνα για ένα ΛΣ δυνατότητες αντίστοιχες του Multics UNIX O Ken Thompson γράφει το 1969 µια περιορισµένη έκδοση του Multics σε assembler, το οποίο ονοµάστηκε UNICS. Σχεδιάζεται από τους Thompson, Ritchie, Canaday το σύστηµα αρχείων, του οποίου η βασική φιλοσοφία χρησιµοποιείται µέχρι σήµερα. 2
UNIX & C 1971: O Thompson σχεδιάζει τη γλώσσα B. 1973: O Dennis Ritchie σχεδιάζει τη γλώσσα C (διάδοχος της Β). Το Unix ξαναγράφεται σε C. Η γλώσσα C παραµένει ως σήµερα η καταλληλότερη γλώσσα για προγραµµατισµό συστήµατος. Ιστορία του UNIX Το Unix σε C µεταφέρεται σε άλλες πλατφόρµες. Πανεπιστήµια παίρνουν τον κώδικα και αναπτύσσουν αυτόνοµα το σύστηµα και άλλα προγράµµατα. Το Berkeley δηµιουργεί σηµαντικές επεκτάσεις και βελτιώσεις στην έκδοση του Unix (virtual memory, paging, TCP/IP δικτύωση, vi, csh, κτλ). 3
Πρότυπο UNIX Στα 1980 υπάρχουν δύο διαφορετικές και αρκετά ασύµβατες εκδόσεις (BSD και System V). Επιπλέον κάθε εταιρεία που ανέπτυσσε Unix τροποποιούσε κατά ασύµβατο τρόπο βασικές συµπεριφορές. Το πρότυπο POSIX επιχειρεί να ενοποιήσει τις συµπεριφορές των Unix. Τωρινή Κατάσταση Απόγονοι BSD (FreeBSD, NetBSD, OpenBSD). Απόγονοι System V (Sun Solaris, IBM AIX, ) Linux 4
Επισκόπηση To Unix είναι ένα διαλογικό (interactive) σύστηµα διαµοιρασµού χρόνου (timesharing). Η φιλοσοφία των προγραµµάτων του είναι να εκτελούν µία εργασία και να την εκτελούν καλά. Ο συνδυασµός των επιµέρους προγραµµάτων παρέχει ισχύ και ευελιξία. ιασυνδέσεις Χρήστες Βασικά βοηθητικά προγράµµατα (φλοιοι, κειµενογράφοι, κλπ.) Βασική βιβλιοθήκη (open, close, read, write, fork.) Λειτουργικό σύστηµα Unix (διαχείριση διεργασιών, µνήµης, σύστηµα αρχείων, είσοδος/έξοδος, κ.α.) Υλικό (CPU, µνήµη, δίσκοι, τερµατικά, κ.α.) 5
Πειραµατισµός Στα εργαστήρια Sun Στο σπίτι (Linux, FreeBSD, cygwin) Για σύνδεση από Windows σε Unix χρησιµοποιείτε ssh (putty, SecureCRT, κτλ). Βασικές Εντολές more: εµφανίζει περιεχόµενα αρχείου κατά οθόνες man: εµφανίζει οδηγίες χρήσης ls: εµφανίζει ονόµατα αρχείων mv: µετονοµάζει αρχεία cp: αντιγράφει αρχεία rm: διαγράφει αρχεία passwd: αλλάζει την κωδική λέξη (password) cat: εµφανίζει τα περιεχόµενα αρχείου 6
Εντολές και ορίσµατα Οι περισσότερες εντολές παίρνουν ορίσµατα, π.χ.: ls -l: εµφανίζει τα ονόµατα αρχείων µε ηµεροµηνίες, µεγέθη κ.α. cp src dst: δηµιουργεί αντίγραφο του αρχείου src µε όνοµα dst. rm i: διαγράφει το αρχείο µετά από επιβεβαίωση Για διακοπή εκτέλεσης εντολών Control-C Παράδειγµα εντολής look word Eξάγει λέξεις που ξεκινούν από word, π.χ. $ look air air airborne aircraft airdrop airedale... Η look γράφει στην προκαθορισµένη έξοδο (οθόνη), σύνηθες για όλα τα προγράµµατα 7
Επιπλέον Χρήσιµες Εντολές wc: µετράει γραµµές, λέξεις και χαρακτήρες grep: εξάγει γραµµές κειµένου που να περιέχουν κάποια γραµµατοσειρά sort: ταξινοµεί touch: αλλάζει την ώρα µεταβολής ενός αρχείου vi: κειµενογράφος emacs: άλλος κειµενογράφος pine: πρόγραµµα για e-mail Φλοιός (shell) Ο φλοιός είναι ο διερµηνευτής (interpreter) των γραµµών εντολών. Οι εντολές µπορεί να είναι εγγενείς (του φλοιού) (π.χ. cd) ή αυτόνοµα προγράµµατα (cp, ls). Κοινοί φλοιοί: tcsh (csh), bash (sh) 8
Wildcards Προσδιορισµός πολλών αρχείων µε κοινά στοιχεία ονόµατος: ls * ls *.c ls *.* ls 2003* ls a? Για την εισαγωγή ειδικών χαρακτήρων χρησιµοποιείται \ touch a\*b Ανακατεύθυνση/Σωλήνωση look word > wordfile εγγραφή σε κενό αρχείο look air >> wordfile εγγραφή στο τέλος του αρχείου sort < wordfile > wordfile2 είσοδος από άλλο αρχείο look air grep e σωλήνωση της εξόδου στην προκαθορισµένη είσοδο άλλου προγράµµατος 9
Παραδείγµατα grep foo t*.c sort head 20 tail 5 > bar από τα αρχεία που αρχίζουν µε t και τελειώνουν σε.c, εξάγονται οι γραµµές που περιέχουν τη γραµµατοσειρά foo. ταξινοµούνται επιλέγονται οι 20 πρώτες επιλέγονται οι 5 τελευταίες (δηλαδή 16-20) εγγράφονται στο αρχείο bar Παραδείγµατα wc l < in > out & καταµετρά τις γραµµές του αρχείου in και γράφει το αποτέλεσµα στο αρχείο out. η παραπάνω εντολή εκτελείται στο παρασκήνιο (&). Ο φλοιός είναι έτοιµος να δεχθεί και να εκτελέσει την επόµενη εντολή αµέσως µετά το <Return>. 10
Αρχεία και κατάλογοι / usr home etc bin bill jim mail work Στα ονόµατα αρχείων και καταλόγων λαµβάνεται υπόψη το αν τα γράµµατα είναι κεφαλαία ή µικρά. ικαιώµατα αρχείων Σε κάθε αρχείο αντιστοιχούν δικαιώµατα που καθορίζονται από 9 bits (rwxrwxrwx). Τα τρία πρώτα αναφέρονται στα δικαιώµατα του ιδιοκτήτη (user). Τα τρία µεσαία αναφέρονται στα δικαιόµατα της οµάδας (group). Τα τρία τελευταία αναφέρονται στα δικαιώµατα των υπολοίπων (other). 11
ικαιώµατα αρχείων To bit r δίνει δικαίωµα ανάγνωσης, το bit w δικαίωµα εγγραφής και το bit x δικαίωµα εκτέλεσης. Π.χ. ένα αρχείο µε δικαιώµατα rw-r--r-- µπορεί να διαβαστεί από όλους, αλλά να εγγραφεί µόνο από τον ιδιοκτήτη του. Τα bits µπορούν να τεθούν και σε οκταδικό π.χ rw-r--r-- είναι 640. Μπορούν να τεθούν και ανεξάρτητα π.χ chmod u+x foo ο ιδιοκτήτης αποκτά δικαίωµα εκτέλεσης του αρχείου foo. Ονόµατα καταλόγων Το όνοµα του καταλόγου δείχνει την τοποθεσία κάποιου αρχείου. απόλυτο όταν ξεκινά από τη ρίζα (π.χ. /usr/bin) σχετικό όταν ξεκινά από τον τρέχοντα κατάλογο (π.χ../mail/current) Ειδικά ονόµατα καταλόγων. τρέχων κατάλογος.. γονέας κατάλογος ~ οικείος κατάλογος ~jim οικείος κατάλογος του χρήστη jim 12
Παραδείγµατα καταλόγων /home/users/paskalis/mail ~paskalis/mail../mail όταν ο τρέχων κατάλογος είναι ~paskalis/work 13