Presentació de conceptes i rendiment

1. Què és un sistema operatiu

Un sistema operatiu (SO) és el programari fonamental que actua d’intermediari entre el maquinari (CPU, RAM, disc) i les aplicacions de l’usuari. Sense ell, cap programa podria executar-se: el SO assigna recursos, gestiona errors i garanteix que diversos processos convisquin sense interferir-se.

Arquitectura de capes del sistema:

  • Capa 4 – Aplicacions d’usuari: Navegador, ofimàtica, jocs, terminals…
  • Capa 3 – Capa d’usuari (shell / libs): glibc, systemd, bash, X11 / Wayland…
  • Capa 2 – Kernel: Gestió processos, memòria, E/S, xarxa…
  • Capa 1 – Maquinari (hardware): CPU, RAM, GPU, disc NVMe, xarxa…

2. Components principals d’un SO

  • Kernel: Nucli del sistema. Gestiona tots els recursos en mode privilegiat. Pont entre hardware i software.
  • Gestor de processos: Crea, planifica i elimina processos. Assigna temps de CPU. Gestiona estats: actiu, bloquejat, zombie.
  • Gestor de memòria: Assigna RAM, gestiona paginació virtual, protegeix espais d’adreça i evita col·lisions entre processos.
  • Sistema de fitxers: Organitza dades al disc. Gestiona permisos, metadades, journaling i accés concurrent.
  • Pila de xarxa: Implementa TCP/IP, gestiona sockets i interfícies. A Linux: netfilter + eBPF per a filtrat avançat.
  • Controladors (drivers): Codi que parla directament amb el hardware. A Linux, la majoria es carreguen com a mòduls dinàmics.

3. Kernel: monolític modular (Linux) vs híbrid (Windows)

Concepte clau: El tipus de kernel determina com s’organitzen els serveis del SO en memòria i quina velocitat, seguretat i modularitat ofereix.

Linux — kernel monolític modular

Tot el codi del kernel (drivers, filesystem, xarxa) corre en l’espai de kernel (ring 0). Comunicació interna per crides directes a funció → mínim overhead. Drivers carregables com a mòduls (.ko) sense reiniciar. Actualitzable en calent (kpatch/livepatch) en moltes distribucions. Font: kernel.org — codi font obert i auditable.

Windows — kernel híbrid (NT Kernel)

Combina elements de kernel monolític i microkernel. Serveis com el gestor de sessió i subsistemes s’executen en user mode (ring 3). Comunicació kernel↔serveis via LPC/ALPC → latència extra per context switch. Drivers en mode kernel: un driver buggy pot causar un BSOD (Blue Screen of Death). Font: MSDN Kernel docs

4. Gestió de processos

El kernel decideix quin procés s’executa en cada moment a través de l’scheduler. Linux usa el CFS (Completely Fair Scheduler); Windows usa una cua de prioritats fix de 32 nivells.

Linux — CFS scheduler: Basat en un arbre red-black per temps d’execució virtual (vruntime). Garanteix equitat: cap procés pot monopolitzar la CPU indefinidament. Suport de cgroups per limitar recursos per grup/contenidor (Docker usa això).

Windows — Priority Queue: 32 nivells de prioritat (0-31), on processos d’alta prioritat dominen. Pot causar priority inversion i starvation en càrregues mixtes. Processos en primer pla reben boost automàtic → rendiment inconsistent.

$ cat /proc/loadavg
0.52 0.38 0.29 2/412 18743
# càrrega CPU 1min / 5min / 15min  |  processos actius/total  |  últim PID

$ ps aux –sort=-%cpu | head -5
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root       412  8.3  2.1 234512 86420 ?   Ssl  09:12   1:04 /usr/bin/python3 app.py
www-data  1024  1.2  0.8 123456 33120 ?   S    09:13   0:12 nginx: worker process
# Linux mostra en temps real l’ús de CPU per procés i fill complet de memòria
    

5. Gestió de memòria

Linux: Pàgines de 4KB amb suport d’Huge Pages (2MB/1GB). Algoritme LRU kswapd per swapping. OOM Killer configurable. Memòria cache de disc agressiva (page cache). Consum en idle: ~80-200 MB (distros lleugeres).

Windows: Pàgines de 4KB estàndard. Superfetch/SysMain precarrega en RAM el que «creu» que necessitaràs. Swap via fitxer pagefile.sys → fragmentació progressiva. Consum en idle Windows 11: ~2.5-3.5 GB.

$ free -h
               total        used        free      shared  buff/cache   available
Mem:            15Gi       1.2Gi       9.8Gi       312Mi       4.7Gi      13.9Gi
Swap:           2.0Gi          0B       2.0Gi
# Linux Ubuntu 24.04 LTS en idle: 1.2 GB d’ús real. Windows 11 en el mateix hardware: ~3 GB
    

Rellevant per a HW antic: En una màquina amb 4 GB de RAM, Linux utilitza ~15-25% en idle mentre Windows 11 en pot consumir fins al 70-80%, deixant molt poc marge per a les aplicacions.

6. Sistemes de fitxers

SistemaSOCaracterístiques
ext4LinuxEl més utilitzat. Journaling, extents, suport fins a 1 EiB. Estable.
BtrfsLinuxSnapshots en temps real, RAID integrat, checksums, compressió.
ZFSLinuxChecksums de 256-bit, deduplicació, màxima integritat de dades.
NTFSWindowsJournaling bàsic, ACLs. No suporta snapshots natius ni checksums per bloc.
FAT32 / exFATUniversalPer a USB. Sense journaling, sense permisos. Mida màx 4 GB (FAT32).
$ btrfs subvolume snapshot / /snapshots/root_$(date +%Y%m%d)
Create a snapshot of ‘/’ in ‘/snapshots/root_20250512’

$ zpool status -v tank
  pool: tank  state: ONLINE
 scan: scrub repaired 0B in 00:02:14 with 0 errors
    

7. Benchmarks comparatius (dades reals)

  • Consum de RAM en idle: Linux ~300 MB | Windows ~3.0 GB
  • Temps d’arrencada en SSD: Linux ~8 seg | Windows ~20 seg
  • Compilació C++ (GCC vs MSVC): Linux 82 pts | Windows 63 pts
  • Ús de CPU en idle: Linux ~1% | Windows ~5-8%
  • PostgreSQL queries/seg: Linux 8.820 q/s | Windows 6.710 q/s

8. Per què Linux supera Windows en hardware antic

  1. Consum de recursos mínim: Debian o Alpine poden arrencar amb menys de 128 MB de RAM.
  2. Modularitat del kernel: Es pot compilar el kernel treient el que no s’usa.
  3. Sistemes de fitxers avançats: Btrfs i ZFS ofereixen snapshots i RAID natiu.
  4. Llicència lliure i transparent: Codi GPLv2 auditable i sense telemetria obligatòria.
  5. Rendiment de servidor i cloud: El 96% dels servidors web corren Linux per eficiència.
  6. Actualitzacions sense reinici: Live patching (kpatch) evita aturar el sistema.

9. Documentació oficial i referències

 

Assistència Luca