This shows you the differences between two versions of the page.
so:curs:sync [2020/04/26 20:49] razvan.deaconescu |
so:curs:sync [2020/05/04 10:56] (current) alexandru.radovici |
||
---|---|---|---|
Line 11: | Line 11: | ||
* [[http://greenteapress.com/semaphores/|Allen B. Downey - The Little Book of Semaphores]] | * [[http://greenteapress.com/semaphores/|Allen B. Downey - The Little Book of Semaphores]] | ||
* [[https://deadlockempire.github.io/|The Deadlock Empire: Slay dragons, master concurency!]] | * [[https://deadlockempire.github.io/|The Deadlock Empire: Slay dragons, master concurency!]] | ||
- | * [[http://elf.cs.pub.ro/so/res/cursuri/SO_Curs-09.pdf|Curs 09 anterior]] | ||
* Filmări | * Filmări | ||
+ | * 3CA https://web.microsoftstream.com/video/75a1f57d-0d45-4188-96ca-43e62f6f6b42 | ||
* 3CC curs 13, partea 1: https://web.microsoftstream.com/video/7457610e-0320-4434-accf-cd449fdd4e75 | * 3CC curs 13, partea 1: https://web.microsoftstream.com/video/7457610e-0320-4434-accf-cd449fdd4e75 | ||
* 3CC curs 13, partea a 2-a: https://web.microsoftstream.com/video/862388ca-ad3b-4519-a344-8a7cce246103 | * 3CC curs 13, partea a 2-a: https://web.microsoftstream.com/video/862388ca-ad3b-4519-a344-8a7cce246103 | ||
+ | * 3CC curs 14, partea 1: https://web.microsoftstream.com/video/97632417-905b-4021-a458-5277cd771d81 | ||
+ | * 3CC curs 14, partea a 2-a: https://web.microsoftstream.com/video/fb26404e-495d-4c9e-ab6b-ef28715f0486 | ||
* Resurse vechi | * Resurse vechi | ||
* [[http://elf.cs.pub.ro/so/res/cursuri/SO%20-%20Curs%2009%20-%20Sincronizare.pdf|Curs 09 - Sincronizare (PDF)]] | * [[http://elf.cs.pub.ro/so/res/cursuri/SO%20-%20Curs%2009%20-%20Sincronizare.pdf|Curs 09 - Sincronizare (PDF)]] | ||
+ | * [[http://elf.cs.pub.ro/so/res/cursuri/SO_Curs-09.pdf|Curs 09 anterior]] | ||
+ | |||
+ | * Curs CA [[https://www.slideshare.net/alexandruradovici/sisteme-de-operare-sincronizare|slideshare]] | ||
===== Demo-uri ===== | ===== Demo-uri ===== | ||
Line 111: | Line 116: | ||
Pentru a demonstra operațiile atomice și neatomice pe accesăm subdirectorul ''sum-threads/'' (x86) sau subdirectorul ''sum-threads-arm'' (ARM); urmărim fișierul ''sum_threads.c'', identic în ambele subdirectoare. În fișier sunt create ''NUM_THREADS'' thread-uri care în ''NUM_ROUNDS'' runde efectuază operația ''sum += v'', cu ajutorul macro-ului ''do_op()''. Folosim suportul compilatorului GCC și realizăm atomizarea operației ''sum += v'' cu ajutorul construcției ''%%__sync_fetch_and_add()%%''. Atunci când definim macro-ul ''USE_ATOMIC'' realizăm operația în mod atomic. | Pentru a demonstra operațiile atomice și neatomice pe accesăm subdirectorul ''sum-threads/'' (x86) sau subdirectorul ''sum-threads-arm'' (ARM); urmărim fișierul ''sum_threads.c'', identic în ambele subdirectoare. În fișier sunt create ''NUM_THREADS'' thread-uri care în ''NUM_ROUNDS'' runde efectuază operația ''sum += v'', cu ajutorul macro-ului ''do_op()''. Folosim suportul compilatorului GCC și realizăm atomizarea operației ''sum += v'' cu ajutorul construcției ''%%__sync_fetch_and_add()%%''. Atunci când definim macro-ul ''USE_ATOMIC'' realizăm operația în mod atomic. | ||
+ | |||
+ | <note important> | ||
+ | Pentru folosirea ''perf'' va trebui să instalați pachetul corespunzător versiunii de nucleu. Pe o distribuție Debian/Ubuntu, folosiți comanda: | ||
+ | <code> | ||
+ | sudo apt install linux-tools-$(uname -r) | ||
+ | </code> | ||
+ | </note> | ||
=== x86 === | === x86 === | ||
Line 595: | Line 607: | ||
Pentru a contabiliza timpul de rulare rulăm cele două executabile prin comanda ''time'':<code bash> | Pentru a contabiliza timpul de rulare rulăm cele două executabile prin comanda ''time'':<code bash> | ||
- | /usr/bin/time ./spinlock | + | /usr/bin/time -v ./spinlock |
- | /usr/bin/time ./mutex | + | /usr/bin/time -v ./mutex |
</code> | </code> | ||