# 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