1. Introducció
1.1 Definició de Sistema Operatiu
1.2 Visió història dels Sistemes Operatius
1.2.1 Els primers sistemes computadors
1.2.2 Segona generació
1.2.3 Tercera generació
1.2.4 De la Quarta generació fins ara
1.3 Serveis que ofereix el sistema operatiu
1.3.1 Crides a Sistema
1.3.2 Intèrpret de Comandes
2. Sistema Operatiu : màquina virtual
2.1 Introducció
2.1.1 Concepte de Màquina Virtual
2.1.2 El Concepte de sessió de treball
2.1.3 L’intèrpret de comandes
2.1.4 El sistema operatiu des del punt de vista del programador
2.2 Fases d’execució d’un programa.
2.2.1 Concepte de procés
2.2.2 Llenguatge informàtic
2.2.3 Eines per la creació d'una aplicació informàtica
2.2.4 Procés de creació del programa executable
2.2.5 Compilació (assemblat)
2.2.6 Exemple de compilació
2.2.7 El muntador (enllaçat)
2.2.8 La Càrrega
2.2.9 L’Execució (depuració)
2.2.10 Llibreries de sistema
2.3 Espais d’adreces d’un procés: Lògic i físic
2.3.1 Espai lògic i espai físic
2.3.2 Càrrega a Memòria: Reubicació
2.4 Mecanismes d’entrada al sistema operatiu: Trap, excepcions i interrupcions
2.4.1 Rutines de servei del sistema operatiu
2.4.2 Mecanismes d’accés als serveis
2.4.3 Mecanismes bàsics de transferència
2.4.4 El nucli del sistema operatiu
3. Dispositius d’entrada/sortida, visió externa
3.1 Concepte de dispositiu d’entrada/sortida
3.2 Característiques dels dispositius
3.2.1 Característiques físiques
3.2.2 Característiques d’accés
3.2.3 Característiques de control
3.2.4 Conseqüències de la diversitat dels dispositius
3.3 Dispositius reals : físics i lògics
3.3.1 Dispositius físics
3.3.2 Dispositius lògics
3.4 Independència dels dispositius
3.4.1 Dispositius virtuals
3.4.2 Operacions uniformes
3.5 Gestió de dispositius a UNIX
3.5.1 Les pipes, un cas especial de dispositiu
3.5.2 Visió des de les crides al sistema
3.5.3 Visió des de l’intèrpret de comandes (shell)
4. Sistema de fitxers, visió externa
4.1 Definició
4.2 Concepte de fitxers
4.2.1 Definició
4.2.2 Propietats dels fitxers
4.2.3 Tipus de fitxers
4.3 Espai de noms
4.3.1 Espai de noms, funció de traducció
4.3.2 Estructura dels espais de noms
4.3.3 Operacions sobre l’espai de noms
4.4 Protecció
4.4.1 Concepte i objectius
4.4.2 Matriu d’accessos
4.4.3 Llistes de Control d’Accessos
4.4.4 Llistes de Capabilities (capacitats)
4.4.5 Millores i models combinats
4.5 El sistema de fitxers i la protecció a UNIX
4.5.1 El sistema de fitxers a UNIX
4.5.2 El mecanisme de protecció de UNIX
5. Gestió de processos, visió externa
5.1 Procés: un cop d'ull des de l’interior del sistema
5.1.1 Elements d’un procés i la seva representació
5.1.2 Execució concurrent
5.1.3 Estats d’un procés
5.2 Cicle de vida d’un procés
5.2.1 Creació i destrucció de processos
5.2.2 Herència entre processos
5.2.3 Sincronització en la creació i destrucció de processos
5.2.4 Canvis a l’entorn d’execució
5.3 Excepcions i senyals software.
5.4 Gestió de processos a UNIX
5.4.1 Creació i destrucció de Processos
5.4.2 Canvis de l’entorn que configura un procés
5.4.3 La jerarquia de processos a UNIX
5.4.4 Les senyals a UNIX
6. Concurrència i Comunicació
6.1 Introducció
6.2 Sincronització de Processos
6.2.1 Perquè és necessària la sincronització?
6.2.2 Secció crítica
6.3 Solucions software per l'exclusió mútua
6.4 Semàfors
6.4.1 Definició
6.4.2 Utilització dels semàfors
6.4.3 Característiques dels semàfors
6.4.4 Implementacions dels semàfors
6.5 Suport Hardware per la exclusió mútua
6.5.1 Inhibir les interrupcions
6.5.2 Test and Set
6.5.3 Swap
6.6 Exemple: Productors i Consumidors
6.7 Pas de missatges
6.7.1 Exclusió mútua amb missatges
6.8 Problemes de Coordinació entre processos: Deadlock
6.9 Eines de concurrència d'alt nivell
6.9.1 Regions crítiques
6.9.2 Regions crítiques condicionals
6.9.3 Monitors
6.10. Bloqueig i aplaçament indefinit
6.10.1 Tipus de recursos
6.10.2 Abordament del problema de bloqueig
6.10.2.1 Prevenció del bloqueig
6.10.2.2 Evitació del bloqueig
6.10.2.3 Detecció i recuperació.
7. Hardware: Entorn de treball
7.1 Estructura interna d’un sistema operatiu
7.1.1 Monolítics
7.1.2 Per capes
7.1.3 Per funcions
7.2 Nucli d’un sistema operatiu
7.3 Requisits i ajuts hardware
7.3.1 Processador, registres de llenguatge màquina
7.3.2 Controladors d’entrada/sortida
7.3.3 Accés directe a memòria (DMA)
7.3.4 El rellotge de sistema
7.3.5 Excepcions, interrupcions i traps
7.3.6 Modes d’execució
7.3.7 Registres de control
7.3.8 Unitat de gestió de memòria
7.3.9 Instruccions privilegiades
8. Gestió de Processos, visió interna
8.1 Processos i fils d'execució
8.1.1 Monoprogramació i multiprogramació
8.1.2 Concepte de procés
8.1.2.1 Fils d'execució
8.1.3 Estats dels processos
8.1.4 Bloc de Control del Procés (PCB)
8.2 Canvis de context
8.3 Grau de multiprogramació
8.4 Planificadors a curt, mig i llarg termini
8.4.1 Planificadors a llarg termini
8.4.2 Planificadors a curt termini
8.4.3 Planificadors a mig termini
8.4.4 Interacció entre els tres nivells de planificació
8.5 Algorismes de planificació del processador
8.5.1 Ratxes de CPU i d'Entrada/Sortida
8.5.2 Avaluació dels algorismes de planificació
8.5.3 Tipus d'algorismes de planificació a curt termini
8.5.4 Algorismes de planificació a curt termini
8.5.4.1 Ordre d'arribada (First Come, First Served)
8.5.4.2 Menor temps primer (Shortest Job First)
8.5.4.3 Menors temps pendent (Shortest Remaing Time)
8.5.4.4 Prioritari
8.5.4.5 Repartiment de temps (Round Robin)
8.5.4.6 Cues multinivell (Multiple-Level Queues)
8.5.4.6 Cues multinivell realimentades (Multilevel Feedback Queues)
8.5.5 Algorismes de planificació a llarg termini
8.5.6 Algorismes de planificació a mig termini
8.5.6 Planificació a computadors multiprocessadors
8.5.8 Planificació amb varis fils d'execució per procés
8.6 Entrada al Sistema Operatiu
8.6.1 Determinació de la direcció de la rutina de tractament del trap
8.6.1.1 Temps d'edició
8.6.1.2 Temps de compilació
8.6.1.3 Temps de muntatge
8.6.1.4 Temps d'execució (per hardware)
8.6.1.5 Temps d'execució (combinant hardware i software)
8.6.2 Pas de paràmetres
8.6.3 Pila d'execució
8.6.4 Retorn del resultat
9. Gestió de memòria
9.1 Funcions de traducció d'adreces.
9.2 Models de gestió de memòria d'assignació contigua
9.2.1 Particions fixes
9.2.2 Particions variables
9.3 Models de gestió de memòria d'assignació no contigua
9.3.1 Segmentació
9.3.2 Paginació
9.4 Memòria Virtual
9.5 Gestió de memòria
9.5.1. Gestors
9.5.2 Processos i memòria
9.5.3 Implementació de la memòria virtual
9.6 Estructures de dades per la implementació de la memòria virtual
9.6.1 Memòria virtual paginada
9.6.2 Optimització en l'accés a la taula de pàgines: TLB
9.7 Polítiques de gestió
9.7.1 Polítiques de reemplaç
9.7.2 Polítiques d'assignació
10. Gestió de les Entrada/Sortides, visió interna
10.1 Controlador (driver) d’un dispositiu
10.1.1 controladors hardware.
10.1.2 sincronització processador i dispositius d’entrada/sortida.
10.1.3 controladors software.
10.2 Buffering
10.3 Principis de disseny del software d’entrada/sortida
10.3.1 independència de dispositius.
10.3.2 tipus de gestió de les crides
10.3.3 compartició de dispositius.
10.4 Organització per capes
10.4.1 manegadors de rutines d’interrupcions d’entrada/sortida
10.4.2 procediments dependents: controladors de dispositius
10.4.3 procediments independents de dispositiu
10.4.4 programes a l’espai d’usuari.
10.5 Aspectes de la implementació del software d’entrada/sortida
10.5.1 dispositius virtuals
10.5.2 taula de traducció de dispositius virtuals
10.5.3 operacions uniformes
10.5.4 operacions independents d’entrada/sortida (doio)
10.6 Spooling
11. Gestió de Fitxers, visió interna
11.1 Visió estàtica del Sistema de Fitxers
11.1.1 Estructura de l’espai de disc
11.1.2 Estructura d’un Sistema de Fitxers
11.1.2.1 L’espai lliure
11.1.2.2 Els fitxers
11.1.2.3 Els directoris
11.2 Visió dinàmica del Sistema de Fitxers
11.2.1 Operacions sobre els fitxers
11.2.1.1 Accés directe / no compartit
11.2.1.2 Accés directe / compartit
11.2.1.3 Accés seqüencial / no compartit.
11.2.1.4 Accés seqüencial / compartit
11.2.2 Operacions sobre els directoris
11.2.2.1 Creació, modificació, consulta i destrucció
11.2.2.2 Directori de treball
11.2.2.3 Localització d’un fitxer
11.2.3 Operacions sobre els Sistemes de Fitxers
11.2.3.1 Creació d’un Sistema de Fitxers
11.2.3.2 Activació d’un Sistema de fitxers
11.3 Aspectes de rendiment i fiabilitat
11.3.1 Conceptes de rendiment
11.3.1.1 L’interleeving, i l’skew
11.3.1.2 La cache de disc
11.3.2 Conceptes de fiabilitat
11.3.2.1 Els backups
11.3.2.2 La redundància
10. Estat de l’art dels SO actuals
10.1 Conceptes generals
10.1.1 Model client/servidor
10.1.2 Processos multi-flux (multi thread)
10.2 SO de temps real
10.3 SO multiprocessador
10.3.1 Arquitectures Multiprocessador
10.3.2 Avantatges dels sistemes multiprocessador
10.3.3 Tipus de SO multiprocessador
10.4 SO en xarxa i SO distribuïts
10.4.1 Entorn distribuït
10.4.2 Definició i evolució dels SO sobre la xarxa
10.4.3 Tipus de SO distribuïts