Αρχική ΑΕΠΠ - Δομές Δεδομένων Λειτουργικά Συστήματα Δίκτυα Υπολογιστών ΙΙ Βάσεις Δεδομένων Παιδαγωγικά - Διδακτική
Εισαγωγή στα Λ.Σ. Βασικές Δομές Η/Υ Βασικές Δομές Λ.Σ
Διεργασίες Χρονοπρογραμματισμός Συγχρονισμός
Μονοπρογραμματισμός Εναλλαγή Εικονική Μνήμη Κατάτμηση
Απόκρυψη μικρών αλλαγών - Αλλαγές κώδικα
s
(αρχική τιμή 1). Πόσες διαφορετικές τιμές του Χ μπορούν να προκύψουν όταν ολοκληρωθεί η εκτέλεση και των δύο διεργασιών;
x
μπορούν να προκύψουν όταν ολοκληρωθεί η εκτέλεση και των δύο διεργασιών;
s
(αρχική τιμή 1). Πόσες διαφορετικές τιμές του Χ μπορούν να προκύψουν όταν ολοκληρωθεί η εκτέλεση και των δύο διεργασιών;
t
(αρχική τιμή 0). Πόσες διαφορετικές τιμές του Χ μπορούν να προκύψουν όταν ολοκληρωθεί η εκτέλεση και των δύο διεργασιών;
t
(αρχική τιμή 0). Πόσες διαφορετικές τιμές του Χ μπορούν να προκύψουν όταν ολοκληρωθεί η εκτέλεση και των δύο διεργασιών;
Το πρόγραμμα που βλέπεις παρακάτω αποτελείται από τρεις διεργασίες. Οι διεργασίες τυπώνουν επαναληπτικά από ένα μήνυμα και συγχρονίζονται με τις υπόλοιπες διεργασίες του ίδιου προγράμματος με σηματοφορείς. Τι θα βλέπει ο χρήστης που τρέχει τα προγράμματα αυτά, με ποια σειρά δηλαδή θα τυπώνονται τα μηνύματα των δυο προγραμμάτων;
Το τμήμα του προγράμματος που βλέπεις παρακάτω αποτελείται από τρεις διεργασίες. Οι διεργασίες τυπώνουν επαναληπτικά από ένα μήνυμα και συγχρονίζονται με τις υπόλοιπες διεργασίες του ίδιου προγράμματος με σηματοφορείς. Τι μηνύματα θα βλέπει ο χρήστης που τρέχει τις διεργασίες, με ποια σειρά δηλαδή θα τυπώνονται τα μηνύματα;
Το πρόγραμμα που βλέπεις παρακάτω αποτελείται από τρεις διεργασίες. Οι διεργασίες τυπώνουν επαναληπτικά από ένα μήνυμα και συγχρονίζονται με τις υπόλοιπες διεργασίες του ίδιου προγράμματος με σηματοφορείς. Τι θα βλέπει ο χρήστης που τρέχει τα προγράμματα αυτά, με ποια σειρά δηλαδή θα τυπώνονται τα μηνύματα των δυο προγραμμάτων;
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.
[@program Mhnymata1;
down(s1);
P(s1);
up(s2);
V(s2);
down(s2);
P(s2); V(s1); P(s2);
up(s3);
V(s3);
down(s3);
P(s3);
up(s1);
V(s1);
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
Στο πρόγραμμα των τραπεζικών αναλήψεων μπορούμε να χρησιμοποιήσουμε ένα σηματοφορέα με όνομα «s» για να βεβαιωθούμε ότι ο λογαριασμός θα ενημερωθεί σωστά. Σημείωσε στο παρακάτω «πρόγραμμα» τα σημεία που πρέπει να εκτελεστούν οι λειτουργίες down(&s) και up(&s).
Το πρόγραμμα της δανειστικής βιβλιοθήκης μπορεί να χρησιμοποιήσει το σηματοφορέα με όνομα «book» για να μη «δανείζει» το ίδιο βιβλίο σε πολλούς χρήστες συγχρόνως. Τοποθέτησε τις λειτουργίες down(&book) και up(&book) στα κατάλληλα σημεία μέσα στο πρόγραμμα:
Το πρόγραμμα που βλέπεις παρακάτω αποτελείται από τρεις διεργασίες. Οι διεργασίες τυπώνουν επαναληπτικά από ένα μήνυμα και συγχρονίζονται με τις υπόλοιπες διεργασίες του ίδιου προγράμματος με σηματοφορείς. Τι θα βλέπει ο χρήστης που τρέχει τα προγράμματα αυτά, με ποια σειρά δηλαδή θα τυπώνονται τα μηνύματα των δυο προγραμμάτων;
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.
Copyright 2008 - Άρης Φεργάδης