This shows you the differences between two versions of the page.
so:laboratoare:laborator-05 [2020/03/19 01:06] liza_elena.babu [Exercițiul 0 - Joc interactiv] |
so:laboratoare:laborator-05 [2022/03/02 09:32] (current) teodor_stefan.dutu [Exercițiul 0 - GSOC] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Laborator 05 - Gestiunea memoriei ====== | ====== Laborator 05 - Gestiunea memoriei ====== | ||
- | ===== Materiale ajutătoare ===== | ||
- | *[[http://elf.cs.pub.ro/so/res/laboratoare/lab05-slides.pdf | lab05-slides.pdf]] | ||
- | *[[http://elf.cs.pub.ro/so/res/laboratoare/lab05-refcard.pdf | lab05-refcard.pdf]] | ||
==== Nice to read ==== | ==== Nice to read ==== | ||
Line 332: | Line 329: | ||
DIE (mat == NULL, "HeapAlloc"); | DIE (mat == NULL, "HeapAlloc"); | ||
- | for (i = 0; i < n; i++) { | + | for (i = 0; i < m; i++) { |
mat[i] = HeapAlloc(processHeap, 0, n * sizeof(**mat)); | mat[i] = HeapAlloc(processHeap, 0, n * sizeof(**mat)); | ||
if (mat[i] == NULL) { | if (mat[i] == NULL) { | ||
Line 857: | Line 854: | ||
====== Exerciții ====== | ====== Exerciții ====== | ||
+ | <note important> | ||
+ | În cadrul laboratoarelor vom folosi repository-ul de git al materiei SO - https://github.com/systems-cs-pub-ro/so. Va trebui sa clonați repository-ul pe masinile virtuale folosind comanda: ''git clone https://github.com/systems-cs-pub-ro/so''. Dacă doriți să descărcați repositoryul în altă locație, folosiți comanda ''git clone https://github.com/systems-cs-pub-ro/so ${target}''. | ||
- | ===== Linux ===== | + | Pentru a actualiza repository-ul, folosiți comanda ''git pull origin master'' din interiorul directorului în care se află repository-ul. Recomandarea este să îl actualizați cât mai frecvent, înainte să începeți lucrul, pentru a vă asigura că aveți versiunea cea mai recentă. În cazul în care gitul detectează conflicte la nivelul vreunui fişier, folosiți următoarele comenzi pentru a vă păstra modificările: |
+ | <code> | ||
+ | git stash | ||
+ | git pull origin master | ||
+ | git stash pop | ||
+ | </code> | ||
- | <note important>În rezolvarea laboratorului folosiți arhiva de sarcini [[http://elf.cs.pub.ro/so/res/laboratoare/lab05-tasks.zip | lab05-tasks.zip]]</note> | + | Pentru mai multe informații despre folosirea utilitarului git, urmați ghidul de la https://gitimmersion.com. |
+ | </note> | ||
<note tip>Pentru a vă ajuta la implementarea exercițiilor din laborator, în directorul ''utils'' din arhivă există un fișier ''utils.h'' cu funcții utile. | <note tip>Pentru a vă ajuta la implementarea exercițiilor din laborator, în directorul ''utils'' din arhivă există un fișier ''utils.h'' cu funcții utile. | ||
</note> | </note> | ||
+ | |||
+ | ==== Exercițiul 0 - GSOC ==== | ||
+ | |||
+ | Google Summer of Code este un program de vară în care studenții | ||
+ | (indiferent de anul de studiu) sunt implicați în proiecte Open Source | ||
+ | pentru a își dezvolta skill-urile de programare, fiind răsplătiți cu o | ||
+ | bursă a cărei valoare [[https://developers.google.com/open-source/gsoc/help/student-stipends|depinde de țară]] | ||
+ | ([[https://developers.google.com/open-source/gsoc|pagină principală GSOC]]). | ||
+ | |||
+ | UPB se află în top ca număr de studenți acceptați; în fiecare an fiind | ||
+ | undeva la aprox. 30-40 de studenți acceptați. | ||
+ | Vă încurajăm să aplicați! | ||
+ | |||
+ | ===== Linux ===== | ||
+ | |||
==== Exercițiul 1 - Zone de stocare a variabilelor ==== | ==== Exercițiul 1 - Zone de stocare a variabilelor ==== | ||
Intrați în directorul ''1-counter'' și implementați funcția ''inc()'' care întoarce de fiecare dată un întreg reprezentând numărul de apeluri până în momentul respectiv al funcției ''inc'' (**nu** aveți voie să folosiți variabile globale). | Intrați în directorul ''1-counter'' și implementați funcția ''inc()'' care întoarce de fiecare dată un întreg reprezentând numărul de apeluri până în momentul respectiv al funcției ''inc'' (**nu** aveți voie să folosiți variabile globale). | ||
- | |||
==== Exercițiul 2 - Spațiul de adresă al unui proces ==== | ==== Exercițiul 2 - Spațiul de adresă al unui proces ==== | ||
Line 958: | Line 977: | ||
* în funcția ''take_snapshot'' salvați în structura de date ce reține imaginea stivei câmpurile adresă și valoare. | * în funcția ''take_snapshot'' salvați în structura de date ce reține imaginea stivei câmpurile adresă și valoare. | ||
- | Ce reține structura ''stack_elements''? | + | Ce reține structura ''stack_element''? |
Funcția ''f2'' pune pe stivă un vector de 3 întregi. În ce ordine sunt puse elementele vectorului pe stivă? | Funcția ''f2'' pune pe stivă un vector de 3 întregi. În ce ordine sunt puse elementele vectorului pe stivă? | ||
Line 1042: | Line 1061: | ||
<note tip>Pentru rularea programului de test, nu uitați să exportați ''LD_LIBRARY_PATH'' (revedeți secțiunea de [[so:laboratoare-2013:laborator-01#biblioteci in linux | biblioteci partajate din laboratorul 1]])</note> | <note tip>Pentru rularea programului de test, nu uitați să exportați ''LD_LIBRARY_PATH'' (revedeți secțiunea de [[so:laboratoare-2013:laborator-01#biblioteci in linux | biblioteci partajate din laboratorul 1]])</note> | ||
- | ===== Soluții ===== | ||
- | |||
- | [[http://elf.cs.pub.ro/so/res/laboratoare/lab05-sol.zip | lab05-sol.zip]] | ||
===== Resurse utile ===== | ===== Resurse utile ===== |