ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ. ΕΠΛ371 - Προγραµµατισµός Συστηµάτων

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

Εργαστήριο 4: Εργαλεία Συστήματος UNIX. Διδάσκων: Γιώργος Χατζηπολλάς. Στο εργαστήριο θα μελετηθούν: Εργαστηριακή Άσκηση 2 Παραδείγματα χρήσης awk

Διάλεξη 12: Προχωρημένη Είσοδος/Έξοδος Χαμηλού Επιπέδου (Advanced Low-Level I/O) Κεφάλαιο 4 Stevens & Rago

ΕΠΛ132 Άσκηση 3 - Αρχές Προγραμματισμού ΙΙ Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

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

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

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

./mydiz {-c -a -x -m -d -p -j} <archive-file> <list-of-files/dirs>

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

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

Διάλεξη 20: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου

make Προγραμματισμός II 1

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες)

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

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

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

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

Διάλεξη 15: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου

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

ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Τμήμα Μηχανικών Πληροφορικής ΤΕ Λειτουργικά Συστήματα (Εργαστήριο) Διδάσκων: I. Τσακνάκης. 8ο Εργαστήριο

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Επανάληψη για τις Τελικές εξετάσεις

ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης και Δομές Δεδομένων (Φροντιστήριο)

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

% ls -l /usr/bin/wc -rwxr-xr-x 1 root bin 7368 Jul /usr/bin/wc

Διάλεξη 6: Δείκτες και Πίνακες

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διάλεξη 21: Γράφοι II - Τοπολογική Ταξινόμηση

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Αναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής

Κεφάλαιο 10 ο Υποπρογράµµατα

Προγραμματισμό για ΗΜΥ

Διάλεξη 7 Εργαλεία Ωφελιμότητας Unix: Αwk

υναµική έσµευση Μνήµης (συν.) ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 Εφαρµογή

Βαθμός Σχόλια. lab PASS 1194 PASS 1238 PASS 1239 PASS

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών

Διάλεξη 11: Φροντιστήριο για Στοίβες. Διδάσκων: Παναγιώτης Ανδρέου. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.

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

Διδάσκων: Παναγιώτης Ανδρέου

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ ΕΡΓΑΣΤΗΡΙΟ ΑΠΑΙΤΗΣΕΙΣ ΚΑΙ ΔΙΑΔΙΚΑΣΙΑ ΕΞΕΤΑΣΗΣ

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

Τµήµα Πληροφορικής. Δοµές Δεδοµένων - Εργασία 2. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης

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

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

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

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

Εισαγωγή στην Επιστήμη της Πληροφορικής Εργαστήριο. UNIX Μέρος 1

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 22/12/2016, 21:00

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 1: 1 Εισαγωγή, Χρήσιμες Εφαρμογές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

Μετατροπή χαρακτήρων ASCII σε ακέραιο αριθµό (atoi) & Άνοιγµα αρχείου µέσα από τo QtSPIM, διάβασµα, και αποθήκευση του περιεχοµένου του στη µνήµη

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

lab13grades 449 PASS 451 PASS PASS FAIL 1900 FAIL Page 1

ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2016 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ. Σχήµα 1: H έννοια των πινάκων

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

είκτες και Πίνακες (2)

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 13/1/13, 22:00

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

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

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

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

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

Προγραμματισμό για ΗΜΥ

Κεφάλαιο 5ο: Εντολές Επανάληψης

Στοίβες με Δυναμική Δέσμευση Μνήμης

ΕΠΛ 034: Εισαγωγή στον Προγραμματισμό για ΗΜΥ

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσμία: 17/1/14, 22:00

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Οικονοµικό Πανεπιστήµιο Αθηνών. Τµήµα Πληροφορικής. Φθινοπωρινό Εξάµηνο Δοµές Δεδοµένων - Εργασία 2. Διδάσκων: E. Μαρκάκης

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

CE121 Προγραµµατισµός 2. Εισαγωγή σε Makefiles. CE121 -

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

Δομημένος Προγραμματισμός

Λειτουργικά Συστήματα - Εργαστήριο 6. 6ο Εργαστήριο. Συμπίεση αρχείων Χρήση ειδικών χαρακτήρων στην γραμμή εντολών. Χρήστες και Ομάδες Χρηστών

Διάλεξη 15: Δομές Δεδομένων IV (Διπλά Συνδεδεμένες Λίστες)

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

Διάλεξη 1: Δομές Δεδομένων και Αλγόριθμοι - Εισαγωγή. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

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

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

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 4-2

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τµήµα Πληροφορικής ΕΠΛ371 - Προγραµµατισµός Συστηµάτων ΑΣΚΗΣΗ 3 Υλοποίηση προγράµµατος για την προσπέλαση δεδοµένων του συστήµατος αρχείων (ls -ialr) Ι. Στόχος Άσκησης Διδάσκων: Δηµήτρης Ζεϊναλιπούρ Υπεύθυνος εργαστηρίου: Παύλος Αντωνίου Ηµεροµηνία Ανάθεσης: Παρασκευή, 30/03/2018 Ηµεροµηνία Παράδοσης: Δευτέρα, 16/04/2018 και ώρα 15:00 (η λύση να υποβληθεί σε zip µέσω του Moodle) Στόχος αυτής της άσκησης είναι η εξοικείωση µε προχωρηµένες τεχνικές προγραµµατισµού στο περιβάλλον UNIX. Συγκεκριµένα, σε αυτή την άσκηση θα έχετε την δυνατότητα να κάνετε πρακτική εξάσκηση των εννοιών που έχετε διδαχθεί στις διαλέξεις όπου είδαµε τη Δοµή Αρχείων, το Χαµηλού Επιπέδου Ι/Ο, Διαχείριση µέτα-πληροφοριών αρχείων <sys/stat.h>, Διαχείριση αρχείων µε κλήσεις συστήµατος και Προσπέλαση και Επεξεργασία καταλόγων (dirent.h) µέσω κλήσεων βιβλιοθήκης. Η υλοποίηση της άσκησης προϋποθέτει ότι έχετε κατανοήσει την δοµή του συστήµατος αρχείων στο UNIX καθώς επίσης την λειτουργία των I-nodes. Η άσκηση περιλαµβάνει την υλοποίηση ενός υποσυνόλου λειτουργιών της εντολής ls, συγκεκριµένα των επιλογών (-ialr), χωρίς την κλήση της οικογένειας εντολών exec. Το πρόγραµµα σας θα πρέπει επίσης να παρέχει την δυνατότητα στους χρήστες να ορίσουν το µέγιστο βάθος διερεύνησης της αναδροµής (κάτι το οποίο δεν παρέχεται από την τυπική εντολή ls). Οι λειτουργίες του προγράµµατος σας και το αναµενόµενο αποτέλεσµα περιγράφονται αναλυτικότερα στην συνέχεια. ΙΙΙ. Περιγραφή της εντολής ls (list segments) Η εντολή ls παρουσιάζει το περιεχόµενο ενός καταλόγου που δίδεται σαν παράµετρος. Εάν ο χρήστης παραλείψει να δώσει παράµετρο τότε η εντολή παρουσιάζει αυτόµατα το περιεχόµενο του τρέχοντος καταλόγου «.». Επίσης ο χρήστης έχει την δυνατότητα να δώσει σαν παράµετρο πολλαπλούς καταλόγους. Σε αυτή την περίπτωση, θα παρουσιάσουν τα περιεχόµενα όλων των καταλόγων που ορίζονται από το χρήστη. Παρόλο που η ls έχει µια πλειάδα επιλογών, σε αυτή την άσκηση θα µας απασχολήσουν οι πιο κάτω επιλογές καθώς επίσης κάποιες εντολές οι οποίες προσφέρονται αυτή τη στιγµή από την ls και οι οποίες θα περιγραφούν στη συνέχεια. ls - list directory contents -R list subdirectories recursively (using Depth First Search) -l use a long listing format -I print the index (inode) number of each file -a include all entries (including hidden files starting with.) 1 από 6

Στην επόµενη εκτέλεση παρουσιάζουµε δυο παραδείγµατα εκτέλεσης. Στόχος της άσκησης είναι να προσοµοιώσετε αυτή την λειτουργία. H εντολή ls -ialr επιστρέφει εγγραφές της µορφής: <inode,permissions,links,owner,group,size,modification_date,name> Το δικό σας πρόγραµµα θα πρέπει να τυπώνει τα ίδια ακριβώς αποτελέσµατα που τυπώνει η εντολή ls ialr. Ένα παράδειγµα εκτέλεσης της εντολής ls -ialr δίδεται πιο κάτω: $ ls -ialr public_html/epl003/ public_html/epl003/: total 1032 6671430604 drwxr-xr-x. 5 csp5pa1 tspecial 4096 Feb 27 16:39. 4373503530 drwxr-xr-x. 9 csp5pa1 tspecial 4096 Mar 30 02:33.. 6671430606 -rw-r--r--. 1 csp5pa1 tspecial 5839 Jan 29 12:47 announcements.html 6671430605 -rw-r--r--. 1 csp5pa1 tspecial 5817 Mar 19 13:01 assignments.html 6671430607 -rw-r--r--. 1 csp5pa1 tspecial 4895 Mar 12 13:21 contract.html 7225507548 -rw-r--r--. 1 csp5pa1 tspecial 232015 Mar 5 13:24 epl003-spring2018.pdf 248851459 drwxr-xr-x. 2 csp5pa1 tspecial 40 Feb 12 01:18 ergasies 2160270148 drwxr-xr-x. 2 csp5pa1 tspecial 99 Jan 29 12:47 images 6671430608 -rw-r--r--. 1 csp5pa1 tspecial 8014 Mar 12 13:21 index.html 4380989636 drwxr-xr-x. 2 csp5pa1 tspecial 4096 Mar 26 13:27 labs 6671430609 -rw-r--r--. 1 csp5pa1 tspecial 10533 Mar 26 15:43 labs.html 6671430585 -rw-r--r--. 1 csp5pa1 tspecial 735797 Feb 26 13:18 midterm-epl003.pdf 6671430610 -rw-r--r--. 1 csp5pa1 tspecial 5346 Jan 29 12:47 style.css 6671430613 -rw-r--r--. 1 csp5pa1 tspecial 18073 Feb 26 13:18 XLMid.xlsx public_html/epl003/ergasies: total 24 248851459 drwxr-xr-x. 2 csp5pa1 tspecial 40 Feb 12 01:18. 6671430604 drwxr-xr-x. 5 csp5pa1 tspecial 4096 Feb 27 16:39.. 375809153 -rw-r--r--. 1 csp5pa1 tspecial 20410 Feb 12 09:17 ExcelExcercise.xlsx public_html/epl003/images: total 532 2160270148 drwxr-xr-x. 2 csp5pa1 tspecial 99 Jan 29 12:47. 6671430604 drwxr-xr-x. 5 csp5pa1 tspecial 4096 Feb 27 16:39.. 2215711643 -rw-r--r--. 1 csp5pa1 tspecial 33296 Jan 29 12:47 cslogo.png 2215711644 -rw-r--r--. 1 csp5pa1 tspecial 13312 Jan 29 12:47 Thumbs.db 2216466862 -rw-r--r--. 1 csp5pa1 tspecial 482415 Jan 29 12:47 UCY_Campus.pdf 2215793797 -rw-r--r--. 1 csp5pa1 tspecial 1711 Jan 29 12:47 UCY_logo.gif public_html/epl003/labs: total 11592 4380989636 drwxr-xr-x. 2 csp5pa1 tspecial 4096 Mar 26 13:27. 6671430604 drwxr-xr-x. 5 csp5pa1 tspecial 4096 Feb 27 16:39.. 4380989637 -rw-r--r--. 1 csp5pa1 tspecial 466665 Jan 29 12:47 ExcelPractice1.pdf 4373579109 -rw-r--r--. 1 csp5pa1 tspecial 1788139 Mar 19 13:30 lab10.pdf 5207068911 -rw-r--r--. 1 csp5pa1 tspecial 742528 Mar 26 13:27 lab11.pdf 4380989638 -rw-r--r--. 1 csp5pa1 tspecial 2490945 Feb 1 09:21 lab3.pdf 4511667145 -rw-r--r--. 1 csp5pa1 tspecial 1589224 Feb 12 01:04 lab4.pdf 4624616062 -rw-r--r--. 1 csp5pa1 tspecial 1018991 Feb 12 13:29 lab5.pdf 5159510441 -rw-r--r--. 1 csp5pa1 tspecial 13689 Feb 12 11:18 lab5-problems.xlsx 4565590543 -rw-r--r--. 1 csp5pa1 tspecial 22868 Feb 15 23:37 lab5-solutions.xlsx 4636107406 -rw-r--r--. 1 csp5pa1 tspecial 1270202 Mar 5 13:01 lab8.pdf 4381127911 -rw-r--r--. 1 csp5pa1 tspecial 2428009 Mar 12 13:15 lab9.pdf Εάν δεν δοθεί κάποια παράµετρος τότε η εντολή εκτελείται πάνω στο παρόν κατάλογο. : $ls -ialr.: total 580 6483572892 drwxr-xr-x. 2 csp5pa1 tspecial 4096 Apr 20 2017. 4373503530 drwxr-xr-x. 9 csp5pa1 tspecial 4096 Mar 30 02:33.. 6483572894 -rw-r--r--. 1 csp5pa1 tspecial 117248 Apr 20 2017 anyplace-directions.jpg 6483572893 -rw-r--r--. 1 csp5pa1 tspecial 1756 Apr 20 2017 arrow78.png 6483572895 -rw-r--r--. 1 csp5pa1 tspecial 1395 Apr 20 2017 ccby.png 6483658450 -rw-r--r--. 1 csp5pa1 tspecial 4719 Apr 20 2017 close.png 2 από 6

6483658451 -rw-r--r--. 1 csp5pa1 tspecial 18861 Apr 20 2017 csucy.png 6483658471 -rw-r--r--. 1 csp5pa1 tspecial 1419 Apr 20 2017 office.gif 6483662390 -rw-r--r--. 1 csp5pa1 tspecial 99497 Apr 20 2017 pavlosantoniou.png 6483662402 -rw-r--r--. 1 csp5pa1 tspecial 388 Apr 20 2017 pdf.gif 6483662403 -rw-r--r--. 1 csp5pa1 tspecial 10057 Apr 20 2017 ucy.jpeg 7238263419 lrwxrwxrwx. 1 csp5pa1 tspecial 8 Mar 30 02:41 ucy.jpg -> ucy.jpeg 6483662405 -rw-r--r--. 1 csp5pa1 tspecial 281743 Apr 20 2017 zeinalipour.pdf 6483662404 -rw-r--r--. 1 csp5pa1 tspecial 8932 Apr 20 2017 zeinalipour-qr.gif 6522414701 -rw-r--r--. 1 csp5pa1 tspecial 10163 Apr 20 2017 zeinalipour.small.jpg Σηµειώστε ότι γίνεται χρήση της Κατά-Βάθος Διερεύνησης (Depth-First Traversal). Επίσης θα λαµβάνονται υπόψη στην παρουσίαση (µπροστά από τα permissions, βλέπε 2 η στήλη πιο πάνω) όλοι οι τύποι αρχείων είτε πρόκειται για regular αρχείο (-) ή για αρχείο (d) ή για συµβολικό σύνδεσµο (l). Όπως προσέξατε από τα πιο πάνω παραδείγµατα, όταν χρησιµοποιηθεί η παράµετρος -l τότε εµφανίζεται η λέξη total ακολουθούµενη από ένα αριθµό. Προτού αναλύσουµε πως προκύπτει ο αριθµός αυτός πρέπει να δώσουµε κάποιες επιπλέον πληροφορίες. Κάθε αρχείο και κάθε κατάλογος δεσµεύουν στο δίσκο ένα αριθµό από blocks για να αποθηκεύσουν τα περιεχόµενα τους. Για να δούµε πόσα blocks δεσµεύει κάθε αρχείο και κάθε κατάλογος στον τρέχοντα κατάλογο µπορούµε να εκτελέσουµε την εντολή ls -s και θα πάρουµε τα πιο κάτω αποτελέσµατα: 8 as1 8 main.c 8 as2 12 moss.pl 4 as3 8 putty-0.62 4 as4 16 rambinsearch 12 as5 4 rambinsearch.c 4 bash.sh 4 shell.sh 4 binsearch.sh 204 stdlib.jar 4 bitcoin.conf 4840 words.txt 4 bitcoin.sh Το κάθε block µπορεί να αποτελείται από ένα αριθµό από bytes πολλαπλάσιο του 512 bytes. Ο αριθµός 512 θεωρείται η ελάχιστη χωρητικότητα αποθήκευσης καθώς αντιστοιχεί στους τοµείς (sectors) των πρώτων δίσκων που κυκλοφόρησαν. Στο πιο πάνω παράδειγµα το block size που χρησιµοποιείται από την ls είναι το 1024 bytes και αυτό µπορεί να διαπιστωθεί αν τρέξω την ίδια εντολή µε το -h option που παρουσιάζει τα αποτελέσµατα σε human readable µορφή. Έτσι η ls -sh δίνει: 8.0K as1 8.0K main.c 8.0K as2 12K moss.pl 4.0K as3 8.0K putty-0.62 4.0K as4 16K rambinsearch 12K as5 4.0K rambinsearch.c 4.0K bash.sh 4.0K shell.sh 4.0K binsearch.sh 204K stdlib.jar 4.0K bitcoin.conf 4.8M words.txt 4.0K bitcoin.sh Το συνολικό άθροισµα των blocks (των 1024 bytes το καθένα) που χρησιµοποιούνται από τα περιεχόµενα του τρέχοντος καταλόγου είναι αυτό που φαίνεται δίπλα από τη λέξη total όταν τρέξουµε την εντολή ls -l : total 5148 drwxr-sr-x. 52 csp5pa1 tspecial drwxr-sr-x. 5 csp5pa1 tspecial drwxr-sr-x. 7 csp5pa1 tspecial drwxr-sr-x. 24 csp5pa1 tspecial drwxr-sr-x. 4 csp5pa1 tspecial -rwxrwxrwx. 1 csp5pa1 tspecial -rwxr-xr-x. 1 csp5pa1 tspecial -rw-r--r--. 1 csp5pa1 tspecial 4096 Nov 10 12:17 as1 4096 Dec 6 09:11 as2 4096 Nov 28 13:11 as3 4096 Dec 6 09:10 as4 8192 Dec 8 00:27 as5 171 Feb 25 2015 bash.sh 1003 Mar 30 00:17 binsearch.sh 1659 Feb 17 12:01 bitcoin.conf 3 από 6

-rwxr--r--. 1 csp5pa1 tspecial 315 Feb 17 12:10 bitcoin.sh -rw-r--r--. 1 csp5pa1 tspecial 6989 Jan 26 18:16 main.c -rwxr-xr-x. 1 csp5pa1 tspecial 10756 Mar 18 2016 moss.pl drwxr-xr-x. 10 csp5pa1 tspecial 4096 May 4 2015 putty-0.62 -rwxr-xr-x. 1 csp5pa1 tspecial 13240 Mar 30 00:14 rambinsearch -rw-r--r--. 1 csp5pa1 tspecial 1798 Mar 30 00:14 rambinsearch.c -rwxr-xr-x. 1 csp5pa1 tspecial 100 Jan 30 10:40 shell.sh -rw-r--r--. 1 csp5pa1 tspecial 207354 Aug 28 2017 stdlib.jar -rw-r--r--. 1 csp5pa1 tspecial 4953680 Mar 29 10:34 words.txt Ο αριθµός των blocks κάθε αρχείου (ή καταλόγου) ξεχωριστά µπορεί να υπολογιστεί και από την εντολή κελύφους stat. Aν τρέξω την εντολή stat words.txt θα λάβω τα πιο κάτω: File: \u2018words.txt\u2019 Size: 4953680 Blocks: 9680 IO Block: 1048576 regular file Device: 32h/50d Inode: 2959340741 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1220/ csp5pa1) Gid: ( 242/tspecial) Context: system_u:object_r:nfs_t:s0 Access: 2018-03-29 10:34:34.367586414 +0300 Modify: 2018-03-29 10:34:21.698674485 +0300 Change: 2018-03-29 10:34:28.964623988 +0300 Birth: - Όπως φαίνεται πιο πάνω, o αριθµός των blocks που δίνεται από τη stat είναι διπλάσιος από αυτόν της ls και ο λόγος είναι ότι η stat θεωρεί για τον υπολογισµό της ότι το κάθε block έχει µέγεθος 512 bytes (εξ ου και υπολογίζει διπλάσια blocks). Αυτό επιβεβαιώνεται αν τρέξω την ls µε block-size=512, χρησιµοποιώντας την εντολή ls --block-size=512 -s: 16 as1 16 main.c 16 as2 24 moss.pl 8 as3 16 putty-0.62 8 as4 32 rambinsearch 24 as5 8 rambinsearch.c 8 bash.sh 8 shell.sh 8 binsearch.sh 408 stdlib.jar 8 bitcoin.conf 9680 words.txt 8 bitcoin.sh Στην υλοποίηση της δική σας ls -ialr να παρουσιάζετε τον αριθµό των blocks δίπλα από τη λέξη total µε την ίδια λογική που τα παρουσιάζει η ls. ΙΙΙ. Βοηθητικές Συναρτήσεις Για την διεκπεραίωση αυτής της άσκησης θα χρειαστείτε κάποιες συναρτήσεις τις οποίες δεν είδαµε στο µάθηµα. Συγκεκριµένα θα χρειαστείτε τις συναρτήσεις (Κεφάλαιο 6 Stevens & Rago): #include <pwd.h> struct passwd *getpwuid(uid_t uid); Returns: Pointer to struct passwd if OK, NULL on error #include <grp.h> struct group *getgrgid(gid_t gid); Returns: Pointer to struct group if OK, NULL on error α) struct passwd *getpwuid(uid_t uid); 4 από 6

Αντιστοιχεί το uid το οποίο περιέχετε στο i-node ενός αρχείου σε µια πιο εύληπτη µορφή (π.χ. αντί 1240 δίδει dzeina). Η εντολή αυτή ουσιαστικά ψάχνει µέσα στο /etc/passwd αρχείο. H struct passwd περιέχει το πεδίο pw_name το οποίο είναι τύπου (char *) και το οποίο περιέχει το όνοµα του χρήστη. β) struct group *getgrgid(gid_t gid); Αντιστοιχεί το gid το οποίο περιέχετε στο i-node ενός αρχείου σε µια πιο εύληπτη µορφή (π.χ. αντί 243 δίδει visiting). Η εντολή αυτή ουσιαστικά ψάχνει µέσα στο /etc/group αρχείο. H struct group περιέχει το πεδίο gr_name το οποίο είναι τύπου (char *) και το οποίο περιέχει το όνοµα του χρήστη. γ) Μελετήσετε το man stat για να κατανοήσετε όλες τις σταθερές της βιβλιοθήκης <sys/stat.h> ΙV. Ζητούµενα Άσκησης Πιο κάτω περιγράφονται οι διαφορές επιλογές τις οποίες πρέπει να διαχειρίζεται το πρόγραµµα σας: $ myls: Εκτελεί αντίστοιχη λειτουργία µε την εντολή ls ialr $ myls a/ b/ c/ : Εκτελεί αντίστοιχη λειτουργία µε την εντολή ls ialr a/ b/ c/ $ myls depth 2: Εκτελεί αντίστοιχη λειτουργία µε την εντολή ls ialr αλλά το βάθος διερεύνησης περιορίζεται σε δυο επίπεδα. $ myls -follow-symbolic: ο αλγόριθµος ακολουθά και τα συµβολικά αρχεία και καταλόγους. Εάν είναι κατάλογος τότε εκτυπώνει κανονικά και τα περιεχόµενα του. Σε αυτή την περίπτωση πρέπει ο αλγόριθµος σας να ελέγχει εάν ο κατάλογος έχει ήδη εκτυπωθεί έτσι ώστε να µην τον ξανά-εκτυπώσει (και ούτε να τον επεξεργαστεί περαιτέρω). Η έλεγχος αυτός πρέπει να είναι όσο το δυνατό πιο αποδοτικός γίνεται (θα θέλαµε δηλαδή να αποφύγουµε να σαρώσουµε ολόκληρη τη λίστα των προηγούµενων µονοπατιών). Σηµειώστε ότι ο αλγόριθµος διερεύνησης σε όλες τις περιπτώσεις είναι Depth-First-Search. $ myls -output traversal-log.txt: εκτυπώνει σε αρχείο µε όνοµα traversal-log.txt το depth-first-search µονοπάτι το οποίο ακολουθήθηκε από την εντολή myls µε παρόµοιο τρόπο µε το παράδειγµα που ακολουθεί././myslides/./myslides/epl371/./myslides/epl371/slide1.ppt./myslides/epl371/slide2.ppt./myslides/epl032/./myslides/epl032/intro.ppt./myslides/epl001/./exc/./exc2/./exc2/as2.doc./myfile.txt Σηµειώστε ότι η εφαρµογή σας πρέπει να υποστηρίζει οποιουσδήποτε συνδυασµούς των πιο πάνω ορισµάτων και να παράγει το αναµενόµενο αποτέλεσµα. V. Γενικοί Κανόνες 1. Το πρόγραµµα σας πρέπει να χρησιµοποιεί τεχνικές δοµηµένου προγραµµατισµού µε την χρήση συναρτήσεων, πολλαπλών αρχείων για καλύτερη δοµή του πηγαίου κώδικα, Makefile, διαχείριση λαθών συστήµατος µε την perror κτλ.; 5 από 6

2. Για την επεξεργασία των επιλογών του προγράµµατος σας θα ήταν καλό να κάνετε χρήση της βιβλιοθήκης getopt (για περισσότερες πληροφορίες man 3 getopt, όπου 3 δηλώνει C library routines ) 3. Το πρόγραµµα σας πρέπει να ελαχιστοποιεί την χρήση πόρων του συστήµατος (µνήµης, επεξεργαστή, στοίβας προγράµµατος, κτλ); 4. Το πρόγραµµα πρέπει να µειώνει όσο το δυνατό περισσότερο τον χρόνο διεκπεραίωσης της εντολής. 5. Συµβουλευτείτε τις οδηγίες του ΕΠΛ232 για συγγραφή των σχετικών ελέγχων µονάδων, διάσπαση του προγράµµατος σε πολλαπλά αρχεία, τεκµηρίωση, makefile, κτλ. Καλή Επιτυχία! 6 από 6