---
# System prepended metadata

title: Lista 3
tags: [SO]

---

# 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.**
![](https://i.imgur.com/2hhWVtJ.png)

- 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


![](https://i.imgur.com/wtQE7BS.png)

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