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

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

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

Transcript

1 ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Εργαστήριο Λειτουργικών Συστημάτων 8ο εξάμηνο, Ακαδημαϊκή περίοδος Κανονική Εξέταση Λύσεις Το παρόν περιγράφει πλήρη λύση των θεμάτων, με σύντομες απαντήσεις. Για να βοηθήσει στην καλύτερη κατανόηση των απαντήσεων, προσφέρει αναλυτική επεξήγησή τους, η οποία δεν ήταν απαραίτητη για να θεωρείται τέλεια η λύση. Θέμα 1 (40%) Το πείραμα ATLAS είναι ένα από τα πειράματα που εκτελούνται στον Μεγάλο Επιταχυντή Αδρονίων, LHC. Καθώς δέσμες σωματιδίων συγκρούονται, ανιχνευτές παράγουν τεράστιο όγκο δεδομένων. Θεωρήστε πειραματική διάταξη υλικού και αντίστοιχου οδηγού συσκευής στο Linux. Το υλικό αποτελείται από τους ανιχνευτές (0 έως detector_cnt - 1) και μια διάταξη περιοδικής παραγωγής διακοπών υλικού (διακοπές SAMPLER). Με κάθε διακοπή SAMPLER, ο οδηγός συλλέγει τις μετρήσεις όλων των ανιχνευτών και τις καταγράφει σε δικό του κυκλικό απομονωτή στη μνήμη. Διεργασίες χώρου χρήστη απορροφούν τα δεδομένα αυτά μέσω συσκευής χαρακτήρων /dev/atlas-device για περαιτέρω ανάλυση και αρχειοθέτηση. Μας ενδιαφέρουν μετρήσεις μόνο κατά τη διάρκεια επιλεγμένων γεγονότων (events), π.χ. συγκρούσεων με συγκεκριμένα χαρακτηριστικά, οπότε είναι πιθανό να έχει δημιουργηθεί ένα ως τώρα άγνωστο σωματίδιο. Επομένως, ξεκινάμε και σταματάμε την καταγραφή και απορρόφηση των δεδομένων ώστε να συμπίπτουν με τα γεγονότα. Ένας από τους ανιχνευτές (trigger_detector_id) έχει ειδικό ρόλο: κάθε φορά που ανανεώνεται η τιμή του, το υλικό προκαλεί διακοπή TRIGGER. Όταν η τιμή αυτή ξεπεράσει κάποιο όριο, o οδηγός θεωρεί ότι γεγονός είναι σε εξέλιξη, και ξεκινά την καταγραφή κι απορρόφηση. Η καταγραφή συνεχίζεται μέχρι το τέλος του γεγονότος ή την πλήρωση του κυκλικού απομονωτή γιατί οι διεργασίες δεν τον πρόλαβαν.

2 Από την πλευρά των διεργασιών, κάθε read() επιστρέφει bytes για ακέραιo αριθμό (όχι κατ ανάγκη διαδοχικών) μετρήσεων τύπου struct measurement από το ρεύμα των εισερχόμενων δεδομένων. Αν δεν υπάρχουν δεδομένα, η read() μπλοκάρει. Το ρεύμα τερματίζεται όταν ο οδηγός σταματήσει την καταγραφή κι ο απομονωτής αδειάσει. Στην περίπτωση αυτή, το αμέσως επόμενο read() από οποιονδήποτε επιστρέφει EOF και τα υπόλοιπα μπλοκάρουν έως την έναρξη του επόμενου γεγονότος. Δίνονται τα εξής: get_hw_measurement(dev, detectorid, msr): Διαβάζει τη μέτρηση του ανιχνευτή detectorid της συσκευής dev στη δομή msr. event_in_progress(triggermsr): Επιστρέφει αληθές αν η μέτρηση triggermsr του ανιχνευτή trigger_detector_id δείχνει ότι γεγονός είναι σε εξέλιξη. start_recording(dev): Ενεργοποιεί διακοπές SAMPLER και περιοδική καταγραφή εισερχομένων μετρήσεων στον κυκλικό απομονωτή για τη συσκευή. stop_recording(dev): Απενεργοποιεί διακοπές SAMPLER και σταματά την καταγραφή μετρήσεων. is_recording(dev): Επιστρέφει αληθές αν γίνεται καταγραφή δεδομένων. store_measurement(dev, msr): Αποθηκεύει τη μέτρηση msr στον κυκλικό απομονωτή για τη συσκευή dev. Επιστρέφει αληθές αν ο απομονωτής έχει γεμίσει (overflow). retrieve_measurement(dev, msr): Διαβάζει από τον κυκλικό απομονωτή της συσκευής dev μια νέα μέτρηση msr, επιστρέφει ψευδές αν δεν υπάρχουν έγκυρα δεδομένα. intr(interrupt_mask): Εξυπηρετεί τις διακοπές υλικού της συσκευής. Στο όρισμα interrupt_mask δίνονται οι διακοπές οι οποίες συνέβησαν με τη μορφή αληθών bit. Όλες οι συναρτήσεις που δέχονται όρισμα τον περιγραφητή της συσκευής dev, την κλειδώνουν για να εκτελέσουν τη λειτουργία τους και την απελευθερώνουν. 1 struct measurement {... }; /* 128 bytes */ 2 3 struct atlas_device { 4..locktype.. lock; 5 int detector_cnt, detector_trigger_id; 6 int recording; 7 wait_queue_head_t wq; 8 uint128_t wcnt, rcnt; /* These are initialized to zero, and 9 * will never wrap. */ } atlas; int store_measurement(struct atlas_device *dev, struct measurement *msr); 14 int retrieve_measurement(struct atlas_device *dev, struct measurement *msr) 15 void get_hw_measurement(struct atlas_device *dev, uint32_t detectorid, 16 struct measurement *msr); 17 unsigned int get_hw_interrupt_mask(struct atlas_device *dev);

3 18 void set_hw_interrupt_mask(struct atlas_device *dev, unsigned int mask); 19 int event_in_progress(struct measurement *triggermsr); 20 int is_recording(struct atlas_device *dev); 21 void start_recording(struct atlas_device *dev); void stop_recording(struct atlas_device *dev) 24 { 25 unsigned long flags; 26 unsigned int mask; lock dev dev->recording = 0; /* Disable periodic sampling interrupts */ 33 mask = get_hw_interrupt_mask(dev); 34 set_hw_interrupt_mask(dev, mask & ~(1 << INTR_SAMPLER_SHIFT)); 35 wake_up_interruptible(&dev->wq); unlock dev } void intr(unsigned int mask) 40 { 41 int i, overflow; 42 struct measurement msr; 43 struct atlas_device *dev = &atlas; if (mask & (1 << INTR_TRIGGER_SHIFT)) { 46 get_hw_measurement(dev, dev->detector_trigger_id, &msr); 47 if (event_in_progress(&msr) &&!is_recording(dev)) 48 start_recording(dev); 49 if (!event_in_progress(&msr) && recording(dev)) 50 stop_recording(dev); 51 } if (mask & (1 << INTR_SAMPLER_SHIFT)) { 54 for (i = 0; i < dev->detector_cnt; i++) { 55 get_hw_measurement(dev, i, &msr); 56 overflow = store_measurement(dev, &msr); 57 if (overflow) { 58 stop_recording(dev); 59 return; 60 } 61 } 62 wake_up_interruptible(&dev->wq); 63 } 64 } ssize_t atlas_chrdev_read(struct file *filp, char user *usrbuf, 67 size_t cnt, loff_t *f_pos) 68 { 69 struct atlas_device *dev = filp->private_data; /* Only return whole measurements */ /* Retrieve measurements, block if no data available, 75 * return EOF on event termination or buffer overflow. */ /* Eventually, i measurements are being returned */ 78 return i * sizeof(msr); 79 }

4 Ζητούνται τα εξής: i. (3%) Ποιος ο τύπος κι ο ρόλος του πεδίου lock; ii. (2%) Ποιος ο ρόλος του πεδίου wq; iii. (25%) Υλοποιήστε την atlas_chrdev_read(), συμπληρώνοντας τον σκελετό. iv. (10%) Υλοποιήστε την start_recording(), συμπληρώνοντας τον σκελετό. Αν το χρειαστείτε, μπορείτε να προσθέσετε νέα πεδία σε δομές, ή νέες συναρτήσεις στον κώδικα, αρκεί να περιγράψετε με ακρίβεια τη λειτουργία τους. i. Το πεδίο lock είναι κλείδωμα που προστατεύει τη δομή atlas_device από ταυτόχρονη πρόσβαση. Ο τύπος του πρέπει να είναι spinlock_t, γιατί το κλειδώνει τόσο κώδικας που τρέχει σε process context, π.χ. retrieve_measurement() όσο και σε interrupt context, π.χ. intr() stop_recording()). ii. Το πεδίο wq είναι μια ουρά αναμονής. Τοποθετούνται εκεί διεργασίες οι οποίες εκτελούν μετάβαση RUNNING WAITING και περιμένουν δεδομένα από το /dev/atlas, π.χ. μπλοκάρουν σε read() περιμένοντας να ξεκινήσει η καταγραφή δεδομένων. iii. Ο απλούστερος τρόπος υλοποίησης της atlas_chrdev_read() είναι χρησιμοποιώντας την retrieve_measurement() που μας δίνεται, χωρίς ανάγκη για κλείδωμα της συσκευής, αφού η retrieve_measurement() φροντίζει να την κλειδώνει κατά την προσπέλαση: 1 ssize_t atlas_chrdev_read(struct file *filp, char user *usrbuf, 2 size_t cnt, loff_t *f_pos) 3 { 4 struct atlas_device *dev = filp->private_data; 5 int i, msrcnt, valid, will_eof; 6 struct measurement msr; 7 unsigned long flags; 8 9 /* Only return whole measurements, return at least ONE measurement */ 10 msrcnt = cnt / sizeof(struct measurement); 11 if (msrcnt == 0) 12 return -EINVAL; for (i = 0; i < msrcnt; i++) { 15 valid = retrieve_measurement(dev, &msr); 16 if (i == 0 &&!valid) { 17 if (!is_recording(dev)) { 18 spin_lock_irqsave(&dev->lock, flags); 19 if ((will_eof = dev->at_eof)) 20 dev->at_eof = 0; 21 spin_unlock_irqrestore(&dev->lock, flags); 22 if (will_eof) 23 return 0; 24 } 25 if (wait_event_interruptible(dev->wq, 26!is_recording(dev) (valid = retrieve_measurement(dev, &msr))))

5 27 return -ERESTARTSYS; 28 } 29 if (!valid) 30 break; 31 if (copy_to_user(usrbuf + i * sizeof(msr), &msr, sizeof(msr))) 32 return -EFAULT; 33 } 34 /* Eventually, i measurements are being returned */ 35 return i * sizeof(msr); 36 } Εμπλουτίζουμε τη δομή struct atlas_device με το flag at_eof, το οποίο τίθεται από την stop_recording() όταν σταματήσει η καταγραφή. Με τον τρόπο αυτό εξασφαλίζουμε ότι το EOF είναι άλλο ένα δεδομένο που καταναλώνεται από την atlas_ chrdev_read(). iv. Η start_recording() κλειδώνει τη συσκευή, θέτει τη σημαία recording, ενεργοποιεί τις διακοπές SAMPLER από το υλικό και ξυπνά όσες διεργασίες περιμένουν στην ουρά αναμονής wq για να λάβουν δεδομένα: 1 void start_recording(struct atlas_device *dev) 2 { 3 unsigned long flags; 4 unsigned int mask; 5 6 spin_lock_irqsave(&dev->lock, flags); 7 dev->recording = 1; 8 9 /* Enable periodic sampling interrupts */ 10 mask = get_hw_interrupt_mask(dev); 11 set_hw_interrupt_mask(dev, mask (1 << INTR_SAMPLER_SHIFT)); wake_up_interruptible(&dev->wq); 14 spin_unlock_irqrestore(&dev->lock, flags); 15 } 16 Θέμα 2 (30%) Θέλουμε να υλοποιήσουμε μια κατάρα Αναγνωριστή [Α], η οποία παρακολουθεί την αλληλουχία των κλήσεων συστήματος μιας διεργασίας. Εάν η αλληλουχία αυτή ανταποκρίνεται σε μία προκαθορισμένη πρότυπη ακολουθία [Π], ενεργοποιεί ( οπλίζει ) μια άλλη κατάρα [Κ] για τη διεργασία. Σε κάθε κλήση συστήματος αντιστοιχίζεται ένα αναγνωριστικό (πχ read), και η πρότυπη ακολουθία [Π] σχηματίζεται από τέτοια αναγνωριστικά. Η κατάρα [Κ] και το πρότυπο [Π] επιλέγονται από το διαχειριστή την ώρα που ενεργοποιεί την κατάρα Αναγνωριστή.

6 α. (10%) Προτείνετε ένα σχεδιασμό για την κατάρα Α και απαντήστε: i. Ποιές δομές στην υποδομή κατάρων και στον πυρήνα χρησιμοποιείτε για την κατάρα [Κ] και το πρότυπο [Π]; ii. Πώς επεμβαίνετε στις κλήσεις συστήματος, πώς είναι και πώς καλείται το checkpoint σας; β. (10%) Θέλουμε να αποκτήσουμε με τη βοήθεια της κατάρας Αναγνωριστή, ένα φλοιό από τον οποίο όλα τα προγράμματα που εκτελούμε δεν θα μπορούν να εκτελούν άλλα προγράμματα. Περιγράψτε πώς θα χρησιμοποιήσετε την κατάρα Αναγνωριστή [Α], την ακολουθία [Π], και τη λειτουργικότητα της κατάρας [Κ]. γ. (10%) Έστω ένα δικτυακό πρόγραμμα εξυπηρετητή ο οποίος συγχρονίζει την ώρα των πελατών οι οποίοι συνδέονται σε αυτόν με πρωτόκολλο TCP. Το πρόγραμμα αυτό, στην αρχή της εκτέλεσής του ανοίγει μόνο ένα αρχείο με open(), αυτό με τη ρύθμιση του σε ποια πόρτα TCP να ακούει. Για λόγους ασφαλείας, θέλουμε να απαγορέψουμε στο πρόγραμμα να ανοίξει οποιοδήποτε άλλο αρχείο μέσω της open(). Περιγράψτε πώς θα χρησιμοποιήσετε την κατάρα Αναγνωριστή [Α], την ακολουθία [Π], και τη λειτουργικότητα της κατάρας [Κ].

7 α. Προσθέτουμε στο PCB την Κ, την Π, και έναν ακέραιο δείκτη στη θέση της Π η οποία έχει αναγνωρισθεί. Σε κάθε διαθέσιμη κλήση συστήματος ελέγχουμε αν το επόμενο στοιχείο του δείκτη στην Π ανταποκρίνεται στην κλήση. Αν ανταποκρίνεται, προχωράμε το δείκτη. Αν όχι, τότε ο δείκτης μένει στάσιμος. Αν ο δείκτης φτάσει στο τέλος της Π, τότε απενεργοποιούμε την Α και ενεργοποιούμε την Κ. Ο στάσιμος δείκτης εξασφαλίζει την αναγνώριση προτύπων ανεξάρτητα από τις ενδιάμεσες κλήσεις. Επεξήγηση της απάντησης: 1 struct target_curse { 2 curse_id_t curse_id; 3 curse_data_t curse_data; 4 }; 5 6 struct matcher_data { 7 cusrse_data_t target_curse, 8 unsigned int pattern_index, 9 unsigned int pattern_length, 10 syscall_id_t *syscall_pattern; 11 }; typedef unsigned int syscall_id_t; 14 ή 15 typedef char syscall_id_t[8]; Προσθέτουμε σε κάθε system call που μας ενδιαφέρει (ή στον αποκωδικοποιητή που τα καλεί) ένα checkpoint: 1 void matcher_checkpoint(syscall_id_t id) { 2 struct matcher_data *matcher_data = &current->matcher_data; 3 unsigned int index = matcher_data->pattern_index; 4 syscall_id_t *pattern = matcher_data->pattern; 5 6 if (pattern[index]!= id) 7 return; 8 9 index += 1; 10 if (index >= matcher_data->patter_length) { 11 curse_task(current, matcher_data->target_curse); 12 lift_task(current, matcher_id); 13 } 14 matcher_data->pattern_index = index; 15 }

8 Σημαντικές σχεδιαστικές επιλογές: Οικομενικά ή ανά διεργασία δεδομένα της Α. Η καλύτερη απόφαση είναι τα δεδομένα της Α να είναι ανά διεργασία. Αν είναι οικουμενικά, τότε αναγκαστικά η Α από δυναμική κατάρα με 2 ορίσματα γίνεται μια στατική κατάρα με δεδομένα τα Π και Κ. Επίσης δεν κερδίζουμε σε χώρο με το να κάνουμε τα δεδομένα της Α οικουμενικά, εφόσον αυτά θα μπορούσαν να είναι αφενός δυναμικά δεσμευόμενα, και αφετέρου μοιραζόμενα ανά πολλές διεργασίες. Απόρριψη, οπισθοκύληση, ή στάση της αναγνωρισμένης ακολουθίας Όσο κλήσεις συστήματος ανταποκρίνονται στο Πρότυπο, τότε η αναγνωρισμένη ακολουθία μεγαλώνει ως υπο-ακολουθία του. Όταν προκύψει μια κλήση που δεν ανταποκρίνεται στο επόμενο στοιχείο του Προτύπου υπάρχουν 3 ενδεχόμενα: (α) Να απορριφθεί ολόκληρη η αναγνωρισμένη ακολουθία Τελευταία Κλήση: close Πρότυπο: Αναγνώριση-Πριν: Αναγνώριση-Μετά: open, read, close, open, read, write, close open, read, close, open, read [close] (β) Να κυλήσει προς την αρχή της η αναγνωρισμένη ακολουθία, απορρίπτοντας τα αρχικά της στοιχεία, εως ότου είτε αδειάσει, είτε αντιστοιχηθεί εκ νέου στο πρότυπο Πρότυπο: open, read, close, open, read, write, close Αναγνώριση-Πριν: open, read, close, open, read [close] Αναγνώριση-Μετά: open, read, close (γ) Να παραμείνει στάσιμη η αναγνωρισμένη ακολουθία Πρότυπο: Αναγνώριση-Πριν: Αναγνώριση-Μετά: open, read, close, open, read open, read, close, open, read, write, close open, read, close, open, read [close] Η επιλογή (α) είναι ακατάλληλη για την επιβολή περιορισμών σε διεργασίες γιατί είναι εύκολο να αποφύγουμε την αναγνώριση παρεμβάλλοντας κλήσεις συστήματος. Ακόμη και αν θεωρούμε ότι η διεργασίες συνεργάζονται, υπάρχει ο κίνδυνος να χαθούν ακολουθίες. Η επιλογή (β) λύνει το 2ο αυτό πρόβλημα της (α) αλλά όχι το πρώτο. Η επιλογή (γ) είναι η καταλληλότερη για την επιβολή περιορισμών, καθώς μια διεργασία δεν μπορεί να αποφύγει την αναγνώριση ενός προτύπου με κανένα τρόπο παρά μόνο με τη μή εκτέλεσή του. Ακύρωση η μη της Α μετά τον οπλισμό της Κ Όταν το πρότυπο της Α αναγνωρισθεί εξ ολοκλήρου και ενεργοποιηθεί η Κ για τη διεργασία, προτιμότερο είναι να απενεργοποιηθεί η Α, δεδομένου ότι η μόνη επίδραση που μπορεί να έχει στη διεργασία είναι να ενεργοποιήσει την Κ, η οποία είναι ήδη ενεργοποιημένη.

9 Υποστήριξη αναδρομικής κλήσης της Α Ανάλογα αν μαζί με την ταυτότητα της κατάρα K αποθηκεύουμε και ένα δείκτη στα τυχόντα δεδομένα αρχικοποίησής της, τότε η αναδρομική κλήση της Α υποστηρίζεται. Δεν απαιτείται όμως από τα παρόντα σενάρια, και θα ήταν καλύτερο η όποια αναδρομική λειτουργικότητα να υλοποιηθεί στη γλώσσα αναγνώρισης προτύπων της Α. β. Ρίχνουμε την Α στο φλοιό με πρότυπο Π = [fork, execve, fork, execve] και κατάρα Κ που στέλνει ακαριαία SIGKILL στη διεργασία. Επεξήγηση της απάντησης: Το ιστορικό των κλήσεων συστήματος ενός φλοιού που εκτελεί προγράμματα είναι, και των προγραμμάτων που εκτελεί είναι: Φλοιός: Πρόγραμμα επιτρεπόμενο: Πρόγραμμα επιτρεπόμενο: Πρόγραμμα μη επιτρεπόμενο: [...fork...[not execve]...fork...] [fork...execve...fork...fork...] [fork...execve...[not fork]...execve] [fork...execve...fork...execve] Ο φλοιός κάνει fork(), execve() για κάθε πρόγραμμα που τρέχει. Επίσης μπορεί να κάνει fork() για δική του χρήση. Ο φλοιός ποτέ δεν έχει execve() στην ιστορία του, εκτός από το αρχικό δικό του, γιατί αλλιώς θα σταματούσε (εξ ορισμού!) να είναι φλοιός και θα ήταν εκτελούμενο πρόγραμμα. Κάθε εκτελούμενο πρόγραμμα έχει στην ιστορία του ένα fork(), execve(), από την εκτέλεσή του από το φλοιό. Από εκεί και πέρα μπορεί να κάνει όσα fork θέλει (π.χ. multiprocess ή multithreaded πρόγραμμα), όσα execve() θέλει (π.χ. wrapper.sh app-launcher app. bin) αλλά δε θα πρέπει να μπορεί να κάνει execve() μετά από fork(). Επομένως η ακολουθία [fork, execve, fork, execve], δεν πρόκειται ποτέ να αναγνωρισθεί στον φλοιό, λόγω του execve, ενώ θα αναγνωρίζει πάντοτε τα προγράμματα που κάνουν fork() execve(). γ. Ρίχνουμε στον φλοιό που εκτελεί τον εξυπηρετητή, την Α με πρότυπο Π = [listen] και κατάρα Κ που αποτρέπει κάθε κλήση open(). Επεξήγηση της απάντησης: Η συνθήκη ασφαλείας είναι να μην μπορεί να ανοιχθεί κανένα αρχείο αφού έχει ανοιχθεί το αρχείο των ρυθμίσεων. Άν το αρχείο αυτό είναι το μοναδικό που ανοίγει ο εξυπηρετητής τότε μπορούμε να ρυθμίσουμε το πρότυπο Π = [open]. Εδώ όμως σιωπηρά απαιτούμε το πρόγραμμα του εξυπηρετητή να μην χρησιμοποιεί καμία δυναμική βιλιοθήκη, γιατί αυτές θα πρέπει να ανοιχθούν για να συνδεθούν με το πρόγραμμα, αφαιρώντας τη δυνατότητά μας να καταλάβουμε ποια open είναι εκείνη του αρχείου ρυθμίσεων.

10 Το πρόγραμμα όμως ενδέχεται να μην μπορεί ή να μη βολεύει να γίνει στατικό (πχ. βλ. gethostbyname()). Αντί να μετράμε τις open() χρησιμοποιούμε ένα καλύτερο κριτήριο. γνωρίζουμε ότι η open() του αρχείου ρυθμίσεων θα γίνει πριν την listen(), γιατί το listen() απαιτεί πρότερο bind(), το οποίο με τη σειρά του απαιτεί τον αριθμό της πόρτας από το αρχείο ρυθμίσεων. Άρα αν αποτρέψουμε κάθε open() μετά το listen(), το open του αρχείου ρυθμίσεων είναι ασφαλές. Ταυτοχρόνως, κάθε open() πριν το listen() είναι ασφαλές, καθώς πριν το listen() είναι αδύνατο να υπάρξει δικτυακή επικοινωνία. Θέμα 3 (30%) α. (20%) Απαντήστε συνοπτικά στα εξής: i. Ποιος περιγραφητής αρχείου είναι η καθιερωμένη είσοδος για μια διεργασία; ii. Υπάρχει περίπτωση μια διεργασία να κάνει read(), write() σε περιγραφητή αρχείου από το δίσκο, χωρίς να έχει κάνει η ίδια το αντίστοιχο open(); iii. Αληθές ή ψευδές; Όταν γίνεται fork(), οι file descriptors του παιδιού αντιστοιχίζονται στις ίδιες δομές struct file με τους file descriptors του πατέρα. iv. Τι συμβαίνει σε μια διεργασία όταν εκτελέσει επιτυχώς execve(); v. Τι συμβαίνει στα ανοιχτά αρχεία μιας διεργασίας όταν εκτελέσει επιτυχώς execve(); vi. Λύστε την εξής πρόκληση (εκτελέσιμο challenge): 1 int main(void) 2 { 3 off_t a, b; 4 5 a = lseek(42, 0, SEEK_CUR); /* Find out current file position */ 6 sleep(10); 7 b = lseek(42, 0, SEEK_CUR); 8 if (a == b) FAIL(); else SUCCESS(); 9 return 0; 10 } 11 Γράψτε πρόγραμμα που να εκτελεί το challenge, όπου κι όπως θέλετε, ώστε να επιτυγχάνει. Κάθε κλήση συστήματος του εκτελέσιμου πρέπει να είναι επιτυχής. i. Ο περιγραφητής 0. ii. Ναι, μπορεί να έχει κληρονομήσει το ανοιχτό αρχείο από το fork() που τη δημιούργησε. Παράδειγμα: Μια main() που το μόνο που κάνει είναι printf("hello, World\n") κάνει write() στον περιγραφητή 1, χωρίς ποτέ να έκανε το αντίστοιχο open(). iii. Αληθές. Οι περιγραφητές αρχείου του παιδιού αντιστοιχίζονται στις ίδιες δομές struct file με τους file descriptors του πατέρα. Παράδειγμα: Αν ο πατέρας κάνει pipe() και fork(), το παιδί έχει file descriptors που δείχνουν στα ίδια άκρα του pipe, δηλαδή στα ίδια struct files.

11 iv. Το πρόγραμμά της αντικαθίσταται από το εκτελέσιμο που ορίζεται στην execve(). Όλες οι απεικονίσεις μνήμης καταστρέφονται. v. Τίποτε, μένουν ως έχουν, γι αυτό η printf() της main() συνεχίζει να λειτουργεί. Λεπτομέρεια: Όσα αρχεία είναι σημειωμένα με τη σημαία close-on-exec (FD_CLOEXEC) κλείνουν. vi. Εκμεταλλευόμαστε ότι ο πατέρας και το παιδί μοιράζονται το ίδιο struct file όταν το παιδί κληρονομεί file descriptors με fork(). 1 int main(int argc, char *argv[]) 2 { 3 int a; 4 pid_t p; 5 6 a = open("kalhmera", O_RDONLY); 7 dup2(a, 42) 8 p = fork(); 9 10 if (p > 0) { 11 sleep(3); 12 lseek(a, 10, SEEK_SET) < 0); /* 10!= 0 */ 13 wait(null); 14 } if (p == 0) 17 execve("challenge", argv, NULL); return 0; 20 } Επεξήγηση: Η πρόκληση έχει δύο μέρη: (i) το challenge χρησιμοποιεί τον περιγραφητή 42 χωρίς ποτέ να έκανε open(), (ii) για να πετύχει πρέπει στο διάστημα των 10s από τη γραμμή 5 στη γραμμή 7 να έχει αλλάξει η θέση του δείκτη ανάγνωσηςεγγραφής στο αρχείο, χωρίς η ίδια να κάνει τίποτε (π.χ. read(), lseek()) για να τον επηρεάσει. Για το πρώτο μέρος, ο πατέρας φροντίζει με dup2() το ίδιο struct file να είναι προσβάσιμο και μέσω του fd που επέστρεψε η open() και μέσω του fd 42. Για το δεύτερο μέρος, εκμεταλλευόμαστε ότι ο fd που κληρονομείται από το παιδί (challenge) αντιστοιχίζεται στην ίδια δομή struct file, η οποία περιέχει τον δείκτη ανάγνωσης-εγγραφής στο πεδίο f_pos. Ο πατέρας μετακινεί το δείκτη από το 0 στο 10 όσο το παιδί κοιμάται. β. (10%) Απαντήστε συνοπτικά, δικαιολογήστε τις απαντήσεις σας: i. Σε ποιες από τις παρακάτω δομές εφαρμόζεται τεχνική Copy-on-Write και γιατί; Σώμα Ελέγχου Διεργασίας (struct task_struct) Διαπιστευτήρια χρήστη (struct cred)

12 Σελίδες που αποτελούν το σωρό (heap) μιας διεργασίας ii. Θεωρήστε το παρακάτω πρόγραμμα: 1 unsigned long t, t0; c = connect(s, (struct sockaddr *)&c_addr, &c_addr_len); 5 t0 = 0; 6 for (;;) { 7 t = time(null); 8 if (t > t0) { 9 write(c, &t, sizeof(t)); 10 t0 = t; 11 } 12 } 13 Τι λειτουργία κάνει το πρόγραμμα; τι προβλήματα βλέπετε στην παραπάνω υλοποίησή της, και πώς θα τα διορθώνατε; Υπόδειξη: Η time(null) επιστρέφει τον αριθμό των δευτερολέπτων που έχουν περάσει από τη χρονική στιγμή Epoch, :00: (UTC). i. Copy-on-Write εφαρμόζεται στο struct cred και στις σελίδες του σωρού, όχι στο struct task_struct. To struct task_struct γράφεται από κάθε διεργασία, τα διαπιστευτήρια κι οι σελίδες δεν υφίστανται πιθανότατα μεταβολή καθώς συμβαίνουν απανωτά fork(). Επεξήγηση της απάντησης: Τεχνική Copy-on-Write εφαρμόζεται σε δομές που γράφονται σπάνια από διεργασίες, παρόλο που κάθε μία κληρονομεί το δικό της αντίγραφο και σε λογικό επίπεδο έχει τη δική της, ιδιωτική δομή, την οποία μπορεί να γράψει οποτεδήποτε. Με τον τρόπο αυτό γλιτώνουμε χώρο, για την τήρηση των δομών, και χρόνο, για την αντιγραφή τους. Δεν έχει νόημα το Copy-on-write για τη δομή struct task_struct γιατί είναι σίγουρο ότι για κάθε διεργασία πανωγράφεται: αλλάζει το PID σε σχέση με τη γονική. Αντίθετα, το struct cred πιθανότατα μένει ίδιο, η νέα διεργασία δεν θα αλλάξει τα διαπιστευτήριά της. Για τις σελίδες του σωρού, γλιτώνουμε πολύ χρόνο και χώρο αν κατ απαίτηση δημιουργούμε ιδιωτικά αντίγραφα, αφού μια νέα διεργασία πιθανότατα θα αλλάξει ένα μικρό ποσοστό από αυτές, ή απλώς θα κάνει αμέσως execve(). ii. Το πρόγραμμα συνδέεται σε έναν απομακρυσμένο υπολογιστή, στον οποίο στέλνει περιοδικά, κάθε δευτερόλεπτο, την τρέχουσα ώρα ως απόσταση σε δευτερόλεπτα από τη στιγμή Epoch. Είναι μια αδρή υλοποίηση ενός network time server. Έχει δύο κύρια προβλήματα: Δεν ελέγχει την τιμή επιστροφής των κλήσεων συστήματος. Ειδικά κλήσεις οπως η connect(), που εμπλέκουν απομακρυσμένα μηχανήματα και το δίκτυο είναι πολύ πιθανό να αποτύχουν. Κάνει busy wait περιμένοντας να περάσει το ένα δευτερόλεπτο: Αντί να κοιμηθεί με sleep(), οπότε παθαίνει μετάβαση RUNNING WAITING κι αφήνει τον επεξεργαστή, κάνει busy wait εκτελώντας συνεχώς time() μέχρι να αλλάξει η τιμή

13 επιστροφής της. Με κατάλληλη ρύθμιση του χρόνου της sleep() σε λίγο μικρότερο του απαιτούμενου μπορεί να προσεγγιστεί η επιθυμητή ακρίβεια.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Αγωγοί/Σωλήνες (Pipes) Προγραμματισμός II 1

Αγωγοί/Σωλήνες (Pipes) Προγραμματισμός II 1 Αγωγοί/Σωλήνες (Pipes) Προγραμματισμός II 1 lalis@inf.uth.gr Τι είναι ένας αγωγός; Μηχανισμός/συσκευή επικοινωνίας διεργασιών Μετάδοση μιας ροής από bytes (μονής κατεύθυνσης) First-in-first-out (FIFO):

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

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

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

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

Διαδιεργασιακή επικοινωνία (inter-process communication IPC) Προγραμματισμός II 1

Διαδιεργασιακή επικοινωνία (inter-process communication IPC) Προγραμματισμός II 1 Διαδιεργασιακή επικοινωνία (inter-process communication IPC) Προγραμματισμός II 1 lalis@inf.uth.gr Συνεργασία ανάμεσα σε διεργασίες Για ασφάλεια/ανεξαρτησία, το ΛΣ εξασφαλίζει πλήρη απομόνωση ανάμεσα στις

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Κλείδωμα αρχείων (file locking) Προγραμματισμός II 1

Κλείδωμα αρχείων (file locking) Προγραμματισμός II 1 Κλείδωμα αρχείων (file locking) Προγραμματισμός II 1 lalis@inf.uth.gr Κλείδωμα αρχείων Οι διεργασίες που προσπελάζουν ένα αρχείο μέσω ξεχωριστών περιγραφέων, μπορούν να γράψουν / διαβάσουν τα περιεχόμενα

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

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

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

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

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκό Έτος 2011-2012

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

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

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

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

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

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκό Έτος 2011-2012

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

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

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

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

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

Δίκτυα Επικοινωνιών ΙΙ: Network Programming UDP Sockets, Signals

Δίκτυα Επικοινωνιών ΙΙ: Network Programming UDP Sockets, Signals Δίκτυα Επικοινωνιών ΙΙ: Network Programming UDP Sockets, Signals Δρ. Απόστολος Γκάμας Διδάσκων 407/80 gkamas@uop.gr Δίκτυα Επικοινωνιών ΙΙ Διαφάνεια 1 1 UDP vs TCP Το UDP είναι ένα connectionless, μη αξιόπιστο,

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

Κλείδωμα αρχείων (file locking) Προγραμματισμός II 1

Κλείδωμα αρχείων (file locking) Προγραμματισμός II 1 Κλείδωμα αρχείων (file locking) Προγραμματισμός II 1 lalis@inf.uth.gr Κλείδωμα αρχείων Οι διεργασίες που προσπελάζουν ένα αρχείο μέσω ξεχωριστών περιγραφέων, μπορούν να γράψουν / διαβάσουν τα περιεχόμενα

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr

ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr Η έννοια της διεργασίας ιεργασία (process) είναι ο µηχανισµός εκτέλεσης ενός προγράµµατος σε ένα λειτουργικό σύστηµα. Η διεργασία είναι µια ενεργή

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

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

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

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

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

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

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

Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1

Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1 Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1 lalis@inf.uth.gr Μνήμη και επικοινωνία διεργασιών Κάθε διεργασία έχει δική της ιδιωτική μνήμη Μια διεργασία δεν μπορεί να γράψει/διαβάσει από/σε θέσεις

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

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

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

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

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

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

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Δυναμική Κατανομή Μνήμης Δυναμική εκχώρηση μνήμης Σωρός Συναρτήσεις malloc(), calloc(), realloc(), free() Δυναμικές δομές

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

Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1

Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1 Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1 lalis@inf.uth.gr Μνήμη και επικοινωνία διεργασιών Κάθε διεργασία έχει δική της ιδιωτική μνήμη Μια διεργασία δεν μπορεί να γράψει/διαβάσει από/σε θέσεις

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

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

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

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

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

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

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

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

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

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

Εκφωνήσεις ασκήσεων εργαστηρίου 1

Εκφωνήσεις ασκήσεων εργαστηρίου 1 Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Σχολή Τεχνολογικών Εφαρμογών Ακαδημαϊκό έτος 2016-2017 ΤΕΙ Ηπείρου - Άρτα Κατανεμημένα και Παράλληλα Συστήματα (εργαστήριο) Γκόγκος Χρήστος Εκφωνήσεις ασκήσεων εργαστηρίου

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf(%u\n, x); Β. unsigned char ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Β Περιόδου 2015 (8/9/2015) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Συγχρονισμός & σηματοφόροι. Προγραμματισμός II 1

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

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

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

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

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

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

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

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

Α Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");

Α Β Γ static; printf(%c\n, putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf(*); ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2016 (1/2/2016) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

Νήµαταστην Java. Συγχρονισµός νηµάτων Επικοινωνία νηµάτων Εκτελέσιµα αντικείµενα Νήµατα δαίµονες Οµάδες νηµάτων. Κατανεµηµένα Συστήµατα 11-1

Νήµαταστην Java. Συγχρονισµός νηµάτων Επικοινωνία νηµάτων Εκτελέσιµα αντικείµενα Νήµατα δαίµονες Οµάδες νηµάτων. Κατανεµηµένα Συστήµατα 11-1 Νήµαταστην Java Συγχρονισµός νηµάτων Επικοινωνία νηµάτων Εκτελέσιµα αντικείµενα Νήµατα δαίµονες Οµάδες νηµάτων Κατανεµηµένα Συστήµατα 11-1 Νήµαταστην Java γεννηθείσα notify notifyall έτοιµη start εκπνοή

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

Οργάνωση Υπολογιστών (IΙI)

Οργάνωση Υπολογιστών (IΙI) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Οργάνωση Υπολογιστών (IΙI) (συσκευές εισόδου-εξόδου) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Ένα τυπικό

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

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

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο 2011 2012 Καθηγητές Μ. Χατζόπουλος, Δ. Γουνόπουλος Άσκηση 1 Παράδοση 4 Μαϊου Σκοπός της εργασίας αυτής είναι η κατανόηση

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

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

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

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

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

Λειτουργικά Συστήματα (ΗΥ321) Λειτουργικά Συστήματα (ΗΥ321) Διάλεξη 2: Διεργασίες και Νήματα Διαδικαστικά 2 Γραφτήκατε στη λίστα; Σχηματίστε ομάδες (για το project)! Στο προηγούμενο επεισόδιο 3 Τι είναι λειτουργικό; Γενιές ΛΣ Βασικές

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

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

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

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

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκό Έτος Κανονική Εξέταση Λύσεις

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

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

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

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

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

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα "Αλφαριθμητικά"

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα Αλφαριθμητικά Πίνακες: μια σύντομη εισαγωγή Πίνακες χαρακτήρων: τα "Αλφαριθμητικά" Πίνακες(Arrays): έννοιες και ορισμοί Ορισμός: Πίνακας (array) = σύνολο μεταβλητών του ιδίου τύπου (int, float, char,...) με ένα κοινό

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

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

Βιβλιοθήκη stdio. Προγραμματισμός II 1 Βιβλιοθήκη 1 lalis@inf.uth.gr Σύνοψη Ορίστηκε από τον Dennis Ritchie το 1975 Μέρος του προτύπου ANSI C Λειτουργίες εισόδου/εξόδου υψηλού επίπεδου και ανεξάρτητες λειτουργικού συστήματος Υποστήριξη για

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

Ντίρλης Νικόλαος- ΕΤΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 25 ΟΚΤΩΒΡΙΟΥ 2013 ΑΙΘΟΥΣΑ Β4

Ντίρλης Νικόλαος- ΕΤΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 25 ΟΚΤΩΒΡΙΟΥ 2013 ΑΙΘΟΥΣΑ Β4 Ντίρλης Νικόλαος- ΕΤΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 25 ΟΚΤΩΒΡΙΟΥ 2013 ΑΙΘΟΥΣΑ Β4 1 Διαχείριση εργασιών fork(), exit(), exec() (βλ 2 ο Φροντ.) Επικοινωνία διεργασιών signals (βλ 2 ο Φροντ.) sockets και client/server,

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

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

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

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

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

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

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

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ 00497 -Δεν ελέγχετε αν η createlist εκτελλέστικε σωστά και δεν τερµατίζετε το πρόγραµµα σε διαφορετική -Σωστά βρίσκετε το σηµείο στο οποίο πρέπει να προστεθεί ο κόµβος. -Σωστά τερµατίζετε

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

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

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

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

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( ) ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Μορφές μεταβίβασης ορισμάτων σε συναρτήσεις (και μεθόδους) και οι επιπτώσεις τους Επιστροφή τιμών από κλήση συναρτήσεων Υπερφόρτωση

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

Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap

Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap Version 2.00 Επιμέλεια Σημειώσεων: Δημήτρης Κόγιας Πατρικάκης Χαράλαμπος Πίνακας περιεχομένων TELNET... 2 PING...

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

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

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

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

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

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

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

Όταν το πρόγραμμα φτάσει σε αυτή την εντολή και ο καταχωρητής PINA έχει την τιμή

Όταν το πρόγραμμα φτάσει σε αυτή την εντολή και ο καταχωρητής PINA έχει την τιμή 5. Εντολή while() Η εντολή while() είναι ίσως η πιο πολυχρησιμοποιούμενη εντολή κατά τη σύνταξη κώδικα σε γλώσσα προγραμματισμού C για μικροελεγκτές. Το κυρίως μέρος του προγράμματος κλείνεται σχεδόν πάντα

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

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

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

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

Τµήµα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Σεπτέµβριος 2013

Τµήµα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Σεπτέµβριος 2013 Γράψτε όλες τις απαντήσεις σας σε αυτό το φυλλάδιο Οδηγίες για Α: Διαβάστε προσεκτικά όλες τις επιλογές σηµειώστε µε Χ (το πολύ) µια από αυτές. Μην επιλέγετε «στην τύχη» οι λανθασµένες απαντήσεις βαθµολογούνται

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

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

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

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

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

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

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

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

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο 2010 2011 Δ. Γουνόπουλος Ι. Ιωαννίδης Άσκηση 2: Υλοποίηση Ευρετηρίου Β+ Δένδρου Προθεσμία: 6 Ιουνίου 2011, 11:59μμ

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

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

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

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

ιαφάνειες παρουσίασης #6 (β)

ιαφάνειες παρουσίασης #6 (β) ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ http://www.softlab.ntua.gr/~nickie/courses/progtech/ ιδάσκοντες: Γιάννης Μαΐστρος (maistros@cs.ntua.gr) Στάθης Ζάχος (zachos@cs.ntua.gr) (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης

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

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

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

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

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

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

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

Ζητήματα Σχεδίασης Λογισμικού Εξυπηρετητή

Ζητήματα Σχεδίασης Λογισμικού Εξυπηρετητή Ζητήματα Σχεδίασης Λογισμικού Εξυπηρετητή Διαδικτυακός και Ταυτόχρονος Προγραμματισμός 1 Ταυτόχρονοι και Επαναληπτικοί Εξυπηρετητές Επαναληπτικός εξυπηρετητής: επεξεργάζεται μόνο μία αίτηση τη φορά. Ταυτόχρονος

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εργαστήριο Λειτουργικών Συστημάτων Ακ. Έτος Άσκηση 3

Εργαστήριο Λειτουργικών Συστημάτων Ακ. Έτος Άσκηση 3 Εργαστήριο Λειτουργικών Συστημάτων Ακ. Έτος 0- Άσκηση Να τροποποιηθεί ο αλγόριθμος χρονοπρογραμματισμού του Minix ώστε σε κάθε σειρά προτεραιότητας, ώστε να «ευνοούνται» οι διεργασίες που χρησιμοποιούν

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

Προγραμματισμός συστημάτων UNIX/POSIX. Σήματα (signals)

Προγραμματισμός συστημάτων UNIX/POSIX. Σήματα (signals) Προγραμματισμός συστημάτων UNIX/POSIX Σήματα (signals) Σήματα (signals) Τα σήματα είναι «διακοπές» λογισμικού (software interrupts) οι οποίες διακόπτουν την κανονική λειτουργία μίας διεργασίας. Προκαλούνται

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

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

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

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

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

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

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

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

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

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

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

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

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

Βασικές συσκευές Ε/Ε. Είσοδος Έξοδος στον υπολογιστή. Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (IΙI) Μ.

Βασικές συσκευές Ε/Ε. Είσοδος Έξοδος στον υπολογιστή. Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (IΙI) Μ. Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Οργάνωση Υπολογιστών (IΙI) (συσκευές εισόδου-εξόδου) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Ένα τυπικό

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

ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ

ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Deep/Shallow copies H αναγκαιότητα των κατασκευαστών αντιγραφής Ορισμός και χρήση κατασκευαστών αντιγραφής Τελευταία ενημέρωση:

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