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

Save this PDF as:
 WORD  PNG  TXT  JPG

Μέγεθος: 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 Επίλογος Γιατί; Πολλές φορές θέλουμε

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1. Εισαγωγή. Λειτουργικά Συστήματα Η/Υ. Διεργασίες. Ορισμός ΚΕΦΑΛΑΙΟ 3 - ΔΙΕΡΓΑΣΙΕΣ. Κεφάλαιο 3 «Διεργασίες»

1. Εισαγωγή. Λειτουργικά Συστήματα Η/Υ. Διεργασίες. Ορισμός ΚΕΦΑΛΑΙΟ 3 - ΔΙΕΡΓΑΣΙΕΣ. Κεφάλαιο 3 «Διεργασίες» 1. Εισαγωγή Λειτουργικά Συστήματα Η/Υ Κεφάλαιο 3 «Διεργασίες» Διδάσκων: Δ Λιαροκάπης Διαφάνειες: Π. Χατζηδούκας Η έννοια της διεργασίας (process) είναι θεμελιώδης για την κατανόηση του τρόπου με τον οποίο

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός συστημάτων UNIX/POSIX. Θέμα επιλεγμένο από τους φοιτητές: Προγραμματιστικές τεχνικές που στοχεύουν σε επιδόσεις

Προγραμματισμός συστημάτων UNIX/POSIX. Θέμα επιλεγμένο από τους φοιτητές: Προγραμματιστικές τεχνικές που στοχεύουν σε επιδόσεις Προγραμματισμός συστημάτων UNIX/POSIX Θέμα επιλεγμένο από τους φοιτητές: Προγραμματιστικές τεχνικές που στοχεύουν σε επιδόσεις Βελτιστοποιήσεις με στόχο τις επιδόσεις Σε αρκετές περιπτώσεις δεν αρκεί να

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

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

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

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

Διάλεξη 20: Χαμηλού Επιπέδου Προγραμματισμός II

Διάλεξη 20: Χαμηλού Επιπέδου Προγραμματισμός II Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 20: Χαμηλού Επιπέδου Προγραμματισμός II (Κεφάλαια 25.2, KNK-2ED) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132

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

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

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

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

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

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

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

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2012 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2012 ΤΕΧΝΟΛΟΓΙΑ (Ι) ΤΕΧΝΙΚΩΝ ΣΧΟΛΩΝ ΘΕΩΡΗΤΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Μάθημα : Μικροϋπολογιστές

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

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

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

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

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

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

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

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ. ΚΑΤΕΥΘΥΝΣΗ ΔΙΟΙΚΗΣΗΣ ΤΟΥΡΙΣΤΙΚΩΝ ΕΠΙΧΕΙΡΗΣΕΩΝ ΚΑΙ ΕΠΙΧΕΙΡΗΣΕΩΝ ΦΙΛΟΞΕΝΙΑΣ Πληροφορική I "Προγραμματισμός" B. Φερεντίνος

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

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; Εισαγωγή Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; 1. Σελίδα μαθήματος Εγγραφή Ο κάθε φοιτητής πρέπει να κάνει εγγραφή στη σελίδα του μαθήματος στην πλατφόρμα e-class

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 4ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΟΙ ΤΕΛΕΣΤΕΣ ΣΥΓΚΡΙΣΗΣ Με τους τελεστές σύγκρισης, συγκρίνουμε τις

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στην εφαρμογή Βασική Σελίδα (Activity) Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10

Εισαγωγή στην εφαρμογή Βασική Σελίδα (Activity) Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10 Περιεχόμενα Εισαγωγή στην εφαρμογή... 2 Βασική Σελίδα (Activity)... 3 Ρυθμίσεις... 3 Πελάτες... 6 Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10 Αποθήκη... 11 Αναζήτηση προϊόντος...

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 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 στην

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

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

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

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

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

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

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

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

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

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

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι Εισαγωγή Στον Προγραµµατισµό «C» Πίνακες Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Πίνακες στη C Ένας πίνακας στη C είναι

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

Προγραμματισμός Ι. Δομές & Ενώσεις. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

Προγραμματισμός Ι. Δομές & Ενώσεις. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Δομές & Ενώσεις Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Προγραμματισμός Δ. Τσελίκας Ι 1 Δομές (Structures) Δομή (structure) στη C είναι μία συλλογή από μεταβλητές οποιουδήποτε

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

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

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

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

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

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

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

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

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

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

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

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

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής ΕΥ311-Διαδικτυακός και Ταυτόχρονος Προγραμματισμός Εργαστήριο: Παραδείγματα δημιουργίας διεργασιών στο Linux Ένα πρόγραμμα (το στιγμιότυπο της εκτέλεσης του οποίου

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

Συμβολοσειρές ΣΥΜΒΟΛΟΣΕΙΡΕΣ. Γεώργιος Παπαϊωάννου ( )

Συμβολοσειρές ΣΥΜΒΟΛΟΣΕΙΡΕΣ. Γεώργιος Παπαϊωάννου ( ) ΣΥΜΒΟΛΟΣΕΙΡΕΣ Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr Περιγραφή: Ο τύπος string Μετατροπή από και προς τον τύπο string Βασικές μέθοδοι Χρήση Ελληνικών Συναρτήσεις C εκτύπωσης και ανάγνωσης Τελευταία

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

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

Περιεχόμενα. Πρόλογος... 17 Περιεχόμενα Πρόλογος... 17 Κεφάλαιο 1: Εισαγωγή... 19 Πώς να διαβάσετε αυτό το βιβλίο... 20 Η γλώσσα C Ιστορική αναδρομή... 22 Τα χαρακτηριστικά της C... 23 C Μια δομημένη γλώσσα... 23 C Μια γλώσσα για

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

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης Η συνάρτηση printf() Η συνάρτηση printf() χρησιμοποιείται για την εμφάνιση δεδομένων στο αρχείο εξόδου stdout (standard output stream), το οποίο εξ ορισμού συνδέεται με την οθόνη Η συνάρτηση printf() δέχεται

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

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

ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ (Τμήματα Υπολογιστή) ΕΚΠΑΙΔΕΥΤΗΣ:ΠΟΖΟΥΚΙΔΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ ΤΜΗΜΑΤΑ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΠΟΛΟΓΙΣΤΗ Κάθε ηλεκτρονικός υπολογιστής αποτελείται

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

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

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

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

ΗΥ486 - Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο Δεύτερη Προγραμματιστική Εργασία

ΗΥ486 - Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο Δεύτερη Προγραμματιστική Εργασία ΗΥ486 - Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2015-2016 Δεύτερη Προγραμματιστική Εργασία Γενική περιγραφή Στη δεύτερη προγραμματιστική εργασία καλείστε να υλοποιήσετε ένα διομότιμο σύστημα (Peer-to-

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

Περιεχόμενα. Λίγα λόγια για αυτή την έκδοση... 23

Περιεχόμενα. Λίγα λόγια για αυτή την έκδοση... 23 Περιεχόμενα Λίγα λόγια για αυτή την έκδοση...... 23 Κεφάλαιο 1 Εισαγωγή... 25 O στόχος του βιβλίου και σε ποιους απευθύνεται... 27 Πώς να διαβάσετε αυτό το βιβλίο... 27 Εκπαίδευση από απόσταση... 29 Ιστορική

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

ΑΕΠΠ Ερωτήσεις θεωρίας

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

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

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΔΟΜΗ ΕΠΙΛΟΓΗΣ 1) Ποιοι είναι οι τελεστές σύγκρισης και

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

Κεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος

Κεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος Κεφάλαιο 10 Υποπρογράμματα 1 10.1 Τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων.

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εργαστήριο 9η εβδομάδα. Κοζάνη, 2 Δεκεμβρίου 2008. Δίνονται παραδείγματα που αποσαφηνίζουν και συμπληρώνουν όσα αναφέρθηκαν στο μάθημα σχετικά με τις δομές

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

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

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

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

Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών H/Y Department of Electrical and Computer Engineering. Εργαστήριο 1. Χειμερινό Εξάμηνο

Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών H/Y Department of Electrical and Computer Engineering. Εργαστήριο 1. Χειμερινό Εξάμηνο Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών H/Y Department of Electrical and Computer Engineering Οργάνωση και Σχεδίαση Η/Y (HY232) Εργαστήριο 1 Χειμερινό Εξάμηνο 2016-2017 Στόχοι του εργαστηρίου Εντολές

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

Ενότητα 3: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

Ενότητα 3: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ Ενότητα 3: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΔΕΔΟΜΕΝΑ ΑΛΓΟΡΙΘΜΟΙ -ΠΛΗΡΟΦΟΡΙΑ: Δεδομένα: Αναπαράσταση της Πραγματικότητας Μπορούν να γίνουν αντιληπτά με μια από τις αισθήσεις μας Πληροφορία: Προκύπτει από

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

Εισαγωγή στην επιστήμη των υπολογιστών

Εισαγωγή στην επιστήμη των υπολογιστών Εισαγωγή στην επιστήμη των υπολογιστών Λογισμικό Υπολογιστών Γλώσσες Προγραμματισμού 1 Εξέλιξη Οι γλώσσες προγραμματισμού είναι σύνολα από προκαθορισμένες λέξεις οι οποίες συνδυάζονται σε προγράμματα σύμφωνα

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

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι 21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB Αλγόριθμος Διαδικασία Παράμετροι Τι είναι Αλγόριθμος; Οι οδηγίες που δίνουμε με λογική σειρά, ώστε να εκτελέσουμε μια διαδικασία ή να επιλύσουμε ένα

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

Unix: Εντολές, οργάνωση και χειρισµός αρχείων, διεργασίες

Unix: Εντολές, οργάνωση και χειρισµός αρχείων, διεργασίες Unix: Εντολές, οργάνωση και χειρισµός αρχείων, διεργασίες Σύνταξη εντολών Περιεχόµενα Οργάνωση και χειρισµός αρχείων Μπαλαντέρ ικαιώµατα χρήσης αρχείων και οµάδες χρηστών Έλεγχος διεργασιών Σύνταξη εντολών

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

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Χαρακτήρες Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Προγραμματισμός Δ. Τσελίκας Ι Χαρακτήρες - Εισαγωγή Έως τώρα έχουμε κατά κύριο λόγο χρησιμοποιήσει τους αριθμητικούς τύπους

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

Ενδεικτική περιγραφή μαθήματος

Ενδεικτική περιγραφή μαθήματος ΜΑΘΗΜΑ: ΔΙΔΑΣΚΩΝ: ΤΜΗΜΑ: Προγραμματισμός Η/Υ Συνδουκάς Δημήτριος Διοίκησης Επιχειρήσεων (Γρεβενά) Ενδεικτική περιγραφή μαθήματος 1. Εισαγωγή: Εισαγωγή στον προγραμματισμό, γλώσσες προγραμματισμού, μεταγλωτιστές.

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

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ 1. Τι εννοούμε με τον όρο υπολογιστικό σύστημα και τι με τον όρο μικροϋπολογιστικό σύστημα; Υπολογιστικό

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

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

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

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

ΑΣΚΗΣΗ 1. Structural Programming

ΑΣΚΗΣΗ 1. Structural Programming ΑΣΚΗΣΗ 1 Structural Programming Στην άσκηση αυτή θα υλοποιήσετε σε C ένα απλό πρόγραµµα Βάσης εδοµένων το οποίο θα µπορούσε να χρησιµοποιηθεί από την γραµµατεία ενός πανεπιστηµίου για την αποθήκευση και

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

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα 1. Ποια είναι η σχέση της έννοιας του μικροεπεξεργαστή με αυτή του μικροελεγκτή; Α. Ο μικροεπεξεργαστής εμπεριέχει τουλάχιστο έναν μικροελεγκτή. Β. Ο

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

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

Λειτουργικά Συστήματα (ΗΥ222) Λειτουργικά Συστήματα (ΗΥ222) Διάλεξη 7: Εισαγωγή στην Ιδεατή Μνήμη - Τμηματοποίηση Η Ευτυχισμένη Κοινωνία των Διεργασιών 2 Πολλαπλές χαρούμενες διεργασίες στο σύστημα Και αν το Visual Studio χρειαστεί

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

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Εικονική Μνήμη. (και ο ρόλος της στην ιεραρχία μνήμης)

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Εικονική Μνήμη. (και ο ρόλος της στην ιεραρχία μνήμης) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2011-12 Εικονική (και ο ρόλος της στην ιεραρχία μνήμης) http://di.ionio.gr/~mistral/tp/comparch/ Μ.Στεφανιδάκης Ιεραρχία η νέα τάση: [2011]

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

Δομές Δεδομένων. Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα

Δομές Δεδομένων. Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό

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

S, (5, -3, 34, -23, 7) ( /, @, *, _

S, (5, -3, 34, -23, 7) ( /, @, *, _ 1 Τι είναι αρχείο Οι πληροφορίες που καλείται να διαχειριστεί ο Η/Υ είναι τόσες πολλές που η μνήμη του δεν φτάνει να τις επεξεργαστεί όλες μαζί. Γι αυτό τον λόγο αποθηκεύονται σε μονάδες αποθήκευσης (π.χ

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

Γεώργιος Δημητρίου Προσαρμογή Εισαγωγικού Μαθήματος από Prof. Stephen A. Edwards (Columbia University)

Γεώργιος Δημητρίου Προσαρμογή Εισαγωγικού Μαθήματος από Prof. Stephen A. Edwards (Columbia University) Η γλώσσα C Γεώργιος Δημητρίου Προσαρμογή Εισαγωγικού Μαθήματος από Prof. Stephen A. Edwards (Columbia University) Η γλώσσα C Σήμερα η πιο διαδεδομένη γλώσσα προγραμματισμού για ενσωματωμένα συστήματα Συμβολική

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

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

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

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

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C Οι συναρτήσεις τι είναι Πρόκειται για ανεξάρτητα τμήματα ενός προγράμματος (υποπρογράμματα) που επιτελούν συγκεκριμένες εργασίες. Καλούνται από το κυρίως

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

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2006 ΑΠΑΝΤΗΣΕΙΣ ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2006 Μάθημα : Μικροϋπολογιστές Τεχνολογία Τ.Σ. Ι, Θεωρητικής κατεύθυνσης Ημερομηνία

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

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω:

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω: Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω: 1ο ΓΕΛ Καστοριάς Βασικές Έννοιες Αλγορίθμων Δομή Ακολουθίας (κεφ. 2 και 7 σχολικού βιβλίου) 1. Οι μεταβλητές αντιστοιχίζονται από τον μεταγλωττιστή κάθε

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

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

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

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

Να γράψετε στο τετράδιό σας τον αριθμό κάθε πρότασης και τον αντίστοιχο χαρακτηρισμό ( Σ - σωστό, Λ - λάθος)

Να γράψετε στο τετράδιό σας τον αριθμό κάθε πρότασης και τον αντίστοιχο χαρακτηρισμό ( Σ - σωστό, Λ - λάθος) ΤΡΙΩΡΟ ΔΙΑΓΩΝΙΣΜΑ Α.Ε.Π.Π ΘΕΜΑ Α Α1 Να γράψετε στο τετράδιό σας τον αριθμό κάθε πρότασης και τον αντίστοιχο χαρακτηρισμό ( Σ - σωστό, Λ - λάθος) 1. Αν οι δείκτης rear μιας ουράς υλοποιημένης με πίνακα

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

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης Εργαστήριο 6 Εντολές Επανάληψης Η δομή Επιλογής στη PASCAL H δομή Επανάληψης στη PASCAL. Ρεύμα Εισόδου / Εξόδου.. Ρεύμα Εισόδου / Εξόδου. To πρόγραμμα γραφικών gnuplot. Γραφικά στη PASCAL. Σκοπός 6.1 ΕΠΙΔΙΩΞΗ

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

CloudBox!: Ένα εργαλείο cloud αποθήκευσης αρχείων με κατανεμημένο τρόπο

CloudBox!: Ένα εργαλείο cloud αποθήκευσης αρχείων με κατανεμημένο τρόπο CloudBox!: Ένα εργαλείο cloud αποθήκευσης αρχείων με κατανεμημένο τρόπο Project Phase 1 ΗΥ - 335α Χειμερινό εξάμηνο 2012-2013 Διδάσκουσα: Παπαδοπούλη Μαρία Υπεύθυνος βοηθός: Σουρλίγκας Μανώλης, surligas@csd.uoc.gr

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

Ενότητα 2 (Κεφάλαιο 3) Περιγραφή και Έλεγχος Διεργασιών. Περιεχόμενα. Ανάγκη ύπαρξης διεργασιών 1

Ενότητα 2 (Κεφάλαιο 3) Περιγραφή και Έλεγχος Διεργασιών. Περιεχόμενα. Ανάγκη ύπαρξης διεργασιών 1 ΕΠΛ222: Λειτουργικά Συστήματα (μετάφραση στα ελληνικά των διαφανειών του βιβλίου Operating Systems: Internals and Design Principles, 8/E, William Stallings) Ενότητα 2 (Κεφάλαιο 3) Περιγραφή και Έλεγχος

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

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

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

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

Φροντιστήριο. Παραγωγή τελικού κώδικα. Παραγωγή τελικού κώδικα

Φροντιστήριο. Παραγωγή τελικού κώδικα. Παραγωγή τελικού κώδικα ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Παραγωγή τελικού κώδικα Από τον ενδιάμεσο κώδικα στον τελικό (1/2) Τα ορίσματα των εντολών ενδιάμεσου κώδικα είναι του τύπου expr*. Αυτές οι εκφράσεις θα πρέπει

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