# SO Lista 0
### zadanie 1 <!--Gut -->

<b>Hardware interrupt -></b> Asynchroniczny, w wyniku sygnału od urządzenia (nie są wywołane przez konkretną instrukcję)

<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


<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)

<b>Przykłady:</b>
<li>breakpointy</li>
<li>read (dla file),</li>
<li>fork i ogólnie syscalle inne (+ exit)</li>

<b>Wszystko co może naprawić exception handler np:</b>
<li>page fault</li>


Pułapka jest poprawnie generowana podczas np syscalla
### zadanie 2

https://en.wikipedia.org/wiki/Interrupt_vector_table
Strona 762 pdf < do dyskusji
### zadanie 3 <!--Gut -->

<b>Składowe:</b>
<li>Elf header</li>
<li>Sekcje</li>
<li>Program header</li>

<b>Sekcja -></b> posiada informacje potrzebne przy relokacji i linkowaniu
<b>Segment -></b> posiada informacje potrzebne przy urochomieniu

<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>



<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 -->






<b>Zawiera jakieś informacje potrzebne do procesu</b>

Wywołanie LD_SHOW_AUXV=1 /bin/true
definicje tych rzeczy są w docsach


<b>Jak wywołać?</b>
Przez syscalla
<b>W których rejestrach?</b>

<b>Jak zwraca błąd?</b>
Daje ujemną wartość i ERRNO
### zadanie 5 <!--Gut (?)-->


Funkcje wirtualne?
Wielowątkowość
Hardware
### zadanie 6 <!--Gut-->



### zadanie 7


<b>Coś o tym brk i przykład:</b>
https://linuxhint.com/brk-system-call-c/


UWAŻAĆ NA LINKERA
### zadanie 8 <!--Gut-->

Zwraca liczbę znaków w inpucie