# SO Lista 0 ### zadanie 1 <!--Gut --> ![](https://i.imgur.com/GWKeoY6.png) <b>Hardware interrupt -></b> Asynchroniczny, w wyniku sygnału od urządzenia (nie są wywołane przez konkretną instrukcję) ![](https://i.imgur.com/RM0BaI1.png) <b>Przykłady:</b> <li>kliknięcie przycisku na klawiaturze</li> <li>ruszenie myszką</li> <li>input z tableta graficznego</li> <b> Exception -> </b> Synchroniczny, trochę hardware trochę OS ale nie z powodu usera ![](https://i.imgur.com/PUqylL9.png) ![](https://i.imgur.com/5EWI0Ft.png) <b>Przykłady:</b> <li>divide error (dzielenie przez zero)</li> <li>seg fault (problem z pamięcią)</li> <li>page fault (tam z aska było) </li> <b>Trap -></b> Synchroniczny, zrobiony umyślnie i w wyniku wykonaniu instrukcji (ale ma kernel mode a nie user mode jak zwykła funkcja) ![](https://i.imgur.com/8AoH1Yt.png) <b>Przykłady:</b> <li>breakpointy</li> <li>read (dla file),</li> <li>fork i ogólnie syscalle inne (+ exit)</li> ![](https://i.imgur.com/ObqFr9L.png) <b>Wszystko co może naprawić exception handler np:</b> <li>page fault</li> ![](https://i.imgur.com/Gg8q7q2.png) ![](https://i.imgur.com/ajxLP6j.png) Pułapka jest poprawnie generowana podczas np syscalla ### zadanie 2 ![](https://i.imgur.com/UhSKdrH.png) https://en.wikipedia.org/wiki/Interrupt_vector_table Strona 762 pdf < do dyskusji ### zadanie 3 <!--Gut --> ![](https://i.imgur.com/y9TAozj.png) <b>Składowe:</b> <li>Elf header</li> <li>Sekcje</li> <li>Program header</li> ![](https://i.imgur.com/KYeRz1w.png) <b>Sekcja -></b> posiada informacje potrzebne przy relokacji i linkowaniu <b>Segment -></b> posiada informacje potrzebne przy urochomieniu ![](https://i.imgur.com/9um0Xjz.png) <b>Nagłówki:</b> <li>typ</li> <li>offset</li> <li>adres wirtualny</li> <li>adres fizyczny</li> <li>rozmiar</li> <li>flagi</li> <li>allign</li> ![](https://i.imgur.com/M92YfIJ.png) ![](https://i.imgur.com/kSlqUEj.png) ![](https://i.imgur.com/uRxGC87.png) <b>Skąd wie pod jakim adresem i gdzie pierwsza instrukcja</b> Dzięki virtual addres a pierwsza jest entry point address ### zadanie 4 <!--Gut --> ![](https://i.imgur.com/GkDDyt2.png) ![](https://i.imgur.com/vxJ840D.png) ![](https://i.imgur.com/M4PxrPJ.png) ![](https://i.imgur.com/rVrVpNz.png) ![](https://i.imgur.com/2r1RzzD.png) ![](https://i.imgur.com/SPI5Yut.png) <b>Zawiera jakieś informacje potrzebne do procesu</b> ![](https://i.imgur.com/rIsQ6qj.png) Wywołanie LD_SHOW_AUXV=1 /bin/true definicje tych rzeczy są w docsach ![](https://i.imgur.com/v5CDD7B.png) ![](https://i.imgur.com/qa4vuxf.png) <b>Jak wywołać?</b> Przez syscalla <b>W których rejestrach?</b> ![](https://i.imgur.com/NmDW4Y4.png) <b>Jak zwraca błąd?</b> Daje ujemną wartość i ERRNO ### zadanie 5 <!--Gut (?)--> ![](https://i.imgur.com/FvqQChc.png) ![](https://i.imgur.com/8aJHN6h.png) Funkcje wirtualne? Wielowątkowość Hardware ### zadanie 6 <!--Gut--> ![](https://i.imgur.com/8BnwE9c.png) ![](https://i.imgur.com/uaeeUIi.png) ![](https://i.imgur.com/KBQt5zj.jpg) ### zadanie 7 ![](https://i.imgur.com/epBjvWH.png) ![](https://i.imgur.com/WsciaFG.png) <b>Coś o tym brk i przykład:</b> https://linuxhint.com/brk-system-call-c/ ![](https://i.imgur.com/3BeXqcT.png) ![](https://i.imgur.com/1ugStij.png) UWAŻAĆ NA LINKERA ### zadanie 8 <!--Gut--> ![](https://i.imgur.com/7Byxrpb.png) Zwraca liczbę znaków w inpucie