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
| Sistema | SO | Característiques |
|---|---|---|
| ext4 | Linux | El més utilitzat. Journaling, extents, suport fins a 1 EiB. Estable. |
| Btrfs | Linux | Snapshots en temps real, RAID integrat, checksums, compressió. |
| ZFS | Linux | Checksums de 256-bit, deduplicació, màxima integritat de dades. |
| NTFS | Windows | Journaling bàsic, ACLs. No suporta snapshots natius ni checksums per bloc. |
| FAT32 / exFAT | Universal | Per 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
- Consum de recursos mínim: Debian o Alpine poden arrencar amb menys de 128 MB de RAM.
- Modularitat del kernel: Es pot compilar el kernel treient el que no s’usa.
- Sistemes de fitxers avançats: Btrfs i ZFS ofereixen snapshots i RAID natiu.
- Llicència lliure i transparent: Codi GPLv2 auditable i sense telemetria obligatòria.
- Rendiment de servidor i cloud: El 96% dels servidors web corren Linux per eficiència.
- Actualitzacions sense reinici: Live patching (kpatch) evita aturar el sistema.
9. Documentació oficial i referències
- kernel.org — Font del kernel Linux
- Documentació oficial kernel.org
- MSDN — Windows Kernel
- Btrfs documentation
- OpenZFS docs