Εργαστήριο Λειτουργικών Συστημάτων (330E) Εργαστηριακή Άσκηση

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

Download "Εργαστήριο Λειτουργικών Συστημάτων (330E) Εργαστηριακή Άσκηση"

Transcript

1 Πανεπιστήμιο Πατρών Πολυτεχνική Σχολή Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Εργαστήριο Λειτουργικών Συστημάτων (330E) Εργαστηριακή Άσκηση Θέμα Υλοποίηση ενός υποτυπώδους /proc Filesystem για το MINIX Θεωρία Η έννοια του FileSystem είναι κατά κανόνα συνδεδεμένη με την έννοια μιας υπηρεσίας επιπέδου πυρήνα η οποία αναλαμβάνει τη διαχείριση αρχείων και καταλόγων στο σύστημα μας. Η λειτουργικότητας μιας οργάνωσης όπως αυτή που συνεπάγεται ένα κοινό FileSystem, ειδικά στα *nix συστήματα, με τον κύριο κατάλογο ( root: / ) και τους ένθετους σε αυτόν υποκαταλόγους (/etc, /bin, /usr κτλ), είναι ιδιαίτερα σαφής και οικεία σε όλους τους χρήστες υπολογιστών. Η λειτουργικότητα αυτή, που επιτρέπει στον χρήστη να οργανώνει τα αρχεία του σε καταλόγους και υποκαταλόγους, να τα ανοίγει, να τα διαβάζει και να τα αλλάζει κατά βούληση, είναι αυτή την οποία θέλησαν να εκμεταλλευθούν οι σχεδιαστές του /proc FileSystem. Πέρα όμως από αυτή την παράμετρο, το /proc ουδεμία σχέση έχει με FileSystems διαχείρισης αρχείων: δεν αποθηκεύει αρχεία με τη μορφή binary ή text που γνωρίζουμε. Θα χρησιμοποιήσουμε για την (αφαιρετική) περιγραφή του σαν παράδειγμα το λειτουργικό σύστημα GNU/Linux, μιας και μπορεί ο καθένας να έχει πρόσβαση εύκολα σε ένα τέτοιο (ο γνωστός server του τμήματος diogenis τρέχει κάποια έκδοση του). Ας υποθέσουμε ότι έχουμε σε ένα GNU/Linux σύστημα δύο σκληρούς δίσκους: έναν formatted με FAT32 FileSystem (κοινό στα συστήματα Windows), και έναν με EXT3 (κοινό στα GNU/Linux συστήματα). Τότε θα πρέπει να «προσδέσουμε» (mount) τις αντίστοιχες συσκευές κάτω από τον κοινό root / κατάλογο για να μπορούμε να τις δούμε. Το ίδιο γίνεται για το /proc FileSystem: μια εικονική συσκευή, η proc device, προσδένεται στον κατάλογο /proc. Τυπικά, η εικονική αυτή συσκευή είναι formatted σαν /proc FileSystem. Κάτω από τον κατάλογο /proc, αμέσως μόλις γίνει mount, υπάρχουν μια σειρά από αρχεία και κατάλογοι. Τα περισσότερα από τα αρχεία όμως έχουν μηδενικό μέγεθος και χαρακτηριστικά ονόματα. Για παράδειγμα υπάρχει το αρχείο cpuinfo και το iomem, o κατάλογος ide και μια σειρά από καταλόγους με ονόματα αριθμούς. Μάλιστα αυτά τα αρχεία ποτέ δεν τα δημιουργήσατε εσείς ή κάποιος άλλος: δε σχετίζονται και δεν υπάρχουν κάπου στον υπολογιστή σας, εκτός ίσως από τη μνήμη (RAM) του. Είναι απλά μια μέθοδος να δει κανείς την εικόνα του πυρήνα για το σύστημα, να του ζητήσει ή και να του δώσει πληροφορίες. 1

2 Τι συμβαίνει ακριβώς: Το /proc FS είναι μια παράμετρος που ενεργοποιήθηκε κατά το compilation του πυρήνα του GNU/Linux. Η παράμετρος αυτή υπαγόρευσε στον πυρήνα να κατασκευάσει εσωτερικές δομές (structs) στις οποίες, στη μνήμη, θα κρατά πληροφορίες για την τρέχουσα κατάσταση του συστήματος. Η ανάγνωση κάθε αρχείου στον κατάλογο /proc αντιστοιχεί στην ανάγνωση τέτοιων δομών απευθείας από τον πυρήνα. Οι πληροφορίες που περιέχουν τα εν λόγω αρχεία αφορούν πρώτα πρώτα το υλικό, όπως από ποιόν κατασκευαστή και ποια έκδοση είναι η CPU, τι εντολές υποστηρίζει, ποια είναι η ανάθεση καταχωρητών μνήμης στο σύστημα μας, και ανάλογες πληροφορίες. Μάλιστα, όταν υπάρχουν πολλές ομοειδείς πληροφορίες, τοποθετούνται κάτω από έναν κοινό κατάλογο, πχ στον ide τοποθετούνται αρχεία με πληροφορίες που αφορούν τον ide controller. Οι πληροφορίες αυτές μπορεί να είναι αναγνώσιμες και να έχουν νόημα για τον άνθρωπο που τις διαβάζει, μπορεί όμως και όχι. Πλέον αυτών, το /proc FS διατηρεί πληροφορίες για την τρέχουσα κατάσταση του συστήματος σε ό,τι αφορά το λογισμικό, και φυσικά πιο συγκεκριμένα τις τρέχουσες διεργασίες. Κάτω από τον /proc κατάλογο λοιπόν, δημιουργούνται φάκελοι με ονόματα τα PIDs των τρεχουσών διεργασιών του συστήματος. Όλα αυτά γίνονται και παραμένουν τελείως δυναμικά: μια διεργασία που δε θα υπάρχει πλέον στο σύστημα, δε θα έχει και κατάλογο στο /proc FS. Ο κατάλογος αυτός περιέχει για κάθε διεργασία χρήσιμες πληροφορίες, όπως την κατάσταση της, τα δικαιώματα της, τον κατάλογο στον οποία εργάζεται (working directory), πληροφορίες για τη μνήμη που έχει δεσμεύσει η διεργασία και το πως τη διαχειρίζεται κλπ. Όλες αυτές οι πληροφορίες είναι οργανωμένες και πάλι σε μια σειρά από χαρακτηριστικά αρχεία: cmdline, που αναγράφει την εντολή που αντιστοιχεί στη διεργασία, environ, που αφορά τις τρέχουσες μεταβλητές περιβάλλοντος, status, που περιέχει pending signals κ.α. Επιπλέον, για να μπορεί ο κάθε χρήστης να έχει πρόσβαση σε πληροφορίες που αφορούν διεργασίες δικές του ή κοινού ενδιαφέροντος, κάθε κατάλογος και αρχείο που δημιουργείται, έχει τα δικαιώματα που έχει και η αντίστοιχη διεργασία. Όπως έχουμε πει, η διεπαφή του λειτουργικού συστήματος με τον χρήστη προγραμματιστή είναι κυρίως τα system calls του. Όπως μπορεί κανείς να αντιληφθεί, η ανάγνωση ενός αρχείου στο /proc FS δε μπορεί να είναι ίδια με αυτή με ένα πραγματικό αρχείο σε FAT32 FS: στη δεύτερη περίπτωση ψάχνουμε inodes, ανοίγουμε filedescriptors, κινούμαστε μέσα στο αρχείο, ενώ στη δεύτερη παρακάμπτουμε τη συνήθη διαδικασία και διαβάζουμε κατευθείαν τις πληροφορίες που μας δίνει ο πυρήνας, φροντίζοντας να τις επιστρέψουμε σε αναγνώσιμη μορφή. Αυτό σημαίνει μια διαφοροποίηση σε system calls διαχείρισης αρχείων: αλλιώς θα χειρίζονται τα πραγματικά αρχεία και αλλιώς τα εικονικά στο /proc FS. Επιπλέον, το γεγονός ότι το σύστημα είναι δυναμικό, σημαίνει πως οι ανάλογες δομές θα πρέπει να ενημερώνονται με κάθε αλλαγή στην κατάσταση του συστήματος. Έτσι ένα fork θα πρέπει να σημάνει και τη δημιουργία ενός καταλόγου στο /proc FS, με τα δικαιώματα και το PID της διεργασίας που το εκτέλεσε. Όλα αυτά σημαίνουν τροποποίηση βασικών system calls. Τέλος, θα πρέπει να σημειωθεί πως ειδικά στο GNU/Linux υπάρχουν system calls που επιτρέπουν στο χρήστη να ανοίξει ένα αρχείο, να αλλάξει πληροφορίες εντός του και αυτές να περάσουν στον πυρήνα: πχ θα μπορούσε να αλλάξει το uid του χρήστη που εκτελεί μια διεργασία δυναμικά. Στόχοι Στα πλαίσια της παρούσας άσκησης, θα προσπαθήσουμε να έχουμε μια πρώτη επαφή με την έννοια ενός /proc FS. Η υλοποίηση που θα επιχειρήσουμε θα είναι εντελώς υποτυπώδης και θα στερείτε των βασικών χαρακτηριστικών μιας πλήρους υλοποίησης, όπως η περιγραφείσα. Αυτό οφείλεται τόσο στους περιορισμούς που εισάγει η ίδια η υποδομή του MINIX, όσο και σε περιορισμούς που 2

3 αφορούν την πολυπλοκότητα της υλοποίησης. Ωστόσο θα μας φέρει σε επαφή με τη διαδικασία τροποποίησης και προσθήκης system calls στο λειτουργικό σύστημα MINIX και το μηχανισμό περάσματος μηνυμάτων ανάμεσα στο χρήστη και στα διάφορα επίπεδα του πυρήνα. Ζητούμενα Η υλοποίηση του /proc FS για το MINIX που χρησιμοποιούμε στο εργαστήριο θα είναι υποτυπώδης. Το /proc FS που σας ζητείται δε θα είναι δυναμικό. Αυτό σημαίνει πως θα «χτίζεται» και θα περιέχει πληροφορίες που θα ανανεώνονται αποκλειστικά κατόπιν αίτησης του χρήστη. Επιπλέον τα αρχεία που το αφορούν θα είναι πραγματικά: δε θα έχουν δηλαδή μηδενικό μέγεθος, αλλά θα περιέχουν τα δεδομένα τους όπως τα συνήθη αρχεία κειμένου. Το ίδιο θα ισχύει και για τους καταλόγους: δε θα έχουν τίποτα το ιδιαίτερο, θα είναι συνήθεις κατάλογοι του Minix FS. Περιττό να αναφερθεί πως το proc FS δε θα αντιστοιχεί σε καμία εικονική συσκευή. Εν ολίγοις θα πρέπει να κατασκευάσετε και να προσθέσετε στον FS δυο system calls: το ένα εξ αυτών θα χτίζει τη δομή καταλόγου ενός /proc FS κάτω από το ζητούμενο directory και το δεύτερο θα το ανανεώνει (δηλαδή τα αρχεία που αυτό περιέχει σε κάθε υποκατάλογο) με την τρέχουσα κατάσταση του συστήματος, σε ό, τι αφορά μόνο τις τρέχουσες διεργασίες. Τo interface που θα χρησιμοποιείτε1 για την κλήση των δυο αυτών system calls θα έχει ως εξής: int procfs_create(const char * path_name) και θα καλείται από τον root για να κατασκευαστεί το proc FS και όπου: το string path_name θα είναι ο υπαρκτός κατάλογος κάτω από τον οποίο θα δημιουργηθεί το proc FS (για παράδειγμα αν δώσετε σαν όρισμα τον κατάλογο /usr, το proc FS θα δημιουργηθεί κάτω από τον κατάλογο /usr/proc) η επιστρεφόμενη τιμή int θα είναι: o EINVAL αν το path_name δεν είναι έγκυρο o EPERM αν ο χρήστης δεν είναι ο root o EGENERIC για οποιοδήποτε άλλο μη προσδοκώμενο λάθος int procfs_update(void) και θα καλείται από οποιονδήποτε χρήστη για να ανανεωθεί το proc FS με τις τρέχουσες πληροφορίες του συστήματος και όπου η επιστρεφόμενη τιμή int θα είναι: o EGENERIC για οποιοδήποτε μη προσδοκώμενο λάθος Σε ότι αφορά τις πληροφορίες κάθε διεργασίας, αυτές θα περιέχονται σε 5 αρχεία, με τα εξής ονόματα, και με μορφοποίηση της επιλογής σας: status : για την κατάσταση μιας διεργασίας (πχ pending signals) psinfo : με πληροφορίες για τη διεργασία (πχ runtime) credentials : για τα δικαιώματα της διεργασίας, πχ uid, gid, egid κτλ memap : για το address map της διεργασίας cwd : για το working directory της διεργασίας Τα αρχεία αυτά μπορείτε να τα εμπλουτίσετε όσο εσείς θέλετε με πληροφορίες που θα πάρετε από 1 Περιγράφεται το interface της βιβλιοθήκης: οδηγίες για το πώς θα το αξιοποιήσετε περιέχονται στο παράρτημα. 3

4 τον πυρήνα και τα services του λειτουργικού (kernel, mm, fs). Επιπλέον θα πρέπει να κατασκευάσετε ένα απλό και τυπικό user level πρόγραμμα που θα αξιοποιεί το υποτυπώδες proc filesystem για να δίνει πληροφορίες στον χρήστη ένα πρόγραμμα επίδειξης του proc FS σας. Μια καλή ιδέα για την εμφάνιση ενός τέτοιου προγράμματος είναι η εντολή ps. Συμβουλές Ακολουθείστε τη γενικότερη υπόδειξη που δίνεται για την υλοποίηση ασκήσεων τέτοιου τύπου και η οποία είναι η σταδιακή προσέγγιση του προβλήματος. Μην προσπαθείτε να υλοποιήσετε το σύνολο των ζητούμενων απευθείας. Κατασκευάστε ενδιάμεσες λειτουργικές εκδόσεις που υλοποιούν ένα υποσύνολο των ζητούμενων και των οποίων την ορθότητα μπορείτε εύκολα να επαληθεύσετε τυπώνοντας μηνύματα ελέγχου σε κάθε φάση. Για παράδειγμα η συγκεκριμένη άσκηση μπορεί να χωριστεί στα εξής τμήματα: procfs_create: εξυπηρέτηση από τον fs 1. υλοποίηση ενός dummy system call που εκτυπώνει απλά ένα μήνυμα 2. επέκταση του (i) έτσι ώστε να εκτυπώνονται τα ορίσματα που περιέχονται στο μήνυμα του system call 3. προσθήκη κατάλληλων δομών που θα συγκρατούν τη θέση του τρέχοντος proc fs (όρισμα library call) 4. προσθήκης μιας εσωτερικής συνάρτησης που θα επιτυγχάνει την αλλαγή (αν είναι δυνατή), στον κατάλογο όρισμα 5. επέκταση της παραπάνω προσθήκης ώστε στη γενική της μορφή να λειτουργεί σαν change_and_make_directory(which_directory): εφαρμογή ώστε να δημιουργείται το directory proc, αν δεν υπάρχει ήδη 6. προσθήκη κατάλληλων δομών που θα συγκρατούν τη θέση του τρέχοντος proc fs procfs_update: εξυπηρέτηση από τον fs 1. υλοποίηση ενός dummy system call που εκτυπώνει απλά ένα μήνυμα 2. επέκταση του ώστε να επιβεβαιώνει την ύπαρξη procfs και να εκτυπώνει τη θέση του 3. προσθήκη κατάλληλων δομών που θα συγκρατούν τα ζητούμενα δεδομένα από όλα τα process tables: kernel, fs, mm 4. προσθήκη συναρτήσεων που να ζητούν απαραίτητες πληροφορίες από τα έτερα services: πχ αν το system call υλοποιείται στο fs, να στέλνεται ένα μήνυμα στον mm και η απάντηση να περιέχει τις ζητούμενες πληροφορίες από το process table 5. προσθήκη συνάρτησης που να δημιουργεί το αρχείο με το κατάλληλο όνομα 6. προσθήκη συνάρτησης που να προσθέτει τις πληροφορίες που δέχεται (πχ σε buffer ή κατευθείαν από την κατάλληλη δομή) στο ανάλογο αρχείο 7. Κάποια από τα παραπάνω βήματα μπορούν να ενοποιηθούν. Αυτό καθορίζεται ελεύθερα και δυναμικά από εσάς βάσει της εμπειρίας σας. Η επιλογή του κατάλληλου τύπου μηνύματος (1-6) για κάθε system call είναι απλή υπόθεση αν λάβετε υπ' όψιν σας τα ζητούμενα. Προσπαθήστε να εντοπίσετε σημεία στον υπάρχον κώδικα του ΜΙΝΙΧ που είναι κοντά στα ζητούμενα της άσκησης ή σε αυτά των επιμέρους βημάτων τους, όπως τα περιγράψαμε παραπάνω ή όπως τα φαντάζεστε εσείς. Χαρακτηριστικά μπορεί να σας βοηθήσει ιδιαίτερα η ανάγνωση / εντοπισμός των εξής: o kernel/proc.h, mm/mproc.h, fs/fproc.h: περιλαμβάνουν τα process tables και τις 4

5 σταθερές που περιγράφουν την κατάσταση μίας διεργασίας o tools/ps.c: η γνωστή ps. Μην παρασυρθείτε από τη λύση που περιγράφει, να θυμάστε πως αυτή λειτουργεί σε user level επίπεδο. o chdir, mkdir, open, write, close : βρείτε τα system calls που χειρίζονται τις εν λόγω εντολές - μπορεί να σας βοηθήσουν στη δημιουργία καταλόγων/αρχείων o σημείων στον κώδικα όπου ένα service, πχ ο mm επικοινωνεί με ένα άλλο (fs) ή τον kernel. Πιθανότατα θα χρησιμοποιήσετε τον ίδιο ή παρεμφερή τρόπο για τις ανάγκες επικοινωνίας της δικιάς σας κλήσης. o main.c : είτε τον fs είτε στον mm είτε στον kernel, είναι το αρχείο που περιέχει τη main και εξηγεί πως δουλεύει κάθε service: πως περιμένει μηνύματα, πως τα χειρίζεται κοκ. Δώστε ιδιαίτερη προσοχή στην προσπάθεια κατανόησης της επικοινωνίας μεταξύ διεργασιών στο MINIX. Θα πρέπει οπωσδήποτε να θυμάστε το εξής: αφού κάθε διεργασία έχει το δικό της user space, το να περάσει κανείς ένα δείκτη σε μια θέση μνήμης στο user space της διεργασίαςαποστολέα, σε μια άλλη διεργασία-παραλήπτη δίχως καμία τροποποίηση, θα δώσει στη διεργασία παραλήπτη έναν δείκτη σε μια ακαθόριστη θέση μνήμης, στο user space της διεργασίας-παραλήπτη και όχι του αποστολέα. Προσέξτε λοιπόν το μηχανισμό περάσματος μηνυμάτων και πως θα λύσετε τέτοια ζητήματα όπου τα χρειαστείτε. Το γεγονός ότι μεγάλο μέρος της ζητούμενης λειτουργικότητας υπάρχει ήδη, πχ η κατασκευή καταλόγων, σημαίνει πως θα ήταν έξυπνο αντί να αντιγράφετε τον κώδικα και να τον προσαρμόζετε στη δικιά σας περίπτωση, να προσπαθήσετε να στείλετε κατάλληλα μηνύματα ώστε εμμέσως να κληθούν οι αντίστοιχες system calls και να κάνουν τη δουλειά για σας. Μελετείστε τη διαδικασία αυτή λήψης και εξυπηρέτησης ενός μηνύματος. Προσέξτε πως ίσως σε κάποια σημεία θα πρέπει να βρείτε έναν έξυπνο τρόπο ώστε μια διεργασία να στέλνει μηνύματα στον εαυτό της. Μεγάλο μέρος του user level programming interface δεν είναι διαθέσιμο στο επίπεδο του πυρήνα (συμπεριλαμβανομένων των services). Η δυναμική δέσμευση μνήμης είναι χαρακτηριστική τέτοια έλλειψη. Φροντίστε να δεσμεύστε μνήμη εξ' αρχής και γενικά, όπου μπορείτε να κάνετε τη δουλειά σας με το υπάρχον interface (συναρτήσεις πυρήνα / services) να μην αναβαίνετε σε επίπεδο library calls. Η τελευταία συμβουλή είναι κανόνας μόνον όταν δημιουργούνται προβλήματα που μπορούν να αποφευχθούν, πχ κατά τη δυναμική δέσμευση μνήμης. Αν χρειαστεί να προσθέσετε δομές / μεταβλητές στα επίπεδα πυρήνα/services. μην ξεχνάτε να τις αρχικοποιείτε την κατάλληλη στιγμή. Μην σβήσετε τον αρχικό kernel /minix/2.0.0 για να μπορέσετε, στη περίπτωση που κάτι απρόβλεπτο συμβεί λόγω του καινούργιου image, να ξεκινήσετε το σύστημα και να διορθώσετε το πρόβλημα που προέκυψε. Λόγω της φύσης της συγκεκριμένης άσκησης υπάρχει ο κίνδυνος ανεπανόρθωτης καταστροφής του συστήματος αρχείων. Διατηρείται τουλάχιστον ένα αντίγραφο ασφαλείας ολόκληρου του virtual δίσκου hda.img στον οποίο εργάζεστε. Η zipped έκδοση του είναι μικρή σε μέγεθος: θα ήταν ίσως καλό να παίρνετε τακτικά compressed backups που ξέρετε πως δουλεύουν, σαν restore points. Χρησιμοποιείστε το forum του μαθήματος για απορίες και επικοινωνία, μεταξύ σας κατά κύριο λόγο αλλά και με τους υπεύθυνους. Εναλλακτικά, για απορίες που δεν έχουν κοινό ενδιαφέρον, στείλτε στο menihtas@ceid.upatras.gr. Έχετε το νου σας καθώς ανάλογα με το feedback θα αποσαφηνίζονται κοινές απορίες και στο δίκτυο, όπως και στο μάθημα. Προσπαθήστε να είστε σαφείς και χρήσιμοι στις ερωταπαντήσεις σας. Χρησιμοποιείστε το 5

6 δίκτυο και τα βιβλία ([1], [2]), και ιδιαίτερα το index του [2] Ανεκτίμητες εντολές είναι οι grep -r και vi. Όσοι έχετε συνηθίσει τον pico σαν editor ίσως προτιμήσετε το mined αντί του vi, ή ακόμα τον elle, που μοιάζει πιο πολύ στον emacs. Πάντως cheatsheets, reference cards και tutorials για τον vi μπορεί να φανούν χρήσιμα, μιας και είναι πιο δυνατός editor στο MINIX. Παραδοτέα Η εργασία αυτή θα υλοποιηθεί από ομάδες τριών ατόμων, αυστηρά. Στα πλαίσια της θα πρέπει να παραδώσετε τα εξής: Ένα αρχείο text, με τα ονόματα και τη θέση στο filesystem των αρχείων που τροποποιήσατε/προσθέσατε. Για παράδειγμα /usr/src/fs/procfs.c: lines (new file) /usr/src/fs/table.c: lines 1-10 (addition) /usr/src/fs/param.h: lines (modification) Ένα zip-ped αρχείο που να περιέχει το image του σκληρού δίσκου (hda.img) στο οποίο δουλεύατε και στο οποίο περιέχεται ο κώδικας σας. Φροντίστε να επιλέξετε τη μεγαλύτερη δυνατή συμπίεση. Ο κώδικας σας θα πρέπει να είναι επαρκώς σχολιασμένος. Κάθε προσθήκη κώδικα θα πρέπει να εσωκλείεται στις εξής γραμμές σχολίων: /* OSLAB START */ κώδικας που προσθέσατε /* OSLAB END */ Αντίστοιχα τα τμήματα του αρχικού κώδικα που δεν θέλετε να περιληφθούν πρέπει να σχολιάζονται με την ένδειξη OSLAB CROP START και OSLAB CROP END στην αρχή και στο τέλος τους αντίστοιχα και να συνεχίσουν να υπάρχουν στην ίδια θέση με τη μορφή σχολίων. Τεχνική αναφορά (σε μορφή.pdf κατά προτίμηση) όπου θα περιέχονται τα εξής o Πλήρης περιγραφή της λύσης σας και των βημάτων που ακολουθήσατε για να φτάσετε σε αυτή. o Πλήρης περιγραφή του κώδικα που προσθέσατε / τροποποιήσατε και σχολιασμός της λειτουργίας που εκτελεί. Κατά προτίμηση ο κώδικας θα πρέπει να εμφανίζεται με τη μορφή που δίνει τις διαφορές μεταξύ δυο αρχείων (παλιά νέα έκδοση) η εντολή diff. Τα παραπάνω θα πρέπει να σταλούν με στο oslab@ceid.upatras.gr πριν την ημερομηνία παράδοσης που θα ανακοινωθεί αμέσως μετά την ανακοίνωση του προγράμματος εξεταστικής του Ιουνίου, στο forum και στην ιστοσελίδα του μαθήματος. Το θα πρέπει να αποσταλεί με Subject της μορφής OSLAB <α/α ομάδας> (π.χ. για την ομάδα με α/α 17, Subject: OSLAB 17). Η δήλωση των ομάδων θα γίνει συμπληρώνοντας κατάλληλη φόρμα στην ιστοσελίδα του μαθήματος, κατόπιν σχετικής ανακοίνωσης. Τέλος να σημειωθεί πως αν και η εκφώνηση είναι αρκετά σαφής ως προς τα ελάχιστα ζητούμενα, προφανώς και δεν υπάρχει πάνω όριο: οποιοσδήποτε θέλει να ασχοληθεί περισσότερο μπορεί να δοκιμάσει ακόμα και μια δυναμική λύση. Σε αυτή την περίπτωση όμως δε θα έχει υποστήριξη. 6

7 Η βαθμολόγηση θα είναι ανάλογη της ανταπόκρισης στα ζητούμενα της άσκησης και το κάτω όριο (προβιβάσιμος βαθμός) θα τεθεί δυναμικά, ανάλογα με τη δουλειά που θα παρουσιάσει η κάθε ομάδα. Για το λόγο αυτό προσπαθήστε έστω και για ένα κομμάτι της άσκησης που βρίσκετε πιο κατανοητό θα βαθμολογηθείτε ανάλογα. 7

8 Παράρτημα Προσθήκη κλήσης συστήματος στο λειτουργικό σύστημα ΜΙΝΙΧ Η διαδικασία υλοποίησης μία νέας κλήσης συστήματος στο MINIX χωρίζεται σε δύο στάδια. Στο 1o στάδιο υλοποιείται στον FS Server η διαδικασία εξυπηρέτησης του system call. Στο 2o στάδιο υλοποιείται η συνάρτηση βιβλιοθήκης που θα καλεί ο χρήστης μέσα από τα προγράμματα του σε επίπεδο χρήστη και η οποία αναλαμβάνει να αποστείλει το κατάλληλο μήνυμα στο FS Server. Η ακόλουθη διαδικασία προϋποθέτει ότι έχετε κάνει login ως χρήστης bin και όχι ως root, και αυτό διότι το σύστημα είναι εγκατεστημένο κατά τέτοιο τρόπο, έτσι ώστε όλα τα source files του MINIX να ανήκουν στον χρήστη bin. Η διαδικασία είναι προφανώς ανάλογη αν κάποιος θέλει να προσθέσει system calls που να τα διαχειρίζεται ο Mermory Manager. Στη συνέχεια περιγράφονται συνοπτικά και τα δύο στάδια της διαδικασίας. 1. System Call Handler: Bήμα 1ο: Ανοίξτε το αρχείο /usr/include/minix/callnr.h. Αυξήσετε κατά ένα (78) το συνολικό πλήθος των system calls (NCALLS). Προσθέστε στο τέλος του αρχείου μία #define statement με το ID της system call που θα υλοποιήσετε (77). Bήμα 2ο: Ανοίξτε το αρχείο /usr/src/fs/table.c. Στο τέλος της ανάθεσης τιμών στο call_vector προσθέστε μία γραμμή με το όνομα της συνάρτησης εξυπηρέτησης που θα υλοποιήσετε στη συνέχεια. Το όνομα που θα δώσετε στη συνάρτηση δεν είναι απαραίτητα ίδιο με αυτό που θα καλεί ο χρήστης. Μάλιστα το coding style του Tanenbaum μάλλον υπαγορεύει να είναι της μορφής do_systemcallname (π.χ. do_procfs_create). Βήμα 3ο: Ανοίξτε το αρχείο /usr/src/mm/table.c. Επαναλάβετε την διαδικασία του 2ου βήματος με τη διαφορά ότι αντί του ονόματος της συνάρτησης διαχείρισης πρέπει να εισάγεται στο τέλος του call_vector το όνομα της ειδικής συνάρτησης εξυπηρέτησης no_sys που επιστρέφει απλά την τιμή EINVAL. Αυτό γίνεται διότι και τα δύο tables (των FS και MM) πρέπει να περιέχουν NCALLS στο πλήθος στοιχεία. Βήμα 4ο: Ανοίξτε το αρχείο /usr/src/fs/proto.h. Προσθέστε τη δήλωση της συνάρτησης εξυπηρέτησης που θα υλοποιήσετε. Το όρισμα της πρέπει να είναι τύπου void και η επιστρεφόμενη τιμή της τύπου int, όπως ίσως να παρατηρήσατε και στον ορισμό του τύπου του call_vector. H δήλωση γίνεται μέσω της macro-εντολής _PROTOTYPE, που ορίζεται στο αρχείο /usr/include/ansi.h, και στην ουσία εξασφαλίζει την συμβατότητα μεταξύ compilers που υποστηρίζουν K&R ή ANSI C στυλ δήλωσης ορισμάτων. Το πρώτο όρισμα της macro είναι ο επιστρεφόμενος τύπος και το όνομα της συνάρτησης και το δεύτερο είναι τα ορίσματα της συνάρτησης μέσα σε παρενθέσεις και διαχωρισμένα με κώμα. Βήμα 5ο: Στο βήμα αυτό πρέπει να υλοποιήσετε τη συνάρτηση εξυπηρέτησης που δηλώσατε στο table.c. Για ευκολία ανοίξτε το αρχείο /usr/src/fs/misc.c και στο τέλος του προσθέστε τον ορισμό (κυρίως σώμα) της συνάρτησης. Προσέξτε ότι η συνάρτηση πρέπει να δηλωθεί ως public με τη βοήθεια της macro PUBLIC. Βήμα 5 - Εναλλακτική περίπτωση: Αν ο κώδικας που έχετε να γράψετε είναι αρκετός, ίσως θελήσετε να τον εντάξετε σε ένα αυτοτελές αρχείο. Για να κάνετε κάτι τέτοιο, για παράδειγμα για να προσθέσετε το αρχείο procfs.c εξαρτώμενο από το procfs.h στον κατάλογο fs, θα πρέπει να κάνετε τα εξής: 8

9 o Ανοίγετε το Makefile στον κατάλογο /usr/src/fs και προσθέτετε στο τέλος της λίστας με τα περιεχόμενα της μεταβλητής OBJ το όνομα procfs.o o Προσθέτετε στο τέλος του Makefile δύο γραμμές (ή όσες χρειάζονται) με τις κατάλληλες εξαρτήσεις του object file procfs.o: procfs.o: fs.h procfs.o: procfs.h 2. Library Call: Στο επίπεδο του χρήστη πρέπει να υλοποιηθεί μία συνάρτηση η οποία κατασκευάζει ένα μήνυμα βάσει των ορισμάτων που έδωσε ο χρήστης και στέλνει το μήνυμα στον κατάλληλο εξυπηρετητή του 3ου layer του MINIX (π.χ. εδώ FS Server). Η συνάρτηση αυτή πρέπει να ενσωματωθεί στη βασική βιβλιοθήκη κάθε Unix συστήματος, τη libc. Για λόγους απλότητας και ταχύτερης ανάπτυξης όμως στη συνέχεια παρατίθεται ένας εναλλακτικός τρόπος ο οποίος ουσιαστικά ενσωματώνει τη συνάρτηση βιβλιοθήκης στατικά στο πρόγραμμα του χρήστη. Bήμα 1ο: Ανοίξτε το αρχείο /usr/include/unistd.h. Προσθέστε στο μπλοκ που περιέχεται μέσα στη συνθήκη #ifdef _MINIX, τον ορισμό της συνάρτησης που θα παρέχεται στον χρήστη για την χρήση της system call (βλ. Δήλωση ). Bήμα 2ο: Στο directory που θα χρησιμοποιείστε για να αποθηκεύσετε τα user-level test προγράμματα (π.χ. /usr/src/oslab) ανοίξτε ένα καινούργιο header αρχείο (π.χ procfs_create.h) και συμπεριλάβέτε κάτι ανάλογο με το ακόλουθο: #ifndef _PROCFS_CREATE_H_ #define _PROCFS_CREATE_H_ #include <lib.h> #define procfs_create _procfs_create #include <unistd.h> int procfs_create(const char *_name) { int len; message m; /* αντιγραφή των παραμέτρων της συνάρτησης στο μήνυμα m */ /* σημειώστε τη μεταβλητή len: το μήκος της συμβολοσειράς στέλνεται */ /* από αυτό το σημείο φροντίστε να το εφαρμόσετε */ return (_syscall(fs, PROCFS, &m)); } #endif Η syscall είναι μία συνάρτηση βιβλιοθήκης η οποία αναλαμβάνει να αποστείλει το μήνυμα m (3ο όρισμα) στον εξυπηρετητή που της δηλώνεται μέσω του 1ου ορίσματος και στη συνέχεια σε περίπτωση που η system call επιστρέψει με κάποιον κωδικό λάθους, να επιστρέψει την τιμή 1 και 9

10 να αποθηκεύσει τον κωδικό λάθους στην global μεταβλητή errno. Ο πηγαίος κώδικας της βρίσκεται στο αρχείο /usr/src/lib/other/syscall.c. Σε κάθε αρχείο όπου θέλετε να καλέσετε τη system call procfs_create() απλά κάντε include το procfs_create.h. Κernel Compilation: Για να χρησιμοποιήσετε την συνάρτηση procfs_create() θα πρέπει να κατασκευάσετε ένα καινούργιο kernel image πέραν αυτού που ήδη περιέχεται προεγκατεστημένο στο σύστημα (/minix/2.0.0) και να το εγκαταστήσετε. H διαδικασία αυτή είναι απλή, αν και χρονοβόρα τουλάχιστον την πρώτη φορά οπότε και θα γίνουν compile όλα τα αρχεία τόσο του kernel όσο και των fs, mm και init. Η διαδικασία είναι η ακόλουθη: Bήμα 1ο: Αφού θέσετε ως τρέχοντα (εκτελώντας cd) τον κατάλογο /usr/src/tools. Εκτελέστε τις εντολές: make clean make hdboot Η δεύτερη εντολή όχι μόνο θα κατασκευάσει ένα νέο kernel image αλλά και θα το εγκαταστήσει στον κατάλογο /minix. Το πρόγραμμα /boot, που αναλαμβάνει το bootstrapping του ΜΙΝΙΧ, κοιτάζει σε αυτόν τον κατάλογο και φορτώνει στη μνήμη το νεότερο image που περιέχει. Είναι αρκετά χρήσιμο σε περίπτωση που το νέο image που κατασκευάσατε δημιουργεί σοβαρά προβλήματα (π.χ. το σύστημα δεν μπορεί καν να σηκωθεί ή προκαλεί kernel panic) μπορείτε να επιλέξετε κάποιο παλιότερο kernel image με τον εξής τρόπο. Κατά την εκκίνηση του συστήματος αντί να πιέσετε το πλήκτρο = πιέστε Esc και στη συνέχεια εισάγετε στο prompt την εντολή image=<image_path>, όπου <image_path> είναι το πλήρες path ενός λειτουργικού image (π.χ. /minix/2.0.0). Στη συνέχεια απλά εκτελέστε την εντολή boot. Την επόμενη φορά που θα προσπαθήσετε να κατασκευάσετε ένα image, εκτελέστε απλά την εντολή make hdboot, η οποία θα κάνει recompile μόνο τα αρχεία που έχουν υποστεί κάποια αλλαγή. Βιβλιογραφία [1] Modern Operating Systems, Andrew S. Tanenbaum, 1st ed., Prentice Hall 1992 [2] Operating Systems, Design and Implementation, Andrew S. Tanenbaum and Albert S. Woodhull, 2nd ed., Prentice Hall

Πρότυπη Εργαστηριακή Άσκηση

Πρότυπη Εργαστηριακή Άσκηση Πρότυπη Εργαστηριακή Άσκηση Στα πλαίσια της παρούσας προπαρασκευαστικής άσκησης καλείστε να υλοποιήσετε μία κλήση συστήματος (system call) η οποία θα δέχεται ως είσοδο το path ενός αρχείου και θα επιστρέφει

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

2η Εργαστηριακή Άσκηση

2η Εργαστηριακή Άσκηση 2η Εργαστηριακή Άσκηση Στα πλαίσια της παρούσας εργαστηριακής άσκησης καλείστε να προσθέσετε υποστήριξη σημαφόρων (semaphores) στο MINIX. Το υπάρχον σύστημα δεν προσφέρει τη δυνατότητα χρήσης σημαφόρων

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

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

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

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

1η Εργαστηριακή Άσκηση

1η Εργαστηριακή Άσκηση 1η Εργαστηριακή Άσκηση Στα πλαίσια της παρούσας εργαστηριακής άσκησης καλείστε να προσθέσετε στο σύστημα αρχείων του MINIX υποστήριξη για λίστες ελέγχου προσπέλασης (ACL ή access control list). Το υπάρχον

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

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

Εισαγωγή στην Πληροφορική Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Εισαγωγή στην Πληροφορική Ενότητα 8: Λειτουργικά Συστήματα Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

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

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Σύντομη εισαγωγή στο εργαστήριο

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Σύντομη εισαγωγή στο εργαστήριο ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Σύντομη εισαγωγή στο εργαστήριο Στο φετινό εργαστήριο του μαθήματος, έχετε τη δυνατότητα να δουλέψετε σε 2 περιβάλλοντα. Ένα σε περιβάλλον UNIX μέσω απομακρυσμένης σύνδεσης σε

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

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ Σχεδιασμός και υλοποίηση υποδομής σημείωσης διεργασιών στον

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 7/1/2014, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 7/1/2014, 22:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 3 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2013-2014 Προθεσµία: 7/1/2014, 22:00 Περιεχόµενα Διαβάστε πριν ξεκινήσετε Εκφώνηση άσκησης 1 Οδηγίες αποστολής άσκησης Πριν ξεκινήσετε (ΔΙΑΒΑΣΤΕ

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 8/1/12, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 8/1/12, 22:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 4 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2011-2012 Προθεσµία: 8/1/12, 22:00 Περιεχόµενα Διαβάστε πριν ξεκινήσετε Εκφώνηση άσκησης Οδηγίες αποστολής άσκησης Πριν ξεκινήσετε (ΔΙΑΒΑΣΤΕ

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

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

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

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

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

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

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

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά

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

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

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

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

Λειτουργικά Συστήματα (ΗΥ-345) Χειμερινό Εξάμηνο

Λειτουργικά Συστήματα (ΗΥ-345) Χειμερινό Εξάμηνο Λειτουργικά Συστήματα (ΗΥ-345) Χειμερινό Εξάμηνο 2018-2019 Άσκηση 1 Φροντιστήριο: 05/10/2018 Παράδοση: 18/10/2018 Υλοποίηση Linux C Shell ΤΑ : shevtsov(shevtsov@csd.uoc.gr) Ώρες Γραφείου : Δευτέρα 14:00-16:00

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

Δομημένος Προγραμματισμός

Δομημένος Προγραμματισμός ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Συναρτήσεις θεωρία Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό

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

Προγραμματισμός ΙI (Θ)

Προγραμματισμός ΙI (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017

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

Εισαγωγή στο περιβάλλον Code::Blocks

Εισαγωγή στο περιβάλλον Code::Blocks Εισαγωγή στο περιβάλλον Code::Blocks Στο παρόν εγχειρίδιο παρουσιάζεται η διαδικασία ανάπτυξης, μεταγλώττισης και εκτέλεσης ενός προγράμματος C στο περιβάλλον του Code::Blocks. Η διαδικασία αυτή παρουσιάζεται

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: Πέµπτη 17/12/2015, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: Πέµπτη 17/12/2015, 22:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 3 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2015-2016 Προθεσµία: Πέµπτη 17/12/2015, 22:00 Διαβάστε πριν ξεκινήσετε Διαβάστε την εκφώνηση προσεκτικά και σχεδιάστε το πρόγραµµά σας πριν

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

Εισαγωγή εκτελέσιμου κώδικα σε διεργασίες

Εισαγωγή εκτελέσιμου κώδικα σε διεργασίες 0x375 - Thessaloniki Tech Talks Sessions Event 0x2 19 Μαρτίου 2010 Περιεχόμενα 1 Εισαγωγή 2 Η κλήση συστήματος ptrace 3 Νήματα 4 Το πρόγραμμα εισαγωγής κώδικα prez 5 Επίλογος Γιατί; Πολλές φορές θέλουμε

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο

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

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Το λειτουργικό σύστημα. Προγραμματισμός II 1 Το λειτουργικό σύστημα Προγραμματισμός II 1 lalis@inf.uth.gr Συστήματα υπολογιστών Ειδικού σκοπού συστήματα για μια συγκεκριμένη εφαρμογή η εφαρμογή είναι γνωστή εκ των προτέρων περιορισμένοι υπολογιστικοί

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

'Ασκηση 1: Στατικός Κατακερματισμός. Εισαγωγή. Ρουτίνες υλοποίησης κατακερματισμού. (Ημερομηνία Παράδοσης: Παρασκευή, 16/5/2008, 5μμ) HT_Init()

'Ασκηση 1: Στατικός Κατακερματισμός. Εισαγωγή. Ρουτίνες υλοποίησης κατακερματισμού. (Ημερομηνία Παράδοσης: Παρασκευή, 16/5/2008, 5μμ) HT_Init() Πληροφορική & Τηλεπικοινωνίες K18 Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο 2008 Αν. Καθηγητής Δημήτρης Γουνόπουλος Καθηγητής Γιάννης Ιωαννίδης 'Ασκηση 1: Στατικός Κατακερματισμός (Ημερομηνία

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

an:3 are:6 a:10

an:3 are:6 a:10 Άσκηση 1 Προγραμματισμός Συστήματος Προθεσμία: 18 Μαΐου 2014 Σ αυτή την άσκηση θα υλοποιήσετε ένα σύστημα auto-complete κατά τη διάρκεια πληκτρολόγησης. Ο πυρήνας του συστήματος είναι μια δομή trie (απλό

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

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

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

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην

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

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή Στο εργαστήριο αυτό θα μάθουμε για τη χρήση συναρτήσεων με σκοπό την κατασκευή αυτόνομων τμημάτων προγραμμάτων που υλοποιούν μία συγκεκριμένη διαδικασία, τα οποία

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

ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη

ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο 2012-2013 Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη Project 2012-2013 Υλοποίηση ενός chat server-client Παράδοση: 7/2/2013

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

Λειτουργικό Σύστημα: διαχείριση πόρων. Τι είναι ένα αρχείο ; Διαχείριση αρχείων. Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

Λειτουργικό Σύστημα: διαχείριση πόρων. Τι είναι ένα αρχείο ; Διαχείριση αρχείων. Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2018-19 Λειτουργικό Σύστημα: διαχείριση πόρων Εισαγωγή Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων) Επικοινωνία με χρήστη

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσμία: Τετάρτη 23/11/2016, 21:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσμία: Τετάρτη 23/11/2016, 21:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 2 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2016-2017 Προθεσμία: Τετάρτη 23/11/2016, 21:00 Διαβάστε πριν ξεκινήσετε Διαβάστε την εκφώνηση προσεκτικά και σχεδιάστε το πρόγραμμά σας στο

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

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Το λειτουργικό σύστημα. Προγραμματισμός II 1 Το λειτουργικό σύστημα Προγραμματισμός II 1 lalis@inf.uth.gr Συστήματα υπολογιστών Ειδικού σκοπού συστήματα για μια συγκεκριμένη εφαρμογή η εφαρμογή είναι γνωστή εκ των προτέρων περιορισμένοι υπολογιστικοί

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

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

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

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 18/12/12, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 18/12/12, 22:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 3 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2012-2013 Προθεσµία: 18/12/12, 22:00 Περιεχόµενα Διαβάστε πριν ξεκινήσετε Εκφώνηση άσκησης 1 Οδηγίες αποστολής άσκησης Διαδικαστικά Η εργασία

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

Πως θα κατασκευάσω το πρώτο πρόγραμμα;

Πως θα κατασκευάσω το πρώτο πρόγραμμα; Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Σκοπός Να γίνει εξοικείωση το μαθητών με τον ΗΥ και το λειτουργικό σύστημα. - Επίδειξη του My Computer

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

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Χειμερινό Εξάμηνο

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Χειμερινό Εξάμηνο Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Χειμερινό Εξάμηνο 2015 2016 Ι. Ιωαννίδης Άσκηση 3: Αποθήκευση κατά στήλες Προθεσμία: 25 Ιανουαρίου 2016, 11:59μμ Ο σκοπός της εργασίας

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

MIPS Interactive Learning Environment. MILE Simulator. Version 1.0. User's Manual

MIPS Interactive Learning Environment. MILE Simulator. Version 1.0. User's Manual MILE Simulator Version 1.0 User's Manual Νοέμβριος, 2011 Περιεχόμενα 1. Εισαγωγή στον προσομοιωτή...2 1.1 Εγκατάσταση...2 1.2 Βοήθεια Διευκρινήσεις...2 2. Ξεκινώντας με τον προσομοιωτή...3 2.1 Το memory

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

Οδηγός Χρήσης της Υπηρεσίας Τηλεομοιότυπου (RightFax Fax Service) Web Utility. (διαδικτυακή εφαρμογή)

Οδηγός Χρήσης της Υπηρεσίας Τηλεομοιότυπου (RightFax Fax Service) Web Utility. (διαδικτυακή εφαρμογή) ΥΠΗΡΕΣΙΑ ΠΛΗΡΟΦΟΡΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΤΟΜΕΑΣ ΔΙΚΤΥΩΝ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ Οδηγός Χρήσης της Υπηρεσίας Τηλεομοιότυπου (RightFax Fax Service) Web Utility (διαδικτυακή εφαρμογή) Αύγουστος 2011 ΠΕΡΙΕΧΟΜΕΝΑ 1. Πρόσβαση

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX Μάθημα: Λειτουργικά Συστήματα Συστήματα Αρχείων Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης (clam@unipi.gr) Δρ. Α. Γαλάνη (agalani@unipi.gr) Λειτουργικά Συστήματα 1 Αρχεία με Χαρτογράφηση

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

Hase οδηγίες χρήσης.

Hase οδηγίες χρήσης. Hase οδηγίες χρήσης. Το Hase είναι ένα πρόγραμμα προσομοίωσης που έχει αναπτυχθεί στο πανεπιστήμιο του Εδιμβούργου (http://www.icsa.inf.ed.ac.uk/research/groups/hase/) και μπορεί να χρησιμοποιηθεί για

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

Θέτοντας και επιστρέφοντας την τιµή της προτεραιότητας διεργασίας

Θέτοντας και επιστρέφοντας την τιµή της προτεραιότητας διεργασίας Θέτοντας και επιστρέφοντας την τιµή της προτεραιότητας διεργασίας Το επίπεδο προτεραιότητας µιας διεργασίας µπορεί να αλλάξει µε χρήση της συνάρτησης nice. Κάθε διεργασία διαθέτει µια τιµή που καλείται

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 1: 1 Εισαγωγή, Χρήσιμες Εφαρμογές

ΕΡΓΑΣΤΗΡΙΟ 1: 1 Εισαγωγή, Χρήσιμες Εφαρμογές ΕΡΓΑΣΤΗΡΙΟ 1: 1 Εισαγωγή, Χρήσιμες Εφαρμογές Σκοπός του εργαστηρίου αυτού είναι η εξοικείωση με κάποιες εφαρμογές που θα μας φανούν πολύ χρήσιμες κατά τη διάρκεια του μαθήματος της Εισαγωγής στον Προγραμματισμό.

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

Κεφάλαιο 4 Λογισμικό συστήματος. Εφαρμογές Πληροφορικής Κεφ.4 Καραμαούνας Πολύκαρπος 1

Κεφάλαιο 4 Λογισμικό συστήματος. Εφαρμογές Πληροφορικής Κεφ.4 Καραμαούνας Πολύκαρπος 1 Κεφάλαιο 4 Λογισμικό συστήματος Καραμαούνας Πολύκαρπος 1 4.1 Λογισμικό συστήματος (application software) Καραμαούνας Πολύκαρπος 2 Λογισμικό εφαρμογών (application software): προγράμματα για την αντιμετώπιση

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

Λειτουργικό Σύστημα: διαχείριση πόρων. Διαχείριση αρχείων. Τι είναι ένα αρχείο ; Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

Λειτουργικό Σύστημα: διαχείριση πόρων. Διαχείριση αρχείων. Τι είναι ένα αρχείο ; Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Λειτουργικό Σύστημα: διαχείριση πόρων Εισαγωγή Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων) Επικοινωνία με χρήστη

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

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο 2009 2010

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο 2009 2010 Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο 2009 2010 Καθηγητής. Γουνόπουλος Άσκηση 1 Σκοπός της εργασίας αυτής είναι η κατανόηση της εσωτερικής λειτουργίας

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

Εργαστήριο 5. Εαρινό Εξάμηνο

Εργαστήριο 5. Εαρινό Εξάμηνο Τομέας Υλικού και Αρχιτεκτονικής Υπολογιστών ΗΥ134 - Εισαγωγή στην Οργάνωση και Σχεδίαση Η/Υ 1 Εργαστήριο 5 Εαρινό Εξάμηνο 2012-2013 Στό χόι τόυ εργαστηρι όυ Χρήση στοίβας Αναδρομή Δομές δεδομένων Δυναμική

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

Κεφάλαιο 4: Λογισμικό Συστήματος

Κεφάλαιο 4: Λογισμικό Συστήματος Κεφάλαιο 4: Λογισμικό Συστήματος Ερωτήσεις 1. Να αναφέρετε συνοπτικά τις κατηγορίες στις οποίες διακρίνεται το λογισμικό συστήματος. Σε ποια ευρύτερη κατηγορία εντάσσεται αυτό; Το λογισμικό συστήματος

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

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

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

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

Εργαστήριο 1-1 η Άσκηση - Ανάλυση

Εργαστήριο 1-1 η Άσκηση - Ανάλυση Εργαστήριο 1-1 η Άσκηση - Ανάλυση Εκφώνηση: Δημιουργείστε εφαρμογή σε Java Swing με χρήση του IDE NetBeans όπου θα παρουσιάζεται ποιο κουμπί πατήθηκε. Η εφαρμογή θα μοιάζει ως εξής: Πρώτο Βήμα: Αρχική

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

Hase οδηγίες χρήσης.

Hase οδηγίες χρήσης. Hase οδηγίες χρήσης. Το Hase είναι ένα πρόγραμμα προσομοίωσης που έχει αναπτυχθεί στο πανεπιστήμιο του Εδιμβούργου (http://www.icsa.inf.ed.ac.uk/research/groups/hase/) και μπορεί να χρησιμοποιηθεί για

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

$./jms console -w <jms in> -r <jms out> -o <operations file> namedpipe. (standard input).

$./jms console -w <jms in> -r <jms out> -o <operations file> namedpipe. (standard input). Κ24: Προγραμματισμός Συστήματος 2η Εργασία Εαρινό Εξάμηνο 2017 Προθεσμία Υποβολής: Κυριακή 30 Απριλίου 2017 Ωρα 23:59 Εισαγωγή στην Εργασία: Ο στόχος της εργασίας αυτής είναι να εξοικειωθείτε με την δημιουργία

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

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

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Τμήμα Πληροφορικής & Επικοινωνιών Τομέας Υπολογιστικών Τεχνικών & Συστημάτων Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Ιωάννης Γεωργουδάκης - Πάρις Μαστοροκώστας Σεπτέμβριος 2011 ΠΕΡΙΕΧΟΜΕΝΑ

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Ορισμός

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

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

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

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

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19)

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19) Κεφάλαιο 8.7 Πολυδιάστατοι Πίνακες (Διάλεξη 19) Πολυδιάστατοι πίνακες Μέχρι τώρα μιλούσαμε για Μονοδιάστατους Πίνακες. ή π.χ. int age[5]= {31,28,31,30,31; για Παράλληλους πίνακες, π.χ. int id[5] = {1029,1132,1031,9991,1513;

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 5/12/10, 23:59

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 5/12/10, 23:59 ΣΕΤ ΑΣΚΗΣΕΩΝ 3 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2010-2011 Προθεσµία: 5/12/10, 23:59 Στόχοι structs Πίνακες Συναρτήσεις Συµβολοσειρές Χρήση µεταβλητών και σταθερών Χρήση τελεστών Χρήση δοµών

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

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

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

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

./mydiz {-c -a -x -m -d -p -j} <archive-file> <list-of-files/dirs>

./mydiz {-c -a -x -m -d -p -j} <archive-file> <list-of-files/dirs> ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Πληροφορικής και Τηλεπικοινωνιών η Εργασία - Τμήμα: Περιττών Αριθμών Μητρώου Κ: Λειτουργικά Συστήματα Χειμερινό Εξάμηνο 6 Ημερομηνία Ανακοίνωσης: 8 Ιανουαρίου Ημερομηνία Υποβολής:

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

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

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

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

Κατανεμημένα Συστήματα

Κατανεμημένα Συστήματα Κατανεμημένα Συστήματα Σημειώσεις εργαστηρίου Lab#7 - Διεργασίες, Nήματα, Πολυνημάτωση στη Python Νεβράντζας Βάιος-Γερμανός Λάρισα, Φεβρουάριος 2013 Lab#7 - Διεργασιές, Νη ματα, Πολυνημα τωση στη Python,

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

ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ, ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΔΙΚΤΥΩΝ, ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ

ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ, ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΔΙΚΤΥΩΝ, ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ, ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΔΙΚΤΥΩΝ, ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2011-2012 ΕΡΓΑΣΙΑ ΕΞΑΜΗΝΟΥ Ποιος πρέπει να ολοκληρώσει αυτή την εργασία? Φοιτητές έτους >=2 που

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

Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο Καθηγητής Δ. Γουνόπουλος

Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο Καθηγητής Δ. Γουνόπουλος Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο 2016 2017 Καθηγητής Δ. Γουνόπουλος Άσκηση 2 - Εξωτερική Ταξινόμηση Παράδοση: 20/01/2017 Σκοπός της εργασίας αυτής

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

2η Προγραµµατιστική Εργασία

2η Προγραµµατιστική Εργασία Προγραµµατισµός ικτύων (Ε-01) 2η Προγραµµατιστική Εργασία Επέκταση ϐασικής ϐιβλιοθήκης δικτυακού προγραµµατισµού και χρήση της για την υλοποίηση παράλληλου εξυπηρετητή πρωτοκόλλου µεταφοράς αρχείων ιδάσκων

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 10 ΟΥ ΚΕΦΑΛΑΙΟΥ ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ 1. Πως ορίζεται ο τμηματικός προγραμματισμός; Τμηματικός προγραμματισμός

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

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Σκοπός Nα κατασκευάσουν πίνακες από δεδομένα. Να κατασκευάσουν συναρτήσεις με πίνακες. Να κάνουν χρήση

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 25/11/12, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 25/11/12, 22:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 2 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2012-2013 Προθεσµία: 25/11/12, 22:00 Περιεχόµενα Διαβάστε πριν ξεκινήσετε Εκφώνηση άσκησης 1 Εκφώνηση άσκησης 2 Οδηγίες αποστολής άσκησης Πριν

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

Η Βίβλος σχετικά με το JDBC. Περιέχει τρία βασικά tutorials στα οποία θα βασιστεί το μάθημα και περιγράφει όλες τις τάξεις και τις μεθόδους που

Η Βίβλος σχετικά με το JDBC. Περιέχει τρία βασικά tutorials στα οποία θα βασιστεί το μάθημα και περιγράφει όλες τις τάξεις και τις μεθόδους που 1 Η Βίβλος σχετικά με το JDBC. Περιέχει τρία βασικά tutorials στα οποία θα βασιστεί το μάθημα και περιγράφει όλες τις τάξεις και τις μεθόδους που μπορούμε να χρησιμοποιήσουμε σε μία JDBC εφαρμογή. Υπάρχει

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 2:Αλφαριθμητικές Σειρές Χαρακτήρων (Strings)- Επανάληψη Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγικές Έννοιες σε Strings(Αρχικοποίηση, Ανάγνωση & Εκτύπωση) Πίνακες από Strings

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

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Το λειτουργικό σύστημα. Προγραμματισμός II 1 Το λειτουργικό σύστημα Προγραμματισμός II 1 lalis@inf.uth.gr Συστήματα υπολογιστών Ειδικού σκοπού συστήματα για μια συγκεκριμένη εφαρμογή περιορισμένοι υπολογιστικοί / αποθηκευτικοί πόροι δεν τίθεται θέμα

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

B. Ενσωμάτωση Ιθαγενών Μεθόδων

B. Ενσωμάτωση Ιθαγενών Μεθόδων B. Ενσωμάτωση Ιθαγενών Μεθόδων Στο τέλος αυτού του κεφαλαίου θα μπορείτε: Να δημιουργείτε κώδικα Java που θα φορτώνει βιβλιοθήκες και θα καλεί ιθαγενείς μεθόδους (native methods). Να χρησιμοποιείτε τη

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

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

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

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

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

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

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 1. Προθεσμία: Τετάρτη 9/11/2016, 21:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 1. Προθεσμία: Τετάρτη 9/11/2016, 21:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 1 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2016-2017 Προθεσμία: Τετάρτη 9/11/2016, 21:00 Διαβάστε πριν ξεκινήσετε Διαβάστε ΟΛΗ την εκφώνηση προσεκτικά και σχεδιάστε το πρόγραμμά σας στο

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

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

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

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

Προγραμματισμός ΙI (Θ)

Προγραμματισμός ΙI (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017

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

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα). Κ08 Δομές Δεδομένων και Τεχνικές Προγραμματισμού Διδάσκων: Μανόλης Κουμπαράκης Εαρινό Εξάμηνο 2016-2017. Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

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

waitpid(), read(), write(), pipe(), mkfifo() κ.α.).

waitpid(), read(), write(), pipe(), mkfifo() κ.α.). ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Πληροφορικής και Τηλεπικοινωνιών 2η Εργασία - Τμήμα: Περιττών Αριθμών Μητρώου Κ22: Λειτουργικά Συστήματα Χειμερινό Εξάμηνο 18 Ημερομηνία Ανακοίνωσης: Παρασκευή 26 Οκτωβρίου 2018

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

Προγραµµατισµός Ι Εργαστήριο 13ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 13 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Προγραµµατισµός Ι Εργαστήριο 13ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 13 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ ΕΡΓΑΣΤΗΡΙΟ 13 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2014-2015 Στόχοι Αναδροµή Σηµείωση: Απαγορεύονται static και global µεταβλητές. Πριν ξεκινήσετε Πηγαίνετε στο φάκελο ce120 και κατασκευάστε µέσα

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

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο 2010 2011 Δ. Γουνόπουλος Ι. Ιωαννίδης Άσκηση 1: Συγχώνευση Εγγραφών Δυαδικών Αρχείων Προθεσμία: 2 Μαΐου 2011, 5:00μμ

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

ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ. της Πλατφόρμας Τηλεκατάρτισης

ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ. της Πλατφόρμας Τηλεκατάρτισης ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ της Πλατφόρμας Τηλεκατάρτισης ΠΕΡΙΕΧΟΜΕΝΑ 1. Εισαγωγή...2 2. Αρχική σελίδα, Εισαγωγή & Περιβάλλον Συστήματος...3 2.1. Αρχική σελίδα εισαγωγής...3 2.2. Εισαγωγή στην Πλατφόρμα Τηλε-κατάρτισης...4

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

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ LIVETRIP TRAVELLER

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ LIVETRIP TRAVELLER ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ LIVETRIP TRAVELLER Η εφαρμογή LiveTripTraveller διατίθεται για κινητά τηλέφωνα με λειτουργικό σύστημα Android. Στο υπο-ιστοσελίδα www.livetrips.com/sources μπορείτε να κατεβάσετε την εφαρμογή

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

Εργαστήριο 4. Εαρινό Εξάμηνο ΠΡΟΣΟΧΗ: Αρχίστε νωρίς το Εργαστήριο 4. Οι ασκήσεις είναι πιο απαιτητικές από τα προηγούμενα εργαστήρια.

Εργαστήριο 4. Εαρινό Εξάμηνο ΠΡΟΣΟΧΗ: Αρχίστε νωρίς το Εργαστήριο 4. Οι ασκήσεις είναι πιο απαιτητικές από τα προηγούμενα εργαστήρια. Τομέας Υλικού και Αρχιτεκτονικής Υπολογιστών ΗΥ134 - Εισαγωγή στην Οργάνωση και Σχεδίαση Η/Υ 1 Εργαστήριο 4 Εαρινό Εξάμηνο 2012-2013 Στόχοι του εργαστηρίου Χρήση στοίβας Συναρτήσεις ΠΡΟΣΟΧΗ: Αρχίστε νωρίς

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ 2 ο ΣΕΤ ΑΣΚΗΣΕΩΝ Οι ασκήσεις αυτού του φυλλαδίου καλύπτουν τα παρακάτω θέματα: Συναρτήσεις (κεφάλαιο Functions)

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

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή Δημιουργία Νέου αρχείου Από το μενού προγραμμάτων ανοίγετε το DEV C++ Επιλέγετε File-> New-> Source File (συντόμευση πληκτρολογίου Ctrl+N)

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

Προγραµµατισµός Ι Εργαστήριο 13ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 13 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Προγραµµατισµός Ι Εργαστήριο 13ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 13 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ ΕΡΓΑΣΤΗΡΙΟ 13 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2014-2015 Στόχοι Αναδροµή Σηµείωση: Απαγορεύονται static και global µεταβλητές. Πριν ξεκινήσετε Πηγαίνετε στο φάκελο ce120 και κατασκευάστε µέσα

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

ΟΔΗΓΙΕΣ ΧΡΗΣΤΗ ΓΙΑ ΤΟ ΠΡΟΓΡΑΜΜΑ ΗΛΕΚΤΡΟΝΙΚΗΣ ΤΑΞΗΣ

ΟΔΗΓΙΕΣ ΧΡΗΣΤΗ ΓΙΑ ΤΟ ΠΡΟΓΡΑΜΜΑ ΗΛΕΚΤΡΟΝΙΚΗΣ ΤΑΞΗΣ ΟΔΗΓΙΕΣ ΧΡΗΣΤΗ ΓΙΑ ΤΟ ΠΡΟΓΡΑΜΜΑ ΗΛΕΚΤΡΟΝΙΚΗΣ ΤΑΞΗΣ CLAROLINE Κατάλογος περιεχομένων Εγγραφή μαθητή στο Claroline...2 Εγγραφή σε μάθημα...3 Τα μαθήματά μου...4 Αλλαγή του προφίλ μου (Manage my account)...4

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

ΕΡΓΑΣΤΗΡΙΟ 1: Εισαγωγή, Χρήσιμες Εφαρμογές

ΕΡΓΑΣΤΗΡΙΟ 1: Εισαγωγή, Χρήσιμες Εφαρμογές ΕΡΓΑΣΤΗΡΙΟ 1: Εισαγωγή, Χρήσιμες Εφαρμογές Σκοπός του εργαστηρίου αυτού είναι η χρησιμοποίηση κάποιων εφαρμογών που θα μας φανούν πολύ χρήσιμες κατά τη διάρκεια του μαθήματος της Εισαγωγής στον Προγραμματισμό.

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

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

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

Κεφάλαιο 3.1: Λειτουργικά Συστήματα. Επιστήμη ΗΥ Κεφ. 3.1 Καραμαούνας Πολύκαρπος

Κεφάλαιο 3.1: Λειτουργικά Συστήματα. Επιστήμη ΗΥ Κεφ. 3.1 Καραμαούνας Πολύκαρπος Κεφάλαιο 3.1: Λειτουργικά Συστήματα 1 3.1.1 Λογισμικό και Υπολογιστικό Σύστημα Ένα σύγχρονο υπολογιστικό σύστημα αποτελείται από: το υλικό: τα ηλεκτρονικά μέρη του υπολογιστή και το λογισμικό: το σύνολο

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

Προγραμματισμός Υπολογιστών με C++

Προγραμματισμός Υπολογιστών με C++ Προγραμματισμός Υπολογιστών με C++ 1η διάλεξη (2012-13) Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Γιατί να μάθει κανείς C++; Απαιτούμενο προσόν για πολλές θέσεις εργασίας. Υψηλού επιπέδου προγραμματισμός.

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

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008 Παράδειγμα: Μηχανή για Εισιτήρια 2 Ορισμός Κλάσεων Σύνταξη κλάσης: πεδία, κατασκευαστές, μέθοδοι Ένας αυτόματος εκδότης εισιτηρίων είναι μια μηχανή που δέχεται χρήματα και εκδίδει ένα εισιτήριο. Εκδίδει

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

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

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

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

Οδηγίες για την εγκατάσταση του πακέτου Cygwin

Οδηγίες για την εγκατάσταση του πακέτου Cygwin Οδηγίες για την εγκατάσταση του πακέτου Cygwin Ακολουθήστε τις οδηγίες που περιγράφονται σε αυτό το file μόνο αν έχετε κάποιο laptop ή desktop PC που τρέχουν κάποιο version των Microsoft Windows. 1) Copy

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #2 2 Γενικά Στο Εργαστήριο αυτό θα αναλύσουμε τη χρήση της βασικής εντολής ελέγχου ροής

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

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ Διδάσκουσα Δρ Β Καβακλή Χειμερινό Εξάμηνο 2001 Στόχοι του Μαθήματος! Ανάπτυξη αναλυτικής

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

Προγραµµατισµός Ι ΕΡΓΑΣΤΗΡΙΟ 5 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Προγραµµατισµός Ι ΕΡΓΑΣΤΗΡΙΟ 5 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ ΕΡΓΑΣΤΗΡΙΟ 5 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2012-2013 Στόχοι Συµβολοσειρές, πίνακες Πριν ξεκινήσετε Βήµα 1: Πηγαίνετε στο φάκελο ce120 και κατασκευάστε µέσα σε αυτόν ένα φάκελο µε όνοµα

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

ΤρόποςΑξιολόγησης: α) Εργαστήρια (Προαιρετικάµε 20% - 35% βαρύτητα µόνοθετικά) β) Τελική Γραπτή Εξέταση

ΤρόποςΑξιολόγησης: α) Εργαστήρια (Προαιρετικάµε 20% - 35% βαρύτητα µόνοθετικά) β) Τελική Γραπτή Εξέταση ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX Ύλη του Μαθήµατος Μάθηµα: Λειτουργικά Συστήµατα ΙΙ UNIX Βιβλίο Μαθήµατος: α) Tanenbaum, A.:ΣύγχροναΛειτουργικάΣυστήµατα, 2ηΈκδοση, Εκδόσεις Κλειδάριθµος. β) Wrightson, K.,

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