HY150a Φροντιστήριο 3 24/11/2017

Σχετικά έγγραφα
Φροντιςτήριο. Linked-List

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

Η γλώσσα προγραμματισμού C Δυναμική διαχείριση μνήμης

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

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης (Κεφάλαιο , KNK-2ED)

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

Διάλεξη 9: Δυναμική Δέσμευση Μνήμης

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

Διάλεξη 13η: Δυναμική Διαχείρηση Μνήμης, μέρος 1

ΗΥ-150. Προγραμματισμός

Διαδικασιακός Προγραμματισμός

ΗΥ-150 Programming. Assignment 3. HY150 Programming, University of Crete

Αρχεία & Ρεύματα ΑΡΧΕΙΑ & ΡΕΥΜΑΤΑ. Γεώργιος Παπαϊωάννου ( ) gepap@aueb.gr

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

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Φροντιστήριο 4 Σκελετοί Λύσεων

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

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

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

Προγραμματισμός Υπολογιστών με C++

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

Διάλεξη 2: Επανάληψη Προγραμματισμού Συμβολοσειρές (strings) Διδάσκων: Παναγιώτης Ανδρέου

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

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ

ΔΕΙΚΤΕΣ ΚΑΙ ΔΙΕΥΘΥΝΣΕΙΣ

CS 150 Assignment 2. Assignment 2 Overview Opening Files Arrays ( and a little bit of pointers ) Strings and Comparison Q/A

Αναφορές, είκτες και Αλφαριθμητικά

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

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

Lab 1: C/C++ Pointers and time.h. Panayiotis Charalambous 1

Μεταφραστής (Compiler)

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

Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα

Lab 1: C/C++ Pointers and time.h. Panayiotis Charalambous 1

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Δομές Δεδομένων & Αλγόριθμοι

Μετατροπή χαρακτήρων ASCII σε αριθμό (atoi) & διάβασμα, και αποθήκευση του περιεχομένου του στη μνήμη. (Διάλεξη. Πανεπιστήμιο Κύπρου

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

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

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

ΗΥ-150. Προγραμματισμός

Φροντιστήριο 4 Σκελετοί Λύσεων

ΗΥ-150. Προγραµµατισµός. υναµική ιαχείριση Μνήµης (1/2)

Ιδιοκτησία Αντικειµένου

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

Κατανεμημένα Συστήματα. Javascript LCR example

Προγραμματισμός Δομές Δεδομένων

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

ΠΡΟΗΓΜΕΝΟΙ ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ PROJECT 2: MEMORY MANAGEMENT

Συµβολοσειρές - Strings

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

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

Streams Input / Output in C++ George Kastrinis

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

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

Πληροφορική & Τηλεπικοινωνίες K25 Ανάπτυξη Λογισμικού Εαρινό Εξάμηνο 2008 Καθηγητής Γιάννης Ιωαννίδης. Μέρος 2ο: Επίπεδο Ευρετηρίου Β+ Δένδρων

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

Σημειώσεις έκτης και έβδομης εβδομάδας

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

Περίληψη Φροντιστηρίου. Κατανεμημένα Συστήματα Ι. Το περιβάλλον DAP - Χαρακτηριστικά. Το περιβάλλον DAP Τι είναι.

17TimeThis.h function returns reference pointer to same object { return *this; }

2 η Διάλεξη C++ Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής

ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ - ΣΗΜΕΙΩΣΕΙΣ

Διάλεξη 8η: Αλφαριθμητικά (strings)

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT

Προγραμματισμός Υπολογιστών με C++

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

Η γλώσσα προγραμματισμού C

ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Πέρασμα παραμέτρων, συναρτήσεις δόμησης και αποδόμησης

Συναρτήσεις και Πίνακες

Στοιχειώδης προγραμματισμός σε C++

Προγραµµατισµός Ι Αλφαριθµητικά Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Προγραµµατισµός Ι 1 Νικόλαος Δ.

Συμβολοσειρές Ορίσματα στη main()

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

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

ΗΥ-150. Προγραµµατισµός. Αλφαριθµητικά (Strings)

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

Συναρτήσεις διαχείρισης αλφαριθμητικών

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

ΠΛΗ111. Ανοιξη Μάθηµα 1 ο Ανασκόπηση της Γλώσσας Προγραµµατισµού C. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Physical DB Design. B-Trees Index files can become quite large for large main files Indices on index files are possible.

C: Από τη Θεωρία στην Εφαρμογή

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

Διαδικασίες ΙI. ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι. Διάλεξη 5

Η γλώσσα C. Δείκτες (pointers)

Συμβολοσειρές ΣΥΜΒΟΛΟΣΕΙΡΕΣ. Γεώργιος Παπαϊωάννου ( )

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

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

Προγραμματιστικές Τεχνικές

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

ΗΥ-150. Προγραμματισμός

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

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

ΗΥ-150. Προγραμματισμός

Transcript:

HY150a Φροντιστήριο 3 24/11/2017 1

Assignment 3 Overview Το πρόγραμμα ζητείται να διαβάζει μια λίστα δεδομένων που περιγράφει τα διαθέσιμα τμήματα μνήμης (blocks) ενός ΗΥ. Το πρόγραμμα ζητείται να μεταφορτώνει μια μικρή βάση δεδομένων από αρχείο να την παρουσιάζει στο χρήστη να του δίνει τη δυνατότητα να την επεξεργάζεται να την αποθηκεύει για μεταγενέστερη χρήση Για την αναπαράσταση και της δομής δεδομένων μπορείτε να χρησιμοποιήσετε το C/C++ struct για την δημιουργία μιας λίστας 2

Assignment 3 Overview Η αναπαράσταση των διαθέσιμων τμημάτων(block) μνήμης έχει την εξής μορφή: int blockid; // id του συγκεκριμένου block (1,2,3,...,Ν) int blocksize; // το μέγεθος των διαθέσιμων bytes του συγκεκριμένου block bool allocated; // διαθεσιμότητα του συγκεκριμένου block (true Ή false) string processname; // το όνομα της διεργασίας που καταλαμβάνει το συγκεκριμένο block int processsize; // εάν το συγκεκριμένο block είναι κατειλημμένο, το μέγεθος των bytes της διεργασίας που το καταλαμβάνει (<= blocksize) 3

Assignment 3 Overview Το πρόγραμμα ζητείται να εμφανίζει μια γραμμή εντολών (command prompt) με την οποία ο χρήστης θα μπορεί να δίνει εντολές για τη διαχείριση της δομής δεδομένων. Οι εντολές που ζητείται να μπορούν να δοθούν στη γραμμή εντολών είναι: mread filename print pread [process1-name, process1-size,..., processn-name, processn-size,] insert [blockid,blocksize] ff free processname delete blockid save quit 4

mread filename Ανάγνωση του αρχείου με όνομα filename και αναπαράσταση των στοιχείων του σε μία λίστα δεδομένων. Π.χ. mread MemBlock.txt Sample File MemBlock.txt 1,600,false,NULL,0 2,250,false,NULL,0 3,280,false,NULL,0 4,390,false,NULL,0... N,1250,false,NULL,0 Example 1,600,false,NULL,0 blockid = 1; blocksize = 600; allocated = false; processname = NULL; processsize = 0; 5

File I/O #include <iostream> #include <fstream> using namespace std; http://www.cplusplus.com/doc/tutorial/files / 6

print Εκτύπωση των στοιχείων της δομής με την μορφή [blockid], [allocated], [blocksize], [processname], [processsize] Example >print [1],[600],[false],[NULL],[0] [2],[250],[false],[NULL],[0] [3],[280],[false],[NULL],[0] [4],[390],[false],[NULL],[0]... [N],[250],[false],[NULL],[0] 7

pread [process1-name, process1-size,.., processn-name, processn-size,] Δήλωση ονομάτων και μεγεθών των διεργασιών που πρέπει να φορτωθούν στη δομή. Π.χ pread p1 100 p2 300 p3 250!!!Ο χρήστης μπορεί να δηλώσει όσες διεργασίες θέλει!!!κάθε νέα εντολή pread ακυρώνει την προηγόυμενη Μπορείτε να αποθηκεύσετε τις μεταβλητές της εντολής pread σε όποια μεταβλητή/δομή θέλετε 8

insert [blockid,blocksize] Χειροκίνητη εισαγωγή ενός νέου καινούργιου block στη λίστα. Π.χ insert 6 450 Δημιουργία ενος νέου κόμβου με στοιχεία blockid=6 blocksize=450 allocated=false processname=null processsize=0 και εισαγωγή στην λίστα 9

ff //First-Fit algorithm Μεταφόρτωση των δηλωμένων διεργασιών στη δομή χρησιμοποιώντας τον αλγόριθμο first-fit. Σε περίπτωση που μια διεργασία δεν μπορεί να φορτωθεί, διότι δεν υπάρχει κατάλληλο block από τα διαθέσιμα, τότε θα πρέπει να δεσμευτεί ένα νέο block από το αδιάθετο τμήμα μνήμης. Το block αυτό ζητείται να έχει blocksize ίσο με το size της διεργασίας για την οποία γίνεται η αίτηση. 10

First-Fit Example Εισαγωγή στο πρώτο διαθέσιμο block με block->processsize >=process-size 11

free processname Απελευθέρωση του block μνήμης το οποίο περιλαμβάνει την διεργασία με όνομα processname. Μετά την απελευθέρωση, το συγκεκριμένο block μπορεί να χρησιμοποιηθεί για την δέσμευση καινούργιας διεργασίας. Κατά την εκτέλεση της εντολής θα πρέπει να ενημερώνονται κατάλληλα οι τιμές των μεταβλητών allocated, processname, processsize του block. 12

More commands delete blockid Διαγραφή του block μνήμης με το συγκεκριμένο blockid από την δομή save Αποθήκευση της δομής στο αρχείο NewMemblocks.txt quit Τερματισμός προγράμματος 13

bf // Best-Fit Algorithm (Bonus 20%) Φόρτωση των διεργασιών στη δομή χρησιμοποιώντας τον αλγόριθμο bestfit. Ο αλγόριθμος best-fit βρίσκει το μικρότερο δυνατό Block το οποίο να μπορεί να αποθηκεύσει την συγκεκριμένη διεργασία Hint1: Ταξινομηση της λίστας Hint2: Εισαγωγή των κόμβων στη λίστα με βάση το processsize 14

Useful Functions void *malloc(size_t size); The malloc() function allocates size bytes and returns a pointer to the allocated memory.the memory is not initialized. void free(void *ptr); The free() function frees the memory space pointed to by ptr, which must have been returned by a previous call to malloc(), calloc() or realloc(). Otherwise, if free(ptr) has already been called before, undefined behavior occurs. malloc and free are defined in the header <cstdlib> (known as <stdlib.h> in C) 15

Useful Functions char *strcpy(char *dest, const char *src); The strcpy() function copies the string pointed to by src, including the terminating null byte ('\0'), to the buffer pointed to by dest int strcmp(const char *s1, const char *s2); The strcmp() function compares the two strings s1 and s2. It returns an integer less than, equal to, or greater than zero if s1 is found, respectively, to be less than, to match, or be greater than s2 16

Structs 17

Questions? 18