You are on page 1of 80

Resumen sistemas operativos

M. Fauvell

Contents
1 Consideraciones generales de los sistemas operativos
1.1 Introducci
on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Definici
on, objetivos y servicios de un sistema operativo . . . . . . . . . . . . . . . . . . . . .
1.2.1 Definici
on y objetivos de un sistema operativo . . . . . . . . . . . . . . . . . . . . . .
1.2.2 Servicio de un sistema operativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Evoluci
on hist
orica de los sistemas operativos . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.1 Los primeros sistemas operativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.2 Introducci
on de la multiprogramacion en los sistemas operativos . . . . . . . . . . . .
1.3.3 Sistemas operativos modernos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4 Tipos de sistemas operativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4.1 Clasificaci
on en funci
on del n
umero de usuarios que pueden atender simultaneamente
1.4.2 Clasificaci
on seg
un el n
umero de programas cargados en la memoria principal . . . . .
1.4.3 Clasificaci
on en funci
on de los requisitos temporales de los programas a ejecutar . . .
1.4.4 Clasificaci
on en funci
on de la finalidad del computador . . . . . . . . . . . . . . . . . .
1.4.5 Otros tipos importantes de sistemas operativos . . . . . . . . . . . . . . . . . . . . . .
1.5 Llamadas al sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6 Estructura del n
ucleo de un sistema operativo . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.1 Componentes principales de n
ucleo de un sistema operativo . . . . . . . . . . . . . . .
1.6.2 Tipos de estructuras del n
ucleo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

2 Descripci
on y control de procesos
2.1 Introducci
on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Descripci
on de los procesos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.1 Definici
on de proceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.2 Espacio de direcciones de memoria logica o virtual de un proceso . . . . . . . . . . . . . . .
2.2.3 Tipos de procesos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.4 Estados de un proceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3 Control de procesos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.1 Estructuras de control del sistema operativo . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.2 Creaci
on de procesos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.3 Terminaci
on de procesos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.4 Cambio de proceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4 Ejecuci
on del sistema operativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5 Procesos multihilos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.1 Concepto de hilo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.2 Ventajas e inconvenientes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.3 Control de hilos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.4 Tipos de hilos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.5 Principales configuraciones en funcion del n
umero y tipo de hilos soportados por un sistema
operativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 Planificaci
on de procesos
3.1 Introducci
on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Niveles de planificaci
on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3 Criterios generales considerados en la planificacion de procesos . . . . . . . . . . . . . . . . . . . .
3.4 Criterios considerados en la planificacion de procesador . . . . . . . . . . . . . . . . . . . . . . . .
3.5 Expropiabilidad del procesador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6 Algoritmos de planificaci
on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6.1 Algoritmo de planificaci
on del primero en llegar-primero en ser servido FCFS(First-Come
First-Served) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6.2 Planificaci
on de primero el proceso mas corto. SJF (Shortest Job First) o SPN (Shortest
Process Next) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6.3 Planificaci
on de proceso con menor tiempo restante. SRT (Shortest Remaining Time Next .
3.6.4 Planificaci
on de turno rotatorio (round robin) o cclico . . . . . . . . . . . . . . . . . . . . .
3.6.5 Planificaci
on basada en prioridades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6.6 Planificaci
on basada en m
ultiples colas de prioridad. . . . . . . . . . . . . . . . . . . . . . .
3.6.7 Planificaci
on basada en m
ultiples colas de prioridad y realimentacion. . . . . . . . . . . . .
3.6.8 Planificaci
on de tiempo limite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6.9 Elecci
on del algoritmo de planificacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.7 Planificaci
on de hilos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

1
1
1
1
1
1
1
2
2
2
2
3
3
4
4
4
5
5
6

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

7
7
7
7
7
7
8
8
8
9
10
10
10
10
10
11
11
12

. 12

.
.
.
.
.
.

13
13
13
14
14
15
15

. 15
.
.
.
.
.
.
.
.
.

15
16
16
16
17
17
17
17
18

4 Sincronizaci
on y comunicaci
on de procesos
4.1 Introducci
on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 Exclusi
on mutua . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.1 Interacci
on entre procesos concurrentes . . . . . . . . . . . . .
4.2.2 Condiciones de carrera . . . . . . . . . . . . . . . . . . . . . . .
4.2.3 Secciones crticas . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.4 Descripci
on de la exclusi
on mutua . . . . . . . . . . . . . . . .
4.2.5 Soluciones software a la exclusion mutua . . . . . . . . . . . . .
4.2.6 Soluciones a la exclusi
on mutua con apoyo del hardware . . . .
4.3 Sem
aforos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.1 Definici
on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.2 Implementaci
on . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.3 Utilidad de los sem
aforos . . . . . . . . . . . . . . . . . . . . .
4.3.4 Problemas potenciales asociados a un mal uso de los semaforos
4.4 Problemas cl
asicos de sincronizaci
on de procesos concurrentes . . . . .
4.4.1 El problema de los productores y consumidores . . . . . . . . .
4.4.2 El problema de los lectores y los escritores . . . . . . . . . . . .
4.5 Monitores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.5.1 Definici
on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.5.2 Estructura y declaraci
on de un monitor . . . . . . . . . . . . .
4.5.3 Uso de monitores . . . . . . . . . . . . . . . . . . . . . . . . . .
4.6 Paso de mensajes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.6.1 Definici
on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.6.2 Especificaci
on de la fuente y el destino del mensaje . . . . . . .
4.6.3 Esquemas de sincronizaci
on . . . . . . . . . . . . . . . . . . . .
4.6.4 Formato y almacenamiento de los mensajes . . . . . . . . . . .
4.6.5 Uso del paso de mensajes . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

19
19
19
19
19
19
19
20
21
22
22
22
22
23
24
24
24
25
25
26
26
27
27
27
28
28
29

5 Interbloqueo
5.1 Introducci
on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2 Definici
on y condiciones del interbloqueo . . . . . . . . . . . . . . . . . . . . .
5.3 Grafos de asignaci
on de recursos. . . . . . . . . . . . . . . . . . . . . . . . . .
5.4 Prevenci
on de interbloqueos . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.4.1 Eliminaci
on de la condici
on de exclusion mutua . . . . . . . . . . . . .
5.4.2 Eliminaci
on de la condici
on de retencion y espera . . . . . . . . . . . .
5.4.3 Eliminaci
on de no existencia de expropiacion . . . . . . . . . . . . . .
5.4.4 Eliminaci
on de la condici
on de espera circular . . . . . . . . . . . . . .
5.5 Evitaci
on de interbloqueos . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.5.1 Estado de asignaci
on de recursos: estados seguros y estados inseguros
5.5.2 Denegaci
on de asignaci
on de recursos: el algoritmo del banquero . . .
5.5.3 Denegaci
on de la iniciaci
on de un proceso . . . . . . . . . . . . . . . .
5.6 Detecci
on y recuperaci
on de interbloqueos . . . . . . . . . . . . . . . . . . . .
5.6.1 Algoritmos de detecci
on de interbloqueos . . . . . . . . . . . . . . . .
5.6.2 Frecuencia de invocaci
on del algoritmo de deteccion de interbloqueos .
5.6.3 Tecnicas de recuperaci
on del interbloqueo . . . . . . . . . . . . . . . .
5.6.4 Ventajas e inconvenientes . . . . . . . . . . . . . . . . . . . . . . . . .
5.7 Otras estrategias de tratamiento de interbloqueos . . . . . . . . . . . . . . . .
5.7.1 Estrategia mixta de tratamiento de interbloqueos . . . . . . . . . . . .
5.7.2 Ignorar los interbloqueos . . . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

31
31
31
31
32
32
32
32
32
32
32
34
34
34
34
35
35
35
35
35
36

6 Administraci
on de memoria
6.1 Introducci
on . . . . . . . . . . . . . . . . . . . . . . . .
6.2 Definiciones previas . . . . . . . . . . . . . . . . . . . .
6.2.1 Espaci
o del n
ucleo y espacio de usuario . . . .

6.2.2 Area
de intercambio en memoria secundaria . .
6.3 Asignaci
on de memoria en sistemas monoprogramados
6.4 Particionamiento fijo . . . . . . . . . . . . . . . . . . .
6.4.1 Caractersticas . . . . . . . . . . . . . . . . . .
6.4.2 Particiones de igual tama
no . . . . . . . . . . .
6.4.3 Particiones de distinto tama
no . . . . . . . . .
6.4.4 Traducci
on de direcciones y proteccion . . . . .
6.4.5 Ventajas e inconvenientes . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

37
37
37
37
37
38
38
38
38
39
39
39

II

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

6.5

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

39
39
40
40
40
41
41
42
43
44
45
45
45
45
45
46
46
47
47
47

7 Memoria virtual
7.1 Introducci
on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2 Paginaci
on por demanda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2.1 Descripci
on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2.2 Reinicio de instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2.3 Localizaci
on de p
aginas en memoria secundaria . . . . . . . . . . . . . . . . . .
7.2.4 Bloqueo de marcos de p
agina . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2.5 Tratamiento de un fallo de p
agina . . . . . . . . . . . . . . . . . . . . . . . . .
7.3 Conjunto de trabajo de un proceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.4 Reemplazamiento de p
aginas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.4.1 Algoritmo de reemplazo
optimo . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.4.2 Algoritmo de reemplazamiento LRU . . . . . . . . . . . . . . . . . . . . . . . .
7.4.3 Algoritmo de reemplazamiento mediante envejecimiento(aging) . . . . . . . . .
7.4.4 Algoritmo de reemplazamiento FIFO . . . . . . . . . . . . . . . . . . . . . . . .
7.4.5 Algoritmo de reemplazamiento de la segunda oportunidad(algoritmo del reloj)
7.4.6 Algoritmo de reemplazamiento del reloj considerando el conjunto de trabajo . .
7.4.7 Conclusiones sobre los algoritmos de reemplazamiento . . . . . . . . . . . . . .
7.5 Asignaci
on de memoria principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.6 Control de carga. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.7 Copia en la memoria secundaria de la paginas modificadas . . . . . . . . . . . . . . . .
7.8 Consideraciones adicionales sobre la paginacion por demanda . . . . . . . . . . . . . .
7.8.1 Tama
no de p
agina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.8.2 Paginaci
on por adelantado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.8.3 Reserva de marcos libres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

48
48
48
48
49
49
49
49
50
50
51
51
51
51
51
52
53
53
53
53
54
54
54
54

8 Gesti
on de la Entrada/Salida
8.1 Introducci
on . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.2 Peticiones E/S . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.3 Capas del n
ucleo de un sistema operativo encargadas de la E/S
8.3.1 Subsistema de E/S . . . . . . . . . . . . . . . . . . . . .
8.3.2 Drivers de dispositivo E/S . . . . . . . . . . . . . . . . .
8.3.3 Manejadores de las interrupciones . . . . . . . . . . . .
8.4 Buffering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.4.1 Definici
on . . . . . . . . . . . . . . . . . . . . . . . . . .
8.4.2 Estrategias . . . . . . . . . . . . . . . . . . . . . . . . .
8.4.3 Cache de buffers de bloques de disco . . . . . . . . . . .
8.5 Spooling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.6 Detalles de la gesti
on de la E/S de algunos dispositivos . . . . .
8.6.1 Relojes . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.6.2 Discos duros . . . . . . . . . . . . . . . . . . . . . . . .
8.6.3 Dispositivos de E/S adaptados al usuario . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

56
56
56
56
56
57
58
58
58
58
59
59
59
59
60
62

6.6

6.7

6.8

Particionamiento din
amico . . . . . . . . . . . . . .
6.5.1 Caractersticas . . . . . . . . . . . . . . . .
6.5.2 Asignaci
on de espacio de memoria principal
6.5.3 Traducci
on de direcciones y proteccion . . .
6.5.4 Ventajas e inconvenientes . . . . . . . . . .
Paginaci
on simple . . . . . . . . . . . . . . . . . .
6.6.1 Descripci
on . . . . . . . . . . . . . . . . . .
6.6.2 Traducci
on de direcciones . . . . . . . . . .
6.6.3 Tablas de p
aginas paginadas . . . . . . . .
6.6.4 Tabla de p
aginas invertidas . . . . . . . . .
6.6.5 Protecci
on . . . . . . . . . . . . . . . . . . .
6.6.6 Compartici
on de p
aginas . . . . . . . . . .
6.6.7 Ventajas e inconvenientes . . . . . . . . . .
Segmentaci
on simple . . . . . . . . . . . . . . . . .
6.7.1 Descripci
on . . . . . . . . . . . . . . . . . .
6.7.2 Traducci
on de direcciones . . . . . . . . . .
6.7.3 Protecci
on . . . . . . . . . . . . . . . . . . .
6.7.4 Compartici
on de segmentos . . . . . . . . .
6.7.5 Ventajas e inconvenientes . . . . . . . . . .
Segmentaci
on con paginaci
on simple . . . . . . . .

III

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

9 Gesti
on de archivos
9.1 Introducci
on . . . . . . . . . . . . . . . . . .
9.2 Archivos . . . . . . . . . . . . . . . . . . . .
9.2.1 Tipos de archivos . . . . . . . . . . .
9.2.2 Atributos de una archivo . . . . . .
9.2.3 Estructura interna de un archivo . .
9.2.4 Metodos de acceso a un archivo . . .
9.2.5 Operaciones sobre archivos . . . . .
9.3 Directorios . . . . . . . . . . . . . . . . . .
9.3.1 Estructura de los directorios . . . . .
9.3.2 Operaciones sobre directorios . . . .
9.4 Sistemas de archivos . . . . . . . . . . . . .
9.4.1 Estructura de un sistema de archivos
9.4.2 Montaje de un sistema de archivos .
9.4.3 Asignaci
on de espacio . . . . . . . .
9.4.4 Gesti
on del espacio libre . . . . . . .
9.4.5 Implementaci
on de directorios . . . .
9.4.6 Consistencia . . . . . . . . . . . . .
9.5 Recuperaci
on de archivos . . . . . . . . . .
9.5.1 Copias de seguridad . . . . . . . . .
9.5.2 Instant
aneas . . . . . . . . . . . . .
9.6 Eficiencia . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

63
63
63
63
63
63
64
64
65
65
66
67
67
67
67
68
68
69
70
70
70
70

10 Seguridad y protecci
on
10.1 Introducci
on . . . . . . . . . . . . . . . . . . . . . . . . . .
10.2 Seguridad de un sistema inform
atico . . . . . . . . . . . .
10.2.1 Objetivos de la seguridad . . . . . . . . . . . . . .
10.2.2 Polticas de seguridad . . . . . . . . . . . . . . . .
10.3 Autenticaci
on de usuarios . . . . . . . . . . . . . . . . . .
10.3.1 Contrase
nas . . . . . . . . . . . . . . . . . . . . . .
10.3.2 Objetos fsicos . . . . . . . . . . . . . . . . . . . .
10.3.3 Caractersticas fisiol
ogicas o de comportamiento .
10.4 Software malicioso . . . . . . . . . . . . . . . . . . . . . .
10.4.1 Bomba l
ogica . . . . . . . . . . . . . . . . . . . . .
10.4.2 Puerta secreta . . . . . . . . . . . . . . . . . . . .
10.4.3 Caballo de Troya . . . . . . . . . . . . . . . . . . .
10.4.4 Virus . . . . . . . . . . . . . . . . . . . . . . . . .
10.4.5 Gusano . . . . . . . . . . . . . . . . . . . . . . . .
10.4.6 Programa espa . . . . . . . . . . . . . . . . . . . .
10.5 Mecanismos de protecci
on . . . . . . . . . . . . . . . . . .
10.5.1 Matriz de acceso . . . . . . . . . . . . . . . . . . .
10.5.2 Listas de control de acceso . . . . . . . . . . . . .
10.5.3 Lista de capacidades . . . . . . . . . . . . . . . . .
10.6 Sistemas confiables . . . . . . . . . . . . . . . . . . . . . .
10.6.1 Definici
on . . . . . . . . . . . . . . . . . . . . . . .
10.6.2 Seguridad multinivel . . . . . . . . . . . . . . . . .
10.6.3 Principios de dise
no de sistemas operativos seguros

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

71
71
71
71
71
71
72
72
72
72
72
72
72
73
73
73
73
74
74
74
75
75
75
75

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

IV

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

Consideraciones generales de los sistemas operativos

1.1

Introducci
on

Un sistema operativo es una capa de software cuya funcion es administrar todos los dispositivos hardware del
computador y suministrar para los programas una interfaz apropiada con el hardware. Esta es rica en funcionalidades, segura, consistente y proporciona una representacion abstracta y uniforme de lo recursos de la m
aquina.
Los programas usuarios realizan llamadas al sistema para invocar los servicios del s.o.Los usuarios interact
uan con
el mediante ordenes que son interpretadas por los interpretes de comandos (Shell).

1.2
1.2.1

Definici
on, objetivos y servicios de un sistema operativo
Definici
on y objetivos de un sistema operativo

Un sistema operativo es una capa de software que gestiona de forma eficiente todos los dispositivos hardware
de un computador y adem
as suministra una interfaz comoda con el hardware.
Los principales objetivos son:
Gestionar o administrar eficientemente los dispositivos hardware de un computador. Gestiona el tiempo de
procesador, la memoria principal y la secundaria y los dispositivos de E/S.
Ofrecer a los usuarios una interfaz c
omoda con el hardware que les facilite el uso del computador. El S.O.
proporciona una maquina extendida (maquina virtual) que oculta el hardware al usuario. Se pueden ver
varios niveles:
Hardware.
N
ucleo (kernel) que oculta el hardware a los programadores suministrando llamadas del sistema para
su interacci
on.
Utilidades del S.O. Programas que ayudan a la gestion y control del sistema operativo, p.e. interpretes
de comandos, sistemas de ventanas...
Programas de aplicaci
on. Los programas que usan los usuarios, procesadores de texto, reproductores
multimedia...
1.2.2

Servicio de un sistema operativo

Los servicios del sistema operativo se pueden agrupar en la siguientes clases:


Ejecuci
on de programas. Carga un programa en la memoria principal desde la secundaria y lo ejecuta.
Acceso a los dispositivos de E/S. El s.o. oculta lo detalles a los usuarios que tienen comandos sencillos de
lectura y escritura.
Manipulaci
on del sistema de archivos.
Comunicaci
on y sincronizaci
on. El s.o. debe soportar diferentes tipos de mecanismos de comunicaci
on y
sincronizaci
on (memoria compartida, paso de mensajes, semaforos,...) entre los programas.
Detecci
on y respuesta a errores. El s.o. debe detectar errores de hardware y software y poder reaccionar ante
ellos.
Protecci
on y seguridad. Se debe evitar que los programas interfieran entre si en sistemas concurrentes. En
sistemas multiusuario debe gestionar las credenciales de usuario.
Contabilidad. Un s.o. debe llevar registros y estadsticas de los recursos y monitorizar parametros como el
tiempo de respuesta o la productividad.

1.3
1.3.1

Evoluci
on hist
orica de los sistemas operativos
Los primeros sistemas operativos

Los primeros S.O. se ejecutaban en macrocomputadoras(mainframes). Se usaban lenguajes como Fortran y


ensamblador junto a tarjetas perforadas en un tipo de operacion llamado procesamiento serie ya que los trabajos
se procesaba uno detr
as de otro. Esto era muy ineficiente.
Con el fin de disminuir el tiempo se introdujo el procesamiento por lotes o procesamiento batch que consiste en
agrupar lotes de trabajos con necesidades similares.Con esto llegaron los primeros s.o. (el primero fue creado en los
a
nos 50 por General Motors) propiamente dichos como FMS O IBSYS para las computadores IBM 7090 y 7094.Con
este tipo de trabajo se necesitaban ordenes para indicarle al s.o. cuando empezaba o terminaba un trabajo, estas
1

ordenes se escriban con un lenguaje de control de trabajos (Job Control Language, JCL). Estas ordenes se escriban
en tarjetas perforadas que se cargaban conforme se necesitaban. Una parte del s.o llamada monitor residente se
encontraba residente en la memoria principal.
1.3.2

Introducci
on de la multiprogramaci
on en los sistemas operativos

Con la llegada de los c.i. se desarrollaron los minicomputadores. Con esta tecnologa llego el s.o. desarrollado por
IBM OS/360 que introduca la multiprogramaci
on. Esto consiste en mantener varios trabajos de forma simultanea
en la memoria principal. Con esta mejora el s.o. necesita poder gestionar la memoria principal y secundaria,
disponer de un algoritmo de planificaci
on de procesos, mecanismos de proteccion de la memoria, E/S controlada
por interrupciones y DMA. Esta tecnica mejoro mucho el tiempo de proceso en las operaciones por lotes.
Con el objetivo de mejores tiempos y permitir una comunicacion directa con el usuario se desarroll
o una
variante de la multiprogramaci
on llamada texto compartido.El uso del procesador se comparte entre procesos. Con
este sistema muchos usuarios se comunican a la vez con el s.o. utilizando terminales series. Esto es un dispositivo
de E/S que consta de un teclado y una pantalla, y que se comunica con el computador mediante una linea serie.
Uno de los primeros s.o. de tiempo compartido fue CTSS (desarrollado por el MIT en 1961) sobre un IBM 709
y admita 32 usuarios. A finales de los 60 Bell, General Electric y el MIT crearon MULTICS capaz de soportar
centenares de usuarios sobre el GE-645 y el Honeywell 6180. MULTICS fue un fracaso comercial pero influyo
mucho en sus predecesores.
En 1969 en AT&T por Ken Thompson y Dennis Ritchie se desarrollo el s.o. UNIX para un DEC PDP-7
y luego en 1970 adaptado par un DEC PDP-11. Como estaba escrito en C se pudo portar facilmente a otras
arquitecturas. UNIX fue muy popular y por la liberacion del codigo por las leyes antimonopolio se hicieron muchas
distribuciones, las dos m
as importantes fueron: System V de AT&T y la distribucion BSD de la Universidad de
Berkeley (California, EEUU).
1.3.3

Sistemas operativos modernos

En los 70 con la llegada tecnologa de integraci


on a gran escala (Large Scale Integration, LSI) que permita
cientos de miles de componentes por cm2 aparecieron los ordenadores personales inicialmente llamados microcomputadores.
Uno de los primeros S.O. para estas m
aquinas fue el CP/M dise
nado en 1974 para el Intel 8080 de 8 bits. En
los 80 de la mano de IBM y Apple nacieron el MS-DOS y el Mac OS. MS-DOS funcionaba en la familia x86 de 16
bits de intel y el usuario interactuaba con el mediante una linea de comandos inspirada en UNIX. Los Macintosh
de Apple se basaban en el Motorola MC68000 y disponan de una interfaz de usuario gr
afica (Graphical User
Interface,GUI) con ventanas, iconos, men
us y uso del raton. Todo ello inspirado por el trabajo de Xerox Park en
el Xeros Alto en 1973.
A partir del Intel 486 y pentium Microsoft crea Windows, un S.O. con GUI.En las primeras versiones solo era
un entorno gr
afico para MS-DOS.
En 1987 Andrew S. Tanenbaum desarroll
o un clon de UNIX llamado MINIX para el Intel 8080. A partir de el
Linus Torvalds desarroll
o Linux distribuyendolo con la licencia GPL del proyecto GNU. Actualmente GNU/Linux
continua creciendo ya que se puede igualar en potencia y versatilidad a ciertas distribuciones comerciales UNIX.
UNIX es el rey de los supercomputadores, servidores, macrocomputadoras y estaciones de trabajo en cualquiera
de sus versiones (p.e. Solaris). Unix ha inspirado a muchos de los s.o. modernos, tambien se ha dejado influir,
como la creaci
on del sistema X-windows de entorno grafico incluido en 1984.
Desde el principio del siglo XX se ha ido extendiendo los s.o. de bolsillo para PDAs, Smartphones. Android
Mac ox, Windows CE/Mobile o PALM OS son ejemplos de estos S.O.
El crecimiento de las redes de computadores e Interne desde finales de los 80 ha propiciado el desarrollo de
s.o. en red y s.o. distribuidos. En un sistema operativo en red un usuario en un computador conoce la existencia
de otros computadores conectados en red y puede interactuar con dichas maquinas para acceder a sus contenidos.
En un sistema operativo distribuido un usuario no percibe la existencia de otras maquinas y cuando ejecuta un
programa no sabe si se esta ejecutando en el procesador de su maquina o en el de otra de la red, lo mismo se aplica
al almacenamiento de archivos.

1.4

Tipos de sistemas operativos

Los s.o. se pueden clasificar en funci


on de diferentes criterios:
1.4.1

Clasificaci
on en funci
on del n
umero de usuarios que pueden atender simult
aneamente

Se clasifican en:
Multiusuario. Pueden atender simult
aneamente a m
ultiples usuarios. P.e. UNIX, Windows Server y Linux.
Monousuario. Solo puede atender a un u
nico usuario simultaneamente. P.e. MS-DOS, Windows y Mac OS.
2

1.4.2

Clasificaci
on seg
un el n
umero de programas cargados en la memoria principal

Se clasifican en :
Monoprogramados. En la memoria principal del computador se almacena el s.o. y un u
nico programa de
usuario que dispone de todos los recursos del ordenador. P.e. MS-DOS.
Multiprogramados. En la memoria principal se almacenan, aparte del s.o., varios programas, que deben
compartir durante su ejecuci
on los recursos del ordenador. Se denomina grado de multiprogramaci
on al
n
umero de programas cargados en memoria principal. Si dicho grado es constante el n
umero de programas
que se cargan debe ser igual al n
umero de programas que se eliminan.
Para poder implementar esto el s.o. ha de ser capaz de gestionar el uso de los recursos entre todos los programas. Debe disponer algoritmos de planificacion, mecanismos de sincronizacion, mecanismos de asignaci
on,
protecci
on de memoria principal y secundaria, E/S controlada por interrupciones y DMA.
Para evitar confusiones aclaramos:
Se suele usar el termino multitarea como sinonimo de multiprogramacion.
Un S.O. multitarea puede ser multiusuario(UNIX,Linux, Windows Server) o monousuario (Windows
XP, Mac OS,..).
Se dice que un sistema operativo es multiacceso, si permite el acceso al sistema informatico a traves de
dos o m
as terminales. No se requiere multiprogramacion para ello.
Un sistema operativo con multiprocesamiento es aquel que es capaz de coordinar la actividad de varios
procesadores simult
aneamente. Estos s.o. con multitarea por definicion.
1.4.3

Clasificaci
on en funci
on de los requisitos temporales de los programas a ejecutar

Se pueden distinguir:
Sistemas operativos por lotes o sistemas batch En estos sistemas los trabajos se procesan agrupados en lotes
de trabajos de necesidades similares.Suelen ser trabajos que requieren un tiempo de ejecucion grande y poca
o nula interacci
on con el usuario.
La planificaci
on es bastante simple, se ejecutan por orden de llegada o por tiempo estimado de ejecuci
on
(primero el m
as corto). La E/S suele ser E/S controlada por programa.
La gesti
on de la memoria principal es muy simple, se divide en dos secciones,una para el s.o. y otra para los
programas transitorios. La gesti
on de archivos es simple al no haber concurrencia.
Sistemas operativos de tiempo compartido o sistemas interactivos. Son sistemas multiusuario con multiprogramaci
on donde cada usuario introduce ordenes y espera la respuesta del s.o. El usuario cree que es el u
nico
que usa la m
aquina y que dispone de todos sus recursos. Se suelen ejecutar aplicaciones cortas, tpicamente
con un tiempo de respuesta de menos de un segundo, ya que sino el usuario cree que el sistema es insensible
a sus acciones.
Tienen que tener un algoritmo de planificacion que asegure un uso equitativo del procesador para todos
los programas, mecanismos de protecci
on de la memoria principal y de la memoria secundaria, as como
mecanismos de control de acceso concurrente a los archivos.
Sistemas operativos de tiempo real. Son sistemas con multiprogramacion que soportan aplicaciones de tiempo
real, que son aquellas que reciben unas entradas procedentes de unos sensores externos y deben generar
unas salidas en un tiempo de respuesta preestablecido. Se pueden clasificar en: Aplicaciones de tiempo real
estrictas, aquellas donde es necesario que sus tareas asociadas se completen siempre un limite preestablecido
de tiempo de respuesta (rob
otica, industria) y aplicaciones de tiempo real suaves, aquellas que permiten
sobrepasar en algunas ocasiones dicho lmite de tiempo de respuesta (multimedia, realidad virtual).
Esto S.O. requieren un planificador basado en prioridades de tipo expropiativo, de tal forma que el proceso
m
as prioritario siempre consigue los recursos que necesita. La gestion de la memoria es poco exigente ya que
siempre est
an cargados los mismos programas en ella y los procesos suelen ser estaticos con poco movimiento
entre memoria principal y secundaria. No suele ser necesaria gestion de archivos. P.e. VxWorks y QNX.
Sistemas operativos hbridos. Son aquellos que soportan trabajos por lotes, aplicaciones interactivas y aplicaciones suaves de tiempo real. Los trabajos por lotes se ejecutan cuando el procesador no tiene que ejecutar
aplicaciones interactivas, y estas cuando no hay que ejecutar aplicaciones suaves de tiempo real. P.e. UNIX
y Linux.

1.4.4

Clasificaci
on en funci
on de la finalidad del computador

Se pueden distinguir:
S.O. para macrocomputadores. Se computadoras de gran tama
no, suelen ocupar una sala y tienen gran
capacidad de realizar operaciones E/S. Se suelen usar como centros de datos de grandes empresas. Soportan
procesamiento por lotes y procesamiento de tiempo compartido con m
ultiples usuarios conectados al sistema
simult
aneamente.P.e. OS/390.
S.O. para servidores de red. Se pueden implementar con ordenadores personales de altas prestaciones, estaciones de trabajo o macrocomputadores. Atienden a m
ultiples usuarios simultaneamente y posibilitan la
compartici
on de recursos de hardware y software. Servicios de impresion, gestion de archivos y servicios web.
P.e. UNIX, Linux y Windows server.
S.O. para computadores personales. Su objetivo es suministrar una interfaz adecuada para la ejecuci
on de
programas de aplicaci
on. P.e. Windows, Mac OS y Linux.
S.O. para computadores de mano. Deben tener en cuenta las limitaciones de tama
no, potencia y memoria a
la hora de ejecutar aplicaciones a tiempo real. P.e. Symbian, Android, Windows CE o Palm OS.
S.O. integrados. Se ejecutan en un computador que forma parte de otro sistema (televisor, autom
ovil,...).
Atienden las peticiones de aplicaciones a tiempo real y se encuentran almacenados tpicamente en una memoria
ROM, por lo que no disponen de aplicaciones de proteccion de memoria.P.e. QNX y VxWorks.
1.4.5

Otros tipos importantes de sistemas operativos

Otros tipos importantes de S.O. cuyas caractersticas conviene conocer son:


S.O. paralelos o sistemas multiprocesador. Son aquellos que se ejecutan en sistemas con m
ultiples procesadores, los cuales comparten el bus y el reloj, en ocasiones la memoria y los dispositivos de E/S.A estos
se les denomina sistemas fuertemente acoplados. Los mas comunes utilizan el multiprocesamiento simetrico.
que consiste en cada procesador utiliza una copia identica del S.O. P.e. UNIX, Linux y Windows server.
S. O. distribuidos. Se implementan mediante redes de computadores cuyos procesadores no comporten ni
reloj ni memoria, y que se comunican entre s mediante buses de alta velocidad o lineas telefonicas. Se les
suele denominar como sistemas debilmente acoplados. Cuando usuario ejecuta un programa no sabe si se
esta ejecutando en su maquina o en otra de la red. P.e. Sprite, Mach, Chorus y la distribucion de UNIX
Solaris-MC.
S.O. de red. Son aquellos que se ejecutan en redes de computadores y posibilitan que un usuario en un
computador de la red conozca la existencia de los otros computadores conectados, y pueda interactuar con
dichas m
aquinas para acceder a contenidos y compartir recursos. Se utiliza el paso de mensajes. P.e. Novell
Netware, Personal Netware, Windows Server y UNIX.

1.5

Llamadas al sistema

La mayora de procesadores disponen de dos modos de ejecucion:


Modo n
ucleo o supervisor. Puede ejecutar cualquier instruccion del repertorio de instrucciones del procesador
y acceder a todas las caractersticas del hardware.
Modo usuario. Solo puede ejecutar un conjunto limitado de instrucciones del repertorio del procesador, tiene
acceso limitado al hardware. Las instrucciones privilegiadas no se pueden ejecutar en esto modo.
El S.O. siempre se ejecuta en modo n
ucleo y las aplicaciones de usuario en modo usuario. Una aplicaci
on que
quiere poder usar los recursos del hardware tiene que solicitar su uso al S.O. mediante la realizacion de llamadas
del sistema, que conforman la interfaz entre los programas de usuario y el n
ucleo.
Los programas de usuario pueden invocar las llamadas al sistema de dos formas:
Mediante el uso de libreras de llamadas al sistema. Se invocan de forma similar a como se invoca cualquier
funci
on de un lenguaje de alto nivel. Esta libreras se enlazan con el codigo de los programas en tiempo de
compilaci
on.
De forma directa. Los programas escritos directamente en ensamblador pueden invocar las llamadas al sistema
de forma directa.

Cuando se produce una llamada al sistema se produce un trampa que conmuta el hardware de modo usuario a
modo supervisor y transfiere el control al n
ucleo. El n
ucleo localiza la llamada seg
un su identificador y ejecuta la
rutina seg
un los par
ametros pasados. Cuando termina almacena el resultado y conmuta a modo usuario para que
contin
ue el programa de usuario.
Los par
ametros de las llamadas del sistema se pueden pasar de varias formas:
Cargar los par
ametros en registros. Puede suceder que el n
umero de registros disponibles sea inferior al
n
umero de par
ametros.
Almacenarlos en un bloque o tabla de memoria. Solo es necesario conocer la direccion de comienzo del bloque
que es lo que se pasa como par
ametro.
Almacenarlos en una pila. El proceso invocador escribe los parametros en una pila y el n
ucleo los lee de all.
Seg
un la finalidad de las llamadas al sistema se pueden agrupar en:
Control de programas en ejecuci
on(procesos). Aqu se incluyen la llamadas para crear, ejecutar, suspender
un tiempo prefijado, abortar y terminar procesos. Tambien las usadas para sincronizar la ejecuci
on de un
proceso con la aparici
on de un evento, las llamadas para obtener y establecer los atributos de un proceso, y
las llamadas para asignar y liberar memoria.
Administraci
on de archivos o directorios. Crear, borrar, establecer atributos, etc..
Comunicaciones. Llamadas al sistema para crear o borrar una conexion de comunicacion. Tambien las
llamadas para enviar o recibir mensajes o para conectarse a dispositivos remotos.
Gesti
on de dispositivos. Las llamadas para solicitar, liberar, leer o escribir un dispositivo. Tambien las
llamadas para establecer y obtener los atributos del dispositivo.
Gesti
on de informaci
on del sistema. Aqu se encuentran las llamadas para obtener y configurar datos del
sistema, o para obtener o modificar la fecha y la hora.

1.6
1.6.1

Estructura del n
ucleo de un sistema operativo
Componentes principales de n
ucleo de un sistema operativo

La forma m
as eficiente de dise
nar e implementar un sistema operativo consiste en descomponerlo en varios
componentes o subsistemas m
as peque
nos. La mayora de los S.O. suelen de disponer de los siguientes componentes:
Subsistema de control de procesos. Maneja todo lo relativo a procesos (crear, sincronizar...) y los interbloqueos.
Subsistema de administraci
on de la memoria principal. Lleva un registro de que partes de la memoria est
an
asignadas y a que procesos. Asigna la memoria y la libera y decide que proceso acceden a ella.
Subsistema de gesti
on de archivos. Gestiona todo lo necesario de la creacion de archivos en la memoria
secundaria.
Subsistema de E/S. Este componente oculta las particularidades del hardware de los dispositivos de E/S
proporcionando una interfaz uniforme de forma que los programas de los usuarios puedan acceder a los
dispositivos de E/S con un conjunto de llamadas al sistema de lectura y escritura. Cada dispositivo de E/S
necesita un c
odigo llamado driver. Se gestionan mediante interrupciones.
5

1.6.2

Tipos de estructuras del n


ucleo

El n
ucleo de un sistema operativo se puede considerar como un conjunto logico de modulos software. Cada
m
odulo contiene la informaci
on necesaria para cumplir con las funciones de subsistema o subsistemas que implementa. Adem
as posee una interfaz bien definida, en terminos de entradas que acepta y salidas que genera, que
otros m
odulos pueden utilizar para solicitar y obtener servicios de dicho modulo.
La estructura de un s.o. queda definida por el n
umero de modulos en que se descompone y como se interrelacionan. Los principales tipos son:
Estructura monoltica.
Se caracteriza porque todos los subsistemas y las estructuras de datos del n
ucleo estan ubicadas en un solo
m
odulo. El software del n
ucleo esta escrito como una serie de procedimientos. Puede ser bastante eficiente
pero es difcil de mantener y de entender. P.e. UNIX tradicional y MS-DOS.
Estructura en m
odulos o modular.
Se caracteriza por la existencia de varios modulos que pueden contener uno o varios subsistemas. Los m
odulos
y subsistemas tienen una interfaz bien definida. Se pueden implementar con tipos de datos y objetos abstractos. Es m
as f
acil de mantener y modificar que la monoltica pero su rendimiento es menor. Ning
un sistema
usa este sistema puro, pero la estructura extensible puede considerarse un caso especial suyo.
Estructura en capas o niveles.
Se caracteriza porque el n
ucleo esta organizado en una jerarqua de capas, cada una de las cuales subyace sobre
la anterior. Cada capa i se implementa como un objeto abstracto que encapsula una serie de estructuras
de datos y la implementaci
on de las operaciones que pueden manipularla. Dichas operaciones pueden ser
invocadas por las capas de mayor nivel. Asimismo la capa i puede invocar a las operaciones de las capas de
los niveles inferiores.
El primer S.O en usarlo fue THE desarrollado en 1968 por E.W. Dijkstra y sus estudiantes. Tena 6 capas y
era un s.o. por lotes.
La principal ventajas es la sencillez de dise
no y que simplifica el proceso de depuracion verificacion. La mayor
dificultad se encuentra en definir adecuadamente los servicios de cada capa.Esta estructura suele ser menos
eficiente ya que agrega un trabajo a la llamada original.
Ning
un sistema comercial implementa esta estructura pero la agrupacion en capas es una meta hacia la cual
tienden, en un nivel de abstracci
on u otro, la mayora de s.o.
Estructura extensible
Se caracteriza por la existencia de un modulo esencial llamado n
ucleo extensible o micron
ucleo y varios
m
odulos accesorios llamados extensiones del n
ucleo.
El micron
ucleo contiene los servicios esenciales del s.o.y que son independientes del tipo se s.o. (gesti
on de
memoria a bajo nivel, comunicaci
on entre procesos, la gestion de E/S y la gestion de las interrupciones).Se
ejecutan en modo n
ucleo.
Los servicios menos esenciales, aquellos que son independientes de la arquitectura de la maquina y que
dependen del tipo de s.o., se implementan como extensiones del n
ucleo y se ejecutan en modo usuario.
Las aplicaciones de usuario y las extensiones del n
ucleo interact
uan entre ellas con el esquema cliente-servidor.
Las extensiones del n
ucleo tambien act
uan entre ellas con este esquema. Las comunicaci
on cliente/servidor
se realiza mediante el paso de mensajes a traves del micron
ucleo, que se encarga de validar los mensajes,
pasarlos a sus destinatarios y otorgar acceso al hardware. La principales ventajas son:
Manejabilidad. Cada extensi
on del n
ucleo se encarga de un servicio del sistema. Facilita la modificaci
on
y depuraci
on.
Extensibilidad. Para a
nadir nuevas caractersticas solo hay que a
nadir una extension.
Fiabilidad. Como se la extensiones se ejecutan en modo usuario, si una falla el resto puede seguir
disponible.
Soporte simult
aneo de m
ultiples sistemas operativos. El micron
ucleo proporciona una interfaz d m
aquina
virtual de bajo nivel, esto posibilita el poder soportar en una misma maquina diferentes s.o., simplemente
hay que a
nadir las extensiones del n
ucleo adecuadas.
Portabilidad. El micron
ucleo contiene todo el codigo dependiente del hardware. Solo hay que cambiarlo
para portar el s.o. a otra arquitectura hardware.
La principal desventaja es el menor rendimiento provocado por el uso del paso de mensajes como esquema de
solicitud de servicios. Ejemplos de este sistema: Mach (MacOS X Server y Digital UNIX implementan por
debajo este n
ucleo), Chorus y Windows NT.
6

Descripci
on y control de procesos

2.1

Introducci
on

El principal servicio que debe proporcionar un s.o. es posibilitar la ejecucion de los programas de los usuarios.
Para lograr este objetivo utiliza el modelo de proceso. Un proceso es un instancia de un programa en ejecuci
on
que requiere la asignaci
on de diferentes recursos para poder existir y progresas.
Los procesos pasa por diferentes estados durante su existencia.En el modelo tradicional de procesos estos solo
siguen una determinada traza o ruta de instrucciones en su ejecucion, tiene un u
nico hilo de control. Los s.o.
modernos utilizan un modelo de proceso multihilo que mejora el rendimiento del sistema.

2.2
2.2.1

Descripci
on de los procesos
Definici
on de proceso

Un programa es un archivo ejecutable que normalmente se encuentra en la memoria secundaria. Cuando es


ejecutado se convierte en una entidad activa o dinamica llamada proceso que pasa por diferentes estados y utilizando
distintos recursos del computador. Un proceso es un programa en ejecucion.
Tambien se define el termino proceso como la entidad mas peque
na que se puede asignar y ejecutar en un
procesador, es por tanto la unidad b
asica de trabaja de un sistema informatico.
Un proceso se ejecuta en prime plano(foreground) si lo usuarios pueden interaccionar con el durante la ejecuci
on.
Por el contrario un proceso en segundo plano(background) si un usuario no puede interaccionar con el durante su
ejecuci
on.
2.2.2

Espacio de direcciones de memoria l


ogica o virtual de un proceso

El espacio de direcciones de memoria l


ogica o virtual de un proceso,
tambien llamado a veces imagen del proceso o espacio de direcciones de
usuario, se divide en varias regiones, cada una de las cuales delimita una
area de direcciones contiguas de memoria l

ogica. Se distinguen al menos


tres regiones:
Regi
on de c
odigo. Tambien llamada region de texto donde reside el
c
odigo del ejecutable.
Regi
on de datos. Contiene los datos del ejecutable y se subdivide
en dos:
Regi
on de datos inicializados. Tiene un tama
no fijo.
Regi
on de datos no inicializados. Puede variar durante la ejecuci
on del proceso..
Regiones de memoria
Regi
on de pila. Se crea autom
aticamente y su tama
no es ajustado
din
amicamente en tiempo de ejecuci
on. Esta construida por marcos de pila logicos. Un marco se a
nade
a la pila cuando se llama a un funci
on y se extrae cuando vuelve de la misma. El registro de puntero de
pila almacena, dependiendo de la arquitectura, la proxima entrada libre de la pila o la u
ltima utilizada. Un
marco de pila contiene los par
ametros de la funcion, sus variables locales y la direcciones almacenadas en los
registros de la m
aquina.
Como el tama
no de la regi
on de pila y de la region de datos no inicializados pueden variar durante la ejecuci
on
se deja espacio libre adyacente a estas regiones.
Aparte de las regiones del espacio de direcciones de memoria logicas de un proceso a las que se accede en modo
usuario, existen otras regiones a las que se accede en modo n
ucleo. El nombre y n
umero de estas estructuras
depende de cada s.o.
2.2.3

Tipos de procesos

Se distinguen:
Procesos de usuario. Son los que pertenecen a programas invocados por los usuarios. Se ejecutan en modo
usuario pero pueden escalar usando llamadas al sistema. Se pueden ejecutar en primer y segundo plano.
Procesos demonio(Servicios en Windows). Son procesos no asociados a ning
un usuario que realizan tareas
peri
odicas de administraci
on del sistema. Se ejecutan en modo usuario y pueden escalar. Se suelen ejecutar
en segundo plano.
Procesos del s.o. tambien llamados procesos del sistema. Realizan tareas de administracion del sistema
operativo. Se ejecutan en modo supervisor y en segundo plano normalmente.
7

2.2.4

Estados de un proceso

El tiempo de vida de un proceso(desde su creacion hasta su finalizacion) se puede dividir en un conjunto de


estados que describen el comportamiento del proceso. El n
umero de estados y su nombre depende de cada s.o.
pero los mas habituales son:
Nuevo. El proceso ha sido creado pero no esta preparado para ejecutarse ni esta cargado en la memoria
principal.
Preparado. El proceso esta listo para ejecutarse tan pronto como el planificador del s.o. lo considere oportuno.
Ejecut
andose. El proceso est
a siendo ejecutado en el procesador.En un u
nico procesador solo puede haber
uno con este estado.
Bloqueado. El proceso espera hasta que se produce un determinado evento.
Terminado. El proceso ha finalizado su ejecucion.
En algunos s.o. hay otros dos estados importantes: preparado en memoria secundaria y bloqueado en memoria
secundaria. Son b
asicamente los mismos que preparado y bloqueado pero en la memoria secundaria.
Al espacio de memoria secundaria donde se intercambian los procesos se le llama
area o espacio de intercambio.
Los posibles estado en que puede encontrarse un proceso en un s.o. y las transiciones permitidas entre los
estados puede representarse de forma gr
afica en un diagrama de transici
on de estados.

2.3
2.3.1

Control de procesos
Estructuras de control del sistema operativo

Para poder gestionar los procesos y los recursos el s.o. guarda en unas tablas informacion sobre ellos. El
n
umero, organizaci
on e implementaci
on dependen de cada s.o. particular, pero podemos distinguir cuatro grandes
tipos:
Tabla de procesos. Almacena informaci
on de control relevante sobre cada proceso existente. Cada entrada
de la tabla de procesos, llamada bloque de control de proceso(process control block, PCB), contiene distintos
campos, por ejemplo:
Identificador del proceso. Es un n
umero entero positivo que es u
nico para cada proceso.
Identificador de usuario. Es un n
umero entero positivos que es u
nico para cada usuario.
Estado del proceso.
Contenido de algunos registros del procesador. Cuando la ejecucion de un proceso es interrumpida antes
de su finalizaci
on, es necesario disponer del contenido de estos registros para poder continuar la ejecuci
on
del proceso justo desde el punto donde fue interrumpida.
informaci
on de planificaci
on del procesador. Incluye la prioridad de planificacion del proceso, punteros
para enlazar a los procesos en diferentes colas y cualquier otro parametro de planificacion.

Informaci
on de localizaci
on de la memoria principal asignada al proceso. Esta informacion depende del
esquema de administraci
on de memoria.
Informaci
on de tipo estadstico. Tiempo de ejecucion... Estas informaciones son usadas por el s.o., entre
otras cosas, para el calculo de prioridad de planificacion del proceso.
Informaci
on de estado E/S.
Informaci
on sobre el evento por el que el proceso ha entrado en el estado bloqueado.
Tablas de memoria. Contiene informaci
on sobre el espacio asignado y el espacio libre de la memoria principal
y del
area de intercambio.
Tablas de E/S. Se utilizan para gestionar los dispositivos E/S. Contiene informacion sobre si un dispositivo
esta disponible y que proceso lo esta utilizando. Asimismo contiene informacion sobre el estado de una
operaci
on E/S y el
area de memoria principal utilizada por el.
Tablas de archivos. Contiene informaci
on sobre los archivos abiertos por los procesos, su estado actual y sus
atributos.
Aparte de estas tablas el s.o. mantiene una o varias pilas denominadas pilas de control del sistema o pilas del
sistema operativo, en cuyos marcos se almacenan parametros y datos asociados a las funciones o rutinas del s.o.
Tambien puede tener una pila de interrupciones que es utilizada por todos los manejadores de interrupciones.
Adem
as el s.o. mantiene diferentes colas para consultarlas durante la planificacion de los procesos o cuando
se produce alg
un evento. As pueden existir colas de procesos preparados, colas de procesos bloqueados por
determinados eventos...
2.3.2

Creaci
on de procesos

El s.o. es el responsable de la creaci


on de los procesos que se van a ejecutar. De forma general se pueden
distinguir los siguientes:
1. Comprobar si el proceso puede ser creado. Comprueba si existe suficiente memoria o si el usuario no ha
excedido el n
umero m
aximo de procesos que puede tener ejecutandose.
2. Asignar una entrada de la tabla de procesos para el nuevo proceso. Se le asigna un identificador numerico de
proceso.
3. Reservar espacio en memoria para el proceso. Se debe reservar espacio en la memoria principal para el espacio
de direcciones de memoria l
ogica del proceso y para la informacion de control del proceso.
4. Inicializar el bloque de control del proceso.
5. Establecer los enlaces apropiados. El s.o. debe configurar los punteros adecuados para enlazar la informaci
on
del proceso en las diferentes listas, tablas y colas que mantiene.
Las causas m
as importantes que provocan la creacion de un proceso por el s.o. son:
Arranque del sistema operativo.
Interacci
on del usuario con un interprete de comandos en un entorno de ventanas.
Inicio de un trabajo por lotes.
Un proceso en ejecuci
on invoca a una llamada al sistema para crear otro proceso. Una determinada tarea
puede plantearse para ser realizada en varias fases independientes, cada una de las cuales puede ser realizada
por un proceso.
El proceso que invoca la llamada al sistema para crear el proceso se denomina proceso padre y al proceso
creado se le denomina proceso hijo. Un proceso solo tiene un padre pero puede tener varios hijos.
En algunos s.o. , el espacio de direcciones de memoria logica del proceso hijo es un duplicado del espacio de
direcciones de memoria l
ogica del padre. Al crearse son exactamente iguales (fork) pero luego al planificarse
para ser ejecutado cambia (execve). Ejemplos son: UNIX, Linux. En otros s.o., el espacio de direcciones
de memoria l
ogica del proceso hijo es diferente al del proceso padre desde su creacion, ya que el espacio de
direcciones l
ogica del programa que se desea ejecutar se carga en el proceso hijo que se crea (CreateProcess).
Ejemplo es: Windows.
Una vez creados uno o varios procesos hijos el proceso padre dispone de tres posibilidades en terminos de su
ejecuci
on: finalizar su ejecuci
on, continuar ejecutandose concurrentemente con sus procesos hijos, bloquearse
en espera de que alguno o todos sus procesos hijo hayan finalizado.
9

2.3.3

Terminaci
on de procesos

Normalmente un proceso termina cuando ha concluido de realizar al tarea para la que fue creado. Puede
solicitar el mismo su terminaci
on al sistema operativo o puede ser este el que lo termine despues de ejecutar su
ultima instrucci
on. El s.o. tambien puede terminar el proceso si se produce un excepcion.
Otro proceso tambien puede terminar a otro proceso si posee los permisos adecuados (kill en UNIX y
TerminateProcess en Windows).
Independientemente de la causa cuando un proceso termina el s.o. debe pasar el proceso al estado terminado
y libere todos los recursos asignados al mismo.
En algunos s.o. como VMS cuando se termina un proceso se terminan todos sus hijos. En otros, como UNIX
o Windows, los procesos pueden seguir existiendo. En UNIX los procesos hijos sin padre son adoptados por el
proceso Init.
2.3.4

Cambio de proceso

La interrupci
on de la ejecuci
on de un proceso para iniciar o continuar otro se llama cambio de proceso o cambio
de contexto. Las principales causas que lo motivan son:
El proceso en ejecuci
on pasa al estado bloqueado. Mientras el proceso espera el evento que lo desbloquee se
puede ejecutar otro proceso.
La terminaci
on(voluntaria o forzada) del proceso en ejecuci
on.
El s.o. termina de atender una interrupci
on y existe un proceso en estado preparado de mayor prioridad que
el proceso actual.
El proceso en ejecuci
on ha excedido el tiempo m
aximo de ejecuci
on ininterrumpida. En los sistemas de tiempo
compartido, a cada proceso se le asigna un tiempo maximo de ejecucion ininterrumpida con objeto de poder
atender las peticiones de todos lo usuarios conectados al sistema.
Se denomina contexto de un proceso a toda aquella informacion relativa a un proceso que el s.o. necesita conocer
para poder iniciar o continuar la ejecuci
on de un proceso. Suele estar contenida en el PCB.
La implementaci
on del cambio de proceso depende de cada S.O.De forma general se puede distinguir los siguientes pasos:
1. Salvar el contexto del proceso en ejecucion en su PCB.
2. Ejecutar el algoritmo del s.o. de planificacion del procesador para seleccionar el proceso que se va a ejecutar.
3. Cargar desde el PCB el contexto del proceso seleccionado.
La operaci
on de cambio de proceso no es ni mucho menos inmediata, sino que consume un cierto tiempo,
denominado tiempo de conmutaci
on. Este tiempo depende de factores asociado al hardware como: la velocidad de
lectura/escritura de la memoria principal, el n
umero de registros del procesador que hay que salvar o cargar, la
velocidad del procesador y la existencia de instrucciones especiales en el repertorio para salvar o cargar todos los
registros.

2.4

Ejecuci
on del sistema operativo

En funci
on de la tarea o servicio realizado, el tiempo que el sistema operativo usa el procesador puede ser
contabilizado o no a un determinado proceso. El tiempo que el s.o. usa el procesador para realizar tareas y
servicios de administraci
on no se pueden contabilizar a ning
un proceso en particular.
Se denomina sobrecarga del sistema, o simplemente sobrecarga(overhead), al tiempo que el procesador se encuentra ocupado ejecutando c
odigo del s.o. asociado a tareas y servicios de administracion que no se pueden
contabilizar en ning
un proceso en particular. Es deseable que la sobrecarga sea la menor posible.
El tiempo de ejecuci
on de otras tareas del s.o. no es sencillo asignarselo a un proceso en particular. Algunos
s.o., como p.e. los basados en UNIX, optan por asignar el tiempo de atencion de una interrupcion hardware al
proceso que se encontraba ejecut
andose en el momento de producirse, aunque no este asociado a la ejecuci
on de
dicho proceso.

2.5
2.5.1

Procesos multihilos
Concepto de hilo

Un proceso se puede considerar como una entidad computacional basica que tiene asignado un conjunto de recursos y que durante su existencia sigue una determinada ruta o traza de ejecucion. Un proceso queda caracterizado
por esos elementos que se pueden tratar independientemente:
10

Conjunto de recursos asignados.


Traza de ejecuci
on. Tambien denominada hilo de control o simplemente hilo o hebra(thread). Hace referencia
a las instrucciones que ejecuta el proceso durante su vida. Tiene asignado un contador de programa y requiere
tambien otros registros para el almacenamiento temporal de variables y un registro de pila.
En los primeros s.o. (MS-DOS, primeros UNIX) cada proceso constaba de un u
nico hilo de ejecucion. Los s.o.
posteriores (Windows, Solaris, Mach y OS/2) introdujeron el modelo de proceso multihilo, un proceso poda estar
formado por m
ultiples hilos.
Los s.o. que soportan un modelo de proceso multihilo utilizan los procesos como unidad de gestion de recursos
mientras que utilizan a los hilos como unidad de asignacion del procesador. Un hilo se puede definir como una
unidad elemental de asignaci
on del procesador que sigue una determinada traza de ejecucion y que tiene asignado
una pila de usuario, un espacio de almacenamiento y un bloque de control de hilo (contiene el identificador numerico,
el estado, la propiedad de ejecuci
on del hilo y los valores de los registros). Puesto que un hilo queda caracterizado
con parte de los recursos de un proceso, a veces se les denomina proceso ligero(lightweight process).
Todos los hilos de un proceso comparten el estado y los recursos de ese proceso, se localizan en el mismo espacio
de direcciones y tiene acceso a los mismo datos.
2.5.2

Ventajas e inconvenientes

Los procesos multihilo posibilitan que puedan tener


lugar, en el entorno del mismo proceso, m
ultiples ejecuciones con un alto grado de independencia entre ellas.
La ejecuci
on de m
ultiples hilos ejecut
andose en paralelo en un proceso es an
aloga a la ejecuci
on de m
ultiples
proceso en paralelo. Pero el acercamiento multihilo tiene
varias ventajas, las principales son:
Aumento del rendimiento del sistema. La creacion,
cambio de contexto o terminaci
on de un hilo es mas
r
apido que las operaciones an
alogas con procesos.
Ahorro de recursos. La creaci
on de un hilo nuevo
requiere menos recursos que la creaci
on de un proceso nuevo.
Comunicaci
on m
as eficiente. La comunicacion entre dos procesos requiere la intervenci
on del s.o. y
la comunicaci
on entre dos hilos no.
Mayor aprovechamiento de las arquitecturas multiprocesador. En un proceso multihilo cada hilo
podra esta ejecut
andose en paralelo en cada uno
de los procesadores de la m
aquina.
Simplificaci
on de la estructura de las aplicaciones.
El multihilo introduce diversas complicaciones en la programaci
on de la aplicaci
on, la mayora asociadas a la necesidad de sincronizacion en el acceso a las estructuras de
datos que comparten los hilos.
2.5.3

Control de hilos.

Los hilos, al igual que los procesos, pueden encontrarse durante su vida en diversos estados. El estado del
proceso limita los estados en los que pueden encontrarse los hilos.
Al crear un proceso solo tiene un hilo, este puede crear otro hilos. La planificacion se realiza a nivel de hilo.
Cuando un hilo entra en el estado bloqueado, se puede planificar otro hilo del mismo proceso o de otro proceso.
Un cambio de hilo de un mismo proceso depende del tipo de implementacion de hilos que soporte el s.o.En algunas
implementaciones si un hilo se bloquea, bloquea el proceso completo.
Un proceso no puede entrar en el estado terminado hasta que no finalizan todos sus hilos.

11

2.5.4

Tipos de hilos

Se pueden distinguir dos tipos de hilos, vamos a verlos junto a sus ventajas e inconvenientes:
Hilos a nivel de usuario.
Los hilos a nivel de usuario o hilos de usuario son implementados por una biblioteca de hilos que se ejecuta
a nivel de usuario. Esta biblioteca es un paquete de rutinas para la gestion de los hilos de usuario. P.e. la
biblioteca Pthreads de POSIX.
La implementaci
on de los hilos de usuario requiere que cada proceso tenga una tabla de hilos. Cada entrada de
la tabla, tambien denominada bloque de control de hilo, mantiene informacion asociada a un hilo del proceso:
contador del programa, registro de pila,... Esta tabla es gestionada por rutinas de la biblioteca de hilos. Esta
tabla de hilos es similar a la tabla de procesos mantenida por el s.o.
La realizaci
on del cambio de hilo dentro de un mismo proceso se realiza sin necesidad de realizar un cambio
de modo y un cambio de contexto. Es mas rapido que un cambio de proceso. Como esto pasa en modo
usuario el s.o. no interviene en estas tareas, de hecho ignora por completo la existencia de hilos de usuario.
Esto proporciona las siguientes ventajas:
Portabilidad. Una aplicaci
on dise
nada como un proceso de m
ultiples hilos de usuario podra ejecutarse
en cualquier sistema operativo que soportara la biblioteca de hilos utilizada.
Mejora del rendimiento del sistema. Como no hay que conmutar de modo se disminuye la sobrecarga
del sistema.
Planificaci
on independiente. Los hilos de usuario de un proceso pueden planificarse con el algoritmo de
planificaci
on que se considere oportuno.
Las principal desventaja se manifiesta en los S.O. que solo soportan un u
nico hilo de n
ucleo, cuando un hilo
de usuario de un proceso se bloquea, bloque todo el proceso. Otra desventaja es que cuando un hilo esta
ejecutando, no se puede planificar otro hilo del mismo proceso hasta que el primero no cede voluntariamente
el uso del procesador. Eso ocurre porque no se puede acceder a las interrupciones de reloj dependientes del
s.o.
Hilos a nivel de n
ucleo
Los hilos a nivel de n
ucleo o hilos del n
ucleo, son implementados gestionados directamente por el n
ucleo del
s.o. No requieren la existencia de una biblioteca de hilos. El s.o. mantiene una u
nica tabla de hilos que
contiene los bloques de control de todos los hilos de n
ucleo existentes. Esta tabla esta implementada en el
espacio de direcciones del n
ucleo.
La principal ventaja es que si un hilo de n
ucleo se bloque se puede planificar otro del mismo proceso o de
otro proceso distinto. El principal inconveniente es que su gestion contribuye a la sobrecarga del sistema,
para resolver esto, muchos sistemas limitan el n
umero de hilos del n
ucleo que se pueden crear.
2.5.5

Principales configuraciones en funci


on del n
umero y tipo de hilos soportados por un sistema
operativo

Se pueden distinguir las siguientes configuraciones:


M
ultiples hilos de usuario sin soporte de hilos del n
ucleo. La gestion de los hilos de usuario se realiza
mediante una biblioteca de hilos en modo usuario. Un hilo bloqueado, bloquea todo el proceso, Adem
as
aunque el sistema soporte multiprocesamiento no es posible que varios hilos se ejecuten simultaneamente ya
que solamente uno de ellos puede acceder a la vez al s.o. En esta configuracion el s.o. planifica procesos, cada
proceso esta constituido por uno o varios hilos de usuario.
Un hilo del n
ucleo por cada hilo de usuario. El s.o. crea un hilo de n
ucleo por cada hilo de usuario, no se
necesita biblioteca de hilos de usuario. Ejemplos son: Solaris 10, Windows NT y OS/2.
La principal ventaja es que si un hilo se bloquea se puede planificar otro hilo del mismo proceso. El s.o.
planifica hilos del n
ucleo, cada uno asociado un hilo de usuario.
El principal inconveniente es que la creacion de hilos del n
ucleo genera sobrecarga. Por eso los s.o. limitan el
n
umero de hilos que es posible crear.
Menor n
umero de hilos del n
ucleo que hilos de usuarios. Para su implementacion se requiere una biblioteca
de hilos para gestionar los hilos de usuario. Es el programador de la aplicacion el que se encarga de establecer
el n
umero de hilos del n
ucleo que requieren los hilos de usuario en que ha descompuesto la aplicaci
on. P.e.
Solaris 7 y anteriores.
Si esta configuraci
on esta bien dise
nada tiene las ventajas de las dos configuraciones anteriores.
12

Planificaci
on de procesos

3.1

Introducci
on

El sistema operativo se encarga de planificar que proceso debe ejecutarse en el procesador siguiendo diferentes
criterios de planificaci
on. La parte del s.o. que se encarga de la planificacion de procesos se denomina planificador
y realiza est
a tarea a diferentes niveles implementando uno o varios algoritmos de planificacion.

3.2

Niveles de planificaci
on

Un s.o. con multiprogramaci


on debe distribuir y planificar adecuadamente el uso de los recursos del computador
entre todos los procesos existentes. Para hacerlo mantiene
varias colas de procesos diferentes. De forma general se
pueden distinguir los siguientes colas:
Cola de procesos en el estado preparado. Aqu se encuentran los procesos que desean acceder al procesador para iniciar o continuar su ejecucion. Pueden
existir varias colas de esta clase, cada una de las cuales
contiene procesos con un determinado rango de nivel
de prioridad de ejecuci
on.
Cola de procesos en el estado preparado en memoria secundaria. Contiene procesos que estan a la
espera de regresar a la memoria principal al estado
preparado.

Colas y niveles de planificacion


Cola de procesos en el estado bloqueado. Estos procesos est
an a la espera de poder volver al estado preparado cuando ocurra el evento por el que han entrado
en el estado bloqueado. Esta cola no tiene porque ser u
nica. Puede haber una cola por cada evento posible.
Otra opci
on es mantener colas por grupos de eventos asociado a alg
un recurso, si se trata de un dispositivo
se llama cola del dispositivo.
Cola de procesos en el estado bloqueado en memoria secundaria. Pasan al estado preparado en memoria
secundaria cuando ocurra el evento por el que se bloquearon.
Cola de trabajos por lotes o cola de entrada. Esta en la memoria secundaria y contiene los trabajos por lotes
nueves. Cada trabajo espera a que el s.o. cree un nuevo proceso para atenderlo.
El s.o. debe determinar cu
ando un proceso abandona una cola para acceder a un recurso o ingresar en otra
cola. A esto se le llama planificaci
on de procesos y al componente que lo realiza se le denomina planificador.
Se distinguen de forma general tres niveles de planificaci
on:
Planificaci
on a corto plazo.
El planificador a corto plazo o planificador del procesador o planificador (scheduler), decide que proceso en
la cola de preparados ser
a ejecutado a continuacion. Se ejecuta mas frecuentemente y debe ser r
apido y
eficiente.
Desde el punto de vista l
ogico todo planificador se puede dividir en tres componentes o elementos:
Encolador(enqueuer). El encolador incluye el proceso preparado en la de procesos preparados mediante
la configuraci
on de punteros necesarios en el bloque control de proceso. Puede asignarle una prioridad
de ejecuci
on.
Conmutador de contexto(context switcher). Guarda el contexto del proceso que es desalojado del procesador y carga el contexto del nuevo proceso a ejecutar.
Distribuidor o despachador(dispatcher). Selecciona un proceso de la cola de preparados de acuerdo
al algoritmo de planificaci
on utilizado. Tambien cede el control del procesador por lo que llama al
conmutador de contexto. El tiempo que tarda en detener un proceso y comenzar la ejecuci
on del
siguiente se llama latencia de despacho. Es deseable que ese tiempo sea corto, pero en los s.o. con n
ucleo
no expropiable, no se permite expropiar el procesador si esta ejecutando un proceso en modo n
ucleo
realizando una llamada al sistema, puede ser larga.
Las circunstancias que requieren la invocacion del planificador son:
Cuando se ha terminado de crear un nuevo proceso hijo. Se decide si se cambia a este proceso.
13

Cuando un proceso entra en el estado bloqueado en espera que se produzca alg


un evento.
Cuando se termina de atender una interrupci
on. El planificador debe elegir si continua el proceso
interrumpido o ejecuta uno distinto.
Cuando un proceso finaliza.
Planificaci
on a medio plazo.
El planificador a medio plazo o planificador de memoria o intercambiador, intercambia procesos entre las
colas en memoria principal y secundaria, o viceversa. Se ejecuta menos que el planificador a corto plazo. Es
invocado cuando queda espacio en la memoria principal o el n
umero de procesos preparados cae por debajo
de un valor lmite prefijado.
Planificaci
on a largo plazo
El planificador a largo plazo o planificador de trabajos o planificador de admisi
on, se encarga de los procesos
por lotes, decide que nuevos trabajos admitir, que consiste en crear un proceso y pasarlos a la cola de
preparados en memoria principal o secundaria.
Se invoca cuando se termina un trabajo o cuando el procesador esta un tiempo inactivo.
Los procesos siempre empiezan a ejecutarse con una r
afaga de CPU, para despues alternar entre operaciones
E/S y r
afagas de CPU. Sin un proceso esta la mayor parte del tiempo usando el procesador se dice que es un
proceso limitado por CPU. Al contrario si emplea la mayor parte del tiempo esperando operaciones de E/S
se dice que es un proceso limitado por E/S. El planificador a largo plazo debe equilibrar estos dos tipos de
trabajo para que exista una mezcla adecuada.
Se ejecuta poco frecuentemente y algunos s.o. como los basados en UNIX no lo poseen. En estos s.o. los
trabajos son admitidos mientras exista memoria principal disponible.
Conviene que los planificadores sean r
apidos y eficientes para reducir la sobrecarga y mejorar el rendimiento del
sistema. Se puede distinguir un cuarto nivel, la planificaci
on de la E/S, decide que proceso usara cada dispositivo.

3.3

Criterios generales considerados en la planificaci


on de procesos

Los objetivos deseables que debe cumplir la funcion de planificacion de procesos de un s.o. son:
Equidad. En ausencia de un esquema de prioridades, los procesos con requisitos similares deben obtener un
uso de los recursos similares. Ning
un proceso debe sufrir de inanicion.
Previsibilidad. Trabajos con caractersticas similares deben ejecutarse en tiempos similares usando recursos
similares.
Uso equilibrado de los recursos. Se debe intentar mantener ocupados todos los recursos del computador.
Proporcionalidad. Las peticiones que son percibidas por el usuario como sencillas deben emplear menos
tiempo de respuesta que las complejas ya que de lo contrario el usuario se irrita o considera que el sistema
ha dejado de responder.

3.4

Criterios considerados en la planificaci


on de procesador

El planificador del procesador utiliza alguno de los siguiente criterios para elegir que proceso sera ejecutado:
Utilizaci
on del procesador o eficacia. Fijado un intervalo de tiempo, hace referencia al tanto por ciento de
dicho tiempo que el procesador ha estado activo.
Productividad (throughput) o rendimiento. El n
umero de trabajos completados por unidad de tiempo.
Tiempo de entrega (turnaround time) o tiempo de retorno o tiempo de estancia. Es el tiempo medido que
transcurre desde que se lanza un proceso hasta que se finaliza. Es la suma del tiempo de ejecucion y el tiempo
de espera por los recursos, incluyendo el procesador.
Tiempo de espera. Es la suma de los tiempos que un proceso pasa esperando en las diferentes colas del sistema
por la obtenci
on de recursos.
Tiempo de respuesta(response time). Es el tiempo transcurrido desde que un usuario manada una orden
hasta que comienza a recibir la respuesta.
Plazo de finalizaci
on(deadline). Hace referencia al tiempo maximo preestablecido que un proceso tiene para
se completado en un sistema de tiempo real.

14

La elecci
on de los criterios a optimizar depende del s.o. Normalmente el planificador optimiza los valores medios
de los criterios que considera. Investigaciones dicen que es mas importante minimizar la varianza en el tiempo de
respuesta que minimizar el tiempo de respuesta promedio. Un sistema con un tiempo de respuesta razonable y
predecible puede ser m
as atrayente que un sistema que es mas rapido e promedio, pero que es altamente variable.
Cuando se intentan optimizar varios criterios simultaneamente, se debe tener en cuenta que pueden ser incompatibles entre si y llegar a un compromiso dando un peso a cada criterio. El valor del peso dependera del uso y
tipo del s.o.

3.5

Expropiabilidad del procesador

Seg
un si se permite que un proceso pueda usar el procesador ininterrumpidamente todo el tiempo que desee la
planificaci
on puede ser:
Planificaci
on no expropiativa. El proceso puede usar el procesador ininterrumpidamente.
Planificaci
on expropiativa. El proceso puede ser interrumpido a favor de otro proceso. La decisi
on de
expropiar se puede tomar cuando llega un nuevo proceso, cuando llega un interrupcion que produce que
un proceso pase al estado preparado o periodicamente. En este u
ltimo caso el sistema posee un reloj que
produce interrupciones peri
odicas. Normalmente se permite la ejecucion del proceso un cierto tiempo m
aximo
llamado cuanto (quantum), cuando se llega a el (pueden ser varias o una interrupcion de reloj) se ejecuta el
planificador.
La planificaci
on expropiativa provoca m
as sobrecarga. Este tipo de planificacion se suelen usar en los sistemas de
tiempo compartido o interactivos. En los sistemas por lotes suele ser no expropiativa o con cuantos grandes. En los
sistemas de tiempo real no suele hacer falta ya que los procesos hacen sus trabajo y se bloquean frecuentemente.

3.6

Algoritmos de planificaci
on

La planificaci
on implementa uno o varios algoritmos de planificacion, las caractersticas de los algoritmos m
as
usuales son:
3.6.1

Algoritmo de planificaci
on del primero en llegar-primero en ser servido FCFS(First-Come
First-Served)

Este algoritmo cede el uso del procesador al primer proceso que lo solicite, este puede utilizarlo ininterrumpidamente hasta que termine o se bloquee. Es no expropiativo.
Solo necesita una cola de proceso FIFO para implementarlo y presenta las siguientes desventajas:
El tiempo de espera promedio es bastante grande y tiene mucha varianza si los procesos son muy diferentes.
Funciona mejor para los procesos largos que para los cortos.
Favorece a los procesos limitados por el procesador frente a los procesos limitados por E/S. Provoca una
utilizaci
on poco eficiente de los dos.
Estas desventajas lo desaconsejan como u
nico algoritmo de planificacion, pero se usa combinado con otros. Si es
u
nico suele ser en sistema por lotes.
3.6.2

Planificaci
on de primero el proceso m
as corto. SJF (Shortest Job First) o SPN (Shortest
Process Next)

Es un algoritmo de tipo no expropiativo que selecciona el proceso con tiempo de procesamiento mas corto para
ser ejecutado.Si dos procesos tardan lo mismo se usa FCFS entre ellos. El tiempo de procesamiento en un sistema
por lotes es el tiempo total de ejecuci
on del trabajo y un sistema de tiempo compartido es la duracion de la pr
oxima
r
afaga de procesamiento.
El algoritmo SJF minimiza el tiempo de espera medio de un conjunto de procesos. Se suele usar en sistemas
operativos por lotes tanto en la planificaci
on a largo plazo como a corto plazo.
Una de las principales desventajas del SJF es la necesidad de conocer por adelantado el tiempo de procesamiento
de cada proceso.Esto es algo difcil de estimar con exactitud.
En un sistema por lotes no es problema porque se suelen ejecutar el mismo tipo de trabajos y se almacenan
estadsticas. En los sistemas de tiempo compartido, el sistema puede estimar la duracion de las siguientes r
afagas
de CPU utilizando la duraci
on de la r
afagas anteriores. Se utiliza com
unmente un predictor promedio exponencial:
Mn+1 = tn + (1 )Mn

15

Donde n = 1, 2, ..., M n + 1 es el valor promedio estimado para la proxima rafaga de procesador, Mn es el valor
promedio estimado para la u
ltima r
afaga de procesador, tn es la duracion de la u
ltima rafaga de procesador y
es un par
ametro comprendido entre 0 y 1 que permite controlar el peso de la historia reciente y pasada de la
predicci
on.
Otra forma de escribir dicha ecuaci
on es:
Mn+1 = tn + (1 )tn1 + ... + (1 )i tni + ... + M1
Donde M1 es un valor inicial que se fija a priori. Puesto que es menor que 1, conforme mas antigua es una
medida menos contribuye a la estima.
Las implementaciones SJF requieren la obtencion de medidas bastante precisas de la duracion de las rafagas del
procesador, el calculo del predictor promedio exponencial y mecanismos de realimentacion adicionales para corregir
el error de estima del predictor. Este algoritmo produce sobrecarga en el sistema. Cuanto mas precisa se desee que
sean las estimas m
as sobrecarga.
Otra desventaja es que los procesos largos pueden sufrir inanicion, los procesos largos puede que nunca sean
ejecutados.
3.6.3

Planificaci
on de proceso con menor tiempo restante. SRT (Shortest Remaining Time Next

Es la versi
on expropiativa de SJF. Siempre selecciona para ser ejecutado al proceso con menor tiempo restante
de ejecuci
on.
Se suele utilizar en sistemas por lotes. Requiere estimacion de los tiempos restantes de ejecucion y puede
producir inanici
on en los procesos largos.
3.6.4

Planificaci
on de turno rotatorio (round robin) o cclico

Es un algoritmo similar al FCFS pero de tipo expropiativo. Se asigna el uso ininterrumpido del procesador
un proceso durante una cantidad fija de tiempo denominada cuanto (quantum) o rodaja de tiempo (time slice).
Cuando finaliza un cuanto se genera un interrupcion de reloj que interrumpe el proceso actual y se pasa a ejecutar
el pr
oximo de la cola de preparados. El proceso interrumpido se coloca al final de la cola.
En este algoritmo es clave la duraci
on del cuanto. Si el cuanto es muy peque
no, se producen cambios de contexto
frecuentemente lo que aumenta al sobrecarga. Si es muy grande degenera en un algoritmo FCFS.
Lo recomendable es que el cuanto sea ligeramente mayor al tiempo promedio de duracion de una r
afaga de
procesador.
Es un algoritmo sencillo que se dise
no para los sistemas de tiempo compartido. Es un algoritmo justo ya que
a todos lo procesos, independientemente, de su naturaleza, les asigna el mismo tiempo de uso del procesador. Sin
embargo, el tiempo de respuesta promedio, el tiempo de retorno promedio y el tiempo de espera promedio pueden
ser largos.
3.6.5

Planificaci
on basada en prioridades

El algoritmo asigna a cada proceso en el momento de su creacion una determinada prioridad de ejecuci
on en
la forma de un n
umero entero positivo.En el caso de que varios procesos esten en el mismo nivel de prioridad se
usa otro algoritmo distinto.
La asignaci
on de prioridades se puede realizar en funcion de factores internos (requerimientos de memoria,
duraci
on promedio de la r
afaga de procesador o de la rafaga E/S, modo de ejecucion, limitaciones temporales y el
n
umero de archivos abiertos) o factores externos al sistema (el tipo de proceso y la importancia del usuario al que
pertenece el proceso).
Si la prioridad no cambia durante la vida del proceso se dice que la asignacion de prioridades es estatica. En
caso contrario se dice que la asignaci
on de prioridades es dinamica.
El algoritmo de planificaci
on puede ser expropiativo o no expropiativo. Si es expropiativo se dice que esta
guiado por eventos(event-driven).
Uno de los problemas es que un proceso con prioridad baja puede sufrir inanicion. Una solucion a este problema
la proporciona la tecnica llamada como envejecimiento de procesos (aging), que consiste en ir aumentando la
prioridad del proceso conforme m
as tiempo estan en el sistema a espera de procesador. Otra forma de prevenir
es disminuir en cada interrupci
on de reloj la prioridad del proceso en alta prioridad de ejecucion. Otra forma es
aplicar cuantos m
aximos de procesador para cada proceso.
Otro problema que se puede dar es el fen
omeno conocido como inversi
on de prioridades, que se produce cuando
un proceso de mayor prioridad tiene que esperar un tiempo largo para usar un recurso ya que esta siendo usado
por un proceso de menor prioridad. Este problema se puede resolver mediante la tecnica conocida como traspaso o
herencia de prioridad. Consiste en que cuando un proceso de mayor prioridad se bloquea en espera del uso de un
recurso bloqueado por un proceso de menor prioridad, el primer proceso traspasa su nivel de prioridad al segundo
proceso para que termine y libere el recurso.

16

3.6.6

Planificaci
on basada en m
ultiples colas de prioridad.

Si a la planificaci
on basada en prioridades le adicionamos varias colas de procesos preparados o colas de prioridad,
cada una de las cuales solo pueda contener procesos de una determinada prioridad o dentro de un rango de
prioridades.
Con este algoritmos siempre se ejecuta un proceso perteneciente a la cola de preparados con mayor prioridad.
Solo cuando dicha cola est
a vaca se puede planificar un proceso perteneciente a una cola de preparados de menor
prioridad. Un proceso solo puede pertenecer a una cola a lo largo de su vida. Ademas para cada cola se puede
usar un algoritmo de planificaci
on diferente.
Este algoritmo puede producir inanici
on de los procesos pertenecientes a las colas de menor prioridad si las
colas de mayor prioridad nunca se quedan vacas. Para evitar esto se asigna un porcentaje de tiempo de procesador
a cada cola.
3.6.7

Planificaci
on basada en m
ultiples colas de prioridad y realimentaci
on.

Si al algoritmo de planificaci
on basada en m
ultiples colas de prioridad le a
nadimos que los procesos puedan
cambiar din
amicamente de prioridad, lo cual se conoce como realimentaci
on, tenemos este algoritmo.
La implementaci
on de este algoritmo requiere definir un mecanismo que regule como se modifica dinamicamente
la prioridad de los procesos durante su tiempo de existencia.
Un metodo consiste en que los procesos empiezan en la cola de mayor prioridad y vayan bajando una cola
conforme consuman un cuanto de procesador. Cuando llega a la cola de menor prioridad, cada vez que consuma
un cuanto volver
a a ella. El algoritmo de planificacion de la cola de menor prioridad es de tipo rotatorio. El resto
de las colas se pueden planificar internamente como un algoritmo FCFS.
Esta implementaci
on favorece a los procesos cortos. El tiempo de retorno de un proceso largo se puede alargar
excesivamente, incluso puede dar inanici
on si las colas de mayor prioridad nunca se quedan vacas.
Una posible mejora consiste en asignar a cada cola un cuanto de mayor tama
no. Esta no mejora que no se
produzca inanici
on de proceso. Para evitarla se pude usar la tecnica de envejecimiento de procesos.
Otra forma de implementar la realimentacion, como en el UNIX clasico, es: a cada proceso se le asigna una
prioridad en funci
on de alg
un criterio externo y entre en su cola. Cada un cierto n
umero de interrupciones de reloj,
se recalcula las prioridades respecto a un criterio interno.La prioridad cambia y se asignan los procesos a la cola
correspondiente.
Estos dos procesos definen una planificaci
on que sera del tipo turno rotatorio con m
ultiples colas de prioridad
y realimentaci
on.
Este algoritmo es muy flexible pero complejo de implementar.
3.6.8

Planificaci
on de tiempo limite

En los sistemas de tiempo real estrictos el tiempo de servicio de algunos procesos debe completarse en un
determinado plazo(deadline) o tiempo limite. Para lograr este objetivo el planificado solo admite un proceso en la
cola de preparados si es capaz de garantizar que se ejecutara en su tiempo limite, teniendo en cuenta los tiempos
de servicio y plazos de los procesos ya existentes en dicha cola. El planificador debe conocer por adelantado para
cada proceso su tiempo de servicio y su tiempo lmite de ejecucion.
El algoritmo de planificaci
on de primero el proceso de tiempo lmite cercano minimiza el n
umero de procesos
que no se ejecutan dentro de su plazo.
3.6.9

Elecci
on del algoritmo de planificaci
on

No es trivial elegir el algoritmo de planificacion, primero debemos fijar los criterios de seleccion, y luego evaluar
los posibles algoritmos de planificaci
on usando alg
un metodo de evaluacion como:
Modelado determinista. Consiste en evaluar cada algoritmo de planificacion candidato usando una carga de
trabajo(conjunto de programas a ejecutar) predeterminada e identica para todos ellos. Es un metodo r
apido y
sencillo, pero es difcil determinar una carga de trabajo que sea suficientemente representativa de la realidad.
Modelado analtico mediante sistema de colas. Este metodo consiste en obtener un modelo analtico del
sistema que pueda ser expresado mediante un conjunto de ecuaciones cuya resolucion permite obtener los
ndices de prestaciones del sistema. Cada recurso hardware del sistema y su cola de software asociada
se modela como una estaci
on de servicio que consta de dos elementos: un servidor y una cola de espera.
Cada estaci
on de servicio tiene como parametros una determinada tasa de llegada y una tasa de servicio de
peticiones. El conjunto formado por las estaciones de servicio y sus clientes forma un sistema de colas. Se
puede analizar usando la teora de colas. La desventaja es que la simplificacion introducida con respecto al
sistema real hace que los resultados obtenidos puedan no ser muy exactos.

17

Simulaci
on. Consiste en la construcci
on de un programa que reproduce el comportamiento temporal del
sistema bas
andose en sus estados y transiciones. Los resultados se obtienen por extraccion de estadsticas del
comportamiento del sistema. Requiere mucho mas tiempo y puesta a punto que los otros metodos.

3.7

Planificaci
on de hilos

Depende de los tipos de hilos soportados por el s.o. Si u


nicamente soporta hilos a nivel de usuario, el s.o. no lo
ve y no hace nada con ellos, planifica procesos. Dentro de cada proceso, este puede usar el planificado que considere
oportuno para sus hijos.
Si se soportan hilos del n
ucleo, el s.o. planifica estos hilos usando alg
un determinado algoritmo de planificaci
on.
El planificador puede tener en cuenta consideraciones relativas al rendimiento del sistema a la hora de planificar
hilos del n
ucleo de igual prioridad.
Por otra parte, en sistemas de configuraci
on del tipo de menor n
umero de hilos del n
ucleo que hilos de usuarios,
aparte de las dos planificaciones comentadas, es necesario implementar con la biblioteca de hilos una planificaci
on
local para establecer que hilo de usuario puede usar el hilo del n
ucleo.

18

Sincronizaci
on y comunicaci
on de procesos

4.1

Introducci
on

La ejecuci
on concurrente de procesos presenta varios problemas, todos ellos asociados al hecho de que no es
posible predecir la velocidad de ejecuci
on de un proceso, que es funcion de la poltica de planificacion de s.o., la
forma de tratar las interrupciones y de la actividad de los procesos en el sistema. El acceso a recursos globales
compartidos(memoria, dispositivos E/S, etc) debe controlarse de alguna forma si se desea que el resultado de la
ejecuci
on sea independiente de la velocidad de ejecucion del proceso con respecto a los otros procesos concurrentes.
La forma de controlar el acceso de procesos concurrentes a un recurso global compartido consiste en marcar
el recurso como un recurso crtico. Para ello hay que especificar que el conjunto de instrucciones de c
odigo del
programa que utiliza dicho recurso es una secci
on crtica del programa, y garantizar la exclusi
on mutua en el uso
de la secci
on crtica asociada a dicho recurso compartido, es decir, garantizar que solo un proceso a la vez pueda
estar ejecutando una secci
on crtica del programa.
La exclusi
on mutua puede conseguirse mediante soluciones software, como el algoritmo de Peterson o el uso
de un cerrojo y alternancia estricta, o con soluciones hardware, como el bloqueo de interrupciones o el uso de
instrucciones m
aquina especiales. Los s.o. ofrecen como soluciones los sem
aforos y el paso de mensajes, que
son mecanismos que tambien se pueden usar para la sincronizacion de procesos y garantizar la exclusion mutua.
Algunos compiladores de lenguajes de alto nivel soporten el uso de monitores, que son mecanismos basados en
sem
aforos que garantizan por construcci
on la exclusion mutua y se pueden usar para la sincronizacion de procesos.
La mayora de los s.o. disponen de mecanismos de comunicacion entre procesos, como p.e: paso de mensajes o
el uso de memoria compartida.

4.2
4.2.1

Exclusi
on mutua
Interacci
on entre procesos concurrentes

En un sistema de multiprogramaci
on se ejecutan m
ultiples procesos concurrentes. Seg
un la forma y grado de
interacci
on se distingue:
Procesos independientes. Se ejecutan sin tener en cuenta la existencia de otros procesos. Ni intercambian
informaci
on ni colaboran entre s.
Procesos cooperantes. Intercambian informacion o colaboran entre s para compartir un recurso o realizar
alguna tarea.
Se distingue:
Cooperaci
on directa. Los procesos conocen la existencia e identidad de los procesos con los que colaboran,
lo cual hacen principalmente mediante el intercambio de informacion., lo que posibilita la comunicaci
on
y sincronizaci
on de procesos.
Cooperaci
on indirecta. Los procesos no conocen la existencia e identidad de los otros procesos y en
consecuencia no se comunican con ellos. Saben que acceden a recursos compartidos y por ello los
manipulan adecuadamente para garantizar que dichos recursos queden en un estado coherente. Cooperan
indirectamente entre s para garantizar la integridad de recursos compartidos.
4.2.2

Condiciones de carrera

Los procesos independientes tambien se ejecutan concurrentemente y acceden a recursos compartidos, en su


caso no cooperan sino que compiten por los recursos.
Un problema denominado condici
on de carrera(race condition) que surge cuando m
ultiples procesos independientes se ejecutan concurrentemente y acceden para leer o escribir en un recurso compartido, es que el resultado
final de la ejecuci
on depende del orden en que se hayan planificado los procesos.
4.2.3

Secciones crticas

Se denomina secci
on crtica o regi
on crtica de un proceso a una instruccion o conjunto de instrucciones secuenciales de su c
odigo que requieren manipular un recurso compartido con otros procesos. Dentro del c
odigo de
un programa pueden existir varias secciones crticas.
4.2.4

Descripci
on de la exclusi
on mutua

Las condiciones de carrera se evitaran si se garantizase que cuando un proceso esta ejecutando unas instrucciones
de una secci
on crtica asociada a un recurso, ning
un otro proceso puedan usarlo. Es decir, se requiere exclusi
on
mutua, que el uso de un recurso por parte de un proceso excluya su uso para los restantes.

19

El interbloqueo o bloqueo mutuo de dos o mas procesos, se produce p.e. cuando dos procesos necesitan dos
recursos para realizar cierta funci
on. Si uno posee un recurso y el otro posee el segundo ninguno puede progresar,
ambos se quedan esperando por el recurso que necesitan y no pueden liberar el recurso que poseen hasta obtener
el otro recurso y realizar la funci
on correspondiente.
La inanici
on de un proceso se produce cuando un proceso no puede progresar al necesitar un recurso al que
nunca llega a acceder porque el s.o. siempre lo relega dando prioridad a otros procesos.
Para evitar esos problemas la exclusi
on mutua debe cumplir los siguientes requisitos:
1. Solo se puede ejecutar a la vez una u
nica seccion crtica asociada a cierto recurso compartido R.
2. No puede realizar suposiciones sobre la velocidad relativa y prioridad de ejecucion de los procesos concurrentes.
3. Garantizar que un proceso que no est
a ejecutando una seccion crtica asociada a un recurso no impide o
bloquea el acceso a otros procesos.
4. Asegurar que ning
un proceso se quede esperando indefinidamente a poder acceder a un seccion crtica asociada
a un recurso. Esto requiere que un proceso no permanezca dentro de su seccion crtica por un tiempo ilimitado.
5. Si ning
un proceso est
a dentro de una seccion crtica asociada a un recurso, entonces si un proceso desea entrar
se le debe conceder r
apidamente.
4.2.5

Soluciones software a la exclusi


on mutua

Se van a describir dos posibles soluciones, ambas se caracterizan porque no presuponen el apoyo de s.o. o del
hardware del computador para su implementacion.
El principal inconveniente de ambas soluciones es que cualquier proceso que desea entrar en una seccion crtica,
si esta siendo ejecutada por otro proceso, debe esperar a que este termine mediante la ejecucion de un bucle que
comprueba el valor de una condici
on basada en el valor de una o varias variables que hacen las veces de cerrojo(lock).
Cuando el valor del cerrojo se comprueba dentro de un bucle se habla de cerrojo con vuelta(spinlock). A dicho tipo
de espera se le denomina espera activa(busy waiting) o espera cclica(spin waiting).
Uso de un cerrojo y alternancia estricta
Soluci
on por software a la exclusi
on mutua mediante el uso de un cerrojo y alternancia estricta para el caso
de dos procesos:
#d e f i n e TRUE=1
i n t t u r n o =0; / V a r i a b l e g l o b a l que s e usa como c e r r o j o /
void procesoA ( )
{
while (TRUE) { / Bucl e i n f i n i t o /
/ s e c c i o n no c r i t i c a /
while ( t u r n o !=0) ; / Bucl e de e s p e r a /
/ s e c c i o n c r i t i c a /
t u r n o =1;
/ s e c c i o n no c r i t i c a /
};
};
void p r o c e s o B ( )
{
while (TRUE) { / Bucl e i n f i n i t o /
/ s e c c i o n no c r i t i c a /
while ( t u r n o !=1) ; / Bucl e de e s p e r a /
/ s e c c i o n c r i t i c a /
t u r n o =0;
/ s e c c i o n no c r i t i c a /
};
}

Esta soluci
on garantiza la propiedad exclusiva de un recurso, que es el primer requisito para garantizar la
exclusi
on mutua. Posee dos inconvenientes. La velocidad de ejecucion de los procesos viene limitada por
la velocidad del m
as lento. Por otro lado si un proceso falla antes de poder cambiar la variable turno al
identificador del otro proceso, entonces este permanecera bloqueado infefindamente.
Algoritmo de Peterson
En Dijkstra, 1965 se describe la soluci
on software desarrollada por T.Dekker para obtener exclusion mutua
sin necesidad de asegurar una alternancia estricta de procesos. Dicha solucion, conocida como algoritmo de
Dekker, en su forma original solo es aplicable a dos procesos y es no es sencillo extenderla para un numero
superior.
En 1981 G.L. Peterson obtuvo una solucion simple y elegante para el problema de garantizar completamente
la exclusi
on mutua de un n
umero arbitrario de procesos concurrentes. Es conocida como el algoritmo de
Peterson. La ilustramos para dos procesos:
20

#d e f i n e FALSE 0
#d e f i n e TRUE 1
int turno ;
int p e r i c i o n r e c [ 2 ] ;
void a c c e s o s c ( i n t p i d )
{
int o t r o p i d ;
o t r o p i d = 1 pid ;
p e t i c i o n r e c [ p i d ]=TRUE;
turno = o t r o p i d ;
while ( t u r n o == o t r o p i d && p e t i c i o n r e c [ o t r o p i d ] == TRUE) ;
}
void s a l i d a s c ( i n t p i d )
{
p e t i c i o n r e c [ p i d ] = FALSE ;
}
void procesoA ( )
{
while (TRUE)
{
/ s e c c i o n no c r i t i c a /
acceso sc (0) ;
/ s e c c i o n c r i t i c a /
s a l i d a s c (0) ;
/ s e c c i o n no c r i t i c a /
}
}
void p r o c e s o B ( )
{
while (TRUE)
/ s e c c i o n no c r i t i c a /
acceso sc (1) ;
/ s e c c i o n c r i t i c a /
s a l i d a s c (1) ;
/ s e c c i o n no c r i t i c a /
}
}
void main ( )
{
p e t i c i o n r e c [ 0 ] = FALSE ;
p e t i c i o n r e c [ 1 ] = FALSE ;
e j e c u c i o n c o n c u r r e n t e ( procesoA , p r o c e s o B ) ;
}

4.2.6

Soluciones a la exclusi
on mutua con apoyo del hardware

Describimos dos soluciones:


Uso de instrucciones m
aquina especiales
Los computadores disponen en su repertorio de instrucciones de instrucciones maquina que bloquean el uso
del bus. Esto garantiza que si un procesador tiene acceso a una direccion de memoria, ninguno m
as tiene
acceso.
Las instrucciones m
aquina se caracterizan por ser at
omicas, es decir, se ejecutan en un u
nico ciclo de instrucci
on que no puede ser interrumpido, por lo que se ejecucion siempre se completa.
El principal inconveniente es la espera que realiza un proceso para entrar en su seccion crtica es activa.
Adem
as puede provocar inanici
on de procesos. La eleccion de que proceso entra en la seccion crtica es
arbitraria y puede quedarse alguno relegado indefinidamente. Otro problema es que pueden aparecer interbloqueos.
Bloqueo de interrupciones
Consiste en que un proceso, antes de entrar en una region crtica ejecuta una instruccion especial para
bloquear el mecanismo de interrupciones (incluso las mas prioritarias y el reloj) as ninguna interrupci
on ser
a
atendida.
Es muy simple de implementar pero presenta serios inconvenientes: el rendimiento del sistema se puede
degradar al no permitir las instrucciones prioritarias, se deja en manos del proceso la decision de ceder el
procesador y si nunca lo devuelve se cuelga el sistema.
Esta soluci
on no sirve en caso de sistemas multiprocesadores.

21

4.3
4.3.1

Sem
aforos
Definici
on

Los sem
aforos son un mecanismo de sincronizacion de procesos concurrentes gestionado por los s.o. Un sem
aforo
es una variable, p.e. S, que almacena un valor en entero sobre el que es posible realizar tres operaciones b
asicas:
Asignaci
on de un valor inicial entero N no negativo al semaforo. Es decir, S=N.
P(S). Esta operaci
on disminuye en una unidad el valor del semaforo.Es decir, S=S-1. Si el valor resultante
es un n
umero negativo entonces el proceso que ha invocado esta operacion es a
nadido a la cola de procesos
bloqueados asociado al sem
aforo y se bloquea.
V(S). Esta operaci
on incrementa en una unidad el valor del semaforo, es decir, S=S-1. Si el valor resultante
es mayor o igual a 0 entonces se elimina de la cola asociada al semaforo uno de los procesos bloqueados, y se
le despierta, lo que hace que pase al estado preparado para su ejecucion.
Las operaciones P derivan de las palabras holandesas probaren(prueba) y verhogen(incremento). Se suele usar
wait(wait sem) para P y signal(signal sem) para V. Cuando un proceso quiere usar un recurso regulado por
un sem
aforo y esta ocupado debe esperar (wait) a que este libre. Cuando el proceso finaliza, avisa a los otro
transmitiendo una se
nal (signal) va el sem
aforo. init sem(S;N) inicializa el semaforo S con el valor N.
Este funcionamiento corresponde a un sem
aforo general o sem
aforo con contador. Un version simplificada es el
caso del sem
aforo binario (mutex), que u
nicamente puede tomar los valores 0 y 1. Las operaciones se redefinen as:
wait sem(S). Comprueba el valor de (S). Si S=0, entonces el proceso es colocado en cola de procesos bloqueados asociado al sem
aforo y se bloquea. Si S=1, entonces pone el semaforo a 0 y el proceso puede continuar su
ejecuci
on.
signal sem(P). Comprueba si la cola asociada al semaforo esta vaca. Si es as pone el semaforo a 1 y
contin
ua su ejecuci
on. En caso negativo, entonces el s.o. elimina de la cola del semaforo a uno de los proceso
bloqueado, y lo despierta lo que hace que pase al estado preparado para ejecucion.
Por otra parte, un sem
aforo binario solamente puede ser inicializado a 0 o 1.
4.3.2

Implementaci
on

Para realizar una operaci


on sobre un sem
aforo un proceso tiene que realizar una llamada al sistema. El s.o. se
encarga de asignar las estructuras de datos necesarias para los semaforos y de realizar operaciones sobre ellos.
Las operaciones wait sem y signal sem se implementan como primitivas que se ejecutan de forma at
omica,
se ejecutan en un u
nico ciclo de instrucci
on que no puede ser interrumpido. El n
ucleo tiene que garantizar que
dos procesos no pueden realizar simult
aneamente dos operaciones sobre el mismo semaforo. Se ha de resolver un
problema de exclusi
on mutua.
En los sistemas con un solo procesador se usa el bloqueo de interrupciones, ya que son operaciones cortas que no
perturban en exceso. En los sistemas multiprocesador se utiliza alguna instruccion especial, aunque esto requiere
de espera activa no es un problema y que no requieren mucho tiempo de uso del procesador. Si el procesador no
dispone de instrucci
on especial se usa alguna solucion software, p.e. el algoritmo de Peterson.
El s.o. se encarga de implementar y gestionar la colas de procesos asociadas a los semaforos. La implementaci
on
es sencilla, simplemente se utilizan punteros en el bloque de control de un proceso bloqueado, para enlazar l proceso
anterior y posterior en la cola. La cola se gestiona con cualquier algoritmo, uno de los mas utilizados es un algoritmo
FIFO, ya que asegura una espera limitada para los procesos de la cola.
4.3.3

Utilidad de los sem


aforos
Obtenci
on de la exclusi
on mutua
Hay que usar tantos sem
aforos como recursos distintos compartan, a traves de regiones crticas, los procesos
concurrentes. Cuando un proceso desea entrar a una region crtica ejecuta wait sem(S), cuando finaliza la
ejecuci
on ejecutar
a signal sem.
Cuando existen varias instancias de un mismo recurso (p.e. N buffers) entonces se puede permitir N procesos
accediendo al mismo recurso, es decir, ejecutando secciones crticas. El semaforo se inicializara al n
umero N
de instancias de dicho recurso.
Soluci
on a la exclusi
on mutua de dos procesos usando un semaforo:
#d e f i n e TRUE 1
semaforo S ;
void procesoA ( )
{
while (TRUE)

22

{
/ s e c c i o n no c r i t i c a /
wait sem ( S ) ;
/ s e c c i o n c r i t i c a a s o c i a d a a l r e c u r s o R /
signal sem (S) ;
/ s e c c i o n no c r i t i c a /
}
}
void p r o c e s o B ( )
{
while (TRUE)
{
/ s e c c i o n no c r i t i c a /
wait sem ( S ) ;
/ s e c c i o n c r i t i c a a s o c i a d a a l r e c u r s o R /
signal sem (S) ;
/ s e c c i o n no c r i t i c a /
}
}
void main ( )
{
init sem (S , 1 ) ;
e j e c u c i o n c o n c u r r e n t e ( procesoA , p r o c e s o B ) ;
}

Sincronizaci
on de procesos
Para sincronizar procesos solo es necesario que en el codigo de los procesos a sincronizar aparezca una u
nica
operaci
on sobre el sem
aforo. wait sem(S) en uno para quedarse a la espera de un evento y signal sem(S)
en el otro para notific
arselo al primero.
Sincronizaci
on de dos procesos concurrentes utilizando un semaforo:
#d e f i n e TRUE 1
semaforo S ;
void procesoA ( )
{
while (TRUE)
{
...
w a i t s e m ( S ) ; / Para b l o q u e a r s e en e s p e r a de un e v e n t o /
...
}
}
void p r o c e s o B ( )
{
while (TRUE)
{
...
s i g n a l s e m ( S ) ; / N o t i f i c a c i o n d e l e v e n t o /
...
}
}
void main ( )
{
init sem (S , 0 ) ;
e j e c u c i o n c o n c u r r e n t e ( procesoA , p r o c e s o B ) ;
}

4.3.4

Problemas potenciales asociados a un mal uso de los sem


aforos

Lo sem
aforos son muy u
tiles pero su utilizacion requiere sumo cuidado y pericia por parte del programador.
La colocaci
on inadecuada de las operaciones wait sem y signal sem pueden producir errores de temporizaci
on y
de funcionamiento que pueden ser difciles de detectar, ya que solo se producen bajo determinadas secuencias de
ejecuci
on, las cuales no se dan siempre. Algunos problemas y sus efectos:
Intercambiar el orden. En este caso no se garantizara la exclusion mutua.
Cambiar la operaci
on signal sem por wait sem, duplicando la u
ltima. Se producira un interbloqueo, ya
que el proceso que esta usando la secci
on critica se volvera a bloquear y cualquier otro proceso que intente
acceder tambien se bloqueara.
Olvidarse la operaci
on signal sem. Producira interbloqueo, ya que el proceso nunca libera el recurso.
Olvidarse la operaci
on wait sem. No se garantiza la exclusion mutua.

23

4.4

Problemas cl
asicos de sincronizaci
on de procesos concurrentes

Se van a plantear y resolver mediante el uso de semaforos dos problemas clasicos:


4.4.1

El problema de los productores y consumidores

Sup
ongase un conjunto de procesos concurrentes cooperativos que comparten un buffer de tama
no limitado.
Unos procesos, los productores, escriben datos en el buffer y otros procesos, los consumidores extraen datos del
buffer, es decir, primero leen y luego borran el dato. La velocidades de produccion y extraccion no tienen por que
ser iguales. Se desea dise
nar un protocolo de sincronizacion entre los productores y los consumidores de tal forma
que los datos sean extrados en el mismo orden en que son escritos, FIFO.
Para resolver esto vamos a usar tres sem
aforos:
Sem
aforo acceso. Este es un sem
aforo binario se va a encargar de resolver el problema de exclusion mutua
que se produce en el recurso compartido, en este caso el buffer.
Sem
aforo ocupado. Este es un sem
aforo general que lleva la cuenta del espacio ocupado en el buffer. Si vale
0 significa que esta vaco el buffer.
Sem
aforo disponible. Este es un sem
aforo general que lleva la cuenta del espacio disponible en el buffer.
Si vale 0 significa que esta lleno el buffer.
Esta es la soluci
on propuesta.
#d e f i n e TRUE 1
#d e f i n e N 100
/ Tamanyo d e l b u f f e r /
semaforo binario acceso ;
s e m a f o r o ocupado , d i s p o n i b l e ;
void p r o d u c t o r ( )
{
i n t dato ;
while (TRUE)
/ Bucl e i n f i n i t o /
{
dato=p r o d u c i r d a t o ( ) ;
/ Generar d a t o /
wait sem ( d i s p o n i b l e ) ;
/ Comprueba s i e s t a l l e n o . /
/ Entrar en l a s e c c i o n c r i t i c a /
wait sem ( acceso ) ;
e s c r i b i r b u f f e r ( dato ) ;
/ E s c r i b i r d a t o en e l b u f f e r /
/ S a l i r de l a s e c c i o n c r i t i c a /
signal sem ( acceso ) ;
s i g n a l s e m ( ocupado ) ;
/ A v i s a r a l consumidor que ha e s c r i t o un d a t o /
}
}
void consumidor ( )
{
i n t dato ;
while (TRUE)
/ Bucl e i n f i n i t o /
{
w a i t s e m ( ocupado ) ;
/ Comprueba s i e s a v a c i o /
wait sem ( acceso ) ;
/ Entra en l a s e c c i o n c r i t i c a /
l e e r b u f f e r ( dato ) ;
/ E x t r a e d a t o d e l b u f f e r /
signal sem ( acceso ) ;
/ S a l i r de l a s e c c i o n c r i t i c a /
signal sem ( disponible )
/ Avisa a l p r o d u c t o r que ha l i b e r a d o e s p a c i o /
dato=c o n s u m i r d a t o ( ) ;
/ Consumir d a t o /
}
}
void main ( )
{
i n i t s e m ( acceso , 1) ;
i n i t s e m ( ocupado , 0 ) ;
i n i t s e m ( d i s p o n i b l e , N) ;
e j e c u c i o n c o n c u r r e n t e ( p r o d u c t o r , consumidor ) ;
}

4.4.2

El problema de los lectores y los escritores

Sup
ongase un conjunto de procesos concurrentes que comparten el acceso a una base de datos. Unos procesos,
los lectores, leen datos, y otros procesos, los escritores, escriben datos. M
ultiples lectores pueden estar consultando
la base de datos simult
aneamente; pero para mantener la consistencia de los datos cuando un escritor va a escribir
en la base de datos ning
un otro proceso puede acceder a esta. Se desea dise
nar un protocolo de sincronizaci
on entre
los lectores y los escritores que asegure la consistencia de los datos y mantenga un alto grado de concurrencia.
Para implementar esto vamos a usar:
Un sem
aforo binario que regula el acceso a la base de datos llamado S1 e inicializado a 1.
Un variable contador que almacena el n
umero de lectores. Para garantizar la consistencia de su valor y
evitar condiciones de carrera, estar
a regulada por un semaforo binario llamado S2. El contador se inicia a 0
y el sem
aforo S2 a 1.
24

Esta es la soluci
on propuesta:
#d e f i n e TRUE 1
s e m a f o r o b i n a r i o S1 , S2 ;
i n t c o n t a d o r =0;
void l e c t o r ( )
{
while (TRUE)
/ Bucle i n f i n i t o /
{
w a i t s e m ( S2 ) ;
/ S o l i c i t a a c c e s o v a r i a b l e c o n t a d o r /
c o n t a d o r=c o n t a d o r +1;
/ Incrementa e l c o n t a d o r para e n t r a r /
/ S i e s e l u n i c o l e c t o r b l o q u e a l a bbdd /
i f ( c o n t a d o r ==1) w a i t s e m ( S1 ) ;
s i g n a l s e m ( S2 ) ;
/ L i b e r a l a v a r i a b l e c o n t a d o r /
leer dato () ;
/ Lee e l d a t o /
w a i t s e m ( S2 ) ;
/ S o l i c i t a a c c e s o v a r i a b l e c o n t a d o r /
c o n t a d o r ? c o n t a d o r 1;
/ Decrementa e l c o n t a d o r para s a l i r /
/ S i no hay mas l e c t o r e s l i b e r a l a bbdd /
i f ( c o n t a d o r ==0) s i g n a l s e m ( S1 )
s i g n a l s e m ( S2 ) ;
/ L i b e r a l a v a r i a b l e c o n t a d o r /
procesar dato () ;
/ Procesa e l d a t o l e i d o /
}
}
void e s c r i t o r ( )
{
while (TRUE)
/ Bucle i n f i n i t o /
{
/ O b t i e n e e l d a t o a e s c r i b i r /
producir adquirir dato ()
w a i t s e m ( S1 ) ;
/ Comprueba s i puede a c c e d e r a l a bbdd /
escribir dato () ;
/ E s c r i b e e l d a t o en l a bbdd /
/ L i b e r a l a bbdd /
s i g n a l s e m ( S1 ) ;
}
}
void main ( )
{
i n i t s e m ( S1 , 1 ) ;
i n i t s e m ( S2 , 1 ) ;
ejecucion concurrente ( lector , escritor ) ;
}

Esta soluci
on se caracteriza por dar preferencia a los lectores frente a los escritores con objeto de garantizar
un elevada concurrencia de procesos. Presenta como principal inconveniente que los procesos escritores nunca
conseguir
an entrar si, estando un proceso lector en la bbdd, llegan continuamente mas procesos lectores. Para
solucionar esto se imponen dos condiciones:
Un lector nuevo no puede acceder a la base de datos si existe un escritor esperando.
Cuando un escritor abandona la bbdd, los lectores que esperan tienen prioridad sobre otro escritor.

4.5
4.5.1

Monitores
Definici
on

Como los sem


aforos son difciles e implementar en el codigo de los programas C.A.R. Hoare introdujo el concepto
monitor en 1971.
Un monitor es un m
odulo software, que consta de un conjunto de procedimientos, variables y estructuras de
datos, definido en algunos lenguajes de alto nivel que posee la propiedad especial de que solo permite a un u
nico
proceso simult
aneamente ejecutar alguno de sus procedimientos. Las variables contenidas dentro del monitor solo
son accesibles por los procedimientos del monitor y no por procedimientos externos.
Por su propia definici
on se garantiza la exclusion mutua. Un monitor tambien proporciona herramientas para
la sincronizaci
on de procesos. Dispone de un tipo especial de dato: las variables de condici
on. Cada variable de
condici
on tiene asociada una cola de procesos bloqueados en espera de que se cumpla la condicion. Sobre estas
variables es posible hacer dos operaciones:
wait mon(X). El proceso dentro del monitor que realiza esta operacion queda suspendido en una cola de
procesos asociada al cumplimiento de la condicion X. En consecuencia otro proceso puede entrar en el monitor.
signal mon(X). Comprueba si la cola de procesos asociada a la condicion X contiene alg
un proceso bloqueado.
En caso afirmativo se desbloquea a un proceso. Si la cola estaba vaca esta operacion no tiene ning
un efecto.
Para terminar falta definir que pasa con el proceso invocador de signal mon(X). Algunas soluciones propuestas:
El proceso invocador se bloquea y permite ejecutar en el monitor al proceso desbloqueado. Cuando el segundo
proceso finalice o se bloquee entonces el primer proceso se desbloqueara. Propuesta por Hoare en 1974.
El proceso invocador sale del monitor inmediatamente. Esta operacion aparece como la sentencia final del
procedimiento en un monitor. B. Hansen en 1975 (Esta es la que usamos aqu).
25

El proceso invocador continua su operacion hasta finalizar el procedimiento del monitor o bloquearse en una
condici
on. Entonces se retomar
a la ejecucion del proceso desbloqueado al invocar. Lampor y Redell 1980.
4.5.2

Estructura y declaraci
on de un monitor

El monitor consta de N procedimientos,


M variables de condici
on, un conjunto de
datos y unas rutinas de inicializaci
on del
monitor. En el monitor solo puede existir
a la vez un proceso ejecutando alguno de
sus procedimientos. Los procesos que invocan alg
un procedimiento del monitor deberan bloquearse en una cola de entrada
al monitor hasta que el proceso que estuviera dentro del monitor salga del mismo
o se bloquee en una cola de condici
on.
Algunos lenguajes de alto nivel (java,
modula-2, modula-3 o Pascal concurrente)
disponen de sentencias explicitas para construir un monitor. Dichas sentencias son
interpretadas de forma especial por sus
compiladores, que a
naden las instrucciones
necesarias para implementar la exclusi
on
mutua y el bloqueo de procesos en la cola
Estructura de un monitor seg
un B. Hansen
de entrada o en las colas de condici
on mediante el uso de sem
aforos binarios soportados por el s.o. El programador u
nicamente se tiene que preocupar de
definir el monitor y no de usar los sem
aforos correctamente. Esta es la gran ventaja de los monitores.
Declaraci
on de un monitor:
m o n i t o r [ Nombre m o n i t o r ]
/ D e c l a r a c i o n de v a r i a b l e s l o c a l e s /
/ D e c l a r a c i o n de v a r i a b l e s de c o n d i c i o n /
/ D e c l a r a c i o n de p r o c e d i m i e n t o 1 /
...
/ D e c l a r a c i o n de p r o c e d i m i e n t o N /
/ I n i c i a l i z a c i o n d e l monitor /

4.5.3

Uso de monitores

Los monitores, al igual que los sem


aforos, se pueden utilizar para garantizar la exclusion mutua y para la
sincronizaci
on de procesos.
Los monitores por su propia definici
on garantizan la exclusion mutua. Simplemente hay que definir dentro del
monitor los recursos compartidos.
Un monitor puede proporcionar la sincronizacion de procesos mediante el uso de las variables de condici
on
y de las operaciones wait mon y signal mon. El protocolo de sincronizacion se implemente dentro del propio
monitor, en los procedimientos. Esto facilita la comprobacion y depuracion. Si un monitor esta bien definido la
sincronizaci
on esta garantizada.
Soluci
on con un monitor al problema de los productores y los consumidores:
#d e f i n e TRUE 1
#d e f i n e N 100 / Capacidad d e l b u f f e r /
m o n i t o r mon1
condicion lleno , vacio ;
int contador ;
char b u f f e r (N) ;
void e s c r i b i r ( i n t dato ) / P r o c e d i m i e n t o d e l monitor /
{
i f ( c o n t a d o r==N) wait mon ( l l e n o ) ;
i n s e r t a r d a t o ( b u f f e r , dato ) ;
c o n t a d o r=c o n t a d o r +1;
i f ( c o n t a d o r ==1) s i g n a l m o n ( v a c i o ) ;
}
void l e e r ( i n t dato ) ; / P r o c e d i m i e n t o d e l monitor /
{
i f ( c o n t a d o r ==0) wait mon ( v a c i o ) ;
e x t r a e r d a t o ( b u f f e r , dato ) ;
c o n t a d o r=c o n t a d o r 1;
i f ( c o n t a d o r==N1) s i g n a l m o n ( l l e n o ) ;
}
{
c o n t a d o r =0; / I n i c i a l i z a c i o n de v a r i a b l e s /

26

}
end m o n i t o r
void p r o d u c t o r ( )
{
while (TRUE)
{
dato=p r o d u c i r d a t o ( ) ;
mon1 . e s c r i b i r ( dato ) ;
}
}
void consumidor ( )
{
while (TRUE)
{
mon1 . l e e r ( dato ) ;
c o n s u m i r d a t o ( dato ) ;
}
}
void main ( )
{
e j e c u c i o n c o n c u r r e n t e ( p r o d u c t o r , consumidor ) ;
}

4.6
4.6.1

Paso de mensajes
Definici
on

Los sem
aforos y los monitores requieren para su implementacion el uso de un espacio de memoria compartida
entre procesos. Su utilizaci
on en sistemas distribuidos formados por m
ultiples maquinas resulta ineficaz y lenta.
Adem
as no son mecanismos para realizar comunicacion entre procesos, en el sentido de que no posibilitan el
intercambio explcito de informaci
on entre ellos.
El paso de mensajes es un mecanismo de sincronizacion y comunicacion entre procesos soportado por los s.o.
tanto centralizados como distribuidos. Un mensaje es un conjunto de informacion que puede ser intercambiada
entre un proceso emisor y un proceso receptor. Las dos operaciones basicas que se pueden realizar son:
send(destino, mensaje). El emisor enva (send) un mensaje a un determinado proceso (destino).
receive(fuente, mensaje). El receptor recibe (receive) el mensaje procedente del emisor (fuente).
Estas operaciones son invocadas por los procesos mediante el uso de las llamadas al sistema apropiadas. El
argumento mensaje es la direcci
on de memoria de la estructura de datos que contiene el mensaje a enviar a
destino, o de la estructura de datos donde se almacenara el mensaje a recibir de fuente.
Los aspectos b
asicos a considerar en el dise
no del mecanismo de paso de mensajes de un s.o. son:
4.6.2

Especificaci
on de la fuente y el destino del mensaje

Las operaciones send y receive deben incluir informacion sobre el destino y la fuente del mensaje para poder
establecer una correcta comunicaci
on entre procesos. En funcion de dicha informacion se puede distinguir:
Comunicaci
on directa
En la comunicaci
on directa el proceso emisor del mensaje especifica explcitamente en la operacion send el
proceso al que va dirigido el mensaje. El proceso receptor del mensaje especifica explcitamente en en la
operaci
on receive el proceso emisor del mensaje:
send(P receptor, mensaje). Donde P receptor es el identificador del proceso receptor del mensaje.
receive(P emisor, mensaje). Donde P emisor es el identificador del proceso emisor del mensaje.
Otra posibilidad, es que el proceso receptor del mensaje especifique implcitamente en la operacion receive
el proceso emisor del mensaje:
receive(ident, mensaje). Donde ident toma el valor del identificador del proceso con que se ha
realizado la comunicaci
on el cual no se sabe a priori, sino una vez se completa la operacion receive.
La comunicaci
on directa con especificacion explcita de los identificadores de los procesos receptor y emisor
es u
til para procesos concurrentes cooperantes. Mientras que con especificacion explcita del receptor pero
implcita del emisor resulta u
til cuando un proceso realiza una operacion sen funcion del mensaje enviado
por un proceso emisor que no se puede conocer a priori.
La principal ventaja es que permite establecer un enlace seguro entre el proceso emisor y receptor para el
intercambio de mensajes. Como desventaja no resulta u
til para proporcionar servicios al s.o. ya que no se
conoce con antelaci
on quien los va a solicitar.
27

Comunicaci
on indirecta
En la comunicaci
on indirecta el proceso emisor enva el mensaje a una estructura de datos compartida
denominada buz
on que se implementa como una cola de mensajes. Por su parte, el proceso receptor solicita
recibir el mensaje del buz
on. Previamente a las operaciones un proceso tiene que solicitar mediante una
llamada del sistema la creaci
on del buz
on. Las operaciones quedan as:
send(buz
on, mensaje)
receive(buz
on, mensaje)
La comunicaci
on indirecta es m
as flexible que la comunicacion directa ya que permite diferentes esquemas de
difusi
on de mensajes:
Un emisor - un receptor. Un proceso emisor enva un mensaje a un buzon para que lo recoja un
determinado proceso receptor. Comunicacion privada entre procesos.
Un emisor - varios receptores. Cuando se requiere difundir una determinada informacion entre varios
procesos.
Varios emisores - un receptor. Varios emisores enva mensajes a un buzon, que en este caso se suele
denominar puerto, para que los lea un u
nico proceso receptor. Aplicaciones del tipo cliente/servidor.
Varios emisores - varios receptores. Varios procesos servidores atienden concurrentemente a varios
procesos clientes.
Un buz
on o cola de mensajes puede ser propiedad de un proceso (se crea en el espacio de direcciones del
proceso y solo puede recibir mensajes el proceso propietario, cuando este finaliza el buzon desaparece) o del
s.o. (se implementa en el espacio de direcciones del n
ucleo, el s.o. debe proporcionar llamada al sistema crear
y borrar el buz
on, el proceso que lo crea es su propietario, de forma inicial solo este puede leer los mensajes
pero esto se puede compartir con otros procesos mediante llamadas al sistema).
4.6.3

Esquemas de sincronizaci
on

En funci
on de si el proceso emisor o el proceso receptor pueden pasar al estado bloqueado al realizar una acci
on
send o receive se puede distinguir:
Operaci
on send con bloqueo. El emisor pasa el estado bloqueado hasta que el mensaje sea recibido por el
receptor o el buz
on.
Operaci
on send sin bloqueo. El emisor enva el mensaje y sigue su ejecucion. Puede darse el problema en
que un proceso enve continuamente mensajes degradando el rendimiento. El programador debe implementar
mecanismos de determinaci
on de la recepcion de los mensajes, normalmente con mensajes respuesta.
Operaci
on receive con bloqueo. El receptor pasa a bloqueado en espera de recibir el mensaje de un emisor
o de que exista mensaje en el buz
on. Puede quedarse el receptor indefinidamente bloqueado si el mensaje no
se enva o se pierde.
Operaci
on receive sin bloqueo. El receptor obtiene de un emisor o de un buzon un mensaje valido o uno
nulo y continua su ejecuci
on. Si se ejecuta antes que llegue el mensaje, este puede perderse.
La combinaci
on de esto posibilita cuatro esquemas de sincronizacion:
Envo y recepci
on sin bloqueo.
Envo sin bloqueo y recepci
on con bloqueo. Es uno de los mas utilizados.
Envo con bloqueo y recepci
on sin bloqueo.
Envo y recepci
on con bloqueo. Se lo conoce como cita(rendez-vous) entre el emisor y el receptor.
4.6.4

Formato y almacenamiento de los mensajes

De forma general un mensaje consta de dos partes:


La cabecera del mensaje contiene informacion de control del mensaje (tipo, prioridad, origen y destino,
longitud o tama
no, punteros a otros mensajes, etc)
El cuerpo del mensaje contiene el contenido propiamente dicho del mensaje.
La longitud de un mensaje puede ser fija o variable, es el s.o. quien dicta la longitud de mensajes que soporta:

28

Los mensajes de longitud fija son m


as f
aciles de implementar para el s.o. pero complican a los programadores
la creaci
on de los procesos emisores ya que deben trocear los mensajes y enviarlos separado si son demasiado
grandes pudiendo aparecer problemas de secuenciamiento con los receptores.
Los mensajes de longitud variable facilitan al programador la creacion de procesos emisores pero su implementaci
on a nivel de s.o. es m
as compleja, ya que ahora tiene que asignar trozos de memoria de tama
no
variable aumentando la sobrecarga y pudiendo producir problemas de fragmentacion de memoria.
Dependiendo de la capacidad de las colas de mensajes se distingue:
Mecanismo de mensajes sin buffer. Las colas de mensajes son de capacidad nula, por lo que los mensajes
nunca pueden esperar. El emisor se bloquea hasta que el receptor recibe el mensaje.
Mecanismo de mensajes con buffer. Las colas permiten almacenar temporalmente un n
umero finito de mensajes. Si la cola est
a llena, el proceso emisor se bloquea hasta que exista espacio disponible en la cola.
La forma m
as simple de gestionar las colas es con un algoritmo FIFO, los mensajes se entregan por orden de
llegada. Se pueden especificar prioridades a los mensajes por le emisor que son entregados primero a los receptores.
Otra alternativa es que el receptor especifique al invocar receive el tipo de mensaje que desea recibir, entonces el
sistema le entrega el mensaje de la cola adecuada.
4.6.5

Uso del paso de mensajes

El paso de mensajes se utiliza para implementar la comunicacion directa o indirecta entre procesos, ya que
posibilitan el intercambio explicito de informacion. Ademas, el paso de mensajes se puede utilizar para garantizar
la exclusi
on mutua y como un mecanismo de sincronizacion, al igual que los semaforos y lo monitores.
Exclusi
on mutua mediante paso de mensaje con envo sin bloqueo y recepcion con bloqueo:
#d e f i n e TRUE 1
#d e f i n e N 5
/ Numero de p r o c e s o s /
void p r o c e s o ( i n t i )
{
mensaje t e s t i g o ;
while (TRUE)
{
/ s e c c i o n no c r i t i c a /
r e c e i v e ( buzon1 , t e s t i g o ) ;
/ s e c c i o n c r i t i c a /
send ( buzon1 , t e s t i g o ) ;
/ s e c c i o n no c r i t i c a /
}
}
void main ( )
{
mensaje n u l o ;
c r e a r b u z o n ( buzon1 ) ;
send ( buzon1 , n u l o ) ;
e j e c u c i o n c o n c u r r e n t e ( p r o c e s o ( 1 ) , . . . , p r o c e s o (N) ) ;
}

Sincronizaci
on de dos procesos mediante paso de mensaje con envo sin bloqueo y recepcion con bloqueo:
#d e f i n e TRUE 1 ;
void procesoA ( )
{
mensaje X;
while (TRUE)
{
/ Codigo p r e v i o /
r e c e i v e ( buzon1 , X) ;
/ E s p e r a r a que e l p r o c e s o B r e a l i c e una a c c i o n /
/ Codigo p o s t e r i o r /
}
}
void p r o c e s o B ( )
{
mensaje Y;
while (TRUE)
{
/ R e a l i z a r a c c i o n para e l p r o c e s o A /
send ( buzon1 , Y) ; / A v i s a r a l p r o c e s o A /
/ Codigo p o s t e r i o r /
}
}
void main ( )
{
c r e a r b u z o n ( buzon1 ) ;
e j e c u c i o n c o n c u r r e n t e ( procesoA , p r o c e s o B ) ;
}

29

Soluci
on mediante paso de mensaje con envo sin bloqueo y recepcion con bloqueo al problema de los productores
y los consumidores.
Se utilizan dos buzones:
no esta determinado por la constante
buzon consuma. Hace las veces de buffer de almacenamiento cuyo tama
N. Si dicho buz
on est
a vaco el consumidor se bloquea.
buzon produzca. Este buz
on regula la actividad el productor.
#d e f i n e TRUE 1
#d e f i n e N 100 / Tamanyo d e l b u f f e r /
void p r o d u c t o r ( )
{
mensaje X;
while (TRUE)
{
r e c e i v e ( buzon produzca , X) ;
p r o d u c i r d a t o (X) ;
send ( buzon consuma ,X) ;
}
}
void consumidor ( )
{
mensaje Y;
while (TRUE)
{
r e c e i v e ( buzon consuma ,Y) ;
c o n s u m i r d a t o (Y) ;
send ( buzon produzca ,Y) ;
}
}
void main ( )
{
int h ;
mensaje n u l o ;
c r e a r b u z o n ( buzon consuma ) ;
crear buzon ( buzon produzca ) ;
f o r ( h=1 , h<=N, h++)
{
send ( buzon produzca , n u l o ) ;
}
e j e c u c i o n c o n c u r r e n t e ( p r o d u c t o r , consumidor ) ;
}

30

Interbloqueo

5.1

Introducci
on

Los recursos disponibles en un sistema informatico se pueden clasificar en dos grandes categoras: dispositivos
hardware y elementos software. Estos se pueden clasificar de forma general en:
Recurso reutilizable. No se destruye despues de haberlo utilizado. Una instancia de un recurso reutilizable
solo se puede asignar simult
aneamente a un proceso como maximo.
Recurso consumible. Es aquel que puede producirse (crearse) y consumirse (destruirse).
La ejecuci
on concurrente de un conjunto de procesos que compiten por un grupo de recursos puede provocar
un interbloqueo o bloqueo mutuo(deadlock). Se produce cuando dos procesos se bloquean mutuamente dos recursos
reutilizables y esperan a que el otro libere el que necesitan respectivamente. Tambien se puede producir por la
asignaci
on de recursos consumibles, un proceso espera la creacion de un recurso consumible que nunca se va a
producir.

5.2

Definici
on y condiciones del interbloqueo

Un interbloqueo es aquella situaci


on en la cual un conjunto de procesos esta bloqueado en espera de la liberaci
on
de uno o varios recursos que se encuentran asignados a otro proceso del mismo conjunto. Como todos los procesos
del conjunto est
an bloqueados, ninguno de ellos liberara los recursos que los otros necesitan, en consecuencia
ninguno puede continuar su ejecuci
on.
Para que se produzca un interbloqueo se deben cumplir las siguientes condiciones:
1. Exclusi
on mutua.
2. Retenci
on y espera. Cada proceso retiene los recursos que le han sido asignado mientras espera por la
adquisici
on de los otros recursos que necesita.
3. No existencia de expropiaci
on.
4. Espera circular. Existe una cadena circular de dos o mas procesos, de tal forma que cada proceso de la cadena
esta esperando por un recurso retenido por el siguiente proceso de la cadena.
Las principales estrategias que un s.o. puede implementar para tratar los interbloqueos:
Prevenci
on de interbloqueos. Consiste en impedir que se de alguna de las cuatro condiciones necesarias.
Evitaci
on de interbloqueos. Consiste en examinar las posibles consecuencias de asignar los recursos solicitados
y no hacerlo si se va a producir una situacion peligrosa.
Detecci
on y recuperaci
on de interbloqueos. Consiste en comprobar cada cierto tiempo el estado del sistema
para detectar la existencia de interbloqueos y tomar medidas oportunas para eliminarlos.

5.3

Grafos de asignaci
on de recursos.

Los grafos de asignaci


on de recursos permiten ilustrar la asignacion de recursos
de un sistema a los procesos que se ejecutan en el mismo en un determinado instante
de tiempo. Los elementos que posee son:
Cada proceso se representa como un circulo.
Cada recurso se representa como un cuadrado.
Cada instancia de un recurso se representa como un punto en su interior.
Si un proceso ha solicitado un recurso y se encuentra bloqueado se usa flecha
desde el proceso al recurso.
Si un proceso tiene asignado una instancia de un recurso se representa con una
flecha desde el recurso la proceso.

Grafo con interbloqueo

Si un grafo no contiene ning


un ciclo no hay interbloqueo. La existencia de ciclos no es garanta de interbloqueos
(pero muestran la posibilidad), depende tambien del n
umero de instancias de cada recurso implicado en el ciclo.
Si todos las instancias de los recursos est
an en un ciclo se produce interbloqueo.

31

5.4

Prevenci
on de interbloqueos

Consiste en eliminar la aparici


on de alguna de las cuatro condiciones necesarias y suficientes para que se produzca
interbloqueo.
5.4.1

Eliminaci
on de la condici
on de exclusi
on mutua

Esta condici
on no puede eliminarse en recursos compartidos si se quiere garantizar la integridad y la no corrupci
on de los mismos.
5.4.2

Eliminaci
on de la condici
on de retenci
on y espera

Esta condici
on se puede eliminar forzando a un proceso a solicitar a la vez todos los recursos que va a necesitar
su ejecuci
on. El proceso se bloquea hasta obtenerlos todos. Los inconvenientes son que es difcil conocer a priori
todos los recursos que va a necesitar un proceso a priori y que degrada el sistema debido a que los procesos pueden
esperar bastante a tener todos los recursos necesarios y, mientras tanto, los recursos ya asignado al proceso no
pueden usarlos otros procesos.
5.4.3

Eliminaci
on de no existencia de expropiaci
on

Se consigue permitiendo que el s.o. pueda expropiar a un proceso los recursos que retiene. Solo es posible en
los recursos para los cuales el s.o. puede salvar el estado en que se encontraban, para restaurarlo cuando el proceso
expropiado consiga otra vez su uso. Se debe valorar si la desaparicion de los interbloqueos mediante esta tecnica
compensa la disminuci
on de rendimiento del sistema debido a la sobrecarga por las tareas de guardar y restaurar
el estado de los recursos.
5.4.4

Eliminaci
on de la condici
on de espera circular

Se puede eliminar asignando a cada recurso del sistema un n


umero y forzando a que un proceso solo puede
solicitar los recursos en orden ascendente. La principal desventaja es que los recursos deben ser solicitados en un
orden establecido en lugar de cuando se necesitan realmente. Un proceso puede tener asignado un recurso que no
necesita en ese momento priv
andoselo a otros que si lo necesitan.

5.5

Evitaci
on de interbloqueos

Consiste en conceder a un proceso solamente aquellas peticiones de recursos que tengan garantizado que no
conducir
an a un estado de interbloqueo.
Los procesos tienen que especificar por adelantado todos los recursos que van a necesitar. Conforme se ejecuta
va solicitando los recursos, si no van a conducir a un estado de interbloqueo se le conceden, en caso contrario el
proceso se bloquea a la espera.
El s.o. debe contabilizar el n
umero de recurso disponibles, el n
umero de recursos asignados a cada proceso y el
n
umero de recursos asignados a cada proceso y el n
umero de recursos que restan para asignar a cada proceso. Se
encarga de comprobar si una asignaci
on es segura o, por el contrario, puede conducir aun estado de interbloqueo.
5.5.1

Estado de asignaci
on de recursos: estados seguros y estados inseguros

Una forma de llevar la contabilidad de los recursos solicitados por los procesos y de los recurso asignados a los
mismos es mediante el uso del siguiente conjunto de vectores y matrices:
El vector RE de recursos existentes:
RE = (RE1 , RE2 , ..., REj , ..., REq )
El sistema posee q tipos de recursos distintos, REj es el n
umero de instancias existentes del recurso j.
El vector RD de recursos disponibles:
RD = (RD1 , RD2 , ..., RDj , ..., RDq )
RDj es el n
umero de instancias disponibles del recurso j.
La matriz N de recursos m
aximos necesitados por cada proceso:

32

N11
:

N =
Ni1
:
Np1

N12
:
Ni2
:
Np2

...
:
...
:
...

N1j
:
Nij
:
Npj

...
:
...
:
...

N1q
:

Niq

:
Npq

Esta matriz tiene p filas, una asociada a cada proceso existente en el sistema. Posee q columnas, una por
cada tipo de recurso existente. El elemento Nij es el n
umero maximo de instancias del recurso j necesitadas
por el proceso i.
La matriz A de recursos asignados a cada proceso:

A11
:

A=
Ai1
:
Ap1

A12
:
Ai2
:
Ap2

...
:
...
:
...

A1j
:
Aij
:
Apj

... A1q
:
:

... Aiq

:
:
... Apq

Las columnas(q) son recursos, las filas(p) son procesos y Aij es el n


umero de instancias de un recurso j
asignadas al proceso i. Si se suma toda una columna da el n
umero total de instancias de un recurso asignadas
a procesos, esto permite definir el vector RA de instancias de recursos asignadas en total:

RAj =

p
X

Akj

RA = (RA1 , RA2 , ..., RAj , ..., RAq )

k=1

Se cumplen las siguientes relaciones entre los vectores y matrices que se han definido:
El n
umero total de instancias existentes de un recurso j se puede determinar con la suma del n
umero de
instancias disponibles m
as las instancias asignadas:
REj = RDj + RAj

j = 1, ..., q

Un proceso i no puede solicitar un n


umero de instancias de un recurso j mayor que el n
umero de instancias
existentes de dicho recurso:
Nij REj

i = 1, ..., p

j = 1, ..., q

Un proceso i no puede tener asignadas un n


umero de instancias de un recurso j mayor que el n
umero m
aximo
de instancias inicialmente solicitadas de dicho recurso:
Aij Nij

i = 1, ..., p

j = 1, ..., q

El estado del sistema con respecto a la asignaci


on de sus recursos en un determinado instante de tiempo queda
determinado por los vectores Re , Rd y las matrices N y A.
Un estado se dice seguro si posibilita al menos una secuencia de asignacion de recursos a los procesos que
garantiza que estos se pueden ejecutar hasta su finalizacion sin que se produzca interbloqueo, incluso aunque todos
los procesos soliciten simult
aneamente todos los recursos que van a necesitar. Un estado inseguro es aquel que no
garantiza que no se puede producir un interbloqueo.
En la pr
actica, la forma de detectar si un estado es seguro consiste en comprobar si con los recursos disponibles
existe al menos un proceso que se puede ejecutar por completo, aunque solicite a la vez todos los recursos que va a
necesitar. Es decir hay que restar las matrices N A y comprobar si existe un fila que cumple: (Ni Ai ) Rd .

33

5.5.2

Denegaci
on de asignaci
on de recursos: el algoritmo del banquero

La tecnica m
as usada de evitaci
on de interbloqueos es la denegaci
on de asignaci
on de recursos que consiste
en no conceder a un proceso una petici
on adicional de un recurso si dicha peticion puede conducir a un estado
inseguro.
La implementaci
on m
as conocida y usada es el algoritmo del banquero. Este algoritmo asegura que el n
umero
de recursos asignados a todos los procesos nunca puede exceder del n
umero de recursos del sistema. Los paso de
que consta son:
1. Se parte de un estado inicial de asignacion seguro Sk = {N , A, RE , RD } con k = 0.
2. Cuando un proceso realiza una petici
on de asignacion de recursos, se simula que se concede la petici
on y se
0
actualiza el estado del sistema a este estado ficticio se le denota como S 0 = {N 0 , A0 , RE , RD
}.
3. Se comprueba si S 0 es seguro:
En caso afirmativo se concede la peticion al proceso y se actualiza el estado del sistema Sk+a = S 0 .
En caso negativo la petici
on se deniega y el proceso se bloquea hasta que se le pueden conceder los
recursos que solicita.
4. Volver al paso 2.
En la pr
actica no se utiliza porque es difcil conocer por adelantado los recursos que van a necesitar los procesos
durante su ejecuci
on. Adem
as parte de la suposicion que el n
umero de los procesos y recursos existentes es fijo,
cosa que no es necesariamente cierta. En general en n
umero de procesos varia con el tiempo y los recursos pueden
da
narse o fallar y dejar de estar disponibles.
5.5.3

Denegaci
on de la iniciaci
on de un proceso

Consiste en no iniciar un proceso si el n


umero maximo de recursos que va a necesitar durante su ejecuci
on
puede conducir a un interbloqueo. Es decir, tiene que cumplir:

REj N(p+1)j +

p
X

Nkj

j = 1, ..., q

k=1

Esta tecnica no es
optima ya que supone que todos los procesos van a solicitar simultaneamente todas las instancias
de recursos que van a necesitar, es decir, trabaja con el caso peor.

5.6

Detecci
on y recuperaci
on de interbloqueos

Consiste en no limitar las asignaciones de recursos y comprobar periodicamente mediante la utilizacion de alg
un
algoritmo si se ha producido alg
un interbloqueo. Si existe se usa alguna tecnica para intentar recuperar el sistema
del interbloqueo.
5.6.1

Algoritmos de detecci
on de interbloqueos

Una forma de detectar la existencia de interbloqueos en un sistema sera construir el grafo de asignaci
on de
recursos y comprobar visualmente la existencia de ciclos. Otra alternativa, mucho mas usada, es usar un algoritmo
que trabaje con la descripci
on matricial del sistema. Un posible algoritmo es el algoritmo de Coffman.
Este algoritmo utiliza los vectores RE y RD , la matriz A y la nueva matriz de recursos necesitados por cada
proceso adicionalmente a los que ya posee M que se define as:

M11
:

M =
Mi1
:
Mp1

M12
:
Mi2
:
Mp2

...
:
...
:
...

M1j
:
Mij
:
Mpj

...
:
...
:
...

M1q
:

Miq

:
Mpq

Siendo las filas(p) un proceso cada una, las columnas(q) un tipo de recurso existente y Mij es el n
umero de
instancias del recurso j necesitadas por el proceso i adicionalmente de las que ya posee.
El algoritmo de Coffman considera inicialmente que todos los procesos estan sin marcar, y va marcando aquellos
procesos que pueden ser completados. Los procesos marcados no pueden provocar una situacion de interbloqueo.
Consta de los siguientes pasos:
34

1. Se marca cada proceso que tenga una fila de la matriz de asignacion A igual a cero, ya que al no retener
ning
un recurso no puede producir interbloqueo.
2. Se realiza la asignaci
on X = RD donde X es un vector auxiliar.
3. Por cada i no marcado se comprueba la condicion Mi X donde Mi es la fila i de la matriz M .
4. Si no existe ning
un i que cumpla la condicion, entonces el algoritmo finaliza. Si existe alg
un i que cumpla la
condici
on, entonces se marca el proceso, se realiza la suma vectorial X = X + Ai y se vuelve al paso 3.
Cuando el algoritmo finaliza todos los procesos que no esten marcados estaran en situacion de interbloqueo.
Existe interbloqueo si existe m
as de un proceso sin marcar (se necesitan dos procesos para que haya interbloqueo).
5.6.2

Frecuencia de invocaci
on del algoritmo de detecci
on de interbloqueos

Una opci
on es invocar el algoritmo cada que vez que un proceso realice una peticion de un recurso. La
frecuencia ser
a bastante alta por lo que los interbloqueos se detectaran con mucha rapidez pero se aumentar
a
mucho la sobrecarga del sistema.
Otra opci
on es invocar el algoritmo cada T minutos o cuando el grado de uso del procesador caiga por debajo
de un determinado umbral (se supone que cae el uso por la posible existencia de interbloqueos).
5.6.3

T
ecnicas de recuperaci
on del interbloqueo

Una vez detectado un interbloqueo hay que recuperar el sistema de su existencia mediante alguna tecnica de
recuperaci
on. Las tecnicas m
as usadas son:
Recuperaci
on mediante la expropiaci
on de recursos. Consiste en ir expropiando recursos a algunos procesos
y concederselos a otros hasta conseguir salir del interbloqueo. Esta tecnica requiere establecer alg
un criterio
para seleccionar los procesos a los que se va e expropiar los recursos. En ocasiones la expropiacion se debe
hacer de manera manual por el administrador del sistema.
Recuperaci
on mediante el retroceso de los procesos interbloqueados a alg
un punto de control previo. Consiste
en ir realizando puntos de control(chekpoint) periodicamente durante el tiempo de vida de un proceso. En
cada punto de control se guarda el contexto del proceso en un fichero distinto. Cuando se detecta que el
proceso est
a interbloqueado se retrocede su ejecucion a un punto de control anterior con la esperanza de
evitar el interbloqueo.
Recuperaci
on mediante el aborto selectivo de procesos. Consiste en ir abortando selectivamente alg
un proceso
para que libere los recursos que posee y puedan ser asignados a alg
un proceso interbloqueado de forma que
pueda salir de dicho estado y continuar su ejecucion. Esta tecnica requiere establece alg
un criterio de selecci
on
de los procesos que van a ser abortados.
Recuperaci
on mediante el aborto de todos los procesos interbloqueados. Se trata de la solucion mas dr
astica y
curiosamente la m
as utilizada.
5.6.4

Ventajas e inconvenientes

La detecci
on y recuperaci
on de interbloqueos es una tecnica menos conservativa que las anteriores y permite
un mayor grado de concurrencia de procesos, pero introduce un grado de sobrecarga que se puede llegar a tolerar
ajustando el algoritmo de detecci
on y su frecuencia de invocacion. La propia recuperacion siempre provocar
a
sobrecarga y puede producir desaprovechamiento de los recursos para aquellos procesos reiniciados o devueltos a
un punto de control anterior.
En general puede afirmarse que la recuperacion de interbloqueos es bastante u
til en sistemas con baja probabilidad de interbloqueos.

5.7
5.7.1

Otras estrategias de tratamiento de interbloqueos


Estrategia mixta de tratamiento de interbloqueos

Las estrategias anteriores pueden utilizarse conjuntamente con objeto de aprovechar sus ventajas y reducir sus
inconvenientes. Se procede de esta forma:
1. Agrupar los recursos existente del sistema en diferentes clases.
2. Ordenar las clases para evitar la espera circular.
3. Utilizar para cada clase la estrategia de tratamiento de los interbloqueos que se considere mas oportuna.
35

5.7.2

Ignorar los interbloqueos

Muchos s.o. (p.e. UNIX o Windows) no utilizan ninguna estrategia de tratamiento de interbloqueos. Consideran
que el usuario prefiere sufrir interbloqueos de vez en cuando a que el sistema limite el uso de los recursos o con
alta sobrecarga. Se basan en la suposici
on de que los interbloqueos tienen una peque
na probabilidad de producirse
y confan en el azar para que no se produzcan. En el caso de producirse sera el administrador del sistema el que
tenga que detectar el interbloqueo y recuperarlo.

36

Administraci
on de memoria

6.1

Introducci
on

El subsistema de administraci
on de memoria principal es el componente del s.o. encargado de administrar,
en colaboraci
on con el hardware, la memoria principal entre todos los procesos que se ejecutan en el computador.
Para realizar una tarea debe usar una determinada tecnica de administracion de memoria. Esta tecnicas se pueden
clasificar en dos grandes grupos:
Tecnicas de asignaci
on contigua. Todo el espacio de direcciones de un proceso se carga de forma contigua en
memoria principal.
Tecnicas de asignaci
on no contigua. El espacio de direcciones logicas de un proceso se divide en bloques de
igual o distinto tama
no. Los bloques de un mismo proceso no tienen porque estar cargados de forma contigua
en memoria principal.
Una parte de la memoria principal se reserva para almacenar el s.o. y sus estructura de datos. El resto se
encuentra disponible para cargar procesos.

6.2
6.2.1

Definiciones previas
Espaci
o del n
ucleo y espacio de usuario

Al espacio ocupado por el c


odigo, las estructuras de datos y la pila (o pilas) del n
ucleo del s.o. se le denomina
espacio del n
ucleo. El acceso solo se puede realizar en modo n
ucleo.
Al espacio en memoria principal ocupado por la imagen de un proceso, es decir, por su espacio de direcciones de
memoria l
ogica, se le denomina espacio de usuario. El acceso se puede realizar en modo n
ucleo o en modo usuario.
En conclusi
on en la memoria principal de un sistema multiprogramado se puede distinguir: el espacio del n
ucleo,
uno o varios espacios de usuario y el espacio libre.
6.2.2

Area
de intercambio en memoria secundaria

El s.o. reserva espacio en memoria secundaria (normalmente el disco duro) para almacenar las copias de las
im
agenes de los procesos. A dicho espacio se le denomina
area de intercambio. El tama
no de esa zona suele estar
predefinido, aunque algunos sistemas permiten que su tama
no maximo sea configurado por el administrador.
Se denomina intercambio(swapping) a la operacion de cargar la imagen de un proceso desde el area de intercambio a memoria principal o viceversa. Se habla de intercambio fuera de memoria principal(swapping out) al paso
de la imagen desde la memoria principal al
area de intercambio en memoria secundaria, y de intercambio dentro
de memoria principal(swapping in) al caso contrario.
La operaci
on de intercambio fuera de memoria principal se realizar en los siguientes casos:
Cuando se requiere espacio de memoria principal para cargar otros procesos.
Cuando un proceso necesita m
as espacio en memoria principal debido al crecimiento de su region de datos o
de su regi
on de pila.
Cuando es necesario regular el grado de multiprogramacion del sistema, es decir, el n
umero de procesos
cargado en memoria principal
Por su parte la operaci
on de intercambio dentro de memoria principal se suele realizar en los siguiente casos:
Se desea aumentar el grado de multiprogramacion del sistema para mejorar sus rendimiento.
Existe espacio en memoria principal para cargar mas procesos.
Existe un proceso de mayor prioridad en el area de intercambio.
Dependiendo si el sistema soporta memoria virtual o no, la imagen del proceso se intercambia por completo o
solo algunas partes de la misma. Para ahorrar espacio las direcciones logicas no asignadas no se copian.
Normalmente la operaci
on de intercambio es realizada por un proceso del sistema llamado intercambiador. Se
encarga de:
Gestionar y asignar el espacio de intercambio. Para ello el s.o. mantiene una estructura de datos con
informaci
on sobre el espacio libre en el area de intercambio.
Seleccionar procesos para ser intercambiados fuera de la memoria principal. Escoge en primer lugar aquellos
procesos que est
an bloqueados de acuerdo a los siguientes criterio: menor prioridad del proceso y mayor tiempo
de residencia en memoria. En segundo lugar escoge los procesos preparados usando los mismo criterios.
37

Seleccionar procesos para ser intercambiados dentro de memoria principal. Se escogen los procesos que llevan
m
as tiempo preparados en el
area de intercambio o de mayor prioridad.
El proceso intercambiador estar
a suspendido en memoria principal mientras no haya que realizar ninguna tarea
de intercambio y el s.o. lo despertar
a cuando sea necesario.
Las razones que justifican el uso del
area de intercambio en lugar de utilizar directamente el ejecutable de
memoria secundaria son:
Una operaci
on de lectura y escritura en el area de intercambio es mas rapida que en el sistema de archivos
ya que no hay que traducir una ruta de acceso ni comprobar permisos de acceso.
La imagen de un proceso es una entidad dinamica cuyo contenido suele diferir del contenido del ejecutable
conforme se va ejecutando el proceso. La imagen del proceso debe ser guardada para poder continuar su
ejecuci
on sin tener que reiniciarla desde el principio.

6.3

Asignaci
on de memoria en sistemas monoprogramados

En un sistema monoprogramado la memoria principal se divide en dos particiones. Una esta reservada para
contener las partes del s.o. que deben estar en memoria principal denominadas monitor del sistema operativo. El
resto de la memoria esta en una partici
on destinada al uso de procesos de usuario o de sistema.
Dependiendo si la partici
on del s.o. esta en las direcciones bajas o altas de la memoria principal se pueden
distinguir las siguientes configuraciones:
Configuraci
on 1. Solo usa una RAM. La particion del s.o. ocupa la parte inferior de memoria principal,
desde la direcci
on 0 hasta la DirF I . La parte superior de memoria (desde DirF I + 1 hasta DirF max ) esta
disponible para almacenar el proceso que se desea ejecutar.
Configuraci
on 2. Se usa una RAM y una ROM. La parte del s.o. se guarda en la ROM en la parte superior
de la memoria principal (desde DirF I + 1 hasta DirF max ). El resto desde la direccion 0 hasta la DirF I es
la memoria dedicada al programa a ejecutar. Es un configuracion poco flexible porque el s.o. no se puede
modificar ni actualizar.
Configuraci
on 3. Se implementa con una RAM y una ROM. La particion del s.o. ocupa la parte inferior de
memoria principal, desde la direcci
on 0 hasta la DirF I . La parte superior de la RAM desde DirF I + 1 hasta
DirF 2 almacena el proceso que se va a ejecutar. La ROM contiene la tabla de vectores de interrupci
on del
hardware y las rutinas de servicio de interrupciones, se la conoce como sistema b
asico de entrada-salida(Basic
Input-Output System, BIOS). Esta situada desde DirF 2 + 1 hasta DirF max .
Esta forma de gestionar la memoria es sencilla y conlleva poco trabajo al s.o. Para garantizar la protecci
on
del s.o., es decir, evitar que los procesos de usuario hagan referencias a direcciones de memoria fsicas ocupadas
por el s.o., se utiliza uno o dos registros para almacenar la direccion base de inicio del particion de procesos y/o el
tama
no de dicha partici
on.

6.4
6.4.1

Particionamiento fijo
Caractersticas

La forma m
as sencilla de gestionar la memoria en sistemas multiprogramados consiste en dividir la memoria
principal en un n
umero fijo N de particiones que pueden ser de igual o diferente tama
no. A esta tecnica se la conoce
como particionamiento fijo. Una partici
on se reserva para el s.o., el resto esta disponible para cargar procesos (uno
por partici
on).
El s.o. mantiene una estructura de datos, denominada tabla de descripci
on de particiones, que contiene la
siguiente informaci
on para cada partici
on: direccion fsica de comienzo(direccion base), tama
no y estado (libre u
ocupada). El s.o. se encarga de gestionar el estado de cada particion.
Esta tecnica se uso en los primero macrocomputadores (p.e. el s.o. OS/360)
6.4.2

Particiones de igual tama


no

Usar esta tecnica es bastante simple pero presenta dos problemas:


Limitaci
on del tama
no m
aximo de los procesos que se pueden cargar en memoria principal. Un proceso que
no cabe en el tama
no elegido no se puede ejecutar. La u
nica excepcion se produce si el programa ha sido
dise
nado con superposiciones. Una superposici
on(overlay) es un conjunto de instrucciones y datos que se
pueden ejecutar y acceder de forma autonoma. Un programa se compone de varias superposiciones que se
pueden cargar de forma independiente en memoria. Se ahorra espacio de memoria pero es bastante tediosa
de programar.
38

Fragmentaci
on interna. Se dice del espacio desperdiciado en una particion de memoria, si el proceso es m
as
peque
no que la partici
on que se la ha asignado.
6.4.3

Particiones de distinto tama


no

Las N particiones ahora son de distinto tama


no. Para asignar los procesos a las particiones se usa una cola por
cada partici
on. Cada proceso se asigna a la cola de la particion que mas se ajuste en tama
no. Esto minimiza la
fragmentaci
on interna pero puede saturar algunas colas de particiones mientras otras estan vacas. Para evitar eso
se usa solo una cola y se asigna a una partici
on libre buscada seg
un alg
un criterio. Los mas usados son:
Criterio del primer ajuste. Consiste en buscar el proceso mas cercano a la cabecera de la cola cuyo tama
no sea
igual o menor al de la partici
on libre. No minimiza la fragmentacion interna pero es rapido en la b
usqueda.
Criterio del mejor ajuste. Consiste en buscar por toda la cola de procesos el que mejor se ajuste al tama
no
de la partici
on libre. Es lento de b
usqueda pero minimiza la fragmentacion interna. Puede provocar que los
procesos peque
nos sean discriminados y nunca se ejecute, para evitar eso se puede limitar las veces que un
proceso es discriminado.
Esta tecnica tiene los mismos problemas que la anterior, pero en menor cuanta, es decir, provoca menos
fragmentaci
on interna y puede ejecutar procesos mas grandes.
6.4.4

Traducci
on de direcciones y protecci
on

El s.o. para la gesti


on de memoria mediante particionamiento fijo requiere el uso
de dos registros denominados registro base y
registro limite.
Cuando un proceso es planificado para
ser ejecutado, el s.o. carga en el registro base
la direcci
on fsica base de la partici
on de
memoria principal donde se encuentra cargado el proceso. Adem
as carga el registro
limite con la direcci
on l
ogica m
as alta del
espacio de direcciones l
ogicas del proceso, es
decir, con el tama
no de su espacio l
ogico.
Gracias a este mecanismo de traducci
on
de direcciones, el espacio de direcciones
l
ogicas de un proceso puede estar cargado
en cualquier partici
on de la memoria principal, es decir, el sistema soporta reubicaci
on
din
amica en tiempo de ejecuci
on.
Traduccion de direcciones y proteccion de memoria
6.4.5

Ventajas e inconvenientes

Su principal ventaja es que es sencilla de implementar para el s.o. y produce muy poco sobrecarga.
Los principales inconvenientes son la fragmentacion interna y que el mayor tama
no de proceso viene marcado
por la partici
on de mayor tama
no. Adem
as el n
umero maximo de procesos en ejecucion viene limitado por el
n
umero de particiones en que se ha dividido la memoria principal, esto provoca una disminucion del rendimiento.

6.5
6.5.1

Particionamiento din
amico
Caractersticas

Se caracteriza porque el n
umero de particiones no es fijo sino que vara a lo largo del tiempo. En la memoria
principal se distinguen dos tipos de elementos:
Partici
on. Una zona contigua de memoria ocupada.
Huecos. Una zoma contigua de memoria libre.
Cuando un proceso se carga busca un hueco, crea una particion igual al tama
no del proceso y lo que sobra lo
deja hueco. El n
umero de particiones y huecos van variando a lo largo del tiempo.
Conforme la memoria se va fragmentando pueden quedar huecos tan peque
nos que no puedan usarse por si solos
para crear una partici
on reutilizable, a este fenomeno se le conoce como fragmentaci
on externa. Para solucionar
este problema se usa la tecnica conocida como compactaci
on de memoria, consiste en agrupar todos los huecos en
uno solo. Esto tiene el inconveniente de consumir bastante tiempo de procesador y producir una alta sobrecarga.
39

Com
unmente tanto el tama
no de la particion que se crea como el hueco que queda son m
ultiplos de una
determinada unidad de asignaci
on o bloque de memoria mnimo. El tama
no de la unidad de asignacion es constante
y nunca inferior al de una palabra. De esta forma una particion (o hueco) constara de un determinado n
umero de
bloques de memoria o unidades de asignaci
on.
Con esto se evitan los huecos de tama
no muy peque
no, ya que al menos tendran una unidad de asignaci
on pero
provoca fragmentaci
on interna, aunque esta es despreciable porque como mucho sera casi una unidad de asignaci
on.
Para poder implementar esta tecnica el s.o. debe mantener una o varias estructuras de datos que contenga la
informaci
on sobre las particiones y los huecos existentes en memoria principal. Se puede gestionar todo a la vez
en una sola estructura mediante un mapa de bits o una lista enlazada. O separar los huecos y las particiones, esto
acelera el proceso de b
usqueda de huecos.
6.5.2

Asignaci
on de espacio de memoria principal

Cuando un proceso necesita crear una particion de tama


no S debe buscar un hueco donde quepa, para ello debe
usar un algoritmo de b
usqueda, los m
as usuales son:
Algoritmo del primer ajuste(first fit). Se busca desde el principio de la estructura de datos y se asigna el
primer hueco con tama
no igual o mayor que S. Es un algoritmo sencillo y rapido. Este algoritmo produce
huecos peque
nos al comienzo de la estructura de datos.
Algoritmo del siguiente ajuste(next fit). La b
usqueda en la estructura de datos de un hueco de tama
no igua o
mayor que S se inicia desde donde finalizo la b
usqueda anterior. Produce peores resultado en aprovechamiento
de memoria y tiempo de b
usqueda que el anterior.
Algoritmo del mejor ajuste(best fit). Busca entre todos los huecos el que mejor se ajuste al tama
no S. Es
lento en la b
usqueda y provoca huecos peque
nos difcilmente reutilizable por que es necesario compactar la
memoria frecuentemente.
Algoritmo del peor ajuste(worst fit). Se busca en toda la estructura de datos el hueco que sea igual o exceda
lo m
aximo posible el valor S. El objetivo es que los huecos sobrantes sean reutilizables, pero en la pr
actica se
demuestra que no es muy efectivo.
El m
as r
apido es el de primer ajuste y en cuanto al aprovechamiento de la memoria no se puede afirmar que el de
mejor ajuste sea superior al de primer ajuste, pero si que el de peor ajuste es el que produce peor aprovechamiento
de la memoria.
6.5.3

Traducci
on de direcciones y protecci
on

Se implementa igual que en la tecnica del particionamiento fijo, es decir, se utilizan dos registros dedicados
denominados registro base y registro lmite.
6.5.4

Ventajas e inconvenientes

La tecnica de particionamiento din


amico presenta las siguientes ventajas con respecto a la tecnica de particionamiento fijo:
Minimiza la fragmentaci
on interna. Como mucho sera casi una unidad de asignacion de memoria.
Permite ejecutar procesos de mayor tama
no. Tan grandes como sea el hueco disponible, si esta la memoria
vaca, tan grande como ella.
Permite asignar f
acilmente m
as espacio a procesos cuya regi
on de datos o pila aumenta por encima del tama
no
inicialmente asignado. Simplemente hay que aumentar el tama
no de la particion si tiene hueco contiguo o
buscar un hueco m
as grande y mover el proceso.
Por otra parte la tecnica del particionamiento dinamico presenta las siguientes desventajas con respecto a la
tecnica de particionamiento fijo:
Las estructuras de datos que requieren para su implementaci
on y los algoritmos para su gesti
on son m
as
complejos. Esto se traduce en mayor sobrecarga.
Produce fragmentaci
on externa. Lo que reduce el aprovechamiento de la memoria.

40

6.6
6.6.1

Paginaci
on simple
Descripci
on

Consiste en dividir la memoria principal en bloques del mismo tama


no SP denominados marcos de p
agina
o p
aginas fsicas. El espacio de direcciones de un proceso tambien se divide en bloques del mismo tama
no SP
denominados p
aginas o p
aginas l
ogicas. Un p
agina de un proceso se carga un un marco de pagina libre de memoria
principal. Adem
as las p
aginas de un mismo proceso no tiene porque ocupar marcos contiguos.
Sea CM P la capacidad de la memoria principal, el n
umero NM P de marcos de pagina de tama
no SP en que se
divide la memoria principal se obtiene de la forma que viene a continuacion, ademas si CX es el tama
no del espacio
de direcciones l
ogica de un proceso, el n
umero NP de paginas de tama
no SP se obtiene de la forma a continuaci
on:


NM P = f loor

CM P
SP


NP = ceil

CX
SP

Cada marco de p
agina tiene asignado un identificador numerico entero positivo j que lo identifica de forma unvoca.
A este n
umero se le denomina n
umero del marco de p
agina. As se habla del marco de p
agina j o marco j de memoria
principal. Cada p
agina del proceso tiene asignado un identificador numerico entero positivo i. A este n
umero se le
denomina n
umero de p
agina. As se habla de la pagina i del proceso X.
Un factor importante es el tama
no SP , este tama
no esta limitado por el hardware del computador y suele ser
una potencia de 2.
En marco j se dice que est
a libre si se puede utilizar para cargar una pagina de un proceso i. El n
ucleo del s.o.
se reserva un conjunto de marcos V para su uso, quedando el resto NM P V disponible para cargar paginas de
proceso de usuario.
En esta tecnica una direcci
on fsica consta de dos campos:
El n
umero de marco de p
agina de f bits. Que se obtiene a partir de NM P resolviendo esto:


min NM P 2f
f

El desplazamiento dentro del marco de d bits. Se obtiene a partir de SP de una pagina o de un marco de
p
agina expresado en unidades direccionables resolviendo:


min SP 2d
d

El tama
no n de una direcci
on fsica se puede calcular a partir de la capacidad CM P de memoria principal expresada
de unidades direccionables o sumando los datos anteriores:
min {CM P 2n }

n=f +d

Una direcci
on l
ogica consta de dos campos:
El n
umero de p
agina de p bits. Que se obtiene a partir de NP resolviendo:
min {NP 2p }
p

El desplazamiento dentro de la p
agina de d bits. Se obtiene igual que el desplazamiento de la direcci
on fsica.
El tama
no m de una direcci
on l
ogica se puede calcular a partir de la capacidad CX del espacio de direcciones
del proceso X expresada de unidades direccionables o sumando los datos anteriores:
min {CX 2m }

m=p+d

En un esquema con paginaci


on simple el tama
no m de una direccion logica es menor o igual al tama
no n de
una direcci
on fsica, es decir, se verifica la relacion m n.
Un s.o. para implementar la paginaci
on generalmente utiliza las siguientes estructuras de datos:
Tablas de p
aginas. Cada proceso tiene asignada una. Cada entrada i de la tabla de paginas de un proceso
X contiene, entre otro, el marco j donde se encuentra almacenada la pagina i del proceso X y los permisos
de acceso a la p
agina. Puede contener informacion sobre la ubicacion de la pagina en memoria secundaria,
aunque eso se puede hacer en otro sitio.

41

Tabla de marcos de p
agina. Tiene tantas entradas como marcos de pagina tiene la memoria principal. Cada
entrada j contiene, entre otras cosas: su estado, si esta libre o ocupado, punteros para crear una lista de
marcos libres, y la ubicaci
on en memoria secundaria de la copia de la pagina i contenida en el marco.
Lista de marcos libres. Cuando hay que asignar un marco se selecciona el primero de la lista. Si un marco
queda libre es colocado al final de la lista.
En su implementaci
on m
as sencilla, denominada paginaci
on simple, para que un proceso X pueda ser ejecutado
es necesario que todas sus p
aginas se encuentren cargadas en memoria principal, aunque no es necesario que sea
de forma contigua.
Conforme evoluciona la ejecuci
on de un proceso el contenido de las tablas de pagina cambia. Tambien se ir
a
modificando din
amicamente el contenido de la tabla de marcos de pagina y la lista de marcos libres.
6.6.2

Traducci
on de direcciones

La traducci
on de direcciones l
ogicas a direcciones fsicas requiere que el sistema operativo cargue en el hardware
cierta informaci
on sobre la tabla de p
aginas del proceso actualmente en ejecucion. La informacion cargada depende
del hardware disponible:
Registro base. Se utiliza para almacenar la direccion fsica de comienzo de la tabla de paginas.
Banco de registros. Se utiliza para almacenar una copia completa de la tabla de paginas.
Banco de traducci
on de vista lateral(Translation Lookaside Buffer, TLB). Se utiliza para almacenar algunas
entradas de la tabla de p
aginas.
Vamos a describir los mecanismos m
as habituales de traduccion con estos componentes:
Traducci
on de direcciones con un registro base
En el registro base se carga la direcci
on fsica de comienzo de la tabla de paginas de proceso. Para obtener la
direcci
on fsica a partir de una direcci
on logica, se suma su n
umero de pagina i al registro base y se obtiene
la direcci
on fsica donde se guarda que marco de pagina j almacena la pagina i.

Traducci
on de direcciones en paginacion con un registro base
La principal ventaja es que u
nicamente requiere que el s.o. cargue el registro base en cada cambio de proceso,
lo cual trae tiempos de cambio de proceso mas peque
nos.
Su principal problema es que requiere de un acceso a la memoria principal para localizar en la tabla de p
aginas
el marco j que contiene la p
agina i. Esto introduce un retardo en la ejecucion.
Traducci
on de direcciones con un banco de registros.
En el caso de disponer de un banco de registros, el s.o. puede cargar en el, cuando se produce un cambio de
proceso, una copia de la tabla de p
aginas del proceso que se va a ejecutar.
Su principal ventaja es que la traducci
on de una direccion logica no requiere de ning
un acceso a memoria
principal. Su principal inconveniente es que solo se puede usar si se asegura que el tama
no de la tabla de
procesos no es mayor que el banco de registros.
Otro inconveniente es que cuando se produce un cambio de proceso se ha de carga toda la tabla de registros
entera lo que aumenta le tiempo de cambio de proceso y por tanto la sobrecarga.
42

Traducci
on de direcciones en paginacion con un banco de registros
Traducci
on de direcciones con un TLB
Un TLB es una memoria cache especial de alta velocidad. Funciona igual que la memoria cache de un
procesador. Cada entrada del TLB contiene una entrada de la tabla de paginas del proceso actualmente en
ejecuci
on (no es necesaria que esten toda la tabla cargada en el TLB).
Cuando se traduce una direcci
on l
ogica el TLB examina si tiene en sus entradas la pagina i que necesita. Se
pueden dar dos situaciones, si est
a se produce un acierto de TLB se lee el campo n
umero de marco j y se
forma la direcci
on fsica junto con el campo desplazamiento.
Si Se produce un fallo de TLB, la gesti
on del mismo requiere:
Una operaci
on de lectura a memoria principal para acceder a la entrada i de la tabla de paginas del
proceso y obtener el marco de p
agina j donde se encuentra la pagina i. Con esto ya se puede formar la
direcci
on fsica.
Copiar en una entrada vaca del TLB(o reemplazar una utilizando un algoritmo de remplazamiento) el
contenido de dicha entrada i para futuras ocasiones.
La gesti
on de un fallo en el TLB la puede realizar el hardware, el sistema operativo o ambos en colaboraci
on.
Si el hardware esta implicado se utiliza un registro base donde se copia la direccion fsica de comienzo de la
tabla de p
agina del proceso en ejecuci
on.
Cuando se cambia de proceso se carga este registro base y se vaca su TLB ya que su contenido pertenece al
proceso anterior. Al principio se producen muchos fallos de TLB.
El uso de un TLB es una soluci
on a medio camino entre el uso de un registro base y un banco de registros,
permite ejecutar procesos de espacios l
ogicos grandes y solo realiza una acceso a memoria principal en la
traducci
on una direcci
on si se produce un fallo de TLB.
6.6.3

Tablas de p
aginas paginadas

Si un proceso posee un espacio de direcciones logicas grande, entonces su tabla de paginas ocupara una cantidad
no despreciable de memoria fsica contigua.
Una forma de tratar a las tablas de p
aginas grandes es descomponerlas tambien en paginas, se tiene por tanto
una tabla de p
aginas paginada. Se pueden distinguir dos tipos de paginas:
P
aginas ordinarias. Contienen instrucciones y datos del espacio logico de un proceso.
Paginas de tablas de p
aginas. Contienen entradas de una tabla de paginas.
Para localizar en memoria principal a las paginas de una tabla de paginas se utiliza otra tabla de p
aginas
denomina tabla de p
aginas de primer nivel o tabla de p
aginas primaria. A las entradas de la tabla de p
aginas
original contenidas en una p
agina se les denomina tabla de p
aginas de segundo nivel o tabla de p
aginas secundaria.
Cada proceso tiene una u
nica tabla de primer nivel y varias de segundo nivel.

43

Traducci
on de direcciones logicas usando una tabla de paginas paginada
Usando una tabla de p
aginas paginada, es decir, dos niveles de paginaci
on, el campo n
umero de
p
agina de una direcci
on l
ogica se descompone en los
siguientes dos subcampos:

Indice
tabla primaria(ITP). Contiene el
n
umero de la entrada de la tabla de p
aginas
de primer nivel donde hay que buscar el marco
de memoria que contiene la p
agina que ubica
la tabla de paginas de segundo nivel. Si la
tabla de p
aginas de primer nivel de un proceso
tiene un n
umero de entradas NT P 1 entonces
el tama
no r se obtiene resolviendo:

Formato de una direccion logica: a) Un nivel. b) Dos niveles.

min {NT P 1 2r }
r

Indice
tabla secundaria(ITS). Contiene el n
umero de la entrada de la tabla de paginas de segundo nivel donde
hay que buscar el marco de memoria que contiene a la pagina ordinaria referenciada. Si las tablas de p
aginas
secundarias del proceso tienen un n
umero de entradas NT P 2 entonces el tama
no s se obtiene resolviendo:
min {NT P 2 2s }
s

Si la tabla de p
aginas de primer nivel es demasiado grande puede descomponerse tambien en paginas. Lo que
dara un sistema de paginaci
on de tres niveles. Podemos usar todos los niveles que queramos pero hemos de tener
en cuenta que por cada nivel se produce un acceso a memoria principal retrasando la traduccion y por tanto la
ejecuci
on de la instrucci
on. Es raro usar m
as de tres niveles de paginacion. Si se dispone de un TLB el rendimiento
del sistema mejora notablemente ya que solo hay que buscar en los sucesivos niveles cuando se produce un fallo en
el TLB.
6.6.4

Tabla de p
aginas invertidas

Para solucionar el problema de las tablas de paginas grandes, aparte del uso de tablas paginas paginadas, otra
posible soluci
on consiste en usar una u
nica tabla de p
aginas invertida, en lugar de una tabla de pagina por proceso.
Una tabla de p
aginas invertida tiene asociada una entrada por cada marco j de memoria principal, en vez de
una entrada por cada p
agina i de un proceso.
Cada entrada j de la tabla de p
aginas invertida contiene tpicamente los siguiente campos: n
umero de pagina i
alojada en el marco j, identificador numerico del proceso al que pertenece dicha pagina y bits de control (protecci
on,
referenciada,...).
El problema de traducir direcci
on l
ogicas a direcciones fsicas de esta forma es que el tiempo de una traducci
on
no es constante y depende del n
umero de entradas en la tabla que hay que comprobar. Para evitar este problema
se implementa la tabla de p
aginas invertida como una tabla hash. Requiere uno o dos accesos a memoria para
obtener el marco j para construir la direcci
on fsica. Para mejora este rendimiento podemos usar un TLB.

44

Traducci
on con tabla de paginas invertida
6.6.5

Protecci
on

En cada entrada i de la tabla de p


aginas de un proceso existe un campo protecci
on con un tama
no de uno o
varios bits que en funci
on de su valor permiten establecer el tipo de acceso que se permiten sobre dicha p
agina i :
lectura, escritura, ejecuci
on,...
Si se detecta un intento de acceso incorrecto entonces el hardware genera una excepcion denominada fallo de
protecci
on. El s.o. suele finalizar el proceso y avisar al usuario del proceso.
Adem
as suele existir tambien un registro lmite donde el s.o. almacena en cada cambio de proceso el n
umero
de que consta el proceso ejecutado. Si se referencia a una direccion logica cuyo n
umero de pagina es mayor que el
valor del registro lmite se produce una excepcion y se act
ua como en el caso anterior.
6.6.6

Compartici
on de p
aginas

Si un programa posee c
odigo reentrante, es decir, que no se puede modificar, se ahorrara espacio en memoria
si solo se mantuviese cargada en memoria principal una u
nica copia de las paginas de codigo de dicho programa.
Que pueden usar usadas a la vez por todos los procesos asociados a dicho programa en modo solo lectura.
En cada entrada de la tabla de marcos existe un contador de referencias que indica el n
umero de entradas en
las tablas de p
aginas que est
an referenciando a una pagina fsica compartida. De esta forma una pagina solo puede
ser eliminada de la memoria si el contador de referencias es cero.
6.6.7

Ventajas e inconvenientes

La paginaci
on simple es un tecnica de gestion de memoria que presenta varias ventajas:
No produce fragmentaci
on externa.
Produce una sobrecarga peque
na.
No necesita intervenci
on humana. Es un tecnica implementada y gestionada por completo por el s.o.
Permite compartir entre varios procesos un c
odigo com
un.
La principal desventaja es que produce fragmentaci
on interna. En el peor caso sera de casi una pagina. En
promedio la fragmentaci
on interna es del orden de media pagina por proceso.
Una caracterstica que puede ser considerada una ventaja o un inconveniente seg
un el caso, es que la paginaci
on
es invisible al programador. Un programador desconoce y tampoco necesita conocer a la hora de programar en
cu
ales y cu
antas p
aginas se va a descomponer una determinada parte de su programa.

6.7
6.7.1

Segmentaci
on simple
Descripci
on

El c
odigo de un programa se puede dividir en varios elementos. una rutina o modulo principal, un conjunto de
subrutinas o m
odulos auxiliares y un conjunto de estructuras de datos. Cada uno de estos elementos tiene asignado
un nombre.
La segmentaci
on simple es una tecnica de gestion de memoria que soporta los elementos en los que se descompone
el c
odigo de un programa. El programa es dividido por el compilador en segmentos. Cada segmento es una entidad

45

l
ogica conocida por el programador asociada a una determinada estructura de datos o a un modulo, pero nunca a
una mezcla de ambos.
Cada segmento tiene un espacio propio de direcciones logicas, un nombre y un identificador numerico entero
positivo h que se denomina n
umero del segmento. As se habla del segmento h del proceso X.
Una direcci
on l
ogica consta de dos campos:
El n
umero del segmento de s bits. El tama
no de s se obtiene a partir del n
umero total de segmentos NS de
que consta un proceso X, resolviendo la siguiente desigualdad:
min {NS 2s }
s

El desplazamiento dentro del segmento de d bits. El tama


no de d se obtiene a partir del tama
no SS del
segmento expresado en unidades direccionables resolviendo:


min SS 2d
d

En la segmentaci
on l
ogica una direcci
on l
ogica nunca puede ser de mayor tama
no que una direccion fsica.
En la segmentaci
on simple un proceso no puede ser ejecutado si todos sus segmento no se encuentran cargados
en memoria principal, pero no tienen porque estar ubicados en particiones contiguas.
Cuando el sistema operativo tiene que cargar un proceso en la memoria principal crea una tabla de segmentos
asociados al proceso. Esta tabla esta indexada por el n
umero del segmento, es decir, tiene una entrada por
cada segmento del proceso. Cada entrada contiene la direccion fsica base de cada segmento y la longitud del
segmento(en unidades de asignaci
on). Tambien contiene informacion relativa a los permisos de acceso al segmento.
Adem
as puede contener informaci
on sobre ubicacion de la copia del segmento en memoria secundaria. A veces esta
informaci
on se implemente en una tabla diferente.
6.7.2

Traducci
on de direcciones

Traducci
on de direcciones con segmentacion simple con registro base
Requiere que el s.o. cargue en el hardware cierta informacion sobre la tabla de segmentos del proceso actualmente
en ejecuci
on. La informaci
on que carga depende de los componentes hardware disponibles para realizar la traducci
on
de direcciones.
Si se dispone de un registro base cuando el s.o. cambia de proceso carga en el la direccion fsica de la tabla de
segmentos.
El mecanismo descrito de traducci
on de direcciones tiene como principal ventaja que u
nicamente requiere que
el s.o. cargue en cada cambio de contexto un solo registro, lo cual disminuye el tiempo de proceso. Su principal
inconveniente es que requiere un acceso a memoria principal para leer en la tabla de segmentos la direcci
on fsica
base y la longitud del segmento. Esto introduce un retardo en la ejecucion de la instruccion en curso. Se puede
usar un banco de registros o un TLB.
6.7.3

Protecci
on

La protecci
on del espacio de direcciones se implementa a nivel de segmento. En cada entrada h de la tabla de
segmentos se implanta un campo de protecci
on con uno o varios bits que establecen el tipo de acceso.
Si se detecta un acceso incorrecto se genera una excepcion y el s.o. termina el proceso y avisa a su usuario.
Puede existir un registro limite donde el s.o. almacena el n
umero de segmentos de que consta el proceso que
va a ser ejecutado. Si se hace una referencia a una direccion logica y el n
umero de segmento es mayor que el
almacenado en el registro limite se genera una excepcion y el s.o. termina el proceso y avisa a su usuario.
46

6.7.4

Compartici
on de segmentos

Esta tecnica permite que un segmento de codigo o de datos sea compartido por varios procesos. Para ello el s.o.
mantiene una tabla de segmentos cargados en memoria principal donde, entre otras cosas, existe un contador de
referencias que mantiene el n
umero de procesos que esta referenciando a dicho segmento. El segmento no se puede
borrar hasta que el contador de referencias llega a 0.
6.7.5

Ventajas e inconvenientes

La segmentaci
on simple presenta las siguientes ventajas:
Produce una fragmentaci
on interna despreciable. La fragmentacion interna por segmento sera como m
aximo
del orden de una unidad de asignaci
on.
Soporta la visi
on modular que el programador posee de su programa.
Permite manejar con facilidad estructuras de datos que crecen.
Facilita la protecci
on y compartici
on de las diferentes partes de un programa. La proteccion se realiza a nivel
de segmento. En la paginaci
on no es posible asegurar como en esta tecnica que en la misma pagina no habr
an
diferentes partes del programa.
Entre los inconvenientes de la segmentaci
on destacan los siguientes:
Produce fragmentaci
on externa. Lo que reduce el aprovechamiento de la memoria y requiere el uso de
compactaci
on. Hay menor fragmentaci
on que produca la tecnica del particionamiento dinamico.
Aumenta la sobrecarga del sistema. Las estructuras de datos que requiere para su implementaci
on y los
algoritmos para su gesti
on son comparativamente mas complejos que en el caso del particionamiento din
amico.

6.8

Segmentaci
on con paginaci
on simple

La segmentaci
on y la paginaci
on se pueden combinar para aprovecharse de las ventajas de cada tecnica y reducir
sus inconvenientes. La combinaci
on de ambas tecnicas constituye la tecnica de gestion de memoria conocida como
segmentaci
on con paginaci
on. B
asicamente esta tecnica consiste en dividir cada segmento de un proceso en un
determinado n
umero de p
aginas.
Una direcci
on l
ogica se descompone en tres campos: n
umero de segmento de s bits, n
umero de p
agina de p bits
y desplazamiento dentro de la p
agina de k bits.
Cuando se carga un proceso un memoria principal el s.o. crea la tabla de segmentos del proceso y varias tablas
de p
aginas(una por cada segmento). Ahora cada entrada de la tabla de segmentos no contiene la direcci
on fsica
base del segmento sino la direcci
on fsica base de la tabla de paginas asociada al segmento.
Si se dispone de un registro base, entonces el s.o.,en cada cambio de proceso, carga en dicho registro base la
direcci
on fsica de comienzo de la tabla de segmentos.

Traducci
on de direcciones en un sistema de segmentacion con paginacion.
El mecanismo descrito de traducci
on de direcciones realiza dos accesos a memoria principal: el primero para leer
en la entrada h de la tabla de segmentos al direccion fsica base de la tabla de paginas y la longitud del segmento,
el segundo para leer en la entrada i de la tabla de paginas el marco de pagina j donde se aloja la pagina i. Para
acelerar la traducci
on de direcciones se puede utilizar un banco de registros o un TLB.
47

Memoria virtual

7.1

Introducci
on

Las tecnicas estudiadas en el captulo anterior tenan como limitacion que los procesos ejecutados deban cargarse
completamente en la memoria principal limitando el multiproceso y que el tama
no del espacio logico de un proceso
nunca puede superar el tama
no de la memoria fsica disponible para la ejecucion de procesos, salvo que haya sido
programado con superposiciones.
Para superar esto se introdujo la tecnica de gestion de memoria conocida como memoria virtual, que consiste en
tener cargadas en memoria principal solo aquellas partes(paginas o segmentos) del espacio de direcciones l
ogicas,
que ahora tambien se denominan direcciones virtuales, de un proceso que se van necesitando durante su ejecuci
on.
Si se accede a una parte que no esta cargada en memoria, se produce una excepcion y el s.o. lleva la parte necesitada
a la memoria principal y reinicia la instrucci
on que provoco la excepcion.
La memoria virtual aumenta el grado de multiprogramacion, permite ejecutar procesos con un espacio de
direcciones virtuales de tama
no superior al tama
no de la memoria fsica disponible y reduce las operaciones de E/S
al intercambiar un proceso ya que no se debe hacer entero.
La implementaci
on de la memoria virtual requiere que el hardware soporte el reinicio de las instrucciones de
su repertorio. Se suele utilizar un componente hardware denominado unidad de gesti
on de memoria(Memory
Management Unit, MMU) que se encarga de realizar la traduccion de una direccion virtual en una direcci
on fsica.
Consta de registros, sumadores y comparadores. Tambien puede tener un banco de registros o un TLB.
La memoria virtual se puede implementar usando paginaci
on por demanda(UNIX,Linux y Windows), segmentaci
on por demanda(OS/2) o segmentaci
on con paginaci
on por demanda(Multics). La mas utilizada es la
primera seguida de la tercera.

7.2
7.2.1

Paginaci
on por demanda
Descripci
on

La tecnica de paginaci
on por demanda, tambien conocida como tecnica de demanda de p
agina, divide el espacio
de la memoria principal en bloques de igual tama
no denominados marcos de pagina. Ademas divide el espacio de
un proceso en bloques del mismo tama
no denominados paginas. En un determinado instante un marco de p
agina
j puede estar libre o ocupado por una p
agina i de un proceso X.
Como no es necesario para ejecutar un proceso que esten todas sus paginas cargadas en memoria principal,
cuando se referencia a una p
agina que no esta cargada en memoria principal se produce una excepcion denominada
fallo de p
agina. El s.o. busca un marco libre o uno ocupado para ser reemplazado, y copia en el mismo la pagina
solicitada desde secundaria.
Aparte del tratamiento de fallos de p
agina, la implementacion de la paginacion por demanda requiere que el
s.o. realice tambien las siguientes tareas:
Reemplazamiento de p
aginas. Si existe un fallo de pagina y no hay marco libre el s.o. elige uno y lo reemplaza.
Si el marco reemplazado contiene una pagina modificada debe guardarla.
Asignaci
on de marcos de memoria principal. El s.o. tiene que decidir cuantos marcos asigna inicialmente
para cada uno.
Control de carga. El s.o. debe controlar el grado de multiprogramacion del sistema.
Copia en memoria secundaria de las paginas modificadas.
El s.o. mantiene las siguientes estructuras para implementar esta tecnica: tabla de marcos de p
agina, lista de
marcos libres y tablas de p
aginas. Las dos primeras son iguales a la tecnica de paginacion simple. La u
ltima,
al menos, contiene un campo m
as llamado presente/ausente o validez/invalidez. Los campos mas usuales de una
entrada i en la tabla de p
aginas son:
N
umero de marco de p
agina. Contiene el n
umero de marco que contiene la pagina en memoria principal.
Validez o presencia. Consta de un u
nico bit v que esta activo si la pagina se considera valida y puede ser
utilizada. Si esta desactivado y se accede a ella el hardware provoca un fallo de pagina.
Protecci
on. Configura el acceso que posee la pagina (lectura , escritura, ejecucion...)
Referenciada. Este campo consta de un u
nico bit r que se activa cuando la pagina i es referenciada por una
direcci
on virtual.
Modificada. Consta de un solo bit m que si esta activo indica que la pagina ha sido modificada por una
operaci
on de escritura.

48

Los tres primeros campos son configurados por el s.o. y consultados por la MMU cuando se traduce una
direcci
on virtual a una fsica. Los otros dos son activados por el hardware y configurados a 0 por el s.o. Cada
cierto tiempo el campo referenciada es puesto a 0 para todas las paginas del proceso por el s.o.
El algoritmo de reemplazamiento utiliza los bits r y m para decidir que pagina contenida en un marco ser
a
elegida para ser reemplazada.
7.2.2

Reinicio de instrucciones

Un fallo de p
agina puede producirse en cualquier momento de una instruccion, el s.o. tiene que ser capaz de
solucionar el fallo de p
agina y luego reiniciar la instruccion. Para ello es necesario conocer la direccion virtual de
dicha instrucci
on. Las arquitecturas que soporta memoria virtual por demanda tienen un registro especial donde
copian el valor del registro contador del programa antes de iniciar la fase de b
usqueda de una instruccion.
Si el procesador soporta un modo de direccionamiento indexado para acceder a arrays, pilas o colas. Para
reiniciar estas instrucciones se necesita otro registro especial done almacenar el nombre del registro o registros que
se han autoincrementado y su valor para poder deshacer los cambios al reiniciar la instruccion.
7.2.3

Localizaci
on de p
aginas en memoria secundaria

El s.o. puede buscar una p


agina en dos posibles localizaciones de memoria secundaria:
Bloque de disco en un archivo ejecutable. Los bloques de disco que ocupa el archivo no contienen las p
aginas
ya formadas propiamente dichas sino que poseen el contenido que permite su creacion.
Bloque de disco del
area de intercambio. En el area de intercambio se almacenan las paginas de un proceso
presentes en memoria principal cuando este ha sido intercambiado y las paginas que han sido seleccionadas
para ser reemplazadas de la memoria principal por otras durante un fallo de pagina.
Cada bloque del
area de intercambio o del sistema de archivos queda identificado por un n
umero de bloque,
tambien denominado direcci
on de disco.
El
area de intercambio es m
as r
apida que el sistema de archivos, por ello algunos s.o. copian todo el proceso
en ejecuci
on a ella al iniciar la ejecuci
on. Si la copia un rango de direcciones contiguas y cada pagina ocupa un
bloque, el s.o. solo necesita conocer la direcci
on de disco donde empieza la imagen del proceso. Dicha direcci
on se
almacena en el bloque de control del proceso.
Esa estrategia tiene un problema, el espacio de direcciones virtuales de un proceso puede crecer durante su
ejecuci
on, por lo que habra que mover el proceso a un hueco mas grande lo que conlleva mucho tiempo. Para
evitar esto se dejan huecos independientes para la region de codigo, datos y pila de un proceso. En este caso el s.o.
almacena en el bloque de control de proceso la direccion de inicio de cada region.
Otro problema es que se consume bastante espacio del area de intercambio al tener que copiarlo todo. Para
evitar esto algunos s.o. no copian por adelantado y solo copian aquellas paginas que se hayan reemplazado en un
fallo de p
agina o se haya intercambiado el proceso. El s.o. mantiene la direccion de disco en el area de intercambio
de cada p
agina intercambiada en una tabla denominada mapa de disco que tiene tantas entradas como paginas
tenga un proceso.
7.2.4

Bloqueo de marcos de p
agina

Un marco de memoria esta bloqueado o pinchado(pinning), si sus contenido no puede ser reemplazado. El s.o.
bloquea un marco de p
agina activando un bit de bloqueo en la entrada asociada a dicho marco en la tabla de
marcos de p
agina. Los marcos reservado (por ejemplo buffers de E/S) tambien estan bloqueados.
7.2.5

Tratamiento de un fallo de p
agina

Cuando la MMU traduce una direcci


on virtual en una fsica, lee en la tabla de paginas la entrada para la
p
agina adecuada y comprueba su bit de validez. Si esta desactivado entonces el hardware produce una excepci
on
denominada fallo de p
agina y guarda en la pila del n
ucleo el valor del contador de programa y de los registros
especiales. Acto seguido el s.o. averigua que ha causado la excepcion y guarda el contexto del proceso. Una vez
descubierta la direcci
on virtual que ha provocado el fallo y que esta direccion es legal, consulta la lista de marcos
libres, sino hay ninguno libre invoca el algoritmo de reemplazamiento y prepara uno que no este bloqueado. A
continuaci
on, mientras copias desde la memoria secundaria la pagina que ha provocado el fallo al marco elegido,
carga otro proceso para que el micro pueda continuar trabajando y bloquea el marco elegido para que no se apodere
de el otro proceso. Cuando termina de copiar la pagina se produce una excepcion y el s.o. vuelve a planificar el
proceso que ha provocado el fallo reinici
andolo a la instruccion que haba provocado el fallo.

49

7.3

Conjunto de trabajo de un proceso

Los programas que se ejecutan en un computador cumplen el principio de localidad de referencias, tambien
denominado principio de proximidad, que afirma que durante un determinado intervalo de tiempo de ejecuci
on de
un proceso, este referencia a direcciones virtuales proximas entre s, es decir, a paginas cercanas. Dicho conjunto
de p
aginas forma una zona de localidad del proceso. Este principio afirma que las referencias a memoria dentro de
la ejecuci
on de un proceso tienden a agruparse en zonas de localidad.
Un conjunto de trabajo de un proceso se puede definir para el instante ti de tiempo virtual como el conjunto de
p
aginas distintas que el proceso en ejecuci
on ha referenciado en sus u
ltimas referencias a memoria principal.
Se denomina tiempo virtual al tiempo que un proceso esta siendo ejecutado en el procesador.
El conjunto de trabajo se puede denotar como W (ti , ) donde ti es un instante de tiempo virtual determinado
(entre (0, tf ) siendo tf el extremo final del intervalo de tiempo virtual) y es el n
umero de u
ltimas referencias
consideradas o ventana del conjunto de trabajo (entre [1, L] siendo L el n
umero de referencias realizadas hasta el
instante ti .
El conjunto de trabajo se puede expresar de la siguiente forma:
W (ti , ) = {i1 , i2 , ..., ih , ..., ik , ..., in }

con

ih 6= ik

si

h 6= k

La correcta elecci
on del valor de es fundamental para modelar adecuadamente la zona de localidad actual de
un proceso y no asignar al proceso m
as marcos de pagina de los estrictamente necesarios. El valor optimo de es
desconocido, si se elige un valor muy peque
no el conjunto de trabajo no cubrira toda la zona de localidad actual en
al que se encuentra el proceso y si el valor es grande el conjunto de trabajo cubrira mas de una zona de localidad.
Otro inconveniente es que para mantener correctamente el conjunto de trabajo de un proceso, tenda que ejecutarse
en cada referencia a memoria realizada por el proceso, lo cual aumentara la sobrecarga y el tiempo de ejecuci
on
del proceso.
En la pr
actica, para reducir la sobrecarga, el s.o. construye el conjunto de trabajo de un proceso periodicamente
cada cierto tiempo virtual . Para ello revisa el campo referenciada de cada entrada de la tabla de paginas del
proceso, el conjunto de trabajo esta formado por todas aquellas paginas que tengas su bit activado. Una vez
construido el conjunto de trabajo el s.o. pone a 0 los bits de referencia activados.
El conjunto de trabajo se puede definir alternativamente como el conjunto de paginas distintas que el proceso
en ejecuci
on ha referenciado en el intervalo de tiempo virtual comprendido entre ti y ti . Donde es la ventana
de tiempo virtual, que puede tomar valores en el rango (0, ti ]. Luego ahora el conjunto de trabajo se expresa como:
W (ti , ) = {i1 , i2 , ..., ih , ..., ik , ..., in }

con

ih 6= ik

si

h 6= k

Como suceda con el valor


optimo de tambien es desconocido a priori. Si es muy peque
no el conjunto de
trabajo no cubrir
a toda la zona de localidad actual en la que se encuentra el proceso, por el contrario si es grande,
el conjunto de trabajo cubrir
a m
as de una zona de localidad.
Del estudio del conjunto de trabajo de un proceso se deducen las siguientes conclusiones:
Una p
agina que es miembro del conjunto de trabajo de un proceso no debe ser seleccionada como p
agina
vctima para ser reemplazada, ya que ello provocara rapidamente un nuevo fallo de pagina.
Un proceso debe tener asignados el suficiente n
umero de marcos para poder tener cargado en memoria su
conjunto de trabajo. En caso contrario estara constantemente provocando fallos de pagina, es decir, se
produce el fen
omeno conocido como sobrepaginaci
on o trasiego(thrashing).

7.4

Reemplazamiento de p
aginas

Esta tarea consiste en seleccionar una p


agina k cargada con un marco j de memoria principal para ser reemplazada por la p
agina i a la que haca referencia a la direccion virtual que produjo el fallo de pagina.
A la p
agina elegida para ser reemplazada se le denomina p
agina vctima.
El termino conjunto de marcos candidatos, que hace referencia a los marcos de memoria principal donde se
encuentran almacenadas las p
aginas candidatas.
El conjunto de p
aginas candidata a ser reemplazadas puede estar formado u
nicamente por las paginas cargadas
en memoria principal en marcos no bloqueados. En este caso se dice que el s.o. utiliza una estrategia de reemplazamiento de p
aginas local. Si las p
aginas candidatas pertenecen a todos los procesos en ejecucion se llama estrategia
de reemplazamiento de p
agina global.
La estrategia local produce m
as sobrecarga que la global aunque sea mas facil de analizar.
Una vez fijado el conjunto de marcos candidatos se utiliza un algoritmo de reemplazamiento para elegir que
marco se reemplaza. La bondad de un algoritmo de reemplazamiento se analiza en funcion de su rendimiento,
entendiendo como tal al n
umero de fallos de pagina que permite evitar y al tiempo de procesador que requiere su
ejecuci
on, es decir, la sobrecarga que introduce en el sistema. Hay que llegar a un compromiso entre ambos.

50

Tambien es deseable que a medida que aumente el n


umero de marcos de pagina referenciados disminuya el
n
umero de fallos. Es decir, que cumpla que a mas recursos mejor comportamiento. Aquellos algoritmos de
reemplazamiento que pueden aumentar el n
umero de fallos si aumenta el n
umero de marcos de la memoria principal
se dice que sufren la anomala de Belady. En general los algoritmos de pila no presenta esta anomala.
7.4.1

Algoritmo de reemplazo
optimo

Selecciona para ser reemplazada aquella p


agina del conjunto de paginas candidatas que tardara mas en volver
a ser referenciada por una direcci
on virtual. Para determinado n
umero de marcos es el que provoca menor n
umero
de fallos de p
agina.
No puede implementarse en la pr
actica ya que necesita conocer la cadena de direcciones virtuales futuras a la
que har
a referencia el procesador. Se utiliza como modelo.
7.4.2

Algoritmo de reemplazamiento LRU

El algoritmo de reemplazamiento de la p
agina usada menos recientemente o algoritmo de reemplazamiento
LRU(Least Recently Used) selecciona para ser reemplazada aquella pagina del conjunto de paginas candidatas que
lleva m
as tiempo sin se referenciada. Intenta predecir el futuro usando el pasado.
Este algoritmo provoca pocos fallos de p
agina pero introduce una gran sobrecarga porque su implementaci
on
es compleja.
Se puede utilizar una lista enlazada que funciona como una pila, pero debe se reordenada cada vez que se
referencia una p
agina. Tambien se puede implementar usando un contador hardware, del cual se almacena el valor
que tenia cuando fue referenciada una p
agina en la tabla de paginas, cuando se sustituye una se busca la que tenga
ese valor menor.
No se suele usar porque su implementaci
on produce una gran sobrecarga.
7.4.3

Algoritmo de reemplazamiento mediante envejecimiento(aging)

Es una aproximaci
on al algoritmo LRU que introduce una sobrecarga mucho mas peque
na y se puede implementar de forma bastante eficiente.
Se asigna un registro de desplazamiento software de n bits a cada pagina cargada en memoria principal inicializado a 0. Cada cierto tiempo T, el s.o. desplaza un bit a la derecha el contenido del registro introduciendo el bit
referenciada en el bit m
as significativo. Luego se pone el bit referencia a 0.
Se elige la p
agina que tiene el n
umero binario mas peque
no en el registro para ser reemplazada.
El tama
no n limita el n
umero de referencias que se pueden registrar.
7.4.4

Algoritmo de reemplazamiento FIFO

Selecciona para ser reemplazada aquella p


agina del conjunto de paginas candidatas que lleva mas tiempo cargada
en memoria principal.
El s.o. para implementaci
on esto debe mantener una lista enlazada o cola FIFO. Cuando un marco se sustituye
se pasa al final de la lista. Solo es necesario actualizar la lista cuando se carga una pagina en un marco de memoria,
su gesti
on requiere muy poco tiempo.
Es el m
as f
acil de implementar, pero se basa en que la pagina que esta mas tiempo en memoria ya no se va a
usar m
as, y eso no siempre es cierto porque lo que puede producir un aumento de fallos de pagina.
7.4.5

Algoritmo de reemplazamiento de la segunda oportunidad(algoritmo del reloj)

Es una variante del algoritmo FIFO que busca la pagina que lleva mas tiempo cargada en memoria y no se ha
referenciado. Lo que hace es cuando va a sustituir el marco mas antiguo comprueba si ha sido referenciado, si es
as deja el bit de referencia a 0 y lo pasa al final de la lista, luego mira el que ahora esta primero de la lista hasta
que encuentra uno con el bit r a 0 y lo reemplaza.
Tiene un mejor rendimiento, en cuanto a fallos de paginas pero produce una mayor sobrecarga que el algoritmo
FIFO.
Una forma de disminuir la sobrecarga es utilizar una lista o cola circular. Un puntero apunta al n
umero de
la p
agina que lleva m
as tiempo, si ha sido referenciada, el puntero apunta a la sucesora y no hace falta mover la
p
agina.
Cuando el algoritmo de la segunda oportunidad se implementa con una cola circular y un puntero se suele
denominar algoritmo del reloj, ya que los n
umeros de paginas contenidos en la cola circular se pueden visualizar
situadas en un crculo como si fueran las horas de un reloj y el puntero sera la manecilla.
El rendimiento del algoritmo del reloj se puede mejorar si se considera el bit referenciada (r ) y, adem
as, el bit
modificada(m). En funci
on del valor de estos bits se distinguen cuatro posibles tipos de paginas:
P
aginas con r = 0 y m = 0. Son las candidatas ideales para ser reemplazadas.
51

P
aginas con r = 0 y m = 1. Cuando son reemplazadas hay que realizar una operacion de escritura para
guardar la modificaci
on.
P
aginas con r = 1 y m = 0. No son buenas candidatas porque han sido referenciadas u
ltimamente y pueden
ser referenciadas de nuevo con bastante probabilidad.
P
aginas con r = 1 y m = 1. Son las peores candidatas y que pueden ser referenciadas de nuevo en poco
tiempo y adem
as debera guardarse su modificacion.
A esta modificaci
on se le llama algoritmo del reloj mejorado y se puede ver su funcionamiento en la siguiente
figura:

Algoritmo del reloj mejorado.

7.4.6

Algoritmo de reemplazamiento del reloj considerando el conjunto de trabajo

El algoritmo del reloj puede ser mejorado si se considera el conjunto de trabajo de un proceso, al algoritmo de
reemplazamiento de p
agina resultante se le conoce como algoritmo WSClock.
Se implementa a
nadiendo en cada entrada de la tabla de paginas de un proceso un campo llamado tiempo
de u
ltimo uso. Cuando se produce un fallo de pagina se examina r, si esta a 1 entonces se escribe en el campo
tiempo de u
ltimo uso el tiempo virtual del proceso. La diferencia entre el tiempo virtual y el tiempo de u
ltimo
uso, establece la edad de la p
agina, es decir, el tiempo que hace que la pagina no fue referenciada. Si la edad de la
p
agina es menor o igual que entonces la p
agina pertenece al conjunto de trabajo del proceso.
El algoritmo WSClock mantiene en una cola circular los n
umeros de paginas del conjunto de paginas candidatas
y un puntero que apunta a un n
umero de p
agina de la cola. Este algoritmo busca paginas con r = 0 y m = 0 que
no pertenezcan al conjunto de trabajo el proceso. Si no encuentra ninguna pagina que no pertenece al conjunto de
trabajo del proceso, entonces busca la primera pagina con r = 0 y m = 0 aunque pertenezca al conjunto de trabajo
del proceso.

52

7.4.7

Conclusiones sobre los algoritmos de reemplazamiento

El mejor algoritmo de reemplazamiento es que provoca pocos fallos de pagina con poca sobrecarga. Teniendo
en cuenta esto los algoritmos m
as usados son: el algoritmo de envejecimiento y el algoritmo WSClock.
La estrategia de reemplazo utilizada por el s.o. limita los posibles algoritmos de reemplazamiento que se pueden
utilizar. Algunos algoritmos (FIFO, LRU y envejecimiento) pueden utilizarse tanto si la estrategia de reemplazo
es local o global. Otros (WSClock) solo pueden usarse si la estrategia de reemplazo es local, ya que, se basa en el
conjunto de trabajo de un determinado proceso.

7.5

Asignaci
on de memoria principal

La asignaci
on de memoria principal es otra de las tareas fundamentales que debe realizar el s. o. para la
implementaci
on de la memoria virtual mediante demanda de paginas. Consiste en decidir cuantos marcos de
p
agina de la memoria principal reserva para un proceso que se tiene que ejecutar.
El n
umero mnimo queda definido por el repertorio de instrucciones del procesador, tiene que ser suficiente para
contener todas las p
aginas a las que pueda referenciar cualquier instruccion del repertorio. El n
umero m
aximo de
marcos que se pueden asignar a un proceso son todos aquellos que no estan bloqueados.
Hay dos posibles estrategias de asignaci
on de memoria principal:
Asignaci
on fija. Consiste en asignar a cada proceso un n
umero prefijado de marcos. Se principal ventaja es
que produce poca sobrecarga. Su principal inconveniente es que si el conjunto de trabajo crece por encima
del n
umero de marcos se produce sobrepaginacion, si se quedan sin usar se desperdician marcos. Con esta
estrategia la estrategia de reemplazo tiene que ser local. La pagina vctima se eligen entre las del mismo
proceso.
Asignaci
on variable. Consiste en ir variando a lo largo del tiempo de vida del proceso el n
umero de marcos
que tiene asignados. Su principal ventaja es su flexibilidad, disminuye la sobrepaginacion y la memoria
desperdiciada. Su principal inconveniente es que aumenta la sobrecarga.
Se puede afirmar que la variable es superior a la fija. Para implementar la asignacion variable el s.o. debe
utilizar un algoritmo de asignaci
on de marcos. Entre los mas conocido se encuentran:
Algoritmo de asignaci
on equitativa. Cada cierto tiempo comprueba el n
umero de procesos en ejecuci
on y
asigna a cada proceso el mismo n
umero de marcos. Es justo pero desperdicia memoria.
Algoritmo de asignaci
on proporcional. Asigna a cada proceso un n
umero de marcos en proporci
on a su
tama
no o prioridad, o una combinaci
on de ambos criterios.
Algoritmo de asignaci
on por la frecuencia de fallos de p
agina o algoritmo PFF(Page Fault Frequency). Se
basa en el principio de que cuanto mayor sea el n
umero de marcos asignados a un proceso menor ser
a su tasa
de fallos. No se pueden usar algoritmos de reemplazamiento que sufran la anomala de Belady. El algoritmo
mide la frecuencia de fallos de p
agina de un proceso, es decir, el n
umero de fallos de pagina por segundo.
Si sobrepasa un valor fijado aumenta la asignacion de marcos, si es menor a un limite inferior se reducen los
marcos asignados. El objetivo del algoritmo PFF es mantener la tasa de fallos de un proceso dentro de un
determinado rango de valores. Si varios procesos sobrepasan el limite superior y no hay marcos libres o que
se puedan quitar para asignarlos, se intercambia uno a la area de intercambio y sus marcos se reparten a los
dem
as.

7.6

Control de carga.

El s.o. debe controlar el n


umero de procesos que tienen paginas cargadas en memoria principal, es decir, debe
controlar el grado de multiprogramaci
on del sistema GM .
Si GM es peque
no la utilizaci
on del procesador U puede ser baja. Interesa un GM alto para aumentar U y
mejorar el rendimiento. El m
aximo valor de utilizacion del procesador Umax se obtiene para un determinado valor
optimo GM opt . Si se sobrepasa ese valor se producira sobrepaginacion y U disminuira. Si se produce este hecho se

ha de coger uno o vario procesos e intercambiarlos con el area de intercambio y repartir sus marcos entre los dem
as
hasta que se detenga la sobrepaginaci
on.

7.7

Copia en la memoria secundaria de la p


aginas modificadas

El s.o. debe decidir en que momento y de que forma copiara las paginas que han sido modificadas de la
memoria principal a la memoria secundaria. A la estrategia o poltica seguida por el s.o. se la conoce como poltica
de limpieza(cleaning policy). Las m
as utilizadas son:

53

Limpieza por demanda. La p


agina modificada se escribe en memoria cuando es seleccionada como p
agina
vctima para ser reemplazada. El fallo de pagina se atendera mas rapidamente si la pagina vctima ya hubiera
sido copiada en memoria secundaria con anterioridad al fallo de pagina.
Limpieza por adelantado. Las p
aginas modificadas se agrupan en lotes y se planifica cada cierto tiempo
su escritura en memoria secundaria antes de que sean elegidas por el algoritmo de reemplazamiento. La
ventaja es que los fallos de p
agina se atienden mas rapidamente y la desventaja es que una pagina puede
ser escrita varias veces sin necesidad, ya que puede ser modificada varias veces. Para paliar estas escrituras
innecesarias se seleccionan para ser copiadas solamente aquellas paginas modificadas que son candidatas a
ser reemplazadas.

7.8

Consideraciones adicionales sobre la paginaci


on por demanda

Otros aspecto adicionales a considerar a la hora de dise


nar la memoria virtual de un sistema con paginaci
on
por demanda son:
7.8.1

Tama
no de p
agina

El tama
no de una p
agina o equivalentemente de un marco de pagina es de 2n bytes donde n en un entero
positivo. El tama
no de una p
agina viene definido por la arquitectura del computador, pero hay algunos que
permiten elegirlo dentro de un rango. A la hora de seleccionar el tama
no de pagina hay que tener en cuenta los
siguientes factores:
Fragmentaci
on interna. A mayor tama
no de pagina mas fragmentacion interna y mas memoria principal se
desperdiciar
a.
Tama
no de una tabla de p
aginas. Cuanto menor sea el tama
no de pagina, en mas paginas se descompondr
a
el espacio virtual del proceso y las tablas de paginas seran de mayor tama
no y mas memoria consumir
an.
Esto hace que el tiempo de cambio de proceso sea mayor.
N
umero de fallos de p
agina. A menor tama
no, mayor n
umero de paginas y mayor posibilidad de fallos de
paginas.
Tiempo de uso de E/S. Se tarda menos tiempo en transferir una pagina grande que en transferir varias
de tama
no m
as peque
no. Si el tama
no de pagina es peque
no habran mas paginas y mas posibilidades de
operaciones de E/S.
Tener un tama
no de p
agina grande disminuye el tama
no de las tablas de paginas, el n
umero de fallos de p
agina y
el tiempo de uso de la E/S pero aumenta la fragmentacion interna. Hoy en da con el mayor tama
no y asequibilidad
de las memorias principales se opta por un tama
no de pagina grande.
7.8.2

Paginaci
on por adelantado

Cuando se carga un proceso para ser ejecutado (o se continua su ejecucion) al principio se producen muchos
fallos de p
agina. Para evitarlos se puede usar la estrategia conocida como paginaci
on por adelantado(prepaging)
que consiste en cargar un cierto n
umero de paginas NP A asociados a un proceso antes de iniciar o continuar su
ejecuci
on. Tambien se puede utilizar cuando hay un fallo de pagina para evitar futuros fallos de pagina.
La clave esta en copiar las p
aginas adecuadas para evitar fallos de pagina. La paginacion por adelantado se
considera efectiva si el tiempo de cargar las paginas no referenciadas es menor que el tiempo de tratar cada fallo
de p
agina de las referenciadas.
Las opciones m
as utilizadas para la seleccion del conjunto de paginas de un proceso que se van a cargar son:
Cargar el conjunto de trabajo del proceso, que debe ser mantenido por el s.o. Esto se hace al continuar con
la ejecuci
on de un proceso intercambiado o bloqueado.
Cargar un conjunto de p
aginas ubicadas de forma contigua en el
area de intercambio, ya que el tiempo de una
operaci
on de E/S para traer a memoria desde disco NP A paginas contiguas es mas peque
no que el tiempo en
empleado en realizar NP A operaciones de E/S para traerlas una a una cuando sean referenciadas.
7.8.3

Reserva de marcos libres

El tiempo de tratamiento de un fallo de p


agina se reduce si se dispone de un marco libre de memoria principal.
Por eso el s.o. puede mantener una reserva de marcos libres implementada en forma de una lista de marcos libres.
El marco calificado como libre puedes estar vaco o contener una pagina que es reemplazable.
Si la reserva de marcos libres cae por debajo de un cierto limite se utiliza el algoritmo de reemplazamiento para
seleccionar p
aginas reemplazables que se a
naden a la lista.
54

Mientras la pagina i siga cargada en el marco j puede ser utilizada. Cuando se produce un fallo de p
agina
comprueba la lista de marcos libres por si alguno de ello contuviera la pagina que ha producido el fallo. La lista
de marcos libres se utiliza como una memoria cache software de p
aginas.
A esta estrategia se le denomina en ocasiones como buffering de p
aginas ya que la lista de marcos libres tambien
hace las veces de un buffer de marcos libres.

55

Gesti
on de la Entrada/Salida

8.1

Introducci
on

De forma general los dispositivos de E/S se pueden clasificar en dos grandes categoras:
Dispositivos modo bloque, almacenan informacion en bloques de tama
no fijo, normalmente 512 bytes o una
potencia de dos m
ultiplo de la anterior, cada uno de los cuales tiene asignado un determinado n
umero
identificador o direcci
on.
Dispositivos modo car
acter, envan o reciben informacion como una secuencia o flujo lineal de bytes, en ellos
la informaci
on no se organiza con una estructura concreta por lo que no es direccionable, y en consecuencia
no permite la realizaci
on de operaciones de b
usqueda.
Hay dispositivos que no encajan en ninguna de las dos categoras.
Para que un dispositivo de E/S pueda ser utilizado por el computador se debe conectar a un modulo hardware
denominado controlador o adaptador de E/S. Cada controlador posee sus correspondientes registros para el almacenamiento temporal de
ordenes y datos. Tambien posee registros para almacenar el estado de los dispositivos que
controla.
Desde el punto de vista del software es el s.o. el encargado de gestionar el acceso de los procesos a los dispositivos
de E/S. Para ello el s.o. oculta los detalles particulares de cada dispositivo proporcionando un interfaz uniforme
de forma que los procesos puedan acceder a los dispositivos de E/S utilizando un conjunto sencillo de instrucciones
de lectura y escritura. Adem
as el s.o. gestiona el buffering, es decir, el almacenamiento temporal de los datos que
los procesos o el propio n
ucleo desean enviar o recibir de los dispositivos E/S. Dicho almacenamiento se realiza en
buffers, que son areas reservadas para este cometidos en la memoria principal pertenecientes al espacio del n
ucleo.
En el caso de dispositivos dedicados que solo pueden ser utilizados por un proceso simultaneamente el control de
acceso se realiza mediante la tecnica conocida como spooling, que requiere el uso de un proceso demonio.
El subsistema de E/S es el componente del s.o. que se encarga de la gestion de E/S. Para comunicarse
con el hardware utiliza un c
odigo especifico para cada dispositivo denominado driver de dispositivo. Los drivers
son suministrado por el fabricante para cada s.o. Cuando un dispositivo E/S termina una operacion avisa al
s.o. mediante una interrupci
on. Para atender dicha interrupcion el s.o. invoca al manejador de la interrupci
on
apropiado.

8.2

Peticiones E/S

Los proceso de usuario o los procesos demonio solicitan al s.o. la realizacion de una operacion de E/S invocando
a la llamada del sistema apropiada. Los procesos deben pasarle a la llamada al sistema que invoquen: la direcci
on
l
ogica del dispositivo de E/S sobre la que desea operar, la direccion logica del espacio de proceso donde se almacenar
an los datos que se lean en el dispositivo(o donde se encuentran los datos que se escribiran) y el n
umero de
bytes que se van a transferir.
Existen otra libreras de E/S cuyas funciones permiten realizar un cierto procesamiento de los datos antes o
despues de invocar a la llamada al sistema apropiada.
El s.o. aparte de gestionar las peticiones de E/S de los procesos, tambien requiere realizar operaciones de E/S
durante la realizaci
on de alguna de sus tareas administrativas.

8.3

Capas del n
ucleo de un sistema operativo encargadas de la E/S

De forma general, el software del n


ucleo de un sistema operativo necesario para la gestion de las operaciones
E/S se puede organizar en tres capas. Cada capa posee una interfaz bien definida para comunicarse con las capas
adyacentes. Adem
as cada capa realiza unos servicios determinados.
8.3.1

Subsistema de E/S

Es el componente del s.o. que se encarga de efectuar todas aquellas tareas necesarias para la realizaci
on de las
operaciones de E/S que son comunes a todos los dispositivos e independientes de los mismos. Es decir, gestiona la
parte independiente del dispositivo de todas las operaciones de E/S.
Algunas de las tareas de las que se encarga:
Asignaci
on y liberaci
on de dispositivos dedicados. Algunos dispositivos solo pueden ser utilizados de forma
simultanea por un u
nico proceso, se los conoce como dispositivos dedicados. Es responsabilidad del subsistema
de E/S determinar si una petici
on de E/S de un proceso sobre un dispositivo dedicado puede ser aceptada o
debe ser rechazada.
Bloqueo de procesos que solicitan una operaci
on de E/S. La decision de bloquear un proceso depender
a de si
el proceso invoc
o una llamada al sistema de tipo bloqueante o del tipo y estado del dispositivo involucrado.
56

Capas de software del n


ucleo encargadas de la E/S.
Planificaci
on de la E/S. Con el objetivo de disminuir el tiempo de espera promedio para la finalizacion de una
operaci
on de E/S y distribuir equitativamente el uso de los recursos entre todos los procesos, el subsistema
de E/S realiza una planificaci
on del uso de los dispositivos de E/S. Para ello puede organizar los procesos
en colas de los dispositivos siguiendo un determinado criterio. El s.o. tiene que tener en cuenta que hay
peticiones con m
as prioridad que otras. Ademas las peticiones de escritura debe ser atendidas antes que las
de lectura si no existe espacio disponible en memoria o este es muy peque
no.
Invocaci
on del driver de dispositivo apropiado. Desde el punto de vista del subsistema de E/S, un dispositivo
de E/S es una caja negra que soporta un conjunto estandar de operaciones. Los drivers de de los dispositivos
conocen las particularidades propias de cada dispositivo y permiten manejarlos. El subsistema de E/S debe
invocar el driver adecuado, para ello mantiene varias tablas que le permiten realizar la correspondencia. Una
divisi
on bastante usual es disponer de una tabla para dispositivos modo bloque y otra tabla de dispositivos
modo car
acter.
Almacenamiento temporal de datos de E/S o buffering. El subsistema de E/S asigna buffers para el almacenamiento temporal de datos que se leen o escriben sobre los dispositivos. Un buffer es un area en memoria
principal que almacena temporalmente datos mientras estos se transfieren entre un proceso y un dispositivo,
o viceversa.
Proporcionar un tama
no de bloque uniforme a los niveles superiores de software. Independientemente del
tama
no fsico de bloque que use el dispositivo.
Gesti
on de errores producidos en una operaci
on de E/S. Se encarga de que acciones tomar cuando se produce
un error. Lo errores se pueden clasificar:
Errores de programaci
on, se producen cuando un proceso solicita una operacion de E/S que es imposible
realizar. Cuando se produce un error de este tipo el subsistema de E/S notifica al proceso que solicit
o
la operaci
on de E/S el error cometido devolviendole un codigo de error como resultado de la llamada al
sistema.
Errores de dispositivo, se producen cuando un dispositivo esta intentando realizar la operacion de E/S
solicitada. El driver intenta solucionarlo, algunos errores son transitorios y desaparecen si se repite la
operaci
on. Si no desaparece el subsistema de E/S decide que acciones tomar. Tpicamente notifica el
error al proceso, aborta el proceso o ignora el error.
El subsistema de E/S debe proporcionar una interfaz para los driver de dispositivo. Esta interfaz queda definida
por dos tipos de rutinas. El primer tipo esta formado por aquellas rutinas que puede invocar el subsistema de E/S
para solicitarle alg
un servicio a un driver. El segundo tipo esta formado por las rutinas del n
ucleo del s.o. que
un driver puede invocar. En los s.o. modernos, esta interfaz es uniforme, es decir, las funciones que debe aportar
el driver y las funciones del n
ucleo que puede invocar son las mismas para todos los drivers. Esto permite cargar
din
amicamente el driver de un nuevo dispositivo sin necesidad de tener que recompilar y enlazar el codigo del s.o.
8.3.2

Drivers de dispositivo E/S

Un driver de dispositivo contiene el c


odigo que permite a un s.o. controlar un determinado tipo de dispositivo
de E/S. Los drivers son facilitados por los fabricantes de los dispositivos para cada s.o.
57

Un driver de dispositivo interact


ua con el subsistema E/S y con el controlador de E/S que controla el dispositivo.
Un driver suministra al subsistema de E/S el conjunto de funciones que se pueden realizar sobre el dispositivo.
Adem
as un driver puede invocar a ciertas rutinas o procedimientos del n
ucleo. Los procedimientos a los que tiene
acceso un driver quedan definidos por la interfaz de drivers del subsistema de E/S.
Cuando el subsistema de E/S invoca una funcion del driver, este debe realizar un conjunto de acciones. De
forma general un driver suele realizar las siguientes acciones:
1. Comprobar que los par
ametros de la funcion invocada por el subsistema de E/S son correctos y que la
operaci
on de E/S solicitada se puede realizar. En caso contrario devuelve un error.
2. Traducir los par
ametros de dicha funci
on en parametros especficos del dispositivo.
3. Comprobar si el dispositivo est
a ocupado con alguna peticion anterior. Si es as coloca la peticion en una
cola. Si el dispositivo esta libre comprueba si esta preparado, si no lo esta activa e inicializa el dispositivo.
4. Generar un conjunto de
ordenes para el controlador de dispositivo dependiendo de la peticion solicitada. Las
ordenes son cargadas en los registros del controlador. El driver puede comprobar que el controlador acepta

una orden y que se encuentra listo para aceptar la siguiente.


5. Una vez transmitidas todas las
ordenes al controlador, el driver debe esperar a que el controlador las ejecute.
Si ha de pasar mucho tiempo el driver se bloquea usando alg
un mecanismo de sincronizacion, cuando el
controlador finaliza genera una excepci
on que despierta al driver.
6. Comprobar si no se han producido errores en la operacion de E/S. Si se ha producido un error y el driver
puede resolverlo realiza la acci
on correspondiente. Si no puede informa del error al subsistema de E/S para
que tome las medidas oportunas.
7. Examinar la cola de peticiones de E/S pendientes, si existe alguna procede a atenderla. Si la cola esta vaca
se bloquea en espera de nuevas peticiones.
Una caracterstica importante de los drivers es que su codigo es reentrante, es decir, no se modifica, por lo que
es posible ejecutar varias instancias de un mismo driver simultaneamente.
8.3.3

Manejadores de las interrupciones

En un computador que implemente un sistema de interrupciones vectorizadas, cada interrupcion suministra un


n
umero denominado n
umero de interrupci
on que se utiliza como ndice en una tabla, denominada tabla de vectores
de interrupci
on. Cada entrada de esta tabla se denomina vector de interrupci
on, que entre otras informaciones
contiene la direcci
on de comienzo del manejador(handler) de la interrupci
on.
Los manejadores de interrupciones forman parte del n
ucleo y son extremadamente dependientes del hardware.
Tienen alta prioridad de ejecuci
on y su c
odigo suele ser peque
no y rapido de ejecutar.

8.4
8.4.1

Buffering
Definici
on

Si se usa la transferencia directa el s.o. tiene que mantener en memoria los marcos afectados por esta, adem
as
no puede intercambiar el proceso hasta que la operacion de E/S termine. Estas operaciones son lentas y pueden
estar mucho tiempo bloqueando recursos.
Para evitar esto los s.o. implementan la tecnica conocida como buffering, que consiste en almacenar temporalmente en buffers los datos que se transfieren entre un dispositivo y un proceso, o viceversa. Un buffer es un
area
de memoria principal a la que u
nicamente tiene acceso el s.o., es decir, pertenece al espacio del n
ucleo.
El subsistema de E/S es el encargado de asignar buffers para las operaciones de E/S. Las rutinas de servicio de
las interrupciones o los drivers se encarga de transferir los datos entre los buffers y los dispositivos, o viceversa.
Otra ventaja del buffering es que permite realizar durante una transferencia de datos una adaptacion de velocidades entre el agente productor y el agente consumidor. Asimismo permite una adaptacion entre dispositivos que
tienen diferentes tama
nos de unidad de transferencia de datos.
8.4.2

Estrategias

Las estrategias m
as usuales para la realizacion del buffering son:
Buffering con buffer u
nico. El buffer sirve de puente entre los procesos y lo dispositivos, todo pasa por el
buffer primero. Como solo hay uno, en una operacion de E/S, no se puede leer del buffer hasta que este se
llena y no se puede volver a llenar hasta que se ha vaciado.

58

Buffering con dos buffers o buffering doble. Se asignan dos buffers. De esta forma cuando uno se llena se
pasa a llenar el siguiente mientras el primero se va vaciando, as se produce una alternancia. Esto permite
desacoplar el productor del consumidor, a diferencia de la estrategia del buffer u
nico, donde el productor solo
poda actuar cuando finalizaba el consumidor o viceversa. Permite reducir el tiempo de espera del productor
o consumidor.
Buffering circular. Consiste en utilizar mas de dos buffers para una operacion de E/S. Funciona igual que el
anterior pero con m
as buffers
8.4.3

Cach
e de buffers de bloques de disco

Con el fin de reducir al mnimo el n


umero de operaciones de E/S a disco, muchos s.o. implementan va software
una cache de buffers de bloques de disco. Se trata de un area de memoria principal del espacio del n
ucleo reservada
para almacenar buffers. Dichos buffers contienen los bloques de disco que han sido recientemente transferidos.
Funciona de forma similar al de una memoria cache de hardware.
La implementaci
on de la cache de buffers depende de cada s.o. Una posibilidad es usar un conjunto de colas
hash basadas en el n
umero de dispositivo y en el n
umero de bloque.

8.5

Spooling

En el caso de los dispositivos de E/S dedicados una tecnica de control bastante utilizada es el spooling. Esta
tecnica se implementa con un proceso demonio y con un directorio especial, denominado directorio de spooling o
spool. El proceso demonios es el u
nico autorizado para escribir en el dispositivo. Si un proceso usuario quiere
escribir en el dispositivo, debe enviar los archivos que desea escribir al directorio de spooling. El proceso demonio
ir
a mandando al dispositivo de salido uno a uno los archivos que encuentre en este directorio.
Usando spooling se previene que un proceso obtenga el uso de un dispositivo de salida y no lo ceda durante un
tiempo excesivo, impidiendo que lo puedan usar otros procesos.

8.6
8.6.1

Detalles de la gesti
on de la E/S de algunos dispositivos
Relojes

Los circuitos digitales necesitan una se


na de reloj. Un forma com
un es mediante un chip denominado reloj
programable, que contiene, entro otros, un contador, un registro y un cristal de cuarzo.
Un reloj programable dispone de varios modos de operacion, dos de los mas utilizados son:
Modo de disparo u
nico. Cuando el contador alcanza el valor cero y genera la interrupcion, se detiene hasta
que el contador es inicializado por el software.
Modo de onda cuadrada. El reloj se rearma automaticamente. Se consigue generar interrupciones peri
odicas.
Al tiempo transcurrido entre dos interrupciones del reloj se le denomina tic de reloj o simplemente tic. El
valor del tic se puede ajustar en funci
on del valor que se cargue por software en el registro del reloj. Se
denomina frecuencia de la interrupci
on de reloj o simplemente frecuencia de reloj al n
umero de tics por
segundo.
Un reloj programable tambien puede trabajar incrementando el valor del contador, esto resulta u
til para mantener el tiempo real, es decir, la fecha y la hora actuales.
Los relojes programables son utilizados por el s.o. como ayuda para la realizacion de diversas tareas:
Planificaci
on de procesos. Para medir el cuanto de cpu y para cambiar las prioridades de los procesos
peri
odicamente.
Mantenimiento del tiempo real. Hay que tomar un tiempo de referencia, en UNIX es 00:00:00 UCT 1-1-1970
y en Windows es 00:00:00 1-1-1980. Se mantiene el tiempo en tics desde ese punto de referencia inicial.
Disparo de alarmas. Los procesos pueden solicitar al s.o. mediante alguna llamada al sistema que le avise
cuando haya transcurrido un determinado intervalo. Un forma de implementar eso es con un reloj programable
que se va decrementando. El s.o. suele gestionar las alarmas manteniendo una lista de alarmas. Un forma
de implementarlo es ordenar la lista en funcion del tiempo que quede a cada alarma para ser disparada. A
dicho tiempo se le conoce como tiempo de de disparo. Los tiempos en la lisa se guardan de forma diferencial.
Invocaci
on de tareas peri
odicas del sistema. El s.o. mantiene una lista de tareas periodicas que se implementa
y se utiliza como la lista de alarmas.

59

El s.o. utiliza el driver de reloj para interactuar con el reloj. Cuando el reloj genera una interrupci
on, el
manipulador de interrupci
on desbloquea el driver y este debe realizar diferentes tareas: decrementar el cuanto de
proceso, incrementar el reloj de tiempo real y decrementar el tiempo de disparo en la lista de alarmas (y en la lista
de tareas peri
odicas), entre otros.
Dichas tareas deben realizarse muy r
apido para que no se resienta el rendimiento del sistema, por eso las
interrupciones de reloj tienen una prioridad muy elevada.
Seg
un el s.o. algunas de las tareas son delegadas en el manipulador de la interrupcion de reloj.
8.6.2

Discos duros

Estructura fsica
Los disco duros son el principal soporte de la memoria secundaria de un computador debido a la posibilidad
de realizar accesos a posiciones aleatorias en un tiempo relativamente peque
no, y a su alta capacidad de almacenamiento.
Esta formado por varios platos circulares que gira a velocidad constante. Cada superficie(dos por plato) se
divide en miles de anillos concentricos denominados pistas. Dos pistas adyacentes se encuentran separadas por un
peque
no espacio.
A su vez las pistas se subdividen en cientos de sectores, donde se almacena la informacion. Entre dos sectores
adyacentes existe un peque
no hueco de separacion. El sector es la unidad basica de transferencia de informaci
on
del disco.
Sobre cada superficie existe un brazo en cuyo extremo se monta una cabeza de lectura/escritura que permite
leer o escribir lo sectores de las pistas.
Al conjunto formado por las pistas de todas las superficies de todos los platos del disco situados a la misma
distancia del eje de rotaci
on del disco se le denomina cilindro.
Antiguamente el n
umero de sectores era constante en todas las pistas, en la actualidad, aprovechando que la
longitud lineal de un pista es mayor conforme a su radio, se organizan los cilindros en zonas. Dentro de una zona
el n
umero de sectores por pista se mantiene constante, las zonas mas internas poseen un menor n
umero de sectores
por pista que las zonas m
as externas.
Formateo a bajo nivel del disco
Un disco para ser utilizado en un computador debe ser sometido primero aun formateo de bajo nivel, tambien
denominado formateo fsico.
El formateo a bajo nivel es realizado por el fabricante del disco mediante software y el uso del controlador
del disco. Consiste en dividir cada superficie de los platos en pistas y cada pista en sectores. Un sector es una
estructura de datos que consta principalmente de tres elementos:
Cabecera o pre
ambulo. Contiene, entro otras, un cierto patron de bits que permite reconocer al controlador
del disco el comienzo del sector, el n
umero de sector y el n
umero de cilindro.

Area
de datos. En ella se almacena la informacion accesible para el s.o. y los usuarios. Su tama
no tpico
suele ser 512 bytes.
C
odigo de correcci
on de errores(Error Correcting Code, ECC). Contiene informacion que permite al controlador del disco detectar y corregir posibles errores de lectura. El ECC suele ocupar 16 bytes.
La capacidad de un disco formateado a bajo nivel es inferior a la capacidad del disco sin formatear(un 20%
menos) por tres motivos. En primer lugar por al separacion fsica entre pisas y sectores contiguos. En segundo
lugar pueden aparecer sectores defectuosos, es necesario reservar espacio para sectores de reserva. En tercer lugar
el espacio que ocupa la cabecera y el ECC.
Dentro de una pista los sectores se enumeran empezando por 0 y de forma intercalado en funcion de un determinado factor de intercalado o entrelazado. Por otra parte, en una determinada zona de cilindros, la numeraci
on de
los sectores de una pista est
a desplazada con respecto a la numeracion de la pista adyacente, a este desplazamiento
se le llama sesgo de cilindro(cylinder skew). Se realiza para mejorar el rendimiento del disco porque la cabeza no
tiene que dar toda una vuelta para colocarse en el principio de la siguiente pista.
La direcci
on fsica de un sector queda totalmente definida especificando la tripleta formada por el n
umero de
cilindro, el n
umero de cabeza y el n
umero de sector. A eso se le llama sistema cilindro-cabeza-sector(CylinderHead-Sector, CHS).
Los HDD modernos soportan el metodo de acceso conocido como direccionamiento de bloques l
ogicos(Logical
Block Addressing, LBA). Con esta tecnica un disco duro se considera un array de bloques logicos de datos. Cada
bloque tiene asignado un n
umero de bloque identificativo o direccion logica. El driver de disco solo debe especificar
al controlador del disco el n
umero de bloque logico que hay que leer o escribir.
Particionamiento y formateo a alto nivel de disco

60

El particionamiento del disco consiste en establecer por software una o mas particiones en el disco. Una partici
on
es un conjunto de cilindros contiguos. Desde el punto de vista logico cada particion se considera un disco distinto.
La informaci
on sobre el cilindro de comienzo, el tama
no de la particion y la particion activa se mantiene en
el propio disco en una estructura denominada tabla de particiones que se localiza al final del registro de arranque
maestro(Master Boot Record, MBR dentro del sector 0 del disco.
Se debe realizar un formateo de alto nivel de cada particion, tambien denominado formateo l
ogico, que consiste
en establecer el bloque o sector de arranque y las estructuras de datos de un sistema de archivos.
Se puede acceder a los bloques sin un sistema de archivos, se conoce esta forma como E/S en bruto, p.e. el
area
de intercambio de UNIX/Linux.
Tambien se coloca en la tabla de particiones informacion sobre el tipo de sistema de archivos colocado en la
partici
on.
Planificaci
on del disco
El tiempo de lectura o escritura de un bloque del hdd depende, entro otros, del tiempo de posicionamiento de
la cabeza de lectura/escritura sobre el comienzo del sector apropiado y del tiempo de transferencia del bloque desde
el disco al controlador, o viceversa.
El tiempo de posicionamiento, tambien conocido como tiempo de acceso, es suma de dos componentes: el tiempo
de b
usqueda, que es el tiempo requerido para mover las cabezas hasta el cilindro donde se encuentra el lector que se
desea leer, y la latencia rotacional o retardo rotacional, que es el tiempo necesario para que el principio del sector
se posicione por el giro del disco debajo de la cabeza de lectura/escritura.
Si las peticiones al disco se planifican cuidadosamente se mejora su rendimiento, algunos de los algoritmos de
planificaci
on m
as usados son:
Planificaci
on de primero el del tiempo de b
usqueda m
as corto(Shortest Search Time First,SSTF). De entre
la cola de peticiones se selecciona para atender aquella peticion que requiere un tiempo de b
usqueda m
as
peque
no.
Planificaci
on LOOK. Las cabezas del disco se desplazan en un cierto sentido y atienden todas las peticiones
que encuentran en su camino.
En los disco modernos la latencia rotacional puede ser tan significativa como el tiempo de b
usqueda. Para
minimizarla el algoritmo de planificaci
on tendra que considera tambien el n
umero de sector, ademas del n
umero
de cilindro.
Si el controlador del disco solo puede aceptar una peticion simultaneamente, el algoritmo de planificaci
on se
implementa por software en el driver (es el que conoce la organizacion fsica del disco). Si se puede aceptar un lote
de peticiones se puede implementar dentro del propio controlador del disco. En los discos que soportan LBA se
implementa forzosamente en el controlador del disco.
Tratamiento de errores del disco
En un disco a veces se da
na un sector. Los sectores defectuoso se pueden producir tanto durante el proceso de
fabricaci
on del disco como durante su uso en un computador. El controlador del disco mantiene una lista con los
sectores defectuosos del disco. Dicha lista se inicializa durante el formateo a bajo nivel.
Para identificar si un sector est
a da
nado, el controlador utiliza el ECC del sector. Cuando el controlador realiza
una operaci
on de escritura sobre un sector, el ECC del sector se calcula usando una funci
on de comprobaci
on de
redundancia cclica(CRC) que usa como par
ametro de entrada todos los bytes almacenados en el area de datos del
sector. Cuando se lee, el controlador calcula de nuevo el ECC y lo compara con el anterior almacenado en el sector.
Si difieren el sector esta da
nado.
Si el error es peque
no el controlador lo puede corregir usando el ECC, si no puede lo marca como defectuoso y
lo reemplaza usando una de estas formas:
Sustituci
on directa. Sup
ongase que el sector j de una pista esta da
nado, entonces este metodo consiste en
usar un sector de reserva como el sector j. Es rapida de implementar pero puede alterar la organizaci
on del
entrelazado del disco, empeorando su rendimiento.
Desplazamiento de sectores. Consiste en desplazar una posicion cada sector situado entre el sector reserva y
el sector defectuoso. No altera la organizacion de la pista por lo que el rendimiento no se ve afectado, pero
es lenta de aplicar.
Si el controlador del disco no tiene ninguna tecnica de reemplazamiento de sectores, entonces es responsabilidad
del s.o. que debe ir enviando al controlador mediante el driver los comandos oportunos.
Los HDD son dispositivos delicados y puede ser que haya que sustituirlos y recuperar una copia de seguridad,
pero la recuperaci
on puede ser muy lenta. Para evitar esto y aumentar la confiabilidad se pasaron a usar m
ultiples
discos en conjunto, para si falla uno otro toma su lugar rapidamente. La organizacion de m
ultiples discos m
as conocida por ser est
andar de la industria es la denominada como array redundante de discos independientes)Redundant
Array of Independent Disks, RAID).
61

8.6.3

Dispositivos de E/S adaptados al usuario

Desde el punto de vista del usuario, los dispositivos mas utilizados son la pantalla, el teclado y el raton.
Gesti
on de la salida por pantalla
La pantalla de un computador es un dispositivo de salida de graficos de trama(raster graphics) tambien denominados gr
aficos de mapa de bits(bitmap graphics). La salida que se muestra en pantalla es una red de puntos
denominados pxels. Cada pxel tiene asociado un n
umero binario que indica el color con que se representa en
pantalla.
La pantalla se conecta con el ordenador mediante un adaptador o controlador gr
afico. Entre otros componentes
posee una memoria de vdeo(Video RAM, VRAM). que es una memoria RAM en la que almacena los pxeles de la
imagen que se mostrar
a en pantalla. El tama
no que ocupara la imagen depende del n
umero de bits por pxel y su
n
umero, es decir, de la resoluci
on de la pantalla.
La imagen que se carga en la VRAM es generada por paquetes de rutinas de creacion y manipulacion de gr
aficos
independientes del hardware, las cuales son invocadas por las aplicaciones o por el gestor de ventanas de un GUI.
Estos paquetes pueden formar parte del n
ucleo del s.o. (Windows) o ser externos al mismo(UNIX y Linux).
Gesti
on de la entrada de teclado
Un teclado es un dispositivo modo car
acter de entrada. Cuando un usuario pulsa una tecla y tambien cuando la

libera el hardware del teclado enva el n


umero de tecla a un registro del controlador de E/S que lo supervisa. Este
genera una interrupci
on que al ser atendida por el manejador correspondiente provoca que se despierte el driver
del teclado.
El driver extrae del registro de E/S e n
umero de tecla y lo traduce en un caracter usando unos mapas de teclas,
tambien denominados p
aginas de c
odigos, que mantiene el s.o. en funcion del idioma. El n
umero de tecla suele
tener un tama
no de 8 bits, el bit m
as significativo se utiliza para indicar si la tecla ha sido presionada o no.
El driver tambien tiene que llevar la cuenta de las teclas que han sido pulsadas y todava siguen presionadas(combinaciones de teclas).
Una vez establecido el car
acter o la combinacion de teclas pulsadas el driver almacena dicha informaci
on en un
buffer para que sea leda y procesada por el proceso adecuado.
Gesti
on de la entrada del rat
on
Un rat
on es un dispositivo modo car
acter de entrada. Cada vez que el usuario desplaza el raton o pulsa un bot
on
del mismo se transmite un mensaje al registro del controlador de E/S que lo supervisa. El mensaje suele tener
un tama
no de unos 3 bytes y contiene la siguiente informacion: desplazamiento horizontal(eje x), desplazamiento
vertical(eje y) y estado de los diferentes botones. La posicion es relativa a la posicion del u
ltimo mensaje enviado.
Cada vez que recibe un mensaje, el controlador de E/S que supervisa el raton genera una interrupci
on. El
manejador de la interrupci
on despierta el driver del raton que lee el mensaje y lo coloca en la cola de mensajes
para que sea ledo y procesado por el proceso adecuado.

62

Gesti
on de archivos

9.1

Introducci
on

Desde el punto de vista de los usuarios de los computadores la unidad de trabajo es la abstraccion de almacenamiento en memoria secundaria conocida como archivo o fichero.
Los archivos se almacenan en los diferentes dispositivos de almacenamiento secundario de acuerdo con un
determinado esquema de almacenamiento denominado sistema de archivos.
El s.o. es el responsable de la gesti
on de los archivos de los diferentes sistemas de archivos existentes en
memoria secundaria. Adem
as debe fijar los tipos, los atributos, la estructura interna y los mecanismos de acceso
de los archivos que soporta. Tambien debe definir la estructura de los directorios as como los mecanismos de
b
usqueda de archivos permitidos dentro de la estructura de directorios. Tambien debe proporcionar al usuario las
llamadas al sistema oportunas que le permiten operar con archivos y directorios. Por otra parte, el s.o. se encarga
de asignar espacio a los archivos y de administrar el espacio libre de la memoria secundaria.
Al componente del s.o. que realiza todo esto se le denomina subsistema de gesti
on de archivos.

9.2
9.2.1

Archivos
Tipos de archivos

Un archivo inform
atico se puede definir como un conjunto de informacion relacionada que se almacena en
memoria secundaria y que se identifica mediante un nombre, que es una cadena de caracteres. En general la
informaci
on contenida en un archivo pertenece a algunas de las siguientes categoras: programas o datos.
Cada s.o. establece los tipos de archivos que soporta. Para cada tipo de archivo soportado el s.o. debe ser
capaz de reconocerlo y operar sobre el archivo de la forma adecuada.
Dos los tipos de archivos com
unmente soportados por los s.o. son los directorios y los archivos regulares u
ordinarios. Un directorio es un archivo que almacena una lista de los archivos y subdirectorios que contiene. Un
archivo regular puede ser un archivo ASCII o un archivo binario.
Un archivo binario es aquel que contiene informacion de cualquier tipo codificada en binario con una estructura
determinada que u
nicamente puede ser interpretada por los programas que los utilizan. Algunos archivos binarios
contienen una cabecera con metadatos que ayudan a interpretar correctamente la informacion que contiene.
Un archivo ASCII es aquel que est
a compuesto de lneas de caracteres ASCII codificadas en binario que no
requieren un programa que los interprete.
El nombre de un archivo es una cadena de caracteres. Cada sistema de archivos especifica la longitud m
axima
y el tipo de caracteres que pueda tener la cadena. El nombre del archivo puede dar informacion sobre el tipo de
archivo. A la parte del nombre que proporciona esta informacion se la conoce como extensi
on del nombre y se
separa del nombre propiamente dicho por un caracter punto.
Algunos S.O. (UNIX) ignoran las extensiones de los nombres de los archivos. Otros reconocen e interpretan las
extensiones de los archivos(Windows).
9.2.2

Atributos de una archivo

El s.o. tiene que mantener informaciones relativas a un archivos, a su componentes se les denomina atributos
de un archivo. Algunos de los m
as usados son:
Tipo del archivo. Es un campo compuesto de uno o varios bits que informa al s.o. sobre el tipo del archivo.
Tama
no. Incluye el tama
no actual en bytes, palabras o bloques. Ademas puede incluir informacion sobre el
tama
no m
aximo permitido.
Localizaci
on. Contiene la ubicaci
on del archivo en memoria secundaria.
Creador y propietario.
Permisos de acceso.
Informaci
on asociado al tiempo. P.e. fecha y hora de creacion, u
ltimo acceso y modificacion de un archivo.
9.2.3

Estructura interna de un archivo

Se puede estructura de tres posibles formas:


Secuencia de bytes. El archivo se estructura como un conjunto de bytes contiguos. Las operaciones de lectura
y escritura se hacen a nivel de byte. Es muy flexible. El s.o. no tiene que interpretar la informacion contenida
en cada byte del archivo. Dicha responsabilidad recae sobre los programas de aplicacion.

63

Secuencias de registros. El archivo se estructura como un conjunto de registros contiguos de igual longitud.
Cada registro posee a su vez cierta estructura interna. Cuando se realiza una operacion de lectura o de
escritura se realiza a nivel de registro.
Registros indexados. El archivo se estructura como un conjunto de registros de longitud variable. Cada
registro contiene un campo clave o ndice que permite identificarlo. El archivo se organiza en funci
on de la
clave de los registros que lo componen. Para realizar una operacion de lectura o escritura se debe especificar
la clave del registro. Si se a
nade un nuevo registro, se debe especificar su clave. Es el s.o. el que se encarga
de ubicarlo dentro del conjunto de registros.
Un s.o. considera que un archivo est
a formado por un conjunto de registros o bloque l
ogicos de igual o distinto
tama
no. En el caso de la estructura de secuencia de bytes todos los bloques logicos tienen el mismo tama
no: un
byte.
Las operaciones de E/S con los dispositivos de memoria secundaria donde se almacenan los archivos, se realizan
en unidades de bloques fsicos de igual tama
no. Un bloque fsico contiene varios sectores de disco y tiene asignada
una determinada direcci
on fsica BF , tambien denominada n
umero de bloque, que permite identificarlo de forma
unvoca.
Generalmente el tama
no de un bloque fsico suele ser mayor que el tama
no de un registro logico, por lo que
dentro de un bloque fsico se empaquetan varios registros logicos. De esta forma un archivo ocupara N bloques
fsicos, de los cuales es muy probable que el u
ltimo no este lleno y provoque fragmentacion interna.
9.2.4

M
etodos de acceso a un archivo

Existen diferentes metodos para acceder a la informacion contenida en un archivo, siendo los mas usuales:
Acceso secuencial. Los bytes o registros que componen el archivo se leen o escriben en orden comenzando
desde el principio. El s.o. debe mantener un puntero de lectura/escritura que marca la posicion donde la
pr
oxima operaci
on de lectura o escritura debe comenzar. Se puede volver al principio del archivo tantas veces
como se considere necesario. Es el metodo de acceso mas sencillo.
Acceso aleatorio. Tambien denominado acceso directo. Los bytes o registros de un archivo pueden ser ledos o
escritos en cualquier orden. Las operaciones de lectura o escritura se pueden implementar de dos formas. Una
posibilidad es especificar el n
umero del byte o registro al que se desea acceder como parametro de la operaci
on
de lectura o escritura. Otra opci
on es usar primero una operacion adicional de posicionamiento o b
usqueda
para ubicarse al comienzo del byte o registro que se desea leer. Las operaciones se realizan secuencialmente
a partir de esa posici
on.
La gran mayora de s.o. modernos, cuando crean un archivo, consideran que se utilizara acceso aleatorio. Debe
tenerse en cuenta que es muy f
acil simular el acceso secuencial en un archivo de acceso aleatorio.
9.2.5

Operaciones sobre archivos

Un s.o. proporciona diferentes llamadas al sistema para poder operar sobre los archivos. De forma general las
operaciones b
asicas soportadas son:
Crear archivo. Esa operaci
on crea un archivo sin datos en una determinada posicion de la estructura de
directorios. Tambien crea las entradas necesarias en los directorios correspondientes.
Abrir archivo. Esta operaci
on hace que el s.o. busque en un directorio la entrada asociada al archivo y cargue
en memoria principal dentro de sus estructuras de datos internas toda la informacion que necesites sobre
el archivo para poder acceder a ella con rapidez cuando se realicen otras operaciones sobre el archivo. La
llamada del sistema asociada a esta operacion requiere el nombre de ruta del archivo y devuelve un n
umero
entero positivo, si se realiza con exito, denominado identificador de archivo abierto o simplemente descriptor
del archivo, que identifica al archivo entre los archivos abiertos.
Posicionamiento o b
usqueda(seek) en un archivo. Coloca el puntero de lectura/escritura en el byte o registro
solicitado.
Leer archivo. Lee los datos desde el puntero hasta el tama
no dado en la llamada al sistema y los guarda en
la direcci
on de memoria de usuario especificada.
Escribir archivo. Escribe los datos desde el puntero hasta el tama
no dado en la llamada del sistema desde la
direcci
on de memoria de usuario especificada.
Renombrar archivo.
Cerrar archivo. Cuando un archivo se cierra (si no existe otra referencia a el abierta) significa que se borra
de las estructuras de datos en memoria principal del s.o.
Borrar archivo.
64

9.3
9.3.1

Directorios
Estructura de los directorios

Los usuarios de un sistema inform


atico organizan sus archivos en directorios. Un directorio almacena una lista
de archivos y subdirectorios. En cada entrada de dicha lista se almacena el nombre del archivo o subdirectorio.
Tambien se almacenan otras informaciones relativas al archivo, las cuales dependen del sistema de archivos.
Los usuarios deben adaptar la organizaci
on de sus archivos a la estructura de directorios soportada por el s.o.
y los sistemas de archivos. Vamos a describir las estructuras de directorios mas comunes.
Estructura de directorios de un u
nico nivel
La estructura de directorio m
as sencilla es aquella que consta de
un u
nico directorio que almacena una lista con todos los archivos existentes, tanto los de usuario como los del sistema. Su principal limitacion
es que todos los archivos tienen que tener un nombre diferente y eso se
puede hacer m
as difcil conforma va aumentando su n
umero.
Estructura de directorios de dos niveles
La estructura de directorios de dos niveles consiste de un directorio
raz, tambien denominado directorio de archivos maestro, que almacena una lista de directorios, uno por usuario. Todos los archivos de un
usuario se encuentran referenciados por la lista almacenada en su dinico
rectorio. Dos archivos pueden tener el mismo nombre si se encuentran Estructura de directorios de un u
nivel
en directorios diferentes.
En su implementaci
on m
as sencilla un usuario no puede
acceder a los archivos de otro usuario. Esto perjudica el trabajo en equipo, adem
as los archivos del sistema deben copiarse en todos los directorios con la consiguiente desperdicio de
espacio.
Esto se puede superar si el s.o. es capaz de manejar nombres de rutas. Cada archivo dentro de la estructura de dos
niveles de directorios posee una ruta de acceso. El nombre
de ruta(path name) queda definido por el nombre de usuario
que da nombre al directorio del usuario y el nombre del
archivo. Esta tecnica tambien permite resolver la duplicidad
Estructura de directorios de dos niveles
de archivos del sistema. El s.o. crea un usuario ficticio al que
asigna un directorio donde se referencian a todos estos archivos.
Estructura de
arbol de directorios
Se caracteriza porque la lista almacenada en cada directorio, independientemente de su ubicaci
on, puede contener entradas de otros directorios y archivos. De
esta forma se pueden crear m
ultiples niveles de directorios.
El nombre de una ruta, aparte del nombre del archivo debe contener los nombres
de los directorios en orden a los que hay
que acceder para localizar el archivo. A
cada uno de estos nombres de directorios
y del archivo de la ruta se les denomina
componentes del nombre de la ruta. Para
que el s.o. pueda identificar cada componente, hay que escribirlos separados por
Estructura de arbol de directorios
alg
un car
acter especial.
Usualmente un s.o. soporta dos posibles tipos de nombres de rutas: absolutos y relativos. Un nombre de ruta
absoluto contiene los nombres de todos los directorios que componen la ruta desde el directorio raz. Por su parte
un nombre de ruta relativo especifica la ubicacion del archivo desde el directorio de trabajo del usuario, tambien
denominado como directorio actual.
Los s.o. crean dos entradas especiales en cada directorio. Una de ellas es la entrada punto . que hace
referencia al directorio actual. La otra es la entrada punto-punto .. que hace referencia al directorio padre, es
decir, aquel directorio que contiene el directorio actual.

65

Estructura de directorios de gr
afica acclica
Para implementar la compartici
on de
archivos y directorios se puede usar una estructura de directorios de gr
afica acclica, que permite que el mismo archivo o directorio puede
ser referenciado por dos o m
as directorios diferentes siempre que no se produzcan ciclos. La
compartici
on de archivos se realiza com
unmente
por medio de enlaces. Un enlace(link) permite
conectar un directorio, archivo o subdirectorio
ya existente en otro directorio. Un archivo o
subdirectorio referenciado por un enlace se dice
que est
a compartido.
Una posible forma de implementar un enlace es crear en el directorio origen una nueva
entrada que sea una copia parcial o completa
Estructura de directorios de grafica acclica
de la entrada del directorio destino asociada al
archivo o subdirectorio compartido. Los enlaces con esta implementacion son denominados en algunos s.o. como
enlaces duros(hard links). El acceso al elemento compartido requiere el mismo tiempo de E/S independientemente
de la entrada de directorio desde el que se referencie.
Si el s.o. almacena los atributos del archivo en su entrada del directorio hay que mantener todas la entradas al
mismo archivo sincronizadas y consistentes, esto aumenta las operaciones de E/S y repercute en el rendimiento del
sistema. Una soluci
on es almacenar los atributos de un archivo y su ubicacion en una peque
na estructura de datos
denominada nodo ndice o nodo-i. Ahora en lo directorios se almacena la referencia que apunta a ese nodo-i. Otro
problema es el borrado de archivos, tambien debe estar sincronizado y si un archivo se borra debe borrarse toda
entrada a el. Para evitar eso se incluye un contador de referencias que lleva la cuenta del n
umero de entradas de
directorios que hace referencia al archivo. Solo se borra si el contador llega a 0.
Otra forma de implementar un enlace es como un tipo especial de archivo que contiene el nombre de ruta
absoluta o relativa del archivo o subdirectorio compartido. A los enlaces implementados de esta forma se les
denomina enlaces simb
olicos.
Su principal ventaja es que permiten referenciar cualquier archivo local o de red. Otra ventaja es que el hecho de
borrar el enlace no afecta al elemento compartido. Ademas si el propietario borra el elemento compartido recupera
el espacio al momento y los enlaces quedan sin apuntar a ning
un sitio. Presenta algunos inconvenientes, en primer
lugar consumen m
as espacio que los enlaces duros, aumenta el n
umero de operaciones de E/S para acceder al
elemento compartido, primero tiene que leer en enlace y luego buscar el archivo en la ruta obtenida.
Una desventaja com
un a todos los enlaces, es que un elemento compartido tiene m
ultiples nombres de rutas.
Esto dificulta las b
usquedas y las copias de seguridad.
La estructura de dispositivos de gr
afica acclica es mas flexible que la estructura de arbol de directorios pero
m
as compleja
9.3.2

Operaciones sobre directorios

El s.o. proporciona diferentes llamadas al sistema para poder operar directorios. Las operaciones mas frecuentes
son:
Crear directorio. Se crea un directorio vaco(o con las entradas . y ..).
Borrar directorio. Algunos s.o. solo permiten borrar directorios vacos (o con las entradas . y .. solo) y
otros permiten borrar sin que esten vacos, si es as al borrarlo se borra tambien su contenido.
Abrir directorio. Consiste en copiar en la memoria principal la entrada asociada al directorio que se abre de
su directorio padre.
Cerrar directorio.
Leer directorio.
Renombrar directorio.
Enlazar. Crear en enlace dentro del directorio.
Desenlazar.

66

9.4
9.4.1

Sistemas de archivos
Estructura de un sistema de archivos

Un sistema de archivos define un esquema de almacenamiento de la informacion relativa a los archivos en un


dispositivo de almacenamiento secundario. De forma general, en la estructura de un sistema de archivos se pueden
distinguir las siguientes
areas:
Bloque de arranque. Se sit
ua al comienzo de la particion y puede contener el codigo necesario para arrancar
el s.o. La tabla de particiones indica la partici
on activa, es decir, aquella que contiene el codigo de arranque
del s.o. que se quiera cargar al arrancar.
Estructura de datos con metadatos del sistema de archivos. Contiene informacion administrativa y estadstica
del sistema de archivos. Algunos s.o. (UNIX) denominan a esta estructura superbloque. Se copia en memoria
cuando arranca el s.o. o se accede por primera vez al sistema de archivos.
Estructura de datos con informaci
on sobre los bloques libres en el sistema de archivos. Generalmente denominada como lista de bloques libres. Puede implementarse como un mapa de bits o una lista enlazada.
Estructura de datos para localizar los bloques asignados a los archivos. Algunas de las mas utilizadas son las
siguientes:
Lista de nodos ndice. Cada nodo-i tiene asociado un n
umero entero positivo que lo identifica de manera
u
nica. En cada entrada de la lista se encuentra la direccion fsica del nodo-i referenciado. La lista de
nodos tiene un tama
no fsico por lo que limita el n
umero de archivos que puede contener el s.o.
Tabla de asignaci
on de archivos(File Allocation Table, FAT). Esta tabla tiene una entrada por cada
bloque fsico existente en la particion del sistema de archivos. Si el bloque fsico j esta asignado a un
archivo entonces la entrada j en la FAT contiene la direccion fsica del siguiente bloque del archivo. Con
esta estructura no es necesaria un lista de bloques libres, ya que la FAT contiene informacion sobre los
bloques asignados y los bloques libres.

Area
de datos. Contiene los bloques libres y los bloques asignados a los archivos y directorios.
9.4.2

Montaje de un sistema de archivos

Aparte del sistema de archivos principal, cada s.o. puede ser capaz de reconocer y manipular otros sistemas de
archivos del mismo o distinto tipo que el sistema de archivos principal.
Para poder acceder a los contenidos de un determinado sistema de archivos ubicado en memoria secundaria,
este debe ser montado en alg
un punto dentro de la estructura de directorios del sistema de archivos principal o
asignarle una estructura de archivos independiente. A dicho punto se le llama punto de montaje.
En Windows trata cada sistema de archivos como vol
umenes o unidades l
ogicas independientes, cada una de
las cuales posee su propia estructura de directorios. En Linux cada sistema de archivos que soporta lo monta en
un directorio del sistema de archivos principal
9.4.3

Asignaci
on de espacio

Un aspecto importante en el dise


no de un sistema de archivos es establecer la forma en que se asignar
an a los
archivos los bloques fsicos del a
rea de datos. Existen diferentes metodos con sus ventajas e inconvenientes:
Asignaci
on contigua
Consiste en asignar a un archivo un conjunto de bloques fsicos contiguos. Minimiza las operaciones de b
usqueda
en disco, aumentando su rendimiento. Soporta tanto acceso secuencial como aleatorio.
Como desventaja cabe se
nalar que provoca fragmentacion externa. Cuando se crea un archivo el s.o. tiene que
buscar un hueco suficientemente grande para colocar el archivo. Para ello debe mantener una lista de huecos y
utilizar un algoritmo de asignaci
on de espacio. Para solucionar este problema se hace necesarios compactar el disco.
Otra desventaja es que hay que conocer el tama
no del archivo a priori lo cual no es posible normalmente. Por
ello si asigna un hueco demasiado grande se produce fragmentacion interna, con el consiguiente desperdicio de
memoria, si por el contrario el hueco es peque
no hay abortar su ejecucion o buscarle un hueco mas grande, con la
sobrecarga y el aumento de tiempo que supone.
Asignaci
on enlazada
Consiste en almacenar al principio de cada bloque fsico asignado a un archivo la direccion fsica del siguiente
bloque fsico del archivo. De esta forma el espacio ocupado por un archivo en el disco se organiza como una lista
enlazada de bloques fsicos. No produce fragmentacion externa y no hay necesidad de conocer el tama
no del archivo
a priori.
67

La principal desventaja es que resulta muy lento si se usa para asignar espacio a archivos de acceso aleatorio,
para poder localizar el bloque j hay que leer los j-1 anteriores.
Otra desventaja es que la direcci
on fsica dentro de cada bloque consume un poco de espacio provocando que
la informaci
on en cada bloque ya no es potencia de dos, esto reduce la eficiencia y complica el procesamiento
de la informaci
on. Una soluci
on bastante utilizada consiste en asignar el espacio de los archivos en agrupamientos(clusters) de bloques fsicos contiguos, al principio del primer bloque se almacena la direccion del siguiente
cluster. Esto provoca fragmentaci
on externa y aumenta la interna.
Otra desventaja es la sensibilidad a errores de disco, si se pierde un bloque, tambien se pierde al camino a los
que quedaban detr
as en la cadena. Esos bloques se podran considerar erroneamente como libres o enlazados a
otro archivo.
Para eliminar las desventajas del metodo de asignacion enlazada, se puede usar una FAT que se ubicara en
bloques contiguos despues del sector de arranque de la particion asociada al sistema de archivos. En cada entrada
de la FAT se almacena lo que se almacenaba al principio de cada bloque. De esta forma el espacio ocupado por
un archivo en el disco se organiza como una lista enlazada de entradas de la FAT. Si un bloque fsico es el u
ltimo
del archivo, la entrada de la FAT correspondiente tendra un indicador de fin de archivo, si esta libre tendr
a un
identificador de libre.
La principal desventaja de la FAT es que debe copiarse en memoria principal y puede llegar a ser bastante
grande.
Asignaci
on indexada
Consiste en almacenar en un nodo-i los atributos de un archivo y las direcciones fsicas de los ocho o diez primeros
bloques de un archivo. Tambien se almacenan las direcciones fsicas de uno o varios bloques de indireccion simple,
doble o triple. Un bloque de indirecci
on simple es un bloque fsico que almacena direcciones fsicas de bloques de
archivo. Por su parte un bloque de indirecci
on doble es un bloque fsico que almacena direcciones de bloques de
indirecci
on simple. Mientras que un bloque de indirecci
on triple almacena direcciones de bloques dobles. El tama
no
del nodo-i es peque
no por lo que dentro de un bloque fsico caben m
ultiples nodos-i.
Cada archivo tiene asociado un nodo-i identificado con un n
umero entero positivo llamada n
umero de nodo-i.
Al principio de la partici
on asociada al sistema de archivos se mantiene una lista con todos los nodos-i existentes.
Cuando se abre un archivo, su nodo-i se lee en la lista de nodos-i y se carga en memoria principal.
Se puede usar en acceso secuencial y aleatorio, no produce fragmentacion externa y permite que el espacio de
los bloques fsicos que contienen datos del archivo pueda ser utilizado en su totalidad. Ademas su implementaci
on
requiere menos uso de memoria principal que el metodo de asignacion enlazada con FAT.
La principal desventaja es que el tiempo de acceso a un bloque del archivo depende de la estructura interna del
nodo-i, del tama
no del archivo y de la posici
on del bloque al que se desea acceder.
9.4.4

Gesti
on del espacio libre

Se suele usar una estructura de datos que se suele denominar lista de bloques libres, aunque a veces no se use una
lista. Se almacena al comienzo del sistema de archivos entre el bloque de arranque y el area de datos, necesitando
varios bloques de disco para su almacenamiento.
Para reducir el n
umero de operaciones de E/S a disco, el s.o. suele cargar en la memoria principal una copia
de parte de la lista de bloques libres.
Se puede implementar de varias formas, las mas utilizadas son:
Mapa de bits
Se puede implementar como un mapa de bits. Cada bloque de disco de la particion del sistema de archivos tiene
asignado un bit. Si el bloque est
a ocupado se marca con un 0 y si esta libre con un 1, o viceversa. Si la partici
on
asociada del sistema de archivos ocupa N bloques de disco, entonces el mapa de bits ocupara N bits.
Su principal ventaja es que es muy sencillo encontrar el primer bloque libre o grupo de ellos. Su desventaja es
que es necesario mantener todo el mapa de bits en memoria y puede ser muy grande.
Lista enlazada
Se puede implementar como una lista enlazada de bloques de disco. Supongase que en un bloque de disco se
puede almacenar ND direcciones de bloque, entonces cada bloque de la lista contendra ND 1 direcciones de
bloques libres y la direcci
on siguiente de la lista.
Su principal ventaja es que solo es necesario mantener simultaneamente en memoria principal un bloque de la
lista enlazada.
9.4.5

Implementaci
on de directorios

Un directorio es un archivo que almacena una lista de los archivos y subdirectorios que contiene. En general se
suele almacenar el nombre del archivo y otras informaciones adicionales asociadas al archivo. Cuando se abre un
archivo el s.o. carga en memoria principal la entrada del directorio que lo referencia.
68

Los directorios se pueden implementar de varias formas, entre las mas comunes estan:
Directorios de entradas de igual tama
no. En cada entrada primero se almacenan las informaciones asociadas
al archivo y luego el nombre. La ventaja es que es muy sencilla de gestionar. La desventaja es que desperdicia
espacio en el nombre el archivo al tener que reserva espacio para los nombres largos rara vez utilizados.
Directorios con entradas de tama
no variable. En cada entrada primero se almacena el tama
no que ocupa
la entrada. A continuaci
on se almacena las informaciones asociadas al archivo y finalmente se almacena el
nombre del archivo que no puede sobrepasar un cierto tama
no maximo. Al nombre del archivo se le a
nade un
car
acter especial para marcar su final. Ademas se a
naden algunos caracteres de relleno para que el tama
no
de una entrada sea un n
umero entero de palabras.
Su principal ventaja es que se reduce el espacio desperdiciado, su principal desventaja es que produce fragmentaci
on externa a nivel de directorio(al borrar archivos se crean huecos de longitud variable). Se soluciona
compactando el directorio.
Directorios con entradas de igual tama
no y uso de un montculo(heap) para almacenar los nombres de los
archivos. En cada entrada del directorio se almacena un puntero al comienzo del nombre del archivo dentro
del montculo y las informaciones asociadas al archivo. Al final del directorio se almacena la estructura de
datos de tipos montculo para almacenar los nombres. Dentro del montculo los nombres se almacenan de
forma continua con un car
acter especial de separador. La principal ventaja es que se elimina la fragmentaci
on
externa a nivel de directorio. adem
as no es necesario incluir caracteres de relleno. Su principal inconveniente
es que las operaciones sobre el montculo complican la administracion del directorio.
Otro aspecto a considerar est
a relacionado a la forma en que el s.o. realiza la b
usqueda de un archivo en un
directorio. La b
usqueda lineal es muy sencilla de implementar pero puede ser muy lenta si hay muchos archivos y
subdirectorios dentro del directorio.
Para ahorrar tiempo algunos s.o. mantienen una memoria cache de software denominada cache de directorios
con las entradas de los directorios recientemente accedidas.
Otra posibilidad consiste en implementar en cada directorio con una tabla hash y su lista de archivos y subdirectorios. Para tratar las colisiones que se pueden producir debido a que la funcion hash puede generar el mismo valor
con diferentes nombres de archivos, cada entrada de la tabla hash se puede implementar como una lista enlazada.
En dicho caso, en vez de comprobar una u
nica entrada de la lista de archivos habra que ir comprobando una a
una las entradas a las que apunta la lista enlazada de la entrada de la tabla hash. Esto ralentiza la b
usqueda pero
todava sigue siendo mucho m
as r
apida que una b
usqueda lineal.
El inconveniente es que la administraci
on del directorio se complica. Solo es recomendable usarla en sistemas
en los que se espera que los directorios contengan en n
umero elevado de archivos.
9.4.6

Consistencia

Para verificar la consistencia del sistema de archivos los s.o. suelen incluir un verificador de consistencia que
se suele ejecutar cuando vuelve a arrancar el computador si el sistema no ha sido apagado de forma adecuada.
Dicho verificador informa de las inconsistencias que detecta en el sistema de archivos y las corrige si es posible.
Las inconsistencias m
as frecuentes son:
Un bloque no aparece en la lista de bloques libres y tampoco esta asignado a ning
un archivo. La soluci
on de
esta inconsistencia consiste en a
nadir al archivo a la lista de bloques libres.
Un bloque figura en la lista de bloques libres y tambien esta asignado a un archivo. La inconsistencia se
soluciona eliminando el bloque de la lista de bloques libres.
Un bloque figura varias veces en la lista de bloques libres. Esta inconsistencia solo se puede presentar si
dicha lista se implementa con una lista enlazada. Su solucion consiste en reconstruir la lista de bloques libres
dejando una u
nica aparici
on del bloque.
Un bloque esta asignado a N archivos con N > 1. Se trata de la peor inconsistencia posible. Una posible
soluci
on consiste en coger N - 1 bloques libres, copiar en ellos el contenido del bloque y asociar cada copia
a un archivo. As se recupera la consistencia del sistema de archivos aunque seguramente la informaci
on
contenida en N - 1 de los archivos contendra errores.
El principal inconveniente de los verificadores de consistencia radica en que requieren un tiempo no despreciable
de ejecuci
on.
La mayora de sistemas de archivos modernos para evitar el uso de verificadores implementan la tecnica conocida
como registro por diario(journaling), que consiste en que el sistema operativo genera un informe con las operaciones
que tiene que realizar sobre el sistema de archivos antes de realizarlas. Dicho informe se almacena en un
area
reservada de la partici
on de disco denominada diario(journal). Si se produce un fallo al reiniciar el s.o. ejecuta
todas las operaciones pendientes en el diario para dejar al sistema de nuevo en un estado consistente.
69

9.5
9.5.1

Recuperaci
on de archivos
Copias de seguridad

Las copias de seguridad se suelen realizar por un programa de aplicacion sobre cintas magneticas, discos duros
port
atiles o vario discos
opticos regrabables. Es recomendable cambiar el respaldo cada cierto tiempo. Deben
almacenarse en una ubicaci
on distinta al sistema de archivos original. Existen dos tipos de copia de seguridad:

Copia de seguridad l
ogica. Unicamente
contiene los directorios y archivos que el administrador o el usuario
desea copiar en el medio de respaldo. Permite acceder a dichos contenidos de forma individualizada. Pueden
ser de tres tipos:
Copia completa. Contiene todos los archivos seleccionados por el administrador o el usuario.
Copia diferencial. Contiene u
nicamente los archivos que han sido creados o modificados desde la u
ltima
copia completa.
Copia incremental. Contiene u
nicamente los archivos que han sido creados o modificados desde la u
ltima
copia de seguridad completa o incremental.
Se suele recomendar hacer copias completas cada cierto tiempo y copias incrementales o diferenciales diariamente.
Copia de seguridad fsica. Tambien conocida como imagen de disco. Consiste en copiar uno a uno cada uno
de los bloques fsicos de la partici
on de disco donde se ubica el sistema de archivos en el medio de respaldo
elegido para contener la copia de seguridad o imagen del disco. Son mas faciles de hacer pero son menos
flexibles ya que para recuperar un solo archivo hay que montar o restaurar toda la imagen.
Un aspecto a considerar a la hora de realizar una copia de seguridad es si se desea comprimirla. Ocupa menos
espacio pero un fallo puede hacer que sea irrecuperable.
9.5.2

Instant
aneas

Algunos s.o. (ZFS), utilizan un modelo de funcionamiento basado en la tecnica de copiar al escribir(copy-onwrite). Cuando el s.o. necesita modificar el contenido de un bloque en el disco, en primer lugar localiza un bloque
libre y copia el contenido modificado, y a continuacion modifica los punteros en memoria principal que apuntaban
al bloque antiguo para que apunten al nuevo. La reescritura de las estructuras de control consume cierto tiempo,
por eso se agrupan y se copian cada cierto periodo de tiempo preestablecido. Cada una de las modificaciones de
las estructuras de control se etiqueta con un n
umero de version diferente basado en el tiempo de modificaci
on de
las mismas.
La versi
on actual del sistema de archivos coexiste con las versiones anteriores del mismo. Cada vez que el n
umero
de versi
on actual se modifica se crea una nueva version del sistema de archivos denominada instant
anea(snapshot).
Cada instant
anea permite acceder al estado del sistema de archivos en el instante de tiempo de su creaci
on. Las
instant
aneas pueden montarse solo lectura para recuperar algo en concreto o en modo escritura restaurando as el
sistema de archivos a un punto anterior.
Las instant
aneas no son copias de seguridad, las principales diferencias son:
Las instant
aneas se toman de forma pr
acticamente inmediata y no ocupan espacio en el momento de su
creaci
on.
Las instant
aneas pueden se restauradas con gran rapidez. Esto proporciona un mecanismo de recuperaci
on
frente a fallos muy eficiente.
Las instant
aneas residen en el mismo disco fsico que los datos que respaldan. Si se rompe el disco se pierde
todo. Deben complementarse con copias de seguridad en un medio fsico de respaldo.

9.6

Eficiencia

La eficiencia del sistema aumenta notablemente si se reduce al mnimo imprescindible el n


umero de accesos de
E/S a disco. Para intentar lograr este objetivo muchos sistemas operativos implementan un la memoria principal
una cache de buffers de bloques de disco. Una estrategia para mejorar la tasa de acierto de la cache de bloques de
disco es la lectura por adelantado de bloques que consiste en copiar en la cache no solo el bloque que ha provocado
el fallo sino varios bloques contiguos a este. Esto solo resulta de utilidad en caso de acceso secuencial.
Para mejorar la eficiencia tambien se puede intentar que los accesos a disco consuman poco tiempo. Una
estrategia para reducir el movimiento de las cabezas de lectura-escritura consiste en almacenar en el mismo cilindro,
o en cilindros cercanos, los bloques a los que se espera acceder de forma secuencial.
Otro aspecto que afecta a la eficiencia del sistema es el tama
no del bloque de disco. Debe ser un compromiso
entre el espacio de disco desperdiciado y el n
umero de bloques que se requieren para almacenar un archivo. Diverso
estudios han puesto de manifiesto que el tama
no optimo de bloque debe ser unos pocos KiB.
70

10
10.1

Seguridad y protecci
on
Introducci
on

Los sistemas inform


aticos deben garantizar la confidencialidad y la integridad de la informacion que contienen,
as como las adecuada prestaci
on de sus servicios a los usuario autorizados. Se deben definir polticas e implementar
mecanismos de seguridad. Las polticas establecen lo que se hara y los mecanismos como se hara.
En ocasiones se habla de seguridad o de protecci
on de un sistema informatico de forma sinonima. Sin embargo el
termino seguridad de un sistema inform
atico suele ser mas general ya que involucra consideraciones legales, polticas,
administrativas y tecnicas. Mientras que es habitual reservar el termino protecci
on del sistema inform
atico para
referirse a aspectos internos del sistema, como los mecanismos de proteccion que suministra el s.o.

10.2
10.2.1

Seguridad de un sistema inform


atico
Objetivos de la seguridad

Desde el punto de vista de las seguridad un s.o. debe cumplir los siguientes objetivos:
Confidencialidad. Los datos almacenados solo deben ser ledos por aquellos usuarios autorizados por el usuario
propietario de los datos.
Integridad. El contenido de los datos almacenados u
nicamente puede ser modificado por su propietario y por
los usuarios autorizados por el.
Disponibilidad. Los recursos del sistema deben encontrarse disponibles para los usuarios autorizados.
Los tres principales peligros que pesan sobre la seguridad de un sistema informaticos son: robo de informaci
on,
manipulaci
on o destrucci
on de informaci
on y denegacion del servicio a usuarios autorizados.
La seguridad de un sistema inform
atico requiere que el sistema se encuentre en estado seguro. Un sistema
inform
atico se considera que se encuentra en un estado seguro si sus recursos hardware y software son accedidos y
utilizados u
nicamente por los usuarios autorizados seg
un la poltica de seguridad preestablecida.
10.2.2

Polticas de seguridad

Las polticas de seguridad aplicadas a un sistema informatico fijan el conjunto de reglas que especifican: que
usuarios pueden acceder al sistema y bajo que restricciones, como se puede leer y escribir la informacion del sistema,
y cu
ales son los flujos de informaci
on permitidos dentro del sistema.
Las polticas de seguridad suelen basarse en el principio del mnimo privilegio, es decir, cada usuario debe tener
los mnimos derechos de acceso necesarios para completar las tareas que esta autorizado a realizar.
Las polticas de seguridad de los sistemas informaticos se pueden agrupar en:
Control de acceso discrecional. Son definidas por el propietario de un recurso y especifican cuales son los
derechos de acceso de los restantes usuarios a dicho recurso.
Control de acceso obligatorio. Son definidas a nivel de dise
no del sistema y regulan el acceso y el flujo de
informaci
on dentro del mismo. Cada recurso tiene asignado un determinado nivel de seguridad. Cuando un
usuario ingresa al sistema lo hace dentro de un determinado nivel de seguridad y solo puede acceder a los
recursos de su mismo nivel y quiz
as de niveles inferiores.
En un mismo sistema pueden coexistir polticas de seguridad de categoras distintas. La seleccion de las polticas
de seguridad m
as adecuadas para un sistema informatico debe realizarse tras evaluar los posibles riesgos y el coste
de lograr un determinado nivel de seguridad.

10.3

Autenticaci
on de usuarios

B
asicamente los mecanismos de autenticacion se basan en alguno de los siguientes elementos que debe poseer el
usuario: secreto o conocimiento(nombre de usuario y contrase
na), objeto fsico(llave o tarjeta) y rasgo fisiol
ogico o
de comportamiento(huellas dactilares, patr
on de retina,...)
La eficiencia de un mecanismo de autenticacion se mide por el porcentaje de intrusos a los que se les concede el
acceso y el porcentaje de usuarios legtimos a los que se les deniega el acceso. Un mecanismo sera tanto m
as eficaz
cuanto m
as peque
no sean ambos porcentajes.

71

10.3.1

Contrase
nas

Tpicamente cuando un usuario desea acceder al sistema se le solicita su nombre de usuario(login) y su contrase
na(password). Aparte que para entrar al sistema, se suelen usar contrase
nas para acceder a recursos.
El metodo de autenticaci
on mediante contrase
nas es muy popular ya que es facil de implementar y de usar.
El principal inconveniente de las contrase
nas es que el grado de seguridad que ofrecen es limitado ya que pueden
ser f
aciles de obtener y adivinar. Se ha de buscar un compromiso entre la fortaleza de la contrase
na y lo f
acil de
recordar que es. Las contrase
nas se pueden atacar mediante ingeniera social o fuerza bruta.
Para reforzar la seguridad se han propuesto varias tecnicas auxiliares, como por ejemplo:
Envejecimiento de contrase
nas.
Contrase
nas de un solo uso. El usuario posee un libro de contrase
nas y debe usarlas por orden. Esta tecnica
permite detectar f
acilmente si un intruso ha accedido a la cuenta de usuario.
Reto din
amico. El sistema presenta al usuario un reto que debe resolver para poder acceder o para poder
continuar trabajando.
El mecanismo de autenticaci
on mediante contrase
nas requiere que el sistema almacene en un archivo las contrase
nas asociadas a los usuarios. Para reforzar la proteccion de las contrase
nas el sistema las cifra antes de
almacenarlas.
10.3.2

Objetos fsicos

El usuario debe poseer un objeto fsico para acceder al sistema, en consecuencia si lo pierdo o lo roban tambien
pueden acceder al sistema. Para evitar eso se combina con el uso de una contrase
na, esta se puede almacenar
cifrada dentro del propio objeto fsico en vez de en el sistema.
10.3.3

Caractersticas fisiol
ogicas o de comportamiento

Se basan en tecnicas biometricas, es decir, tecnicas basadas en el reconocimiento de una caracterstica fisiol
ogica
o de comportamiento que es u
nica e intransferible de la persona. Los principales inconvenientes de este tipo de
mecanismos son su elevado coste y el potencial rechazo de los usuarios al considerar que pueden invadir su intimidad.
Su principal ventaja es que el porcentaje de intrusos a los que se les concede el acceso suele ser muy peque
no.

10.4

Software malicioso

Se denomina software malicioso(mailicious, software, malware) a todo aquel software dise


nado para causar
da
nos o utilizar recursos de un computador sin el conocimiento y consentimiento de sus usuarios legtimos.
Vamos a describir las caractersticas de los principales tipos de software malicioso existentes:
10.4.1

Bomba l
ogica

Una bomba l
ogica es un fragmento de c
odigo insertado en un programa legtimo que u
nicamente se activa cuando
se cumplen o deja de darse unas condiciones preestablecidas.
10.4.2

Puerta secreta

Una puerta secreta es un fragmento de c


odigo insertado en un programa o sistema con la finalidad de poder
saltarse los procedimientos de autenticaci
on o ganar privilegios.
Aunque las puertas secretas pueden ser muy u
tiles para la depuracion del codigo, suponen un peligro si son
utilizadas con fines nocivos.
10.4.3

Caballo de Troya

Un caballo de Troya, tambien denominado con el termino troyano, es un programa aparentemente inofensivo
que aparten de realizar aparentemente al funcion para la que esta dise
nado realiza una funcion desconocida y no
deseable por el usuario del programa, como el borrado de archivos, el envo de informacion a un intruso o permitir
el acceso remoto de un intruso al sistema.

72

10.4.4

Virus

Un virus inform
atico es un fragmento de codigo insertado dentro del codigo de un programa anfitrion que se
ejecuta si el usuario abre el programa anfitri
on.
Pueden llegar a distinguirse hasta cuatro fases en la actividad de un virus:

Fase latente. El virus se encuentra dormido. Este


despierta cuando se produce alg
un evento.
Fase de propagaci
on. El virus inserta copias de si mismo en otros archivos ejecutables ubicados en memoria
secundara, o en ciertas partes del disco duro como el sector de arranque maestro. Tambien puede estar
residente en la memoria principal, infectando a todo programa que es cargado en la memoria.
Fase de activaci
on. Se comprueba si se ha producido un determinado evento antes de pasar a la siguiente
fase.
Fase de ejecuci
on. El virus realiza la accion nociva para la que fue dise
nado.
Otra forma de virus que ha proliferado en los u
ltimo a
nos son los virus insertado en macros, que son programas
ejecutables embebidos en un documento de un procesador de texto, hoja de calculo o en otro archivo.
En general el alcance del da
no y la propagacion que puede causar un virus esta limitado por los privilegios de
ejecuci
on que tenga el programa anfitri
on.
En aquellos s.o. que no dispongan de medidas de seguridad es fundamental tener instalado un software antivirus. Un antivirus busca en todos los archivos del computador susceptibles de estar infectado, los patrones de
instrucciones que, de acuerdo con su base de datos, identifican a un posible virus.
10.4.5

Gusano

Un gusano inform
atico es un programa capaz de reproducirse y propagarse a otros computadores generalmente
a traves de una red inform
atica. B
asicamente provoca una denegacion del servicio o un servicio deficiente a los
usuarios de los computadores, ya que en su funcion de reproduccion realiza un consumo desproporcionado de los
recursos de los computadores y del ancho de banda de la red por la que se propaga. Normalmente los gusanos
inform
aticos no se dedican a da
nar archivos o programas.
10.4.6

Programa espa

Un programa espa(spy software, spyware) es un programa que se instala de forma furtiva en el computador por
un virus o un troyano y que se dedica a recopilar informacion sobre la actividad de sus usuarios para envi
arselas a
terceros.
Los programas espas pueden ser utilizados por criminales o espas, pero tambien por la polica en tareas de
investigaci
on de delincuentes y terroristas.

10.5

Mecanismos de protecci
on

La necesidad de incluir dentro del s.o. mecanismos de proteccion surgio con la aparicion de los sistemas
multiprogramados. Un proceso usuario puede, de forma intencionada o involuntaria, intentar ejecutar acciones que
perjudiquen el funcionamiento del sistema, como p.e., acaparar el uso del procesador, generar instrucciones de E/S
ilegales, escribir o leer en las direcciones de memoria asignadas al s.o. o a otros procesos, leer o modificar archivos,
etc.
Para evitar que un proceso acapare el uso del procesador se utiliza el reloj del computador y sus interrupciones.
La forma de prevenir que un proceso de usuario realice operaciones de E/S ilegales es establecer que todas las
instrucciones de E/S sean privilegiadas.
En general el s.o. se apoya en el hardware para proteger la memoria principal. Por otra parte, las estructuras
de datos que mantiene el s.o. para implementar una tecnica de gestion de memoria contienen campos o bits de
protecci
on que permiten especificar los derechos de acceso a una determinada area de memoria.
En el caso de los archivos, algunos s.o. permiten especificar los permisos de acceso sobre un archivo de forma
independiente para el usuario propietario, el grupo de usuarios propietario y el resto de archivos.
El s.o. dispone de una gran variedad de mecanismos de proteccion de los recursos del computador. Para facilitar
la implementaci
on de una determinada poltica de proteccion conviene usar un modelo general que abarque todos
los mecanismos de protecci
on existentes. El modelo de proteccion mas utilizado se basa en la abstraccion conocida
como matriz de acceso. En las siguientes secciones se describe como se define la matriz de acceso y sus dos
implementaciones m
as frecuentes: las listas de control de acceso y las listas de capacidades.

73

10.5.1

Matriz de acceso

Un sistema inform
atico dispone de un conjunto de recursos hardware y software, tambien denominados objetos,
que son utilizados por los procesos de los usuarios. Cada objeto posee un identificador o nombre que lo distingue
de los dem
as. Estos objetos son utilizados por un conjunto de proceso, tambien denominados sujetos.
Un dominio de protecci
on(o dominio) establece para un subconjunto de objetos las operaciones permitidas o
derechos de acceso sobre cada uno de ellos. De esta forma un objeto queda definido por un conjunto de pares de
la forma [objeto, derechos].
Un mismo objeto puede estar en varios dominios simultaneamente con los mismo o distintos derechos de acceso
Un dominio se puede asociar a un usuario o a un proceso, incluso a un procedimiento. Si el dominio asignado
no cambia durante toda las sesi
on del usuario o durante el tiempo de vida del proceso, entonces se dice que la
asociaci
on de dominio es est
atica. Por el contrario, en una asociacion de dominio din
amica un usuario o un proceso
puede cambiar de dominio.
Todos los dominios de protecci
on existentes en un s.o. pueden mantenerse en una matriz A denominada matriz
de acceso o matriz de protecci
on. Cada fila i de la matriz esta asociada a un dominio Di . Mientras que cada
columna j de la matriz est
a asociada a un objeto Oj . Cada elemento Aij de la matriz contiene los derechos de
acceso asociados al objeto Oj dentro del dominio Di . Las conmutaciones de dominio tambien se pueden implementar
con la matriz de acceso. Para ello simplemente es necesario incluir a los dominios como objetos dentro de la matriz.
Simplemente hay que otorgarle a un dominios para pasar a otro la operacion conmutar o entrar.
La matriz de acceso es un objeto din
amico, ya que durante el tiempo de vida del sistema se crean y borran
objetos y dominios. El s.o. debe disponer un conjunto de funciones primitivas que permitan manipular la matriz
de acceso. Las funciones primitivas b
asicas son: crear objeto, eliminar objeto, crear dominio, eliminar dominio,
insertar derecho y eliminar derecho. Estas funciones primitivas son invocadas por algunos comandos y llamadas al
sistema.
La matriz de acceso puede llegar a tener un gran tama
no y muchos elementos pueden estar vacos. Para evitar
los inconvenientes derivados se suele implementar como un conjunto de listas de control de acceso para objetos o
como un conjunto de listas de capacidades para dominios.
10.5.2

Listas de control de acceso

Una forma de implementar la matriz de acceso consiste en asociar con cada objeto una lista denominada lista
de control de acceso(Access Control List, ACL). Cada entrada contiene pares de la forma [dominio, derechos].
Cuando un proceso va a acceder a un objeto, se consulta su ACL usando como parametro de b
usqueda el
dominio de protecci
on.
La principal ventaja es que por su propia estructura permite facilmente revocar derechos de forma selectiva
sobre objetos que pueden estar presentes en varios dominios.
El principal inconveniente es que el ACL se comprueba en cada acceso al objeto. Si los accesos son muy
frecuentes o/y la lista es larga se pierde tiempo en las b
usquedas en la lista. Una estrategia para reducir el tiempo
de b
usqueda consiste en reducir el n
umero de entradas de las ACLs asociando un dominio a un grupo de usuarios
en vez de un dominio a cada usuario individual.
10.5.3

Lista de capacidades

Otra forma de implementar la matriz de acceso consiste en asociar con cada dominio una lista denominada
lista de capacidades. Cada entrada de la lista contiene un identificador de un objeto, que indica la localizaci
on del
objeto o de una estructura de datos que contienes su localizacion, y sus derechos de acceso. A la dupla(objeto,
derechos) se le denomina capacidad.
Una posible implementaci
on consiste en almacenarla en el espacio de direcciones del n
ucleo y asociar a cada
capacidad un identificador numerico que coincide con su posicion en la lista. El identificador de la capacidad es
usado como par
ametro de las llamadas al sistema para realizar operaciones sobre un objeto.
Una de las ventajas de esta implementacion es que el acceso a la lista de capacidades es muy rapido. Otra
ventaja es que permite encapsular a los procesos facilmente, basta con asociarles un determinado dominio, algo
que no es posible con las ACLs.
Un inconveniente es el coste que supone para el sistema la revocacion de los permisos para un objeto en concreto,
ya que requiere acceder a todas las listas de capacidades existentes y buscar en cada una si existe la capacidad que
se desea revocar.
Una soluci
on consiste en introducir un nivel de indireccion mediante el uso de una tabla global. En cada entrada
se almacena la dupla(identificador del objeto, derechos). Por su parte, en una entrada de la lista de capacidades se
almacenan el identificador del objeto y un puntero a la entrada de la tabla que contiene los derechos. Para revocar
los permisos de un objeto basta con borra su entrada en la tabla global.
Otra soluci
on consiste en asociar a cada objeto una clave maestra que se genera la crear el objeto y que se
almacena en otra estructura de datos del n
ucleo. Cuando se crea una capacidad en una lista de capacidades esta

74

contiene adem
as del identificador del objeto y sus derechos una copia del valor actual de la clave maestra. De esta
forma, para revocar los derechos basta con cambiar la clave maestra.
En ambas soluciones no es posible realizar una revocacion selectiva de los derechos, es decir, dejar algunos

permisos y quitar otros. En ambos casos se quitan todos los derechos. Este
es en general un inconveniente
inherente a la lista de capacidades.

10.6
10.6.1

Sistemas confiables
Definici
on

Un sistema inform
atico se denomina confiable si cumple con los requerimientos de seguridad o poltica de
seguridad que se habra impuesto. Todo sistema confiable dispone de una base de computador confiable(Trusted
Computer Base, TCB), es decir, un conjunto de elementos hardware y software que le permiten implementar los
requisitos de seguridad establecidos.
Una parte muy importante del TCB es el monitor de referencia que se encarga de comprobar todas las llamadas
al sistema que pueden comprometer la seguridad del sistema, y decidir si pueden ser procesadas o deben ser
rechazadas. Algunos s.o. no disponen de monitor de referencia en su TCB lo cual compromete su seguridad.
10.6.2

Seguridad multinivel

Existen diferentes
ambitos donde la seguridad es uno de los principales objetivos que debe garantizar el sistema
inform
atico. En estos entornos es necesario disponer de polticas de control de acceso obligatorio. Se suele utilizar
un modelo de seguridad multinivel que distingue varios niveles de seguridad. A cada objeto y usuario se le asigna
un determinado nivel. El modelo debe especificar un conjunto de reglas para establecer el acceso de usuarios a la
informaci
on(objetos).
Uno de los modelos mas utilizados sigue las siguientes reglas:
Imposibilidad de leer objetos de niveles superiores. El usuario solo puede leer un objeto con un nivel de
seguridad igual o inferior al del usuario. Esta regla se conoce como propiedad de seguridad simple.
Imposibilidad de escribir objetos de niveles inferiores. Un usuario puede escribir un objeto con un nivel de
seguridad igual o superior. Esta regla se conoce como propiedad * ya que los autores no saban que nombre
ponerle y optaron por poner un asterisco hasta que encontraran un nombre adecuado, algo que nunca ocurri
o.
Si se cumplen escrupulosamente estas dos reglas se puede garantizar que no existira fugas de informaci
on desde
un nivel de seguridad superior hacia un nivel inferior.
10.6.3

Principios de dise
no de sistemas operativos seguros

En 1975 Saltzer y Schroeder basados en su experiencia con Multics establecieron varios principios generales que
se deberan seguir para dise
nar un sistema seguro. Sus ideas se pueden resumir en los siguientes puntos:
El dise
no del sistema debe ser p
ublico.
El estado por defecto es el de no acceso.
Comprobaci
on de los derechos de acceso.
Principio de mnimo privilegio. Los procesos solo deben tener los derechos de acceso mnimo para su tarea.
De esta forma se limitan los da
nos que puede ocasionar el ataque de un caballo de Troya.
Los mecanismos de protecci
on deben ser simples y estar integrados en las capas m
as bajas del sistema.
Los mecanismos de protecci
on deben ser aceptados por los usuarios.
Para dise
nar un sistema seguro conviene tener en cuenta el principio que establece que desde el punto de vista
de la seguridad, los mejores dise
nos son los mas sencillos. Un sistema con un dise
no complejo y grande tiene m
as
posibilidades de poseer agujeros en su seguridad y errores(bugs) de programacion.

75

You might also like