---
# System prepended metadata

title: SO Lista 0

---

# 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

