Curs 1 - Introducere în Sistemele de Operare: Concepte Fundamentale

În acest curs vom explora conceptul de sistem de operare, arhitectura acestuia și modul în care gestionează procesele și resursele unui computer.

1. Ce este un Sistem de Operare?

Un sistem de operare (OS) este software-ul care gestionează hardware-ul și permite rularea aplicațiilor.

- Tipuri de sisteme de operare:

- Monolitic: Kernel mare care conține toate funcțiile (ex: Linux, Windows).

- Microkernel: Kernel minimalist cu funcționalități separate (ex: QNX, Minix).

- Sisteme Distribuite: Rulează pe mai multe noduri (ex: Google Fuchsia, Plan 9).

- Sisteme de Timp Real (RTOS): Optimizate pentru latență redusă (ex: FreeRTOS, VxWorks).

2. Arhitectura unui Sistem de Operare

- Kernel vs. User Space: Kernel-ul rulează în mod privilegiat, user space pentru aplicații.

- Interfața utilizatorului:

- CLI (Command Line Interface): Interacțiune prin terminal (ex: Bash, PowerShell).

- GUI (Graphical User Interface): Interfață grafică (ex: Windows Explorer, GNOME, KDE).

- Syscalls și API-uri: Comunicarea aplicațiilor cu sistemul de operare.

3. Gestionarea Proceselor și Firurilor de Execuție

Sistemele de operare folosesc diverse tehnici pentru gestionarea proceselor.

- Procese vs. Fire de execuție (Threads):

- Un proces are memorie și resurse proprii.

- Un fir de execuție (thread) partajează memoria cu alte fire din același proces.

- Scheduling: Algoritmi de planificare a proceselor (FCFS, Round Robin, Priority Scheduling).

- Inter-Process Communication (IPC): Pipe-uri, mesaje, shared memory.

4. Sisteme de Fișiere și Gestionarea Memoriei

- Structura unui sistem de fișiere:

- FAT32, NTFS: Utilizate în Windows.

- ext4, ZFS, XFS: Utilizate în Linux și BSD.

- Alocarea memoriei: RAM, Swap, Paging vs. Segmentation.

- Virtual Memory și Memory Management Unit (MMU): Extinde memoria RAM prin paginare.

5. Exemplu Practic - Explorarea Proceselor și Memoriei pe Linux

a) Listarea proceselor și utilizării memoriei

ps aux | head -10

Această comandă afișează primele 10 procese active pe sistem.

b) Monitorizarea resurselor sistemului

top

Comanda `top` afișează în timp real utilizarea CPU, memoriei și lista proceselor active.

c) Scrierea unui program în C pentru crearea unui proces nou

#include <stdio.h>
#include <unistd.h>

int main() {
    pid_t pid = fork();
    if (pid == 0) {
        printf("Proces copil cu PID: %d\n", getpid());
    } else {
        printf("Proces părinte cu PID: %d\n", getpid());
    }
    return 0;
}

Acest program creează un proces copil utilizând `fork()`.

Resurse suplimentare: