To PM kai h filosofða tou

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "To PM kai h filosofða tou"

Transcript

1 To PM kai h filosofða tou Nikìlaoc Qristìpouloc nereus@fre .gr Ekdosh 0.3 Ajăna, 28 AprilÐou 2004 Perieqìmena 1 To peribĺllon tou logismikoô Η νέα συ ογική ανάπτυξη To prìblhma tou ădh grammènou kÿdika Ι/Ο Η είσοδο τη εξόδου Νεκρή φύση Συµπεράσµατα Ena eniaðo interface 4 4 En arqă ătan h SB Το ιεραρχικό σύστηµα των αρχείων Πω έγινε όµω αυτό H idèa Τα modulec ανεξάρτητα από το PM Teqnikèc anĺptuxhc tou PM Σύνδεση αρχείου και κώδικα Εξέ ιξη σε module VFS Εκτό του VFS PMFS Ενα έτοιµο εικονικό σύστηµα αρχείων Arqèc tou PM ογική σχεδίαση Ενιαίο interface Οµαδοποίηση στο PM Ενιαίο τρόπο µεταφορά δεδοµένων ιαχείριση modulec Αυτόµατη συµπ ήρωση συναρτήσεων των modulec Etoima paradeðgmata vfstest Συνοδευτικά παραδείγµατα εφαρµογέ Συνοδευτικά παραδείγµατα modulec

2 1 TO PERIB ALLON TOU LOGISMIKO U 2 9 JewrhtikĹ paradeðgmata Ενα client που ειτουργεί σαν σύστηµα αρχείων Ενα παντοδύναµο εργα είο µε ίγο κώδικα PerÐlhyh To PM eðnai èna sôsthma pou sqedðasa gia na lôsei sugkekrimèna problămata, ìpwc ton eniaðo trìpo epikoinwnðac ìlwn twn suskeuÿn allĺ kai diĺforwn bibliojhkÿn me to desktop peribĺllon tou arm0nia project. Eqei ìmwc polô megalôterec proektĺseic. To jewrÿ idiaðtera aplì, allĺ dustuqÿc o perissìteroc kìsmoc adunateð na to katalĺbei, kai edÿ èrqetai autì to èggrafo pou skopì èqei na exhgăsei autì to perðergo sôsthma pwc leitourgeð kai poiec eðnai oi dunatìthtèc tou. To PM ektìc apì èna uposôsthma, mporeð na qrhsimopoihjeð wc jewrhtikì prìtupo gia eniaðo interface, kajÿc epðshc kai gia uposôsthma tôpou OLE/CORBA k.a. 1 To peribĺllon tou logismikoô Εµεί οι προγραµµατιστέ γνωρίζουµε πο ύ κα ά την πο υπ οκότητα των πραγµάτων. Εχουµε να κάνουµε µε ένα χαοτικό περιβά ον στο οποίο εκατοµµύρια γραµµέ κώδικα, εκατοµµύρια εντο έ, ταξινοµηµένε συνήθω σε βιβ ιοθήκε, που α η επιδρούν και συνδυάζονται για να παράγουν το τε ικό έργο, είτε αυτό είναι µια εφαρµογή, είτε ένα ο όκ ηρο.σ. µε ό α τα συνοδευτικά αυτού. Υπάρχουν αστρονοµικά µεγέθη κώδικα, γραµµένα από διάφορου προγραµµατιστέ ανά τον κόσµο, για ένα επίση µεγά ο εύρο θεµάτων 1. Μια επίσκεψη στο sourceforge ή στο codeguru ή στο simtel και α ού, θα σα πείσει παρά το ότι είναι ένα µικρό µέρο του κώδικα που κυκ οφορεί στο internet! Μέσα σ αυτό το codespace 2 βρίσκουµε συχνά ύσει τι οποίε χρειαζόµαστε ή θα ήταν χρήσιµο ή θα ήταν όµορφο ή θα ήταν έξυπνο ή θα ήταν βο ικό για το µέ ον να τι προσθέσουµε. ύσει έτοιµε και δοκιµασµένε, ύσει που τι συντηρούν και αναπτύσσουν ά οι, ύσει που εκτοξεύουν την ίδια την ανάπτυξη του ογισµικού στα ύψη µέσω τη συ ογική πια εργασία. 1.1 H nèa sullogikă anĺptuxh Στο O Kajedrikìc kai to PazĹri ο Raymond προσπάθησε να εξηγήσει την δύναµη τη συ ογική εργασία από µια πα αβή[bazaar, 10 π.19], τυπική αµερικάνικη ( 1950) οπτική γωνία, δη αδή, ανύπαρκτη ή προπαγανδισµένη κοινικοπο ιτική φι οσοφία. Οπω και να έχει αυτό το έργο είναι σηµαντικό από πο έ π ευρέ και έχει ενδιαφέρουσε απόψει το σηµαντικότερο ό ων είναι ότι είναι ο οκ ηρωµένο και ο αναγνώστη που δεν έχει επαφή µε το open/free source µπορεί να αντι ηφθεί την επανάσταση στην ανάπτυξη του ογισµικού που συντε έστηκε τι τε ευταίε δεκαετίε 3 καθώ επίση και την δύναµη τη συ ογική εργασία που είναι γνωστή στο ευρύ κοινό σήµερα, µε το όνοµα Linux. Βάση αυτών, οιπόν, β έποµαι ότι υπάρχει ήδη υποδοµή, προσπάθειε α ά και µεγά ο έργο φτιαγµένο για να ειτουργεί για το σύνο ο, δη αδή για εµά. Οι περισσότεροι τη free source κοινότητα είναι ιδεο όγοι και βασίζουν τι κινήσει αυτέ στην ηθική, έτσι αποκα ούν του εκάστοτε προγραµµατιστέ που συνεισφέρουν ω εθε οντέ. Εδώ όµω θα διαφωνήσω διότι β έπω τον κώδικα διαφορετικά, τον β έπω σαν αντα αγή απόψεων 4 ή/και εργασία. Η αντα αγή των απόψεων είναι και η ρίζα τη ανάπτυξη τη επιστήµη και τη 1 Na jumðsw to prìgramma pou èggrafe poiămata :) 2 Enac prìqeiroc dikìc mou orismìc, antðstoiqoc tou dataspace, gia na dhlÿsw to sônolo tou kÿdika, public domain, open/free source allĺ kai kleidwmènou me kĺpoio nomikì trìpo, pou upĺrqei sto internet. 3 To open source arqðzei epðshma me to TEX apì ìso xèrw... 4 O kÿdikac eðnai èkfrash ìpwc ta majhmatikĺ kai o lìgoc kai ìsoi diafwnoôn s autì eðnai giatð den eðnai programmatistèc parĺ mìno kat ìnoma.

3 2 TO PR OBLHMA TOU HDH GRAMM ENOU K WDIKA 3 φι οσοφία 5. Η αντα αγή δεν προ ποθέτει την θέ ηση χωρί αντά αγµα που απαιτεί ο εθε οντισµό για αυτό και περιµένω να µεγα ώσει ακόµα περισσότερο ο π ηθυσµό τη κοινότητα. Το free/open source είναι περισσότερο µια επιστηµονική κο εκτίβα παρά ένα φι ανθρωπικό ίδρυ- µα. Βοηθώντα ένα έργο που χρησιµοποιούµε, βοηθάµε τον εαυτό µα διότι το έργο αυτό, θα το χρησιµοποιήσουµε και στο µέ ον. Η ανάπτυξη ενό τέτοιου έργου είναι και δικό µα θέµα αφού βασίζουµε µέρο τη εργασία µα επάνω του. Περισσότερα για την σκ ηροπυρηνική ιδεο ογία του eleôjerou logismikoô θα βρείτε στι σε ίδε τη GNU, ενώ για την µετριοπαθή ιδεο ογία του logismikoô anoiktoô kÿdika, στι σε ίδε του OSI. Μια περιγραφή και για τα δύο από το Ε ΕΤ[Ε ΕΤ-Γ4], όχι και τόσο επτοµερεί, α ά χρήσιµη για του άσχετου. 2 To prìblhma tou ădh grammènou kÿdika Συµβαίνει η κάθε οµάδα ανάπτυξη ενό έργου να διαµορφώνει την επικοινωνία µε ά ο κώδικα ανά- ογα µε τι ανάγκε τη και συµβαίνει αυτή η επικοινωνία να είναι κάθε φορά διαφορετική από έργο σε έργο, ακόµα και όταν αναφέρεται στο ίδιο θέµα. Αυτό είναι φυσικό να συµβαίνει διότι η συ ογική εργασία παραµένει σε επίπεδο έργου και όχι συνό ου πράγµα έτσι και α ιώ πο ύ δύσκο ο. Αυτό όµω έχει σαν αποτέ εσµα, να αναγκάζει του προγραµµατιστέ να αποφεύγουν συχνά την χρήση τέτοιων έργων διότι: 1. Απαιτεί από αυτού να δώσουν χρόνο για την εκµάθηση του διαφορετικού interface. 2. Συχνά δεν ταιριάζει το interface µε την δοµή του ήδη υπάρχων κώδικα. 3. Είναι αναγκασµένοι να γράψουν ειδικό κώδικα για την υποστήριξη του καθενό µε αποτέ εσµα, εκτό από κουραστικό και χρονοβόρο, να είναι και ανασφα έ διότι ο κώδικα όσο πιο περίπ οκο είναι τόσο πιο πιθανό είναι να κάνει σφά µατα. 2.1 I/O Το κάθε πρόγραµµα χαρακτηρίζεται από την είσοδο και την έξοδο. Ω είσοδο ονοµάζουµε το σύστηµα εισαγωγή στοιχείων, όπου αυτό µπορεί να είναι µια συσκευή όπω το ποντίκι ή τα αποτε έσµατα κάποια επεξεργασία όπω ένα αρχείο, ή και ά α. Αντίστοιχα και η έξοδο είναι τα αποτε έσµατα του προγράµµατο τα οποία µπορεί να είναι ένα αρχείο, κάποια ή κάποιε γραφικέ παραστάσει στην οθόνη και πάει έγοντα. Στην σηµερινή κατάσταση τα συστήµατα εισόδου/εξόδου κατά κανόνα απαιτούν από υτα διαφορετικό τρόπο χειρισµού από το πρόγραµµα. Οταν για παράδειγµα σχεδιάζουµε ένα διάγραµµα στην οθόνη, χρειάζεται να γράψουµε και νέο διαφορετικό κώδικα για να το εκτυπώσουµε ή να το πάρουµε σε µορφή αρχείου. 2.2 H eðsodoc thc exìdou Τα πράγµατα γίνονται ιδιαίτερα πο ύπ οκα όταν θέ ουµε να επεξεργαστούµε τα αποτε έσµατα µια εφαρµογή, καθώ επίση και τα αποτε έσµατα τη δική µα εργασία να είναι δυνατό να επεξεργαστούν από ά ε εφαρµογέ. 5 Dhladă na perimènoume na pollaplasiasteð se ekplhktikì bajmì to ădh terĺstio codespace.

4 3 ENA ENIA IO INTERFACE 4 Κατά κανόνα, η επικοινωνία των προγραµµάτων γίνετε µέσω αρχείων, ενώ χρειάζεται ειδικό χειρισµό για την επικοινωνία τη κάθε εφαρµογή. Για παράδειγµα για ένα διανυσµατικό σχέδιο, είµαστε αναγκασµένοι να χρησιµοποιήσουµε διάφορε µορφέ αρχείων που χρησιµοποιούνται από τα προγράµµατα CAD, και αν θέ ουµε να κάνουµε κα ή δου ειά θα πρέπει να υποστηρίζουµε 2-3 του άχιστον τέτοιε µορφέ. 2.3 Nekră fôsh Τα αρχεία, εκτό των ά ων, είναι νεκρή φύση. εν κάνουν υπο ογισµού, δεν συµπεριφέρονται ανά ογα µε τι ανάγκε µα, α ά είναι στατικά, νεκρά κατά κάποιο τρόπο. Αυτό περιορίζει κατά πο ύ τι δυνατότητε εισόδου/εξόδου. Για παράδειγµα δεν µπορεί από ένα αρχείο διανυσµατικών γραφικών να του ζητήσει να µετατραπεί σε ά η ανά υση (χρήσιµο για επεξεργασία σε bitmap) ή σε ά ο σύστηµα αξόνων (+ψ επάνω ή κάτω), πρέπει να το κάνει στο πρόγραµµά σου. Αυτό είναι µια τυπική διεργασία - ρουτίνα που φαντάζοµαι πο οί από εµά την κάνουν βό τα από πρόγραµµα σε πρόγραµµα, αν και ογικό είναι να γίνετε σε ένα µέρο, επειδή η δοµή των στοιχείων διαφέρει αναγκαζόµαστε να αντιγράφουµε και να διορθώνουµε αυτή την ρουτίνα. εν θα γινόταν όµω αυτό αν µπορούσαµε από την είσοδο να ζητήσουµε το πω θέ ουµε τα στοιχεία. 2.4 SumperĹsmata Αυτά ακριβώ περιορίζουν στο ε άχιστο την δοκιµή (και χρήση) ενδιαφέρον έργων µε αποτέ εσµα τον περιορισµό τη τοπική και συνο ική ανάπτυξη του ογισµικού σε παγκόσµιο επίπεδο. η αδή µα δυσκο εύει να δοκιµάσουµε και να χρησιµοποιήσουµε έτοιµε ύσει, και αν αυτά τα προβ ήµατα διορθωθούν είµαι σίγουρο θα έχουµε εκτίναξη τη ανάπτυξη ογισµικού, εµπορικού και µη, σε παγκόσµιο επίπεδο. Θα δούµε ό α αυτά πω ύνονται και πω προωθούνται σε µια τε είω διαφορετική ογική χρήση και ανάπτυξη. Θα ασχο ηθούµε όµω σχεδόν αποκ ειστικά µε το εγόµενο VFS, δη αδή το εικονικό σύστηµα αρχείων, διότι είναι το πιο σηµαντικό α ά και το πιο απ ό τµήµα του PM. 3 Ena eniaðo interface Τα προβ ήµατα αυτά τα έχω νιώσει στο πετσί µου από την εποχή προ του DOS. Οσο όµω πέρναγε ο καιρό, και όσο µεγά ωνε η αθ ίοτητα του Windows API[CrqAPI] µε ανάγκασε πο έ φορέ να φτιάχνω C modules που ουσιαστικά δεν έκαναν τίποτα ά ο από το να προσφέρουν ένα ενιαίο interface ανάµεσα ίδιου θέµατο βιβ ιοθήκε ή τµήµατα του API! Στο arm0nia project βρέθηκα να είµαι σε θέση που έπρεπε να συνδέσω εκατοντάδε βιβ ιοθήκε γνωστέ και µη, τµήµατα κώδικα γνωστά και µη καθώ και την διασύνδεση ό ων αυτών µεταξύ του. Αυτό πίστευα, και επιµένω ότι πρέπει να γίνει και σε πο ύ µεγά ο βαθµό το PM τα κατάφερε. εν µε ενδιέφερε και τόσο το arm0nia αυτό διότι είχα και έχω περιορισµένο χρόνο κυρίω όγο τη εργασία µου και τη SB. Α ά το είδο του προβ ήµατο ήταν που µου κέντρισε το ενδιαφέρον.

5 4 EN ARQ H HTAN H SB 5 Output A Input Application Output B Input B Output C Input C Η ό η κατάσταση έµοιαζε µε το παραπάνω σχήµα. Τα προγράµµατα ήταν φτιαγµένα όπω το application τη εικόνα, δη αδή είχαν φτιαχτεί για µια συγκεκριµένη µορφή είσοδο ή για συγκεκριµένων µορφών σύνδεση µε βιβ ιοθήκε 6. Αυτό οιπόν που χρειαζόταν ήταν τα πάντα να οµι ούν την ίδια γ ώσσα, να έχουν δη αδή την ίδια υποδοχή σύµφωνα µε το σχεδιάγραµµα. i Το ενιαίο interface για τα πάντα είναι η βασική αρχή του PM. Είναι η αρχή όπου ξεδιπ ώνεται γύρω τη το υπό οιπο σύστηµα. Ω δια µαγεία, οιπόν, ό α τα προβ ήµατα θα υνόντουσαν αν υπήρχε κοινή υποδοχή καθώ επίση και η έξοδο ήταν όπω η είσοδο. Και αν για κάποιο όγο δεν µπορούσαµε να είχαµε κοινή είσοδο ένα τέτοιο πρόγραµµα που θα ανα άµβανε να έχει µια γνωστή έξοδο θα κά υπτε αυτό το κενό ώστε να έχουµε το ενιαίο τρόπο επικοινωνία. Ω δια µαγεία, οιπόν, ό α όσα δεν υνόντουσαν µε αυτό θα µπορούσαν να υθούν µε επιπ έον κώδικα. Στο PM η είσοδο και η έξοδο είναι σχεδόν πάντα κώδικα, δη αδή ζωντανό, ευµετάβ ητο πράγµα. Και αν κατά περίπτωση δεν τύχει, µπορεί να γίνει. 4 En arqă ătan h SB Ανάµεσα στα ά α, έχω φτιάξει και µια BASIC, την SmallBASIC (για συντοµία SB). Η SB έχει µεγά η σηµασία για το PM, διότι είναι ο σχεδιαστικά πρόγονό του. Η SB είναι ένα ιδιόµορφο έργο πρέπει να παρέχει την µέγιστη ευκο ία στον χρήστη µια και απευθύνεται εκτό των ά ων σε παιδιά, πρέπει επίση να ειτουργεί κάτω από διαφορετικά ειτουργικά συστήµατα όπω PalmOS, Linux, Windows κ. π. Ο α αυτά σηµαίνουν ότι έπρεπε η SB να προσφέρει ένα ενιαίο περιβά ον για µεγά ο αριθµό διαφορετικών πραγµάτων α ά και ταχύτατη ειτουργία διότι ειδικά στα Palms η ταχύτητα καθώ και οι δυνατότητέ του είναι ενοχ ητικά περιορισµένε. 6 Sto sqediĺgramma deðqnoume mìno thn eðsodo kai èxodo allĺ to Ðdio sumbaðnei kai me tic diĺforec bibliojăkec.

6 4 EN ARQ H HTAN H SB 6 Για να καταφέρω αυτά, πήγα πίσω στι πρώτε εκδόσει του Unix α ά και στο DOS (και CP/M) και αναρωτήθηκα γιατί δεν επιβ ήθηκε µια όµορφη σχεδιαστική δυνατότητα. Και στα δύο αυτά.σ. η σειριακή πόρτα ειτουργεί όµοια µε την κονσό α και τα δύο ειτουργούν µε εντο έ file I/O. Ναι, έχουν ένα ενιαίο interface, έστω και πρόχειρα φτιαγµένο. 1 fp_console = fopen("con:", "wt"); // Anoigma device consolas 2 fp_serial = fopen("com1:", "wt"); // Anoigma serial port fprintf(fp_console, "Hello, world!"); // typwma sto monitor 5 fprintf(fp_serial, "Hello, world!"); // apostolh mesw serial Πιστεύοντα ότι σχεδόν ό α τα δεδοµένα µπορούν να οργανωθούν έτσι ώστε να διαχειρίζονται µε file I/O εντο έ, α ά και επειδή είχα ήδη αποκτήσει αναγκαστικά εµπειρία σε τέτοια θέµατα, αντί να προσθέτω εντο έ στην SB για κάθε driver, ά αξα τον κάθε driver να συµπεριφέρεται σαν filesystem. Ετσι σήµερα στην SB, µε τι τέσσερι εντο έ OPEN, INPUT#, PRINT# και CLOSE που χρησι- µοποιούνται για το κ ασσικό file I/O, µπορούν οι χρήστε να κάνουν τα εξή 1. Να χειρίζονται τα αρχεία του δίσκου του. 2. Να στέ νουν και να παίρνουν δεδοµένα µέσω σειριακή. 3. Να γράφουν και να διαβάζουν PDOC αρχεία (PalmOS database compressed documents). 4. Να γράφουν και να διαβάζουν memos από το memo database. 5. Να γράφουν και να διαβάζουν µέσω telnet protocol, δη αδή να επικοινωνούν µε τι περισσότερε υπηρεσίε του internet (POP3, SMTP, HTTP κ.α.) Η SB συνέβα ε βέβαια παραπάνω στο PM, διότι ο κώδικα για τα πρώτα δυναµικά modules καθώ και ά α, είναι αντιγραφή του αντίστοιχου κώδικα τη SB. 4.1 To ierarqikì sôsthma twn arqeðwn Το ιεραρχικό σύστηµα των αρχείων είναι µια κ ασσική και πάµπο α διαδεδοµένη δοµή που µπορεί να εκφράσει σύνθετε δοµέ δεδοµένων. εν νοµίζω ότι υπάρχει κάποιο που δεν µπορεί να περιγράψει την δοµή των δεδοµένων όπω ακριβώ σε ένα RDBMS. Οι σχέσει των στοιχείων καθώ και τα ευρετήρια, µπορούν να εκφραστούν µε πιο σύνθετου τρόπου α ά πάντα στα π αίσια του συστήµατο αρχείων καθώ επίση και οι ειτουργίε µέσω κώδικα. Για παράδειγµα τα συνδεδεµένα προγράµµατα (το #! στο Unix και η επέκταση στα Windows) και οι συνδέσει (links στο Unix). Πέρα από αυτά, οι διαδικασίε που χρειάζονται για να γίνει η ανάγνωση ή εγγραφή των στοιχείων, είτε έχουµε αρχείο, είτε socket, είτε database, είτε δυναµική ίστα, κ. π. είναι πάντα η ίδια. Α άζουν µόνο οι εντο έ ανάγνωση και εγγραφή. Τυπικό ψευδοκώδικα που εκφράζει µια τυπική διεργασία µε ανάγνωση και εγγραφή. 1 Păgaine sthn arqă twn stoiqeðwn 2 Efìson den teleðwsan ta stoiqeða 3 anĺgnwsh stoiqeðwn 4 epexergasða 5 eggrafă stoiqeðwn sthn èxodo 6 păgaine sto epìmeno stoiqeðo

7 4 EN ARQ H HTAN H SB 7 Είτε είναι δυναµική ίστα, είτε database, είτε αρχείο κειµένου, πο έ φορέ και socket κ. π. αυτό ο ψευδοκώδικα εκφράζει κάτι που έχουµε βαρεθεί να το επανα αµβάνουµε. Η SB (και το PM κατ επέκταση) δεν υπόσχεται ότι δεν θα το γράψουµε, υπόσχεται όµω ότι έτσι θα γίνετε και µε τι ίδιε εντο έ για οποιοδήποτε θέµα. INPUT# για την ανάγνωση, PRINT# για την εγγραφή. Οι χρήστε τη SB είναι ευχαριστηµένοι µε την χρήση αυτών αντί να µαθαίνουν τι idiìthtec και τι mejìdouc του εκάστοτε class. 4.2 Pwc ègine ìmwc autì? Εχω το ε άττωµα να ατρεύω τα function-pointers, στην SB όµω τέτοια υ οποίηση ήταν δύσκο ο όγω των πο απ ών code segments που απαιτούσε το PalmOS. Ετσι αυτό υ οποιήθηκε µε τον π έον απ ό τρόπο, τον οποίο και θα δούµε αν θέ ουµε να κατα άβουµε αργότερα το ιδιαίτερα σύνθετο PM. Η εντο ή OPEN παίρνει παράµετρο το όνοµα του αρχείου για άνοιγµα. Στην BASIC, αντίθετα από την C, αυτή η εντο ή παίρνει ω παράµετρο και το file-handle. Οταν ο χρήστη, πέραν του συνηθισµένου sustămatoc arqeðwn, θέ ει να χρησιµοποιήσει κάποιον από του προκαθορισµένου οδηγού που προσφέρονται µε την SB, χρειάζεται αυτό να το δη ώσει στο ìnoma arqeðou. Ετσι χρησιµοποιώντα το σύµβο ο : διαχωρίζει το όνοµα του οδηγού και τι παραµέτρου του. Για παράδειγµα το onoma arqe iou myfile.txt σηµαίνει ένα απ ό αρχείο, το ìnoma arqeðou COM1:9600 σηµαίνει ότι η SB να χρησιµοποιήσει τον οδηγό τη σειριακή πόρτα 1 (COM1) αντί για το κ ασσικό sôsthma arqeðwn, στην ταχύτητα των 9600 BAUDs. 1 handle = 1 2 OPEN "COM1:9600" AS #handle SB source Ετσι το παραπάνω παράδειγµα µεταφράζεται από την SB στο παρακάτω κώδικα. 1 filename = "COM1:9600"; AntikatĹstash thc OPEN 2 drivername = filename.leftof ( : ); // drivername <- "COM1" 3 driverparams = filename.rightof( : ); // driverparams <- "9600" 4 if ( drivername == "COM1" ) { 5 filetable[handle].driverid = SERIAL; // use serial I/O library 6 filetable[handle].serialhandle = serial_open(driverparams); 7 } 8 else { 9 filetable[handle].driverid = DISK; // use file I/O library 10 filetable[handle].fp = fopen(drivername + driverparams); 11 } Το filetable φυ άσσει τα στοιχεία του κάθε file-handle, και ένα από τα στοιχεία αυτά είναι ποια βιβ ιοθήκη θα χρησιµοποιήσει (στο παράδειγµά µα, για serial port ή τυπικό file-system). Αυτή η π ηροφορία καταχωρείτε στο πεδίο driverid όπω είδαµε. Η συνάρτηση serial open µαζί µε την serial write string που θα δούµε παρακάτω, είναι µέρο του driver τη SB, για την διαχείριση τη σειριακή πόρτα. η αδή αυτό ο driver δεν είναι τίποτα ά ο από µια τυπική βιβ ιοθήκη (ή απ ό C module) που περιέχει του άχιστον αυτέ τι δυο συναρτήσει.

8 5 H ID EA 8 1 PRINT #handle; "Hello, world!" SB source Αντίστοιχα και η αποστο ή στοιχείων (PRINT) γίνετε µε το ίδιο τρόπο. AntikatĹstash thc PRINT 1 params = "Hello, world!"; 2 if ( filetable[handle].driverid == SERIAL ) 3 serial_write_string(filetable[handle].serialhandle, params); 4 else 5 fprintf(filetable[handle].fp, "%s", params); Οπω αντι αµβανόµαστε η διαδικασία είναι πο ύ απ ή. Ενα switch ή διαδοχικά if υ οποιούν αυτό το υποσύστηµα. 5 H idèa Οπω είδαµε ο χρήστη τη SB έχει ένα ενιαίο interface για µια π ηθώρα δυνατοτήτων. Τι θα γινόταν άραγε αν προσαρµόζονταν τα πάντα γύρω από δύο - τρία τέτοια interfaces και τι αν η εφαρµογή έπαιρνε παραµετρικά το αντίστοιχο driver αφού ο κώδικα τη θα ήταν ο ίδιο ενώ µόνο η παράµετρο τη εντο ή open() θα ά αζε και τι αν ο ένα driver φόρτωνε τον ά ο Και τι αν ο χρήστη (ή πρόγραµµα - γονιό ) επέ εγε ποιο είναι ο default driver για κάθε ειτουργία Απάντηση... τρε ά πράγµατα, χωρί να α άξει ούτε µια γραµµή κώδικα, τόσο τρε ά που ούτε η φαντασία µα δεν µπορούσε να συ άβει. Αυτό που ονειρευτήκαµε την ενοποίηση τεράστιου όγκου κώδικα. ii Στο PM δεν υπάρχει πια η έννοια του αρχείου, τη εικόνα, database, TCP/IP κ. π. υπάρχει µόνο αυτόνοµο κώδικα που συµπεριφέρεται µε προκαθορισµένο τρόπο. Η εφαρµογή ανοίγει ένα αρχείο όπω κάνει πάντα, µε τι ίδιε εντο έ πάντα, και φυσικά τον ίδιο τρόπο χειρισµού. Το τι κάνει όµω αυτό το αρχείο δεν το ξέρει διότι δεν έχουµε να κάνουµε µε αρχείο α ά κώδικα που συµπεριφέρεται σαν αρχείο. iii Αντίστοιχα µε τα εικονικά αρχεία η εφαρµογή χειρίζεται και ά α πραγµατικά ή εικονικά συστήµατα εισόδου / εξόδου ή επεξεργασία τα οποία παραµένουν άγνωστα στην εφαρµογή α ά µε γνωστό τρόπο διαχείριση αυτών. Μερικά τρε ά παραδείγµατα Ενα filemanager που να στέ νει χωρί να έχει κώδικα για αυτό, δεν τον χρειάζεται, δεν χρειάζεται καν να ξέρει τι είναι socket! Ενα filesystem που να προσθέτει unix attributes σε FAT! Μια εικόνα που να αποθηκεύεται σαν ήχο και το αντίστροφο! Εχετε ποτέ τραβήξει γραµµέ σε ήχο Ενα γραφικό περιβά ον που να ειτουργεί το ίδιο κα ά σε graphics terminals όσο και σε ASCII terminals.

9 6 TEQNIK ES AN APTUXHS TOU PM 9 Μια εφαρµογή που να εµφανίζεται κατά επι ογή σε PDF αρχείο αντί για οθόνη, είτε επειδή ορίστηκε έτσι στην εφαρµογή, είτε επειδή ο χρήστη διά εξε για driver οθόνη το PDF driver! Ο ηµήτρη, είχε πει ότι το PM είναι η αποθέωση του εικονικού, το virtual του virtual. Και είχε δίκιο, διότι το σύστηµα αυτό προσφέρει ένα εικονικό περιβά ον, µε εικονικά ή µη δεδοµένα, από εικονικέ ή µη συσκευέ όπου το ένα µπορεί να βασίζεται στο ά ο. Για παράδειγµα, είναι δυνατό να φτιαχτεί ένα ο όκ ηρο GUI περιβά ον του οποίου η είσοδο και έξοδο καθορίζεται δυναµικά από τον χρήστη, δη αδή να εκτε είται στην µνήµη, και αν και όταν συνδέσουµε ένα module εξόδου όπω η κάρτα γραφικών, ο εκτυπωτή, τερµατικό, βιβ ιοθήκη avi ή pdf να παίρνουµε τα αποτε έσµατα στην οθόνη, εκτυπωτή, σε οθόνη ά ου τερµατικού ή αρχείο. Αντίστοιχα ω είσοδο αυτού του συστήµατο θα µπορούσαµε να έχουµε ένα ά ο πρόγραµµα ή το π ηκτρο όγιο ή το ποντίκι, ή συνδυασµό αυτών. iv εν πρόκειται για κάτι πο ύπ οκο, επανα αµβάνω ότι έχουµε να κάνουµε µε πο ύ απ ό σύστηµα, µε απ έ τεχνικέ, που είναι έτσι σχεδιασµένο ώστε να ενοποιεί µε ικανοποιητικό τρόπο άσχετα µεταξύ του κοµµάτια ογισµικού α ά και να αποτρέπει του περιορισµού τη ίδια τη φύση του κάθε κώδικα. Το αποτέ εσµα αυτού είναι ό ε αυτέ οι δυνατότητε. Εφόσον το ποντίκι (pointing device interface) µπορεί να αντικατασταθεί από κώδικα, η οθόνη (graphics device interface) από κώδικα και το ταχυδροµείο από κώδικα που συµπεριφέρεται σαν σύστηµα αρχείων (virtual file system interface). Εφόσον ό α αυτά µπορούν να γίνουν χωρί να α άξει ούτε µια γραµµή κώδικα, τότε δεν θα έπρεπε να σα παραξενεύουν τα αποτε έσµατα α ά αντίθετα να µα κριτικάρετε για έ ειψη φαντασία. 5.1 Ta modules anexĺrthta apì to PM Το arm0nia project όµω είναι, του άχιστον προ το παρών, ευά ωτο. Σήµερα υπάρχει, αύριο µπορεί και όχι. Το έργο όµω πάνω στι αρχέ του PM έπρεπε και πρέπει να επιζήσει. Ο όγο είναι απ ό. Εµεί θα κάναµε και κάνουµε ήδη µια εργασία. Αυτή η εργασία προσφέρει ένα τυποποιηµένο µοντέ ο ειτουργία για διάφορα πράγµατα η οποία µπορεί να χρησιµοποιηθεί και από τρίτου, και θα πρέπει να γίνει αυτό ή έστω να απαιτηθεί να γίνει αυτό. Το PM οιπόν προσφέρει εκτό του συνο ικού συστήµατο και ένα τρόπο ètsi ÿste anexĺrthtec efarmogèc me to PM na eðnai ikanèc na prosjèsoun ta modules tou PM ston kÿdikĺ touc qwrðc na qreiĺzontai to Ðdio to PM ă thn bibliojăkh autoô. Η ανεξαρτητοποίηση των modules αυτών είναι για µένα σηµαντικό θέµα. Το πω γίνετε πράγµα απ ό και εύχρηστο αυτό δεν θα το ανα ύσουµε εδώ, α ά το βρίσκω από υτα απαραίτητο να ειπωθεί. 6 Teqnikèc anĺptuxhc tou PM Θα εξηγήσουµε παρακάτω µε τον π έον τυπικό τρόπο τι τεχνικέ που χρησιµοποιήθηκαν για να επιτευχθεί η ανάπτυξη του PM. Ο α αυτά είναι ενσωµατωµένα στο υποσύστηµα και είναι αόρατα στον τε ικό χρήστη - προγραµµατιστή.

10 6 TEQNIK ES AN APTUXHS TOU PM SÔndesh arqeðou kai kÿdika Οπω είδαµε στην SB, η επι ογή των ρουτινών για το άνοιγµα ή την ανάγνωση ή την αποστο ή στοιχείων γινόταν µε διαδοχικά if. Αυτή η διαδικασία στο PM έπρεπε να γίνετε αυτόµατα και το πω αυτό είναι δυνατό θα το ανα ύσουµε τώρα. Αν αντί για µια σειρά από if, συνδέσαµε το εικονικό αρχείο µε την βιβ ιοθήκη που είναι ικανή να το διαχειρίζεται... 1 filename = "COM1:9600"; AntikatĹstash thc OPEN 2 drivername = filename.leftof ( : ); // drivername <- "COM1" 3 driverparams = filename.rightof( : ); // driverparams <- "9600" 4 if ( drivername == "COM1" ) { 5 filetable[handle].openfuncptr = serial_io_open; 6 filetable[handle].writefuncptr = serial_io_write; 7 } 8 else { 9 filetable[handle].openfuncptr = file_io_open; 10 filetable[handle].writefuncptr = file_io_write; 11 driverparams = drivername + driverparams; 12 } // open file 15 filetable[handle].systemhandle = 16 filetable[handle].openfuncptr(driverparams); η αδή ο πίνακα filetable, στο νέο αυτό σχήµα, φυ άσσει τι διευθύνσει των ρουτινών αντί για το ποια βιβ ιοθήκη να χρησιµοποιήσει, ενώ οι συναρτήσει για το serial I/O και για το file I/O έχουν προσαρµοστεί έτσι ώστε να έχουν την ίδια σύνταξη. Αυτό έχει φι οσοφικέ προεκτάσει διότι προσθέτει µια τε είω διαφορετική ογική και δυνατότητε στην αντιµετώπιση του θέµατο. Ενώ πριν είχαµε ένα πίνακα από στοιχεία για κάθε αρχείο, τώρα στο αρχείο αυτό το συνδέουµε µε τον αντίστοιχο κώδικα για τον χειρισµό του (function pointers). Αυτό ο αντίστοιχο κώδικα µπορεί πράγµατι να αναφέρεται στην χρήση ενό αρχείου α ά µπορεί και σε οτιδήποτε ά ο (π.χ. σειριακή πόρτα, sockets, ή κάποια επεξεργασία κ. π.). v Με αυτή την τεχνική ο υπό οιπο κώδικα δεν χρειάζεται να ξέρει τι είναι το αρχείο για να το χρησιµοποιήσει. Απ ά κα εί τι προκαθορισµένε συναρτήσει, µε προκαθορισµένη σύνταξη, συναρτήσει που είναι ορισµένε µέσα στο filetable[handle]. Στην ακό ουθη αντικατάσταση τη PRINT β έπουµε καθαρά ότι το πρόγραµµα δεν χρειάζεται πια να ξέρει ότι το υποτιθέµενο αρχείο είναι σειριακή πόρτα ή κανονικό αρχείο. 1 params = "Hello, world!"; AntikatĹstash thc PRINT 2 filetable[handle].writefuncptr(filetable[handle].systemhandle, params); 6.2 Exèlixh se module Στην προηγούµενη διαδικασία η open γέµιζε το filetable µε τι διευθύνσει των ρουτινών για τι µεθόδου open, close και read, write. Είδαµε επίση ότι για να γίνει αυτό χρειαζόταν κάθε βι-

11 6 TEQNIK ES AN APTUXHS TOU PM 11 β ιοθήκη να συµπεριφέρεται µε τον ίδιο τρόπο, δη αδή να έχει µια προκαθορισµένη σύνταξη για τι προαναφερθέντε εντο έ. Οµω µέχρι τώρα ό α αυτά γινόντουσαν στο ίδιο το πρόγραµµα - εφαρµογή. Αυτό που µα ενδιαφέρει είναι οι βιβ ιοθήκε αυτέ να φορτώνονται κατά επι ογή από την εφαρµογή. Αυτό είναι δυνατό να γίνει αν χρησιµοποιήσουµε τον µηχανισµό δυναµική διασύνδεση βιβ ιοθηκών που παρέχεται στα σηµερινά.σ. Για να γίνει αυτό, αντί να έχουµε µια µεταβ ητή τύπου filetable, φτιάχνουµε εµεί ένα structure στο οποίο αποθηκεύουµε τι διευθύνσει των ρουτινών. 1 struct module { AntikatĹstash tou filetable 2 void *dlhandle; // handle of dynamic linked library 3 int (*open) (const char *filename, const char *mode); 4 void (*close)(int handle); 5 int (*write)(int handle, char *buffer, int size); 6 int (*read) (int handle, char *buffer, int size); 7 }; Ετσι, οιπόν, καθορίζουµε το ενιαίο interface ό ων των βιβ ιοθηκών, που από τώρα ονοµάζονται modules, όπου συµπεριφέρονται σαν αρχεία. η αδή, χειρίζονται µε τι κ ασσικέ εντο έ του file I/O 7. 1 module serial_io_lib; 2 module file_io_lib; Dunamikì fìrtwma module 3 4 serial_io_lib.dlhandle = dlopen("my_serial_io_lib.so", RTLD_LAZY); 5 serial_io_lib.open = dlsym(serial_io_lib.dlhandle, "open"); file_io_lib.dlhandle = dlopen("my_file_io_lib.so", RTLD_LAZY); 8 file_io_lib.open = dlsym(file_io_lib.dlhandle, "open"); Περισσότερα για τι δυναµική σύνδεση βιβ ιοθήκε στο [LPLib]. Με αυτό τον τρόπο είναι δυνατό να φορτώνουµε πο ά τέτοια modules και κρατώντα τον ίδιο κώδικα - εφαρµογή να ενα άσσουµε την έξοδο/είσοδο απ ά α άζοντα τον deðkth του module όπω ακριβώ β έπουµε στο παρακάτω παράδειγµα. 1 module *current_module; 2 ParĹdeigma me dôo modules 3 //current_module = &serial_io_lib; 4 current_module = &file_io_lib; 5 int handle = current_module->open("myfile", "w"); 6 current_module->read(handle, buffer, 1024); 7 current_module->close(handle); Οπω β έπουµε, αν απενεργοποιήσουµε την γραµµή 4 και ενεργοποιήσουµε την 3, τότε ο κώδικα αυτό αντί να διαβάζει από ένα αρχείο θα παίρνει στοιχεία από την σειριακή πόρτα. 7 open(), read(), write(), close(), eof(), seek(), fgets(), etc

12 6 TEQNIK ES AN APTUXHS TOU PM 12 Σ αυτό το σηµείο θα πρέπει να αντι αµβάνεστε πόσο εύκο ο θα ήταν, α άζοντα µια µόνο γραµµή κώδικα στην εφαρµογή, αυτή να χρησιµοποιεί συµπιεσµένα ή όχι αρχεία µε την χρήση τη zlib. 6.3 VFS Το VFS σηµαίνει Virtual File System δη αδή εικονικό σύστηµα αρχείων. Το ονοµάσαµε έτσι διότι η εφαρµογή νοµίζει ότι διαχειρίζεται ένα σύστηµα αρχείων, α ά αυτό το σύστηµα µπορεί να εκφράζει τε είω διαφορετικά πράγµατα. Κ ασσικά δείγµατα, είναι τα zip αρχεία όπου περιέχουν κατα όγου και αρχεία σε συµπιεσµένη µορφή, το registry των Windows, κ.α. Το VFS υποσύστηµα του PM, εκφράζει δύο καταστάσει. 1. Επίπεδο αρχείου. η αδή όταν έχουµε να κάνουµε µε εικονικά αρχεία όπω η σειριακή πόρτα. 2. Επίπεδο κατα όγων. η αδή όταν έχουµε να κάνουµε µε ο οκ ηρωµένο περιβά ον, µε κατα- όγου, αρχεία και file-attributes. Υποθέτω ότι η έξη file ακόµα σα περιορίζει την φαντασία στα κ ασσικά αρχεία. Αυτό είναι σηµαντικό άθο, δεν πρόκειται για αρχεία α ά για κώδικα! Η έξη file εκφράζει τον τρόπο επικοινωνία µε το module και όχι τι κάνει το module. Το αρχείο στο VFS θα µπορούσε κά ιστα να είναι µια ρουτίνα που στέ νει πίσω στην εφαρµογή τα αποτε έσµατα µια επεξεργασία ή οποία έγινε την ώρα ακριβώ που η εφαρµογή ζήτησε να ανοίξει το αρχείο. Α δούµε ένα απ ό παράδειγµα. Υποθέτουµε ότι έχουµε ένα µετρητή θερµοκρασία στο PC µα ο οποίο επιστρέφει την θερµοκρασία σε βαθµού Kelvin. Αυτή την συσκευή την διαχειριζόµαστε από την βιβ ιοθήκη που µα παρέχει ο κατασκευαστή, η οποία βιβ ιοθήκη έχει µια και µόνη συνάρτηση, την curtherm(). Ενα τυπικό πρόγραµµα θα έκανε τα παρακάτω για να µα εµφανίσει την θερµοκρασία σε βαθµού Kelvin και Celsius. 1 main() 2 { 3 double t = curtherm(); 4 5 printf("%f Kelvin\n", t); 6 printf("%f Celsius\n", t - 273); 7 } thermometer Επειδή όµω εµεί θέ ουµε να β έπουµε αυτέ τι µετρήσει σε ένα file-manager έτσι ώστε όταν κάνουµε κ ικ σε ένα αρχείο που ονοµάζεται /thermometer/kelvin και ένα που ονοµάζεται /thermometer/celsius να β έπουµε την τρέχουσα µέτρηση στην αντίστοιχη κ ίµακα φτιάχνουµε ένα αντίστοιχο VFS module. 1 char strkelvin[32]; 2 char strcelsius[32]; thermometer vfs module 3 4 int therm_open(const char *filename) 5 { 6 if ( strcmp(filename, "Celsius") == 0 ) {

13 6 TEQNIK ES AN APTUXHS TOU PM 13 7 sprintf(strcelsius, "%f", curtherm() - 273); 8 return 1; 9 } 10 else if ( strcmp(filename, "Kelvin") == 0 ) { 11 sprintf(strkelvin, "%f", curtherm()); 12 return 2; 13 } 14 return -1; // error 15 } int therm_read(int handle, char *buf, int size) 18 { 19 int len = 0; switch ( handle ) { 22 case 1: // Celsius-file data 23 len = strlen(strcelsius); 24 strncpy(buf, strcelsius, len); 25 break; 26 case 2: // Kelvin-file data 27 len = strlen(strkelvin); 28 strncpy(buf, strkelvin, len); 29 } 30 return len; 31 } void module_init(module *mod) 34 { 35 mod->open = therm_open; 36 mod->read = therm_read; 37 } Αυτό το module είναι ένα εικονικό σύστηµα αρχείων. Βέβαια το έχουµε απ οποιήσει εδώ α ά δεν έχει και µεγά η διαφορά από την πραγµατικότητα. Στο module init όπω β έπουµε καθορίζουµε ποια συνάρτηση ανα αµβάνει να κάνει το open και ποια το read. Α δούµε τι και πω ακριβώ θα συµβεί 1. Η εφαρµογή file-manager ζητά από τον PM να φορτώσει το module. 2. Το PM εκτε εί την module init ώστε να ξέρει ποιε συναρτήσει είναι υ οποιηµένε στο module και ποια ανα αµβάνει να κάνει τι. 3. Η εφαρµογή ζητά από το PM να ανοίξει το εικονικό αρχείο Celsius. 4. Το PM εκτε εί την therm open("celsious") και επιστρέφει τον εικονικό handle (επιστρέφεται από την therm open() ) πίσω στην εφαρµογή. 5. Η εφαρµογή ζητά από το PM να πάρει τα περιεχόµενα του αρχείου µε µια τυπική κ ήση στην fgets() ( module->fgets(...) ). 6. Το PM, µέσω τη δική του fgets() κα εί την therm read() για να πάρει τα στοιχεία και τα επιστρέφει στην εφαρµογή.

14 6 TEQNIK ES AN APTUXHS TOU PM Ektìc tou VFS......κ ειδιά PMFS Ωραία ό α αυτά α ά θα έπρεπε η εφαρµογή να µπορεί να ξέρει τι modules υπάρχουν στο σύστηµα για ποιο interface. Ετσι το deamon του PM, ανέ αβε να παρέχει αυτέ τι π ηροφορίε µέσω ενό εικονικού συστήµατο αρχείων, το ονοµαζόµενο pmfs. 1 main() 2 { 3 pm_vfs_module_t *pmfs; 4 strlist_t *list; 5 int i; 6 7 pm_init(); // initialize PM 8 LÐsta ìlwn twn vfs modules 9 // load PM virtual-file-system module 10 if ( (pmfs = pm_vfs_load("vfs/pmfs")) == NULL ) 11 panic("pm_vfs_load(): failed"); printf("the following VFS modules found:\n\n"); 14 list = pmfs->list(pmfs->mid, "/vfs/*"); 15 for ( i = 0; i < list->count; i ++ ) 16 printf("%d: %s\n", i+1, list->str[i]); strlist_destroy(list); 19 pm_vfs_release(pmfs); 20 } Η µέθοδο list είναι µια πιο προχωρηµένη έκδοση των opendir()/closedir(), και επιστρέφει µια ίστα µε τα ονόµατα των αρχείων. η αδή το αντίστοιχο των εντο ών ls ή/και dir που γνωρίζουµε από την κονσό α. 6.6 Ena ètoimo eikonikì sôsthma arqeðwn Α υποθέσουµε ότι έχουµε ένα file-manager ο οποίο ειτουργεί µε modules αντίστοιχα µε αυτά που περιγράψαµε παραπάνω, α ά προσθέστε και οιπέ κοινότυπε εργασίε όπω opendir()/closedir() και chdir()/rmdir()/mkdir(). Εχουµε ήδη φτιάξει τέτοιο πρόγραµµα - εφαρµογή που ειτουργεί άψογα, το vfssh, το οποίο είναι ένα shell σαν τα bash και tcsh µόνο που αντί να ειτουργεί µε το σύστηµα αρχείων του.σ., αυτό ειτουργεί αποκ ειστικά µε modules του PM. Σκεφτείτε όµω τώρα, πω θα φτιάξουµε ένα vfs module για την παρουσίαση των στοιχείων του κάθε χρήστη έτσι όπω αυτά αναφέρονται στο /etc/passwd.

15 7 ARQ ES TOU PM 15 Το συγκεκριµένο module, αν και όχι ακριβώ το ίδιο, υπάρχει στα παραδείγµατα και µπορείτε να το δείτε να ειτουργεί µέσω του vfssh. Εχουµε τα παρακάτω στοιχεία από τα κ ασσικά αρχεία του Unix (todo: passwd structure, groups) Τώρα πρέπει να φανταστούµε πω θα θέ αµε να υπάρχουν σε µορφή αρχείων. ογικά θα θέ αµε ένα κατά ογο για του χρήστε και ένα για τι οµάδε. Κάθε το κάθε αρχείο στον κατά ογο του χρηστών, θα πρέπει να περιέχει τα στοιχεία του χρήστη και φυσικά το όνοµά του να είναι το αντίστοιχο username. /users/ --- root --- nikos --- dimitris +--- yannis /groups/ --- root +--- users IerarqÐa eikonikoô sustămatoc Και να πω θα έπρεπε να εµφανίζεται ένα τυπικό εικονικό αρχείο. Nicholas Christopoulos Perieqìmena arqeðou /users/nikos User-ID : 501 Group-ID : 100 Home directory: /home/nikos Shell : /bin/tcsh Μπορείτε να τα δείτε αυτά µέσω του vfssh εκτε ώντα τι εντο έ ls και cat όπω ακριβώ θα κάνατε αν ήταν πραγµατικά αρχεία. Προσθέσαµε οιπόν στο PM µια βιβ ιοθήκη η οποία χτίζει ένα εικονικό σύστηµα αρχείων στην µνήµη. Το µόνο που χρειάζεται, οιπόν, να κάνει το module µα είναι να επεξεργαστεί τα στοιχεία των /etc/passwd και /etc/groups, και να τα γράψει στο εικονικό σύστηµα αρχείων, πράγµα που επιτυγχάνετε µε τι τυπικέ, file I/O, εντο έ, όπω θα κάναµε αν τα γράφαµε στο δίσκο. Από εκεί και πέρα το vfslib, η βιβ ιοθήκη αναφέραµε, ανα αµβάνει την διαχείριση του module κατά επι ογή βέβαια του προγραµµατιστή. 7 Arqèc tou PM 7.1 Logikă sqedðash Η ογική στο PM έχει µεγα ύτερη σηµασία από την δυνατότητα, διότι ο προγραµµατιστή και ο κάθε άνθρωπο βο εύεται µε τυποποιηµένε ογικέ ύσει και όχι µε ακροβατικέ δυνατότητε - προχειρότητε. Οταν ένα πράγµα είναι φτιαγµένο για να κάνει µια συγκεκριµένη ειτουργία, έτσι πρέπει να παραµείνει και όχι να προσφέρεται µέσω αυτή τη ειτουργία άσχετε δυνατότητε. Κατά την γνώµη µου, ο σωστό σχεδιασµό έχει να κάνει µε αυτό, δη αδή ο προγραµµατιστή να µην χρειάζεται να ανοίξει το βιβ ίο για να βρει πω θα κάνει τι, α ά αυτό να είναι αυτονόητο. Αν

16 7 ARQ ES TOU PM 16 χρειαστούν ποτέ εξτρά δυνατότητε αυτέ µπορούν να γίνουν µε µια παραπάνω συνάρτηση κατά κανόνα, αυτά τα εξτρά δεν χρειάζονται παρά µόνο σε εξαιρέσει. Το ακριβώ αντίθετο του σωστού σχεδιασµού µπορείτε να το µε ετήσετε στο Windows API, ή απ ά να διαβάσετε τον πο ύ κα ό σχο ιασµό του Σπινέ η[crqapi]. 7.2 EniaÐo interface Οταν γράφουµε κώδικα για µια εικόνα τύπου bmp, είναι αυτονόητο να απαιτούµε ο ίδιο κώδικα να ειτουργεί και για εικόνε τύπου jpeg. Οταν έχουµε µια βιβ ιοθήκη γραφικών που γράφει/διαβάζει την Video RAM, είναι αυτονόητο να απαιτούµε να διαχειρίζεται και memory bitmaps. Οταν γράφουµε και διαβάζουµε στο default file-system είναι αυτονόητο να απαιτούµε µε τον ίδιο τρόπο να διαχειριζόµαστε και memory sticks. Αυτά είναι από τα π έον τυπικά παραδείγµατα που ανα αµβάνει το PM να ύσει. Οµω δεν σταµατά εδώ, α ά επεκτείνετε στο ότι εφόσον κάτι µπορεί να δοµηθεί µε την κ ασσική ιεραρχική δοµή των συστηµάτων αρχείων τότε είναι αυτονόητο ότι πρέπει να ειτουργεί και έτσι µε τι ίδιε εντο έ όπω το κ ασσικό σύστηµα. Οταν έχουµε µια εικόνα είναι αυτονόητο ότι η εικόνα αυτή µπορεί να επεξεργαστεί µε την βιβ ιοθήκη γραφικών που προσφέρει το ίδιο το PM, και δεν χωρά αντιθέσει σ αυτό, εφόσον είναι εικόνα θα πρέπει να αποθηκεύεται / διαβάζεται σε / από ό ε τι µορφέ µε τον ίδιο τρόπο, εφόσον εµφανίζεται στην οθόνη µπορεί και να εκτυπωθεί και να καταγραφεί σε αρχείο OmadopoÐhsh sto PM Ποια όµω τµήµατα του ογισµικού ταιριάζουν σε τι είδου interface Το file I/O β έπετε, µπορεί να ενσωµατώσει σχεδόν τα πάντα, α ά δεν µπορεί να ικανοποιήσει ό ε τι απαιτήσει ούτε να κάνει το σύστηµα τόσο ευέ ικτο. Για παράδειγµα πω θα σχεδιάζουµε γραµµέ µε εντο έ read/write Σίγουρα µπορούµε, και µπορούµε να έχουµε ένα παραπάνω επίπεδο, που έτσι και α ιώ ήδη υπάρχει στο pml, για να χρησιµοποιούµε line αντί για write α ά δεν θα µπορούσαµε να εκµετα ευτούµε τον επιταχυντή τη κάρτα γραφικών. 1. VFS (virtual file system interface). Το αντίστοιχο module θα έπρεπε να υποστηρίζει τι file I/O εντο έ. Το interface αυτό έχει δύο επίπεδα, α) σαν αρχείο, β) σαν file system. 2. GFX (bitmap and vector graphics interface). Το αντίστοιχο module θα έπρεπε να υποστηρίζει εγγραφή και ανάγνωση pixels. 3. SND (sound interface). Το αντίστοιχο module θα έπρεπε να υποστηρίζει εγγραφή και ανάγνωση wave. 4. PTD (pointing devices interface). Το αντίστοιχο module θα έπρεπε να υποστηρίζει θέση και κατάσταση π ήκτρων. 5. KBD (keyboard interface). Το αντίστοιχο module θα έπρεπε να υποστηρίζει π ήκτρα-χαρακτήρε και συνδυασµού αυτών. 7.3 EniaÐo trìpoc metaforĺc dedomènwn Το ενιαίο interface δεν ύνει όµω ό α τα προβ ήµατα. Αν υποθέσουµε ότι έχουµε µια εικόνα σε µορφή png και θέ ουµε να την µετατρέψουµε σε µορφή jpeg, θα πρέπει αυτά τα δύο να συνεργάζονται, πράγµα που σηµαίνει ότι χρειαζόµαστε και ενιαία µορφή δεδοµένων. Για παράδειγµα ό ε οι εικόνε που επιστρέφονται ή στέ νονται στα modules είναι απαραίτητο να έχουν συγκεκριµένη µορφή, και αυτή καθορίστηκε να είναι όπω στην Video RAM α ά µε προκαθορισµένο

17 8 ETOIMA PARADE IGMATA 17 header που αναφέρει την ανά υση και το βάθο χρώµατο. Ετσι ό α τα σχετικά µε γραφικά modules ή βιβ ιοθήκε ξέρουν επακριβώ µε τι και πω να εργαστούν. Αντίστοιχα και για τα διανυσµατικά γραφικά (ξέρουµε πο ύ κα ά ότι κάθε βιβ ιοθήκη έχει δικό τη ορισµό για το διάνυσµα). Αντίστοιχα και για τον ήχο. 7.4 DiaqeÐrish modules Κατ αρχήν έπρεπε να φτιαχτεί ένα σύστηµα που να φορτώνει και να ξεφορτώνει του drivers µε όσο τον δυνατό ταχύτερο τρόπο και αυτό έγινε µε την χρήση ενό daemon ( pmd ) και µια βιβ ιοθήκη ( pml ) που συνδέεται µε την εφαρµογή. Οι drivers από την ά η µετατράπηκαν σε shared libraries (dynamic linked libraries) γι αυτό και αποκα ούνται modules. Για ό α τα modules θα έπρεπε να ισχύουν και συγκεκριµένοι κανόνε, όπω 1. Οι drivers να φορτώνονται και να ξεφορτώνονται δυναµικά ανά ογα µε τα κέφια τη εφαρµογή. 2. Οι drivers να µπορούν να ορίζονται και εξωτερικά, από τον χρήστη. η αδή αν ο χρήστη θα ήθε ε η έξοδο µια εφαρµογή αντί για την οθόνη να είναι το jpeg driver αυτό να είναι δυνατό να γίνει. 3. Ο ε οι εικόνε που στέ νονται ή επιστρέφουν από ένα driver να είναι πάντα µε συγκεκριµένη µορφή και µά ιστα µε την π έον απ ή. Αυτό επιτρέπει την µετακίνηση και επεξεργασία των δεδοµένων από κοινό κώδικα. 4. Ο α τα δεδοµένα ήχου που στέ νονται ή επιστρέφουν από ένα driver να είναι πάντα µε συγκεκριµένη µορφή και µά ιστα µε την π έον απ ή. Το PM έχει και ά α πράγµατα καθώ και υποστηρίζει ειτουργία ανά έκδοση του κάθε interface (όπου το module αναφέρει ποια έκδοση και τι interface υποστηρίζει) καθώ και δικτυακή επικοινωνία κ.α. εν θα επεκταθούµε όµω σε αυτά, θέ ουµε εδώ να δώσουµε την φι οσοφία του έργου και όχι τον ανα υτικό σχεδιασµό του. 7.5 Autìmath sumplărwsh sunartăsewn twn modules Πο ά πράγµατα που πρέπει να απαιτούνται από το interface µπορούν να αντικατασταθούν από κοινότυπο κώδικα. Για παράδειγµα η γραµµή στα γραφικά. εν χρειάζεται κάθε GFX module να περιέχει τον α γόριθµο αυτό, παρά µόνο αν υποστηρίζει κάποιον επιταχυντή. Ά ο ένα παράδειγµα είναι το fgets() στο VFS, το οποίο υ οποιήται µε κ ήσει στην αντίστοιχη read(), είναι όµω απαραίτητο να υποστηρίζεται από το VFS interface. Σ αυτέ τι περιπτώσει το PM ανα αµβάνει να συµπ ηρώσει αυτέ τι συναρτήσει αν αυτέ δεν έχουν οριστεί µέσα στο module. ογικό είναι να περιµένουµε ειδικά από τα γραφικά σε κάποιε περιπτώσει το module να περιέχει µόνο τι getpixel / putpixel ενώ σε ά ε να θέ ει να αντικαταστήσει το µεγα ύτερο µέρο τη βιβ ιοθήκη γραφικών. 8 Etoima paradeðgmata 8.1 vfstest Το ακό ουθο πρόγραµµα είναι µια τυπική εφαρµογή που χειρίζεται VFS modules. εν κάνει τίποτα παραπάνω από το να φορτώνει το αντίστοιχο module που παίρνει σαν παράµετρο και να τυπώνει τα

18 8 ETOIMA PARADE IGMATA 18 περιεχόµενα ενό από τα εικονικά αρχεία. Το module-key και το όνοµα του αρχείου δίδονται από τον χρήστη σαν παράµετρο από την κονσό α. 1 // vfstest.c 2 #include <pm_app.h> 3 4 int main(int argc, char *argv[]) 5 { 6 int handle; 7 pm_vfs_module *m; 8 9 pm_init(); // initialize PM if ( argc!= 3 ) // arguments 12 panic("usage: vfstest module-key open-file"); // load the module 15 if ( (m = pm_vfs_load(argv[1])) == NULL ) 16 panic("can t load the %s module", argv[1]); // open the "file" 19 if ( (handle = m->open(m->mid, argv[2], 0)) == -1 ) 20 panic("can t open the %s file", argv[2]); // display theirs contents 23 while ( m->gets(m->mid, handle, buf, 256) ) 24 printf("%s", buf); m->close(m->mid, handle); // close "file" 27 pm_vfs_release(m); // unload the module 28 return 0; 29 } Μπορούµε τώρα να δούµε εύκο α µερικέ από τι δυνατότητε του PM. Θα προτιµούσαµε να είσαστε συνδεδεµένο σαν διαχειριστή (root) διότι ορισµένα modules-παραδείγµατα έχουν φτιαχτεί για να ειτουργούν µε π ήρη δικαιώµατα στο σύστηµα. ParĹdeigma 1 Χρησιµοποιήστε το vfstest για να δείτε την ώρα από ένα τοπικό ή εξωτερικό (internet) διακο- µιστή. # vfstest vfs/telnet localhost:13 Αν η σύνδεση αποτύχει, αυτό σηµαίνει ότι δεν έχετε ενεργοποιήσει το timegen service στο σύστηµά σα. Φορτώστε µε ένα editor το αρχείο /etc/inetd.conf και βγά τε το # από την γραµµή του timegen. αναφορτώστε το inetd και προσπαθήστε ξανά. ParĹdeigma 2 Χρησιµοποιήστε το vfstest για να συνδεθήτε µέσω σειριακή πόρτα µε ένα ά ο µηχάνηµα. # vfstest vfs/serial /dev/ttys1:57600 Στο Palm µου, το δοκίµασα τρέχοντα το πρόγραµµα sertest.bas που είναι παράδειγµα τη SB και... έστει α χαρακτήρε στο PC. Αν το δοκιµάσετε θυµηθήτε ότι το vfstest µόνο διαβάζει δεδοµένα άρα το πρόγραµµα που θα συνδεθεί (π.χ. Minicom, Telix, Procomm, Hyperterminal) θα πρέπει να αποστέ ει δεδοµένα (π ήκτρα που πατάτε).

19 9 JEWRHTIK A PARADE IGMATA 19 ParĹdeigma 3 Χρησιµοποιήστε το vfstest για να πάρετε τα στοιχεία ενό χρήστη. # vfstest vfs/users users/root Π ηροφορίε, όπω το home directory και το επι εγµένο shell του χρήστη root θα πρέπει να εµφανιστούν στην κονσό α σα. 8.2 SunodeutikĹ paradeðgmata ` efarmogèc Από το CVS µπορείτε να κατεβάσετε περισσότερα παραδείγµατα. Τα παραδείγµατα αυτά βρίσκονται στον κατά ογο apps....( ίστα και µια περιγραφή) SunodeutikĹ paradeðgmata ` modules...( ίστα και µια περιγραφή)... 9 JewrhtikĹ paradeðgmata Προσωρινά τα ονοµάζουµε θεωρητικά διότι απ ούστατα δεν έχουµε κάτσει ακόµα να τα φτιάξουµε. η αδή δεν έχουµε αµφιβο ία ότι µπορούµε, απ ά δεν το έχουµε κάνει ακόµα. 9.1 Enac client pou leitourgeð san sôsthma arqeðwn Ena pantodônamo ergaleðo me lðgo kÿdika... Anaforèc [Bazaar] The Cathedral and the Bazaar, Eric S. Raymond, 1998/08/11 20:27:29 [CrqAPI] A Critique of the Windows Application Programming Interface, Diomidis Spinellis, University of the Aegean, Dec [Ε ΕΤ-Γ4] EleÔjero Logismikì / Logismikì AnoiktoÔ Kÿdika (EL/LAK) sthn EkpaÐdeush, th Dhmìsia DioÐkhsh kai stic Epiqeirăseic MikroÔ / MesaÐou Megèjouc., Οµάδα Εργασία ΟΕ Γ4, Εθνικό ίκτυο Ερευνα & Τεχνο ογία, Αθήνα, Ιαν [LPLib] Program Library HOWTO, David A. Wheeler, LDP, ver 1.07, 30 December 2002

20 ANAFOR ES 20 EuqaristÐec Dhmătrio KoukorĹba kai GiĹnnh BlaqogiĹnnh Το πείσµα του ηµήτρη πάνω στο PM είχα και έχω σκοπό να µην ασχο ούµαι µε το arm0nia project α ά και η εκνευριστική επιµονή του, είναι ο όγο ύπαρξη αυτού του εγγράφου. Για τα κρασιά που κεράσανε, και για τι ιδέε που αναπτύξαµε και οι τρει από κοινού κάτω από αρκετέ ώρε αµπε οφι οσοφία (το αγαπηµένο µου σπορ).

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15) (Κεφάλαιο 2.7 και 12) Αρχεία στην C (Διάλεξη 15) 14-1 Επανάληψη στην Αποθήκευση (Storage) Για να αποθηκεύσουμε δεδομένα από ένα πρόγραμμα, πρέπει να χρησιμοποιήσουμε την Δευτερεύουσα Μνήμη 14-2 Επανάληψη

Διαβάστε περισσότερα

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. ( ιάλεξη 13) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. ( ιάλεξη 13) ιδάσκων: ηµήτρης Ζεϊναλιπούρ (Κεφάλαιο 2.7 και 12) Αρχεία στην C ( ιάλεξη 13) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 14-1 Επανάληψη στην Αποθήκευση (Storage) Για να αποθηκεύσουµε δεδοµένα από ένα πρόγραµµα, πρέπει να χρησιµοποιήσουµε την ευτερεύουσα

Διαβάστε περισσότερα

Μεθόδων Επίλυσης Προβλημάτων

Μεθόδων Επίλυσης Προβλημάτων ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 10 Αρχεία στην C Επανάληψη στην Αποθήκευση (Storage)

Διαβάστε περισσότερα

ΑΣΚΗΣΗ 5 η Η σειριακή επικοινωνία ΙΙ 1.1 ΣΚΟΠΟΣ Σκοπός της άσκησης αυτής είναι η κατανόηση σε βάθος των λειτουργιών που παρέχονται από το περιβάλλον LabView για τον χειρισµό της σειριακής επικοινωνίας

Διαβάστε περισσότερα

Εργαστήριο 9: Αρχεία

Εργαστήριο 9: Αρχεία Εργαστήριο 9: Αρχεία Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Αρχεία, Είσοδος/Έξοδος από/προς αρχεία - Δυαδικά αρχεία - Παραδείγματα ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ.

Διαβάστε περισσότερα

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Είσοδος/Έξοδος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2009-2010 Είσοδος/Έξοδος Μέχρι τώρα όποτε θέλαμε να διαβάσουμε χρησιμοποιούσαμε πάντα

Διαβάστε περισσότερα

MAJHMATIKH QRHMATOOIKONOMIA I

MAJHMATIKH QRHMATOOIKONOMIA I MAJHMAIKH QRHMAOOIKONOMIA I MHMA EFARMOSMENWN MAJHMAIKWN 6 o upìdeigma tou Vasicek: Το υπόδειγµα του Black για την τιµο όγηση παραγώγων του επιτοκίου είναι απ ό και ευρέω χρησιµοποιούµενο. Ενα βασικό του

Διαβάστε περισσότερα

Εισαγωγή στην Πληροφορική

Εισαγωγή στην Πληροφορική Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Εισαγωγή στην Πληροφορική Αστροφυσικός Αναπλ. Καθηγητής ΕΜΠ romylos@survey.ntua.gr Λειτουργικά συστήµατα, διεργασίες και δροµολόγηση Σύνδεση

Διαβάστε περισσότερα

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 5 - Editor

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 5 - Editor Προηγμένοι Μικροεπεξεργαστές Εργαστήριο 5 - Editor Περιγραφή Υλοποίηση ενός υποτυπώδους editor που θα: Διαβάζει ένα προκαθορισμένο αρχείο Θα το απεικονίζει στην οθόνη Θα κάνει highlight με έναν ελεγχόμενο

Διαβάστε περισσότερα

Μάθημα 10 ο ΔΙΑΧΕΙΡΙΣΗ ΕΙΣΟΔΟΥ ΕΞΟΔΟΥ (INPUT/OUTPUT)

Μάθημα 10 ο ΔΙΑΧΕΙΡΙΣΗ ΕΙΣΟΔΟΥ ΕΞΟΔΟΥ (INPUT/OUTPUT) Μάθημα 10 ο ΔΙΑΧΕΙΡΙΣΗ ΕΙΣΟΔΟΥ ΕΞΟΔΟΥ (INPUT/OUTPUT) Τι είναι Είσοδος και τι Έξοδος Με τον όρο Είσοδο (Input) αναφερόμαστε στη ροή δεδομένων προς την Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ), ενώ με τον όρο

Διαβάστε περισσότερα

Διάλεξη 18η: Διαχείρηση Αρχείων

Διάλεξη 18η: Διαχείρηση Αρχείων Διάλεξη 18η: Διαχείρηση Αρχείων Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Πρατικάκης (CSD) Αρχεία CS100, 2015-2016 1 / 24 Η βιβλιοθήκη Εισόδου/Εξόδου Στο stdioh

Διαβάστε περισσότερα

EPL 034 Ergastărio 1: To leitourgikì sôsthma UNIX

EPL 034 Ergastărio 1: To leitourgikì sôsthma UNIX EPL 034 Ergastărio 1: To leitourgikì sôsthma UNIX 1 Istorikă anadromă Το ειτουργικό σύστηµα (operating system) ενό υπο ογιστή, είναι ένα σύνο ο προγραµµάτων τα οποία ρυθµίζουν, συντονίζουν και επιβ έπουν

Διαβάστε περισσότερα

Μετάδοση εδοµένων και ίκτυα υπολογιστών ΙΙ Εργαστηριακή Άσκηση 3. Σύνδεση υπολογιστών στα Windows

Μετάδοση εδοµένων και ίκτυα υπολογιστών ΙΙ Εργαστηριακή Άσκηση 3. Σύνδεση υπολογιστών στα Windows Μετάδοση εδοµένων και ίκτυα υπολογιστών ΙΙ Εργαστηριακή Άσκηση 3 Σύνδεση υπολογιστών στα Windows Όπως γνωρίζουµε από προηγούµενες τάξεις, κάθε υπολογιστής PC διαθέτει τουλάχιστον µία παράλληλη θύρα και

Διαβάστε περισσότερα

SÔgqronh nèa ellhnikă: problhmatikèc perioqèc tou graptoô lìgou B mèroc: perð sôntaxhc kai lexilogðou

SÔgqronh nèa ellhnikă: problhmatikèc perioqèc tou graptoô lìgou B mèroc: perð sôntaxhc kai lexilogðou EÖtupon TeÜqoc No. 10 >AprÐlioc 2003 59 SÔgqronh nèa ellhnikă: problhmatikèc perioqèc tou graptoô lìgou B mèroc: perð sôntaxhc kai lexilogðou Anna IordanÐdou Panepistămio Patrÿn Paidagwgikì Tmăma Dhmotikăc

Διαβάστε περισσότερα

Επεξεργασία Αρχείων Κειµένου

Επεξεργασία Αρχείων Κειµένου Επεξεργασία Αρχείων Κειµένου Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Αρχεία Κειµένου Γενικά Συναρτήσεις Επεξεργασίας Αρχείων Κειµένου ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 1 Αρχεία Γενικά

Διαβάστε περισσότερα

Κεφάλαιο Αλφαριθµητικές Σειρές Χαρακτήρων (Strings)

Κεφάλαιο Αλφαριθµητικές Σειρές Χαρακτήρων (Strings) Κεφάλαιο 9.1-9.2 Αλφαριθµητικές Σειρές Χαρακτήρων (Strings) ( ιάλεξη 19) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 1) Strings στη C Ένα string είναι µία ακολουθία αλφαριθµητικών χαρακτήρων, σηµείων στίξης κτλ. Π.χ.

Διαβάστε περισσότερα

Κεφάλαιο 5Β (επανάληψη) Εισαγωγή στην Πληροφορική. Τυπικοί χρόνοι πρόσβασης. Μέσος χρόνος πρόσβασης. Ταχύτητα µεταφοράς δεδοµένων

Κεφάλαιο 5Β (επανάληψη) Εισαγωγή στην Πληροφορική. Τυπικοί χρόνοι πρόσβασης. Μέσος χρόνος πρόσβασης. Ταχύτητα µεταφοράς δεδοµένων Κεφάλαιο 5Β (επανάληψη) Εισαγωγή στην Πληροφορική Χειµερινό Εξάµηνο 2006-07 Απόδοση των οδηγών αποθηκευτικών µέσων Μέσος χρόνος πρόσβασης (Average Access Time) Ταχύτητα µεταφοράς δεδοµένων (Data-Transfer

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ Web Services

ΚΕΦΑΛΑΙΟ Web Services ΚΕΦΑΛΑΙΟ Web Services Προϋποθέσεις εγκατάστασης Web Services για το Κεφάλαιο 4.50 1. Κεφάλαιο έκδοση 4.51e build 458 ή νεότερο 2. Internet Information Server (IIS) version 6 ή νεότερος 3. Σε κάποιον υπολογιστή

Διαβάστε περισσότερα

Σημειωματάριο Τετάρτης 25 Οκτ. 2017

Σημειωματάριο Τετάρτης 25 Οκτ. 2017 Σημειωματάριο Τετάρτης 25 Οκτ. 2017 Ένα πρόγραμμα που παίζει κρεμάλα Σήμερα φτιάξαμε ένα πρόγραμμα που παίζει "κρεμάλα" με το χρήστη. Το πρόγραμμα hangman.py link (http://fourier.math.uoc.gr/~mk/prog1718/files/hangman.py))

Διαβάστε περισσότερα

H ΓΛΩΣΣΑ C. Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C. ηµήτρης Ψούνης

H ΓΛΩΣΣΑ C. Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C. ηµήτρης Ψούνης H ΓΛΩΣΣΑ C Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C ηµήτρης Ψούνης 2 Περιεχόµενα Μαθήµατος Α. Θεωρία 1. Κύκλος Ανάπτυξης Προγράµµατος 1. Συγγραφή και Μεταγλώττιση ενός προγράµµατος 2. Εκτέλεση του προγράµµατος

Διαβάστε περισσότερα

Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού

Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού Γενικά Η αρχιτεκτονική ανάπτυξης τους πληροφοριακού συστήµατος Γραµµατεία 2000 υποσύστηµα διαχείρισης προσωπικού

Διαβάστε περισσότερα

Κεφάλαιο 3 Λειτουργικά Συστήματα Β ΕΠΑΛ

Κεφάλαιο 3 Λειτουργικά Συστήματα Β ΕΠΑΛ Κεφάλαιο 3 Λειτουργικά Συστήματα Β ΕΠΑΛ ΔΙΑΧΕΙΡΙΣΗ ΕΙΣΟΔΟΥ ΕΞΟΔΟΥ (INPUT/OUTPUT) Τι είναι Είσοδος και τι Έξοδος Με τον όρο Είσοδο (Input) αναφερόμαστε στη ροή δεδομένων προς την Κεντρική Μονάδα Επεξεργασίας

Διαβάστε περισσότερα

Λειτουργικά Συστήματα (Λ/Σ)

Λειτουργικά Συστήματα (Λ/Σ) Λειτουργικά Συστήματα (Λ/Σ) Βασικές Έννοιες Λειτουργικών Συστημάτων Βασίλης Σακκάς 13/11/2013 1 ΒασικέςΈννοιεςΛ/Σ Η επικοινωνία μεταξύ Λ/Σ και των προγραμμάτων του χρήστη γίνεται μέσω του συνόλου των «εκτεταμένων

Διαβάστε περισσότερα

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οργάνωση Προγράµµατος Header Files Μετάφραση και σύνδεση αρχείων προγράµµατος ΕΠΛ 132 Αρχές Προγραµµατισµού

Διαβάστε περισσότερα

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 4 - Editor

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 4 - Editor Προηγμένοι Μικροεπεξεργαστές Εργαστήριο 4 - Editor Περιγραφή Υλοποίηση ενός υποτυπώδους editor που θα: Διαβάζει ένα προκαθορισμένο αρχείο Θα το απεικονίζει στην οθόνη Θα κάνει highlight με έναν ελεγχόμενο

Διαβάστε περισσότερα

ΕΠΕΞΕΡΓΑΣΙΑ ΑΡΧΕΙΩΝ Λέµε αρχείο

ΕΠΕΞΕΡΓΑΣΙΑ ΑΡΧΕΙΩΝ Λέµε αρχείο ΕΠΕΞΕΡΓΑΣΙΑ ΑΡΧΕΙΩΝ Λέµε αρχείο (File) τη συστηµατική συγκέντρωση δεδοµένων. Τα περισσότερα προγράµµατα στη γλώσσα C, τα οποία διαπραγµατεύονται είσοδο, αποθήκευση και επεξεργασία δεδοµένων χρησιµοποιούν

Διαβάστε περισσότερα

Εισαγωγή στην Πληροφορική

Εισαγωγή στην Πληροφορική Εισαγωγή στην Πληροφορική Χειµερινό Εξάµηνο 2006-07 ρ. Παναγιώτης Χατζηδούκας (Π..407/80) Εισαγωγή στην Πληροφορική 1 Γενικές πληροφορίες Εισαγωγή στην Πληροφορική ιδασκαλία: Παναγιώτης Χατζηδούκας Email:

Διαβάστε περισσότερα

οµές (structures) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Πίνακες δοµών, δείκτες σε δοµές, και αυτοαναφορικές δοµές.

οµές (structures) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Πίνακες δοµών, δείκτες σε δοµές, και αυτοαναφορικές δοµές. οµές (structures) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Πίνακες δοµών, δείκτες σε δοµές, και αυτοαναφορικές δοµές. ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 1 Παράδειγµα Πρόβληµα: Να γράψετε

Διαβάστε περισσότερα

ΣΥΣΚΕΥΕΣ ΑΠΟΘΗΚΕΥΣΗΣ (ΜΝΗΜΗ)

ΣΥΣΚΕΥΕΣ ΑΠΟΘΗΚΕΥΣΗΣ (ΜΝΗΜΗ) ΣΥΣΚΕΥΕΣ ΑΠΟΘΗΚΕΥΣΗΣ (ΜΝΗΜΗ) Συσκευές αποθήκευσης Ένας υπολογιστής προκειµένου να αποθηκεύσει δεδοµένα χρησιµοποιεί δύο τρόπους αποθήκευσης: Την Κύρια Μνήµη Τις συσκευές µόνιµης αποθήκευσης (δευτερεύουσα

Διαβάστε περισσότερα

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 13: Λειτουργίες Αρχείων Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών

Διαβάστε περισσότερα

Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη

Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη 9.1 Γενικά Οι εφαρµογές που δηµιουργούνται από ένα προγραµµατιστή µπορούν ανά πασά στιγµή να καταρρεύσουν από κάποιο λάθος κατά την λειτουργία τους. Αυτές οι καταστάσεις συµβαίνουν από αµέλεια του προγραµµατιστή

Διαβάστε περισσότερα

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ IΙ Λύβας Χρήστος chrislibas@ssl-unipi.gr Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος >_ ΣΥΝΑΡΤΗΣΕΙΣ ΣΤΗ C (1/3) +- Στη C χρησιμοποιούμε συχνα τις συναρτήσεις (functions),

Διαβάστε περισσότερα

Οι δείκτες στη γλώσσα C

Οι δείκτες στη γλώσσα C Οι δείκτες στη γλώσσα C Δείκτης είναι µία µεταβλητή η οποία περιέχει σαν τιµή µία διεύθυνση της µνήµης Η τιµή ενός δείκτη δείχνει σε µία άλλη µεταβλητή, η οποία µπορεί να προσεγγισθεί έµµεσα µε τους ειδικούς

Διαβάστε περισσότερα

Εισαγωγή στο λειτουργικό σύστηµα Unix

Εισαγωγή στο λειτουργικό σύστηµα Unix Εισαγωγή στο λειτουργικό σύστηµα Unix Εισαγωγή Περιεχόµενα Λειτουργίες του Λ.Σ. Unix Λογαριασµοί Username Password Userid και Groupid Home Directory Κέλυφος Σύστηµα Αρχείων Pathname examples Pathname σχετικής

Διαβάστε περισσότερα

Πρόβληµα : Πώς θα λύναµε αυτό το πρόβληµα αν είχαµε µόνο χαρτί και µολύβι, και κάποιος µας έλεγε τους αριθµούς προφορικά?

Πρόβληµα : Πώς θα λύναµε αυτό το πρόβληµα αν είχαµε µόνο χαρτί και µολύβι, και κάποιος µας έλεγε τους αριθµούς προφορικά? Πρόβληµα : Γράψτε ένα πρόγραµµα το οποίο - διαβάζει από το πληκτρολόγιο µια σειρά από ακεραίους έως ο χρήστης να δηλώσει ότι δεν υπάρχουν άλλοι - υπολογίζει τη µεγαλύτερη τιµή - εκτυπώνει αυτή την τιµή

Διαβάστε περισσότερα

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ ii ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ 1. Εισαγωγή - Βασικές έννοιες....1 1.1 Εσωτερική παράσταση δεδομένων....2 1.1.1 Παράσταση θέσης....3 1.1.2 Μετατροπές μεταξύ συστημάτων διαφορετικών βάσεων....5 1.1.3 Οι αριθμητικές

Διαβάστε περισσότερα

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 15/11/09, 23:59

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 15/11/09, 23:59 ΣΕΤ ΑΣΚΗΣΕΩΝ 2 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2009-20010 Προθεσµία: 15/11/09, 23:59 Στόχοι Χρήση συναρτήσεων Χρήση µονοδιάστατων πινάκων Διαχείριση συµβολοσειρών Φορµαρισµένη έξοδος δεδοµένων

Διαβάστε περισσότερα

Οργάνωση ενός σύγχρονου Υπολογιστικού Συστήματος ή Ηλεκτρονικού Υπολογιστή (Η/Υ) Τα σύγχρονα συστήματα Η/Υ έχουν την παρακάτω οργάνωση:

Οργάνωση ενός σύγχρονου Υπολογιστικού Συστήματος ή Ηλεκτρονικού Υπολογιστή (Η/Υ) Τα σύγχρονα συστήματα Η/Υ έχουν την παρακάτω οργάνωση: Οργάνωση ενός σύγχρονου Υπολογιστικού Συστήματος ή Ηλεκτρονικού Υπολογιστή (Η/Υ) Τα σύγχρονα συστήματα Η/Υ έχουν την παρακάτω οργάνωση: Page 1 Χρήστης Εφαρμογή Λειτουργικό Σύστημα Υλικό Γνωστά Λειτουργικά

Διαβάστε περισσότερα

Βιβλιοθήκη stdio. Προγραμματισμός II 1

Βιβλιοθήκη stdio. Προγραμματισμός II 1 Βιβλιοθήκη 1 lalis@inf.uth.gr Δεδομένα και ερμηνεία (ξανά) Τα δεδομένα στον Η/Υ έχουν δυαδική μορφή (bytes) Η ερμηνεία των bytes εξαρτάται από το πρόγραμμα που παράγει/καταναλώνει τα δεδομένα Μια δημοφιλής

Διαβάστε περισσότερα

PERL. Δήμος Παύλου Δημήτρης Κουζαπάς

PERL. Δήμος Παύλου Δημήτρης Κουζαπάς PERL Δήμος Παύλου Δημήτρης Κουζαπάς Perl Η Perl είναι μια διερμηνευομένη δυναμική γλώσσα προγραμματισμού. Συνδυάζει χαρακτηριστικά από διάφορες γλώσσες. (C/C++, Awk, Lisp κλπ) Διαδόθηκε λόγω της μεγάλης

Διαβάστε περισσότερα

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Προχωρημένα Θέματα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ανακατεύθυνση Εισόδου/Εξόδου Συνήθως η τυπική είσοδος ενός προγράμματος (stdin) προέρχεται

Διαβάστε περισσότερα

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact: nifantop@unipi.gr Περιεχόμενα ενότητας Διεργασίες Κλήσεις δημιουργίας και τερματισμού διεργασιών Επικοινωνία διεργασιών μέσω

Διαβάστε περισσότερα

υναµική έσµευση Μνήµης (συν.) ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 Εφαρµογή

υναµική έσµευση Μνήµης (συν.) ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 Εφαρµογή υναµική έσµευση Μνήµης (συν.) Στην ενότητα αυτή θα µελετηθούν: Μια εφαρµογή συνδεδεµένων λιστών ιπλά συνδεδεµένες Λίστες ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 1 Εφαρµογή Ζητούµενο: Πρόγραµµα που παίρνει σαν

Διαβάστε περισσότερα

Κεφάλαιο 1.6: Συσκευές αποθήκευσης

Κεφάλαιο 1.6: Συσκευές αποθήκευσης Κεφάλαιο 1.6: Συσκευές αποθήκευσης 1.6.1 Συσκευές αποθήκευσης Μνήμη τυχαίας προσπέλασης - RAM Η μνήμη RAM (Random Access Memory Μνήμη Τυχαίας Προσπέλασης), κρατεί όλη την πληροφορία (δεδομένα και εντολές)

Διαβάστε περισσότερα

υναµικές οµές εδοµένων

υναµικές οµές εδοµένων υναµικές οµές εδοµένων Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: υναµικές οµές εδοµένων Γενικά υναµική έσµευση Μνήµης οµή τύπου structure αυτοαναφορικές δοµές Η δήλωση typedef στη C Αναπαράσταση

Διαβάστε περισσότερα

2.2.3 Η εντολή Εκτύπωσε

2.2.3 Η εντολή Εκτύπωσε 2.2.3 Η εντολή Εκτύπωσε Η εντολή Εκτύπωσε χρησιµοποιείται προκειµένου να εµφανίσουµε κάτι στην οθόνη του υπολογιστή. Για τον λόγο αυτό ονοµάζεται και εντολή εξόδου. Ισοδύναµα µπορεί να χρησιµοποιηθεί και

Διαβάστε περισσότερα

Κεφάλαιο 12: Είσοδος και έξοδος δεδομένων σε αρχεία

Κεφάλαιο 12: Είσοδος και έξοδος δεδομένων σε αρχεία Κεφάλαιο 12: Είσοδος και έξοδος δεδομένων σε αρχεία Τα δεδομένα που επεξεργαζόμαστε, καθώς και ο κώδικας που τρέχουμε, βρίσκονται αποθηκευμένα στη μνήμη RAM (Random Access Memory) του υπολογιστή. Τα δεδομένα

Διαβάστε περισσότερα

Εφαρμογές Σειριακής Επικοινωνίας

Εφαρμογές Σειριακής Επικοινωνίας Εφαρμογές Σειριακής Επικοινωνίας Εισαγωγή Στο μάθημα αυτό θα μάθουμε πώς να χρησιμοποιούμε την βιβλιοθήκη serial για την επικοινωνία από την πλατφόρμα Arduino πίσω στον υπολογιστή μέσω της θύρας usb. Τι

Διαβάστε περισσότερα

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ IΙ Λύβας Χρήστος chrislibas@ssl-unipi.gr Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος >_ ΔΙΕΡΓΑΣΙΕΣ +- Με τον όρο διεργασία στο UNIX εννοούμε τη δυναμικη πράξη της

Διαβάστε περισσότερα

H ΓΛΩΣΣΑ C. Μάθηµα 17: Είσοδος/Έξοδος: Επικοινωνία µε το Λειτουργικό Σύστηµα. ηµήτρης Ψούνης

H ΓΛΩΣΣΑ C. Μάθηµα 17: Είσοδος/Έξοδος: Επικοινωνία µε το Λειτουργικό Σύστηµα. ηµήτρης Ψούνης H ΓΛΩΣΣΑ C Μάθηµα 17: Είσοδος/Έξοδος: Επικοινωνία µε το Λειτουργικό Σύστηµα ηµήτρης Ψούνης 2 Περιεχόµενα Μαθήµατος Σύστηµα 1. Γενικά 2. Λειτουργικό Σύστηµα 3. Ορίσµατα Γραµµής Εντολής 1. Ορισµός της main

Διαβάστε περισσότερα

Βασικές Έννοιες της Πληροφορικής

Βασικές Έννοιες της Πληροφορικής Βασικές Έννοιες της Πληροφορικής Ηλεκτρονικός Υπολογιστής Αυτόματη ηλεκτρονική μηχανή που δέχεται, φυλάσσει, επαναφέρει, επεξεργάζεται και παρουσιάζει πληροφορίες σύμφωνα με προκαθορισμένες εντολές. Δεδομένα

Διαβάστε περισσότερα

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε

Διαβάστε περισσότερα

Σύντοµο Εγχειρίδιο Χρήσης. του Λογισµικού Στατιστικής Επεξεργασίας. SPSS for Windows v. 8.0

Σύντοµο Εγχειρίδιο Χρήσης. του Λογισµικού Στατιστικής Επεξεργασίας. SPSS for Windows v. 8.0 Εθνικό & Καποδιστριακό Πανεπιστήµιο Αθηνών Τµήµα Μεθοδολογίας, Ιστορίας & Θεωρίας της Επιστήµης ιαπανεπιστηµιακό Πρόγραµµα Μεταπτυχιακών Σπουδών «Βασική και Εφαρµοσµένη Γνωσιακή Επιστήµη» Σύντοµο Εγχειρίδιο

Διαβάστε περισσότερα

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1 Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα Προγραμματισμός II 1 lalis@inf.uth.gr Χρήση λογισμικού που ήδη υπάρχει Τα πολύπλοκα συστήματα αναπτύσσονται σταδιακά, «χτίζοντας» πάνω σε υπάρχουσα λειτουργικότητα

Διαβάστε περισσότερα

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 8: Αρχεία και Δομές Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες Χρήσης Το παρόν

Διαβάστε περισσότερα

Χειρισµός Σφαλµάτων. Γρηγόρης Τσουµάκας. Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης. Έκδοση:

Χειρισµός Σφαλµάτων. Γρηγόρης Τσουµάκας. Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης. Έκδοση: Χειρισµός Σφαλµάτων Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Έκδοση: 2010.12.06 Σφάλµατα, Σφάλµατα, Σφάλµατα 2 εν υπάρχουν προγράµµατα χωρίς λογικά λάθη Υλοποίηση που

Διαβάστε περισσότερα

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία Λειτουργικά Συστήματα Ι Καθηγήτρια Παπαδάκη Αναστασία 2013 1 - 2 - Κεφάλαιο 2 ο Δευτερεύουσα μνήμη Οι εύκαμπτοι μαγνητικοί δίσκοι (floppy disks) ή δισκέτες Οι σκληροί μαγνητικοί δίσκοι (hard disks) Οι

Διαβάστε περισσότερα

Προγραμματισμός συστημάτων UNIX/POSIX. Διαδιεργασιακή επικοινωνία: αγωγοί (IPC inter-process communication: pipes)

Προγραμματισμός συστημάτων UNIX/POSIX. Διαδιεργασιακή επικοινωνία: αγωγοί (IPC inter-process communication: pipes) Προγραμματισμός συστημάτων UNIX/POSIX Διαδιεργασιακή επικοινωνία: αγωγοί (IPC inter-process communication: pipes) Επικοινωνία μεταξύ διεργασιών γονέα-παιδιού Κατά κάποιο τρόπο, θα δημιουργήσουμε ένα τύπο

Διαβάστε περισσότερα

Σύντοµες οδηγίες χρήσης atube Catcher

Σύντοµες οδηγίες χρήσης atube Catcher Σύντοµες οδηγίες χρήσης atube Catcher ελλατόλας Στέλιος 2 ο Ε.Κ.Φ.Ε. Ηρακλείου Κρήτης Περιεχόµενα Εγκατάσταση του προγράµµατος...4 Λειτουργία του προγράµµατος...6 Βασική λειτουργία (κατέβασµα ένα - ένα

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Δέκατη-τρίτη (13 η ) τρίωρη διάλεξη. Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/

Διαβάστε περισσότερα

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία Λειτουργικά Συστήματα Ι Καθηγήτρια Παπαδάκη Αναστασία 2013 1 Ηλεκτρονικός Υπολογιστής αποτελείται: 1. Από Υλικό Hardware (CPUs, RAM, Δίσκοι), & 2. Λογισμικό - Software Και μπορεί να εκτελέσει διάφορες

Διαβάστε περισσότερα

Κεφάλαιο 3.1, : Συναρτήσεις I. ( ιάλεξη 11) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κεφάλαιο 3.1, : Συναρτήσεις I. ( ιάλεξη 11) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 3.1,3.3-3.4: Συναρτήσεις I ( ιάλεξη 11) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 11-1 Μη- οµηµένος Προγραµµατισµός Το πρόγραµµα στα αριστερά δεν είναι Αρθρωτό (δεν έχει σωστή δοµή). Όλη η λειτουργικότητα

Διαβάστε περισσότερα

Τη φυσική (MAC) διεύθυνση που δίνει ο κατασκευαστής του δικτυακού υλικού στις συσκευές του (π.χ. στις κάρτες δικτύου). Η περιοχή διευθύνσεων που

Τη φυσική (MAC) διεύθυνση που δίνει ο κατασκευαστής του δικτυακού υλικού στις συσκευές του (π.χ. στις κάρτες δικτύου). Η περιοχή διευθύνσεων που 7.7 Πρωτόκολλο ARP 1 ύο είδη διευθύνσεων: MAC - IP Τη φυσική (MAC) διεύθυνση που δίνει ο κατασκευαστής του δικτυακού υλικού στις συσκευές του (π.χ. στις κάρτες δικτύου). Η περιοχή διευθύνσεων που µπορεί

Διαβάστε περισσότερα

4.3. Γραµµικοί ταξινοµητές

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

Διαβάστε περισσότερα

Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Λειτουργικό Σύστημα:

Διαβάστε περισσότερα

Προγραμματισμό για ΗΜΥ

Προγραμματισμό για ΗΜΥ ΕΠΛ 034: Εισαγωγή στον Προγραμματισμό για ΗΜΥ Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 3 Εισαγωγή στην C Θέματα ιάλεξης Σύνταξη και Σημασιολογία

Διαβάστε περισσότερα

Ενσωματωμένα Συστήματα

Ενσωματωμένα Συστήματα Ενσωματωμένα Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ ARDUINO Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών

Διαβάστε περισσότερα

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1 Δημιουργία & Τερματισμός Διεργασιών Προγραμματισμός II 1 lalis@inf.uth.gr Δημιουργία νέας διεργασίας pid_t fork() Η fork δεν έχει παραμέτρους Δημιουργεί μια νέα διεργασία που είναι ένα αντίγραφο της διεργασίας

Διαβάστε περισσότερα

Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή

Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή Φτάσαμε σιγά σιγά στο τέλος του βιβλίου. Αντί για κάποιον επίλογο σκέφτηκα να συλλέξω κάποια πράγματα που θα ήθελα να πω σε κάποιον ο οποίος αρχίζει

Διαβάστε περισσότερα

H ΓΛΩΣΣΑ C. Μάθηµα 15: Είσοδος/Έξοδος: Συναρτήσεις Εισόδου. ηµήτρης Ψούνης

H ΓΛΩΣΣΑ C. Μάθηµα 15: Είσοδος/Έξοδος: Συναρτήσεις Εισόδου. ηµήτρης Ψούνης H ΓΛΩΣΣΑ C Μάθηµα 15: Είσοδος/Έξοδος: Συναρτήσεις Εισόδου ηµήτρης Ψούνης 2 Περιεχόµενα Μαθήµατος Α. Ροές 1. Γενικά 2. Η ροή προκαθορισµένης εισόδου stdin 3. Η ροή προκαθορισµένης εξόδου stdout 4. Η ροή

Διαβάστε περισσότερα

Δυναμική δέσμευση και αποδέσμευση μνήμης. Προγραμματισμός II 1

Δυναμική δέσμευση και αποδέσμευση μνήμης. Προγραμματισμός II 1 Δυναμική δέσμευση και αποδέσμευση μνήμης Προγραμματισμός II 1 lalis@inf.uth.gr Γιατί χρειάζεται η δυναμική μνήμη; Οι απαιτήσεις του προγράμματος σε μνήμη μπορεί να είναι άγνωστες την ώρα της συγγραφής

Διαβάστε περισσότερα

Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 4 η. Βασίλης Στεφανής

Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 4 η. Βασίλης Στεφανής Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ Διάλεξη 4 η Βασίλης Στεφανής Πληροφοριακό σύστημα Υπενθύμιση του βασικού μοντέλου Είσοδος Επεξεργασία Έξοδος Ας δούμε επιπλέον λεπτομέρειες! Λογισμικό Λογισμικό: Δίνει εντολές στο

Διαβάστε περισσότερα

Επιτεύγµατα των Λ.Σ.

Επιτεύγµατα των Λ.Σ. Επιτεύγµατα των Λ.Σ. ιεργασίες ιαχείριση Μνήµης Ασφάλεια και προστασία δεδοµένων Χρονοπρογραµµατισµός & ιαχείρηση Πόρων οµή Συστήµατος ιεργασίες Ένα πρόγραµµα σε εκτέλεση Ένα στιγµιότυπο ενός προγράµµατος

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 11 - Απαντήσεις

ΕΡΓΑΣΤΗΡΙΟ 11 - Απαντήσεις Με µαύρο τα κοµµάτια από την εκφώνηση. Με µπλε απαντήσεις κι επεξηγήσεις. Με κόκκινο τα πιο συχνά λάθη που είδαµε. Άσκηση Παρασκευής ΕΡΓΑΣΤΗΡΙΟ 11 - Απαντήσεις Σε αυτή την άσκηση θα γράψετε ένα πρόγραµµα

Διαβάστε περισσότερα

Συστήματα Αρχείων (Σ.Α.)

Συστήματα Αρχείων (Σ.Α.) Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άδεια χρήσης άλλου τύπου, αυτή πρέπει να αναφέρεται ρητώς. Συστήματα

Διαβάστε περισσότερα

Εργαστήριο Λειτουργικών Συστημάτων. Minix Overview

Εργαστήριο Λειτουργικών Συστημάτων. Minix Overview Εργαστήριο Λειτουργικών Συστημάτων Minix Overview Σύνοψη 5ης ιάλεξης Λειτουργικό Σύστημα Minix Οργάνωση του Λειτουργικού Συστήματος Οργάνωση πηγαίου κώδικα Minix recompilation Σύνοψη Μαθήματος Σύνοψη Μαθήματος

Διαβάστε περισσότερα

TTRM: paragwgă pinĺkwn kai mhqană anazăthshc katĺ th dwdekafjoggikă anĺlush mousikÿn èrgwn

TTRM: paragwgă pinĺkwn kai mhqană anazăthshc katĺ th dwdekafjoggikă anĺlush mousikÿn èrgwn EÖtupon TeÜqoc No. 0 >AprÐlioc 00 TTRM: paragwgă pinĺkwn kai mhqană anazăthshc katĺ th dwdekafjoggikă anĺlush mousikÿn èrgwn Alèxandroc Drosèlthc Lüderitzstrasse D- Berlin Deutschland / ermanða Prìlogoc

Διαβάστε περισσότερα

ΗΜΙΟΥΡΓΙΑ ΙΣΤΟΣΕΛΙ ΑΣ ΣΤΟ MICROSOFT WORD

ΗΜΙΟΥΡΓΙΑ ΙΣΤΟΣΕΛΙ ΑΣ ΣΤΟ MICROSOFT WORD ΗΜΙΟΥΡΓΙΑ ΙΣΤΟΣΕΛΙ ΑΣ ΣΤΟ MICROSOFT WORD Σε ορισµένες περιπτώσεις είναι ιδιαίτερα χρήσιµη η δηµιουργία ιστοσελίδων ενηµερωτικού περιεχοµένου οι οποίες στη συνέχεια µπορούν να δηµοσιευθούν σε κάποιο τόπο

Διαβάστε περισσότερα

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη Προτάσεις,

Διαβάστε περισσότερα

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ . 1 ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ ΠΛΟΗΓΗΣΗ ΣΕ ΕΠΙΛΕΓΜΕΝΕΣ ΙΣΤΟΣΕΛΙ ΕΣ ΣΤΟ ΙΑ ΙΚΤΥΟ ΚΑΙ ΜΗΧΑΝΕΣ ΑΝΑΖΗΤΗΣΗΣ Πλοήγηση στην ιστοσελίδα του Υπουργείου Παιδείας...4 Πλοήγηση σε µια ιστοσελίδα...5 Άνοιγµα µιας σελίδας

Διαβάστε περισσότερα

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Λειτουργικά Συστήματα Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Στέργιος Παλαμάς, Υλικό Μαθήματος «Λειτουργικά Συστήματα», 2015-2016 Κεφάλαιο 3: Είσοδος - Έξοδος Τα περισσότερα συστήματα

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα

Διαβάστε περισσότερα

Πληροφορίες. Εισαγωγή στην Πληροφορική. Κατηγορίες υλισµικού. Περίληψη µαθήµατος (συνέχεια) Επεξεργαστής Μνήµη. Χειµερινό Εξάµηνο 2006-07

Πληροφορίες. Εισαγωγή στην Πληροφορική. Κατηγορίες υλισµικού. Περίληψη µαθήµατος (συνέχεια) Επεξεργαστής Μνήµη. Χειµερινό Εξάµηνο 2006-07 Πληροφορίες Εισαγωγή στην Πληροφορική Χειµερινό Εξάµηνο 2006-07 ρ. Παναγιώτης Χατζηδούκας (Π..407/80) Μόνο για την επόµενη Τετάρτη 25/10, το µάθηµα (12-13) δεν θα πραγµατοποιηθεί. Τα εργαστήρια θα ξεκινήσουν

Διαβάστε περισσότερα

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004) 32 ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004) ιάλεξη 5 5.1 Ι ΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ Εκτός από τους µονοδιάστατους πίνακες ή διανυσµατα που συζητήσαµε στην παράγραφο 4.1, µπορούµε να αποθηκεύσουµε

Διαβάστε περισσότερα

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 5 Απριλίου 01 1 Πίνακες Είδαμε ότι δηλώνοντας μία μεταβλητή κάποιου συγκεκριμένου τύπου δεσμεύουμε μνήμη κατάλληλη για να αποθηκευτεί μία οντότητα

Διαβάστε περισσότερα

Αντικειµενοστρεφής Προγραµµατισµός

Αντικειµενοστρεφής Προγραµµατισµός 16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα της γλώσσας C, το Dev-C++, το οποίο είναι εφαρμογή που τρέχει

Διαβάστε περισσότερα

[11] Υπολογιστικά συστήματα: Στρώματα. Περιεχόμενα. Εισαγωγή. επικοινωνία εφαρμογές λειτουργικό σύστημα προγράμματα υλικό

[11] Υπολογιστικά συστήματα: Στρώματα. Περιεχόμενα. Εισαγωγή. επικοινωνία εφαρμογές λειτουργικό σύστημα προγράμματα υλικό Υπολογιστικά συστήματα: Στρώματα 1 ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗς ΠΛΗΡΟΦΟΡΙΚΗΣ επικοινωνία εφαρμογές λειτουργικό σύστημα προγράμματα υλικό δεδομένα Εισαγωγή στο Unix Περιεχόμενα Εισαγωγή 2 Εισαγωγή

Διαβάστε περισσότερα

Ανάπτυξη Plugins για το AgentSheets

Ανάπτυξη Plugins για το AgentSheets Ανάπτυξη Plugins για το AgentSheets Thought Amplifier AgentSheets Ανάπτυξη Plugins AgentSheets 2.5 Συγγραφείς Τεκµηρίωσης: Alexander Repenning και Ronald Sudomo Εξελληνισµός Τεκµηρίωσης: Λίνος Βίγκλας,

Διαβάστε περισσότερα

Λιβανός Γιώργος Εξάμηνο 2017Β

Λιβανός Γιώργος Εξάμηνο 2017Β Λιβανός Γιώργος Εξάμηνο 2017Β Υπολογιστικό σύστημα Υλικό (hardware) Λογισμικό (Software) Ολοκληρωμένα κυκλώματα, δίσκοι, οθόνη, κλπ. Λογισμικό συστήματος Προγράμματα εφαρμογών Χρειάζονται ένα συντονιστή!!!

Διαβάστε περισσότερα

SMPcache. Ένα εργαλείο για προσομοίωση-οπτικοποίηση κρυφής μνήμης (Cache)

SMPcache. Ένα εργαλείο για προσομοίωση-οπτικοποίηση κρυφής μνήμης (Cache) SMPcache Ένα εργαλείο για προσομοίωση-οπτικοποίηση κρυφής μνήμης (Cache) 1. Βασικές ρυθμίσεις του συστήματος: δημιουργία μια δικής μας σύνθεσης συστήματος. Το SMPcache είναι ένα εργαλείο με το οποίο μπορούμε

Διαβάστε περισσότερα

Σύστηµα Αρχείων και Καταλόγων

Σύστηµα Αρχείων και Καταλόγων ΕΠΛ 003 ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Σύστηµα Αρχείων και Καταλόγων ιάλεξη 7 (Κεφάλαιο 11 του βιβλίου) Στόχοι Κεφαλαίου Περιγραφή της έννοιας του αρχείου, συστήµατος

Διαβάστε περισσότερα

είκτες και Πίνακες (2)

είκτες και Πίνακες (2) είκτες και Πίνακες (2) Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Πολυδιάστατοι πίνακες Πέρασµα παραµέτρων σε προγράµµατα C ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 1-1 Πίνακες εικτών Πίνακας δεικτών είναι

Διαβάστε περισσότερα

ΗΥ-150. Προγραμματισμός

ΗΥ-150. Προγραμματισμός ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράμματα «γράφονται» χρησιμοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαμβάνει

Διαβάστε περισσότερα

Η γλώσσα προγραμματισμού C

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εισαγωγή στη C Λίγα λόγια για την C Γλώσσα προγραμματισμού υψηλού επιπέδου. Σχεδιάστηκε και υλοποιήθηκε από τον Dennis Richie στις αρχές της δεκαετίας του 1970 (Bell Labs). Η

Διαβάστε περισσότερα

Linux με τη χρήση κονσόλας

Linux με τη χρήση κονσόλας Linux με τη χρήση κονσόλας Κεφάλαιο 2 Κείμενα Χρυσούλα Παπάζογλου Πανεπιστήμιο Μακεδονίας, Βιβλιοθήκη και Κέντρο Πληροφόρησης Υπηρεσία Ασύγχρονης Τηλεκπαίδευσης Θεσσαλονίκη, Μάρτης 2009 Το υλικό διατίθεται

Διαβάστε περισσότερα

"ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ" (ΕΜ102), ΕΡΓΑΣΙΑ 1η

ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ (ΕΜ102), ΕΡΓΑΣΙΑ 1η "ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ" (ΕΜ102), ΕΡΓΑΣΙΑ 1η Σε αυτήν την εργασία καλείστε να κατασκευάσετε τον πηγαίο κώδικα γλώσσας C για το εκτελέσιµο αρχείο µε ό- νοµα ATM, που όταν εκτελείται σε κονσόλα προσοµοιώνει

Διαβάστε περισσότερα

Κωστόπουλος ηµήτριος Μ.Π.Λ.Α. TAPE COMPRESSION (θεώρηµα 2.3 Παπαδηµητρίου)

Κωστόπουλος ηµήτριος Μ.Π.Λ.Α. TAPE COMPRESSION (θεώρηµα 2.3 Παπαδηµητρίου) Κωστόπουλος ηµήτριος Μ.Π.Λ.Α. TAPE COMPRESSION (θεώρηµα 2.3 Παπαδηµητρίου) Εισαγωγή. Αυτό το φυλλάδιο έχει στόχο να δώσει ένα ανάλογο αποτέλεσµα µε αυτό του linear speedup θεωρήµατος, εάν έχουµε µία µηχανή

Διαβάστε περισσότερα

Ενότητα 3 - Θέματα Εφαρμοσμένης Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Ενότητα 3 - Θέματα Εφαρμοσμένης Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19 Ενότητα 3 - Θέματα Εφαρμοσμένης Επιστήμης Υπολογιστών 3.1.1 Λογισμικό και Υπολογιστικό Σύστημα Τι είναι το υλικό ενός υπολογιστικού συστήματος; Το σύνολο των ηλεκτρονικών και μηχανικών μερών του που έχουν

Διαβάστε περισσότερα

ΜΑΘΗΜΑ: ΕΙΑΓΩΓΗ ΣΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ (UNIX) ΕΡΓΑΣΤΗΡΙΟ. 9o ΕΡΓΑΣΤΗΡΙΟ

ΜΑΘΗΜΑ: ΕΙΑΓΩΓΗ ΣΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ (UNIX) ΕΡΓΑΣΤΗΡΙΟ. 9o ΕΡΓΑΣΤΗΡΙΟ 9o ΕΡΓΑΣΤΗΡΙΟ ΣΤΟΧΟΣ σενάρια φλοιού ΑΣΚΗΣΗ 1 Να γράψετε ένα σενάριο φλοιού (shell script) που : 1. θα δέχεται ως ορίσματα εισόδου : το όνομα ενός καταλόγου (να ελέγξετε την ύπαρξη του καταλόγου). μια επέκταση

Διαβάστε περισσότερα