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

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

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

Transcript

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

2 1 ΕΙΣΑΓΩΓΗ 1 1 Εισαγωγή Σκοπός της συγκεκριμένης άσκησης είναι η επίλυση του λόξυγγα ανετοιμότητας 2. Απώτερος σκοπός είναι η εξοικείωση με ένα πραγματικό λειτουργικό σύστημα (Linux) και με τον προγραμματισμό σε επίπεδο πυρήνα. Η αναφορά αυτή αποτελεί μία ενδιάμεση αναφορά που σκοπό έχει να παρουσιάσει της σχεδιαστικές επιλογές για την επίλυση του προβλήματος και όχι την υλοποίηση. Ο προγραμματισμός σε χώρο πυρήνα ενός λειτουργικού συστήματος παρουσιάζει αρκετές δυσκολίες και διαφορές από τον προγραμματισμού σε χώρο χρήστη. Το μέγεθος του πυρήνα καθώς και οι διάφορες απρόβλεπτες εξαρτήσεις μεταξύ τμημάτων κώδικα καθιστούν τον προγραμματισμό πυρήνα μια δύσκολη εργασία. Επίσης παρουσιάζει αρκετές ιδιαιτερότητες όπως η έλλειψη πρόσβασης στη βιβλιοθήκη της C, το μικρό μέγεθος της στοίβας του πυρήνα, η έλλειψη προστασίας μνήμης καθώς και ο ασύγχρονος τρόπος λειτουργίας που καθιστά το συγχρονισμό απαραίτητο. Τέλος στον προγραμματισμό πυρήνα δίνεται μεγάλη έμφαση στην φορητότητα υπό την έννοια, ότι προγράμματα που είναι ανεξάρτητα συγκεκριμένης αρχιτεκτονικής να μπορούν να μεταγλωττιστούν και να εκτελεστούν σε διαφορετικά συστήματα. 2 Περιγραφή του προβλήματος Ο λόξυγγας ανετοιμότητας αναφέρεται στο φαινόμενο της επιβράδυνσης της εκτέλεσης μιας λειτουργίας σε σχέση με προηγούμενες εκτελέσεις της λόγω της απώλειας από την κύρια μνήμη των απαραίτητων δεδομένων για την λειτουργία της. Η απώλεια αυτή οφείλεται είτε στην αίτηση μνήμης από κάποια άλλη διεργασία είτε στην δραστηριότητα κάποιας διεργασίας σε αρχεία. Θέλουμε να αποτρέψουμε το φαινόμενο η δραστηριότητα σε κάποια αρχεία να εκτοπίζει χρήσιμα παλιά αρχεία που είναι ca eαρισμένα στη μνήμη. Η επιλογή αυτή βασίζεται στο γεγονός ότι σε πολλές περιπτώσεις η διατήρηση των αρχείων στη μνήμη ca e δεν είναι απαραίτητη. Για παράδειγμα η αντιγραφή ενός αρχείου (χωρίς περαιτέρω, χρήση του αρχείου) που βασίζεται σε μία σειριακή προσπέλαση αυτού, δεν έχει κάποιο λόγω να διατηρεί το αρχείο στη μνήμη. Για να το επιτύχουμε αυτό, πρέπει να σημειώσουμε ποιες διεργασίες δεν χρειάζεται να διατηρούν τα αρχεία τους στη μνήμη. Αυτή η σημείωση θα είναι η κατάρα no-fs-cache η περιγραφή της οποίας ακολουθεί (βλ. παρ. 4). Θα δημιουργήσουμε επίσης μία γενικότερη υποδομή που θα επιτρέπει στο χρήστη να σημειώνει διεργασίες με διαφορές κατάρες. Η υποδομή αυτή είναι η curse και η περιγραφή της υπάρχει στη συνέχεια (παρ. 3). 3 Υποδομή Curse Όπως ήδη αναφέραμε η υποδομή αυτή θα μας επιτρέπει να σημειώνουμε διεργασίες με κατάρες. Η υποδομή αυτή θα αποτελείται από τα εξής στοιχεία : Κλήση συστήματος Στατική βιβλιοθήκη χρήστη Εργαλείο γραμμής εντολών Υλοποίηση λειτουργιών και προγραμματιστική διεπαφή. Στην αναφορά αυτή δεν θα ασχοληθούμε με λεπτομέρειες υλοποίησης.

3 3 ΥΠΟΔΟΜΗ CURSE Why System Call Το βασικό κομμάτι της υποδομής curse θα αποτελεί κώδικα πυρήνα, καθώς είναι απαραίτητη η χρήση βασικών δομών του λειτουργικού συστήματος. Για να μπορεί ο χρήστης να επεξεργαστεί αυτές τις πληροφορίες είναι απαραίτητη η υλοποίηση μιας κλήσης συστήματος. Μέσω αυτής μπορεί να εκτελέσει κώδικα σε χώρο πυρήνα (Kernel Space).To system call που θα υλοποιήσουμε είναι το sys_curse. 3.2 Προσθήκη System Call Για την δημιουργία του system call θα ακολουθήσουμε τα εξής βήματα: 1. Προσθέτουμε στο αρχείο arch/x86/include/asm/unistd_32.h τον ορισμό του αριθμού κλήσης της sys_curse. Αυτός είναι κατά ένα μεγαλύτερος από τον τελευταίο ήδη ορισμένο αριθμό. Επίσης πρέπει να αυξήσουμε κατά ένα τον αριθμό της σταθεράς NR_syscalls που δηλώνει τον αριθμό των ορισμένων system calls. 2. Προσθέτουμε στο αρχείο arch/x86/kernel/syscall_table_32.s, το οποίο αποτελεί τον πίνακα των κλήσεων συστήματος την συνάρτηση που θα υλοποιεί την κλήση συστήματος που προσθέσαμε. πχ.long sys_curse. 3. Προσθέτουμε στο αρχείο include/linux/syscalls.h την δήλωση της συνάρτησης που θα την υλοποιεί : asmlinkage long sys_curse(int flag, short int curse,pid_t pid,char **list_curses); 4. Τέλος πρέπει να προσθέσουμε το αρχείο με την υλοποίηση του system call μας. Το αρχείο αυτό θα είναι το curse.c και θα περιέχεται στο φάκελο kernel/. Θα πρέπει να ενημερώσουμε και το Makefile ώστε να γίνεται η μεταγλώττιση του συγκεκριμένου αρχείου. 3.3 Απαραίτητες Δομές Για την λειτουργία της υποδομής curse είναι απαραίτητο να γίνει η προσθήκη κάποιων δομών οι ο- ποίες θα περιέχουν απαραίτητες πληροφορίες. Αρχικά απαιτείται πληροφορία για το ποιες κατάρες είναι διαθέσιμες στο σύστημα και ποιες ενεργοποιημένες. Αυτές οι πληροφορίες θα αποθηκευτούν στο αρχείο curse.h Η κάθε κατάρα μοντελοποιείται ως ένα αναμμένο bit σε ένα 16-bit αριθμό. # DEFINE NO_FS_CACHE 0 x01 # DEFINE NO_EXEC 0 x02 # DEFINE POISON 0 x04 Η δομή που θα επιλέξουμε για να αποθηκεύσουμε τα ονόματα των διαθέσιμων κατάρων στο σύστημα θα είναι στατική, ένας πίνακας από strings. Η θέση στον πίνακα όπου βρίσκεται το όνομα κάθε κατάρας αντιστοιχεί στη θέση όπου η συγκεκριμένη κατάρα έχει 1. Κάθε αλφαριθμητικό στον πίνακα έχει μέγεθος 32 bytes. Η πληροφορία αυτή βρίσκεται στο χώρο πυρήνα ώστε το ίδιο εκτελέσιμο να μπορεί να χρησιμοποιηθεί σε συστήματα με διαφορετικές κατάρες. # DEFINE CURSE_NAME_LENGTH 32 * s i z e o f ( char ) ; const char * c u r s e s [ ] = { n o _ f s _ c a c h e, no_exec, p o i s o n } ; Ο αριθμός των κατάρων που βρίσκονται στο σύστημα είναι # DEFINE NR_CURSES 3

4 3 ΥΠΟΔΟΜΗ CURSE 3 Επίσης θα πρέπει να υπάρχει η πληροφορία για το ποιες κατάρες είναι ενεργοποιημένες και ποιες απενεργοποιημένες. Για το σκοπό αυτό θα εισάγουμε μία νέα global μεταβλητή τύπου short int (16 bits). Τη μεταβλητή αυτή θα τη χρησιμοποιήσουμε σε επίπεδο bit. Αν το x bit είναι 1, σημαίνει ότι η κατάρα x είναι ενεργοποιημένη. Θα ονομάσουμε αυτή τη μεταβλητή curses_enabled. Στην αρχή όλες οι κατάρες είναι απενεργοποιημένες. s h o r t i n t c u r s e d _ e n a b l e d = 0 x00 Σε επίπεδο διεργασίας θα χρειαστούμε μία μεταβλητή ανά διεργασία η οποία θα δείχνει ποιες κατάρες έχει υποστεί μια διεργασία. Η μεταβλητή αυτή θα είναι πάλι τύπου short int, με την ίδια λογική της cursed_enabled και θα ονομάζεται cursed. Η μεταβλητή αυτή ενσωματώνεται μέσα στη δομή struct task_struct η οποία υπάρχει στο αρχείο include/linux/sched.c. Η δομή αυτή αποτελεί τον process descriptor της διεργασίας, και περιέχει όλες τις απαραίτητες πληροφορίες που διατηρεί το λειτουργικό σύστημα για μια διεργασία, όπως το pid της διεργασίας, την κατάσταση της, vm state, ανοιχτά αρχεία, credentials κτλπ Λειτουργία System Call Curse Το system call θα πρέπει να υποστηρίζει 7 διαφορετικές λειτουργίες, οι οποίες αναλύονται παρακάτω. Ο διαχωρισμός για το ποια λειτουργία θα εκτελεστεί θα βασίζεται στο flag το οποίο θα περνιέται ως πρώτο όρισμα. Για ευκολία ανάγνωσης κώδικα τα flag θα είναι pre-defined σταθερές. Αίτηση λίστας με διαθέσιμες κατάρες Στην περίπτωση αυτή θέλουμε να επιστρέψουμε στο χρήστη τον πίνακα με τα ονόματα των διαθέσιμων κατάρων. Ο πίνακας όμως βρίσκεται σε χώρο πυρήνα, οπότε δε μπορούν να μοιραστούν άμεσα τη δομή. Για το λόγο αυτό θα χρησιμοποιήσουμε τη συνάρτηση copy_to_user που χρησιμοποιείται για τη μεταφορά δεδομένων από χώρο πυρήνα σε χώρο χρήστη. Ο χρήστης θα κάνει malloc τον κατάλληλο πίνακα για να δεχθεί τις διαθέσιμες κατάρες και θα περνάει τη διευθυνσή του ως το τέταρτο όρισμα της sys_curse, το list_curses. Ενεργοποίηση κατάρας Για την ενεργοποίηση μιας κατάρας θα περνιέται ως δεύτερο όρισμα ο αριθμός που αντιστοιχεί στην κατάρα που θέλουμε να ενεργοποιήσουμε. Η ενεργοποίηση θα εκτελείται με το λογικό and ( ) μεταξύ της σταθεράς που αντιστοιχεί στην κατάρα και της μεταβλητής cursed_enabled. Ωστόσο, εδώ προκύπτουν κάποια ζητήματα : Συγχρονισμός : Είναι πιθανόν να παρουσιαστούν race conditions που αφορούν την πρόσβαση στη μεταβλητή cursed_enabled. Για να λυθούν αυτή το πρόβλημα θα χρησιμοποιήσουμε κάποιο σχήμα συγχρονισμού. Καθώς η πρόσβαση στη μεταβλητή cursed_enabled, αφορά μόνο την ενεργοποίηση ενός bit της, μπορούμε να χρησιμοποιήσουμε κάποια α- τομική εντολή (atomic operation). Αντί λοιπόν για το λογικό or, Θα χρησιμοποιήσουμε λοιπόν την ατομική εντολή set_bit(int nr,void *addr), η οποία θέτει το nr bit της μεταβλητής στην οποία δείχνει ο pointer addr. Ασφάλεια : Καθώς όλοι οι χρήστες δεν έχουν το δικαίωμα να ενεργοποιούν και απενεργοποιούν κατάρες, είναι απαραίτητο να γίνεται κάποιος έλεγχος δικαιωμάτων. Την ενεργοποίηση κατάρων μπορεί να πραγματοποιήσει μόνο ο root, ο έλεγχος αυτός γίνεται με τη συνάρτηση του πυρήνα capable(cap_sys_admin).

5 3 ΥΠΟΔΟΜΗ CURSE 4 Απενεργοποίηση κατάρας Για την απενεργοποίηση κατάρας ισχύει ότι για την ενεργοποίηση, με τη διαφορά ότι αντί της set_bit θα χρησιμοποιηθεί η clear_bit. Ερώτηση κατάστασης ενεργοποίησης κατάρας Η ερώτηση κατάστασης ενεργοποίησης κατάρας πραγματοποιείται με την επιλογή του κατάλληλου flag καθώς και του αριθμού κατάρας. Ο έλεγχος γίνεται ελέγχοντας αν το αντίστοιχο bit της μεταβλητής cursed_enabled είναι 0 ή 1. Άρα ισχύει ότι για την ενεργοποίηση/απενεργοποίηση, χωρίς τον έλεγχο δικαιωμάτων και χρησιμοποιείται η ατομική εντολή test_bit. Επιβολή κατάρας σε διεργασία Για την επιβολή κατάρας απαιτείται το κατάλληλο flag, ο αριθμός κατάρας καθώς και το pid της διεργασίας που θέλουμε να καταραστούμε. Η επιβολή κατάρας σε διεργασία θυμίζει πολύ την ενεργοποίηση κατάρας. Όμως σε αυτήν την περίπτωση το λογικό or θα γίνει μεταξύ του ειδικού αριθμού κατάρας, και της μεταβλητής cursed η οποία υπάρχει στην δομή task_struct που αντιστοιχεί στη διεργασία με το αντίστοιχο pid. Για να βρούμε το task_struct που αντιστοιχεί στη διεργασία με το αντίστοιχο pid θα χρησιμοποίησουμε την struct *task_struct *find_task_by_vpid(pid_t vnr). Αυτή θα μας επιστρέψει τον κατάλληλο process descriptor.. Για να χρησιμοποίησουμε αυτή την εντολή, θα χρειαστεί να πάρουμε κάποιο lo, το όποια επιτυγχάνουμε με τις εντολές rcu_read_lock() και rcu_read_unlock(). Και σ αυτήν την περίπτωση ενδέχεται να παρουσιαστούν race conditions για την μεταβλητή cursed. Οπότε θα χρησιμοποιήσουμε και εδώ ατομική εντολή, και συγκεκριμένα την set_bit. Ακόμα, οι μόνοι χρήστες που έχουν δικαίωμα επιβολής μιας κατάρας σε διεργασία είναι ο ιδιοκτήτης της διεργασίας και ο root. Θα πρέπει λοιπόν να γίνει κάποιος έλεγχος για το αν τα credentials του χρήστη που επιβάλει την διεργασία είναι ίδια με τα credential της διεργασίας που θέλει να καταραστεί. Το uid μαζί με τα υπόλοιπα credentials υπάρχει στη struct cred που υπάρχει στο task_struct. Το task_struct της διεργασίας που πρόκειται να καταραστεί έχει βρεθεί ήδη με βάση το pid. Το task_struct της διεργασίας που επιχειρεί την κατάρα υπάρχει σε μία μεταβλητή του συστήματος που δείχνει την τρέχουσα διεργασία, την current. Το cred της μπορούμε να το πάρουμε εύκολα με την μακροεντολή current_cred(). O έλεγχος θα γίνει με τις παρακάτω εντολές, όπου to tcred θα έχει τα credentials της τρέχουσας διεργασίας και το cred της διεργασίας που θέλουμε να καταραστούμε. ( cred >e u i d ^ t c r e d > s u i d ) && ( cred >e u i d ^ t c r e d >u i d ) && ( cred >u i d ^ t c r e d > s u i d ) && ( cred >u i d ^ t c r e d >u i d ) ( c a p a b l e ( CAP \ _SYS \ _ADMIN ) Μία από τις απαιτήσεις της υποδομής είναι οι κατάρες να κληρονομούνται στα παιδιά της διεργασίας ενώ να μην επηρεάζονται τα ήδη υπάρχοντα παιδιά τους. Η δημιουργία ενός παιδιού γίνεται με χρήση της fork η οποία ορίζεται στο αρχείο kernel/fork.c. H fork καλεί την clone, η οποία καλεί την do_fork η οποία καλεί την copy_process. Η τελευταία δημιουργεί ένα νέα kernel sta, thread_info και task_struct για τη νέα διεργασία. Οι τιμές που παίρνουν είναι πανομοιότυπες με αυτές του πατέρα, με μοναδική εξαίρεση το pid. Για να επιτύχουμε λοιπόν την κληρονομικότητα αρκεί να φροντίσουμε η copy_process να αντιγράφει και την τιμή της μεταβλητής cursed.

6 3 ΥΠΟΔΟΜΗ CURSE 5 Αφαίρεση κατάρας σε διεργασία Ισχύουν τα ίδια με την επιβολή κατάρας, με τη διαφορά ότι χρησιμοποιείται η ατομική εντολή clear_bit. Ερώτηση καθεστώτος κατάρας σε διεργασία Ισχύουν τα ίδια με την επιβολή/αφαίρεση κατάρας, με τη διαφορά ότι χρησιμοποιείται η α- τομική εντολή test_bit. Σημειώνουμε ότι σε κάθε περίπτωση, η κλήση συστήματος θα επιστρέφει κάποιον κωδικό επιτυχίας αν η λειτουργία ήταν επιτυχής, η τον κατάλληλο κωδικό λάθους. 3.5 Βιβλιοθήκη Χρήστη Η βιβλιοθήκη αυτή θα παρέχει στο χρήστη μια διεπαφή για τα προγράμματα χρήστη. Σκοπός της είναι να παρέχει στους χρήστες ένα εύκολο τρόπο να χρησιμοποιούν τις λειτουργίες της δομής curse χωρίς να χρειάζεται κάθε φορά να κάνουν την κατάλληλη κλήση στη κλήση συστήματος sys_curse και να χρειάζεται να διαμορφώνουν όλα τα ορίσματα της. Αυτό θα απαιτούσε από το χρήστη να θυμάται τα κατάλληλα flags, τον αριθμό της κλήσης συστήματος κτλπ. Επίσης καθώς κάποια από τα ορίσματα της sys_curse δεν χρησιμοποιούνται σε ορισμένες λειτουργίες θα έπρεπε ο χρήστης να θυμάται ποια είναι και να τα θέτει κάθε φορά σε NULL. Είναι εμφανές ότι αυτή η προσέγγιση εκτός από μη φιλική είναι και επιρρεπής σε λάθη του χρήστη. Για να αποφύγουμε λοιπόν όλα αυτά δημιουργούμε τη βιβλιοθήκη χρήστη που ουσιαστικά θα αποτελείται από wrapper συναρτήσεις για την κλήση της sys_curse. Η βιβλιοθήκη θα περιλαμβάνει τουλάχιστον τόσες συναρτήσεις όσες οι λειτουργίες που υποστηρίζει το system call. Αυτές οι συναρτήσεις θα είναι υπεύθυνες και για την αναγνώριση των κωδικών λαθών που επιστρέφει το system call και την πιο φιλικά παρουσίαση τους στο χρήστη. Η βιβλιοθήκη αυτή μπορεί να υπάρχει σε οποιοδήποτε σημείο έτσι ώστε να μπορεί να γίνει include από το χρήστη. 3.6 Εργαλείο Γραμμής Εντολών Τέλος η υποδομή curse περιλαμβάνει ένα εργαλείο γραμμής εντολών. Σκοπός αυτού του εργαλείου είναι η εύκολη αλληλεπίδραση με τις λειτουργίες της curse. Αυτό το εργαλείο μπορεί ουσιαστικά να είναι ένα ψευδο-φλοιός(shell). Ο χρήστης θα δίνει μέσω αυτού ότι εντολές επιθυμεί. Επίσης ο χρήστης μπορεί να καταριέται αυτόν τον φλοιό και μέσω αυτού να τρέχει όσες διεργασίες θέλει. Λόγω κληρονομικότητας οι διεργασίες που θα τρέχει από εκεί θα είναι και αυτές καταραμένες. 3.7 Σχολιασμός Η υποδομή curse είναι ο βασικός μηχανισμός υλοποίησης και χρήσης κατάρων στο λειτουργικό σύστημα. Ο σχεδιασμός του έγινε με γνώμονα την επεκτασιμότητα και ανεξαρτησία συστήματος. Η υλοποίηση μιας νέας κατάρας καθίσταται πολύ εύκολη καθώς ο χρήστης αρκεί να κάνει define τον αριθμό της κατάρας που θέλει να υλοποιήσει, να αυξήσει κατά ένα τον γενικό αριθμό κατάρων,να προσθέσει το όνομα της κατάρας και φυσικά να υλοποιήσει την κατάρα του. Δεν χρειάζεται να γράψει επιπλέον κώδικα για την υποδομή curse ούτε να πειράξει κάποια από τις δομές τις. Όσον α- φορά την ανεξαρτησία συστήματος και υλοποιημένων κατάρων, η υποδομή curse είναι υλοποιημένη κατά τέτοιο τρόπο, ώστε το ίδιο εκτελέσιμο να λειτουργεί σε συστήματα με διαφορετικές κατάρες. Αυτό επιτυγχάνεται καθώς όλη η πληροφορία για το ποιες κατάρες είναι υλοποιημένες υπάρχει αποκλειστικά στον χώρο πυρήνα και όχι στον χώρο χρήστη.

7 4 ΚΑΤΑΡΑ NO-FS-CACHE 6 Καθώς η υποδομή curse λειτουργεί σε χώρο πυρήνα, έπρεπε να δοθεί ιδιαίτερη έμφαση σε θέματα όπως της ασφάλειας και του συγχρονισμού. Τα ζητήματα αυτά λύθηκαν με τους κατάλληλους ελέγχους δικαιωμάτων και σχημάτων συγχρονισμού. Όσων αφορά τα δεύτερα, υπήρχαν πολλές επιλογές, όπως semaphores, spinlo s και atomic transactions. Θα μπορούσε να χρησιμοποιηθεί το καθένα από αυτά, όμως καθώς η φύση των λειτουργιών το επέτρεπε χρησιμοποιήθηκαν οι ατομικές εντολές οι οποίες είναι πιο αποδοτικές. Όσων αφορά την κληρονομικότητα των κατάρων, ήταν ο μηχανισμός δημιουργίας διεργασιών στο λειτουργικό σύστημα που ουσιαστικά έλυνε το πρόβλημα. Είναι λογικό ότι η παρεμβάσεις στο λειτουργικό σύστημα θα προσθέτουν κάποια επιβάρυνση. Σκοπός μας ήταν η ελαχιστοποίηση αυτών των επιβαρύνσεων. Αρχικά φροντίσαμε την χρήση όσων των δυνατών λιγότερων μεταβλητών ώστε να μην επιβαρύνουμε την ήδη μικρή kernel sta. Έτσι οι ενεργοποιημένες κατάρες μοντελοποιήθηκαν με μία μόνο μεταβλητή και μάλιστα τύπου short int. Μια μικρή επιβάρυνση υπάρχει στο ότι προστίθεται μία μεταβλητή ένα διεργασία, όμως δεδομένου ότι το ήδη μέγεθος της δομής task_struct είναι ήδη περίπου 1.7kilobytes, η προσθήκη μιας short int δεν θεωρείται ιδιαίτερη επιβαρυντική. Ούτε από άποψη χρόνου υπάρχει ιδιαίτερη επιβάρυνση. Οι περισσότερες λειτουργίες αντιστοιχούν στην αλλαγή η έλεγχο ενός bit μιας μεταβλητής. Η μόνη σημαντική επιβάρυνση προκύπτει από το γεγονός ότι το λειτουργικό σύστημα για να ελέγχει αν μια κατάρα είναι ενεργοποιημένη σε μια διεργασία θα πρέπει να κάνει τον έλεγχο αν το αντίστοιχο bit της μεταβλητής cursed_enabled και της μεταβλητής της διεργασίας cursed είναι και τα δύο 1. Τέλος πρέπει να σημειώσουμε ότι αν ο τύπος της κατάρας είναι τέτοιος όπου το λειτουργικό σύστημα δεν εμπλέκεται συχνά για να ελέγξει τις δύο μεταβλητές, μπορεί η ενεργοποίηση μιας κατάρας ή η επιβολή κατάρας σε μια διεργασία να αργήσει να γίνει αντιληπτή. 4 Κατάρα no-fs-ca e Στο σημείο αυτό θα ασχοληθούμε με τον σχεδιασμό της κατάρας no-fs-cache η οποία θα λύσει το αρχικό μας πρόβλημα, δηλαδή τον λόξυγγα ανετοιμότητας. Η κατάρα αυτή θα ενσωματωθεί στην γενικότερη υποδομή για της κατάρες, δηλαδή την curse. Όπως ήδη σημειώσαμε σκοπός μας είναι συγκεκριμένες διεργασίες οι οποίες δεν χρειάζεται να διατηρούν τα δεδομένα τους στην ca e να μην εκτοπίζουν δεδομένα από τις διεργασίες οι οποίες τα χρειάζονται. Καθώς όμως το λειτουργικό σύστημα δε γνωρίζει ποια πρόκειται να είναι η χρήση των αρχείων, αυτή η λειτουργία δεν μπορεί να αυτοματοποιηθεί. Η κατάρα μας λοιπόν είναι ένας τρόπος ώστε να ενημερώνουμε το λειτουργικό σύστημα για την προβλεπόμενη χρήση των αρχείων. Για την υλοποίηση της κατάρας μας θα χρησιμοποιήσουμε την κλήση της fadvise η οποία υπάρχει στο πρότυπο POSIX. i n t p o s i x _ f a d v i s e ( i n t fd, o f f _ t o f f s e t, o f f _ t len, i n t a d v i c e ) ; Αυτή χρησιμοποιείται για να δηλώσει στο λειτουργικό σύστημα ποια χρήση πρόκειται να έχει ένα αρχείο, και υποστηρίζει κάποιες επιλογές όπως NORMAL, SEQUENTIAL, RANDOM, NOREUSE, WILLNEED DONTNEED, παρότι η επιλογή NOREUSE που μοιάζει να είναι αυτή η οποία ταιριάζει στην περίπτωση μας δεν είναι υλοποιημένη. 1 Θα χρησιμοποιήσουμε λοιπόν την επιλογή DONTNEED. Η συμπεριφορά του linux σε αυτή την επιλογή είναι να αποβάλλει από τη μνήμη ca e τα περιεχόμενα του αρχείου που δείχνει ο file descriptor fd. Το ποια δεδομένα θα αποβληθούν από τη μνήμη ορίζεται από το συνδυασμό offset και length. Θα χρειαστεί λοιπόν να ενσωματώσουμε κάποιες κλήσεις της fadvise σε κλήσεις συστήματος του linux. Σύμφωνα με λειτουργιά της fadvise στην επιλογή DONTNEED, θα πρέπει κάποιο μέρος του 1 mm/fadvice.c : lines 108,109: case POSIX_FADVISE_NOREUSE: break;

8 4 ΚΑΤΑΡΑ NO-FS-CACHE 7 αρχείου να έχει ήδη μεταφερθεί στη μνήμη και από εκεί να το αποβάλλουμε. Οι κλήσεις λοιπόν της fadvise θα ενσωματωθούν στις κλήσεις συστήματος read και write οι οποίες ορίζονται στο αρχείο fs/read_write.c. Θα περιγράψουμε την κλήση συστήματος read, η οποία ορίζεται στο αρχείο fs/read_write.c στην γραμμή 372: SYSCALL_DEFINE3 ( read, unsigned int, fd, char u s e r *, buf, s i z e _ t, c o u n t ) Η συνάρτηση αυτή δέχεται τον file descriptor του αρχείου, τον buffer στον οποίο θα γράψει τα δεδομένα για να τα επιστρέψει στο χρήστη και τέλος το πόσο θέλουμε να διαβάσουμε.αρχικά ψάχνει στην δομή struct_file (include/linux/fs.h) για να βρει τον file pointer(loff_t f_pos) μέσω της file_pos_read. Στην συνέχεια διαβάζει count bytes από το αρχείο και τα αποθηκεύει στον buffer. Τέλος σώζει μέσω της file_pos_write τη νέα τιμή του file pointer. Σε αυτό το σημείο λοιπόν τα δεδομένα που θέλουμε να διαβάσουμε έχουν αποθηκευτεί στο buffer και η δομή struct_file είναι συνεπής. Σε ακριβώς αυτό το σημείο θα γίνεται η κλήση της fadvise για τις καταραμένες διεργασίες. Ο έλεγχος για το αν μια διεργασία είναι καταραμένη θα γίνεται ελέγχοντας ότι το bit που αντιστοιχεί στην συγκεκριμένη κατάρα θα είναι ενεργοποιημένο (λογικό 1) τόσο στη μεταβλητή curse_enabled ( γενική ενεργοποίηση κατάρας), όσο και στη μεταβλητή cursed της διεργασίας που έκανε το read. Αν αυτή η συνθήκη ισχύει τότε θα γίνεται κλήση της fadvise με τα εξής ορίσματα : File Descriptor : Τον file descriptor της read Offset : Την τιμή του file pointer(loff_t tpos) μείον την τιμή των bytes που διαβάσαμε. Δηλαδή pos-count. Length : Την τιμή του count. Συνεπώς μετά από κάθε διάβασμα θα αποβάλουμε από τη μνήμη τα δεδομένα τα οποία διαβάσαμε. Ακριβώς η ίδια προσέγγιση θα χρησιμοποιηθεί και για την write. 4.1 Ένταξη κατάρας στην υποδομή curse Όπως αναφέραμε η κατάρα αυτή θα ενταχθεί στην γενικότερη υποδομή κατάρων curse. Ο τρόπος ένταξης κατάρας έχει ήδη αναλυθεί, αλλά επισημαίνουμε εδώ την ένταξη της συγκεκριμένης κατάρας. Η κατάρα αυτή είναι η πρώτη που εντάσσουμε άρα θα χρησιμοποιήσουμε το πρώτο bit των μεταβλητών cursed_enabled και cursed. Στο αρχείο curse.h κάνουμε τα εξής define: # DEFINE NO_FS_CACHE 0 x01 # DEFINE NR_CURSES 1 Επίσης προσθέτουμε το όνομα της κατάρας στην πρώτη θέση του πίνακα curses: c o n s t c h a r * c u r s e s [ ] = { n o _ f s _ c a c h e } ; Οπότε είναι το πρώτο bit των μεταβλητών cursed_enabled και cursed όπου θα ελέγχουμε για να κάνουμε την κλήση της fadvise.

9 4 ΚΑΤΑΡΑ NO-FS-CACHE Σχολιασμός Με τον συγκεκριμένο σχεδιασμό καταφέρνουμε να αντιμετωπίσουμε τον λόξυγγα ανετοιμότητας. Ωστόσο περιμένουμε ο συγκεκριμένος σχεδιασμός να έχει κάποια αρνητική επίδραση στην επίδοση του συστήματος. Αυτό οφείλεται στο γεγονός ότι σε κάθε read ή write που πραγματοποιείται θα πρέπει να γίνεται ένας έλεγχος για το αν η διεργασία είναι καταραμένη και επίσης να γίνεται και μια κλήση fadvise όταν όντος είναι. Καθώς όμως οι λειτουργίες ανάγνωσης και εγγραφής είναι πολύ συχνές στα περισσότερα υπολογιστικά συστήματα, η προσθήκη αυτού του ελέγχου μπορεί τελικά να θεωρηθεί ακριβή. Όσον αφορά τη σταθερότητα και ασφάλεια του συστήματος, θεωρούμε ότι ο σχεδιασμός μας είναι αρκετά επιτυχημένος. Αυτό βασίζεται στο γεγονός ότι η κατάρα no-fs-ca e δεν τροποποιεί υπάρχουσες δομές του λειτουργικού μας συστήματος, ούτε επιτελεί επικίνδυνες λειτουργίες σε αυτές. Αντίθετα βασίζεται στην υποδομή curse και στον τρόπο που το λειτουργικό σύστημα εκτελεί τις λειτουργίες ανάγνωσης και εγγραφής καθώς και τον τρόπο που μεταφέρει και απομακρύνει αρχεία από τη μνήμη ca e. Καθώς αυτή η εργασία δεν αποτελεί παρά έναν σχεδιασμό της υλοποίησης ελπίζουμε ότι τα συμπεράσματα μας είναι σωστά και ότι θα επαληθευτούν στο στάδιο της υλοποίησης.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εικονική Μνήμη (1/2)

Εικονική Μνήμη (1/2) Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Εικονική Μνήμη (1/2) Λειτουργικά Συστήματα Υπολογιστών 7ο Εξάμηνο, 2016-2017 Εικονική Μνήμη

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

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

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

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

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

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

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

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

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

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

Εικονική Μνήμη (Virtual Μemory)

Εικονική Μνήμη (Virtual Μemory) ΗΥ 431 Αρχιτεκτονική Παραλλήλων Συστημάτων Διάλεξη 16 Εικονική Μνήμη (Virtual Μemory) Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Απλό πείραμα int *data = malloc((1

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

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

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

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

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

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

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

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

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

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

Χρονοδρομολογητής Κυκλικής Επαναφοράς

Χρονοδρομολογητής Κυκλικής Επαναφοράς Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων 4 η Εργαστηριακή Άσκηση: Χρονοδρομολογητής Κυκλικής Επαναφοράς Λειτουργικά Συστήματα Υπολογιστών

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

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

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

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

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 lalis@inf.uth.gr Ο κώδικας δεν εκτελείται «μόνος του» Ο εκτελέσιμος κώδικας αποθηκεύεται σε ένα αρχείο Το αρχείο είναι μια «παθητική» οντότητα

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

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM).

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM). Μνήμες Ένα από τα βασικά πλεονεκτήματα των ψηφιακών συστημάτων σε σχέση με τα αναλογικά, είναι η ευκολία αποθήκευσης μεγάλων ποσοτήτων πληροφοριών, είτε προσωρινά είτε μόνιμα Οι πληροφορίες αποθηκεύονται

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

Μάθημα 3.2: Κεντρική Μονάδα Επεξεργασίας

Μάθημα 3.2: Κεντρική Μονάδα Επεξεργασίας Κεφάλαιο 3 ο Αρχιτεκτονική Υπολογιστών Μάθημα 3.: Κεντρική Μονάδα Επεξεργασίας Όταν ολοκληρώσεις το κεφάλαιο θα μπορείς: Να σχεδιάζεις την εσωτερική δομή της ΚΜΕ και να εξηγείς τη λειτουργία των επιμέρους

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

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

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

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 2: Δομή ενός προγράμματος C Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

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

Κεφάλαιο VΙ: Προσπέλαση Αρχείων. 5.1 Αρχεία δεδομένων.

Κεφάλαιο VΙ: Προσπέλαση Αρχείων. 5.1 Αρχεία δεδομένων. Κεφάλαιο VΙ: Προσπέλαση Αρχείων. 5.1 Αρχεία δεδομένων. Έως τώρα σε ένα πρόγραμμα έχουμε μάθει να εισάγουμε δεδομένα από το πληκτρολόγιο χρησιμοποιώντας την συνάρτηση scanf() και να εκτυπώνουμε δεδομένα

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

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

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

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

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

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

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

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

Προγραμματισμός Ι (HY120) Προγραμματισμός Ι (HY20) # μνήμη & μεταβλητές πρόγραμμα & εκτέλεση Ψηφιακά δεδομένα, μνήμη, μεταβλητές 2 Δυαδικός κόσμος Οι υπολογιστές είναι δυαδικές μηχανές Όλη η πληροφορία (δεδομένα και κώδικας) κωδικοποιείται

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

Ανάπτυξη και Σχεδίαση Λογισμικού

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Βασικά Στοιχεία Το αλφάβητο της C Οι βασικοί τύποι της C Δηλώσεις μεταβλητών Είσοδος/Έξοδος Βασικές εντολές της C Αλφάβητο

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

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

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

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

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Εισαγωγή Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Μεταγλωττιστής Αρχικό πρόγραμμα (source program) Μεταγλωττιστής Τελικό πρόγραμμα (object program) Διαγνωστικά μηνύματα Μεταγλωττιστής Παίρνει σαν

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

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

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

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

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου Εργαστήριο 2: Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η ανάλυση των βασικών χαρακτηριστικών της Γλώσσας Προγραμματισμού

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

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

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

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

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

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

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

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας

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

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

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 6 C & Assembly

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 6 C & Assembly Προηγμένοι Μικροεπεξεργαστές Εργαστήριο 6 C & Assembly Real World Situation Στον πραγματικό κόσμο, κανείς δεν γράφει αποκλειστικά assembly Κουραστικό Δύσκολα συντηρήσιμος κώδικας Μηδενική φορητότητα Μεγάλη

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

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

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

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

Εργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ

Εργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ Εργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ Εισαγωγή Σκοπός τόσο αυτού του εργαστηρίου, όσο και των εργαστηρίων που ακολουθούν, είναι να γνωρίσουμε τους τρόπους δημιουργίας και διαχείρισης των διεργασιών (processes)

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

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

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

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

Διαφορές single-processor αρχιτεκτονικών και SoCs

Διαφορές single-processor αρχιτεκτονικών και SoCs 13.1 Τα συστήματα και η επικοινωνία μεταξύ τους γίνονται όλο και περισσότερο πολύπλοκα. Δεν μπορούν να περιγραφούνε επαρκώς στο επίπεδο RTL καθώς αυτή η διαδικασία γίνεται πλέον αρκετά χρονοβόρα. Για αυτό

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

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

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

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

Μάθημα 4: Κεντρική Μονάδα Επεξεργασίας

Μάθημα 4: Κεντρική Μονάδα Επεξεργασίας Μάθημα 4: Κεντρική Μονάδα Επεξεργασίας 4.1 Γενικά Ο υπολογιστής επεξεργάζεται δεδομένα ακολουθώντας βήμα βήμα, τις εντολές ενός προγράμματος. Το τμήμα του υπολογιστή, που εκτελεί τις εντολές και συντονίζει

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

Εισαγωγή στη γλώσσα προγραμματισμού C++

Εισαγωγή στη γλώσσα προγραμματισμού C++ Εισαγωγή στη γλώσσα προγραμματισμού C++ Περιβάλλον Εργασίας 2 Περιβάλλον Εργασίας 1. Χρήση απλού κειμενογράφου και Μεταγλωττιστή 2. Ολοκληρωμένα Περιβάλλοντα Εργασίας (Integrated Development Environments)

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

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

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

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

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

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

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

Διεργασίες και Νήματα (2/2)

Διεργασίες και Νήματα (2/2) Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Διεργασίες και Νήματα (2/2) Λειτουργικά Συστήματα Υπολογιστών 7ο Εξάμηνο, 2016-2017 Νήματα

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

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

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

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

3 η ΑΣΚΗΣΗ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ntua.gr 3 η ΑΣΚΗΣΗ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ

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

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 lalis@inf.uth.gr Πρόγραμμα και εκτέλεση προγράμματος Ο εκτελέσιμος κώδικας αποθηκεύεται σε ένα αρχείο Το αρχείο είναι μια «παθητική» οντότητα

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Βασικοί Τύποι Πίνακες (μέρος 1) Συμβολοσειρές Ο Προεπεξεργαστής Τελευταία ενημέρωση: Σεπτέμβριος 2016 Εισαγωγή - 2 short:

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

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

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

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

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

Προγραμματισμός Ι. Προεπεξεργαστής. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Προεπεξεργαστής Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Διαδικασία Μεταγλώττισης πρόγραµµα επεξεργασίας κειµένου if a

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

Προγραμματισμός συστημάτων UNIX/POSIX

Προγραμματισμός συστημάτων UNIX/POSIX Προγραμματισμός συστημάτων UNIX/POSIX Προχωρημένη διαδιεργασιακή επικοινωνία: επώνυμοι αγωγοί (FIFOs) ουρές μηνυμάτων (message queues) κοινόχρηστη μνήμη (shared memory) Ανάγκη Ότι είδαμε μέχρι τώρα μπορεί

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

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

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

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

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

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

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

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

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

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

Περιεχόμενα. Πρόλογος... 21

Περιεχόμενα. Πρόλογος... 21 Περιεχόμενα Πρόλογος... 21 Κεφάλαιο 1: Εισαγωγή στον προγραμματισμό... 25 Εισαγωγή...27 Πώς να διαβάσετε αυτό το βιβλίο...27 Η δομή των κεφαλαίων...28 Γιατί να μάθω προγραμματισμό;...31 Γιατί να μάθω C;...31

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

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,

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

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

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

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

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

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

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

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128] ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2017 (27/1/2017) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

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

Λειτουργικά Συστήματα (Λ/Σ) Λειτουργικά Συστήματα (Λ/Σ) Διαχείριση Αρχείων Βασίλης Σακκάς 11/12/2013 1 Διαχείριση Αρχείων 1 Μακρόχρονη αποθήκευση πληροφοριών 1. Αποθήκευση μεγάλου όγκου δεδομένων 2. Οι αποθηκευμένες πληροφορίες πρέπει

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Οργάνωση Η/Υ Ενότητα 1η: Εισαγωγή στην Οργάνωση Η/Υ Άσκηση 1: Αναλύστε τη διαδοχική εκτέλεση των παρακάτω εντολών MIPS με βάση τις

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

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

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

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

Streams Input / Output in C++ George Kastrinis

Streams Input / Output in C++ George Kastrinis Streams Input / Output in C++ George Kastrinis (gkastrinis@di.uoa.gr) Streams What? Η είσοδος και η έξοδος δεδομένων, στη C++ βασίζεται στην έννοια των ρευμάτων - streams Ένα ρεύμα είναι ουσιαστικά μια

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

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

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

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος http://www.teiser.gr/icd/staff/lantzos lantzos@teiser.gr Κανόνες Ομαλής Λειτουργίας Ερχόμαστε στην ώρα μας Δεν καπνίζουμε και τρώμε εντός της αίθουσας

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

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

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

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

Ε-85: Ειδικά Θέµατα Λογισµικού

Ε-85: Ειδικά Θέµατα Λογισµικού Ε-85: Ειδικά Θέµατα Λογισµικού Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων Χειµερινό Εξάµηνο 2009-10 «ιεργασίες και Νήµατα» Παναγιώτης Χατζηδούκας (Π.Δ. 407/80) E-85: Ε.Θ.Λ: Προγραµµατισµός Συστηµάτων

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

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης Γλώσσες Προγραμματισμού Εργαστήριο 2ο Τύποι Δεδομένων - Είσοδος / Έξοδος Εργαστήριο 2ο Περίγραμμα Εργαστηριακής Άσκησης Εργαστήριο 2ο...1 Θεωρία εργαστηρίου...2 Τύποι δεδομένων...2 Η συνάρτηση printf()...3

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

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

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

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

Μετατροπή χαρακτήρων ASCII σε αριθμό (atoi) & διάβασμα, και αποθήκευση του περιεχομένου του στη μνήμη. (Διάλεξη. Πανεπιστήμιο Κύπρου

Μετατροπή χαρακτήρων ASCII σε αριθμό (atoi) & διάβασμα, και αποθήκευση του περιεχομένου του στη μνήμη. (Διάλεξη. Πανεπιστήμιο Κύπρου Μετατροπή χαρακτήρων ASCII σε αριθμό (atoi) & Άνοιγμα αρχείου μέσα από τo SPIM, διάβασμα, και αποθήκευση του περιεχομένου του στη μνήμη (Διάλεξη 3) 1 Μετατροπή χαρακτήρων ASCII σε ακέραιο Ο πιο κάτω κώδικας

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

Παράλληλη Επεξεργασία

Παράλληλη Επεξεργασία Παράλληλη Επεξεργασία Φροντιστήριο: Εισαγωγή στα Πολυεπεξεργαστικά Συστήματα Διερασίες και Νήματα σε Πολυεπεξεργαστικά Συστήματα Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed

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

ΤΕΛΙΚΟ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ

ΤΕΛΙΚΟ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΑΡΧΗ 1 ης ΣΕΛΙΔΑΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΛΙΚΟ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ Επιμέλεια: Ομάδα Διαγωνισμάτων από Το στέκι των πληροφορικών Θέμα 1 ο Α. Να χαρακτηρίσετε κάθε μία από

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Μεταφραστές Εισαγωγή Διδάσκων: Επικ. Καθ. Γεώργιος Μανής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

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

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Προπτυχιακό μάθημα Αρχές Γλωσσών Προγραμματισμού Π. Ροντογιάννης 1 Μεταγλωττιστής Πρόγραμμα Διαβάζει προγράμματα δεδομένης γλώσσας (πηγαία γλώσσα) και τα μετατρέπει

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

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

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

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

ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ. Σκοπός της Άσκησης. 1. Εισαγωγικά στοιχεία για τους Δείκτες

ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ. Σκοπός της Άσκησης. 1. Εισαγωγικά στοιχεία για τους Δείκτες Σκοπός της Άσκησης ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η εξοικείωση με τη χρήση των δεικτών (pointers). Οι δείκτες δίνουν την δυνατότητα σε προγράμματα να προσομοιώνουν τη

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

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 2ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΣΦΑΛΜΑΤΑ ΜΕΤΑΓΛΩΤΤΙΣΗΣ Η γλώσσα C κάνει αυστηρή διάκριση μεταξύ πεζών

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

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 3 Επανάληψη Γ μέρος

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 3 Επανάληψη Γ μέρος ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ Δομές Δεδομένων (Εργ.) Ακ. Έτος 2017-18 Διδάσκων: Ευάγγελος Σπύρου Εργαστήριο 3 Επανάληψη Γ μέρος 1. Στόχος του εργαστηρίου Στόχος του τρίτου εργαστηρίου είναι

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

Συστήματα μνήμης και υποστήριξη μεταφραστή για MPSoC

Συστήματα μνήμης και υποστήριξη μεταφραστή για MPSoC Συστήματα μνήμης και υποστήριξη μεταφραστή για MPSoC Πλεονεκτήματα MPSoC Είναι ευκολότερο να σχεδιαστούν πολλαπλοί πυρήνες επεξεργαστών από τον σχεδιασμό ενός ισχυρότερου και πολύ πιο σύνθετου μονού επεξεργαστή.

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

2η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ Ακ. έτος , 5ο Εξάμηνο Σχολή ΗΜ&ΜΥ

2η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ Ακ. έτος , 5ο Εξάμηνο Σχολή ΗΜ&ΜΥ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ Ε Ρ Γ Α Σ Τ ΗΡ ΙΟ Υ ΠΟΛΟΓΙΣ Τ Ι Κ Ω Ν Σ Υ Σ Τ ΗΜΑΤΩΝ w w w. c s l ab.

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

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΚΕΦΑΛΑΙΟ 10 Όπως είδαμε και σε προηγούμενο κεφάλαιο μια από τις βασικότερες τεχνικές στον Δομημένο Προγραμματισμό είναι ο Τμηματικός Προγραμματισμός. Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης

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

Master Mind εφαρμογή στη γλώσσα προγραμματισμού C

Master Mind εφαρμογή στη γλώσσα προγραμματισμού C Master Mind εφαρμογή στη γλώσσα προγραμματισμού C Φεβρουάριος/Μάρτιος 2013 v. 0.1 Master-mind: κανόνες παιχνιδιού Στο master mind χρειάζεται να παράγονται κάθε φορά 4 τυχαία σύμβολα από ένα πλήθος 6 διαφορετικών

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

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας

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

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

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

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

Πληροφορική 2. Γλώσσες Προγραμματισμού

Πληροφορική 2. Γλώσσες Προγραμματισμού Πληροφορική 2 Γλώσσες Προγραμματισμού 1 2 Γλώσσες προγραμματσιμού Επιτρέπουν την κωδικοποίηση των αλγορίθμων Η εκτέλεση ενός προγράμματος θα πρέπει να δίνει τα ίδια αποτελέσματα με την νοητική εκτέλεση

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

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 13 η Δομές & Ενώσεις Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα 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 στην

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

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 7 η Πίνακες Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης Χριστοδούλου

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

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

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

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

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

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

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

Μαλούτα Θεανώ Σελίδα 1

Μαλούτα Θεανώ Σελίδα 1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Α. ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ ΦΥΛΛΑΔΙΟ 6 ο ( Ενότητες 2.3 ) 1.Τι είναι πρόγραμμα; 2. Ποια είναι τα πλεονεκτήματα των γλωσσών υψηλού επιπέδου σε σχέση με τις γλώσσες

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

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 14 η Διαχείριση Μνήμης και Δομές Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη

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

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

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

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

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

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

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

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 11 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 11 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Γιώργος Δημητρίου Μάθημα 11 ο Γεννήτορας Τελικού Κώδικα Ο γεννήτορας τελικού κώδικα είναι το πιο κρίσιμο τμήμα του μεταγλωττιστή και αντιμετωπίζει πολύπλοκα προβλήματα Βέλτιστη χρήση της αρχιτεκτονικής

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