Professional Documents
Culture Documents
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
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
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
1.3
1.3.1
Evoluci
on hist
orica de los sistemas operativos
Los primeros sistemas operativos
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
1.4
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
1.5
Llamadas al sistema
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
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
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
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
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
Ventajas e inconvenientes
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
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
3.3
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
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
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
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
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
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
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
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
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
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
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
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
4.5.3
Uso de monitores
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
28
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
5.3
Grafos de asignaci
on de recursos.
31
5.4
Prevenci
on de interbloqueos
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
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
RAj =
p
X
Akj
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
i = 1, ..., p
j = 1, ..., q
i = 1, ..., p
j = 1, ..., q
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
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
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
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
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
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
Traducci
on de direcciones y protecci
on
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
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
40
6.6
6.6.1
Paginaci
on simple
Descripci
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
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:
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
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
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
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
49
7.3
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
7.4
Reemplazamiento de p
aginas
50
Algoritmo de reemplazo
optimo
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
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
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:
7.4.6
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
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.
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
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
7.8
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
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
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
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
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
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
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
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
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
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
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
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
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
Area
de datos. Contiene los bloques libres y los bloques asignados a los archivos y directorios.
9.4.2
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
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
10
10.1
Seguridad y protecci
on
Introducci
on
10.2
10.2.1
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
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
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:
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
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