# Lista 3
###### tags: `SO`
## Zadanie 1
**osierocony** - proces który stracił rodzica
Nowym rodzicem procesu `sleep` został `systemd`.
Proces pierwszoplanowy otrzymuje `SIGHUP`, a reszta procesów pozostaje bez zmian.
## Zadanie 2
**Jak zachowuje się sterownik terminala działającego
w trybie kanonicznym?**
Przetwarza on dane w jednostce linii, która kończy się znakiem newline '\n', EOF lub EOL. Co oznacza, że wyjście nie zostanie zwrócone, dopóki nie zakończy się linia lub nie zostanie wysłany sygnał
**Wytłumacz w jaki sposób przetwarza on znaki (w tym kody sterujące) wchodzące do kolejki wejściowej i kolejki wyjściowej.**

- wczytuje znak
- sprawdza, czy nie przekroczono limitu
- (przy włączonym echo) wypisuje go
- po wpisaniu linii przetwarza ją
- jeśli znak jest specjalny wykonuje odpowiednią mu akcję
np.
ERASE - usuwa ostatni znak
KILL - usuwa całą linię
EOF, EOL, NL - kończą linię
SUSP - zatrzymuje proces pierwszoplanowy
**Jak konfigurację terminala
powinien zmienić program na czas wpisywania hasła przez użytkownika?**
Wyłączać echo, aby nie było widać wpisywanego hasła.
**Czemu edytory takie jak vi(1)
konfigurują sterownik terminala do pracy w trybie niekanonicznym?**
Vi działa w trybie niekanonicznym, aby umożliwić użytkownikowi używanie skrótów klawiszowych np. cmd + C
## Zadanie 3
Zarządzanie zadaniami:
- Ctrl + Z
- Ctrl + S
- Ctrl + U
- Ctrl + C
- Ctrl + D
Edycja wiersza:
- Ctrl + R
- Ctrl + W
- Ctrl + O
- Ctrl + Q
- Ctrl + V
Informacja jest wysyłana sygnałem `SIGWINCH`. Rozmiar okna jest trzymany w strukturze wewnątrz jądra i można go uzyskać przy pomocy procedury `TIOCGWINSZ`
## Zadanie 4

**Czemu w tym przypadku
zachowanie programu «cat» jest inne niż powłoki poleceń?**
Terminal rozumie tylko znaki, a nie klawisze (poza kilkoma wyjątkami).
## Zadanie 5
1. `SIGCONT`
2. Powody historyczne. ^S mówi "przestań na chwilę pisać", a ^Q - "kontynuuj pisanie".
3. Otrzymało sygnał `SIGTTIN`. Otrzymuje go każdy proces, który działa w tle i chce czytać z terminala.
4. Po włączeniu tej flagi programy działające w tle nie mogą pisać na standardowe wyjście.
5. Wyłącza wyświetlanie przyciśnięcia klawiszy ctrl + _ jako ^_. W `cat` przetwarza przyciśnięcia natychmiastowo, a nie po zakończeniu linii.
## Zadanie 6
`Setjmp` zapisuje stan rejestrów na stosie.
`Longjmp` przywraca stan rejestrów i wraca w miejsce zakończenia `Setjmp`.
**Dlaczego «Jmpbuf» nie przechowuje wszystkich rejestrów procesora?**
Ponieważ zachowuje jedynie te rejestry, które inne funkcje mogą modyfikować bez przywracania do stanu pierwotnego (odpowiedzialność wołającego i wołanej)
**Czemu «Longjmp» zapisuje na stos wartość przed wykonaniem instrukcji «ret»?**
Ponieważ jest to wskaźnik na instrukcję, do której powinien wrócić.
## Zadanie 7
## Zadanie 8