Ja saps què és un sistema operatiu, d'on ve i de quins tipus n'hi ha. Toca ara obrir la caixa i veure què fa exactament. Aquesta lliçó és el mapa de la resta del curs: cada gran funció que hi vegis correspon a un o diversos mòduls posteriors, i la veuràs aplicada a una situació concreta de Meteora. Però l'objectiu no és que et quedis amb una llista de set funcions soltes, perquè a la realitat no actuen mai per separat: atendre una sola petició HTTP a meteo-api mobilitza totes en qüestió de mil·lisegons. Per això tancarem seguint el cicle de vida complet d'una petició, de cap a cap, per veure com cooperen.
Contingut
- Gestió de processos i del processador
- Gestió de memòria
- Gestió de l'emmagatzematge i de fitxers
- Gestió de dispositius i d'entrada/sortida
- Gestió de la xarxa
- Protecció i seguretat
- Interfície d'usuari: shell i entorn gràfic
- Totes alhora: cicle de vida d'una petició a
meteo-api
Gestió de processos i del processador
Què fa. Crear processos, destruir-los, suspendre'ls, reprendre'ls, mantenir informació de cadascun i decidir quin d'ells ocupa la CPU a cada instant. El sistema manté per a cada procés una estructura de control (a Linux, task_struct) amb el seu identificador, el seu estat, els seus registres desats, la seva taula de fitxers oberts, el seu usuari propietari i les seves estadístiques de consum.
Per què és difícil. Perquè meteo-01 té 4 nuclis i, en un moment qualsevol, 300 processos. Hi ha 300 candidats per a 4 places, i la decisió s'ha de prendre milers de vegades per segon, en microsegons, sense conèixer el futur i sense afavorir sistemàticament ningú.
A Meteora. Quan agregador engega el seu càlcul de les 02:30, consumeix un nucli sencer durant 20 segons. Si el sistema no hi intervingués, meteo-api quedaria sense CPU durant aquest temps i tots els clients veurien temps d'espera. El que passa en realitat és que el planificador apropia agregador cada pocs mil·lisegons i dona pas a meteo-api tan bon punt arriba una petició.
PID NI PRI STAT ETIMES COMMAND 1099 0 19 S 864320 ingestor 1102 0 19 Sl 864318 meteo-api 1841 10 9 R 14 agregador
Interpretació columna a columna:
NIés el valor nice: la cortesia del procés, de −20 (prioritat màxima) a +19 (mínima).agregadorté10, cosa que significa que s'ha arrencat deliberadament amb prioritat baixa perquè no molesti el servei.PRIés la prioritat efectiva calculada pel nucli.STATés l'estat:Ssignifica sleeping (bloquejat esperant alguna cosa, típicament E/S),Rrunning o llest per executar-se, i laldeSlindica que el procés té diversos fils.ETIMESsón els segons transcorreguts des que va arrencar.ingestorimeteo-apifa 864.320 segons (10 dies) que corren;agregadoracaba de començar.
Fixa't en el patró: els dos serveis permanents estan adormits gairebé tot el temps, esperant xarxa. agregador s'està executant. Aquest perfil (S per a serveis, R per a feines de càlcul) és el primer que es mira quan es diagnostica un servidor.
On es desenvolupa. Gestió de Processos i Planificació de la CPU. La concurrència entre processos i fils ocupa el mòdul 3 sencer.
Gestió de memòria
Què fa. Decidir què hi ha a la RAM i on, assignar i alliberar memòria als processos, donar a cadascun un espai d'adreces privat, i fer que hi càpiga més del que físicament hi ha.
Per què és difícil. La RAM és un recurs escàs, indivisible en la seva forma física i compartit per tothom. Tres exigències entren en conflicte: que els processos no es trepitgin, que s'aprofiti cada byte, i que tot això no costi temps.
A Meteora. meteo-api té un consum curiós que convé entendre:
VSZ(Virtual Size) són els KB d'espai d'adreces virtual: 1.284.560 KB, uns 1,2 GB.RSS(Resident Set Size) són els KB que realment ocupen RAM física: 47.320 KB, uns 46 MB.
La diferència és de 27 vegades, i no és cap error. meteo-api ha reservat espai d'adreces per a moltes coses (biblioteques compartides, regions mapades, piles dels seus fils) que no està fent servir ara mateix, i el sistema no li ha donat memòria física per a elles. El sistema lliura memòria física només quan el procés toca de debò aquestes adreces. Aquest mecanisme, l'assignació mandrosa, és la raó que a meteo-01 amb 8 GB de RAM hi puguin conviure processos la suma de VSZ dels quals supera els 20 GB.
Un error de principiant molt car: alarmar-se pel VSZ. La columna que importa per saber si et quedes sense memòria és RSS, i ni tan sols aquesta del tot, perquè part de la memòria resident són biblioteques compartides comptabilitzades en diversos processos alhora.
On es desenvolupa. Gestió de Memòria i Memòria Virtual i Paginació.
Gestió de l'emmagatzematge i de fitxers
Què fa. Convertir un dispositiu que només entén de blocs numerats en un arbre de directoris amb fitxers que tenen nom, mida, dates, propietari i permisos. A més: assignar espai, gestionar l'espai lliure, mantenir la coherència davant d'un tall de llum i desar a la memòria cau de la RAM el que s'ha llegit recentment.
Per què és difícil. Perquè el disc no sap res de fitxers. Un SSD ofereix una seqüència de blocs de 4 KB numerats del 0 al que sigui. Tota la resta —noms, jerarquia, permisos, la noció mateixa de «fitxer»— és una estructura de dades que el sistema operatiu construeix a sobre i ha de mantenir coherent encara que la màquina s'apagui en el pitjor moment possible.
A Meteora. Els fitxers diaris de lectures viuen a /var/lib/meteora/lectures/:
-rw-r----- 1 meteora meteora 17M ago 29 23:59 2026-08-29.dat -rw-r----- 1 meteora meteora 17M ago 30 23:59 2026-08-30.dat -rw-r----- 1 meteora meteora 12M ago 31 16:42 2026-08-31.dat Sist. fitxers Mida Usat Disp Ús% Muntat a /dev/sda2 200G 118G 72G 63% /var
Què ens diu això:
ls -lhmostra el llistat llarg amb mides llegibles (-h). El fitxer d'avui té 12 MB perquè el dia encara no s'ha acabat: creix a raó d'uns 24 bytes per lectura rebuda.- Els permisos
-rw-r-----signifiquen: el propietari (meteora) llegeix i escriu, el grup (meteora) només llegeix, i la resta del món no hi té cap accés. Qualsevol altre usuari del sistema no en pot ni tan sols veure el contingut. df -hinforma del sistema de fitxers que conté aquesta ruta: el dispositiu/dev/sda2, muntat a/var, amb un 63 % d'ocupació.
Aquest 63 % és una dada operativa important: a 17 MB diaris, queden 72 GB lliures, és a dir, uns 11 anys de dades. Però si demà Meteora doblés el nombre d'estacions i guardés a més dades derivades, aquest marge es reduiria ràpidament. Vigilar el creixement forma part de la feina, i per això ho veurem a Monitoratge i Diagnòstic de Rendiment.
On es desenvolupa. Mòdul 4 sencer, començant per Sistemes de Fitxers i Gestió d'Emmagatzematge.
Gestió de dispositius i d'entrada/sortida
Què fa. Oferir una interfície uniforme per a maquinari molt divers, mitjançant controladors (drivers) específics; planificar les operacions d'E/S; atendre les interrupcions que generen els dispositius; i esmorteir la diferència de velocitat entre la CPU i tota la resta amb memòries intermèdies i memòries cau.
Per què és difícil. Per la desproporció de velocitats que ja has vist: mentre el disc atén una petició de 50 µs, la CPU podria executar unes 150.000 instruccions. Si la CPU esperés activament, es malbarataria. La solució —bloquejar el procés, executar-ne un altre, i despertar el primer mitjançant una interrupció quan la dada arribi— és el cor del disseny d'un sistema operatiu.
A Meteora. ingestor rep unes 500 lectures per minut de la xarxa i les escriu al disc. Si cada lectura provoqués una escriptura física, serien 500 operacions de disc per minut per escriure 12 KB en total: absurd. El sistema agrupa aquestes escriptures a la memòria cau de pàgines i les aboca al disc en blocs més grans.
Explicació de cada línia:
MemTotal: 8 GB de RAM a la màquina.MemFree: només 400 MB lliures. Això no és cap problema, i confondre-ho amb un problema és l'error més freqüent de tots.Cached: 5,2 GB dedicats a memòria cau de pàgines, és a dir, còpies a la RAM de dades de fitxers. Aquesta memòria és recuperable a l'instant: si un procés la necessita, el nucli l'allibera. Els fitxers de lectures dels últims dies són aquí, i per aixòagregadorels rellegeix tan de pressa.Dirty: 8 MB escrits per processos que encara no han arribat al disc. Són les dades queingestorha lliurat i el nucli encara no ha abocat.Writeback: 0 KB en trànsit cap al disc en aquest instant.
Aquest valor Dirty és també un risc: si meteo-01 perdés el corrent ara mateix, aquests 8 MB de lectures es perdrien. Quan la pèrdua és inacceptable, el programa ha de forçar l'abocament amb fsync(), a costa de rendiment. És un compromís clàssic que reprendrem a Assignació d'Espai, Journaling i Integritat.
On es desenvolupa. Gestió de Dispositius i Controladors, Interrupcions i Operacions d'E/S.
Gestió de la xarxa
Què fa. Implementar les piles de protocols (TCP/IP), gestionar les interfícies, mantenir les taules de rutes, multiplexar les connexions entre processos i oferir l'abstracció de sòcol, que permet tractar una connexió remota gairebé com un fitxer.
Per què és una funció del sistema operatiu i no de l'aplicació. Perquè la targeta de xarxa és un recurs compartit: meteo-api, ingestor i sshd estan tots escoltant alhora, i algú ha de decidir a qui correspon cada paquet que arriba. Aquest repartiment es fa per port, i només el nucli el pot arbitrar.
A Meteora.
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 512 0.0.0.0:8080 0.0.0.0:* users:(("meteo-api",pid=1102,fd=6))
LISTEN 0 128 127.0.0.1:9310 0.0.0.0:* users:(("ingestor",pid=1099,fd=4))Anàlisi línia a línia:
ss -tlnpllista sòcols TCP (-t) en escolta (-l), sense resoldre noms (-n, més ràpid i sense sorpreses de DNS) i mostrant el procés propietari (-p).meteo-apiescolta a0.0.0.0:8080: l'adreça0.0.0.0significa totes les interfícies, és a dir, accepta connexions des de fora de la màquina. És el que toca per a un servei públic.ingestorescolta a127.0.0.1:9310: només a la interfície de bucle local, així que únicament processos de la mateixa màquina s'hi poden connectar. És una decisió de seguretat deliberada. Si hagués d'acceptar connexions de les estacions des de fora, aquest seria un port exposat i s'hauria de protegir.Send-Qen estat LISTEN indica la mida màxima de la cua de connexions pendents: 512 per ameteo-api, 128 per aingestor. Si arriben més connexions simultànies de les que caben en aquesta cua, es rebutgen.fd=6ifd=4són els descriptors de fitxer d'aquests sòcols dins de cada procés: la prova directa que «tot és un fitxer» arriba també a la xarxa.
Protecció i seguretat
Què fa. Autenticar (qui ets?), autoritzar (pots fer això?), aïllar (que un procés no toqui allò que és d'un altre) i auditar (deixar constància del que ha passat).
Convé separar dos conceptes que se solen barrejar:
- Protecció és el mecanisme intern que impedeix que els processos interfereixin entre si, fins i tot sense mala intenció. Que una fallada a
agregadorno corrompi la memòria demeteo-apiés protecció. - Seguretat és la defensa davant d'un adversari que actua amb intenció. Que un atacant que compromet
meteo-apino pugui llegir/etc/shadowés seguretat.
A Meteora. El model de permisos aplica el privilegi mínim a cada capa:
-rw-r----- 1 root meteora 1284 ago 12 10:03 /etc/meteora/meteora.conf -rw-r----- 1 meteora meteora 8.4M ago 31 16:42 /var/log/meteora/meteo-api.log uid=990(meteora) gid=990(meteora) groups=990(meteora)
L'interessant és als detalls:
- El fitxer de configuració pertany a
rootperò el seu grup ésmeteora. Els serveis el poden llegir (permísrde grup) però no modificar, perquè el permís d'escriptura és només del propietariroot. Si un atacant comprometmeteo-api, no pot alterar la configuració per, per exemple, canviar la ruta de les dades. - El registre sí que pertany a
meteora, perquè el servei hi ha d'escriure. uid=990: els identificadors per sota de 1000 es reserven per convenció a comptes de sistema, que no corresponen a persones i no poden iniciar sessió interactiva.
On es desenvolupa. Mòdul 5 sencer, més Seguretat i Permisos de Fitxers.
Interfície d'usuari: shell i entorn gràfic
Què fa. Oferir una via perquè les persones donin ordres al sistema. Pot ser una línia de comandes (bash), un entorn gràfic (GNOME) o una API d'administració remota.
Matís essencial, ja vist a la primera lliçó. La interfície no forma part del nucli. bash és un programa d'usuari que llegeix el que escrius, ho interpreta i demana al nucli que executi programes mitjançant crides al sistema. El seu privilegi és exactament el mateix que el de qualsevol altre programa de l'usuari.
A meteo-01 no hi ha entorn gràfic. Tota l'administració es fa per SSH i amb bash, i això és deliberat: menys programari instal·lat significa menys memòria consumida, menys actualitzacions per aplicar i menys vulnerabilitats potencials.
On es desenvolupa. La Línia de Comandes com a Interfície del Sistema.
Totes alhora: cicle de vida d'una petició a meteo-api
Aquí és on les set funcions deixen de ser una llista i es converteixen en un sistema. Seguim una petició real:
sequenceDiagram
participant C as Client
participant NIC as Targeta de xarxa
participant K as Nucli
participant P as Planificador
participant A as meteo-api
participant D as Disc
C->>NIC: Paquets TCP amb la petició
NIC->>K: Interrupció: dades disponibles
Note over K: Xarxa: reassembla TCP,<br/>identifica el port 8080
K->>P: Marcar meteo-api com a llest
Note over P: Processos: tria meteo-api<br/>(estava bloquejat en E/S)
P->>A: Canvi de context (~2 µs)
A->>K: read() del sòcol
K-->>A: Bytes de la petició
Note over A: Analitza la URL
A->>K: open() + read() del fitxer del dia
Note over K: Seguretat: pot meteora llegir-lo?<br/>Fitxers: localitza els blocs
alt Dades a la memòria cau de pàgines
K-->>A: Bytes des de la RAM (~80 ns/bloc)
else Dades al disc
K->>D: Petició de blocs
Note over P: Processos: bloqueja meteo-api,<br/>executa un altre procés
D->>K: Interrupció: dades llestes
Note over K: Memòria: les desa a<br/>la memòria cau de pàgines
K->>P: Desperta meteo-api
K-->>A: Bytes des del disc (~50 µs/bloc)
end
Note over A: Calcula mitjanes horàries<br/>i serialitza a JSON
A->>K: write() al sòcol
Note over K: Xarxa: fragmenta en paquets TCP
K->>NIC: Ordena la transmissió
NIC->>C: Resposta HTTP
A->>K: write() al registre
Recorrem el diagrama posant nom a la funció responsable de cada pas:
- Arribada per xarxa (gestió de la xarxa + gestió de dispositius). La targeta rep els paquets i llança una interrupció. El nucli reassembla el flux TCP, mira el port de destinació (8080) i localitza el sòcol de
meteo-api. - Despertar i planificar (gestió de processos).
meteo-apiestava bloquejat aread(), en estatS. El nucli el passa a «llest» i el planificador decideix quan li dona CPU. Com que és un procés orientat a E/S, té avantatge respecte d'agregador. El canvi de context costa de l'ordre d'1 a 5 microsegons. - Lectura de la petició (crides al sistema, tema de la lliçó següent).
meteo-apiexecutaread(), travessa la frontera cap a mode nucli, recull els seus bytes i torna. - Obertura del fitxer (gestió de fitxers + seguretat). El nucli tradueix
/var/lib/meteora/lectures/2026-08-31.datrecorrent l'arbre de directoris, i a cada pas comprova que l'usuarimeteorahi té permís. Si no en tingués, retornariaEACCESsense arribar a tocar el disc. - Obtenció de les dades (gestió de memòria + gestió de dispositius). Aquí hi ha dos camins, i la diferència entre tots dos és de tres ordres de magnitud:
- Si els blocs són a la memòria cau de pàgines, la còpia es fa des de la RAM: uns 80 ns per bloc.
- Si no hi són, el nucli demana els blocs al disc, bloqueja
meteo-apii aprofita per executar un altre procés. Quan el disc acaba, llança una interrupció, el nucli copia les dades a la memòria cau de pàgines i desperta el procés: uns 50 µs per bloc en un SSD.
- Càlcul (gestió de processos).
meteo-apifiltra les lectures de l'estació 118, agrupa per hora i calcula mitjanes. És l'única part del recorregut que fa feina específica de Meteora; tota la resta l'aporta el sistema. - Resposta (gestió de la xarxa).
write()al sòcol. El nucli copia les dades a la seva memòria intermèdia de transmissió, les fragmenta segons la mida màxima de segment i ordena a la targeta que les enviï. Fixa't en un detall important:write()retorna el control abans que les dades hagin arribat al client. L'aplicació no espera la xarxa. - Registre (gestió de fitxers). Una altra escriptura, aquesta vegada a
/var/log/meteora/meteo-api.log, que també passa per la memòria cau i s'abocarà al disc més tard.
La conclusió que importa: de tot aquest recorregut, el codi de Meteora només aporta el pas 6. Els set restants són sistema operatiu. I cap de les seves funcions no podria complir la seva part sense les altres: la planificació depèn de saber qui està bloquejat en E/S, l'E/S depèn de la gestió de memòria per a la memòria cau, la memòria cau depèn que la seguretat ja hagi autoritzat l'accés. Són un sistema, no un catàleg.
Errors Habituals i Consells
- Memoritzar les funcions com una llista. El que es pregunta a la pràctica no és «enumera les funcions del SO», sinó «per què aquesta petició triga 400 ms». Practica el recorregut del cicle de vida complet: és l'exercici que de debò ensenya.
- Alarmar-se perquè
MemFreeés baix. La RAM lliure no utilitzada és RAM malbaratada. Un sistema sa fa servir gairebé tota la memòria, la major part en memòria cau de pàgines, que s'allibera a l'instant quan cal. La mètrica útil ésMemAvailable, noMemFree. - Confondre
VSZamb consum real. L'espai d'adreces virtual pot ser 30 vegades més gran que la memòria física ocupada. MiraRSS, i per a una anàlisi fina,/proc/<pid>/smaps_rollup. - Creure que l'aplicació «escriu al disc». L'aplicació lliura bytes al nucli. Quan arriben al disc ho decideix el sistema, tret que es forci amb
fsync(). Aquesta diferència explica moltíssimes pèrdues de dades després d'un tall de llum. - Pensar que
write()a un sòcol significa que el client ha rebut les dades. Només significa que el nucli les ha acceptades a la seva memòria intermèdia de sortida. - Consell: acostuma't a mirar les quatre coses bàsiques quan diagnostiquis qualsevol problema, en aquest ordre: estat dels processos (
ps,top), memòria (free -h), disc (df -h,iostat) i xarxa (ss). Gairebé tots els incidents es localitzen aquí en menys d'un minut.
Exercicis
Exercici 1
Per a cada símptoma observat a meteo-01, indica quina funció del sistema operatiu hi està implicada principalment, quina comanda faries servir per confirmar-ho i en quin mòdul del curs s'estudia:
- Les respostes de
meteo-apitriguen 3 segons en comptes de 50 ms, itopmostra un nucli al 100 %. ingestorfalla amb «No space left on device».- Un client no es pot connectar al port 8080 des de fora, però des de la mateixa màquina sí.
meteo-apino pot llegir/etc/meteora/meteora.confdesprés d'un canvi de configuració.
Exercici 2
meteo-api rep 200 peticions per segon. Cada petició requereix llegir 40 blocs de 4 KB del fitxer del dia. Calcula el temps total d'E/S per segon en dos escenaris: (a) tot des del disc SSD, a 50 µs per bloc; (b) tot des de la memòria cau de pàgines, a 80 ns per bloc. Pot meteo-01 sostenir aquesta càrrega en l'escenari (a)? Raona quina funció del SO fa que a la pràctica l'escenari real s'assembli al (b).
Exercici 3
Recorre el cicle de vida d'una petició i indica, per a cadascun dels vuit passos, què passaria si aquella funció del sistema operatiu no existís. L'objectiu és que justifiquis la necessitat de cadascuna, no que en descriguis el funcionament.
Solucions
Solució 1
1. Respostes lentes amb un nucli al 100 %
- Funció: gestió de processos i del processador. Hi ha contenció de CPU: algun procés (molt probablement
agregador) està monopolitzant un nucli imeteo-apino rep prou CPU. - Comanda:
topordenat per CPU, ops -eo pid,ni,pri,stat,%cpu,comm --sort=-%cpu. Interessa mirar el valorNI: siagregadorno s'ha arrencat ambnice, aquesta és la causa i la solució immediata ésrenice. - Mòdul: Planificació de la CPU.
2. «No space left on device»
- Funció: gestió de l'emmagatzematge i de fitxers.
- Comanda:
df -h /var/lib/meteoraper veure l'espai, i tambédf -i. Aquest segon és important: l'error idèntic apareix quan s'esgoten els inodes encara que quedi espai lliure, cosa típica quan hi ha milions de fitxers petits. És un diagnòstic que es passa per alt constantment. - Mòdul: Sistemes de Fitxers i Assignació d'Espai, Journaling i Integritat.
3. Connecta des de dins però no des de fora
- Funció: gestió de la xarxa (i possiblement seguretat, si hi ha tallafocs).
- Comanda:
ss -tlnp | grep 8080. Si l'adreça local és127.0.0.1:8080en comptes de0.0.0.0:8080, el servei només escolta al bucle local i aquest és el problema; es corregeix a la configuració de l'aplicació. Si ja escolta a0.0.0.0, llavors cal revisar el tallafocs ambiptables -L -nonft list ruleset. - Mòdul: Amenaces Habituals i Enfortiment del Sistema per a la part de tallafocs.
4. No pot llegir la configuració
- Funció: protecció i seguretat.
- Comanda:
ls -l /etc/meteora/meteora.confils -ld /etc/meteora. Cal mirar-los tots dos: encara que el fitxer tingui permisos correctes, si el directori ha perdut el permís d'execució (x) per al grup, no es pot travessar i l'accés falla igualment. És l'error més freqüent quan s'ajusten permisos a mà. - Mòdul: Seguretat i Permisos de Fitxers.
Solució 2
Blocs per llegir per segon:
(a) Des de l'SSD, a 50 µs per bloc:
(b) Des de la memòria cau de pàgines, a 80 ns per bloc:
Pot sostenir la càrrega en (a)? Estrictament sí, perquè 0,4 s d'E/S per cada segon de rellotge deixa marge. Però el marge és enganyós per dues raons:
- És un 65 % d'utilització efectiva del subsistema d'E/S si considerem la latència serialitzada. En teoria de cues, la latència creix de manera no lineal en acostar-se a la saturació: a partir del 70-80 % d'utilització, els temps de resposta es disparen. Un pic del doble de trànsit faria inviable el servei.
- Els 0,4 s són latència d'espera, no CPU. Durant aquest temps els processos estan bloquejats, cosa que exigeix que hi hagi prou fils o processos concurrents perquè el servidor no quedi aturat esperant.
Què fa que el cas real s'assembli a (b): la memòria cau de pàgines, que és gestió de memòria i d'E/S treballant juntes. Com que el fitxer del dia ocupa 17 MB i meteo-01 té gigabytes dedicats a memòria cau, després de les primeres lectures el fitxer complet resideix a la RAM i totes les peticions posteriors se serveixen des d'allà. El disc només hi intervé la primera vegada i al principi de cada dia nou.
Aquesta és també la raó que les proves de rendiment mal fetes donin resultats enganyosament bons: si mesures després d'haver executat la mateixa consulta vint vegades, estàs mesurant la RAM, no el sistema complet.
Solució 3
- Sense gestió de xarxa: cada aplicació hauria de parlar directament amb la targeta i implementar TCP pel seu compte. Encara pitjor, no hi hauria manera de repartir els paquets entrants entre
meteo-api,ingestorisshd: només un programa podria fer servir la xarxa alhora. - Sense planificació de processos:
meteo-apino podria ser despertat. O bé hauria de consultar activament el sòcol en un bucle (cremant CPU sense fer res útil) o bé el sistema executaria un sol programa fins que acabés, i les peticions s'atendrien d'una en una. - Sense crides al sistema: no hi hauria frontera entre l'aplicació i el nucli. Qualsevol programa podria manipular el maquinari directament, i una fallada a
meteo-apipodria corrompre qualsevol estructura del sistema. - Sense gestió de fitxers:
meteo-apihauria de saber en quins sectors físics són les dades del 31 d'agost i mantenir aquesta comptabilitat pel seu compte. Canviar de disc obligaria a reescriure l'aplicació. I sense comprovació de permisos, qualsevol procés podria llegir qualsevol dada de la màquina. - Sense gestió de memòria i memòria cau: cada lectura aniria al disc, amb un cost 600 vegades més gran. A més, sense espais d'adreces separats, un punter erroni a
agregadorpodria sobreescriure la memòria demeteo-api, amb corrupció silenciosa de dades servides a clients. - Sense apropiació en la planificació:
meteo-apiconservaria la CPU durant tot el seu càlcul i, si entrés en un bucle infinit per una petició mal formada, la màquina sencera quedaria inservible fins a un reinici físic. - Sense memòries intermèdies de xarxa al nucli: l'aplicació hauria d'esperar que cada byte es transmetés físicament abans de continuar, cosa que multiplicaria per diversos ordres de magnitud el temps de resposta i reduiria el rendiment a una fracció de l'actual.
- Sense sistema de fitxers ni control d'accés per al registre: no hi hauria manera fiable de deixar constància del que ha passat, ni de garantir que un atacant no pugui esborrar les seves petjades. Sense registres, la resposta a incidents és impossible; hi tornarem a Auditoria, Registres i Resposta a Incidents.
Conclusió
Les funcions principals d'un sistema operatiu —processos i CPU, memòria, emmagatzematge i fitxers, dispositius i E/S, xarxa, protecció i seguretat, i interfície d'usuari— són el mapa de la resta d'aquest curs. Cadascuna resol un problema concret: repartir el processador, donar a cada procés un espai propi, convertir blocs en fitxers, esmorteir la lentitud del maquinari, multiplexar la xarxa, aïllar els uns dels altres i permetre que un humà doni ordres.
El que has vist en seguir una petició HTTP de cap a cap és que aquestes funcions no operen per separat. En els pocs mil·lisegons que triga meteo-api a respondre, hi intervenen totes, es donen suport les unes a les altres i, de les vuit etapes del recorregut, set són sistema operatiu i només una és codi de Meteora. Aquesta proporció explica per què val la pena entendre el que hi ha a sota.
Fins aquí hem mirat el sistema des de fora: què fa i per a qui. A la lliçó següent, Arquitectura del Nucli: Monolític, Microkernel i Híbrid, obrirem el nucli per veure com s'organitza per dins tot aquest codi, i descobriràs que hi ha maneres radicalment diferents d'estructurar-lo, amb conseqüències directes sobre el rendiment i la robustesa de meteo-01.
Fonaments de Sistemes Operatius
Mòdul 1: Introducció als Sistemes Operatius
- Conceptes Bàsics de Sistemes Operatius
- Història i Evolució dels Sistemes Operatius
- Tipus de Sistemes Operatius
- Funcions Principals d'un Sistema Operatiu
- Arquitectura del Nucli: Monolític, Microkernel i Híbrid
- Mode Usuari, Mode Nucli i Crides al Sistema
Mòdul 2: Gestió de Recursos
- Gestió de Processos
- Planificació de la CPU
- Gestió de Memòria
- Memòria Virtual i Paginació
- Gestió d'Emmagatzematge
- Gestió de Dispositius
- Controladors, Interrupcions i Operacions d'E/S
Mòdul 3: Concurrència
- Conceptes de Concurrència
- Fils i Processos
- Comunicació entre Processos (IPC)
- Sincronització i Exclusió Mútua
- Problemes Clàssics de Concurrència
- Interbloquejos: Prevenció, Detecció i Recuperació
Mòdul 4: Estructures de Fitxers
- Sistemes de Fitxers
- Estructures de Directoris
- Particions, Muntatge i Sistema de Fitxers Virtual
- Gestió de Fitxers
- Assignació d'Espai, Journaling i Integritat
- Seguretat i Permisos de Fitxers
Mòdul 5: Protecció i Seguretat del Sistema
- Principis de Protecció i Control d'Accés
- Usuaris, Autenticació i Escalada de Privilegis
- Amenaces Habituals i Enfortiment del Sistema
- Auditoria, Registres i Resposta a Incidents
Mòdul 6: Virtualització i Contenidors
- Virtualització: Hipervisors i Màquines Virtuals
- Contenidors: Namespaces i cgroups
- El Sistema Operatiu al Núvol
- Sistemes Operatius Mòbils i de Temps Real
