Αρχική ΑΕΠΠ - Δομές Δεδομένων Λειτουργικά Συστήματα Δίκτυα Υπολογιστών ΙΙ Βάσεις Δεδομένων Παιδαγωγικά - Διδακτική

Εισαγωγικά

Εισαγωγή στα Λ.Σ. Βασικές Δομές Η/Υ Βασικές Δομές Λ.Σ

Διεργασίες

Διεργασίες Χρονοπρογραμματισμός Συγχρονισμός

Αδιέξοδα

Μνήμη

Μονοπρογραμματισμός Εναλλαγή Εικονική Μνήμη Κατάτμηση

Είσοδος / Έξοδος

Σύστημα Αρχείων

Διεπαφή Υλοποίηση

 Ιστορικό Πρόσφατες αλλαγές Εκτύπωση Αναζήτηση

Ιστορικό: OS.Semaphore

Απόκρυψη μικρών αλλαγών - Αλλαγές κώδικα

24-06-2008 (15:55) από 194.63.239.168 -
Αλλαγή σειρών 158-161 από:
  1. Πόσες διαφορετικές τιμές της μεταβλητής Χ μπορούν να προκύψουν όταν ολοκληρωθεί η εκτέλεση και των δύο διεργασιών;
  2. Υποθέστε ότι τα προγράμματα τροποποιούνται για να χρησιμοποιήσουν ένα κοινό σημαφόρο s (αρχική τιμή 1). Πόσες διαφορετικές τιμές του Χ μπορούν να προκύψουν όταν ολοκληρωθεί η εκτέλεση και των δύο διεργασιών;
σε:
  • Πόσες διαφορετικές τιμές της μεταβλητής x μπορούν να προκύψουν όταν ολοκληρωθεί η εκτέλεση και των δύο διεργασιών;
  • Υποθέστε ότι τα προγράμματα τροποποιούνται για να χρησιμοποιήσουν ένα κοινό σημαφόρο s (αρχική τιμή 1). Πόσες διαφορετικές τιμές του Χ μπορούν να προκύψουν όταν ολοκληρωθεί η εκτέλεση και των δύο διεργασιών;
Αλλαγή σειρών 184-185 από:
  1. Υποθέστε ότι τα προγράμματα τροποποιούνται για να χρησιμοποιήσουν ένα κοινό δυαδικό σημαφόρο t (αρχική τιμή 0). Πόσες διαφορετικές τιμές του Χ μπορούν να προκύψουν όταν ολοκληρωθεί η εκτέλεση και των δύο διεργασιών;
σε:
  • Υποθέστε ότι τα προγράμματα τροποποιούνται για να χρησιμοποιήσουν ένα κοινό δυαδικό σημαφόρο t (αρχική τιμή 0). Πόσες διαφορετικές τιμές του Χ μπορούν να προκύψουν όταν ολοκληρωθεί η εκτέλεση και των δύο διεργασιών;
24-06-2008 (15:53) από 194.63.239.168 -
Πρόσθεση σειρών 137-204:
24-06-2008 (15:44) από 194.63.237.23 -
Πρόσθεση σειρών 96-136:
24-06-2008 (15:39) από 194.63.237.23 -
Αλλαγή σειρών 24-25 από:

Το πρόγραμμα που βλέπεις παρακάτω αποτελείται από τρεις διεργασίες. Οι διεργασίες τυπώνουν επαναληπτικά από ένα μήνυμα και συγχρονίζονται με τις υπόλοιπες διεργασίες του ίδιου προγράμματος με σηματοφορείς. Τι θα βλέπει ο χρήστης που τρέχει τα προγράμματα αυτά, με ποια σειρά δηλαδή θα τυπώνονται τα μηνύματα των δυο προγραμμάτων;

σε:

Το τμήμα του προγράμματος που βλέπεις παρακάτω αποτελείται από τρεις διεργασίες. Οι διεργασίες τυπώνουν επαναληπτικά από ένα μήνυμα και συγχρονίζονται με τις υπόλοιπες διεργασίες του ίδιου προγράμματος με σηματοφορείς. Τι μηνύματα θα βλέπει ο χρήστης που τρέχει τις διεργασίες, με ποια σειρά δηλαδή θα τυπώνονται τα μηνύματα;

Αλλαγή σειρών 59-90 από:

Το πρόγραμμα που βλέπεις παρακάτω αποτελείται από τρεις διεργασίες. Οι διεργασίες τυπώνουν επαναληπτικά από ένα μήνυμα και συγχρονίζονται με τις υπόλοιπες διεργασίες του ίδιου προγράμματος με σηματοφορείς. Τι θα βλέπει ο χρήστης που τρέχει τα προγράμματα αυτά, με ποια σειρά δηλαδή θα τυπώνονται τα μηνύματα των δυο προγραμμάτων;

program Mhnymata2; 
var s1, s2, s3: semaphore; 
procedure P1; 
begin 
  while true do begin 
     P(s1); 
     writeln(‘∆ιεργασία 1’); 
     V(s2); 
  end 
end; 
procedure P2; 
begin 
  while true do begin 
     P(s2); V(s1); P(s2); 
     writeln(‘∆ιεργασία 2’); 
     V(s3); 
  end 
end; 
procedure P3; 
begin 
  while true do begin 
     P(s3); 
     writeln(‘∆ιεργασία 3’); 
     V(s1); 
  end 
end; 
begin 
  s1 := 1; s2 := 0; s3 := 0; 
  parbegin P1 || P2 || P3 parend 
end. 
σε:
24-06-2008 (15:36) από 194.63.237.23 -
Αλλαγή σειρών 26-61 από:

[@program Mhnymata1;

σε:
Αλλαγή σειράς 66 από:
     down(s1); 
σε:
     P(s1); 
Αλλαγή σειράς 68 από:
     up(s2); 
σε:
     V(s2); 
Αλλαγή σειράς 74 από:
     down(s2); 
σε:
     P(s2); V(s1); P(s2); 
Αλλαγή σειράς 76 από:
     up(s3); 
σε:
     V(s3); 
Αλλαγή σειράς 82 από:
     down(s3); 
σε:
     P(s3); 
Αλλαγή σειράς 84 από:
     up(s1); 
σε:
     V(s1); 
Διαγραφή σειρών 89-123:

end. @]


Το πρόγραμμα που βλέπεις παρακάτω αποτελείται από τρεις διεργασίες. Οι διεργασίες τυπώνουν επαναληπτικά από ένα μήνυμα και συγχρονίζονται με τις υπόλοιπες διεργασίες του ίδιου προγράμματος με σηματοφορείς. Τι θα βλέπει ο χρήστης που τρέχει τα προγράμματα αυτά, με ποια σειρά δηλαδή θα τυπώνονται τα μηνύματα των δυο προγραμμάτων;

[@program Mhnymata2; var s1, s2, s3: semaphore; procedure P1; begin

  while true do begin 
     P(s1); 
     writeln(‘∆ιεργασία 1’); 
     V(s2); 
  end 

end; procedure P2; begin

  while true do begin 
     P(s2); V(s1); P(s2); 
     writeln(‘∆ιεργασία 2’); 
     V(s3); 
  end 

end; procedure P3; begin

  while true do begin 
     P(s3); 
     writeln(‘∆ιεργασία 3’); 
     V(s1); 
  end 

end; begin

  s1 := 1; s2 := 0; s3 := 0; 
  parbegin P1 || P2 || P3 parend 
24-06-2008 (15:28) από 194.63.237.23 -
Πρόσθεση σειρών 1-90:

Ασκήσεις

Στο πρόγραμμα των τραπεζικών αναλήψεων μπορούμε να χρησιμοποιήσουμε ένα σηματοφορέα με όνομα «s» για να βεβαιωθούμε ότι ο λογαριασμός θα ενημερωθεί σωστά. Σημείωσε στο παρακάτω «πρόγραμμα» τα σημεία που πρέπει να εκτελεστούν οι λειτουργίες down(&s) και up(&s).

  1. Ρώτα τον πελάτη για το ποσό ανάληψης Α.
  2. Διάβασε το ποσό του λογαριασμού Χ.
  3. Βρες το υπόλοιπο του λογαριασμού Υ = Χ-Α.
  4. Καταχώρησε το νέο υπόλοιπο Υ στο λογαριασμό.
  5. Δώσε στον πελάτη τα χρήματα και την απόδειξη.

Το πρόγραμμα της δανειστικής βιβλιοθήκης μπορεί να χρησιμοποιήσει το σηματοφορέα με όνομα «book» για να μη «δανείζει» το ίδιο βιβλίο σε πολλούς χρήστες συγχρόνως. Τοποθέτησε τις λειτουργίες down(&book) και up(&book) στα κατάλληλα σημεία μέσα στο πρόγραμμα:

  1. Ρώτα το χρήστη τον τίτλο του βιβλίου που επιθυμεί να δανειστεί.
  2. Βρες την καταχώρηση του βιβλίου και εμφάνισε τα στοιχεία του.
  3. Ρώτα το χρήστη αν θέλει να δανειστεί το βιβλίο αυτό.
  4. Έλεγξε αν το βιβλίο δεν είναι δανεισμένο.
  5. Σημείωσε τον κωδικό του χρήστη στην καταχώρηση του βιβλίου.
  6. Τύπωσε το δανειστικό σημείωμα για την παραλαβή του βιβλίου.

Το πρόγραμμα που βλέπεις παρακάτω αποτελείται από τρεις διεργασίες. Οι διεργασίες τυπώνουν επαναληπτικά από ένα μήνυμα και συγχρονίζονται με τις υπόλοιπες διεργασίες του ίδιου προγράμματος με σηματοφορείς. Τι θα βλέπει ο χρήστης που τρέχει τα προγράμματα αυτά, με ποια σειρά δηλαδή θα τυπώνονται τα μηνύματα των δυο προγραμμάτων;

program Mhnymata1; 
var s1, s2, s3: semaphore; 
procedure P1; 
begin 
  while true do begin 
     down(s1); 
     writeln(‘∆ιεργασία 1’); 
     up(s2); 
  end 
end; 
procedure P2; 
begin 
  while true do begin 
     down(s2); 
     writeln(‘∆ιεργασία 2’); 
     up(s3); 
  end 
end; 
procedure P3; 
begin 
  while true do begin 
     down(s3); 
     writeln(‘∆ιεργασία 3’); 
     up(s1); 
  end 
end; 
begin 
  s1 := 1; s2 := 0; s3 := 0; 
  parbegin P1 || P2 || P3 parend 
end. 

Το πρόγραμμα που βλέπεις παρακάτω αποτελείται από τρεις διεργασίες. Οι διεργασίες τυπώνουν επαναληπτικά από ένα μήνυμα και συγχρονίζονται με τις υπόλοιπες διεργασίες του ίδιου προγράμματος με σηματοφορείς. Τι θα βλέπει ο χρήστης που τρέχει τα προγράμματα αυτά, με ποια σειρά δηλαδή θα τυπώνονται τα μηνύματα των δυο προγραμμάτων;

program Mhnymata2; 
var s1, s2, s3: semaphore; 
procedure P1; 
begin 
  while true do begin 
     P(s1); 
     writeln(‘∆ιεργασία 1’); 
     V(s2); 
  end 
end; 
procedure P2; 
begin 
  while true do begin 
     P(s2); V(s1); P(s2); 
     writeln(‘∆ιεργασία 2’); 
     V(s3); 
  end 
end; 
procedure P3; 
begin 
  while true do begin 
     P(s3); 
     writeln(‘∆ιεργασία 3’); 
     V(s1); 
  end 
end; 
begin 
  s1 := 1; s2 := 0; s3 := 0; 
  parbegin P1 || P2 || P3 parend 
end. 

Τελευταία ενημέρωση: 24-06-2008 (15:55)

Copyright 2008 - Άρης Φεργάδης