Lab


# 🧠 Zestaw zagadnień omawianych w ramach przedmiotu Dodałem emoji, ale tylko jedno. Obiecuję, że na egzaminie będzie więcej. ## 1. Wprowadzenie do systemów operacyjnych - definicja systemu operacyjnego - warstwy w systemie (user/kernel/hardware) - podstawowe komponenty: kernel, shell, interfejs użytkownika ## 2. Struktura systemu Linux - katalog `/` i jego podkatalogi - rola `/proc`, `/dev`, `/bin`, `/etc`, itp. - różnice między użytkownikiem a superuserem ## 3. Bash i praca z CLI - podstawowe polecenia bash (`ls`, `cd`, `echo`, `ps`, `kill`, `top`) - przekierowania, potoki, zmienne środowiskowe - skrypty bash i argumenty ## 4. Jądro systemu operacyjnego (Kernel) - funkcje jądra (zarządzanie pamięcią, procesami, I/O) - tryby (user ↔ kernel) ## 5. Architektury jądra systemu - monolityczne, mikrojądra, hybrydowe ## 6. Procesy - pojęcie procesu i jego cykl życia - fork, exec, wait, exit - PID, PPID, status procesu - tworzenie, oczekiwanie, zabijanie procesów - zombie i orphan processes ## 7. Wątki i POSIX Threads - różnice: proces vs wątek - `pthread_create`, `pthread_join`, `pthread_exit` - wielowątkowość i jej zastosowania ## 8. Synchronizacja - pojęcie wyścigu (race condition) - mutex (`pthread_mutex_t`) - semafor (`sem_t`, `sem_init`, `sem_wait`, `sem_post`) ## 9. Zarządzanie procesami przez planistę - planowanie procesów - `nice`, `renice` ## 10. Komunikacja międzyprocesowa (IPC) - potoki (`pipe()`) - gniazda (`socketpair()`, `socket()`) - pamięć dzielona (`shm_open`, `mmap`, `munmap`) - semafory jako synchronizacja IPC ## 11. Obsługa plików w C - `fopen`, `fclose`, `fscanf`, `fprintf`, `fgetc`, `fgets`, `fputs` - `fwrite` i `fread` – operacje na danych binarnych - błędy przy otwieraniu plików, EOF ## 12. Sygnały - `signal()`, `kill()`, `SIGINT`, `SIGKILL` - obsługa sygnałów i ich użycie w kontroli procesów ## 13. Tworzenie demonów - `fork()`, `setsid()`, `umask()`, `chdir("/")`, `close()` - demonizacja procesu krok po kroku - pojęcie sesji i grupy procesów ## 14. Zarządzanie pamięcią *(częściowo wspomniane)* - `malloc`, `free`, `brk`, `mmap` - segmenty pamięci ## 15. Bootloader - rola bootloadera - kodowanie pierwszego sektora (MBR) - przejście z trybu real mode do protected mode - ładowanie jądra do pamięci ## 16. GDT – Global Descriptor Table - struktura GDT: segment code/data, TSS - ustawianie rejestrów segmentowych - różnice między trybem real a protected