This shows you the differences between two versions of the page.
so:laboratoare:laborator-10 [2019/05/02 22:13] bogdan.purcareata [Exercițiul 4 - I/O completion ports (3p)] |
so:laboratoare:laborator-10 [2022/05/10 17:40] (current) teodor_stefan.dutu [Zero-copy I/O] Replace broken link. |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Laborator 10 - Operații IO avansate - Windows ====== | ====== Laborator 10 - Operații IO avansate - Windows ====== | ||
- | ==== Materiale ajutătoare ==== | ||
- | *[[http://elf.cs.pub.ro/so/res/laboratoare/lab10-slides.pdf | lab10-slides.pdf]] | ||
- | *[[http://elf.cs.pub.ro/so/res/laboratoare/lab10-refcard.pdf | lab10-refcard.pdf]] | ||
==== Nice to read ==== | ==== Nice to read ==== | ||
Line 345: | Line 342: | ||
{{ so:laboratoare-2013:zero_copy.gif | }} | {{ so:laboratoare-2013:zero_copy.gif | }} | ||
- | Mai multe detalii, inclusiv explicarea mai pe larg a contextului, puteți găsi [[http://www.ibm.com/developerworks/library/j-zerocopy/ | aici]]. | + | Mai multe detalii, inclusiv explicarea mai pe larg a contextului, puteți găsi [[https://developer.ibm.com/articles/j-zerocopy/ | aici]]. **Atentie:** articolul folosește greșit termenul //context switch//. De fapt, este vorba de o //schimbare de privilegiu//, deoarece se face o trecere din user mode în kernel mode. |
==== TransmitFile ==== | ==== TransmitFile ==== | ||
Line 381: | Line 378: | ||
O funcție similară este funcția ''[[http://msdn.microsoft.com/en-us/library/ms740566%28v=vs.85%29.aspx |TransmitPackets]]'' care transmite date stocate în memorie pe un socket folosind cache-ul intern al sistemului de operare. Datele sunt reprezentate de o structură ''TRANSMIT_PACKETS_ELEMENT''. | O funcție similară este funcția ''[[http://msdn.microsoft.com/en-us/library/ms740566%28v=vs.85%29.aspx |TransmitPackets]]'' care transmite date stocate în memorie pe un socket folosind cache-ul intern al sistemului de operare. Datele sunt reprezentate de o structură ''TRANSMIT_PACKETS_ELEMENT''. | ||
- | ====== Exerciții de laborator ====== | + | ====== Exerciții ====== |
- | ===== Exercițiul 0 - Joc interactiv ===== | + | |
- | * Detalii desfășurare [[http://ocw.cs.pub.ro/courses/so/meta/notare#joc_interactiv|joc]]. | + | <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}''. | ||
- | ===== Windows ===== | + | 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>Înainte de a folosi o structură specifică Async I/O Win32 API, asigurați-vă că ați zero-izat-o.</note> | + | Pentru mai multe informații despre folosirea utilitarului git, urmați ghidul de la https://gitimmersion.com. |
+ | </note> | ||
- | În rezolvarea laboratorului folosiți arhiva de sarcini [[http://elf.cs.pub.ro/so/res/laboratoare/lab10-tasks.zip | lab10-tasks.zip]] | + | ===== Windows ===== |
+ | |||
+ | <note important> | ||
+ | Înainte de a folosi o structură specifică Async I/O Win32 API, asigurați-vă că ați zero-izat-o. | ||
+ | </note> | ||
==== Exercițiul 1 - Test operații asincrone ==== | ==== Exercițiul 1 - Test operații asincrone ==== | ||
Line 453: | Line 460: | ||
Compilați și rulați programul. | Compilați și rulați programul. | ||
- | ===== Soluții ===== | ||
- | [[http://elf.cs.pub.ro/so/res/laboratoare/lab10-sol.zip | Soluţii laborator 10]] |