ΛειτουργικάΣυστήµατα”ιαλέξεις... · UNIX O Ken Thompson...

Post on 20-Jun-2020

12 views 0 download

Transcript of ΛειτουργικάΣυστήµατα”ιαλέξεις... · UNIX O Ken Thompson...

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

Unix/Linux

Ιστορία του UNIX

1940-50: υπολογιστές για ένα άτοµο καιµία εργασία για κάθε χρονική περίοδο �

επικράτηση batch systems

1960: ερευνητικά συστήµαταδιαµοιρασµού χρόνου

Dartmouth College: βασισµένο σε BASIC

MIT: CTSS

Multics

CTSS � Multics (MIT, Bell Labs, GE)

Τα Bell Labs αποσύρθηκαν από τοπρόγραµµα Multics.

Μια οµάδα ερευνητών συνέχισε την έρευναγια ένα ΛΣ µε δυνατότητες αντίστοιχες τουMultics

UNIX

O Ken Thompson γράφει το 1969 µιαπεριορισµένη έκδοση του Multics σεassembler, το οποίο ονοµάστηκεUNICS.

Σχεδιάζεται από τους Thompson, Ritchie, Canaday το σύστηµα αρχείων, του οποίου η βασική φιλοσοφίαχρησιµοποιείται µέχρι σήµερα.

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, κτλ).

Πρότυπο UNIX

Στη δεκαετία του 1980 υπάρχουν δύοδιαφορετικές και αρκετά ασύµβατεςεκδόσεις (BSD και System V).

Επιπλέον, κάθε εταιρεία που ανέπτυσσεUnix τροποποιούσε κατά ασύµβατοτρόπο βασικές συµπεριφορές.

Το πρότυπο POSIX επιχειρεί ναενοποιήσει τις συµπεριφορές των Unix.

Τωρινή Κατάσταση

Απόγονοι BSD (FreeBSD, NetBSD, OpenBSD).

Απόγονοι System V (Sun Solaris, IBM AIX,…)

Linux

http://cm.bell-labs.com/cm/cs/who/dmr/hist.html

Επισκόπηση

To Unix είναι ένα διαλογικό (interactive) σύστηµα διαµοιρασµού χρόνου (timesharing).

Η φιλοσοφία των προγραµµάτων του είναι ναεκτελούν µία εργασία και να την εκτελούνκαλά.

Ο συνδυασµός των επιµέρους προγραµµάτωνπαρέχει ισχύ και ευελιξία.

Πειραµατισµός

Στα εργαστήρια Linux

Στο σπίτι (Linux, FreeBSD, cygwin)

Για σύνδεση από Windows σε Unix χρησιµοποιείτε ssh (putty, SecureCRT, κτλ).

Πώς βάζω Linux

Format όλο το σύστηµα

2nd partition, dual-boot

Virtual Machine (π.χ. virtualbox)

Σύστηµα αρχείων

root directory /current directory ./parent directory ../absolute – relative pathsfiles – linksdevices

Λογαριασµός χρήστη

Όνοµα χρήστη και password∆ιαθέσιµο shell (µόλις πιστοποιηθεί)File permissions (user, groups, other)Home (initial) directory

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

Πολλαπλοί ταυτόχρονοι χρήστες

multi-tasking, concurrent processes, time-sharing

Μηχανισµοί ασφαλείας

Μονολιθική δοµή: kernel, shell, προγράµµατα

System calls: διάδραση µε kernel µέσωεντολών σε C

∆υνατότητες scripting: προγραµµατισµόςφλοιού

Βασικές Εντολές 1/2

• more/less : εµφανίζει περιεχόµενα αρχείουκατά οθόνες

• man: εµφανίζει οδηγίες χρήσης

• ls : εµφανίζει ονόµατα αρχείων

• mv : µετονοµάζει αρχεία

• cp : αντιγράφει αρχεία

• rm : διαγράφει αρχεία

• passwd : αλλάζει την κωδική λέξη (password)

• cat : εµφανίζει τα περιεχόµενα αρχείου

Βασικές Εντολές 2/2

• mkdir : δηµιουργεί νέο φάκελο (directory)

• rmdir : διαγράφει (κενό) directory

• cat : εµφανίζει περιεχόµενο αρχείου

• vi(m ) : text editor (τερµατικού)

• ps : εµφανίζει διεργασίες

Εντολές και ορίσµατα

ls (-a -l -r -R)

Οι περισσότερες εντολές παίρνουνορίσµατα, π.χ.:

ls -l: εµφανίζει τα ονόµατα αρχείων µεηµεροµηνίες, µεγέθη κ.α.

cp src dst: δηµιουργεί αντίγραφο τουαρχείου src µε όνοµα dst.

rm –i: διαγράφει το αρχείο µετά απόεπιβεβαίωση

Εντολή ls

ls (-a -l -r -R)

Κέλυφος (shell)

Το κέλυφος είναι ο διερµηνευτής (interpreter) των γραµµών εντολών.

Οι εντολές µπορεί να είναι εγγενείς (τουκελύφους) (π.χ. cd ) ή αυτόνοµαπρογράµµατα (cp , ls ).

Κοινοί φλοιοί: tcsh (csh), bash (sh)Αρχεία που «εκτελούνται» στην αρχή:

• .bashrc (για bash)

• .cshrc (για tcsh)

∆ικαιώµατα πρόσβασης

Κάθε αρχείο/φάκελος ανήκει στον χρήστη(user) που το δηµιούργησε

Κάθε χρήστης ανοίκει σε τουλάχιστον µίαοµάδα (group)

Τα δικαιώµατα των αρχείων εµφανίζονται µε10 χαρακτήρες

- rwx r-x r-xuser group others

1ος χαρακτήρας – (αρχείο) ή d (directory)

3 οµάδες δικαιωµάτων (read/write/execute)

Κανόνες δικαιωµάτων

αναφορά ή µετακίνηση στοdirectory (χωρίςδυνατότητα ονοµάτων)

εκτέλεση αρχείουx

προσθήκη ή διαγραφήαρχείων από το directory

µεταβολή ήδιαγραφή αρχείου

w

διάβασµα περιεχοµένου στοσυγκεκριµένο directory

διάβασµα ήαντιγραφή αρχείου

r

directoryαρχείο

Εντολές pwd, cd, mkdir, rmdir

Εντολές cp (-i, -r), mv (-i), rm (-i, -r, -f)

-i: interactive mode (ρωτάει πριν τηνενέργεια)

-r: recursive mode (να µπει και σεdirectories για cp, rm

-f: force mode (σε αµφιβολία δενρωτάει)

το ‘-i` έχει προτεραιότητα έναντι του `-f`

Εντολές more, cat

Text Editors

vi/vim2 τρόποι λειτουργίας: εντολές και επεξεργασία

από επεξεργασία σε εντολές: ESC

από εντολές σε επεξεργασία: ‘i` (a, o, O,...)

emacs/xemacs

pico/nano

gedit, kedit, kate, glade, ...

Εντολές επεξεργασίας αρχείων 1/2

• chmod : αλλάζει δικαιώµατα• chown : αλλάζει ιδιοκτήτη αρχείου• more : εµφάνιση αρχείου ανά οθόνη/σελίδα• less : όπως το more αλλά µε δυνατότητα

εµφάνισης προηγούµενης σελίδας• wc : στατιστικά για λέξεις σε αρχείο• sort : ταξινοµεί το περιεχόµενο• grep : αναζήτηση συγκεκριµένου string• ln : δηµιουργεί links (hard/soft)

Εντολές επεξεργασίας αρχείων 2/2

• cut : εµφανίζει κοµµάτι του αρχείου

• cmp : συγκρίνει δύο αρχεία

• diff : εµφανίζει διαφορές δύο αρχείων

• head : εµφανίζει τις πρώτες γραµµές αρχείου

• tail : εµφανίζει τις τελευταίες γραµµές αρχείου

• touch : αλλάζει χρονοσήµαντρο αρχείου

• αν δεν υπάρχει το αρχείο, δηµιουργείται νέο κενό

• grep : αναζήτηση συγκεκριµένου string

• ln : δηµιουργεί links (hard/soft)

Wildcards

Προσδιορισµός πολλών αρχείων µε κοινάστοιχεία ονόµατος:– ls *

– ls *.c

– ls *.*

– ls 2003*

– ls a?

Για την εισαγωγή ειδικών χαρακτήρωνχρησιµοποιείται ‘\’– touch a\*b

Βοήθεια - Manual

man εντολή: βοήθεια για την εντολήπ.χ. man grep

info εντολή: βοήθεια για την εντολή σεπρογράµµατα GNU

π.χ. info gcc

google

π.χ. http://www.google.com/search?q=grep

∆ιεργασίες

ps : αναφορά υπαρχόντων διεργασιώνπ.χ. ps aux , ps -ef

top : συνεχής ενηµέρωση κατάστασης διεργασιών

kill -<num> <pid> : παράδοση σήµατος

<num> στο <pid>

Ctrl-C: SIGTERM στο τρέχοντα pid.

Ctrl-Z: SIGSTOP στο τρέχοντα pid.

bg: τοποθέτηση ανασταλείσας διεργασίας στο

παρασκήνιο

fg : επαναφορά τρέχουσας διεργασίας στο

παρασκήνιο

Ανάπτυξη Προγραµµάτων

cc, gcc : C compilers

gcc test.c (∆ηµιουργία a.out)

gcc –c test.c (∆ηµιουργία test.o)

gcc -o test test.c

make: «∆ηµιουργεί» το εκτελέσιµο

make (Προϋποθέτει την ύπαρξη Makefile)

make –f Makefile.unix

Makefile

project1: data.o main.o io.occ data.o main.o io.o -o project1

data.o: data.c data.hcc -c data.c

main.o: data.h io.h main.ccc –c main.c

io.o: io.h io.ccc -c io.c

Makefile Tutorial: http://www.eng.hawaii.edu/Tutor/Make/