Mario Fernández Gálvez
Presentació de conceptes i rendiment

Presentació de conceptes i rendiment

Sistemes Operatius — Linux vs Windows

Sistemes operatius & Linux vs Windows

Com funciona un SO per dins i per què Linux el supera tècnicament

Kernel monolític modular Gestió de processos Sistemes de fitxers Benchmarks reals

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.

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

Clica cada capa per veure més detalls

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
Linux — kernel monolític modular Ring 0 — espai de kernel Scheduler Mem. Mgr VFS Net stack mod_wifi.ko ext4.ko btrfs.ko nvidia.ko Ring 3 — processos d’usuari (bash, app, daemon) Windows — kernel híbrid (NT) Ring 0 — NT Kernel + HAL Executive Drivers HAL Win32k Ring 3 — User mode services smss.exe · csrss.exe · lsass.exe · winlogon.exe LPC/ALPC Ring 3 — aplicacions (explorer.exe, chrome…)

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ò).
  • Latència configurable via /proc/sys/kernel/sched_*.
  • Comanda: top, htop, ps aux, perf.

🪟 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.
  • Gestió limitada de recursos per contenidor (sense cgroups natius fins a WSL2).
  • Eina: Task Manager, Resource Monitor, ProcMon (Sysinternals).
$ 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 — gestió de memòria

  • Pàgines de 4KB amb suport d’Huge Pages (2MB/1GB) per reducció de TLB misses.
  • Algoritme LRU kswapd per decisió de swapping basada en pressió de memòria.
  • OOM Killer configurable: tria quin procés eliminar en cas d’escassetat (veure /proc/PID/oom_score).
  • Memòria cache de disc aggressiva (page cache) que Linux allibera quan les aplicacions ho necessiten.
  • Consum en idle: ~80-200 MB (distros lleugeres).

🪟 Windows — gestió de memòria

  • Pàgines de 4KB estàndard, Large Pages requereix permisos explícits (SeLockmemory).
  • Superfetch/SysMain: precarrega en RAM el que «creu» que necessitaràs → consum base elevat.
  • Swap via fitxer pagefile.sys de mida dinàmica → fragmentació progressiva.
  • Processos del sistema en segon pla (antivirus, WMI, telemetria) consumeixen RAM constant.
  • 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

Linux suporta nativamente molts sistemes de fitxers avançats, mentre Windows es limita principalment a NTFS i exFAT/FAT32.

ext4 (Linux)

El més utilitzat a Linux. Journaling, extents, timestamps nanosegons, suport fins a 1 EiB.

EstableJournaling
Btrfs (Linux)

Snapshots en temps real, RAID integrat, checksums per bloc, compressió transparent (zstd). Usat per defecte a Fedora.

SnapshotsRAID swChecksums
ZFS (Linux via OpenZFS)

Checksums de 256-bit per cada bloc, deduplicació, compressió, RAID-Z. Dissenyat per a integritat de dades absolutament.

Integritat màx.Dedup
NTFS (Windows)

Journaling bàsic, ACLs, compressió limitada. No suporta snapshots natius ni checksums per bloc.

JournalingSense checksums
FAT32 / exFAT

Format universal per a USB i interoperabilitat. Sense journaling, sense permisos, mida màx. de fitxer 4 GB (FAT32).

Sense journalingSense permisos
$ btrfs subvolume snapshot / /snapshots/root_$(date +%Y%m%d)
Create a snapshot of ‘/’ in ‘/snapshots/root_20250512’
# Btrfs: snapshot instantani del sistema complet, sense còpia real de dades (copy-on-write)

$ zpool status -v tank
pool: tank state: ONLINE
scan: scrub repaired 0B in 00:02:14 with 0 errors
config: NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
raidz1 ONLINE 0 0 0
# ZFS verifica la integritat de tot el pool periòdicament (scrub). NTFS no té equivalent natiu.

7 Benchmarks comparatius (dades reals)

Resultats representatius de benchmarks publicats per Phoronix Test Suite i altres fonts, en maquinari comparable de gamma mitjana/baixa.

Consum de RAM en idle (menys = millor)Ubuntu 24.04 vs Windows 11
Linux
~300 MB
Windows
~3.0 GB
Temps d’arrencada en SSD (menys = millor)Kernel 6.x vs Windows 11
Linux
~8 seg
Windows
~20 seg
Rendiment en compilació C++ — GCC vs MSVC (més = millor)Phoronix benchmark
Linux
82 pts
Windows
63 pts
Ús de CPU en idle (menys = millor)Processos de fons
Linux
~1%
Windows
~5-8%
Rendiment PostgreSQL queries/seg (més = millor)Phoronix PTS pgbench
Linux
8.820 q/s
Windows
6.710 q/s

Fonts: Phoronix Test Suite (phoronix.com/benchmark/), Linux Kernel Mailing List benchmarks, Microsoft Tech Community. Valors aproximats; els resultats exactes varien segons maquinari i configuració.

8 Per què Linux supera Windows en hardware antic

💡
Consum de recursos mínim

Una instal·lació de Debian o Alpine Linux pot arrencar amb menys de 128 MB de RAM. Ideal per a PCs de 10+ anys amb 2-4 GB que Windows 11 no pot ni instal·lar.

🧩
Modularitat del kernel

Pots compilar el kernel sense mòduls innecessaris (sistema de fitxers que no uses, drivers d’hardware absent). Windows no permet aquesta adaptació: el kernel NT inclou tot sense excepcions.

📂
Sistemes de fitxers avançats (Btrfs, ZFS)

Btrfs i ZFS ofereixen snapshots, checksums i RAID software sense programari de tercers. Windows depèn de solucions propietàries per a funcions equivalents (Storage Spaces, que és menys madur).

🔓
Llicència lliure i transparent

El kernel Linux és GPLv2: qualsevol pot auditar, modificar i redistribuir el codi. No hi ha serveis de telemetria obligatoris que consumeixin CPU/xarxa en segon pla com a Windows.

Rendiment de servidor i cloud

El 96% dels servidors web del món corren Linux (Netcraft 2024). AWS, Google Cloud i Azure usen kernels Linux per als seus hypervisors. La causa és tècnica: menys overhead, millor gestió de xarxa (io_uring, eBPF), millor escalabilitat.

🔄
Actualitzacions sense reinici (live patching)

Kpatch i livepatch permeten aplicar pegats de seguretat al kernel sense aturar el sistema. Crític en servidors de producció. Windows requereix reinici per a la majoria de pedaços del kernel.