Παράδειγµα χρήσης perror, errno (πρόγραµµα errors_demo.c)

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

Προγραμματισμός συστημάτων UNIX/POSIX. Ανακατευθύνσεις (redirections)

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

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

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

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

Νήµατα. Πολύ σηµαντικό

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

Προγραµµατισµός 2 The shell

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

Topic 3: Error Handling, Low-level I/O, Signals * K24: Systems Programming Instructor: Mema Roussopoulou

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

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

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

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

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

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

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

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

Σήματα (Signals) Προγραμματισμός II 1

Ντίρλης Νικόλαος- ΕΤΥ 2 ο Φροντιστήριο Παρασκευή, 18/10/2013 Β4. Λειτουργικά Συστήματα- Φροντιστήριο 2

Σήματα (Signals) Προγραμματισμός II 1

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

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

Πως θα αποθηκεύσει τη λίστα με τα ψώνια του και θα την ανακτήσει στο Σ/Μ; και πως θα προσθέσει στη λίστα του επιπλέον προϊόντα;

ΤΗΛΕΦΩΝΗΤΗΣ AG-GD20 GSM & PSTN

Εισαγωγή στον Προγραμματισμό Μάθημα 1: Βασική Πλοήγηση σε Linux CLI. Οκτώβριος 2016 Χ. Αλεξανδράκη

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

ΕΠΕΞΕΡΓΑΣΙΑ ΑΡΧΕΙΩΝ Λέµε αρχείο

Μερικές άλλες χρήσιμες εντολές

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

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

Διαχείριση Διεργασιών και Διαδιεργασιακή Επικοινωνία

Σήματα (Signals) Προγραμματισμός II 1

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

[11] Υπολογιστικά συστήματα: Στρώματα. Περιεχόμενα. Εισαγωγή. επικοινωνία εφαρμογές λειτουργικό σύστημα προγράμματα υλικό

Κεφάλαιο Αλφαριθµητικές Σειρές Χαρακτήρων (Strings)

Εργαστήριο ΔΙΑΧΕΙΡΙΣΗ ΑΡΧΕΙΩΝ & ΚΑΤΑΛΟΓΩΝ ΣΤΟ UNIX. Εισαγωγή

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

Κατανεμημένος και Παράλληλος Προγραμματισμός. Εισαγωγή στο MPI. Εγκατάσταση MPICH σε ένα ΗΥ 10/3/2017

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

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

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

Εργαστήριο ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ UNIX

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. ( ιάλεξη 13) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

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

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

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. Εισαγωγή στο Unix

Σημειωματάριο Τετάρτης 25 Οκτ. 2017

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

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

Κεφάλαιο , 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ΕΝΟΤΗΤΑ 6 LCD ΟΘΟΝΕΣ


Δίκτυα Η/Υ στην Επιχείρηση

ΦΥΣ 145 Μαθηµατικές Μέθοδοι στη Φυσική. Πρόοδος 28 Μαρτίου 2009 Οµάδα 1 η

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

Εισαγωγή...1 Το κοινό αυτού του βιβλίου...2 Οι συμβάσεις που χρησιμοποιούνται στο βιβλίο...3

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19)

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Σύντομη εισαγωγή στο εργαστήριο

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 15/11/09, 23:59


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

AG-GD20 Ο ΗΓΙΕΣ ΧΡΗΣΕΩΣ ΤΗΛΕΦΩΝΗΤΗ GSM & PSTN

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στο Λ.Σ. UNIX

Βασικές λειτουργίες συστήματος πάνω σε αρχεία δεδομένων. Προγραμματισμός II 1

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

Streams Input / Output in C++ George Kastrinis

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

lab13grades 449 PASS 451 PASS PASS FAIL 1900 FAIL Page 1

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

Σελίδα 1 από 11. Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για:

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

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

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

for for for for( . */

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

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

Εφαρμογές Σειριακής Επικοινωνίας

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

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

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

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

Προγραµµατισµός Ι Εργαστήριο 13ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 13 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

ΕΡΓΑΣΤΗΡΙΟ 8: Πολυδιάστατοι Πίνακες και Δυναμική Δέσμευση Μνήμης

ΤΕΙΘ ΣΤΕΦ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ (UNIX) ΕΡΓΑΣΤΗΡΙΟ. 6o ΕΡΓΑΣΤΗΡΙΟ

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Πανεπιςτήμιο Πελοποννήςου Τμήμα Επιςτήμησ και Τεχνολογίασ Τηλεπικοινωνιών. Λειτουργικά Συςτήματα Προγραμματιςμόσ Συςτήματοσ.

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

Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ.

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

Επεξεργασία Αρχείων Κειµένου

scanf() scanf() stdin scanf() printf() int float double %lf float

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

$./jms console -w <jms in> -r <jms out> -o <operations file> namedpipe. (standard input).

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

Transcript:

Χειρισµός Λαθών 1

Παράδειγµα χρήσης perror, errno (πρόγραµµα errors_demo.c) 2

Είσοδος/Έξοδος Χαµηλού Επιπέδου 3

Είσοδος/Έξοδος Χαµηλού Επιπέδου (συν.) Αυτό αργότερα στο εξάµηνο 4

Κλήση συστήµατος open 5

Παραδείγµατα χρήσης open S_IRUSR S_IWUSR S_IXUSR S_IRWXU S_IRGRP S_IWGRP S_IXGRP S_IRWXG S_IROTH S_IWOTH S_IXOTH S_IRWXO Ανάγνωση ιδιοκτήτη Γραφή ιδιοκτήτη Εκτέλεση ιδιοκτήτη Ανάγνωση, γραφή, εκτέλεση ιδιοκτήτη Ανάγνωση οµάδα Γραφή οµάδα Εκτέλεση οµάδα Ανάγνωση, γραφή, εκτέλεση οµάδα Ανάγνωση λοιποί Γραφή λοιποί Εκτέλεση λοιποί Ανάγνωση, γραφή, εκτέλεση λοιποί 6

Εντολή read Πότε διαβάζει λιγότερα από count bytes? Αν το αρχείο έχει λιγότερα bytes Αν διακοπεί από σήµα Αν διαβάζει από σωλήνωση/υποδοχή, διαβάζει όταν βρίσκει κάτι διαθέσιµο => απαιτεί while loop για διάβασµα όλων των χαρακτήρων 7

Παράδειγµα συνάρτησης read Τι θα συµβεί εδώ? Στα επόµενα παραδείγµατα, STDIN_FILENO=0, STDOUT_FILE=1, STDERR_FILE=2 8

Εντολές write, close Κάντε man στις εντολές read, write, close για τα include files. Συχνά το unistd.h 9

Παραδείγµατα εντολής write Ίσως διαβάσει < 1024 bytes Καµιά εγγύηση ότι θα γράψει bytesread bytes 10

Παράδειγµα χρήσης read, write, close 11

Κλήσεις dup, dup2 12

Παράδειγµα dup, dup2 13

Παράδειγµα Γράψτε ένα πρόγραµµα που αντιγράφει ένα αρχείο στο τέλος ενός άλλου 14

Πρόσβαση σε inodes Κλήση stat 15

Πρόσβαση σε inodes Κλήση stat (συν.) 16

Παράδειγµα stat 17

Πρόσβαση σε περιεχόµενα καταλόγων 18

Συναρτήσεις opendir, readdir, closedir 19

Παράδειγµα opendir, readdir, closedir 20

Παράδειγµα- Πρόγραµµα µε συµπεριφορά ls -al 21

Συνέχεια παραδείγµατος 22

Κλήσεις link, unlink, mkdir, rmdir Όχι διαγραφή αρχείου αν counter > 0 23

Κλήσεις rename, chmod, symlink, readlink, 24

Παράδειγµα link 25

Σήµατα Ειδοποίηση µέσω λογισµικού σε διαδικασία ότι κάτι συνέβη Σφάλµα εκτέλεσης, core Από πληκτρολόγιο (Ctrl-C, Ctrl-Z) Μια διεργασία σε µία άλλη Εντολή kill κτλ 4 Επιλογές για κάθε σήµα: Μπλοκάρισέ το Αγνόησέ το Προκαθορισµένη δράση Ορισµός συνάρτησης (διαχειριστής σήµατος signal handler) για το πώς να αντιµετωπιστεί 26

Πόσα Σήµατα Υπάρχουν? (1) Μετρητής Σηµαντικό Σηµαντικό 27

Πόσα Σήµατα Υπάρχουν? (2) Ctrl-\ Σηµαντικό Συχνά Ctrl-Z Σηµαντικό Αν χρησιµοποιείτε το όνοµα κάποιου σήµατος, include <signal.h> 28

Εντολή kill Εντολή κελύφους: kill [-signalname] processid kill -s signalname processid kill -l Παραδείγµατα: kill -9 3424 kill -s USR1 3424 kill -9 3424 (το γράµµα l εδώ, όχι το νούµερο) 29

Εντολές raise, pause Εντολή int pause() Αναµονή διεργασίας µέχρι τη λήψη σήµατος που η δράση της είτε εκτελεί συνάρτηση χρήστη είτε τερµατίζει διεργασία Πάντα επιστρέφει -1 #include <unistd.h> Εντολή int raise(int signalid) Στέλνει σήµα στην ίδια διεργασία!!! Σε επιτυχία 0. Αλλιώς <> 0 και θέτει το errno Πχ: if (raise(sigusr1)!= 0) perror( Failed to raise SIGUSR1 ); 30

Συνάρτηση alarm #include <unistd.h> 31

Συνάρτηση signal Παλιός τρόπος ορισµού συνάρτησης χειρισµού σηµάτων ΜΗΝ την χρησιµοποιείτε 32

Μάσκες σηµάτων Ορισµός δράσεων για πολλά σήµατα µαζί µε χρήση µάσκας σήµατος. υαδικός αριθµός µε κατάλληλα bits σε 1 sigemptyset: αρχικοποίηση κανένα σήµα ορισµένο sigfillset: αρχικοποίηση όλα τα σήµατα ορισµένα sigaddset/sigdelset: εισαγωγή/διαγραφή σήµατος από µάσκα sigmember: υπάρχει το σήµα στη µάσκα? 33

Παραδείγµατα Χειρισµού Μάσκας Σηµάτων (1) Πώς να βάλουµε σε µία µάσκα τα σήµατα SIGQUIT και SIGINT 34

Παραδείγµατα Χειρισµού Μάσκας Σηµάτων (2) Πώς να ορίσουµε σήµατα για αναµονή Τα σήµατα θα παραδοθούν όταν καταργήσουµε την αναµονή τους int sigprocmask(int how, const sigset_t *restrict set, sigset_t *restrict oset) If oset<>null, µετά την κλήση το oset περιέχει την προηγούµενη µάσκα how = SIG_BLOCK: Προσθήκη σηµάτων σε ήδη µπλοκαρισµένα SIG_UNBLOCK: Αφαίρεση σηµάτων από ήδη µπλοκαρισµένα SIG_SETMASK: Ορίζει τα µπλοκαρισµένα σήµατα Σε αναµονή το SIGINT 35

Παραδείγµατα Χειρισµού Μάσκας Σηµάτων (3) Βάζοντας το SIGINT προσωρινά σε αναµονή Σε αναµονή το SIGINT Τέλος αναµονής. Αν είχε πατηθεί πριν Ctrl-C, τερµατισµός προγράµµατος 36

Πιάνοντας και αγνοώντας σήµατα - sigaction Επιτρέπει να δούµε ή να ορίσουµε τη δράση σχετικά µε κάποιο σήµα. Επιστρέφει 0 σε επιτυχία. Σε αποτυχία -1 και θέτει το errno (EINVAL συνήθως). If oact<>null, µετά την κλήση το oact περιέχει την προηγούµενη δράση για το σήµα Προκαθορισµένη δράση Αγνόησέ το ΠΡΟΣΟΧΗ: Να ορίζετε µόνο ένα από τα sa_handler και sa_sigaction. 37

Παράδειγµα sigaction Ορίζουµε τη συνάρτηση mysighand να καλείται στη λήψη SIGINT 38

Παράδειγµα sigaction (2) Πώς να αγνοήσουµε το SIGINT αν η ισχύει η προκαθορισµένη δράση για αυτό NULL σηµαίνει κάνω ερώτηση για τρέχουσα δράση 39

Παράδειγµα sigaction (3) Ας ορίσουµε και µια συνάρτηση αντιµετώπισης του SIGINT Πάντα write σε χειριστές σηµάτων 40

Παράδειγµα mytest.c Επαναλαµβανόµενο ρολόι. Συνάρτηση στο ticker_demo.c Μετά από κάθε Ctrl-C επιστρέφει εδώ. Αγνοεί το SIGALARM 41

Παράδειγµα mytest2.c Επαναλαµβανόµενο ρολόι. Συνάρτηση στο ticker_demo.c Μετά από κάθε Ctrl-C πάει στην παρακάτω γραµµή και θέτει το errno. Αγνοεί το SIGALARM 42

Παράδειγµα mytest3.c Επαναλαµβανόµενο ρολόι. Συνάρτηση στο ticker_demo.c Μετά από κάθε Ctrl-C ή σήµα SIGALARM πάει στην παρακάτω γραµµή ΝΑ ΧΡΗΣΙΜΟΠΟΙΕΙΤΕ ΠΑΝΤΑ read και sigaction 43

Άλλες συναρτήσεις int sigsuspend(const sigset_t *sigmask) Σαν την pause(), αλλά καθορίζει ότι µπορεί να ξυπνήσει µόνο από σήµα που ΕΝ ΕΙΝΑΙ στη sigmask. int sigwait(const sigset_t *restrict sigmask, int *restrict signo) Σαν την pause, αλλά περιµένει µόνο για σήµατα που ΕΊΝΑΙ στην µάσκα sigmask. Επιστρέφει στο signo το σήµα από το οποίο ξύπνησε 44

Valgrind Εγκατεστηµένο στο /home/users1/spro_project1/valgrind Βάλτε το bin κατάλογο στο PATH σας (στο.cshrc για µόνιµα) setenv PATH ${PATH}:/home/users1/spro_project1/valgrind/bin Πάντα µεταγλώττιση µε g Κλήση µε: valgrind --db-attach=yes execfile 45

Αρχείο Όλο Λάθη 46

Valgrind Παράδειγµα -g 47

Valgrind και gdb Σε κάθε σφάλµα ερώτηµα αν θέλετε να συνδεθείτε στο gdb Αν συνδεθείτε: bt list up/down print quit ίνει στοίβα κλήσης εντολών µέχρι το πρόβληµα Λίστα µε τις κοντινές εντολές γύρω από το πρόβληµα Μετακίνηση πάνω/κάτω στη στοίβα Τυπώνει τη µεταβλητή που του δίνουµε σαν όρισµα Eγκατάλειψη gdb 48

Για όσους επιθυµούν εγκατάσταση στο σπίτι http://valgrind.org/downloads/current.html Υπάρχει και γραφικό interface (Valkyrie) Κατέβασµα συµπιεσµένου αρχείου valgrind-xxx.tar.bz2 bunzip2 valgrind-xxx.tar.bz2 tar xvf valgrind-xxx.tar cd valgrind-xxx/./configure --prefix=$home/valgrind --exec-prefix=$home/valgrind make make install Βάλτε το bin κατάλογο του $HOME/valgrind στο PATH Τεστ µε valgrind ls -l 49

Σχεδίαση στην οθόνη Πολύ εύκολο µε βιβλιοθήκη curses.h initscr() Αρχικοποίηση βιβλιοθήκης και οθόνης endwin() refresh() Απενεργοποίηση curses και επαναφορά οθόνης Η οθόνη δείχνει τελευταίες αλλαγές move(r,c) Ο δροµέας (cursor) µετακινείται στο (r,c) addstr(s) addch(c) clear() Σχεδίασε το string s στην τρέχουσα θέση της οθόνης Σχεδίασε τον χαρακτήρα c στην τρέχουσα θέση της οθόνης Καθάρισµα οθόνης standout() Ενεργοποίηση τρόπου standout standend() Απενεργοποίηση τρόπου standout 50

Παράδειγµα hello1.c 51

Παράδειγµα hello2.c 52

Παράδειγµα hello3.c 53

Παράδειγµα hello4.c 54

Παράδειγµα hello5.c 55

Παράδειγµα sleep1.c Να χρησιµοποιείτε sigaction 56

Παράδειγµα - ticker_demo.c Πότε να χτυπήσει πρώτη φορά και µετά κάθε πόσο 57

Παράδειγµα bounce1d.c 58

Παράδειγµα bounce1d.c 59

Παράδειγµα bounce2d.c Αυτό κοιτάξτε το µόνοι σας ύο συχνότητες ανανέωσης Κίνηση σε Χ διάσταση Κίνηση σε Υ διάσταση Τι γίνεται στο παιχνίδι αν αυξήσουµε πολύ την ταχύτητα σε µία διάσταση? Γιατί? 60