Está en la página 1de 98

Conceptos de Sistemas Operativos

Gonzalo Emanuel Gutierrez.

Sergio Rocabado.

Jorge Ramirez

25 de junio de 2013

Resumen
En la actualizad existen diversos tipos de sistemas operativos y que son modelados acordes

a las necesidades presente en una determinada organizacin y/o usuario. Algunos de ellos son

diseados para computadoras personales y otros para servidores. Cada sistema operativo tiene

diferente caractersticas con respecto a otros, entre ellas podemos mencionar la manera de gestionar

los archivos, la memoria principal el procesador y los procesos. La seguridad tambin es otra cualidad

que tiene que brindar cualquier sistema operativo. Es por ello que, en el presente traba jo pretende

abordar algunos de estos temas, partiendo inicialmente de ideas preliminares y abordando las

diversas caractersticas de cualquier sistema operativo.

ndice

Introduccin a los sistemas operativos 7


1. Que es un sistema operativo? 7
1.1. Estructura de un Sistema operativo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.1.1. Servicios del Sistema Operativo: . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.1.2. Llamadas al sistema: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.1.3. Categoras de llamadas al sistema: . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2. Tipos de Estructuras de Sistemas Operativos: . . . . . . . . . . . . . . . . . . . . . . . 9
1.3. Mquinas Virtuales VM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4. Arranque del Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

Gestin de Procesos 10
2. Procesos 10
2.1. Estado de un proceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2. Bloques de Control de proceso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3. Colas de Planicacin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4. Planicadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.5. Cambio de Contexto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.6. Operaciones sobre los procesos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.6.1. Creacin de procesos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.6.2. Terminacin de procesos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.7. Comunicacin interprocesos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.7.1. Sistemas de memoria compartida . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.7.2. Sistemas de paso de mensajes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

1
NDICE 2

3. Hebras 16
3.1. Ventajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2. Modelos multihebras. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

Planicacin de la CPU 18
4. Ciclos de rfagas de CPU y de E/S 18
4.1. Planicador de la CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.1.1. Planicacin expropiativa y no expropiativa . . . . . . . . . . . . . . . . . . . . 19
4.1.2. Despachador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

5. Criterios de Planicacin 20
5.1. Algoritmos de Planicacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5.1.1. Planicacin FCFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5.1.2. Planicacin de primero el trabajo ms corto o SJF (SP N ) . . . . . . . . . . 21
5.1.3. Planicacin por prioridades. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.1.4. Planicacin por turnos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5.1.5. Planicacin mediante colas multinivel . . . . . . . . . . . . . . . . . . . . . . . 22

Sincronizacin de Procesos 23
6. Introduccin 23

7. Fundamentos 23
7.1. El problema de la Seccin Crtica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

8. Programacin Concurrente 25
8.1. Comunicacin y sincronizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
8.2. Tcnicas de Programacin concurrente . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
8.2.1. Variables de Cerraduras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
8.2.2. Alternancia estricta con espera activa . . . . . . . . . . . . . . . . . . . . . . . 27
8.2.3. Algoritmo de Dekker: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
8.2.4. Algoritmo de Peterson. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

9. Semforos 29
9.1. Utilizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
9.2. Implementacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

10.Problemas Clsicos de sincronizacin 31


10.1. Problema de bufer limitado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
10.2. Lectores - Escritores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

11.Monitores 33

12.Bloqueos. 36
12.1. Recursos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
12.2. Condiciones para un bloqueo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
12.3. Modelacin de bloqueos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
12.4. El algoritmo del avestruz o de Ostrich . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
12.5. Prevencin, deteccin y recuperacin de bloqueos . . . . . . . . . . . . . . . . . . . . . 38

Gutierrez Gonzalo E.
NDICE 3

Gestin de la Memoria 40
13.Memoria Principal 40
13.1. Fundamentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
13.2. Hardware bsico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
13.3. Reasignacin de direcciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
13.4. Espacio de direcciones lgico y fsico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
13.5. Carga dinmica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
13.6. Intercambio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

14.Asignacin contigua 41
14.1. Particionamiento jo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
14.2. Particionamiento dinmico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
14.3. Reubicacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

15.Paginacin simple 43

16.Segmentacin 44
16.1. Proteccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

Memoria Virtual 47
17.Introduccin y fundamentacin 47

18.Paginacin bajo demanda 48


18.0.1. Soporte Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
18.1. Paginacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
18.1.1. Valoracin de la paginacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
18.2. Segmentacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
18.2.1. Valoracin de la segmentacin . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
18.3. Remplazo de Pgina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

19.Polticas de remplazo de pginas 52


19.1. Poltica ptima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
19.2. Poltica FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
19.3. Poltica LRU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
19.4. Segunda Oportunidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
19.5. NRU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
19.6. Algoritmos de Conteo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
19.7. NFU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
19.7.1. Envejecimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

Gestin de Almacenamiento 56
20.Archivos 56
20.1. Atributos de un archivo: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
20.2. Operaciones sobre archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
20.2.1. tipos de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

21.Mtodos de Acceso 57

Gutierrez Gonzalo E.
NDICE 4

22.Estructuras de directorios 57
22.1. Estructura de Almacenamiento: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
22.2. Directorios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
22.3. Sistemas de directorios jerrquicos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
22.3.1. Directorio de un nico nivel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
22.3.2. Directorio en dos niveles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
22.3.3. Directorios con estructura de rbol . . . . . . . . . . . . . . . . . . . . . . . . . 58
22.3.4. Directorios en un grafo acclico . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
22.3.5. Directorios en forma de grafo general . . . . . . . . . . . . . . . . . . . . . . . . 59
22.4. Montaje de sistemas de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

23.Comparticin de archivos 60
23.1. Proteccin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

24.Estructura de Sistemas de archivos. 61


24.1. Implementacin de sistemas de archivos. . . . . . . . . . . . . . . . . . . . . . . . . . . 62
24.1.1. Sistemas de Archivos Virtuales . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
24.2. Implementacin de directorios - Mtodos de Asignacin. . . . . . . . . . . . . . . . . . 63
24.2.1. Asignacin contigua . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
24.2.2. Asignacin por lista enlazada . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
24.2.3. Asignacin por lista enlazada empleando un ndice . . . . . . . . . . . . . . . . 65
24.2.4. Asignacin Indexada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
24.2.5. Nodos-i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
24.2.6. Implementacin de directorios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
24.2.7. Directorios en CP/M . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
24.3. Gestin del espacio libre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
24.4. Recuperacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
24.5. Sistemas de archivos con estructura de registro . . . . . . . . . . . . . . . . . . . . . . 68
24.6. NFS (Network File System) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

25.Estructuras de almacenamiento masivo 69


25.1. Panormica de la estructura de almacenamiento masivo . . . . . . . . . . . . . . . . . 69
25.1.1. Estructura de un disco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
25.1.2. Conexin de un disco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
25.2. Planicacin de disco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
25.3. Gestin del disco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
25.3.1. Gestin del espacio de intercambio . . . . . . . . . . . . . . . . . . . . . . . . . 72
25.4. Estructuras raid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
25.4.1. Niveles RAID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

Sistemas Distribuidos 74
26.Introduccin a los Sistemas Operativos Distribuidos 74
26.1. Ventajas e inconvenientes de los Sistemas distribuidos . . . . . . . . . . . . . . . . . . 74
26.2. Conceptos de Hardware: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
26.2.1. Taxonoma de Flynn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

Gutierrez Gonzalo E.
NDICE 5

27.Hardware de los multiprocesadores. 75


27.1. Multiprocesadores con bus compartido . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
27.1.1. Multicomputadoras con base en buses . . . . . . . . . . . . . . . . . . . . . . . 76
27.2. Sistemas conectados mediante barras cruzadas. . . . . . . . . . . . . . . . . . . . . . . 76
27.2.1. Multicomputadoras con conmutador: . . . . . . . . . . . . . . . . . . . . . . . . 77

28.Tipos de Sistemas Operativos para sistemas distribuidos. 77


28.1. Sistemas operativos de redes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
28.2. Sistemas realmente distribudos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
28.3. Sistemas de multiprocesador con tiempo compartido . . . . . . . . . . . . . . . . . . . 77

29.Aspectos del diseo de un sod. 78

30.Comunicacin en los SOD 79


30.1. Protocolos con capas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
30.2. Redes con modo de transferencia asncrona . . . . . . . . . . . . . . . . . . . . . . . . 79

Seguridad 82
30.3. Requisitos de Seguridad: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
30.3.1. Intrusos (hacker o cracker): . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
30.4. Virus y amenazas afines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

Seguridad S.O.M 86
31.Introduccin 86
31.1. Dispositivos mviles y seguridad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
31.2. cdigo malicioso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
31.3. Prdida o fuga de informacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
31.4. El mercado de soluciones de seguridad. . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

32.Sistema Operativo Android 87


32.1. Seguridad y Efectividad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
32.2. Debilidades. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

33.iOS, Windows Phone 7, y otros 89

Apendice 1: Preguntas Frecuentes 91


Referencias 98

Gutierrez Gonzalo E.
NDICE DE FIGURAS 6

ndice de guras
2.1. Diagrama de estados de un proceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2. Cola de procesos preparados y diversas colas de dispositivos de E/S. . . . . . . . . . . 11
2.3. Planicadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4. Cambio de Contexto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.5. rbol de procesos de un sistema Solaris . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.6. Comunicacin Sncrona y Asncrona . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.1. Modelo monohebra y multihebra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2. Diversos modelos multihebras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.1. Histograma de la duracin de la rfaga . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
7.1. Regin Crtica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
7.2. Estructura General de un proceso Pi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
8.1. Comunicacin y Sincronizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
9.1. Modicacin de las operaciones wait() y signal() . . . . . . . . . . . . . . . . . . . . . 30
11.1. Vista esquemtica de los monitores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
12.1. Modelacin de bloqueos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
14.1. Particionamiento jo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
15.1. Traduccin de direccin lgica a fsica . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
16.1. Traduccin de direccin lgica a fsica . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
16.2. Soporte de Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
16.3. Direcciones lgicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
18.1. Formatos tpicos en paginacin virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
18.2. Traduccin de direcciones de un sistema de paginacin . . . . . . . . . . . . . . . . . . 50
18.3. Formatos tpicos en segmentacin virtual . . . . . . . . . . . . . . . . . . . . . . . . . . 51
18.4. Traduccin de direcciones en un sistema con segmentacin . . . . . . . . . . . . . . . . 51
22.1. Estructuras de directorios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
24.1. Almacenamiento como lista enlazada de bloques de disco . . . . . . . . . . . . . . . . . 64
24.2. Asignacin por lista enlazada empleando una tabla en memoria principal . . . . . . . . 65
24.3. Nodo-i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
24.4. Entrada de directorio en CP/M . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
24.5. Montaje NFS. (a) Montajes; (b) Montajes en cascada . . . . . . . . . . . . . . . . . . . 69
25.1. Mecanismo del cabezal mvil del disco . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
27.1. Esquema de un mltiprocesador con bus compartido . . . . . . . . . . . . . . . . . . . 75
27.2. Conexin mediante barras cruzadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
30.1. Capas del modelo OSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
30.2. Modelo cliente-servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
30.3. Amenazas a la seguridad y elementos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
31.1. Cuota de mercado de los sistemas operativos para moviles . . . . . . . . . . . . . . . . 86
32.1. Arquitectura del Sistema Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
32.2. Porcentaje de participacin de OS mviles . . . . . . . . . . . . . . . . . . . . . . . . . 88
32.3. Cantidad de malware en los diversos Sistemas Operativos mviles . . . . . . . . . . . . 88
33.1. Las cuatros capas de iOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

Gutierrez Gonzalo E.
1 QUE ES UN SISTEMA OPERATIVO? 7

Introduccin a los sistemas operativos


1. Que es un sistema operativo?
Un sistema operativo es un programa que administra el hardware de una computadora. Acta
como intermediario entre el hardware y el usuario, proporcionando las bases para los programas de
aplicacin.
Existen diversos tipos de sistemas operativos.

Mono-procesador: con una sola CPU, capaz de ejecutar instrucciones de propsito general.

Multiprocesador: Dispone de dos o mas procesadores que se comunican entre si, compartiendo el
bus de la computadora y en ocasiones, el reloj, memoria y perifricos.

1. Son de Mayor rendimiento

2. Economa de escala

3. Mayor exibilidad.

Adems, incrementa el uso de la programacin (tcnica que permite que dos o mas procesos
ocupen la misma unidad de memoria principal y que sean ejecutados al mismo tiempo en la
CPU, paralelismo en una sola CPU).

Distribuidos

De red: proporciona funcionalidades como el compartimiento de archivos, incluye un esquema de


comunicacin que permite intercambiar mensajes.

De tiempo real: se usa cuando se han establecido rgidos requisitos de tiempo en la operacin de
un procesador o ujo de datos.

De tiempo compartido: se establece que el sistema responda rpidamente.

De procesamiento por lotes: no tiene restricciones de tiempo absoluto, procesa trabajos masivos
con una entrada predeterminada.

Interactivos: esperan la introduccin de datos por parte del usuario.

Servidores: proporciona una respuesta ante la solicitud de un cliente.

Basados en la Web.

1.1. Estructura de un Sistema operativo.


1.1.1. Servicios del Sistema Operativo:

1. Interfaz de usuario UI

a) Linea de comando CLI: los Sistemas Operativos que disponen de varios interpretes de co-
mando para elegir se denominan shells. Obtiene y ejecuta comando especcos por el usuario.
Propios de UNIX y Linux.

b) Procesos por lotes: Los comando y directivas se introducen en archivos que luego se ejecutan.

c) Grca de usuario GUI: Sistemas de ventanas + mouse + teclado para introducir textos.
Propios de Windows.

Gutierrez Gonzalo E.
1 QUE ES UN SISTEMA OPERATIVO? 8

2. Ejecucin de programas.

3. Manipulacin del sistema de archivos.

4. Comunicaciones

5. Deteccin de errores.

6. Asignacin de Errores.

7. Responsabilidad, proteccin y seguridad.

1.1.2. Llamadas al sistema:

Proporciona una interfaz con la que se puede invocar los servicios que el sistema operativo ofrece.
Para el paso de parmetros se puede usar una serie de registros e insertarlos en una pila o bloque en
memoria.

1.1.3. Categoras de llamadas al sistema:

1. Control de procesos

a) crear, terminar, abortar

b) esperar para obtener tiempo

c) cargar, ejecutar

d) esperar y sealizar sucesos

e) obtener y denir atributos del proceso

f) asignar y liberar memoria proceso

2. Administracin de archivos

a) crear, borrar, abrir, cerrar, leer, escribir, re posicionar archivos

b) obtener y denir atributos de archivos.

3. Administracin de dispositivos

a) solicitar, liberar, conectar y desconectar dispositivos

b) obtener y denir atributos de dispositivo.

4. Mantenimiento de informacin

a) obtener y denir hora y fecha

b) obtener y establecer datos del sistema, atributos de proceso, archivos y dispositivos

5. Comunicaciones

a) crear, eliminar conexiones

b) enviar y recibir mensajes

c) transferir informacin de estado

d) conectar y desconectar dispositivos remotos.

Gutierrez Gonzalo E.
1 QUE ES UN SISTEMA OPERATIVO? 9

1.2. Tipos de Estructuras de Sistemas Operativos:


Simple: implica proporcionar la mxima funcionalidad en el menor espacio posible, ejemplos de
estos sistemas operativos son MS-DOS y UNIX original.

En niveles: El S.O se divide en una serie de capas (0: hardware,. . . , n: U.I). Hay modularidad
y ms libertad para cambiar el funcionamiento interno del mismo. Cada nivel se implementa
utilizando solamente las operaciones proporcionadas por los niveles anteriores. Una desventaja
es la carga de trabajo adicional que hace que las llamadas tarden ms en ejecutarse.

Microkernels: Mdulos Kernels. Estructura el S.O eliminando todos los componentes no esenciales
del kernel y lo implementa como programas de aplicaciones, ofreciendo un kernel ms liviano y
pequeo.

Mdulos: El kernel dispone de un conjunto de componentes fundamentales y enlaza dinmi-


camente los servicios adicionales durante el arranque o tiempo de ejecucin. Es habitual en
implementaciones modernas de UNIX como Solaris, Linux y Mac OS-X.

1.3. Mquinas Virtuales VM


la estructura en niveles es llevado a su conclusin lgica con el concepto de VM. La idea fundamental
que subyace es la de abstraer el hard de la computadora, formando varios entornos de ejecucin difer-
entes, creando as la ilusin de que cada entorno de ejecucin est operando en su propia computadora
privada. Ej: VMWare, Java VM.

1.4. Arranque del Sistema


procedimiento de inicializacin de una computadora mediante la carga de kernel. Este programa se
encuentra se encuentra en memoria ROM, que no necesita iniciacin y no puede verse infectado por un
virus informtico. Todas las formas de ROM se conocen como rmware dado que tiene caractersticas
intermedias entre las de hardware y software. Ejecutar cdigo en l es ms lento que en RAM.

Gutierrez Gonzalo E.
2 PROCESOS 10

Gestin de Procesos
2. Procesos
Informalmente un proceso es un programa en ejecucin. Mientras que un programa es una entidad
pasiva, un proceso es una entidad activa a cargo del S.O, un programa en ejecucin que necesita
recursos como tiempo de CPU, memoria, archivos y dispositivos de E/S.
Adems del cdigo, un proceso incluye tambin una actividad actual, representada por el valor del
contador de programa
1 y los contenidos en los registros del CPU. Un proceso incluye tambin la pila

de proceso que contiene datos temporales y una seccin de datos, que contiene las variables globales. El
proceso puede incluir tambin un cmulo de memoria, que es la memoria que se le asigna al momento
de la ejecucin.

2.1. Estado de un proceso


A medida que se ejecuta el proceso, el mismo va cambiando de estado. Cada proceso puede estar
en uno de los siguientes cincos estados:

1. Nuevo: el proceso est siendo creado.

2. En ejecucin: se est ejecutando las instrucciones.

3. En espera: el proceso est esperando que se produzca un suceso, como la terminacin de una
operacin de E/S o la recepcin de una seal.

4. Preparado: el proceso est a la espera que se le asigne un procesador.

5. Terminado: se termin la ejecucin del proceso.

Es importante darse cuenta que slo puede haber un proceso ejecutndose en cualquier procesador en
cada instante concreto, sin embargo puede haber muchos procesos preparados y en espera.

Figura 2.1: Diagrama de estados de un proceso

2.2. Bloques de Control de proceso.


Cada proceso se representa en el sistema operativo mediante un bloque de control de proceso (PCB
por sus siglas en ingles). Un bloque de control de proceso contiene muchos elementos de informacin
asociando con un proceso especco, entre los que incluye:

1
El contador de programa especica la siguiente instruccin que hay que ejecutar y conjunto de recursos asociados.
Un programa se convierte en proceso cuando se carga en memoria un archivo ejecutable.

Gutierrez Gonzalo E.
2 PROCESOS 11

1. Estado de proceso: el estado puede ser nuevo, preparado, en ejecucin en espera, detenido, etc.

2. Contador de programa: el contador indica la direccin de la siguiente instruccin que va a ejecutar


dicho proceso.

3. Registro de la CPU.

4. Informacin de planicacin de la CPU: esta informacin incluye la prioridad del proceso, los
punteros a las colas de planicacin y otra informacin til al momento de planicar el proceso.

5. Informacin de la gestin de la memoria: incluye informacin acerca del valor de los registros
base y limite y/o las tablas de pginas o de segmentos, dependiendo del mecanismo de gestin
de memoria.

6. Informacin contable: esta informacin incluye la cantidad de CPU y de tiempo real empleado.

7. Informacin del estado de E/S: incluye la lista de dispositivos de E/S asignados al proceso, una
lista de los archivos abiertos, etc.

En resumen,el PCB sirve simplemente como repositorio de cualquier informacin que pueda variar de
un proceso a otro.

2.3. Colas de Planicacin.


A medida que los procesos entran en el sistema, se colocan en una cola de trabajos que contiene
todos los procesos del sistema. Los procesos que residen en la memoria principal, que estn preparados
y en espera de ejecutarse se mantienen en una lista denominada cola de procesos preparados.
El sistema tambin incluye otras colas. Cuando se asigna CPU a un proceso, este se ejecuta durante
un rato y nalmente termina, es interrumpido o espera a que se produzca un determinado suceso, como
la terminacin de una solicitud de E/S. La lista de procesos en espera de un determinado dispositivos
de E/S se denomina cola de dispositivo. Cada dispositivo tiene su propia cola.

Figura 2.2: Cola de procesos preparados y diversas colas de dispositivos de E/S.

Cada proceso nuevo se coloca inicialmente en la cola de procesos preparados, donde espera hasta
que es seleccionado para ejecucin, es decir, hasta que es despachado. Una vez que se le asigna CPU a
un determinado proceso y este comienza a ejecutarse, se puede producir uno de los siguientes sucesos:

El proceso podra ejecutar una solicitud de E/S y ser colocado, como consecuencia, en una cola
de E/S.

Gutierrez Gonzalo E.
2 PROCESOS 12

El proceso podra crear un nuevo proceso y esperar a que este termine.

El proceso podra ser desalojado de la CPU como resultado de una interrupcin y puesto de
nuevo en la cola de preparados.

2.4. Planicadores.
El mecanismo de seleccin de un determinado proceso para su posterior ejecucin se realiza mediante
un planicador apropiado. A menudo, en un sistema de procesamiento por lotes, se envan ms procesos
de los que pueden ser ejecutados de manera inmediata. Estos procesos se almacenan en cola en un
dispositivo de almacenamiento masivo, donde se mantienen para su posterior ejecucin.
El planificador a largo plazo, o planicador de trabajos selecciona procesos de esta cola y
los carga en memoria para su posterior ejecucin. El planificador a corto plazo o planicador
de CPU selecciona de entre los procesos cargados en memoria preparados para ser ejecutados y le
asigna CPU a uno de ellos. La principal diferencia entre estos dos planicadores se encuetra en la
frecuencia de ejecucin: el planicador a corto plazo debe seleccionar un nuevo proceso para la CPU
frecuentemente y debe de ser rpido. El planicador a largo plazo se ejecuta con menos frecuencia y
permite controlar el grado de programacin, es decir, el nmero de procesos cargados en memoria. Si
el grado de programacin es estable, entonces la tasa promedio de creacin de procesos debe ser igual
a la tasa promedio de salida de procesos del sistema.

Figura 2.3: Planicadores

El planicador a largo plazo debe hacer una seleccin cuidadosa debido que los procesos pueden estar
limitados por CPU o limitados por E/S.

Un procesos limitado por CPU genera pocas solicitudes de E/S y ocupa su mayor
tiempo en realizar clculos. Por ejemplo, cualquier simulador para realizar clculos matemticos
complejos.

Un proceso limitado por E/S presenta muchas solicitudes de E/S. Son procesos que
invierten mayor parte de su tiempo en operaciones de E/S en lugar de realizar clculos. Por
ejemplo, un proceso que realiza muchas solicitudes de consultas a una base de datos o escritura
de disco a disco.

Lo conveniente es que se haga una eleccin variada entre procesos limitados por CPU y limitados
por E/S. Algunos sistemas operativos, como los sistemas de tiempo compartido, pueden introducir un
nivel intermedio adicional de planicacin: un planicador a medio plazo permite eliminar procesos en
memoria (reduciendo el grado de programacin) y colocarlo mas tarde, continuando su ejecucin desde
el punto de interrupcin. Este esquema se denomina intercambio (swaping).

Gutierrez Gonzalo E.
2 PROCESOS 13

2.5. Cambio de Contexto.


Las interrupciones hacen que el S.O obligue a la CPU a abandonar su tarea actual, para ejecu-
tar una rutina kernel. Cuando se produce una interrupcin el sistema tiene que guardar el contexto
actual del proceso que se est ejecutando en la CPU, de modo que pueda restaurarse dicho contexto
cuando su ejecucin concluya. El contexto se almacena en el PCB del proceso. Para ello realizamos
una salvaguarda del estado actual del proceso y una restauracin del estado de otro proceso diferente
para reanudar su ejecucin. Esta tarea se conoce como cambio de contexto. Cuando se produce un
cambio de contexto, el kernel guarda el contexto del proceso antiguo en su PCB y carga el contexto
almacenado del nuevo proceso que se ha decidido ejecutar. El tiempo dedicado al cambio de contexto
es tiempo desperdiciado y depende fundamentalmente del soporte de hardware que se tenga.

Figura 2.4: Cambio de Contexto

2.6. Operaciones sobre los procesos.


2.6.1. Creacin de procesos

Un proceso puede crear varios procesos nuevos mientras se ejecuta. El proceso creador se denomina
proceso padre y los nuevos procesos son los hijos, adems esta idea puede dar lugar a un rbol de
procesos.

Figura 2.5: rbol de procesos de un sistema Solaris

La mayora de los sistemas operativos (incluyendo UNIX y la familia Windows) identican los

Gutierrez Gonzalo E.
2 PROCESOS 14

procesos mediante un identicador de procesos unvoco o pid. Cuando un proceso crea un proceso
puede obtener sus recursos directamente del sistema operativo o puede ser restringido a un subconjunto
de los recursos del proceso padre.
Adems de los diversos recursos fsicos y lgicos que un proceso obtiene en el momento de su
creacin, el proceso padre puede pasar datos de inicializacin o entrada al proceso hijo. Cuando un
proceso crea otro proceso nuevo, existen dos posibilidades en trminos de ejecucin:

1. El padre contina ejecutndose concurrentemente con su hijo.

2. El padre espera hasta que por lo menos uno o todos los hijos hayan terminado de ejecutarse.

Tambin existen dos posibilidades en funcin del espacio de direcciones del nuevo proceso:

1. El proceso hijo es un duplicado del proceso padre (usa el mismo programa y los mismos datos
del padre).

2. El proceso hijo carga un nuevo programa.

2.6.2. Terminacin de procesos

Un proceso termina cuando ejecuta su ltima instruccin y pide al sistema operativo que lo elimine
usando la llamada al sistema exit(). En este momento, el proceso puede devolver un valor de estado a
su proceso padre. El sistema operativo libera la asignacin de todos los recursos del proceso, incluyendo
las memorias fsicas y virtual, los archivos abiertos y los bferes de E/S.
La terminacin puede producirse tambin en otras circunstancias, por ejemplo un proceso puede
causar la terminacin de otro proceso a travs de una adecuada llamada al sistema. Normalmente,
dicha llamada al sistema slo puede ser invocada por el proceso padre del proceso que se va a terminar.
Un padre puede terminar la ejecucin de uno de sus hijos por diversas razones, como por ejemplo
la siguiente:

El proceso hijo ha excedido el uso de algunos recursos que se le ha asignado.

La tarea asignada al proceso hijo ya no es necesaria.

El padre abandona el sistema y el sistema operativo no permite que los procesos hijos continen
si su padre ha terminado (terminacin en cascada).

2.7. Comunicacin interprocesos


Los procesos que se ejecutan concurrentemente pueden ser procesos independientes o procesos
cooperativos.

Un procesos es independiente si no puede afectar o verse afectado por los restantes


procesos que se ejecutan en el sistema. Un proceso independiente es aquel que no comparte datos
con ningn otro proceso

Un proceso es cooperativo cuando puede afectar o verse afectado por los dems procesos
que se ejecutan en el sistema. Existen varias razones para la cooperacin de procesos

Compartir informacin.

Acelerar los clculos.

Modularidad.

Coveniencia.

La cooperacin entre procesos requiere mecanismos de comunicacin interprocesos que les permita
intercambiar datos e informacin. Existen dos modelos fundamentales de comunicacin interprocesos:

Gutierrez Gonzalo E.
2 PROCESOS 15

2.7.1. Sistemas de memoria compartida

En este modelo, los procesos que se estn comunicando establecen una regin de memoria que
se comparte. Dicha regin reside en el espacio de direcciones del proceso que crea el segmento de
memoria compartida. Permite el intercambio de informacin leyendo y escribiendo la regin compartida
directamente. La memoria compartida permite una velocidad mxima y una mejor comunicacin ya
que puede realizarse a velocidades de memoria cuando se hace en una misma computadora.

2.7.2. Sistemas de paso de mensajes

La comunicacin tiene lugar mediante el intercambio de mensajes entre los procesos cooperativos.
Son bastantes comunes en los distintos sistemas operativos y resulta til para intercambiar pequeas
cantidades de datos, ya que no existe la necesidad de evitar conictos.
El paso de mensajes proporciona un mecanismo que permite a los procesos comunicarse y sincronizar
sus acciones sin compartir el mismo espacio de direcciones, y es especialmente til en un entorno
distribuido. Una facilidad de paso de mensajes proporciona al menos dos operaciones: envo de mensajes
y recepcin de mensajes. Los mensajes enviados por un proceso pueden tener un tamao jo o variable.
Existen varios mtodos para implementar lgicamente un enlace y las operaciones de envo y re-
cepcin.

Comunicacin directa o indirecta: En el caso de la comunicacin directa, cada proceso que desea
establecer una comunicacin debe nombrar de forma explicita al receptor o transmisor de la
comunicacin. Un enlace de comunicacin tiene las siguientes propiedades:

Los enlaces se establecen de forma automtica entre cada par de procesos. Los procesos slo
tienen que conocer la identidad del otro.

Cada enlace se asocia exactamente con dos procesos.

Entre cada par de procesos existe exactamente un enlace.

La desventaja de la comunicacin directa es la limitada modularidad de las deniciones de pro-


cesos resultantes.

Con el modelo de comunicacin indirecta, los mensajes se envan y se reciben en buzones de


correo o puertos. En este esquema se tienen las siguientes propiedades:

Puede establecerse un enlace entre un par de procesos slo si ambos tienen un buzn de
correo compartido.

Un enlace puede asociarse con ms de dos procesos.

Entre cada par de procesos en comunicacin, puede haber una serie de enlaces diferentes,
correspondiendo cada enlace a un buzn de correo.

Un buzn de correo puede ser propiedad de un proceso o del sistema operativo.

Comunicacin asncrona o asncrona: El paso de mensajes puede ser con bloqueo o sin bloqueo,
mecanismos tambin conocidos como sncrono o asncrono.

Envi con bloqueo: El proceso que enva se bloquea hasta que el proceso receptor reciba el
mensaje enviado.

Envi sin bloqueo: El proceso transmisor enva el mensaje y continua operando.

Recepcin con bloqueo: El receptor se bloquea hasta que hay un mensaje y contina operan-
do.

Recepcin sin bloqueo: El receptor extrae un mensaje vlido o mensaje nulo.

Gutierrez Gonzalo E.
3 HEBRAS 16

Figura 2.6: Comunicacin Sncrona y Asncrona

Almacenamiento en bfer explcito o automtico: Sea la comunicacin directa o indirecta, los


mensajes intercambiados por los procesos que se estn comunicando residen en una cola temporal.

3. Hebras
Una hebra es una unidad bsica de utilizacin de CPU; comprende un ID de hebra, un contador
de programa, un conjunto de registros y una pila. Comparte con otras hebras que pertenecen al mismo
proceso la seccin de cdigo, la seccin de datos y otros recursos del sistema operativo, como los
archivos abiertos y las seales. Un proceso tradicional (o proceso pesado) tiene una sola hebra de
control mientras que un proceso con mltiples hebras puede realizar varias tareas a la vez.

Figura 3.1: Modelo monohebra y multihebra

3.1. Ventajas
Las ventajas de la programacin multihebra pueden dividirse en cuatro categoras principales:

1. Capacidad de respuesta: el uso de mltiples hebras en una aplicacin interactiva permite que
un programa contine ejecutndose incluso aunque parte de l est bloqueado o realizando una
operacin muy larga.

2. Comparticin de recursos: por omisin, las hebras comparten la memoria y los recursos del
proceso al que pertenecen.

Gutierrez Gonzalo E.
3 HEBRAS 17

3. Economa: dado que las hebras comparten recursos del proceso al que pertenecen, es ms econmi-
co crear y realizar cambios de contextos entre una y otras hebras.

4. Utilizacin sobre arquitecturas multiprocesador: pueden verse incrementadas signicativamente


en una arquitectura multiprocesador, donde las hebras pueden ejecutarse en paralelo en los
diferentes procesadores.

3.2. Modelos multihebras.


Una hebra pudo haber sido creada por parte de un proceso de usuario o bien por parte del kernel del
sistema operativo. En el nivel usuario cada hebra genera un proceso y si una hebra se bloquea puede
bloquear todo el proceso de usuario. Las hebras del nivel kernel son creadas mediante llamadas al
sistema, puede resentir el rendimiento y en caso que una hebra se bloquee, no necesariamente bloquea
todo el proceso.
Desde el punto de vista prctico, el soporte para hebras puede proporcionarse en el nivel usuario
(hebras del usuario) o por parte del kernel (hebras del kernel). El soporte para las hebras de usuario
se proporciona por encima del kernel y las hebras se gestionan sin soporte del mismo, mientras que
el sistema operativo soporta y gestiona directamente las hebras del kernel. Casi todos los sistemas
operativos actuales, incluyendo Windows XP, Linux, MAC OSX, Solaris y Tru64 Unix soportan las
hebras del kernel. Adems, debe existir una relacin entre las hebras del usuario y las del kernel, se
tienen tres formas de establecer una relacin.

1. Modelo muchos a uno: asigna mltiples hebras del nivel de usuario a una hebra del kernel. Si
una hebra se bloquea, se bloquea todo el proceso. No permite ejecucin en paralelo.

2. Modelo uno a uno: asigna cada hebra del usuario a una hebra del kernel. Permite ms concurrencia
(windows y linux).

3. Modelo muchos a muchos: asigna mltiples hebras de usuario sobre un nmero menor o igual
de hebras del kernel. El nmero de hebras del kernel puede ser especco de una determinada
aplicacin o determinada mquina.

Figura 3.2: Diversos modelos multihebras

Gutierrez Gonzalo E.
4 CICLOS DE RFAGAS DE CPU Y DE E/S 18

Planificacin de la CPU
Los mecanismos de planicacin de la CPU son la base de los sistemas operativos multiprogramados.
Mediante la conmutacin de la CPU entre distintos procesos, el sistema operativo puede hacer que la
computadora sea ms productiva.
En un sistema con un nico procesador, slo puede ejecutarse un proceso a la vez, cualquier otro
proceso debe esperar hasta que la CPU quede libre y pueda volver a planicarse. El objetivo de la
programacin es tener continuamente varios procesos en ejecucin, con el n de maximizar el uso de
la CPU.

4. Ciclos de rfagas de CPU y de E/S


De manera informal, una rfaga de CPU es el instante transcurrido de tiempo en que el
proceso ocup la CPU (antes de realizar una operacin de E/S) mientras que una rfaga de E/S
es el instante de tiempo en que el proceso espera debido a una operacin de E/S.
La ejecucin de un proceso consta de un ciclo de ejecucin en la CPU, seguido de una espera de
E/S; los procesos alternan entre estos dos estados. La ejecucin del proceso comienza con una rfaga
de CPU, esta seguida de una rfaga de E/S, luego una rfaga de CPU y as. Siempre un proceso debe
terminar con una rfaga de CPU.




largas
P rocesos limitados por CP U (Carga de CP U )
CP U (Instrucciones)



Raf agas cortas P rocesos limitados por E/S (Carga de E/S)







E/S

La duracin de las rfagas de CPU, aunque varan enormemente de un proceso a otro y de una
computadora a otra, tienden a presentar una curva de frecuencia similar del tipo exponencial, con un
gran nmero de rfagas de CPU cortas y un nmero menor de rfagas de CPU largas.

Figura 4.1: Histograma de la duracin de la rfaga

Normalmente, en un programa limitado por E/S, las rfagas de E/S son ms largas en
duracin que las rfagas de CPU. Esta distribucin puede ser importante en la seleccin de un algoritmo
apropiado para la planicacin de la CPU.

4.1. Planicador de la CPU


Cuando la CPU queda inactiva, el sistema operativo debe seleccionar uno de los procesos que se
encuentran en la cola de procesos preparados para la ejecucin. El planificador a corto plazo

Gutierrez Gonzalo E.
4 CICLOS DE RFAGAS DE CPU Y DE E/S 19

(o planificador de la CPU) lleva a cabo esa seleccin del proceso. Este planicador elige uno
de los procesos que estn en memoria preparados para ejecutarse y asigna la CPU a dicho proceso .
2

Una cola de procesos preparados puede implementarse como una cola FIFO, una cola prioritaria,
una rbol o simplemente una lista enlazada no ordenada, dependiendo del algoritmo de planicacin
que se haya elegido. Los registros que se almacenan en las colas son, generalmente, bloques de control
de proceso (PCB).

4.1.1. Planicacin expropiativa y no expropiativa

Puede ser necesario tomar decisiones sobre la planicacin de la CPU en las siguientes cuatro
circunstancias:

1. Cuando un proceso cambia del estado de ejecucin al estado de espera.

2. Cuando un proceso cambia del estado de ejecucin al estado preparado (producto de una inter-
rupcin).

3. Cuando un proceso cambia del estado de espera al estado preparado (al completarse una operacin
de E/S)

4. Cuando termina.

En las situaciones 1 y 4 la nica opcin es seleccionarse un nuevo proceso para su ejecucin. Sin
embargo, en las situaciones 2 y 3 existe la opcin de planicar un nuevo proceso o no. Cuando las
decisiones de planicacin slo tienen lugar en las circunstancias 1 y 4 decimos que el esquema de
no expropiativo;
planicacin es en caso contrario, decimos que el esquema de planicacin es
expropiativo.
En la planicacin no expropiativa, una vez que se le ha asignado la CPU a un proceso, el proceso
se mantiene en la CPU hasta que ste lo libera ya sea porque termina o conmuta al estado de espera.
Sin embargo en la planicacin expropiativa, el sistema operativo puede sacar el proceso actualmente
en ejecucin. El concepto de expropiatividad es visto en funcin del Sistema Operativo, desde el punto
de vista del proceso nos referimos al concepto de Apropiatividad.



Expropiativa No apropiativo





P olticas de planif icacion V ista S.O V ista P roceso






No expropiativa Apripiativo


A largo plazo nuevo listo

P lanif icacion

A corto plazo listo ejecucion

4.1.2. Despachador.

El despachador es el mdulo que proporciona el control de la CPU a los procesos seleccionados por
el planicador a corto plazo. Esta funcin implica lo siguiente.

Cambio de contexto.

Cambio a modo usuario.


2
En sntesis, la planicacin de CPU es bsicamente como asignar la CPU a un determinado proceso

Gutierrez Gonzalo E.
5 CRITERIOS DE PLANIFICACIN 20

Salto a la posicin correcta dentro del programa de usuario para reiniciar dicho programa.

El despachador debe ser lo ms rpido posible, ya que se invoca en cada conmutacin de proceso. El
tiempo que tarda el despachador en detener un proceso e iniciar la ejecucin de otro se conoce como
latencia de despacho.

5. Criterios de Planicacin
Los diferentes algoritmo de planicacin de la CPU tiene distintas propiedades y la eleccin de
un algoritmo en particular puede favorecer una clase de procesos sobre otro. Se han sugerido muchos
criterios para comparar los distintos algoritmos de planicacin:

1. Utilizacin de la CPU: porcentaje del tiempo en que permanece en uso la CPU.

2. Tasa de procesamiento: Una medida de la cantidad de trabajo es el nmero de procesos que se


completan por unidad de tiempo, y dicha medida se denomina tasa de procesamiento o rendimien-
to.

3. Tiempo de Ejecucin: El intervalo que va desde el instante en que se ordena la ejecucin de un


proceso hasta el instante que se completa es el tiempo de ejecucin. Es la suma de los periodos
que el proceso invierte en esperar para cargarse en memoria, esperar en la cola de procesos
preparados, ejecutarse en la CPU y realizar las operaciones de E/S.

4. Tiempo de espera: El tiempo de espera es la suma de los periodos invertidos en esperar en la


cola de procesos preparados sin ser ejecutado.

5. Tiempo de respuesta: En un sistema interactivo, el tiempo de ejecucin puede no ser el mejor


criterio. Otra medida es el tiempo transcurrido desde que se enva una solicitud hasta que se
produce la primera respuesta. Esta medida, denominada tiempo de respuesta, es el tiempo que
el proceso tarda en empezar a responder.

El objetivo consiste en maximizar la utilizacin de la CPU y la tasa de procesamiento, y minimizar el


tiempo de ejecucin, el tiempo de espera y el tiempo de respuesta. En la mayora de los casos, lo que
se hace es optimizar algn tipo de valor promedio.

5.1. Algoritmos de Planicacin


La cuestin de la planicacin de la CPU aborda el problema de decidir a qu proceso de la cola
de preparados debe asignarle la CPU.

5.1.1. Planicacin FCFS

El algoritmo ms simple de planicacin de la CPU es, con mucho, el algoritmo FCFS (First come
- rst served). Con este esquema, se asigna primero la CPU al proceso que primero la solicite y se
gestiona fcilmente con una cola FIFO. Sin embargo el tiempo medio de espera con el FCFS es a
menudo bastante largo, no es generalmente el mnimo y puede variar signicativamente si la duracin
de las rfagas de CPU de los procesos es muy variable.
El algoritmo de planicacin FCFS es no expropiativo. Una vez que la CPU ha sido asignada a
un proceso, dicho proceso conserva la CPU hasta que la libera, bien porque termina su ejecucin o
porque realiza una solicitud de E/S; dicho algoritmo resulta problemtico en los sistemas de tiempo
compartido:

Puede llevar a altos tiempos de retornos.

Los procesos con mucho uso de CPU monopolizan el procesador.

Gutierrez Gonzalo E.
5 CRITERIOS DE PLANIFICACIN 21

5.1.2. Planicacin de primero el trabajo ms corto o SJF (SP N )


Es el algoritmo de planicacin con seleccin de trabajo ms corto (SJF, shortest-job-rst). Este
algoritmo asocia con cada proceso la duracin de la siguiente rfaga de CPU del proceso. Cuando la
CPU est disponible, es asignada al proceso que tiene la siguiente rfaga de CPU ms corta. Si las
siguientes rfagas de CPU de dos procesos son iguales, se usa la planicacin FCFS para romper el
empate.
El algoritmo de planicacin SJF es probablemente ptimo, en el sentido de que proporciona el
tiempo medio de espera mnimo para un conjunto de procesos dados y permitiendo favorecer a los
programas con menor carga de CPU . La dicultad real del algoritmo SJF es conocer la duracin de
la siguiente solicitud de CPU.
Debido a esta desventaja, la planicacin SJF se usa frecuentemente como mecanismo de plani-
cacin a largo plazo. No se puede implementar en el nivel de la planicacin a corto plazo, ya que no
hay forma de conocer la duracin de la siguiente rfaga de CPU. S podemos predecir su valor, por el
procedimiento de conar en que la siguiente rfaga de CPU ser similar en duracin a las anteriores.
De este modo, calculando una aproximacin de la duracin de la siguiente rfaga de CPU, podemos
tomar el proceso que tenga la rfaga de CPU predicha ms corta.
Generalmente, la siguiente rfaga de CPU se predice como la medida exponencial de las duraciones
medidas de las anteriores rfagas de CPU. Sea tn la duracin de la n-sima rfaga de CPU y sea n+1
el valor predicho para la siguiente rfaga de CPU. Entonces, para [0, 1] se dene

n+1 = tn + (1 ) n
cuya frmula dene un promedio exponencial. El valor de tn contiene la informacin ms reciente; n
almacena el historial pasado. El parmetro controla el peso relativo del historial reciente y pasado
de nuestra prediccin.
El algoritmo SJF puede ser expropiativo o no expropiativo. Un SJF expropiativo detendr el proceso
actualmente en ejecucin, mientras que un SJF no expropiativo permitir que dicho proceso termine
su rfaga de CPU. La planicacin SJF expropiativa a veces se denomina planicacin con seleccin
del proceso con tiempo restante ms corto.
Muchas veces se emplea SJF expropiativo por el hecho que en un determinado instante de tiempo
pudo haber llegado un proceso de menor trabajo del que se est ejecutando actualmente y al cual se
podra asignar la CPU, esto penaliza a los procesos largos. SPN es una variante del SJF expropiativo
cuando se utiliza el concepto de quantum, en el que se asigna una unidad de tiempo para ocupar la
CPU a un proceso, si la rfaga de CPU de un determinado proceso es mayor que el quantum entonces
se lo expropia de la CPU y se planica nuevamente la cola de listos. Debido a que puede producir
inanicin es necesario aplicar tcnicas de envejecimiento.

5.1.3. Planicacin por prioridades.

A cada proceso se le asocia una prioridad y la CPU se asigna al proceso que tenga la prioridad
ms alta. Los procesos con la misma prioridad se planican en orden FCFS. Un algoritmo SJF es
simplemente un algoritmo por prioridades donde la prioridad es el inverso de la siguiente rfaga
de CPU (predicha). Cuanto ms larga sea la rfaga de CPU, menor ser la prioridad y viceversa. El
criterio es favorecer a determinados procesos sobre otros.
La planicacin por prioridades puede ser expropiativa o no expropiativa. Un algoritmo de plani-
cacin por prioridades expropiativo, expulsar de la CPU al proceso actual si la prioridad del proceso
que acaba de llegar es mayor. Un problema importante de los algoritmos de planicacin por priori-
dades es el bloqueo indenido o muerte por inanicin. Un proceso que est preparado para ejecutarse
pero est esperando acceder a la CPU puede considerarse bloqueado; un algoritmo de planicacin por
prioridades puede dejar algunos procesos de baja prioridad esperando indenidamente.

Gutierrez Gonzalo E.
5 CRITERIOS DE PLANIFICACIN 22

Una solucin al problema del bloqueo indenido de los procesos de baja prioridad consiste en
aplicar mecanismos de envejecimiento. Esta tcnica consiste en aumentar gradualmente la prioridad
de los procesos que estn esperando en el sistema durante mucho tiempo.

5.1.4. Planicacin por turnos.

El algoritmo de planicacin por turnos (RR, round robin) est diseado especialmente para los
sistemas de tiempo compartido. Es similar a la planicacin FCFS, pero se aade la tcnica de desalojo
para conmutar entre procesos. En este tipo de sistema se dene una pequea unidad de tiempo,
denominada cuanto de tiempo o quantum. Generalmente, el quantum se encuentra en el
rango comprendido entre 10 y 100 milisegundos. La cola de procesos preparados se trata como una
cola circular.
Si la rfaga de CPU del proceso actualmente en ejecucin tiene una duracin mayor que 1 quantum,
se producir un n de cuenta del temporizador y ste enviar una interrupcin al sistema operativo,
produciendo un cambio de contexto y el proceso se colocar al nal de la cola de procesos preparados.
El tiempo medio de espera en los sistemas por turnos es, con frecuencia, largo. En el algoritmo de
planicacin por turnos, a ningn proceso se le asigna la CPU por ms de un quantum en cada turno;
el algoritmo de planicacin por turnos incluye, por tanto, un mecanismo de desalojo.
El rendimiento del algoritmo de planicacin por turnos depende enormemente del tamao del
quantum; si el quantum es extremadamente largo, la planicacin por turnos es igual al FCFS, si es
muy pequeo el mtodo por turnos se denomina comparacin del procesador.

5.1.5. Planicacin mediante colas multinivel

Otra clase de algoritmos de planicacin es la que se ha desarrollado para aquellas situaciones en


las que los procesos pueden clasicarse fcilmente en grupos diferentes. Por ejemplo, una planicacin
habitual consiste en diferenciar entre procesos de primer plano (interactivos) y procesos de segundo
plano (por lotes). Estos dos tipos de procesos tienen requisitos diferentes de tiempo de respuestas, y
por lo tanto pueden tener distintas necesidades de planicacin.
Un algoritmo de planicacin mediante colas multinivel divide la cola de procesos preparados en
varias colas distintas. Los procesos se asignan permanentemente a una cola, generalmente en funcin
de alguna propiedad del proceso. Cada cola tiene su propio algoritmo de planicacin.

Gutierrez Gonzalo E.
7 FUNDAMENTOS 23

Sincronizacin de procesos
6. Introduccin
Recordemos que un proceso cooperativo es aquel donde puede afectar o verse afectado por otros pro-
cesos que estn ejecutndose en el sistema. Los procesos cooperativos pueden compartir directamente
un espacio de direcciones lgico o compartir los datos slo a travs de los archivos o mensajes.
Cuando dos o mas procesos corren en ambientes multiprogramados o multiprocesador, deben ser
independientes entre si para poder ejecutarse simultneamente. En cambio, cuando son cooperativos,
deben tener cdigo especial que permita que se colaboren mutuamente para su normal funcionamiento.
Entenderemos Concurrencia a que varios procesos existen al mismo tiempo, particularmente la
ejecucin simultanea de procesos (denominado paralelismo). La concurrencia es el punto clave de:

La programacin: gestin de varios procesos dentro de un sistema mono procesador.

El multiproceso: gestin de varios procesos dentro de un sistema multiprocesador.

Proceso distribuido: gestin de varios procesos en sistemas de computadoras mltiples y remotas.

Comprende

comunicacin entre procesos,

comparacin y competencia por los recursos,

sincronizacin de la ejecucin de varios procesos,

asignacin del tiempo de CPU a los procesos.

Puede presentarse en:

varias aplicaciones : tiempo del CPU compartido dinmicamente entre varias tareas o aplicaciones
activas.

Aplicaciones estructuradas: algunas aplicaciones pueden implementarse como un conjunto de


procesos concurrentes.

Dicultades:

riesgo de compartir variables globales,

asignacin ptima de los recursos sin producir bloqueos,

localizar errores de programacin.

7. Fundamentos
En la seccin 2.7 hemos visto que un sistema puede estar formado por procesos o hebras secuenciales
cooperativas, los cuales se ejecutan de manera asncrona y posiblemente compartiendo datos. Una
situacin donde varios procesos que se ejecutan simultneamente de manera cooperativa, que manipulan
y acceden a los mismo datos concurrentemente y el resultado de la ejecucin depende del orden concreto
en que se produzcan los accesos, se conoce como condicin de carrera. Para protegerse frente a este
tipo de condiciones, necesitamos sincronizar de alguna manera los procesos, de modo que slo un
proceso a la vez manipule y acceda a los mismos datos; tales datos son denominados recursos crticos .
3

3
Recursos Crticos: recursos por los que compiten los procesos concurrentes

Gutierrez Gonzalo E.
7 FUNDAMENTOS 24

7.1. El problema de la Seccin Crtica.


Las secciones crticas son las porciones de cdigo en las que el programa accede a los recursos
compartidos y puede modicar variables comunes. Una caracterstica importante que debe tener un
sistema es que dos procesos no puedan ejecutar su seccin crtica al mismo tiempo. El problema de
la seccin crtica consiste en disear un protocolo que los procesos puedan usar para cooperar de esta
forma. Cada proceso debe solicitar permiso para entrar en su seccin crtica; la seccin de cdigo que
implementa esta solicitud es la seccin de entrada (o pre-protocolo), seguido de la seccin crtica y
nalmente de la seccin de salida (pos-protocolo).

Figura 7.1: Regin Crtica

Cualquier solucin al problema de la seccin crtica deber satisfacer los tres requisitos siguientes:

1. Exclusin mutua: Si el proceso Pi est ejecutndose en su seccin crtica, los dems procesos no
pueden estar ejecutando su seccin crtica.

2. Progreso: Si ningn proceso est ejecutando su seccin crtica, debe seleccionarse sin demora
algn proceso que no este ejecutando su seccin de salida o pos-protocolo.

3. Espera limitada: un proceso no debe permanecer, ni esperar entrar en su regin crtica por tiempo
indenido o innito.

P roceso Pi {
P rocesamiento
...
P re protocolo
Seccion Crtica
P ost protocolo
...
P rocesamiento
}

Figura 7.2: Estructura General de un proceso Pi

Sin embargo, muchas veces se presentan con frecuencia los siguientes problemas:

No se cumple la condicin de exclusin mutua.

Deadlock (Abrazo mortal): Donde dos o ms procesos quedan bloqueados esperando un recurso
ocupado por otro.
Por ejemplo, supongase que un proceso P1 ocupa el recurso A y que un proceso P2 ocupa un
recurso B. P1 intenta ocupar el recurso B, como ya est ocupado se suspende esperando que
se libere. Del mismo modo, P2 intenta ocupar el recurso A, como ya est ocupado se suspende
esperando que se libere. En este punto, P1 queda esperando que P2 libere el recurso B y P2

Gutierrez Gonzalo E.
8 PROGRAMACIN CONCURRENTE 25

queda esperando que P1 libere el recurso A; ambos nunca terminarn su ejecucin debido a que
se produjo un deadlock.
Esto tambin se denomina interbloqueo de procesos, cuya denicin formal es la siguiente
"Decimos que un conjunto de procesos est en un estado de interbloqueo cuan-
do todos los procesos del conjunto estn esperando un suceso que slo puede
producirse como consecuencia de las acciones de otro procesos del conjunto.
Los sucesos que ms nos interesan aqu son los de adquisicin y liberacin de
recursos".
Lockout: Uno de los procesos se adelanta en relacin del otro. Siempre existe un proceso que
avanza ms y otro que est innitamente atrasado.
Por Ejemplo, supongamos que el proceso P1 tiene 500 lineas en su zona de procesamiento y que
P2 slo tiene 50 lineas
Proceso P1 Proceso P2
Repeat Repeat
W hile turno <> 0 Begin W hile turno <> 1 Begin
(N ada) (N ada)
End; End;
Zona Critica 1 Zona Critica 2
T urno = 1; T urno = 0;
Zona P rocesamiento 1 Zona P rocesamiento 2
F orever F orever

Entonces P2 tiende a adelantarse en comparacin con P1 . Se usan dos mtodos generales para gestionar
las secciones crticas en los sistemas operativos: (1) los kernels apropiativos y (2) los kernes no
apropiativos . Un kernel apropiativo permite que un proceso sea desalojado mientras se est ejecutando
en modo kernel. Un kernel no apropiativo no permite que un proceso que se est ejecutando en modo
kernel sea desalojado; el proceso en modo kernel se ejecutar hasta que salga de dicho modo, hasta
que se bloquee o hasta que ceda voluntariamente el control de la CPU. Un kernel apropiativo es ms
adecuado para la programacin en tiempo real, ya que permite a un proceso en tiempo real desalojar
a un proceso que se est ejecutando actualmente en el kernel.

8. Programacin Concurrente
Un programa concurrente es aquel con multiples ujos de control, que generalmente cooperan entre
s, donde un ujo de control o thread es una secuencia de instrucciones de programa, en ocasiones
denominadas tareas. Aveces dos o mas ujos de control requieren un orden particular para sus opera-
ciones.
Para ejecutar un programa concurrente se necesita un planicador que gestione cuando se ejecuta
cada ujo de control y que recursos del sistema puede usar. En resumen, las caractersticas que ofrece
la programacin concurrente son:

Avance de una tarea con mltiples puntos de ejecucin.

Cada punto de ejecucin es una hebra (o tarea).

El trabajo de cada hebra se ve simultaneo desde el programa

Son partes del mismo proceso y hay puntos de encuentro

Sincronizacin.

Gutierrez Gonzalo E.
8 PROGRAMACIN CONCURRENTE 26

Comunicacin.

La gestin de la concurrencia se hace por software

S.O y libreras.

No consideramos hardware especializado.

8.1. Comunicacin y sincronizacin


Entenderemos por comunicacin entre procesos como la necesidad de transmisin de informacin
entre procesos concurrentes. Hemos visto en la seccin 2.7 que existen dos tipos fundamentales de
comunicacin: memoria compartida y paso de mensajes.
La sincronizacin es la necesidad de que las ejecuciones de los procesos concurrentes se produzcan
segn una secuencia temporal, conocida y establecida entre los propios procesos.

Figura 8.1: Comunicacin y Sincronizacin

8.2. Tcnicas de Programacin concurrente


Exclusin mutua con espera ocupada
8.2.1. Variables de Cerraduras

Un primer intento de solucin al problema de la exclusin mutua es mediante la implementacin


de variables de cerraduras, tal como se muestra en el siguiente pseudocdigo.

Proceso P1 Proceso P2
Repeat Repeat
If p=0 then If p=0 then
p=1 p=1
crit1 crit2
p=0 p=0
End if End if
Proc1 Proc2
Forever Forever

Esta solucin es errnea; supongamos la ejecucin de P1 y evala p=0, antes de poner p=1 termina
su quantum, el producto nal es que ambos procesos P1 y P2 ingresan a su regin crtica.

Gutierrez Gonzalo E.
8 PROGRAMACIN CONCURRENTE 27

8.2.2. Alternancia estricta con espera activa

Una primera solucin al problema de la exclusin mutua es implementando un bucle de control


denominado alternancia estricta.

Proceso P1 Proceso P2
Repeat Repeat
W hile turno <> 0 Begin W hile turno <> 1 Begin
(N ada) (N ada)
End; End;
Zona Critica 1 Zona Critica 2
T urno = 1; T urno = 0;
Zona P rocesamiento 1 Zona P rocesamiento 2
F orever F orever

Sin embargo, hemos visto que este modelo provocaba lockout cuando la zona de procesamiento de
P1 es mucha ms larga que la zona de procesamiento de P2 .

8.2.3. Algoritmo de Dekker:

Dijkstra present un algoritmo de exclusin mutua para dos procesos diseado por el matemtico
holands Dekker. Segn Dijkstra, la solucin se desarrolla por etapas. Este mtodo tiene la ventaja
de ilustrar la mayora de los errores habituales que se producen en la construccin de programas
concurrentes.

Primer intento.

El protocolo es el siguiente. Un proceso (P0 P1) que desea ejecutar su seccin crtica entra primero
en el igl y examina la pizarra. Si su nmero est escrito en ella, el proceso puede abandonar el igl y
continuar con su seccin critica. En otro caso, abandona el igl quedando obligado a esperar. De vez en
cuando, el proceso vuelve a entrar en el igl para mirar la pizarra. Esta operacin la repite hasta que
tiene permitido entrar en su seccin crtica. Este procedimiento se denomina espera activa, consume
tiempo del procesador (est activo) mientras espera su oportunidad. Despus de que un proceso haya
obtenido acceso a su seccin crtica y una vez que termine con ella, debe volver al igl y escribir el
nmero del otro proceso en la pizarra.
Esta solucin garantiza el cumplimiento de la exclusin mutua. Hay dos inconvenientes en esta
solucin. Primero, los procesos deben alternarse de forma estricta en el uso de sus secciones crticas;
as pues, el ritmo de ejecucin viene dictado por el ms lento. Un problema mucho ms seno es que si
un proceso falla (por ejemplo, se lo come un oso polar en su camino hacia el igl), el otro proceso se
bloquea permanentemente. Esto es cierto tanto si un proceso falla en su seccin critica como fuera de
ella.

Segundo intento.

Cada proceso tiene ahora su propio igl y puede mirar la pizarra del otro proceso, pero no modi-
carla. Cuando un proceso desea entrar en su seccin critica, comprueba peridicamente la pizarra del
otro hasta que encuentra escrito en ella  falso , lo que indica que el otro proceso no est en su seccin
crtica. Entonces, se dirige rpidamente hacia su propio igl, entra y escribe  cierto en la pizarra. El
proceso puede ahora continuar con su seccin crtica. Cuando deja su seccin crtica, cambia su pizarra
para que ponga  falso .

Gutierrez Gonzalo E.
8 PROGRAMACIN CONCURRENTE 28

Ahora, si uno de los procesos falla fuera de la seccin crtica, incluyendo el cdigo para dar valor
a las seales, el otro proceso no se queda bloqueado. Sin embargo, si un proceso falla en su seccin
crtica, el otro proceso est bloqueado permanentemente.

Tercer intento:

Una vez que P0 ha puesto seal a  cierto , P1 no puede entrar a su seccin critica hasta que P0
haya entrado y abandonado la suya. Puede ser que P1 est todava en su seccin crtica cuando P0
activa su seal. En ese caso, P0 se bloquear en la sentencia while hasta que P1 deje su seccin critica.
El mismo razonamiento es aplicable desde el punto de vista de P1. Esta solucin garantiza la exclusin
mutua, pero origina un problema ms. Si ambos procesos ponen sus seales a  cierto antes de que
ambos hayan ejecutado la sentencia while, cada uno pensar que el otro ha entrado en su seccin
critica. El resultado es un interbloqueo.

Cuarto intento

Deben activar su seal para indicar que desean entrar en la seccin crtica, pero deben estar listos
para desactivar la seal y ceder la preferencia al otro proceso. Esta solucin se aproxima a la correcta
pero todava es defectuosa. La exclusin mutua an est garantizada con un razonamiento similar al
seguido en el estudio del tercer intento.

Una solucin correcta

Hay que poder observar el estado de ambos procesos, que viene dado por la variable seal. Pero,
como demuestra el cuarto intento, esto no es suciente. De algn modo, se hace necesario imponer
algn orden en la actividad de los dos procesos para evitar el problema de  cortesa mutua que se
acaba de observar. La variable turno del primer intento puede usarse en esta labor; en este caso, la
variable indica qu proceso tiene prioridad para exigir la entrada a la seccin critica. Ahora hay un
igl  rbitro con una pizarra llamada  tumo . Cuando P0 quiere entrar en su seccin critica, pone su
seal a  cierto .

8.2.4. Algoritmo de Peterson.

La solucin de Peterson se restringe a dos procesos que van alternando la ejecucin de sus secciones
crticas y de sus secciones restantes. La solucin de Peterson requiere que los dos procesos compartan
dos elementos de datos:

int turno;

boolean Interesado[2];

La variable turno indica que proceso va a entrar en su regin crtica mientras que el vector Interesado
se usa para indicar si un proceso est preparado para entrar en su regin crtica. El cdigo de los
procesos con regin crtica tendr el siguiente formato:

P roceso i esimo{
EnterRegion(i);
Zona crtica i esima;
LeaveRegion(i);
P rocesamiento i esimo;
}
Y los procedimientos asociados son:

Gutierrez Gonzalo E.
9 SEMFOROS 29

Procedure EnterRegion(nro_proc:integer) begin


Interesado[nro_proc]=true
turno=nro
while (turno=nro) and Interesado[nro]=true
begin
(*Nada*)
end;
end.

Procedure LeaveRegion(nro_proc:integer)
begin
interesado[nro_proc]=false
end

Mediante el algoritmo de Peterson se elimina lockout, pero los procesos que esperan por entrar en
su regin crtica siguen ocupando tiempo de CPU.

9. Semforos
Un semforo
4 S es una variable entera a la que, dejando aparte la inicializacin, slo se accede

mediante dos operaciones atmicas estndar: wait() y signal() (originalmente denominadas P y V). La
denicin de wait() es la siguiente

wait(S){
while S<=0
; (*nada*)
S;
}

La denicin de signal() es:

signal(S){
S++;
}

Todas las modicaciones del valor entero del semforo en las operaciones wait() y signal() deben
ejecutarse de forma indivisible. Es decir, cuando un proceso modica el valor del semforo, ningn otro
proceso puede modicar simultneamente el valor de dicho semforo.

9.1. Utilizacin
Los sistemas operativos diferencian a menudo entre semforos contadores y binarios. Un semforo
contador puede variar en un dominio no restringido y un semforo binario slo toma los valores 0 y 1.
Los n procesos comparten un semforo binario inicializado con el valor 1; cada proceso Pi se organiza
del siguiente modo:

4
Un semforo tambin es un tipo especial de variable soportada por el hardware como tambin por el S.O en donde
solamente es posible acceder a esta variable a travs de las operaciones P y V

Gutierrez Gonzalo E.
9 SEMFOROS 30

do{
wait(semaphore);
// seccin crtica
signal(semaphore);
// seccin restante
}while (true);

9.2. Implementacin
La principal desventaja de la denicin de semforos dada anteriormente es que requiere espera
activa. Mientras un proceso est en su regin crtica, cualquier otro proceso que intente entrar en
su seccin crtica debe ejecutar continuamente un bucle en el cdigo de entrada. La espera activa
desperdicia ciclos de CPU que algunos otros procesos podran usar de forma productiva, para salvar la
necesidad de la espera activa podemos modicar la denicin de las operaciones de semforo. Cuando
un proceso ejecuta la operacin wait() y determina que el valor del semforo no es positivo tiene que
esperar bloquendose a si mismo; la operacin de bloqueo coloca al proceso en una cola de espera
asociada al semforo y el estado del proceso pasa al estado de espera. El control se transere al
planicador del CPU y se elige inmediatamente otro proceso
Un proceso bloqueado esperando en un semforo debe reiniciarse cuando otro proceso ejecuta una
operacin signal() cambiando del estado de espera al estado de preparado .
5

Var S:semaphore
wait(S)
if (S>0) then S=S-1
else block(); (*suspender*)
end;

signal(S)
if (exist proc P suspend in S) then
wakeup(P); (*reanudar*)
else S=S+1;
end;

Figura 9.1: Modicacin de las operaciones wait() y signal()

La operacin block() suspende al proceso que la ha invocado. La operacin wakeup() reanuda la


ejecucin de un proceso bloqueado P. Estas dos operaciones las proporciona el S.O como llamadas al
sistema bsicas.
La lista de procesos en espera pueden implementarse fcilmente mediante un campo de enlace en
cada bloque de control de proceso (PCB). Cada semforo contiene un valor entero y un puntero a la
lista de bloques PCB.

5
Las operaciones wait y signal son indivisibles, esto es, que solamente un proceso a la vez puede ejecutarlas.

Gutierrez Gonzalo E.
10 PROBLEMAS CLSICOS DE SINCRONIZACIN 31

Algoritmo 1 Solucin al problema de la exclusin mutua utilizando semforos


Procedure P1 begin Procedure P2 begin (*Principal*)
Repeat Repeat Begin
wait(S); wait(S); S=1;
crit1; crit2; Cobegin
signal(S); signal(S); P1; P2;
procesamiento1; procesamiento2; Coend;
Forever Forever End;

10. Problemas Clsicos de sincronizacin


10.1. Problema de bufer limitado.
Dos procesos se ejecutan simultneamente, uno el productor produce elementos y los almacena en
un buer de N elementos (almacen), el otro el consumidor saca elementos del buer para consumirlos.
Puede aparecer problemas cuando:

El productor y el consumidor acceden simultneamente al buer.

El productor desea almacenar un elemento del buer y este est lleno

El consumidor desea sacar un elemento del buer y este esta vaco.

El siguiente cdigo implementado en Pascal-S permite la solucin al problema del productor-consumidor


con exclusin mutua implementando semforos.

Program productor_consumidor;
Const N=100;
type
Buffer = Array[0..N] of TipoItem;
var
Candado, BinesVacios, BinesOcupados: semaphore;

Procedure productor;
var item:tipoItem;
begin
repeat
producir_item(item);
wait(BinesVacios);
wait(candado);
poner_item(item);
signal(candado);
signal(BinesOcupados);
forever;
end;

procedure consumidor;
var item:tipoItem;
begin
repeat
wait(BinesOcupados);

Gutierrez Gonzalo E.
10 PROBLEMAS CLSICOS DE SINCRONIZACIN 32

wait(candado);
sacar_item(item);
signal(candado);
signal(BinesVacios);
forever;
end;

(*programa principal*)
begin
candado:=1;
BinesVacios:=N;
BinesOcupados:=0;
cobegin
Productor; Consumidor;
coend;
end.

Los semforos BinesVacios y BinesOcupados cuentan el nmero de lugares vacos y llenos en el


Buer. El semforo BinesVacios se inicializa con el valor n y BinesOcupados con 0.

10.2. Lectores - Escritores


Permite modelar el acceso concurrente a una base de datos, a la cual pueden ingresar N lectores
simultneamente o solamente un escritor. Los procesos escritores tienen acceso exclusivo a la base de
datos compartida

Program Lectores-Escritores;
var Candado,llave_BD:semaphore;
cont:integer;

procedure lector;
begin
repeat
wait(candado);
lect:=lect+1;
if (lect=1) then wait(llave_bd);
signal(candado);
leer_bd;
wait(candado);
lect:=lect-1;
if (lect=1) then signal(llave_bd);
signal(candado);
(*cdigo para utilizar los datos leidos*)
forever;
end;

procedure escritor;
begin
repeat
(*cdigo para preparar los datos a escribir*)
wait(llave_db);

Gutierrez Gonzalo E.
11 MONITORES 33

escribir_bd;
signal(llave_bd);
forever;
end;

begin
cont:=0;
candado:=1;
llave_bd:=1;
cobegin
lector;lector;escritor;
coend;
end.

11. Monitores
Aunque los semforos proporcionan un mecanismo adecuado y efectivo para el proceso de sin-
cronizacin, un uso incorrecto de los mismo puede dar lugar a errores de temporizacin que son dif-
ciles de detectar, dado que estos errores slo ocurren si tienen lugar algunas secuencias de ejecucin
concretas y estas secuencias no siempre se producen.
Para abordar tales errores, se han desarrollado estructuras de alto nivel, entre ellas, una estruc-
tura fundamental de sincronizacin de alto nivel denominada monitor. Los monitores son tcnicas de
sincronizacin de alto nivel que permite centralizar en un slo objeto todas las regiones crticas que
presenten condiciones de competencia.

Figura 11.1: Vista esquemtica de los monitores

El monitor mantiene una cola de llamada a las regiones crticas y garantiza que solamente un proceso
a la vez acceda a su regin crtica (exclusin mutua). Se debe utilizar un lenguaje de programacin de
alto nivel que soporte este tipo de estructura.
Un tipo de dato monitor tiene un conjunto de operaciones denidas por el programador que gozan
de las caractersticas de exclusin mutua dentro del monitor. El tipo monitor tambin contiene la
declaracin de una serie de variables cuyos valores denen el estado de una instancia de dicho punto,
junto con los cuerpos de los mtodos que operan sobre dicha variable y libera al programador de la
responsabilidad de la concurrencia.

Program UsoMonitor;
Monitor Nombre_Monitor
Const Cosntantes_internas;
.....
Var Variables_internas;

Gutierrez Gonzalo E.
11 MONITORES 34

.....
(*procedimientos internos*)

Procedure crit1;
begin
(*code*)
end;

Procedure cirt2;
begin
(*code*)
end;

Procedure Proc1;
begin
(*code*)
Nombre_Monitor.crit1; (*Exclusion mutua*)
end;

Procedure Proc2;
begin
(*code*)
Nombre_Monitor.crit2;
end;

(*inicializacion*)
begin
end;

A continuacin se muestra una solucin al problema de la exclusin mutua utilizando monitores:

Program Exclusion;
Monitor Prueba;
Procedure Crit1;
Begin
.......
End;

Procedure Crit2;
Begin
.......
End;
end;

Procedure P1;
Begin
Repeat
Prueba.Crit1;
Procesamiento1;
Forever

Gutierrez Gonzalo E.
11 MONITORES 35

End;

Procedure P2;
Begin
Repeat
Prueba.Crit2;
Procesamiento2;
Forever
End;

Begin
Prueba.init;
Cobegin
P1;P2;
Coend
End.

Los monitores son una forma sencilla de garantizar la exclusin mutua. Sin embargo para poder im-
plementarse en problemas ms reales, es necesario agregar a su denicin variables de condicin que
acepten las operaciones wait() y signal() para bloquear procesos en espera de un cierto recurso.

Monitores de Hoare

Cuando no se cumple cierta condicin booleana, el hilo que est en el monitor llama a wait() de
una variable de condicin.

El proceso se duerme hasta que otro proceso lo despierta con un signal() a la misma variable de
condicin.

Monitores de Lampson-Redell.

El proceso o hebra que envi la instruccin signal() puede continuar dentro de la ejecucin.

El proceso o hebra que se despierta pasa a la condicin de listo.

puede ocurrir que la condicin por la que un hilo despert haya cambiado.

Se debe comprobar nuevamente si da la condicin esperada.

Como ejemplo, planteamos desarrollar el problema del productor-consumidor con buer limitado me-
diante implementacin de monitores.

program productor_consumidor;
monitor m;
type
buffer= vector[10000] of integer;
var tamao,indice,item:integer;
lleno,vaco:condition;

procedure agregar(var item:integer) begin


if (indice=tamao) then wait(lleno);
buffer[indice]=item;
inc indice;

Gutierrez Gonzalo E.
12 BLOQUEOS. 36

if (indice=1) then signal(vaco);


end;

procedure sacar(var item:integer) begin


if (indice=0) then wait(vaco);
buffer[indice]=item;
dec indice;
item:=buffer[indice];
buffer[indice]:=0;
if (indice=(tamao-1)) then signal(lleno);
end;

procedure productor;
begin
repeat
producir_item(item)
m.agregar(item);
forever
end;

procedure consumidor;
var it:integer;
begin
repeat
m.sacar(it);
(*manopulo elemento sacado*)
forever
end;

begin
m.init;
cobegin
productor; consumidor;
coend;
end.

12. Bloqueos.
Un proceso dentro de un sistema multiprogramado se encuentra en un estado de interbloqueo (o
interbloqueado) si est esperando por un evento determinado que nunca ocurrir. Cuando los recursos
son compartidos entre usuarios, es posible que se produzcan interbloqueos en el momento que los
procesos de los usuarios nunca podrn llegar a su termino.
Se debe considerar la prevencin, evitacin, detencin y recuperacin de interbloqueos y la poster-
gacin indenida, donde esta ltima hace referencia cuando un proceso no se encuentra en estado de
interbloqueo pero espera por un evento que probablemente nunca ocurrir. En algunos casos:

El precio de liberar interbloqueos en un sistema es demasiado alto.

Permitir el interbloqueo podra resultar catastrco.

Los sistemas de computo tienen muchos recursos que pueden ser usados por un proceso a la vez, tales
como impresoras, unidades de cinta, espacio en la tabla de nodo-i, etc. Es por ello que los sistemas

Gutierrez Gonzalo E.
12 BLOQUEOS. 37

operativos tienen la capacidad de otorgar temporalmente el acceso a algunos recursos de manera


exclusiva.

12.1. Recursos
El sistema operativo es, sobre todo, un administrador de los recursos del sistema. Los recursos
pueden ser apropiativos tales como la CPU y la memoria o no apropiativos tales como las
unidades de cinta. La apropiatividad es extremadamente importante para el xito de los sistemas com-
putacionales multiprogramados. No es posible sacarle a un determinado proceso los recursos asignados
que son de carcter no apropiativo.
Algunos recursos pueden ser compartidos entre varios procesos o pueden estar dedicados a procesos
individuales. Cuando se consideran que algunos recursos son compartidos se debe establecer si son
utilizables por varios procesos a la vez o si es de a uno por vez, estos ltimos son los recursos que ms
a menudo estn implicados.

12.2. Condiciones para un bloqueo.


Las condiciones necesarias para el bloque son principalmente cuatro y en todas ellas el principal
autor es el proceso.

1. Los procesos reclaman control sobre determinados recursos solicitados (condicin de exclusin
mutua).

2. Los procesos mantiene los recursos que ya les han sido asignados mientras esperan por recursos
adicionales.

3. Los recursos no pueden ser extrados de los procesos que los tienen hasta su completa utilizacin.

4. Existe una cadena circular de procesos en donde cada uno mantiene uno o ms recursos que son
requeridos por el siguiente proceso de la cadena.

12.3. Modelacin de bloqueos.


La modelacin de bloqueos se puede representar mediante el uso de grafos dirigidos tales como se
muestra en la siguiente gura.

Figura 12.1: Modelacin de bloqueos

Los procesos aparecen como crculos y los recursos como cuadrados.

Un arco de un nodo recurso a un nodo proceso indica que el recurso fue solicitado con anterioridad,
otorgado y posedo en dicho momento por el proceso.

Un arco de un proceso a un recurso indica que el proceso est bloqueado, en espera de ese recurso
y un ciclo en la grca indica la existencia de un bloqueo relacionado con los procesos y recursos
en el ciclo.

Gutierrez Gonzalo E.
12 BLOQUEOS. 38

Las estrategias para enfrentar los bloqueos son: ignorar todo el problema, deteccin y recuperacin.
Evitarlos dinmicamente mediante una asignacin cuidadosa de los recursos o la prevencin mediante
la negacin estructural de alguna de las cuatros condiciones necesarias mencionadas anteriormente.

12.4. El algoritmo del avestruz o de Ostrich


El punto ms simple es pretender que no existe el problema. Esta estrategia puede generar distintas
reacciones. Matemticamente es inaceptable, considerndose que los bloqueos deben evitarse a toda
costa. Sin embargo, desde el punto de vista de la ingeniara del software podra considerarse cual es la
frecuencia esperada del problema, cuales son sus consecuencias esperadas y cuales son las frecuencias
esperadas de fallos de otro tipo, etc.
Algunos sistemas operativos soportan fuertemente bloqueos con tal potencia que ni siquiera se de-
tectan y se rompen automticamente. Los sistemas operativos que ignoran el problema de los bloqueos
asumen para ello la siguiente hiptesis:

La mayora de los usuarios preferiran un bloqueo ocasional, en vez de una regla
que restringiera a todos los usuarios en el uso de los distintos tipos de recursos
del sistema. 

El problema es que se debe pagar un cierto precio para encarar el problema del bloqueo.

En restricciones para los procesos.

En el uso de los recursos.

Es muy difcil encontrar tericamente soluciones prcticas de orden general aplicables a todos los
sistemas operativos. Un criterio de orden general utilizado por los sistemas operativos que no hacen
tratamiento especcos de bloqueos consiste en:

Intentar acceder al recurso compartido.

De no ser factible el acceso

Esperar un tiempo aleatorio.

Reinventar nuevamente.

12.5. Prevencin, deteccin y recuperacin de bloqueos


La prevencin de bloqueos tiene como inters central el condicionar un sistema para que se
elimine toda posibilidad que se produzcan bloqueos. Los mtodos pueden dar como resultado una
pobre utilizacin.
En la evitacin del bloqueo la meta es imponer condiciones menos estrictas que en la prevencin,
con el objetivo de lograr una mejor utilizacin de los recursos. No precondiciona al sistema para que
evite todas las posibilidades que se produzcan bloqueos permitiendo la aparicin de estos, pero siempre
que se produce una posibilidad se la esquiva.
La deteccin de bloqueos se utiliza en sistemas que permiten que estos ocurran, ya sea involun-
tariamente o no. La meta principal es determinar si ha ocurrido un bloqueo, y para ello:

Se debe detectar con precisin los procesos y recursos implicados en el bloqueo.

Se puede eliminar el bloqueo detectado.

La recuperacin de bloqueos se utiliza para despejar bloqueos de un sistema, de modo que:

Gutierrez Gonzalo E.
12 BLOQUEOS. 39

Contine operando sin ellos.

Terminen los procesos estancados.

Se liberen los recursos correspondiente a ellos.

Generalmente se logra extrayendo (cancelando) uno o varios procesos bloqueados, que se reinician luego
en forma normal.

Gutierrez Gonzalo E.
13 MEMORIA PRINCIPAL 40

Gestin de la memoria
13. Memoria Principal
13.1. Fundamentos
Para conseguir un incremento en las prestaciones del procesador, como velocidad de respuesta a
los usuarios de la computadora, debemos poder compartir la memoria. La memoria principal est
compuesta de una matriz de palabras o bytes, cada una con su propia direccin. La CPU extrae
instrucciones de la memoria de acuerdo con el contador de programa, las cuales pueden provocar
operaciones adicionales de carga o almacenamiento en direcciones de memoria especcas.

13.2. Hardware bsico


La memoria principal y los registros integrados dentro del propio procesador son las nicas reas
de almacenamiento donde la CPU puede acceder directamente. Cuando los datos no se encuentran en
memoria, deber llevarse hasta ella antes que la CPU pueda operar con ellos.
Este acceso a memoria ocupa muchos ciclos del procesador para poderse completar, en cuyo caso
el procesador necesitar detenerse; para resolver este inconveniente en ocasiones se utiliza un bufer de
memoria denominado cache.
Para garantizar el correcto funcionamiento del S.O de los posibles accesos por parte de los procesos
registro base almacena la direccin
del usuario, se dispone de un espacio de memoria separado, el
de memoria fsica legal ms pequea y el registro limite especica el tamao del rango. Mediante
este registro el procesador comprueba que cada direccin que genera el proceso no es mayor que el valor
almacenado en este registro. En caso de que lo sea, se generar una excepcin. Una vez comprobado que
la direccin no rebasa el lmite permitido, el procesador le sumar el valor de este registro, obtenindose
con ello la direccin de memoria fsica resultante.
Cualquier intento de acceder a memoria del S.O por parte de un programa que se est ejecutando
en modo usuario producir un error fatal o interrupcin.

13.3. Reasignacin de direcciones


Dependiendo del mecanismo de gestin de memoria que se utilice, el proceso puede desplazarse
entre disco y memoria durante su ejecucin. Los procesos del disco que estn esperando a ser cargados
en memoria para su ejecucin forman lo que se denomina cola de entrada. Las direcciones del
programa fuente son generalmente simblicas. Un compilador se encarga de reasignar estas direcciones
simblicas a direcciones reubicables. La reasignacin de las instrucciones y datos a direcciones de
memoria puede realizarse en cualquiera de los siguientes pasos:
Tiempo de compilacin: si sabemos en el momento inicial de la compilacin donde va
a residir el proceso en memoria, podemos generar cdigo absoluto. Si la ubicacin inicial cambiara,
entonces sera necesario recompilar ese cdigo.
Tiempo de carga: si en tiempo de compilacin no conocemos el lugar donde va a residir el
proceso en memoria, el procesador deber generar cdigo reubicable. Si cambia la direccin inicial, slo
es necesario volver a cargar el cdigo de usuario para incorporar el valor modicado.
Tiempo de ejecucin: si el proceso puede desplazarse durante su ejecucin de un segmento
de memoria a otro, entonces es necesario retardar la reasignacin hasta el instante de la ejecucin.

13.4. Espacio de direcciones lgico y fsico


Una direccin generada por la CPU se denomina direccin lgica y la direccin vista por la
unidad de memoria (que se carga en el registro de direcciones de la memoria) se denomina direccin

Gutierrez Gonzalo E.
14 ASIGNACIN CONTIGUA 41

fsica. La direccin lgica es una direccin virtual cuyo conjunto de todas ellas se denomina
espacio de direcciones lgicas. Del mismo modo, el conjunto de todas las direcciones fsicas se
denomina espacio de direcciones fsicas. La correspondencia entre direcciones lgicas y fsicas
durante la ejecucin se establece por la unidad de gestin de memoria MMU. Un esquema
simple de MMU es denominado registro de reubicacin, cuyo contenido suma a todas las direcciones
generadas por un proceso de usuario en el momento de enviarlas a memoria. El programa de usuario
nunca ve direcciones reales, slo maneja direcciones lgicas que despus son convertidas por el MMU
en direcciones fsicas (mapeo).

13.5. Carga dinmica


Para obtener una mejor utilizacin del espacio de memoria, se puede utilizar ste mecanismo. Con
l, una rutina no se carga hasta que se la invoca; todas las rutinas se mantienen en disco en un formato
de carga reubicable. Segn este mtodo, el programa principal se carga en memoria y se ejecuta.
Cuando una rutina necesita llamar a otra, la que realiza la invocacin comprueba primero si la otra
ya ha sido cargada. La ventaja es que una rutina no utilizada no se cargar nunca en memoria.

13.6. Intercambio
Un proceso debe estar en memoria para ser ejecutado. Sin embargo, pueden ser
intercambiados temporalmente, sacndolo de la memoria y colocndolo en un almacn de respal-
do; volvindolo a llevar luego a memoria para continuar su ejecucin. Por ejemplo, en un entorno de
programacin con un algoritmo de planicacin de CPU basado en turnos y al momento en que termina
el quantum de un proceso.
El sistema mantiene una cola de procesos preparados que consiste en todos los procesos
cuyas imgenes de memoria se encuentran en el almacn de respaldo o memoria y estn listos para
ejecutarse. Cada vez que el planicador de la CPU decide ejecutar un proceso llama al despachador
que mira si el siguiente proceso de la cola est en memoria; de no ser as, y si no hay memoria libre,
el despachador intercambia el proceso deseado por otro que est actualmente en memoria, recarga los
registros y transere el control al proceso seleccionado. Al intercambiar el proceso, este debe quedar
inactivo. Generalmente, el espacio de intercambio se asigna como un rea de disco separada del sistema
de archivos, para que su uso sea lo ms rpido posible (propio de UNIX y Linux).

14. Asignacin contigua


La memoria est usualmente dividida en dos particiones: una para el Sistemas Operativos residente
y otra para los procesos de usuario. De acuerdo al esquema de asignacin de memoria contigua, cada
proceso est contenido en una nica seccin contigua de memoria.

14.1. Particionamiento jo


El esquema ms simple para gestionar la memoria disponible es repartindola en regiones con limites
jos. La memoria se divide en un conjunto de particiones de tamaos preestablecidos, denominado
histricamente MFT.
Una posibilidad consiste en hacer uso de particiones del mismo tamao. En este caso, cualquier
proceso cuyo tamao sea menor o igual que el tamao de la particin puede cargarse en cualquier
particin disponible; de este modo, el sistema operativo mantiene una tabla que indica cuales particiones
estn disponibles y cuales no. Sin embargo, existen dos dicultades con el uso de particiones del mismo
tamao:

1. Un programa podra ser demasiado grande para caber en una particin.

Gutierrez Gonzalo E.
14 ASIGNACIN CONTIGUA 42

2. La utilizacin de la memoria principal es ineciente. Cualquier programa sin importar lo pequeo


que sea, ocupa toda una particin entera.

Adems, dos consecuencias de este mecanismo son las siguientes:

1. El nmero de programas est limitado; esto quiere decir que el grado de programacin est jo
y limitado por el nmero de particiones.

2. Produce fragmentacin interna en cada particin. Debido que se toma como unidad
cualquier particin, los programa de tamao ms pequeo que la particin provocarn trozos de
particin desocupada y que no puede ser aprovechada por otros procesos.

Las particiones pueden ser iguales o distintas en cuanto a tamao. En el ltimo caso se aprovecha
mejor la memoria al poder almacenar un proceso en una particin que mejor se ajuste a su tamao.
Para este tipo de mecanismo, existen dos alternativas:

Una cola por cada particin. Un proceso se ubica en la cola que le corresponda acorde a su
tamao, tiene el inconveniente de poder dejar fuera un proceso habiendo memoria libre para
cargarlo.

Cola nica. Cuando un proceso encuentra ocupada la particin que le corresponde a su tamao,
cabe la posibilidad de asignarle una particin libre de tamao mayor, permitiendo incrementar
el grado de programacin a costa de introducir fragmentacin interna.

Figura 14.1: Particionamiento jo

14.2. Particionamiento dinmico


Con el Particionamiento dinmico, las particiones son de longitud y nmero variable. Cuando un
proceso se lleva a memoria, se le asigna tanta memoria como necesite, ni ms, ni menos. Sin embargo,
a medida que pasa el tiempo, la memoria se empieza a fragmentar de forma incremental y produciendo
a largo plazo huecos ms pequeos. En estos huecos es posible alojar procesos de menor tamao
y as sucesivamente, pero la fragmentacin es casi inevitable (degradacin). Este efecto se denomina
fragmentacin externa y aparece cuando hay espacio disponible que no son contiguos; el espacio
de almacenamiento est fragmentado en un gran nmero de agujeros pequeos. Una tcnica para
eliminar la fragmentacin externa es la compactacin, la necesidad de compactar implica reubicar

Gutierrez Gonzalo E.
15 PAGINACIN SIMPLE 43

dinmicamente el proceso y para ello el sistema operativo de vez en cuando desplaza los procesos en
memoria de forma que se encuentren contiguos y de este modo toda la memoria libre se encuentra en
un nico bloque. La desventaja de la compactacin es el hecho de consumo de tiempo y gasto de CPU.
Es por ello que, a la hora de intercambiar un proceso a memoria principal y siempre que haya ms
de un bloque de memoria libre de suciente tamao, el sistema operativo debe decidir que bloque libre
asignar. Existen tres algoritmos o estrategias.

1. Primer ajuste: se asigna el primer bloque que sea sucientemente grande. La exploracin
puede comenzar desde el principio del conjunto de bloques o en el punto en que hubiera terminado
la exploracin anterior (siguiente ajuste). Es muy eciente ya que basta con encontrar una zona
libre de tamao suciente y proporciona un aprovechamiento de la memoria aceptable.

2. Mejor ajuste: se asigna el bloque ms pequeo que tenga el tamao suciente. Se debe
explorar la lista entera, a menos que est ordenada segn los tamaos.

3. Peor ajuste: Se elige el bloque ms grande. Con ello se pretende que no se generen nuevos
huecos pequeos. Sin embargo, sigue siendo necesario recorrer toda la lista de huecos o mantenerla
ordenada por tamao.

14.3. Reubicacin
Cuando se utiliza el esquema de Particionamiento jo, se espera que un proceso siempre se asigne a
la misma particin. Para ello, se hace una distincin entre varios tipos de direcciones. Una direccin
lgica es una referencia a una ubicacin de memoria independiente de la asignacin actual de datos
de la memoria, se debe llevar a cabo una traduccin a una direccin fsica antes de que alcance el
acceso a memoria. Una direccin relativa es un ejemplo particular de direcciones lgicas, en que
la direccin se expresa como una ubicacin relativa a algn punto conocido, normalmente un valor
en un registro del procesador. Una direccin fsica o direccin absoluta es una ubicacin
real de la memoria principal. Los programas que emplean direcciones relativas de memoria se cargan
utilizando carga dinmica en tiempo de ejecucin. Cuando un proceso se asigna al estado ejecutando,
un registro especial del procesador (registro base) carga la direccin inicial del programa en la memoria
principal.

15. Paginacin simple


La paginacin es un esquema de gestin de memoria que permite que el espacio de direcciones
fsicas de un proceso no sea contiguo. Evita el problema de encajar fragmentos de memoria variable en
el almacn de respaldo.
Supongase que la memoria principal se divide en porciones de tamao jo relativamente pequeos
y que cada proceso tambin se divide en porciones pequeas del mismo tamao jo. A dichas porciones
del proceso conocidas como pginas se les asigna porciones disponibles de memoria conocidas como
marcos o marcos de pginas .
El sistema operativo mantiene una tabla de pginas por cada proceso. La tabla de pginas
muestra la ubicacin de marco por cada pgina del proceso y habitualmente reside en memoria. Ca-
da direccin lgica est formada por un nmero de pgina y un desplazamiento dentro de la pgina.
Presentando como una direccin lgica (nro pag, nro desp), el procesador utiliza la tabla de pginas
para producir una direccin fsica (nro marco, nro desp). Para hacer este esquema de paginacin con-
veniente, el tamao de pgina y por lo tanto el tamao de marco deben ser una potencia de 2. Cada
direccin lgica de un programa es idntica a su direccin relativa. Considrese una direccin de n+m
bits, donde los n bits de la izquierda determinan el nmero de pgina y los m bits de la derecha el
desplazamiento; para este caso se tiene 2n pginas de 2m tamao. Para determinar la direccin fsica
es necesario seguir los siguientes pasos:

Gutierrez Gonzalo E.
16 SEGMENTACIN 44

Extraer el nmero de pgina como los n bits de la izquierda de la direccin lgica.

Utilizar el nmero de pgina como ndice a tabla de pginas del proceso para encontrar el nmero
de marco k.

La direccin fsica inicial del marco es k 2m y la direccin fsica del byte referenciado es dicho
nmero mas la concatenacin con el desplazamiento.

Figura 15.1: Traduccin de direccin lgica a fsica

Cuando usamos un esquema de paginacin no tenemos fragmentacin externa: todos los marcos
libres podrn ser asignados a un proceso que los necesite. Pero podemos tener un cierto grado de
fragmentacin interna, ya que los marcos se asignan como unidad y podran no estar completamente
llenos.
El sistema operativo debe ser consciente de los detalles relativos a la asignacin de la memoria
fsica; que marcos fueron asignados y cuales estn disponibles, cantidad total, etc. Esta informacin se
mantiene en la tabla de marcos, la cual tiene una entrada por cada marco fsico que indica si est libre
o asignado, y en caso de estar asignado a que pgina de qu proceso.

16. Segmentacin
La segmentacin es un caso particular del particionado variable o dinmico, divide el programa en
sus unidades lgicas (cdigo, pila, datos, etc....). El programa y sus datos se dividen en un nmero de
segmentos. No se requiere que todos los programas sean de la misma longitud, aunque hay una longitud
mxima de segmento. Una direccin lgica utilizando segmentacin est compuesta por dos partes, con
el formato (nro segmento, nro desplazamiento). Un programa podra ocupar ms de una particin y
estas particiones no necesitan ser contiguas. La segmentacin elimina la fragmentacin interna pero
sigue con el problema de la fragmentacin externa y una consecuencia de utilizar segmentos de diferentes
tamaos es que no hay una relacin simple entre direcciones lgicas y direcciones fsicas.
El mapeo se lleva a cabo mediante una tabla de segmentos, que generalmente tambin reside en
memoria. Cada entrada tiene una direccin base del segmento y un lmite del segmento. La direccin
base del segmento contiene la direccin fsica inicial del lugar donde el segmento reside dentro de la
memoria, mientras que el lmite especica su longitud y sirve para asegurar que no se utilicen direcciones
no vlidas.
Considere una direccin de n+m bits, donde los n bits de la izquierda corresponden al nmero de
segmento y los m bits de la derecha corresponden al desplazamiento, el tamao mximo del segmento
es 2m y se necesita llevar a cabo los siguientes pasos para la traduccin de direcciones:

Extraer el nmero de segmento como los n bits de la izquierda de la direccin lgica.

Gutierrez Gonzalo E.
16 SEGMENTACIN 45

Utilizar el nmero de segmento como un indice a la tabla de segmentos del proceso para encontrar
la direccin fsica inicial del segmento.

Comparar el desplazamiento, expresado como los m bits de la derecha, a la longitud del segmento.
Si el desplazamiento es mayor o igual que la longitud, la direccin no es vlida.

La direccin fsica deseada es la suma de las direcciones fsica inicial y el desplazamiento.

Figura 16.1: Traduccin de direccin lgica a fsica

Tanto en la segmentacin como en la paginacin, las tablas de pginas o segmentos se mantiene


en memoria principal, se requiere un registro apuntador a la base de la tabla de pginas (PTBR) del
programa o a la tabla de segmentos (STBR) segn que mtodo estamos aplicando. A partir de ahora se
utilizar el termino porcin para referirnos a pgina o segmento segn que mtodo estamos empleando.

Figura 16.2: Soporte de Hardware

Gutierrez Gonzalo E.
16 SEGMENTACIN 46

Figura 16.3: Direcciones lgicas

16.1. Proteccin
Para proteccin, en la paginacin se puede asociar un conjunto de bits a cada entrada de la tabla
de pginas:

Bit de slo lectura.

bits para restricciones de acceso (en sistemas multiusuarios).

bit de validez. Este bit indica si la pgina asociada est en el espacio de direcciones lgico del
proceso.

En la segmentacin, la proteccin es ms sencilla y natural; al establecer de acuerdo a divisiones


lgicas del programa. La tabla de segmentos especica tambin la longitud de cada segmento, lo
que proporciona un mecanismo adicional para tratar errores de direccionamiento fuera de segmento,
mediante un trap que se genera si el desplazamiento supera la longitud del segmento.

Gutierrez Gonzalo E.
17 INTRODUCCIN Y FUNDAMENTACIN 47

Memoria Virtual
17. Introduccin y fundamentacin
La memoria virtual es un mecanismo ms general para la ejecucin de programas no enteros en
memoria. Se basa en un sistema de paginacin o segmentacin en el que slo un subconjunto de
porciones estn cargadas en memoria principal. El resto reside en un dispositivo de almacenamiento
secundario como ser disco. La memoria virtual permite una programacin muy efectiva que libera al
usuario de las restricciones excesivamente fuertes de la memoria principal y permite abstraer la memoria
principal, transformndola en una matriz uniforme de gran tamao de posiciones de almacenamiento,
separando as la memoria lgica y fsica.
La memoria virtual se ocupa de la transferencia de informacin entre la memoria principal y la
secundaria. El espacio de direcciones virtuales de un proceso hace referencia a la forma
lgica (o virtual) de almacenar un proceso en memoria. Tpicamente, esta forma consiste en que el
proceso comienza en una cierta direccin lgica y est almacenado de forma contigua en la memoria.
La memoria fsica puede estar organizada en marcos de pginas y los marcos de pginas de un
proceso pueden no ser contiguos; es responsabilidad de la MMU de establecer la correspondencia
lgico-fsica.
La memoria virtual presenta, adicionalmente a su capacidad para ejecutar programas mayores que la
memoria fsica disponible, un conjunto interesante de ventajas respecto a la paginacin o segmentacin
con programas enteros:

Reduce la latencia en la ejecucin de los procesos al no tener que cargarse completamente los
mismos para comenzar a ejecutarse.

Permite gestionar ms ecientemente la memoria fsica. Cualquier espacio libre, incluso una
porcin, puede ser cargado para cargar un nuevo proceso y comenzar a ejecutarlo.

Se produce un aumento del grado de programacin al no ser necesario que todo el mapa de
memoria de un proceso est en memoria principal para poder ejecutarlo.

Al aumentar el grado de programacin a costa de reducir el nmero de porciones cargadas de un


proceso, permite incrementar la eciencia de la CPU en sistemas multiprogramados.

Adems de separar la memoria lgica de la fsica, la memoria virtual tambin permite que dos o ms
procesos compartan los archivos y memoria mediante mecanismos de comparacin de pginas. Esto
proporciona las siguientes ventajas:

Las bibliotecas del sistema pueden ser compartidas por numerosos procesos, mapeando el objeto
compartido sobre un espacio de direcciones virtuales.

Los procesos comparten los archivos y la memoria. Se puede compartir porciones durante la
creacin de procesos mediante la llamada al sistema fork(), lo que permite acelerar dicha creacin.

El buen rendimiento del sistema de memoria virtual est basado en que los procesos presentan la
propiedad de proximidad de referencias. Esta propiedad permite que un proceso genere muy
pocos fallos aunque tenga en memoria principal slo una parte de su imagen de memoria (conjunto
residente). El objetivo del sistema de memoria virtual es intentar que la informacin que est
usando un proceso en un determinado momento (conjunto de trabajo) est residente en memoria
principal. O sea, que el conjunto residente del proceso contenga a su conjunto de trabajo.

Gutierrez Gonzalo E.
18 PAGINACIN BAJO DEMANDA 48

18. Paginacin bajo demanda


Esta tcnica consiste en cargar inicialmente las pginas de un proceso nicamente cuando sean
solicitadas durante la ejecucin del programa (bajo demanda); de este modo, las pginas a las que
nunca se acceden no sern cargadas en memoria fsica.
Un sistema de paginacin bajo demanda es similar a un sistema de paginacin con intercambio en el
que los procesos residen en memoria secundaria, usualmente disco. En lugar de intercambiar el proceso
completo con la memoria, se utiliza un intercambiador perezoso (paginador), que intercambia una
pgina con la memoria slo si va a ser necesaria, reduciendo as el tiempo de carga y la cantidad de
memoria fsica necesaria.
Porque es necesario realizar un remplazo de pgina?
Cuando un proceso necesita acceder a una pgina que no est en memoria principal, se produce
lo que se denomina fallo de pgina, esto es debido a que no todas las pginas del proceso estn
cargadas en memoria principal y el sistema operativo se encarga de transferir dicha pgina desde la
memoria secundaria a memoria principal. Si al intentar traer la pgina desde memoria secundaria se
detecta que no hay espacio en la memoria principal (no hay marcos libres), ser necesario expulsar una
pgina de la memoria principal y transferirla a la secundaria (expulsin).
Adems, al momento de cargar un proceso, el paginador realiza una estimacin de qu pginas
sern utilizadas antes de descargar de nuevo el proceso.

18.0.1. Soporte Hardware

Adems del soporte de hardware para la traduccin de direcciones de los sistemas paginados, la
memoria virtual requiere mecanismos hardware adicionales.

Espacio para la paginacin en un dispositivo de almacenamiento secundario.

Bit de validez para cada tabla de pginas que indique si la pgina correspondiente est cargada
en memoria o no.

Trap de fallo de pginas. Cuando la pgina referenciada no est cargada en memoria, el mecanismo
de interrupciones produce un salto de rutina de tratamiento de fallo de pgina.

Informacin adicional para la gestin de fallo de pgina (bit de pgina modicada, referenciada,
. . .).

18.1. Paginacin6
En la presentacin de la paginacin sencilla, indicamos que cada proceso dispone de su propia tabla
de pginas y que todas las pginas se encuentran localizadas en la memoria principal. Para la memoria
virtual basada en el esquema de paginacin tambin se necesita una tabla de pginas, normalmente se
asocia una nica tabla de pginas a cada proceso y en este caso las entradas de la tabla de paginas
son ms complejas.
Debido a que slo algunas de las pginas de proceso se encuentran en la memoria principal, se
necesita que cada entrada de la tabla de pginas indique si la correspondiente pgina est presente en
la memoria principal o no. Para ello se emplea un bit de validez P; si el bit indica que la pgina est
en memoria, la entrada tambin debe indicar el nmero de marco de dicha pgina. En otras palabras,
cuando se congura este bit como vlido, la pgina asociada ser legal y adems se encontrar en
memoria. Si el bit se congura como invlido querr decir que o bien la pgina no es vlida (es decir,

6
El trmino memoria virtual se asocia habitualmente con sistemas que emplean paginacin, a pesar que la memoria
virtual es aplicable en sistemas basados con segmentacin.

Gutierrez Gonzalo E.
18 PAGINACIN BAJO DEMANDA 49

no se encuentra en el espacio lgico de direcciones del proceso) o es vlida pero est actualmente en
disco (fallo de pgina).
El hardware de paginacin, al traducir la direccin mediante la tabla de pgina, detectar que el
bit de pgina invlida est activado, provocando una interrupcin dirigida al sistema operativo. Esta
interrupcin se produce como resultado de que el sistema operativo no ha cargado anteriormente en
memoria la pgina deseada. El procedimiento para tratar este fallo de pgina es muy sencillo:

1. Comprobamos una tabla interna, usualmente se mantiene con el bloque de control del proceso
correspondiente a este proceso, para determinar si la referencia era un acceso a memoria vlido
o invlido.

2. Si la referencia era invlida, terminamos el proceso. Si era vlida pero esa pgina todava no ha
sido cargada, la cargamos en memoria.

3. Buscamos un marco libre.

4. Ordenamos una operacin de disco para leer la pgina deseada en el marco recin asignado.

5. Una vez completada la lectura de disco, modicamos la tabla interna que se mantiene con los
datos del proceso y la tabla de pginas para indicar que dicha pgina se encuentra ahora en
memoria.

6. Reiniciamos la instruccin que fue interrumpida. El proceso podr ahora acceder a la pgina
como si siempre hubiera estado en memoria.

La entrada de la tabla de pginas incluye un bit de modicacin M que indica si los contenidos de
la correspondiente pgina han sido alterados desde que la pgina se carg por ltima vez en memoria
principal. Si no haba ningn cambio, no es necesario escribir la pgina cuando llegue el momento de
remplazarla por otra pgina en el marco de pgina que actualmente ocupa.

Figura 18.1: Formatos tpicos en paginacin virtual

La mayora de los esquemas de memoria virtual almacena las tablas de pginas en memoria virtual
en lugar de memoria real. Cuando un proceso est en ejecucin, al menos parte de dicha tabla se en-
cuentra en memoria, incluyendo la entrada de la tabla de pgina de aquella actualmente en ejecucin.
En la gura 18.2 se sugiere una implementacin de hardware de paginacin, el nmero de pgina de la
direccin virtual se utiliza para indexar la tabla y buscar el correspondiente marco de pgina que com-
binado con el desplazamiento de la direccin virtual generar la direccin real deseada. Normalmente
el campo correspondiente al nmero de pgina es mayor que el campo de correspondiente al nmero
de marco de pgina (n > m).

Gutierrez Gonzalo E.
18 PAGINACIN BAJO DEMANDA 50

Figura 18.2: Traduccin de direcciones de un sistema de paginacin

18.1.1. Valoracin de la paginacin

Espacios lgicos independientes. Cada proceso tiene una tabla de pginas que crea un espacio
lgico independiente para el mismo. La tabla es, por tanto, una funcin de traduccin que hace
corresponder las pginas del mapa de memoria del proceso con los marcos que tiene asignados.

Compartir memoria. Bajo la supervisin del sistema operativo, que es el nico que puede manip-
ular las tablas de pginas, dos o ms procesos pueden tener una pgina asociada al mismo marco
de pgina.

Soporte de las regiones del proceso. La informacin de proteccin presente en cada entrada de
la tabla de pginas permite controlar que los accesos a la regin son del tipo que sta requiere.
Asimismo, la informacin de validez detecta cundo se intenta acceder a huecos dentro del mapa
del proceso y, adems, elimina la necesidad de gastar memoria fsica para estos huecos.

Maximizar el rendimiento. En primer lugar, la paginacin, a pesar de la fragmentacin interna,


obtiene un buen aprovechamiento de la memoria, ya que elimina la necesidad de que el mapa de
memoria de un proceso se almacene de forma contigua en memoria principal.

18.2. Segmentacin
Una referencia a la memoria consiste en un formato de direccin del tipo (nro de segmento, de-
splazamiento). Tal organizacin presenta las siguientes ventajas:

Simplicar el tratamiento de estructuras de datos que pueden crecer. Con la memoria virtual
segmentada, a una estructura de datos se le puede asignar su propio segmento y el sistema
operativo expandir o reducir el tamao de la misma.

Da soporte a la comparacin entre procesos.

Soporta los mecanismos de proteccin.

En la exposicin de la segmentacin sencilla, indicamos que cada proceso tiene su propia tabla de
segmentos, y que cuando todos estos segmentos se han cargado en memoria principal, la tabla de
segmentos del proceso se crea y se carga tambin en memoria principal.
El mismo mecanismo se necesita cuando se est tratando esquema de memoria virtual basados en
segmentacin, lo habitual es que haya una nica tabla de segmentos por cada proceso. Cada entrada

Gutierrez Gonzalo E.
18 PAGINACIN BAJO DEMANDA 51

de esta tabla mantiene, adems de informacin de proteccin, el registro base y lmite correspondientes
a esa regin.

Figura 18.3: Formatos tpicos en segmentacin virtual

Debido a que slo algunos de los segmentos pueden encontrarse en la memoria principal, se nece-
sita un bit P en cada entrada de la tabla de segmentos para indicar si el correspondiente segmento se
encuentra presente en la memoria principal o no. Si dicho bit indica que el segmento est en memoria,
la entrada tambin debe incluir la direccin de comienzo y la longitud del mismo (similar al compor-
tamiento en paginacin).
Otro bit de control en la entrada de la tabla de segmentos es el bit de modicado, que indica si los
contenidos del segmento correspondiente se han modicado desde la ltima vez que se ha cargado en la
memoria principal. Si no hay ningn cambio, no es necesario escribir el segmento cuando se reemplace
de la memoria principal.
El mecanismo bsico para la lectura de una palabra de memoria implica la traduccin de una
direccin fsica, usando la tabla de segmentos. Debido a que la tabla de segmentos es de tamao
variable dependiendo del tamao del proceso, no se puede suponer que se encuentra almacenada en un
registro.
Cuando un proceso en particular est en ejecucin, un registro mantiene la direccin de comienzo de
la tabla de segmentos para dicho proceso. El nmero de segmento de la direccin virtual se utiliza para
indexar esta tabla y para buscar la direccin de la memoria principal donde comienza dicho segmento.
Esta es aadida a la parte de desplazamiento de la direccin virtual para producir la direccin real
solicitada.

Figura 18.4: Traduccin de direcciones en un sistema con segmentacin

Gutierrez Gonzalo E.
19 POLTICAS DE REMPLAZO DE PGINAS 52

18.2.1. Valoracin de la segmentacin

Espacios lgicos independientes. Cada proceso tiene una tabla de segmentos que crea un espacio
lgico independiente para el mismo.

Proteccin. La tabla de segmentos de un proceso restringe qu parte de la memoria puede ser


accedida por el mismo, permitiendo asegurar que los procesos usan espacios disjuntos.

Compartir memoria. Bajo la supervisin del sistema operativo, que es el nico que puede manip-
ular las tablas de segmentos, dos o ms procesos pueden tener un segmento asociado a la misma
zona de memoria.

Maximizar el rendimiento. sta es una de sus deciencias. Por un lado, presenta fragmentacin
externa, por lo que no se obtiene un buen aprovechamiento de la memoria. Por otro lado, y ms
importante todava, esta tcnica no facilita la implementacin de esquemas de memoria virtual
debido al tamao variable de los segmentos.

18.3. Remplazo de Pgina


Cuando se produce un fallo de pgina y no hay marcos libres, es necesario liberar uno de los marcos
de pgina ocupados para poder cargar la pgina referenciada. Podemos liberar un marco escribiendo
su contenido en el espacio de intercambio y modicando la tabla de pgina, de este modo utilizar el
marco liberado para albergar la pgina que provoc el fallo de pgina. Los pasos a seguir son:

1. Se selecciona la pgina vctima mediante un algoritmo de remplazo que ejecute una poltica de
remplazo determinada.

2. Si la pgina vctima haba sido modicada durante su estancia en memoria, hay que escribirla
en el dispositivo de paginacin, en caso contrario no es necesario. Para la gestin de pgina
modicada se usa el bit de pgina modicado para cada marco de pgina, que se activa cada vez
que accede a memoria para escritura.

3. Se pone cero el bit de validez correspondiente a la pgina vctima en su tabla de pginas.

19. Polticas de remplazo de pginas


Los criterios a seguir para implementar un algoritmo de remplazo de pginas son fundamentalmente
dos:

1. Minimizar el nmero de fallos de pgina.

2. Sencillez de implementacin. Un algoritmo complejo puede requerir intervencin adicional en los


acceso a memoria, lo que implicar prdida de rendimiento o un hardware costoso.

Podemos evaluar un algoritmo ejecutndolo con una cadena concreta de referencia de memoria y
calculando el nmero de fallos de pgina. La cadena de referencias de memoria se denomina cadena de
referencia y es posible generar cadenas articialmente mediante implementacin de nmeros aleatorios.
Tan slo debemos considerar el nmero de pgina ms que la direccin completa. Por otra parte,
si tenemos una referencia a la pgina p, todas las referencias inmediatamente siguientes que se hagan
a la pgina p no producirn fallos de pginas.
Para determinar el nmero de fallos de pgina para una cadena de referencia concreta y un algoritmo
de sustitucin de pginas determinado, tambin necesitamos conocer el nmero de marcos disponibles,
lo ideal sera que a medida que el nmero de marcos aumenta, se reduce el nmero de fallos de pginas.

Gutierrez Gonzalo E.
19 POLTICAS DE REMPLAZO DE PGINAS 53

19.1. Poltica ptima


En un algoritmo de remplazo ptimo en cuanto al nmero de fallos de pginas, la pgina vctima
a seleccionar ser aquella que ms tiempo va a tardar en ser referenciada. Desafortunadamente, de-
terminar las referencias a memoria futuras es irresoluble en la prctica, por lo que los algoritmos de
reemplazo reales se basan habitualmente en el comportamiento pasado de las referencias a memoria,
conando en la propiedad de la localidad temporal de los programas.

19.2. Poltica FIFO


Se elige como pgina vctima la que ms tiempo lleva cargada. La implementacin puede hacerse
mediante una cola FIFO de marcos de pgina, que se actualiza cada vez que se carga una pgina.
Este algoritmo no tiene un buen rendimiento ya que la pgina sustituida puede ser, por ejemplo, una
variable que fuera inicializada muy pronto y que se utilice de manera constante.
Adems, este algoritmo presenta un problema conocido como anomala de Belady, un fenmeno
de perdida de rendimiento (mayor nmeros de fallos de pginas) que presentan algunos algoritmos de
reemplazo con determinadas secuencias de referencias cuando se incrementa el nmero de marcos de
pginas en memoria. Esto ocurre si se considera por ejemplo la siguiente secuencia de referencia

1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
en donde se producen ms fallos de pginas con cuatro marcos que con tres (cosa que no debera ocurrir
en el caso esperado).

19.3. Poltica LRU


En esta poltica se selecciona como pgina vctima la menos recientemente referenciada. Esto implica
modicar en cada referencia la informacin acerca de las pginas cargadas, a diferencia del algoritmo
FIFO que slo requiere hacerlo en la carga de cada pgina. Esta caracterstica hace de LRU un algoritmo
de pila. Los algoritmos de pila presentan la propiedad de que, dada una secuencia de referencias, una
memoria con mas marcos de pginas, tras un nmero determinado de referencias, mantiene el conjunto
de pginas con un tamao menor en la misma referencia. En otras palabras, la tasa de fallos nunca
aumenta si se incrementa el tamao de memoria y evitando la anomala de Belady. La implementacin
hardware de la poltica LRU es compleja, hay dos mecanismos:

1. Mantener una lista encadenada de pginas ordenadas por el tiempo de su ltima referencia.

2. Mantener un contador de referencias y un registro (de al menos 64 bits) asociado a cada marco
de pgina, que se actualiza en una referencia con el valor del contador.

En ambos casos la implementacin es muy costosa, por lo que, como alternativa al algoritmo LRU
puro se utilizan aproximaciones. Un mecanismo de aproximacin consiste en almacenar el tick de reloj
en el que se produce la referencia en vez de la propia referencia, para lo que se requiere un bit de
referencia asociado a cada marco en base al cual la rutina de atencin al reloj puede determinar si la
pgina ha sido referenciada desde el tick anterior y actualizar el registro de ticks de ltima referencia
a la pgina, que puede implementarse por software. Algunos de los siguientes algoritmos tambin son
aproximaciones a LRU.

19.4. Segunda Oportunidad


El algoritmo bsico de segunda oportunidad para la sustitucin de pginas es un algoritmo de
sustitucin FIFO.

Gutierrez Gonzalo E.
19 POLTICAS DE REMPLAZO DE PGINAS 54

Se distingue entre pginas que han sido referenciadas y pginas que no lo han sido. Si siguiendo
un orden determinado, una pgina debera ser seleccionada como vctima y ha sido referenciada, se
deja en memoria, pero se marca como no referenciada. Ser candidata a pgina vctima en el prximo
fallo si no vuelve a ser referenciada antes. Se requiere un bit de referencia R por marco de pgina,
que se activa cuando se referencia la pgina. Si el valor es 0, sustituimos dicha pgina, pero si el bit
de referencia tiene el valor 1, damos a dicha pgina una segunda oportunidad, su bit de referencia se
borra y se elige la siguiente pgina de la FIFO. De este modo, si una pgina se utiliza frecuentemente
su bit de referencia permanecer activado y la pgina nunca ser sustituida.
La poltica de la segunda oportunidad se puede implementar mediante una cola circular (algoritmo
del reloj); los marcos se organizan en orden circular con un puntero a uno de ellos para indicar cul es
la siguiente pgina a sustituir. Cuando ocurre un fallo, el puntero avanza hasta encontrar una pgina
con bit de referencia 0, se sustituye la pgina y se coloca en dicha posicin la nueva pgina.
El peor de los casos sera cuando todas las pginas tienen referencia igual a 1, que los ir cambiando
y recorriendo la cola hasta encontrar en una prxima vuelta la pgina a sustituir (degeneracin al
algoritmo FIFO).

19.5. NRU
Se elige como pgina vctima una no usada recientemente. Se mantienen dos bits por pgina:

R referenciada/no referenciada

M modicada/no modicada

Cuando una pgina se carga, sus bits R y M se ponen a cero. El bit R de una pgina se activa cuando
sta se referencia. El bit M se activa si la referencia es para escritura. Peridicamente (por ejemplo,
con cada tick de reloj), todos los bits R se ponen a cero.
Consiste en considerar tanto el bit de referencia como el bit de modicacin como un par ordenado.
Obteniendo los 4 siguientes casos:

(0, 0). Ni se uso ni se modico, es la mejor para reemplazar.

(0, 1). No se uso pero se modico, hay que escribirla en disco antes de reemplazarla por lo cual
no es tan buena.

(1, 0). Se uso pero no se modico, es posible que se use pronto.

(1, 1). Se uso y se modico, se va a usar probablemente pronto y ser necesario escribirla antes
de reemplazarla.

Entre pginas de una misma categora puede aplicarse cualquier criterio de eleccin. Presenta el prob-
lema de que en los momentos inmediatamente posteriores a la puesta a cero del bit R incluso pginas
que estn siendo actualmente referenciadas son susceptibles de ser elegidas como vctimas.

19.6. Algoritmos de Conteo


Manteniendo un contador de nmero de referencias que se han hecho a cada pgina se puede hacer:

Algoritmo LFU. Se elige la menos frecuentemente usada (least frecuently used) es decir, el de
cuenta ms baja. No es eciente en el caso de pginas que se usaron mucho al comienzo del
proceso, y luego no se volvieron a usar (tienen cuenta alta).

Algoritmo MFU. Se elige la ms frecuentemente usada. Se basa en el argumento de que la ltima


pgina trada a memoria, es la que tiene cuenta ms baja.

Estos algoritmos no son comunes y poco se aproximan al PTIMO.

Gutierrez Gonzalo E.
19 POLTICAS DE REMPLAZO DE PGINAS 55

19.7. NFU
En el algoritmo NFU (pgina no referenciada frecuentemente), se establece si en un intervalo de
tiempo (por ejemplo, un tick de reloj) una pgina ha sido o no referenciada. Se lleva la cuenta del
nmero de intervalos que cada pgina ha sido referenciada, eligiendo como vctima la de cuenta ms
baja.
Para cada pgina se requiere, adems del bit R que se activa en cada referencia, un contador. En
cada tick de reloj, para cada pgina, el bit R se acumula en el contador. Comparado con LRU puro,
en NFU los contadores se incrementan con mucha menor frecuencia, por lo que es implementable en
software. NFU, al recordar todas las referencias, hace que pginas que se han usado mucho en un pasado
lejano permanecen en memoria por delante de pginas que estn comenzando a usarse intensamente
en el momento del fallo.

19.7.1. Envejecimiento

Como una mejora de NFU, se puede introducir un parmetro de olvido (o envejecimiento) sobre
las referencias pasadas. Un mecanismo para implementar el envejecimiento consiste en desplazar los
contadores un bit a la derecha en cada tick de reloj, introduciendo el bit R por la izquierda. De esta
forma, una pgina referenciada durante el ltimo tick permanecer en memoria sobre cualquiera que
no lo haya sido.

Gutierrez Gonzalo E.
20 ARCHIVOS 56

Gestin de Almacenamiento
20. Archivos
Un archivo es bsicamente una coleccin de informacin relacionada, con nombre, y que se graba en
un dispositivo de almacenamiento secundario. En general, un archivo es una secuencia de bits, bytes,
lineas o registros cuyo signicado est denido por el creador y el usuario del archivo, adems un
archivo tendr una determinada estructura dependiendo de su tipo.

20.1. Atributos de un archivo:


Nombre,

ID (etiqueta unvoca, usualmente un nmero que identica el archivo dentro del sistema de
archivos),

Tipo,

Ubicacin (puntero a un dispositivo y a la ubicacin del archivo dentro de dicho dispositivo),

Tamao,

Proteccin (informacin del control de acceso),

Fecha, hora e identicacin del usuario.

20.2. Operaciones sobre archivos


Creacin de un archivo: es necesario encontrar espacio dentro del sistema de archivos e incluir
en el directorio una entrada para el nuevo archivo.

Escritura de un archivo: el Sistemas Operativos debe mantener un puntero de escritura que haga
referencia a la ubicacin dentro del archivo en la que debe tener lugar la siguiente escritura. El
puntero de escritura debe actualizarse cada vez que se escriba en el archivo informacin nueva.

Lectura de un archivo: el Sistemas Operativos deber mantener un puntero de lectura que haga
referencia a la ubicacin dentro del archivo en la que tiene lugar la siguiente lectura. Las opera-
ciones de lectura y escritura utilizan el mismo puntero, ahorrando as espacio y reduciendo la
complejidad del sistema.

Reposicionamiento dentro de un archivo: operacin conocida como bsqueda en el archivo.

Borrado de un archivo: liberamos todo el espacio del archivo, de modo que pueda ser reutilizado
por otros y tambin se borra su respectiva entrada en el directorio.

Truncado de un archivo: se reinicializa el archivo asignndole una longitud igual a 0 y liberando


el espacio que tuviera asignado.

La gran mayora de estas operaciones implican realizar bsquedas sobre directorios para encontrar
la entrada asociada al nombre del archivo especicado. Para ello el sistema operativo mantiene una
tabla de archivos abiertos que contiene informacin acerca de los archivos abiertos junto con
otra informacin como ser propietario, ubicacin, tamao, etc. Al solicitar realizar una operacin sobre
un archivo, se especica mediante un ndice en la tabla y una vez cerrado el archivo se elimina de la
tabla la entrada correspondiente.

Gutierrez Gonzalo E.
22 ESTRUCTURAS DE DIRECTORIOS 57

20.2.1. tipos de archivos

Una tcnica comn para implementar los tipos de archivos consiste en incluirlo como parte del
nombre. El nombre se divide en dos partes: nombre del archivo y extensin, usualmente separadas por
un punto. Estas extensiones no son obligatorias, si el usuario no la especica, la aplicacin buscar
la extensin necesaria. El sistema UNIX utiliza un simple nmero mgico almacenado al principio de
algunos archivos para indicar aproximadamente su tipo.
Los tipos de archivos tambin pueden ser usados para indicar una estructura interna del archivo. Por
ejemplo los archivos fuentes y objetos tienen estructuras que cumplen las espectativas de los programas
que permiten leer los mismos. Adems ciertos archivos pueden tener cierta estructura impuesta por el
sistema operativo, por ejemplo, el sistema operativo puede requerir que un archivo ejecutable tenga una
estructura especica tal que permita asignarse en memoria y determinar la localizacin de la primera
instruccin.

21. Mtodos de Acceso


Debido que cualquier archivo contiene informacin, cuando esta es usada, la informacin podra
ser accedida y leda desde la memoria de la computadora. Los siguientes mtodos son empleados en la
forma de leer y procesar la informacin de un archivo:

1. Acceso secuencial: la informacin del archivo se procesa por orden, un registro despus del
otro (propios de editores y compiladores).

2. Acceso directo: un archivo est compuesto de registros lgicos de longitud ja que permiten
a los programas leer y escribir los registros del archivo rpidamente, sin orden concreto. Al
considerar un archivo como una secuencia numerada de registros o bloques, las operaciones de
archivo deben modicarse para incluir el nmero de bloque como parmetro, dicho nmero es
proporcionado por el usuario al sistema operativo (nmero de bloque relativo) y es un
ndice que permite al sistema operativo decidir donde colocar el archivo.

3. Otros mtodos de acceso: implican generalmente la construccin de un ndice para el


archivo, el cual contiene punteros a los distintos bloques. Para encontrar un registro dentro del
archivo, primero se explora el ndice y luego se usa el puntero para acceder directamente y hallar
el registro deseado.

22. Estructuras de directorios


22.1. Estructura de Almacenamiento:
Un sistema de archivos es la parte del sistema de administracin del almacenamiento responsable
de los archivos. Principalmente de la administracin de los archivos en el almacenamiento secundario.
Es la parte del sistema operativo responsable de permitir compartir la informacin disponible en el
archivo. El sistema de archivos proporciona el mecanismo para el almacenamiento en linea y para el
acceso a los contenidos de los archivos, incluyendo datos y programas.
Un disco puede utilizarse completamente para un sistema de archivos. Lo deseable sera colocar
mltiples sistemas de archivos en un mismo disco dividindolo en varias partes al mismo; tales partes se
conocen como particiones, franjas o minidiscos. Podemos crear un sistema de archivos en cada una
de estas particiones, las cuales tambin pueden combinarse para formas estructuras de mayor tamao
llamadas volmenes. Cada volumen puede considerarse como un disco virtual y pueden almacenar
mltiples Sistemas Operativos, permitiendo que un sistema inicie y ejecute en cualquiera de ellos.
Cada volumen que contenga un sistema de archivos debe tambin contener informacin acerca de los

Gutierrez Gonzalo E.
22 ESTRUCTURAS DE DIRECTORIOS 58

archivos almacenados (nombre, ubicacin, tamao, tipo,...) organizada en entradas de un directorio


de dispositivos o tabla de contenidos del volumen.

22.2. Directorios
Un directorio puede considerarse como una tabla de smbolos que traduce el nombre de archivo
a sus correspondientes estradas de directorio. El directorio contiene informacin sobre los archivos
(nombre, ubicacin, tamao, tipo,...) y es propiamente un archivo, posedo por el sistema operativo y
accesible a travs de diversas rutinas de gestin de archivos. Un directorio normalmente contiene varias
entradas, una por archivo y las operaciones que habr que realizar con un directorio son:
Bsqueda de un archivo,
Creacin de un archivo,
Borrar un archivo,
Listar un directorio,
Renombrar un archivo

22.3. Sistemas de directorios jerrquicos.


Un sistema de directorios es bsicamente la forma de organizar los archivos en un sistema de
archivos, es decir, la estructura de directorios empleado en el sistema de archivos. Cuando se abre un
archivo, el sistema operativo examina su directorio hasta encontrar el nombre del archivo por abrir,
luego extrae los atributos, las direcciones en disco y los coloca en una tabla en memoria principal.
Todas las referencias subsecuentes al archivo utilizan la informacin que est en la memoria principal.
El nmero de direcciones varia de un sistema a otro y tales denen estructuras lgicas en un directorio.

22.3.1. Directorio de un nico nivel

El modelo ms simple es aquel en que el sistema mantiene un solo directorio que contiene todos
los archivos de todos los usuarios. Tiene limitaciones signicativas cuando el nmero de archivos se
incrementa o el sistema tiene ms de un usuario; si estos escogen los mismos nombres de archivos, los
conictos aparecen (no hay unicidad en los nombres) y el sistema se vuelve inmanejable.

22.3.2. Directorio en dos niveles

Para eliminar el conicto de los nombres, cada usuario tiene su propio directorio de archivos de
usuario UFD (User File Directory). Cuando un trabajo de un usuario se inicia o un usuario se
conecta al sistema, se explora el directorio maestro de archivos MFD (Master File Directory)
del sistema, el cual est indexado por el nombre de usuario o nmero de cuenta y cada una de sus
entradas apunta al UFD correspondiente. Cuando un usuario hace referencia a un archivo concreto,
slo se explora su propio UFD.
Esta estructura resuelve la colisin de nombres pero asla a los usuarios, lo cual puede llegar a
ser una desventaja cuando quieran cooperar en una cierta tarea y acceder a los archivos de otros.
Para designar un archivo de manera unvoca el usuario debe especicar su nombre de ruta (nombre
de usuario+nombre de archivo). Se dene un directorio de usuario especial para contener los archivos
del sistema. Cada vez que se proporciona un nombre de archivo para cargarlo, el Sistemas Operativos
analiza el UFD local; si encuentra all el archivo, lo utiliza, sino, explora automticamente aquel
directorio especial.

22.3.3. Directorios con estructura de rbol

Con este enfoque, cada usuario puede tener tantos directorios como necesite para agrupar sus
archivos. Los nombres de ruta pueden ser absolutos o relativos. Un nombre de ruta absoluto comienza

Gutierrez Gonzalo E.
22 ESTRUCTURAS DE DIRECTORIOS 59

en la raz y sigue una ruta descendente hasta el archivo especicado, indicando el nombre de los
directorios que componen la ruta. Un nombre de ruta relativo dene una ruta a partir del directorio
actual. Con un sistema de directorios con estructura de rbol, podemos permitir que los usuarios
accedan a los archivos de otros usuarios, utilizando nombres de ruta absolutos, adems de acceder a
los suyos propios mediante rutas relativas.

Figura 22.1: Estructuras de directorios

22.3.4. Directorios en un grafo acclico

Un grafo acclico permite que los directorios compartan archivos y subdirectorios de archivos. Es una
generalizacin natural del esquema de directorios con estructura de rbol. Los archivos y subdirectorios
compartidos pueden implementarse de diversas maneras. Una forma bastante comn (usada en UNIX)
consiste en crear una nueva entrada de directorio, link, que es un puntero a otro archivo o subdirectorio.
Para resolver el enlace, se utiliza el nombre de ruta con el n de localizar el archivo real y el borrado
de un enlace no tiene porqu afectar al archivo original, ya que slo se elimina el enlace. Si lo que se
elimina es la propia entrada del archivo, se desasignar el espacio del archivo y los enlaces se colgarn.
Otra tcnica comn consiste en la duplicacin de la informacin compartida.
Tambin se puede preservar el archivo hasta que se borren todas las referencias a l. Cuando se
borra un enlace o una entrada de directorio, eliminamos la correspondiente entrada de la lista. El
archivo se borrar cuando se vace su lista de referencias al archivo.

22.3.5. Directorios en forma de grafo general

Si se permiten ciclos en un directorio, hay que evitar que se busque cualquier componente dos
veces, por razones de correccin y rendimiento. Una solucin es limitar arbitrariamente el nmero de
directorios a los que se acceder durante la bsqueda. Un problema similar existe para determinar si un
archivo puede ser borrado. Generalmente, necesitamos utilizar un esquema de recoleccin de memoria
para determinar cuando se borr la ltima referencia para reasignar el espacio en disco. sto implica
recorrer todo el sistema de archivos, marcando todos los elementos a los que se pueda acceder, y en una
segunda pasada recopilar todo lo que no est marcado, incluyndolo en una lista de espacio libre; pero
consume mucho tiempo y raramente se utiliza. Por lo tanto, es ms sencillo trabajar con directorios
acclico.

22.4. Montaje de sistemas de archivos


Vimos que un disco puede estar dividido en varias regiones denominadas particiones o volmenes.
Cada particin puede ser una particin en bruto o procesada. Los discos sin formatos son utilizados
en aquellas ocaciones en que no resulte apropiado emplear un sistema de archivos.

Gutierrez Gonzalo E.
23 COMPARTICIN DE ARCHIVOS 60

Adems, la estructura de directorios puede estar formada por varios volmenes o particiones, que
pueden montarse para que estn disponibles dentro del espacio de nombres del sistema de archivos. La
particin raiz es la que contiene el kernel del sistema operativo y se monta en el momento de arranque,
otras particiones pueden montarse posteriormente.
Para ello, al Sistema Operativo se le proporciona el nombre del dispositivo y el punto de montaje
que es la ubicacin dentro de la estructura de archivos a la que hay que conectar el sistema de archivos
que se est montando. A continuacin, el Sistema Operativo verica que el dispositivo contiene un
sistema de archivos vlido. Para ello, el controlador del dispositivo verica que el formato del sistema
de archivos sea el esperado. Finalmente, el Sistema Operativo registra en su estructura de directorios o
tabla de montajes que hay un sistema de archivos montado en el punto especicado (letras de unidad
en Windows).

23. Comparticin de archivos


Para implementar la comparacin y los mecanismos de proteccin, el sistema debe mantener ms
atributos de los archivos y directorios que los que se necesita en un sistema monousuario. La mayora
de los sistemas usan los conceptos de propietario (o usuario) de un archivo o directorio y grupo. El
propietario puede cambiar los atributos y conceder el acceso, dispone del mximo grado de control sobre
el archivo. El grupo dene un subconjunto de usuarios que pueden compartir el acceso al archivo.
Los identicadores del propietario y grupo de un archivo determinado se almacenan junto con los
otros atributos. Cuando un usuario solicita realizar una operacin sobre un archivo, se compara el ID
del usuario con el atributo de propietario para determinar si el usuario solicitante es el propietario del
archivo. De la misma manera, pueden compararse los identicadores de grupo. El resultado indicar
que permisos son aplicables y autorizar o denegar la operacin.
Existen adems otras formas de comparacin de archivos, tales como los sistemas de archivos
remotos, y entre ellos podemos mencionar los siguientes:

1. Modelo Cliente-Servidor: los sistemas de archivos remotos permiten a una computadora


montar uno o ms sistemas de archivos desde una o ms mquinas remotas. En este caso, la
mquina que contiene los archivos es el servidor, y la que accede a ellos es el cliente. La relacin
cliente-servidor resulta comn entre mquinas conectadas en red. El servidor especica usual-
mente los archivos disponibles en el nivel de volumen o directorio. La identicacin de los clientes
resulta ms complicada, puede estar especicado por un nombre de red u otro identicador, co-
mo por ejemplo una direccin IP, pero esas identidades puedes ser suplantadas o imitadas. Una
vez que el sistema de archivos remoto haya sido montado, las solicitudes de operaciones con los
archivos se envan al usuario a travs de la red, utilizando el protocolo DFS. Normalmente, la
solicitud de apertura se enva junto con el ID del usuario. El servidor aplica entonces las compro-
baciones de acceso normales para determinar si el usuario dispone de credenciales para acceder
al archivo. En consecuencia, la solicitud ser concedida o denegada.

2. Sistemas de informacin Distribuidos: proporcionan un acceso unicado a la infor-


macin necesaria para la informacin remota. El sistema de nombres de dominio DNS (Domain
Name System) proporciona un servicio de traduccin de nombres de host a direcciones de red
para toda Internet (incluyendo la WWW).

La semntica de coherencia es un criterio importante para evaluar todo sistema de archivos


que soporte comparacin de archivos. Especica como pueden acceder simultneamente a un archivos
los mltiples usuarios. En particular, especica cuando las modicaciones que un usuario realice en los
datos sern observables por parte del resto. Se implementa como cdigo de soft dentro del sistema de
archivos. Est directamente relacionada con los algoritmos de sincronizacin de procesos. La serie de
acceso comprendida entre las operaciones open() y close() forman una sesin de archivo.

Gutierrez Gonzalo E.
24 ESTRUCTURA DE SISTEMAS DE ARCHIVOS. 61

Semntica de UNIX:

las escrituras en un archivo abierto por parte de un usuario son visibles inmediatamente
para los otros usuarios que hayan abierto ese archivo.

Un modo de comparacin permite a los usuarios compartir el puntero de ubicacin actual


dentro del archivo.

Semntica de seccin

las escrituras en un archivo abierto por parte de un usuario no son visibles inmediatamente
para los restantes que hayan abierto el mismo archivo.

Una vez que se cierra un archivo, los cambios realizados son visibles nicamente en las
sesiones que den inicio posteriormente.

Semntica de archivos compartidos inmutables: una vez que un archivo es declarado como com-
partido por su creador, no puede ser modicado. Slo su nombre puede reutilizarse.

23.1. Proteccin.
El acceso depende de la identidad del usuario. Consiste en asociar con cada archivo y directorio
una lista de control de acceso ACL (Access-Control List) que especique los nombres de
usuario y los tipos de accesos permitidos para cada uno, el problema principal con stas listas es su
longitud. Esto puede resolverse utilizando una versin condensada de la lista de acceso, clasicando
para ello a los usuarios en tres grupos:

Propietario: usuario creador del archivo.

Grupo: conjunto de usuarios que estn compartiendo el archivo y necesitan un acceso similar.

Universo: todos los dems usuarios del sistema.

Otras tcnicas de proteccin consisten en asociar una contrasea con cada archivo. Al igual que el
acceso al sistema informtico suele controlarse mediante una contrasea, el acceso a cada archivo
puede controlarse de la misma manera. El problema esta en recordar las contraseas y que si hay una
sola, el mecanismo de proteccin deja de ser efectivo al ser descubierta.

24. Estructura de Sistemas de archivos.


Los discos constituyen el principal tipo de almacenamiento secundario para mantener sistemas de
archivos. Tienen dos caractersticas destacables:

puede ser reescrito de manera directa; es posible leer, modicar y volver a escribir en un bloque
del disco.

Se puede acceder directamente a cualquier bloque de informacin que contenga. Por tanto, resulta
simple acceder a cualquier archivo de forma secuencial aleatoria y conmutar de un archivo a otro
slo requiere mover los cabezales y esperar a que el disco termine de rotar.

En lugar de transferir un byte cada vez, las transferencias de E/S entre la memoria y el disco se realizan
en unidades de bloques para mejorar la eciencia, dividiendo a su vez cada bloque en sectores. Para
proporcionar un acceso eciente y cmodo al disco el Sistemas Operativos impone uno o ms sistemas
de archivos. Un sistema de archivos tiene dos problemas de diseo:

Gutierrez Gonzalo E.
24 ESTRUCTURA DE SISTEMAS DE ARCHIVOS. 62

Denir que aspecto debe tener para el usuario.

Crear algoritmos y estructuras de datos que permitan mapear el sistema lgico de archivos sobre
los dispositivos fsicos de almacenamiento secundario.

El propio sistema de archivos est compuesto de muchos niveles diferentes. Cada nivel de diseo utiliza
la funciones de los niveles inferiores para crear nuevas funciones que sern a su vez utilizadas por los
niveles superiores a ese. El nivel ms bajo, control de E/S, est compuesto por controladores de
dispositivo y rutinas de tratamiento de interrupcin, que se encargan de transferir la informacin entre
la memoria principal y el sistema de disco. El sistema bsico de archivo slo necesita enviar
comando genricos al controlador de dispositivo apropiado, con el n de leer y escribir los bloques
fsicos (identicados mediante su direccin de disco numrica). El mdulo de organizacin de
archivos tiene conocimiento acerca de los archivos y sus bloques lgicos, as como fsicos. Puesto que
los bloques fsicos contienen los datos no suelen corresponderse con los nmeros de bloques lgicos, es
necesario una tarea de localizacin. Este mdulo tambin incluye el gestor de espacio libre, que
controla los bloques no asignados y los proporciona al modulo de organizacin de archivos cuando se
solicitan. Finalmente, el sistema lgico de archivos gestiona la informacin de metadatos. Mantiene la
estructura de los archivos mediante bloques de control de archivo FCB (File-Control Block), tambin
es responsable de las tareas de proteccin y seguridad.
UNIX utiliza su propio sistema de archivos que est basado en FFS (Fast File System) de Berkeley,
Windows soporta formatos de sistemas de archivos de disco FAT, FAT32 y NTFS, adems de formatos
de sistemas de archivos para CD-ROM, DVD y disquete. El sistema de archivos estndar en Linux se
denomina sistema de archivos extendido: ext2, ext3 y ext4.

24.1. Implementacin de sistemas de archivos.


Los sistemas operativos implementan llamadas al sistema open() y close() para que los procesos
soliciten acceder a los contenidos de los archivos. En el disco, el sistema de archivos puede contener
informacin acerca de como iniciar un sistema operativo albergante en la misma, y la implementacin
de un sistema de archivos utiliza varias estructuras en disco y memoria que vara dependiendo del
sistema operativo y del sistema de archivos, aunque algunas de ellas son de aplicacin general:

Bloque de Control de Arraque: (por cada volumen) puede contener la informacin que un sistema
necesita para iniciar el Sistemas Operativos a partir de dicho volumen. Si el disco no contiene un
Sistemas Operativos, puede estar vaco, normalmente ser el primer bloque del volumen. En UFS
(Unix File System), se denomina bloque de inicio. En NTFS, sector de arranque de la particin.

Bloque de Control de Volumen: (por cada volumen) contiene detalles a cerca del volumen o
particin, tales como cantidad y tamao de los bloques, punteros a los que estn libres, un
contador de bloques de informacin FCB libres y punteros FCB. En UFS esto se denomina
superbloque, en NTFS tabla maestra de archivos.

Se utiliza una estructura de directorios por cada sistema de archivos.

Un bloque FTB por cada archivo contiene detalles como los permisos, propietario, tamao y
la ubicacin de los bloques de datos. En UFS esta estructura se llama inodo, en NTFS esta
informacin se almacena en la tabla maestra de archivos.

24.1.1. Sistemas de Archivos Virtuales

La implementacin de un sistema de archivos est compuesta de 3 niveles principales. El primero


es la interfaz del sistema de archivos basada en las llamadas open() y close() y en los descriptores
de archivos. El segundo, se denomina sistema de archivos virtual VFS (Virtual File System) el cual
cumple dos funciones:

Gutierrez Gonzalo E.
24 ESTRUCTURA DE SISTEMAS DE ARCHIVOS. 63

Separa las operaciones genricas del sistema de archivos con respecto a su implementacin,
deniendo una interfaz VFS clara, que permite un acceso transparente a diferentes tipos de
sistemas de archivos montados localmente.

Proporciona un mecanismo para representar de forma coherente los archivos a travs de una red.
El VFS est basado en una estructura de representacin de archivos llamada vnodo, que contiene
un designador numrico para los archivos unvocamente identicables dentro de la red.

24.2. Implementacin de directorios - Mtodos de Asignacin.


Tal vez el aspecto ms importante de la implementacin del almacenamiento en archivos es poder
relacionar bloques de disco con archivos. La seleccin de los algoritmos de asignacin de directorios y
gestin de directorios afecta signicativamente a la eciencia, prestaciones y abilidad del sistema de
archivos

1. Lista lineal: es el mtodo ms simple para implementar un directorio, consiste en utilizar una
lista lineal de nombres de archivos y con punteros a los bloques de datos. Durante la creacin es
necesario vericar que en el directorio no exista el archivo que se desea crear y para el borrado
simplemente exploramos el directorio en busca del archivo y liberamos el espacio asignado. La
principal desventaja de una lista lineal de entradas para un directorio es realizar una bsqueda
lineal para buscar un archivo, provocando como consecuencia un acceso lento a la informacin.

2. Tabla Hash: Con este mtodo se almacenan las entradas de directorios en una lista lineal, pero
tambin se utiliza una estructura de datos hash. La tabla hash toma un valor calculado a partir
del nombre del archivo y devuelve un puntero de ubicacin de dicho nombre de archivo dentro
de la lista lineal, reduciendo el tiempo de bsqueda de los mismos. Sin embargo, la principal
dicultad con las tablas hash son que su tamao, por regla general, es jo y la funcin de la tabla
hash depende del tamao.

Como se ha mencionado, el principal problema es como asignar los bloques del disco a los archivos
de tal modo que el espacio de disco se utilice ecazmente y permita un acceso rpido. A continuacin
se presenta algunas polticas de asignacin y lo deseable es que un sistema operativo utilice una sola
poltica de asignacin.

24.2.1. Asignacin contigua

Este mtodo almacena cada archivo como un conjunto de bloques contiguos de datos en el disco.
Est denida por la asignacin de disco del primer bloque y por la longitud del archivo (en unidades
de bloques). As, en un disco con bloques de 1K , a un archivo de 50K se le asignaran 50 bloques
consecutivos.
Para el acceso secuencial , el sistema de archivos recuerda la direccin de disco del ltimo bloque al
que se haya hecho referencia y leer el siguiente cuando sea necesario. Para el acceso directo al bloque i
de un archivo que comienza en el bloque b, podemos acceder directamente al bloque b+ i. Este esquema
presenta dos ventajas:

1. La implementacin es sencilla porque para saber donde estn los bloques de un archivo basta
con recordar un nmero, la direccin en disco del primer bloque.

2. El rendimiento es excelente porque es posible leer todo el archivo del disco en una sola operacin.

Sin embargo, la asignacin contigua presenta las siguientes desventajas:

1. No es factible si no se conoce el tamao mximo del archivo en el momento en que se crea


el archivo. Sin esta informacin, el sistema operativo no sabr cuanto espacio en disco debe
conservar.

Gutierrez Gonzalo E.
24 ESTRUCTURA DE SISTEMAS DE ARCHIVOS. 64

2. La fragmentacin en el disco. Se desperdicia espacio que de otra forma podra haberse aprovecha-
do. La compactacin del disco suele tener un costo prohibido, aunque tal vez pueda efectuarse
en horarios donde el sistema est ocioso.

Para minimizar aquellos problemas, algunos Sistemas Operativos utilizan un esquema modicado,
mediante el que se asigna inicialmente un bloque contiguo de espacio y, posteriormente, si no resulta
ser lo sucientemente grande, se aade otra rea contigua denominada extensin. La ubicacin de los
bloques de un archivo se registra mediante una direccin y un nmero de bloques, junto con el enlace
al primer bloque de la siguiente extensin.

24.2.2. Asignacin por lista enlazada

Este mtodo guarda cada archivo como una lista enlazada de bloques de disco, pudiendo estar los
bloques dispersos por todo el disco. La primera palabra de cada bloque se emplea como apuntador al
siguiente. El resto del bloque se destina a datos. Con este mtodo es posible utilizar todos los bloques
y no se pierden espacio por fragmentacin del disco (excepto por fragmentacin interna en el ltimo
bloque), adems, basta con que en la entrada de directorio se almacene la direccin en disco del primer
bloque. El resto del archivo puede encontrarse siguiendo los enlaces. Para encontrar el bloque i-simo
de un archivo, podemos comenzar al principio de dicho archivo y seguir los punteros hasta llegar al
bloque deseado.
El principal problema es que slo se puede utilizar ecazmente para los archivos de acceso secuencial.
Otra desventaja es el espacio requerido para los punteros. La solucin usual para este problema consiste
en consolidar los bloques en grupos, denominados clusters, y asignar clusters en lugar de bloques.

Figura 24.1: Almacenamiento como lista enlazada de bloques de disco

Adems, una desventaja ms es que el acceso aleatorio es extremadamente lenta. Una variante
importante del mecanismo de asignacin enlazada es la que se basa en el uso de una tabla de asignacin
de archivos FAT (File-Allocation Table). Una seccin del disco al principio de cada volumen se reserva
para almacenar esa tabla, que tiene una entrada por cada bloque del disco y est indexada segn el
nmero de bloque. La FAT se utiliza de forma bastante similar a una lista enlazada. Cada entrada de
directorio contiene el nmero de bloque del primer bloque del archivo. La entrada de la tabla indexada
segn ese nmero que contiene el nmero del siguiente bloque del archivo.

Gutierrez Gonzalo E.
24 ESTRUCTURA DE SISTEMAS DE ARCHIVOS. 65

24.2.3. Asignacin por lista enlazada empleando un ndice

Las dos desventajas de la asignacin por lista enlazada puede eliminarse si se toma la palabra de
apuntador de cada bloque y se le coloca en una tabla o ndice en la memoria. En la siguiente gura, el
archivo A usa los bloques de disco 4,7,2,10,12 en ese orden y el archivo B usa los bloques 6,3,11,14 en
ese orden

Figura 24.2: Asignacin por lista enlazada empleando una tabla en memoria principal

Si se emplea esta organizacin, todo el bloque est disponible para datos. Adems, el acceso directo
es mucho ms fcil. Aunque todava hay que seguir la cadena para encontrar una distancia dada dentro
de un archivo, la cadena est por completo en la memoria y puede seguirse sin tener que consultar el
disco. Basta con guardar el nmero de bloque inicial en la entrada de directorio para poder localizar
todos los bloques, por ms grande que sea el archivo. MS-DOS emplea este mtodo para la asignacin
en disco. La desventaja primordial de este mtodo es que toda la tabla debe estar en la memoria todo
el tiempo para que funcione.

24.2.4. Asignacin Indexada

Si no se utiliza una FAT, la asignacin enlazada no puede soportar un acceso directo eciente, ya
que los punteros de los bloques estn dispersos junto con los propios bloques por todo el disco y deben
extraerse secuencialmente. El mecanismo de asignacin indexada resuelve este problema agrupando
todos los punteros en una nica ubicacin: el bloque de ndice. Cada archivo tiene su propio bloque
de ndice, que es una matriz de direcciones de bloques de disco. La entrada i-sima apunta al bloque
i-simo.
El directorio contiene la direccin del bloque de ndice. Para localizar y leer el bloque i-simo,
utilizamos el puntero contenido en la entrada i-sima del bloque de ndice. Este esquema es similar
a la Paginacin. Soporta el acceso directo, sin sufrir fragmentacin externa, ya que puede utilizarse
cualquier bloque del disco para satisfacer una solicitud de ms espacio. Entre los mecanismos para
determinar el tamao del bloque de ndice estn:

Esquema enlazado: cada ndice ocupa normalmente un bloque del disco.

ndice multinivel: consiste en utilizar un bloque de ndice de primer nivel para apuntar a un
conjunto de bloques de ndice de segundo nivel, que a su vez, apuntaran a los bloques de archivo.

Esquema Combinado: utilizado en UFS, los primeros 15 punteros del bloque indican el ndice en
el nodo del archivo. Los primeros 12 hacen referencia a los bloques directos (contienen direcciones
de una serie de bloques que almacenan datos del archivo) y los 3 restantes hacen referencia a

Gutierrez Gonzalo E.
24 ESTRUCTURA DE SISTEMAS DE ARCHIVOS. 66

bloques indirectos (contiene direcciones de bloques que almacenan direcciones a punteros propios
de los bloques de datos).

24.2.5. Nodos-i

Considere en asociar a cada archivo una pequea tabla llamada nodo-i (nodo ndice), que lista los
atributos y las direcciones en disco de los bloques del archivo. Las primeras pocas direcciones de disco
se almacenan en el nodo-i mismo, as que en el caso de archivos pequeos toda la informacin esta
contenida en el nodo-i, que se trae del disco a la memoria principal cuando se abre el archivo. En el
caso de archivos mas grandes, una de las direcciones del nodo-i es la direccin de un bloque de disco
llamado bloque de indireccin sencilla. Este bloque contiene direcciones de disco adicionales. Si esto
todava no es suciente, otra direccin del nodo-i, llamada bloque de indireccin doble, contiene la
direccin de un bloque que contiene una lista de bloques de indireccin sencilla. Cada uno de estos
bloques de indireccin sencilla apunta a unos cuantos cientos de bloques de datos. Si ni siquiera con
esto basta, se puede usar tambin un bloque de direccin triple. UNIX emplea este esquema.

Figura 24.3: Nodo-i

24.2.6. Implementacin de directorios

Antes de poder leer un archivo, hay que abrirlo. Cuando se abre un archivo, el sistema operativo usa
el nombre de ruta proporcionado por el usuario para localizar la entrada de directorio. Esta entrada
proporciona la informacin necesaria para encontrar los bloques de disco. La funcin principal del
sistema de directorios es transformar el nombre ASCII del archivo en la informacin necesaria para
localizar los datos. Un problema muy relacionado con el anterior es dnde deben almacenarse los
atributos. Una posibilidad obvia es almacenarlos directamente en la entrada de directorio. En el caso
de sistemas que usan nodos-i, otra posibilidad es almacenar los atributos en el nodo-i, en lugar de en
la entrada de directorio.

Gutierrez Gonzalo E.
24 ESTRUCTURA DE SISTEMAS DE ARCHIVOS. 67

24.2.7. Directorios en CP/M

En este sistema, slo hay un directorio, as que todo lo que el sistema de archivos tiene que hacer
para consultar un nombre de archivo es buscarlo en el nico directorio. Una vez que encuentra la
entrada, tambin tiene los nmeros de bloques de disco, ya que estn almacenados en la entrada, lo
mismo que todos los atributos. Si el archivo ocupa ms bloques de disco de los que caben en una
entrada, se asignan al archivo entradas de directorio adicionales.

Figura 24.4: Entrada de directorio en CP/M

El campo alcance (extent) es necesario porque un archivo con ms de 16 bloques ocupa mltiples
entradas de directorios. Este campo sirve para saber cul entrada es primero, cul segunda, etc. El
campo de cuenta de bloque indica cuantas de las 16 posibles entradas de bloques se estn usando. Los
ltimos 16 campos contienen los nmeros de bloque de disco mismo.

24.3. Gestin del espacio libre


1. Vector de bits: la lista de espacio libre se implementa como un mapa de bits o vector de
bits. Cada bloque est representado por un bit. Si el bloque est libre es 1, sino, 0.

2. Lista Enlazada: consiste en enlazar todos los bloques de disco libres manteniendo un puntero
al primer bloque libre en ubicacin espacial del disco y almacenndolo en la memoria cach. El
primer bloque contendr un puntero al siguiente bloque libre.

3. Agrupamiento: consiste en almacenar las direcciones de n bloques libres en el primer bloque


libre. Los primeros n-1 bloques estarn realmente libres. El ltimo bloque contendr las direc-
ciones de otros n bloques libres, etc. De este modo, podrn encontrarse rpidamente las direcciones
de un gran nmero de bloques libres, a diferencia del caso en que se utilice la tcnica estndar
de lista enlazada.

4. Recuento: podemos mantener la direccin del primer bloque libre y el nmero n de bloques
libres contiguos que siguen a l. Cada entrada de la lista de espacio libre estar compuesta por
una direccin de disco y un contador. Aunque cada entrada requiere ms espacio de lo que hara
falta con una simple direccin de disco, la lista global ser ms corta, siempre y cuando el valor
de ese contador sea generalmente superior a 1.

24.4. Recuperacin
Comprobacin de Coherencia:
Parte de la informacin de directorios se almacena en la memoria principal o cach para acelerar el
acceso. La informacin de directorios en la memoria principal est ms actualizada que la correspon-
diente en el disco. El comprobador de coherencia compara los datos de la estructura de directorios con
los bloques de datos en disco y trata de corregir todas las incoherencias detectadas. Los algoritmos de
asignacin y gestin del espacio libre dictan los tipos de problemas que el comprobador puede tratar de

Gutierrez Gonzalo E.
24 ESTRUCTURA DE SISTEMAS DE ARCHIVOS. 68

detectar y el grado de xito que puede tener. La prdida de una entrada de directorio en un sistema de
asignacin indexada puede ser desastrosa, porque los bloques de datos no tienen ningn conocimiento
acerca de los dems bloques de archivos.
Copia de Seguridad y Restauracin:
La recuperacin de la prdida de un archivo individual o de un disco completo puede ser cuestin de
restaurar los datos a partir de una copia de seguridad. Para minimizar la cantidad de datos que haya
que copiar, podemos utilizar la informacin contenida en la entrada de directorio de cada archivo. Por
ejemplo, el programa de copia de seguridad sabe cuando se realiz la ltima copia de seguridad de un
archivo y la fecha de la ltima modicacin del archivo contenida en el directorio indica que el archivo
no ha cambiado desde esa fecha, no ser necesario volver a copiar el archivo. As un plan tpico de
seguridad podra ser:

Da 1: copia de seguridad completa (copiar en el soporte de copia de seguridad todos los archivos
del disco).

Da 2: copia de seguridad incremental (copiar en otro soporte fsico todos los archivos que se
hayan modicado desde el da 1).

Da n: copiar en otro soporte fsico todos los archivos modicados desde el da n-1.

24.5. Sistemas de archivos con estructura de registro


Se aplican tcnicas de recuperacin basadas en registro para las actualizaciones de los metadatos
del sistema de archivos. Todos los cambios de los metadatos se escriben secuencialmente en un registro.
Cada conjunto de operaciones necesario para realizar una tarea especca en una transaccin. Una vez
que los cambios se han escrito en este registro, se consideran conrmados y la llamada al sistema puede
volver al proceso de usuario, permitiendo continuar su ejecucin.
Mientras tanto, estas entradas de registro se aplican en las estructuras reales del sistema de archivos.
Una vez que se ha completado una transaccin conrmada, se la elimina del archivo de registro, que
es en la prctica un bufer circular. Un bufer circular escribe hasta llegar al nal del espacio asignado y
luego contina por el principio, sobreescribiendo los valores antiguos durante el proceso. Si el sistema
sufre un fallo catastrco el archivo de registro contendr 0 o ms transacciones, las cuales no habrn
sido aplicadas al sistema de archivos, aun cuando hubieran sido conrmadas por el Sistema Operativo,
por lo que ser necesario aplicarlas. Las transacciones situadas despus del puntero pueden ejecutarse
hasta que el trabajo sea completado, de modo que las escrituras del sistema de archivos sigan siendo
coherentes.

24.6. NFS (Network File System)


Los sistemas de archivos en red estn integrados con la estructura global de directorios y con la
interfaz del sistema cliente. NFS considera un conjunto de estaciones de trabajo interconectadas como
si fueran un conjunto de mquinas independientes con sistemas de archivos independientes. El objetivo
es permitir un cierto grado de comparacin entre estos sistemas de archivos de forma transparente,
basado en relaciones cliente-Servidor.
Para que pueda accederse a un directorio remoto de forma transparente desde una mquina conc-
reta, un cliente deber ejecutar en dicha mquina primero una operacin de montaje. La semntica de
esta operacin implica montar un directorio remoto sobre un directorio de un sistema de archivos local.
En algunas implementaciones de NFS se permiten los montajes en cascada, es decir, puede montarse
un sistema de archivos sobre otro que, en lugar de ser local, haya sido montado remotamente.
El protocolo de montaje establece la conexin lgica inicial entre un servidor y un cliente.
Una implementacin del montaje incluye el nombre del directorio remoto que hay que montar y el
nombre de la mquina servidora donde est almacenado. La solicitud de montaje se mapa sobre

Gutierrez Gonzalo E.
25 ESTRUCTURAS DE ALMACENAMIENTO MASIVO 69

la correspondiente llamada RPC y se reenva al servidor de montaje que se est ejecutando sobre
la mquina servidora especicada. El servidor mantiene una lista de exportacin que especica los
sistemas de archivos locales que est exportando para montaje remoto con los nombres de las mquinas
autorizadas a montarlos. El servidor tambin mantiene una lista de mquinas cliente y de los directorios
actualmente montados correspondientes a cada una.
El protocolo NFS proporciona un conjunto de llamadas RPC que soportan:
bsqueda de un archivo en un directorio,
lectura de un conjunto de entradas de directorio,
manipulacin de enlaces y directorios,
acceso a los atributos de un archivo,
lectura y escritura de archivos.
Una caracterstica importante de los servidores NFS es que no tienen memoria de estado, no mantienen
informacin de sus clientes entre un acceso y otro. Cada solicitud debe proporcionar un conjunto
completo de argumentos, incluyendo un identicador unvoco de archivo y un desplazamiento absoluto
dentro de l para realizar las operaciones apropiadas. Toda solicitud de NFS tiene un nmero de
secuencia, que permite al servidor determinar si una solicitud est duplicada o si le falta alguna
solicitud. No proporciona mecanismos de control de concurrencia y se encuadra en el Sistema Operativo
mediante un VFS que identica el archivo como remoto e invoca el procedimiento NFS apropiado.

Figura 24.5: Montaje NFS. (a) Montajes; (b) Montajes en cascada

25. Estructuras de almacenamiento masivo


25.1. Panormica de la estructura de almacenamiento masivo
Discos Magnticos: proporcionan la parte principal del almacenamiento secundario. Cada
plato tiene una forma circular plana como un CD. Las dos supercies de cada plato estn recu-
biertas de material magntico, la informacin se almacena grabndola magnticamente sobre ellos.
Un cabezal de lectura-escritura vuela sobre los platos, estos cabezales estn conectados a
un brazo del disco que mueve todos los cabezales como una sola unidad. La supercie de cada
plato est dividida en pistas circulares, que se subdividen en sectores. El conjunto de pistas que estn
situadas en una determinada posicin forman un cilindro. La velocidad de un disco est compuesta
por dos partes:

Velocidad de transferencia: velocidad con qu uyen los datos entre el disco y la


computadora.

Tiempo de posicionamiento o acceso aleatorio: compuesto del tiempo necesario


para mover el brazo del disco hasta el cilindro deseado, denominado tiempo de bsqueda, y el

Gutierrez Gonzalo E.
25 ESTRUCTURAS DE ALMACENAMIENTO MASIVO 70

tiempo requerido para que el sector deseado rote hasta pasar por debajo del cabezal del disco,
denominado latencia rotacional.

Un disco puede ser extrable como por ejemplo un disquete. Para conectar una unidad de disco con
la computadora se usa un conjunto de cable denominado bus de E/S. Las transferencias de datos en
un bus son realizadas por procesadores electrnicos denominados controladores. La controladora host
est situada en el extremo del bus correspondiente a la computadora y en cada unidad de disco se
integra una controladora de disco. Para realizar una operacin E/S de disco, la computadora coloca
un comando en la controladora host utilizando puertos de E/S mapeados en memoria, el comando se
enva mediante una serie de mensajes a la controladora de disco y sta hace operar el hard de la unidad
de disco para ejecutar el comando.

Figura 25.1: Mecanismo del cabezal mvil del disco

Cintas Magnticas: actualmente, se utilizan principalmente para copias de seguridad, para el


almacenamiento de datos de uso infrecuente y como medio para transferir informacin de un sistema
a otro. Su tiempo de acceso es lento comparado con la memoria principal y disco.

25.1.1. Estructura de un disco

Se direccionan como grandes matrices unidimensionales de bloques lgicos (unidad ms pequea de


transferencia). Esta matriz se mapa sobre los sectores del disco secuencialmente. El nmero de bloque
lgico se convierte en una direccin de disco, compuesta por el nmero de cilindro, de pista y sector.
La unidad de disco incrementa su velocidad de rotacin a medida que el cabezal se mueve de las pistas
externas a las internas, con el n de que el cabezal transera siempre la misma cantidad de datos por
segundo. Este mtodo se utiliza en las unidades de CD y DVD y se conoce como velocidad lineal
constante.
Alternativamente la velocidad de rotacin del disco puede permanecer constante y la densidad de
bits se reduce al pasar de las pistas internas a las externas, con el n de mantener constante la velocidad
de transferencia de datos. Este mtodo se utiliza en los discos duros y se conoce como velocidad
angular constante.

25.1.2. Conexin de un disco

Almacenamiento conectado al Host: se accede a travs de puertos E/S locales que


utilizan diversas tecnologas. El PC tpico emplea una arquitectura de bus de E/S denominada IDE o
ATA, la cual soporta un mximo de 2 unidades por bus. Un protocolo similar y reciente, con cableado
simplicado, es SATA (Serial Advanced Technology Attachment). Los servidores y estaciones de trabajo
de alta gama utilizan arquitecturas como SCSI (Small Computers System Interface) y FC (Fiber
Channel).

Gutierrez Gonzalo E.
25 ESTRUCTURAS DE ALMACENAMIENTO MASIVO 71

Almacenamiento conectado a la Red: un dispositivo de almacenamiento conectado a la


red NAS (Network-Attached Storage) es un sistema de almacenamiento de propsito general al que
se accede de forma remota a travs de una red de datos. Las llamadas RPC, se realizan mediante
protocolos TCP o UDP sobre una red IP, usualmente la misma red LAN que transporta todo el trco
de datos hacia los clientes. La unidad de almacenamiento conectada a la red se implementa como una
matriz RAID con un soft que proporciona la interfaz RPC.
Redes de reas de Almacenamiento SAN (Storage Area Network): es una red
privada (usa protocolos de almacenamiento no de red) que conecta los servidores con las unidades de
almacenamiento. La principal ventaja es su exibilidad, ya que pueden conectarse mltiples host y
matrices de almacenamiento a la misma SAN y los recursos de almacenamiento pueden asignarse de
manera dinmica a los hosts.

25.2. Planicacin de disco


Planicacin FCFS.

Planicacin SSTF (Shortest Seek Time First): consiste en satisfacer todas las solicitudes prx-
imas a la situacin actual del cabezal antes de desplazarlo hacia una posicin alejada para dar
servicio a otras solicitudes. Se selecciona la solicitud con tiempo mnimo de bsqueda con respec-
to a la posicin actual del cabezal. Al igual que la planicacin SJF (Shortest Job First) puede
provocar muerte por inanicin de algunas solicitudes.

Planicacin SCAN (o algoritmo de exploracin): el grafo del disco comienza en uno de los
extremos del disco comienza en uno de los extremos del disco y se mueve hacia el otro, dando
servicio a las solicitudes a medida que pasa por el cilindro. En ese otro extremo del disco se
invierte la direccin de movimiento del cabezal y se contina dando servicio a las solicitudes.

Algoritmo C-SCAN (planicacin SCAN cirular): cuando el cabezal alcanza el otro extremo,
vuelve inmediatamente al principio del disco sin dar servicio a ninguna solicitud en el viaje de
vuelta.

Planicacin LOOK: se observa si hay alguna solicitud antes de continuar movindose en una
direccin determinada.

25.3. Gestin del disco


Formateo del Disco: antes de poder almacenar datos en el disco, es necesario dividirlo en
sectores que la controladora de disco pueda leer y escribir. Este proceso se denomina formateo de
bajo nivel o formateo fsico. Este formateo llena el disco con una estructura especial (cabecera+rea
de datos+cola) para cada sector. La mayora de los discos duros se formatean a bajo nivel durante
el proceso de fabricacin, lo que permite al fabricante probar el disco e inicializar el mapeo entre
nmeros de bloques lgicos y sectores libres de defectos. Para utilizar el disco para almacenar archivos,
el Sistemas Operativos sigue necesitando poder grabar sus propias estructuras de datos en el disco y
para ello sigue un proceso de dos pasos: el primero, consiste en particionar el disco en uno o ms
grupos de cilindros; y el segundo, es el formateo lgico (creacin de un sistema de archivos), aqu
el Sistemas Operativos almacena las estructuras de datos iniciales del sistema de archivos del disco,
mapas de espacio libre y asignado (FAT o serie de inodos) y un directorio inicial vaco.
Bloque de Arranque: para que una computadora comience a operar debe tener un programa
inicial de arranque que, se encarga de inicializar todos los aspectos del sistema localizando el kernel del
Sistemas Operativos en el disco, carga dicho kernel en memoria, y salta hasta una direccin inicial con
el n de ejecutar el Sistemas Operativos. El programa de arranque se almacena en la memoria ROM.

Gutierrez Gonzalo E.
25 ESTRUCTURAS DE ALMACENAMIENTO MASIVO 72

Bloques Defectuosos: la mayora de los discos vienen, incluso de fbrica, con una serie
de bloques defectuosos, que la controladora mantiene en una lista. Esta lista se inicializa durante el
formateo de bajo nivel y se actualiza a lo largo de toda la vida del disco. El formateo de bajo nivel
tambin reserva una serie de sectores no visibles para el Sistemas Operativos, con los que puede sustituir
los defectuosos. Este se denomina reserva de sectores o sustitucin de sectores. Como alternativa a este
mecanismo, algunas controladoras ofrecen la posibilidad de sustituir un bloque defectuoso mediante
un deslizamiento de sectores a partir del prximo bloque reservado en adelante.

25.3.1. Gestin del espacio de intercambio

La utilizacin del Espacio de Intercambio se utiliza de distintas formas dependiendo de los al-
goritmos de gestin de memoria que aplica el Sistemas Operativos. Por ejemplo, los sistemas que
implementan el mecanismo de intercambio lo usan para guardar la imagen completa de un proceso,
los sistemas paginados almacenan simplemente las pginas que hayan sido expulsadas de memoria
principal. Por lo tanto, la cantidad de espacio de intercambio es variable. La ubicacin del Espacio
de Intercambio puede residir en una particin separada del disco o construirse a partir del sistema de
archivos normal. Si el espacio de intercambio se crea en una particin sin formato separada, se utiliza
un gestor de almacenamiento independiente para el espacio de intercambio, con el n de asignar y de-
sasignar los bloques de dicha particin. Este gestor utiliza algoritmos optimizados, para obtener mayor
velocidad debido a que el espacio de intercambio tiene acceso frecuente. Este espacio se reinicializa en
el momento del arranque de la mquina, por lo que cualquier fragmentacin que exista es a corto plazo.

25.4. Estructuras raid


Existen diversas tcnicas de organizacin de discos denominadas RAID (matrices redundantes de
discos de bajo coste) usadas para resolver cuestiones de velocidad y abilidad. Estas estructuras ya no
tiene una implementacin de bajo coste, por lo cual ahora la letra I corresponde a  independientes .
Mejora de la fiabilidad a travs de la Redundancia: Con este sistema almacen-
amos informacin adicional, normalmente no necesaria, pero que puede utilizarse en caso de que falle
el disco para reconstruir la informacin perdida. La tcnica ms simple, pero ms cara, es duplicar
cada uno de los discos, denominada duplicacin en espejo (mirroring), cada disco lgico estar com-
puesto por dos discos fsicos. El tiempo medio entre fallos (prdida de datos) de un volumen duplicado
depende de el tiempo medio de fallo entre discos individuales y el tiempo medio de reparacin (tiempo
que se tarda en sustituir el disco fallido y restaurar en l los datos, en promedio).
Mejora en las prestaciones a travs del Paralelismo: consideremos el modo en el
que el acceso paralelo a mltiples discos mejora las prestaciones. Con la multiplicacin en espejo de los
discos, la velocidad a la que pueden gestionarse las solicitudes de lectura se dobla. Podemos mejorar la
velocidad de transferencia dividiendo los datos entre los distintos discos. En su forma ms simple, el
mecanismo de distribucin en bandas de los datos (data striping) consiste en dividir los bits de cada
byte entre mltiples discos (distribucin de bandas a nivel de bit), esto puede generalizarse para incluir
un nmero de disco que sea un mltiplo o divisor de 8. Con el mecanismo de distribucin en bandas de
nivel de bloque, los bloques de cada archivo se dividen entre mltiples discos, con n discos, el bloque i
de un archivo va al disco (i mod n) + 1. El paralelismo en un sistema de discos que se consigue con la
distribucin en bandas, tiene dos objetivos:

Incrementar la tasa de transferencia de mltiples accesos de pequea envergadura (accesos de


pgina), distribuyendo la carga entre los distintos discos.

Reducir el tiempo de respuesta a los accesos de gran volumen.

Gutierrez Gonzalo E.
25 ESTRUCTURAS DE ALMACENAMIENTO MASIVO 73

25.4.1. Niveles RAID

Nivel 0 : hace transferencias a matrices de discos con distribucin de bandas en el nivel de bloques,
pero sin ninguna redundancia.

Nivel 1 : hace referencia a la duplicacin en espejo.

Nivel 2 : conocido como organizacin con cdigo de correccin de errores EEC de tipo memoria.
Puede utilizarse directamente en las matrices de discos distribuyendo los bytes entre los distintos
discos. Los bits de correccin de errores se almacenan en discos adicionales. Si uno de los discos
falla, los restantes bits del byte y los bits de correccin de errores pueden leerse en otros discos
y utilizarse en la reconstruccin.

Nivel 3 : u organizacin de paridad con entrelazado de bits, tiene el cuenta que las controladoras
de disco pueden detectar si un sector ha sido ledo correctamente, utilizando un nico bit para la
deteccin y correccin de errores. Si uno de los sectores est daado, sabemos cul es y podemos
determinar si algn bit del sector es 1 o 0 calculando la paridad. Si la paridad de los bits restantes
iguala la paridad almacenada, el bit que falta es 0, sino 1. El problema es el gasto adicional
necesario para calcular y escribir los valores de paridad. Por ello, muchas RAID incluyen una
controladora hard con circuitera dedicada al clculo de paridad.

Nivel 4 : u organizacin de paridad con entrelazado de bloques, utiliza distribucin en bandas


de nivel de bloque y mantiene un bloque de paridad en un disco separado, con informacin de
paridad para los bloques correspondientes a los otros n discos. Una lectura de un bloque slo
accede a un disco permitiendo que los otros procesen otras solicitudes, dicho paralelismo lleva a
una mayor tasa de E/S global.

Nivel 5 : o paridad distribuda son entrelazado de bloques, diere de RAID 4 en que se distribuyen
los datos y la informacin de paridad entre los n+1 discos.

Nivel 6 : o esquema de redundancia P+Q, similar a RAID5, pero almacena informacin redun-
dante adicional para proteger los datos frente a mltiples fallos de disco. En lugar de emplearse
informacin de paridad, se utilizan cdigos de correccin de errores, como Reed- Solomon.

Nivel 0+1 : hace referencia a una combinacin de los niveles 0 y 1. El 0 proporciona mejora en
las prestaciones, mientras que el 1 proporciona abilidad. Ofrece mayor rendimiento que RAID5.
Se distribuye en bandas un conjunto de discos y luego ese conjunto se duplica en espejo en otro
conjunto equivalente.

Gutierrez Gonzalo E.
26 INTRODUCCIN A LOS SISTEMAS OPERATIVOS DISTRIBUIDOS 74

Sistemas Distribuidos
26. Introduccin a los Sistemas Operativos Distribuidos
Antes las computadoras resultaban caras e independientes debido a su sistema centralizado. En
1980, surgen dos avances tecnolgicos: el desarrollo de microprocesadores y la la invencin de las
REDES (LAN y WAN) lo que llev a la implementacin de los Sistemas Operativos Distribuidos (en
resumidas palabras SOD).
La denicin de SOD contempla los aspectos de hardware y software. Un SOD es una coleccin de
computadoras independientes que aparecen ante los usuarios del sistema como una nica computadora.

26.1. Ventajas e inconvenientes de los Sistemas distribuidos


Una de las principales ventajas de los sistemas distribuidos es el bajo coste que tienen los micro-
procesadores hoy en da y que permiten el diseo de un computador con tantos microprocesadores
como se necesiten y que en ocasiones no se podra contar con un nico procesador que equivalga al
conjunto. Es por ello importante considerar que en los sistemas distribuidos hay grandes ventajas en la
realizacin de clculos matemticos, permitiendo tener as un mejor rendimiento y una gran variedad
de aplicaciones que son inherentemente distribuidas.
Otro motivo por el que es conveniente un sistema distribuido es su mayor abilidad, puesto que un
fallo en un procesador afectar como mucho a una mquina pero el resto podra seguir funcionando.
Si todo dependiese de un slo computador, el fallo de este provocara el colapso de todo el sistema.
Por ltimo cabe destacar la posibilidad que en los sistemas distribuidos se puede experimentar un
crecimiento incremental, segn las necesidades de ampliacin que se vallan produciendo en el futuro. Si
slo se dispone de un gran computador (sistema centralizado) y llegara el momento que en la empresa
el computador ya no es el adecuado, la solucin ser remplazarlo por uno ms grande o aadir un
segundo computador. Con un sistema distribuido, se van aadiendo nuevos computadores segn se van
necesitando, es decir, un crecimiento por incrementos (desarrollo gradual conforme a las necesidades)
la escalabilidad.
Otras ventajas en resumidas palabras son: comparacin de la informacin sin preocuparse por la dis-
tribucin fsica, (todo esto con respecto a los sistemas centralizados), comparacin de datos perifricos,
mejor comunicacin, mayor exibilidad, (todo esto con respecto a las computadoras individuales).
Sin embargo, los sistemas distribuidos tambin tienen sus desventajas. Entre ellas hay que destacar
la del software, que todava no est muy desarrollado. Las inherentes a las redes de comunicacin, las
posibles prdidas de informacin en la transmisin y el grave problema de la seguridad. Tambin hay
que tener en cuenta que si el sistema crece la red puede llegar a saturarse, tenindose que ampliar
o cambiar el soporte fsico de transmisin. El problema de la seguridad se vuelve crucial, ya que la
posibilidad de comparacin de los datos tambin permite que personas que en un principio no estn
autorizadas, puedan acceder a los mismos.

26.2. Conceptos de Hardware:


26.2.1. Taxonoma de Flynn

Est basada en el ujo de instrucciones I y datos D ( simple S, Multiple M):

SISD (pc, antiguos mainframe),

MISD (situaciones de paralelismo redundante, por ej sistemas de navegacin area, donde se


necesitan sistemas de respaldo de reemplazo ante la falla de uno),

SIMD (sistemas paralelos como por ej un procesador vectorial),

Gutierrez Gonzalo E.
27 HARDWARE DE LOS MULTIPROCESADORES. 75

MIMD SOD.

Otra dimensin de la taxonoma es que, en ciertos sistemas, las mquinas estn fuertemente acopladas y
en otras estn dbilmente acopladas. En un sistema fuertemente acoplado, el retraso que se experimenta
al enviar un mensaje de una computadora a otra es corto y la tasa de transmisin de los datos, es
decir, el nmero de bits por segundo que se puede transferir, es alta. En un sistema dbilmente acoplado
ocurre lo contrario: el retraso de los mensajes entre las mquinas es grande y la tasa de transmisin de
los datos es baja. Los sistemas fuertemente acoplados tienden a utilizarse como sistemas distribuidos
aunque esto no siempre es cierto.

27. Hardware de los multiprocesadores.


Los multiprocesadores se pueden aplicar para aumentar la productividad del sistema, al poder
ejecutarse diferentes procesos de usuario sobre algunos procesadores en paralelo y para ganar velocidad
en la aplicacin. Existen diversos conceptos del hardware correspondiente a los sistemas distribuidos,
entre los que se incluyen:

1. Multiprocesadores con bus compartido.

2. Sistemas conectados mediante barras cruzadas.

3. Sistemas conectados mediante una red de conmutacin multietapa.

4. Conexiones hipercubo.

La importancia de la forma de conexin radica en la inuencia dominante que tiene sobre el ancho
de banda y la saturacin de la comunicacin en el sistema. A continuacin se resumir brevemente
las formas de conexin indicadas y la capacidad de cada una de las arquitecturas de expandirse para
soportar un mayor nmero de procesadores (escalabilidad).

27.1. Multiprocesadores con bus compartido


Una de las formas ms sencillas de construir un sistema multiprocesador es usar un bus compartido
para conectar los procesadores y la memoria, tal como se esquematiza en la siguiente gura.

Figura 27.1: Esquema de un mltiprocesador con bus compartido

Los multiprocesadores con base en buses constan de cierta cantidad de CPU, conectados a un bus
comn, junto con un mdulo de memoria. Una conguracin sencilla consta de un plano de base de
alta velocidad o tarjeta madre, en el cual se pueden insertar las tarjetas de memoria y el CPU. Un bus
tpico tiene 32 o 64 lneas de direcciones, 32 o 64 lneas de datos y 32 o ms lneas de control, todo lo
cual opera en paralelo.
Para que un procesador lea una palabra de la memoria debe colocar la direccin de la palabra
deseada en las lineas de direccin del bus y activar la seal de lectura en la linea de control adecuada.
La memoria responde situando el contenido de la palabra en las lineas de datos. Similar con la escritura.

Gutierrez Gonzalo E.
27 HARDWARE DE LOS MULTIPROCESADORES. 76

Si un procesador escribe una palabra sobre la memoria y otro lee esa palabra, el ltimo procesador
obtendr el valor escrito previamente por el primer procesador. Sin embargo, el problema es que el bus
se puede saturar. Una posible solucin es disponer de alguna forma de memoria cach:

Ya sea asocindola con la memoria compartida, en este caso los procesadores acceden a ella por
el bus

O asignar a cada procesador una cach, tal como se muestra en la Figura 27.1. La cache almacena
todas las palabras a las que se han ingresado y todas las solicitudes pasan por la cache. Si una
palabra solicitada ya est en ella, esta responde al procesador y no se hace uso del bus.

La existencia de mltiples cachs presentan problemas de coherencia de la informacin almacenada en


ellas. Para mantener esta coherencia se utilizan protocolos especializados y hardware adicional como
los espas monitores de cachs, que observan el bus y cuando se hace una peticin de escritura en
una direccin presente en la cach se actualiza con el nuevo valor.
La escalabilidad de este esquema est limitada por el bus y la memoria compartida. En imple-
mentaciones comerciales se soportan del orden de 10 procesadores. Es un esquema sencillo, por lo que
muchos diseos estn basados en bus compartido.

27.1.1. Multicomputadoras con base en buses

Por otro lado, la construccin de una multicomputadora es fcil. Cada CPU tiene conexin directa
con su propia memoria local. El nico problema restante es la forma en que los CPU se comunicarn
entre s. Es claro que aqu tambin se necesita cierto esquema de interconexin, pero como slo es para
la comunicacin entre un CPU y otro, el volumen del trco ser de varios rdenes menor en relacin
con el uso de una red de interconexin para el trco CPU-memoria.

27.2. Sistemas conectados mediante barras cruzadas.


Para construir un multiprocesador con ms de 64 procesadores, es necesario un mtodo distinto
par conectar cada CPU con la memoria. Las barras cruzadas permiten sistemas multiprocesadores que
contienen un elevado nmero de procesadores, en este caso se dispone de n memorias y n procesadores
conectados mediante conmutadores. En cada interseccin est un delgado conmutador de punto de
cruce electrnico que el hardware puede abrir y cerrar.

Figura 27.2: Conexin mediante barras cruzadas

La conmutacin en los cruces es la nica fuente de retardo entre los procesadores y la memoria.
La contencin en el acceso a la memoria slo ocurre cuando un procesador intenta acceder a la misma
memoria y al mismo tiempo que otro.
El esquema de barras cruzadas permite un elevado grado de paralelismo entre tareas no relacionadas,
pero se presentan problemas de contencin cuando hay procesos con memoria compartida. Para n
procesadores P y n memorias M se necesitan n2 conmutadores, por lo que los sistemas basados en
barras cruzadas tienen un coste elevado y por lo tanto se limita la escalabilidad del sistema.

Gutierrez Gonzalo E.
28 TIPOS DE SISTEMAS OPERATIVOS PARA SISTEMAS DISTRIBUIDOS. 77

27.2.1. Multicomputadoras con conmutador:

Se han propuesto y construido varias redes de interconexin, pero todas tienen la propiedad de
que cada CPU tiene acceso directo y exclusivo a su propia memoria particular. Hay dos topologas
populares, una retcula y un hipercubo.

28. Tipos de Sistemas Operativos para sistemas distribuidos.


Un sistema distribuido proporciona a los usuarios acceso a los distintos recursos hardware y software
que ofrece el sistema. El acceso a estos recursos lo controla el sistema operativo, que es en realidad
quien proporciona la imagen nal que ven los usuarios. El software dbilmente acoplado permite que las
mquinas y los usuarios de un SOD sean independientes entre s en lo fundamental, pero que interactuen
en cierto grado cuando sea necesario. Si la red falla por alguna razn, las mquinas continan su
ejecucin en grado considerable, aunque se pierda cierta funcionalidad.
Los sistemas operativos realmente distribuidos corresponden a sistemas de software fuertemente
acoplados. En este caso los usuarios no necesitan saber que existen mltiples mquinas y acceden a los
recursos remotos de la misma forma que lo hacen para los recursos locales.

28.1. Sistemas operativos de redes


Tanto el software como el hardware son dbilmente acoplados. La funcin principal de un sistema
operativo de red es ofrecer mecanismos para transferir archivos o poder dar rdenes de ejecucin de
programas desde una mquina a otra.
Un ejemplo clsico de esta combinacin es un sistema de red LAN, normalmente todos los usuarios
tienen una estacin propia para uso exclusivo que puede o no tener un disco duro, donde se ejecutan
los comando. El computador del usuario funciona como un terminal del computador remoto. Para
comunicarse y distribuir la informacin entre los distintos nodos, se proporciona un sistema de archivos
global, formado por varias mquinas servidoras de archivos, que aceptan solicitudes de lectura/escritura
por parte de los clientes.

28.2. Sistemas realmente distribudos


El software es fuertemente acoplado y el hardware dbilmente acoplado. Es una coleccin de diversas
mquinas con imagen de nico sistema o de mquinas enlazadas mediante una red que actan como un
uniprocesador virtual. Esencialmente, los usuarios no son conscientes de la existencia de varios CPU
en el sistema.
En un sistema realmente distribuido los usuarios pueden acceder a los recursos remotos de la misma
manera que lo hacen a los recursos locales. La migracin de datos y procesos de una mquina a otra
queda bajo el control del sistema operativo distribuido. En un sistema distribuido debe existir un
mecanismo global entre los procesos que permita que se puedan comunicar unos con otros.
La administracin de procesos y apariencia del sistema de archivos son iguales en todos los nodos.
Consecuencia lgica de tener una misma interfaz de llamadas al sistema en todas partes, es normal que
se ejecuten ncleos idnticos en todos los CPU del sistema, facilitando la coordinacin de actividades
globales. Sin embargo, cada ncleo debe tener un control considerable de sus recursos locales (por ej
la capacidad de memoria ya que no es compartida).

28.3. Sistemas de multiprocesador con tiempo compartido


El software y hardware son fuertemente acoplados (ej: maquinas dedicadas a BD). La caracterstica
clave es la existencia de una cola de ejecucin (procesos en el sistema que no estn bloqueados y estn
listos para ejecutarse). Los principales recursos del sistema, el procesador, la memoria, dispositivos

Gutierrez Gonzalo E.
29 ASPECTOS DEL DISEO DE UN SOD. 78

de E/S, son continuamente utilizados entre los diversos usuarios, dando a cada usuario la ilusin
de que tiene el sistema dedicado para s mismo. Esto trae como consecuencia una gran carga de
trabajo al Sistema Operativo, principalmente en la administracin de memoria principal y secundaria.
Los multiprocesadores con memoria compartida tambin ofrecen la imagen de nico sistema, pero
lo hacen mediante la va de centralizar todo, por lo que en realidad, este caso es un sistema. Los
multiprocesadores con memoria compartida no son sistemas distribuidos.

Elemento S.O. de Red S.O.D. S.O. multiprocesador

Transparencia No Si Si

Ejecutan el mismo Sistema Operativo No Si Si

Copias del Sistema Operativo nn n 1

Comunicacin Archivos compartidos Mensajes Memoria compartida

Requiere protocolos de red Si Si No

Semntica p/archivos compartidos No Si Si

Cuadro 1: Cuadro comparativo

29. Aspectos del diseo de un sod.


Transparencia: implica disear la imagen de nico sistema.

Transparencia de localizacin: los usuarios no pueden indicar la localizacin de los recursos.

Transparencia de migracin:los recursos se pueden mover a voluntad sin cambiar sus nombres.

Transparencia de rplica: los usuarios no pueden indicar el nmero de copias existentes.

Transparencia de concurrencia: varios usuarios pueden compartir recursos de manera automtica.

Transparencia de paralelismo: las actividades pueden ocurrir en paralelo sin el conocimiento de


los usuarios. Flexibilidad: El diseo de un sistema distribuido debe hacerse con la idea de facilitar
los cambios futuros.

Flexibilidad: El diseo de un sistema distribuido debe hacerse con la idea de facilitar los cambios
futuros.
Confiabilidad: Uno de los objetivos originales de la construccin de sistemas distribuidos fue el
hacerlos ms conables que los sistemas con un procesador. La idea es que si una mquina falla, alguna
otra mquina se encargue del trabajo. En otras palabras, en teora, la conabilidad global del sistema
podra ser el Or Booleano de la conabilidad de los componentes.

Disponibilidad: Se reere a la fraccin de tiempo en que se puede utilizar el sistema.

Seguridad: Los archivos y otros recursos deben ser protegidos contra el uso no autorizado.

Tolerancia de fallas: los SOD se deben disear de forma que escondan las fallas.

Desempeo: Cuando se ejecuta una aplicacin en un sistema distribuido, no debe parecer peor que su
ejecucin en un procesador. Se pueden utilizar diversas mtricas de desempeo. El tiempo de respuesta
es una, pero tambin lo son el rendimiento, uso del sistema y cantidad consumida de la capacidad de
la red.
Escalabilidad: Disear un SOD que pueda escalar hacia sistemas ms grandes en un futuro.

Gutierrez Gonzalo E.
30 COMUNICACIN EN LOS SOD 79

30. Comunicacin en los SOD


30.1. Protocolos con capas
MODELO OSI: El modelo de referencia de Interconexin de Sistemas Abiertos (OSI, Open
System Interconnection). Distingue dos tipos de protocolos:

Orientados hacia las conexiones (emisor y receptor establecen conexin y conguracin).

Sin conexin (no necesita conguracin previa, el emisor transmite el mensaje cuando est listo).

Se divide en 7 capas, c/u proporciona una interfaz con la que est encima de ella. El soft de la capa de
aplicacin aade un encabezado al frente del mje. La coleccin de protocolos utilizados en un sistema
particular se llama serie o pila de protocolos.

1. Capa fsica: se preocupa por la transmisin de 0 y 1, estandarizacin de las interfaces elctricas,


mecnicas y de sealizacin.

2. Capa de enlace de datos: detecta y corrige los errores de la red. Agrupa bits en unidades llamadas
marcos, y revisa que c/u se reciba de forma correcta, mediante una suma de vericacin.

3. Capa de red: se encarga del ruteo, de acuerdo con el trco de red. Se utilizan los protocolos
X.25 (orientado a la conexin) e IP (sin conexin).

4. Capa de transporte: Capa encargada de efectuar el transporte de los datos (que se encuentran
dentro del paquete) de la mquina origen a la de destino, independizndolo del tipo de red
fsica que se est utilizando. Sus protocolos son TCP (Transmission Control Protocol) y UDP
(Universal Datagrama Protocol), el primero orientado a conexin y el otro sin conexin.

5. Capa de sesin: proporciona control del dialogo y facilidades en la sincronizacin para vericar
fallos.

6. Capa de presentacin: Traductor. En ella se tratan aspectos tales como la semntica y la sintaxis
de los datos transmitidos, ya que distintas computadoras pueden tener diferentes formas de
manejarlas. Esta capa tambin permite cifrar los datos y comprimirlos.

7. Capa de aplicacin: conjunto de protocolos para actividades comunes. El usuario interacta con
esta capa.

30.2. Redes con modo de transferencia asncrona


MODELO DE TRASFERENCIA ASNCRONA ATM: Un emisor establece primero una
conexin con el receptor. Se determina una ruta entre ellos, se guarda informacin del ruteo de los
conmutadores a lo largo del camino. Mediante esa conexin se pueden enviar los paquetes, pero el
hard lo separa en pequeas unidades de tamao jo, celdas de un circuito virtual, las cuales siguen la
misma ruta. Cuando ya no se necesita la conexin, se libera y se purga la informacin del ruteo de los
conmutadores.
MODELO CLIENTE-SERVIDOR: Esta arquitectura consiste bsicamente en un cliente que
realiza peticiones a otro programa (el servidor) que le da respuesta. La separacin entre cliente y
servidor es una separacin de tipo lgico, donde el servidor no se ejecuta necesariamente sobre una
sola mquina ni es necesariamente un slo programa. Los tipos especcos de servidores incluyen los
servidores web, los servidores de archivo, los servidores del correo, etc. Mientras que sus propsitos
varan de unos servicios a otros, la arquitectura bsica seguir siendo la misma.

Gutierrez Gonzalo E.
30 COMUNICACIN EN LOS SOD 80

Figura 30.1: Capas del modelo OSI

La red cliente-servidor es aquella red de comunicaciones en la que todos los clientes estn conectados
a un servidor, en el que se centralizan los diversos recursos y aplicaciones con que se cuenta; y que
los pone a disposicin de los clientes cada vez que estos son solicitados. Esto signica que todas las
gestiones que se realizan se concentran en el servidor, de manera que en l se disponen los requerimientos
provenientes de los clientes que tienen prioridad, los archivos que son de uso pblico y los que son de
uso restringido, los archivos que son de slo lectura y los que, por el contrario, pueden ser modicados,
etc.
Las Ventajas son:

Centralizacin del control: los accesos, recursos y la integridad de los datos son controlados por el
servidor de forma que un programa cliente defectuoso o no autorizado no pueda daar el sistema.

La ventaja fundamental de una arquitectura n-capas comparado con una arquitectura de dos
niveles (o una tres-capas con una de dos niveles) es que separa hacia fuera el proceso, eso ocurre
para mejorar el balance la carga en los diversos servidores; es ms escalable. >> facilidad de
implementacin.

Escalabilidad.

Fcil mantenimiento: al estar distribuidas las funciones y responsabilidades entre varios orde-
nadores independientes, es posible reemplazar, reparar, actualizar, o incluso trasladar un servidor,
mientras que sus clientes no se vern afectados por ese cambio.

Gutierrez Gonzalo E.
30 COMUNICACIN EN LOS SOD 81

Figura 30.2: Modelo cliente-servidor

LLAMADAS A UN PROCEDIMIENTO REMOTO RPC: Es un caso especial del


modelo general de pasaje de mensajes. Es un mecanismo ampliamente aceptado para la intercomu-
nicacin de procesos en sistemas distribuidos. Es un caso especial del modelo general de pasaje de
mensajes. Es un mecanismo ampliamente aceptado para la intercomunicacin de procesos en sistemas
distribuidos.
Paso de parmetros

Al empaquetado de argumentos se le llama marshaling.

Al desempaquetado de argumentos se le llama unmarshaling.

Paso de argumentos por valor (argumentos de entrada): El programa cliente copia los argumentos
al stub, el stub lo enva por la red, el stub servidor copia los argumentos al procedimiento remoto.

Paso de argumentos por referencia (resultados, argumentos de salida o argumentos de entra-


da/salida): Para pasar por referencia, lo habitual suele ser pasar por valor, pero el stub cliente
debe sobrescribir los datos que reciba de la red encima de los argumentos que recibi del programa
cliente.

MIDDLEWARE: software de conectividad que ofrece un conjunto de servicios que hacen posible el
funcionamiento de aplicaciones distribuidas sobre plataformas heterogneas. Funciona como una capa
de abstraccin de software distribuida, que se sita entre las capas de aplicaciones y las capas inferiores
(Sistemas Operativos y red). El middleware abstrae de la complejidad y heterogeneidad de las redes de
comunicaciones subyacentes, as como de los sistemas operativos y lenguajes de programacin, propor-
cionando una API para la fcil programacin y manejo de aplicaciones distribuidas. Dependiendo del
problema a resolver y de las funciones necesarias, sern tiles diferentes tipo de servicios de middleware.
Por lo general el middleware del lado cliente est implementado por el Sistema Operativo subyacente,
el cual posee las bibliotecas que implementan todas las funcionalidades para la comunicacin a travs
de la red.

Gutierrez Gonzalo E.
30 COMUNICACIN EN LOS SOD 82

Seguridad
El nombre genrico del conjunto de herramientas diseadas para proteger los datos y frustrar a los
piratas informticos (hackers) es el de SEGURIDAD DE COMPUTADORES.

30.3. Requisitos de Seguridad:

Condencialidad: exige que la informacin de un sistema de computadoras sea accesible para


lectura solamente por grupos autorizados. Este tipo de acceso incluye impresin, visualizacin y
otras formas de revelacin.

Integridad: exige que los elementos de un sistema de computadoras puedan ser modicados slo
por grupos autorizados. La modicacin incluye escritura, cambio, cambio de estado, borrado y
creacin.

Disponibilidad: exige que los elementos de un sistema de computadoras estn disponibles a grupos
autorizados. Tipos de Amenazas:

Interrupcin: se destruye un elemento del sistema, se hace inasequible o intil >> amenaza a la
disponibilidad.

Intercepcin: una parte no autorizada consigue acceder a un elemento >> condencialidad.

Alteracin: una parte no autorizada no slo consigue acceder, sino que falsica un elemento
>>integridad.

Invencin: una parte no autorizada inserta objetos falsos en el sistema >> integridad.

Figura 30.3: Amenazas a la seguridad y elementos

Las amenazas pasivas son del gnero de las escuchas a escondidas o supervisin de las transmisiones
de una organizacin. El objetivo del agresor es obtener la informacin que se est transmitiendo. Estas

Gutierrez Gonzalo E.
30 COMUNICACIN EN LOS SOD 83

amenazas son de 2 tipos: divulgacin del contenido de los mensajes y anlisis del trco. Las amenazas
activas suponen alteracin del ujo de datos o la creacin de ujo falso.
Se dividen en 3 categoras: alteracin del ujo de mensajes (se modica una porcin del mensaje
legtimo), privacin del servicio (prohbe o inhibe el uso normal del servicio) y suplantacin (una
entidad nge ser otra diferente).
Un Sistemas Operativos puede ofrecer proteccin (surge como necesidad ante la comparacin de
recursos en un entorno multiprogramado) de tipo:

ninguna proteccin,

aislamiento: cada proceso opera separadamente de los dems, sin comparacin ni comunicacin,

compartir todo o nada: el propietario declara publicidad o privacidad del objeto,

compartir por limitacin del acceso: se comprueba la licencia de acceso de los usuarios,

compartir por capacidades dinmicas: creacin dinmica de derechos de comparacin,

uso limitado de un objeto (por ejemplo se puede permitir a un usuario ver un documento pero
no imprimirlo).

30.3.1. Intrusos (hacker o cracker):

Su objetivo es obtener acceso a un sistema o aumentar el conjunto de privilegios accesibles en un


sistema. Requiere que el intruso obtenga informacin que debera estar protegida, que en la mayora de
los casos, est en forma de contrasea. Un sistema debe mantener un archivo que asocia una contrasea
a cada usuario y puede protegerse de 2 maneras:
cifrado unidireccional
control de acceso.
Proteccin de Contraseas: la contrasea sirva para autenticar el ID del individuo que se
conecta al sistema, a su vez el ID determina:

si el usuario est autorizado para obtener acceso al sistema,

los privilegios convenidos con el usuario.

Estrategias de eleccin de contraseas:

formacin del usuario,

generadas por el computador,

inspeccin reactiva (el Sistemas Operativos ejecuta peridicamente un averiguador de contraseas


para encontrar las que sean adivinables),

inspeccin pro activa (el usuario elige su contrasea y el Sistemas Operativos comprueba si es
permisible).

Enfoque para la deteccin de intrusiones:

1. Deteccin de anomalas estadsticas

a) Deteccin del nivel crtico: supone la denicin de umbrales, independientes del usuario,
para la frecuencia de aparicin de diversos sucesos.

b) Deteccin basada en perles: construccin del perl de actividad de cada usuario.

Gutierrez Gonzalo E.
30 COMUNICACIN EN LOS SOD 84

2. Deteccin basada en reglas

a) Deteccin de anomalas: reglas para detectar desviaciones con respecto a pautas de uso.

b) Identicacin de penetraciones: mtodo de un sistema experto que persigue comportamien-


tos sospechosos.

Los mtodos estadsticos intentan denir un comportamiento normal o esperado, mientras que los
basados en reglas, intentan denir un comportamiento correcto.

30.4. Virus y amenazas afines

Trampillas: punto de entrada secreto y no documentado a un programa, empleado para otorgar el


acceso fuera de los mtodos usuales de autenticacin.
Bomba Lgica: lgica incrustada en un programa de computador que se comprueba cuando se
presenta un cierto conjunto de condiciones en el sistema (por ej presencia o ausencia de ciertos archivos,
un da concreto en la semana, una fecha, un usuario particular que ejecute la aplicacin). Cuando se
cumplan dichas condiciones, ejecutar alguna funcin que provee a acciones no autorizadas.
Caballos de Troya: rutina secreta y no documentada incrustada en un programa til de usuario.
La ejecucin del programa origina la ejecucin de dicha rutina. Puede usarse para obtener acceso a los
archivos de otro usuario en un sistema compartido o destruccin de datos.
Virus: cdigo gentico (ADN o ARN) incrustado en un programa que hace que se inserte una copia
de s mismo en uno o ms programas. Adems de la propagacin el virus puede realizar alguna funcin
no deseada.
Gusano: programa que al estar activo en un sistema puede comportarse como un virus o bacteria,
o bien puede implantar caballos de troya. Para reproducirse, un gusano de red utiliza algn tipo de
vehculo en la red, por ej: servicio de correo electrnico, posibilidad de ejecucin remota o posibilidad
de conexin remota. La nueva copia del gusano se ejecuta en el sistema remoto donde adems de las
funciones que realiza continua propagndose.
Bacteria: programa que consume recursos del sistema reproducindose exponencialmente a s mismo
hasta agotar toda la capacidad del procesador, memoria o espacio en disco, privando a los usuarios del
acceso a dicho recurso.

Etapas de vida de un virus:

1. Fase latente: est inactivo.

2. Fase de propagacin: sita una copia de l en otro programa o zona del sistema en disco.

3. Fase de activacin.

4. Fase de ejecucin.

Tipos de virus:

Parsitos: se engancha a archivos ejecutables y se reproduce al ejecutar el programa infectado.

Residentes en memoria: se alojan en la memoria principal como parte de un programa e infecta


a todos los programas que se ejecutan.

Del sector de arranque: infecta el sector de arranque y se propaga cuando el sistema se arranca
desde el disco que contiene el virus.

Gutierrez Gonzalo E.
30 COMUNICACIN EN LOS SOD 85

Mtodos antivirus: generacin de soft antivirus

Primera generacin: rastreadores simples limitados a la deteccin de virus conocidos.

Segunda generacin: rastreadores heursticos busca infecciones probables por virus, descifra el
virus para identicarlo, elimina la infeccin y pone el programa en servicio nuevamente.

Tercera generacin: trampas de actividad identican al virus por sus acciones ms que por la
estructura del programa infectado.

Cuarta generacin: proteccin completa paquetes con una variedad de tcnicas antivirus uti-
lizadas en conjunto, como componentes de rastreo, trampas de actividad y control de acceso.

Sistemas de confianza

Proporcionan un medio regular de acceso a los datos en funcin de quin est autorizado a qu. El
punto clave es que se diseo e implement de forma que los usuarios puedan tener completa conanza
de que el sistema aplicar una poltica de seguridad determinada.

Seguridad en redes

Introduce nuevas cuestiones como el cifrado, la herramienta automtica ms importante para se-
guridad en redes y comunicaciones. Es un proceso que oculta los signicados cambiando mensajes
inteligibles por ininteligibles. La mayora de los equipos de cifrados disponibles comercialmente em-
plean cifrado convencional, donde las dos partes comparten una nica clave de cifrado y descifrado. La
alternativa es un esquema de cifrado de clave pblica, en el que entran en juego dos claves, una para
cifrar y otra para descifrar.

Gutierrez Gonzalo E.
31 INTRODUCCIN 86

Seguridad en sistemas operativos Mviles


31. Introduccin
Hasta la aparicin de iOS de Apple y Android de Google, los sistemas operativos para moviles
apenas tenan protagonismo en el mercado de dispositivos mviles. Estaban muy enfocados a terminales
concretos, con una funcionalidad limitada, quedando las aplicaciones externas o funcionalidades ms
avanzadas como la navegacin a travs de Internet.
Con la llegada de iOS en 2007 y Android en 2008, el panorama de los dispositivos mviles comenz
a cambiar rpidamente y en la actualidad, iOS y Android estn marcando el camino en el desarrollo
de las tecnologas mviles ya que acaparan la mayora del mercado para estos dispositivos.

Figura 31.1: Cuota de mercado de los sistemas operativos para moviles

Unida a la llegada de los nuevos sistemas operativos, tambin han aparecido nuevos dispositivos,
como siendo los telfonos inteligentes con pantalla y las tabletas tctiles. De este hecho, los actuales
sistemas operativos moviles pueden ser instalados en distintos dispositivos, por ejemplo el iOS puede
ser instalado tanto en iPhone como en iPad. Con este n, se pretende unicar plataformas software,
para que funcionen en distintos dispositivos y es muy posible que en un futuro cercano tenga lugar una
fusin entre los sistemas operativos para dispositivos mviles y los sistemas operativos de escritorio.
Pero todo ello tiene un importante implicancia desde el punto de vista de la seguridad.

31.1. Dispositivos mviles y seguridad.


Anteriormente, de forma muy breve, se han repasado los cambios que han trado las tecnologas
mviles, pero, Como afectan dichos cambios a la seguridad?.
Esta pregunta no es sencilla de responder y, sobre todo estando en una fase temprana del desarrollo
y expansin de este tipo de tecnologa. Se pretende ver algunos puntos claves de como los cambios que
se estn produciendo afectan a la seguridad de estos sistemas operativos.

31.2. cdigo malicioso


Es evidente que los dispositivos mviles son cada vez ms potentes, y adems estn expuestos cada
vez ms a amenazas tales como en el caso de sus hermanos mayores los ordenadores. Un ejemplo de
ellos es el cdigo malicioso malware y en estos dos ltimos aos el nmero de mviles ha crecido y
cuando una tecnologa comienza a ser muy utilizada, el nmero de amenazas para estas aumentan.
No ha sido hasta la llegada de las aplicaciones mviles y los servicios en la nube, cuando se ha
comenzado a gestionar importantes cantidades de informacin, tanto generada por el usuario como se
fotografas, videos y mensajes, sino tambin a travs de distintos servicios o de sus aplicaciones. Cuanto
ms se popularicen las tecnologas mviles, aumentar la cantidad de informacin que es almacenada y
gestionada en los dispositivos, lo que implicar importantes riesgos para la privacidad de los usuarios.

Gutierrez Gonzalo E.
32 SISTEMA OPERATIVO ANDROID 87

31.3. Prdida o fuga de informacin


Debido a que hoy en da los terminales mviles son autnticos dispositivos de almacenamientos, es
posible que dicho dispositivo tenga informacin personal relevante al usuario a travs de fotografas,
mensajes instantneos, correos electrnicos, etc. La prdida o el robo de este tipo de dispositivo puede
acarrear importantes consecuencias para los usuarios y las organizaciones ya que se estn convirtiendo
e un importante punto de fuga de informacin.

31.4. El mercado de soluciones de seguridad.


Actualmente el Catlogo de software incorpora un gran nmero de soluciones de seguridad dirigidas
a dispositivos mviles. En este sentido, hay que indicar que el Catlogo est enfocado a soluciones de
seguridad que estn disponibles en el mercado espaol. Pero lo cierto es que el mercado de seguridad
permite dar a conocer las soluciones que no estn incorporadas al catlogo.

32. Sistema Operativo Android


Android es un sistema operativo para dispositivos mviles hecho en base a la modicacin de un
Kernel de Linux. Fue inicialmente desarrollado por Android Inc. aunque posteriormente patrocinado
por Google. Es principalmente una plataforma designada a algunos SmartPhone y otros dispositivos,
aunque la implementacin de dicha tecnologa a los dispositivos mviles crece constantemente. La
tecnologa de Android est basada sobre Java, por lo que requiere el uso de un especial de desarrollo
de software (SDK) para crear aplicaciones para un dispositivo Android.

Figura 32.1: Arquitectura del Sistema Android

32.1. Seguridad y Efectividad


Android es un sistema multiprocesador, en el que cada aplicacin (y las partes del sistema) se ejecuta
en su propio proceso. La mayor parte de la seguridad entre las aplicaciones y el sistema es aplicando
el nivel de proceso a travs de los recursos estndar de Linux, como identicadores de usuario y grupo
que se asignan a las aplicaciones. Adicionales la seguridad se proporciona a travs de un mecanismo
de "permiso" que impone restricciones a las operaciones especcas que un determinado proceso puede
llevar a cabo y los permisos por URI para la concesin de acceso ad-hoc a elementos especcos de
datos.
Al ser el sistema operativo que mayor crecimiento para los dispositivos mviles est teniendo, a su
vez, est atrayendo a un nmero relativamente grande de malware. Android tiene una nica posicin

Gutierrez Gonzalo E.
32 SISTEMA OPERATIVO ANDROID 88

en el mercado, es libre y los operadores y vendedores de telefona mvil tienen mayores margenes de
ventas en dispositivos mviles basados con esta tecnologa. Adems, el sistema operativo es de cdigo
abierto, por lo que puede ser personalizado fcilmente para nuevos dispositivos. En la siguiente gura,
se puede observar la participacin de diversos sistemas operativos mviles en el mercado a nales del
2010.

Figura 32.2: Porcentaje de participacin de OS mviles

Android no slo es el lder en cuota de mercado para el nmero de dispositivos mviles, lamentable-
mente, tambin super a Symbian por la cantidad de nuevos malware en el trimestre ms reciente.

Figura 32.3: Cantidad de malware en los diversos Sistemas Operativos mviles

Se cree que la razn de de esta explosin de malware es debido a un cambio en los mtodos de
distribucin. En el pasado, los gusanos en su mayora saltaban de un dispositivo a otro (por ejemplo,
Cabir se propagaba a travs de Bluetooth) pero este mtodo necesitaba una gran cantidad de usuarios
en estrecha proximidad y su Aceptar una transmisin. Hoy en da casi todas las infecciones provienen
de las tiendas de software globales y de Android, donde hay muchos ejemplos de Android
malware.
El modelo de seguridad de Android es muy simple: El usuario tiene la opcin de aprobar o rechazar la
solicitud del software descargado desde la tienda. Si aprueba dicha solicitud, se procede a la instalacin;
si se rechaza, bloquear la instalacin. Pero este modelo sufre por tres razones:

Se basa en que el usuario debe tomar la decisin correcta; dicha decisin muchas veces parece
critica incluso para los usuarios con conocimientos tcnicos.

Los programas cada vez exigen ms derechos de los necesarios, por lo que los usuarios estn cada
vez ms expuestos a anmalos y codiciosas solicitudes.

Los usuarios estn dispuestos a aceptar los permisos si realmente desea ejecutar el programa y
su afn puede ser explotada por mtodos de ingeniera social.

Gutierrez Gonzalo E.
33 IOS, WINDOWS PHONE 7, Y OTROS 89

Android proporciona un pequeo conjunto de APIs para administrar el dispositivo, donde el


sistema operativo controla las polticas de contraseas por PIN y de forma remota puede limpiar el
dispositivo. Desafortunadamente, este conjunto es bastante limitado y es de poca ayuda para la
construccin de un producto de seguridad. Sera muy benecioso para Android apoyar un conjunto
estndar de propsito general de API de seguridad en el ncleo del sistema operativo (que permite
el acceso a la memoria del ncleo, y la Intercepcin suave del archivo de ES y de la red los ujos de
datos). Aplicaciones con acceso tan profundo tendra que ser rmado en una manera especial. Otra til
medida sera aprovechar la autenticacin criptogrca en la API de sistema operativo para que las
aplicaciones de seguridad poda conar en los datos que reciben desde el sistema operativo (y s que
no ha sido alterada). Este paso debe reducir el problema rootkit en los dispositivos Android y frustrar
algunos ataques MITM.

32.2. Debilidades.
Una presentacin de DefCon del ao 2011 report mltiples deciencias en el diseo de Android y
su documentacin:

La falta de descripciones de las API puede afectar la seguridad de las aplicaciones debido a los
desarrolladores pueden tomar decisiones incorrectas. En la versin Android 2.2 slo 78 APIs de
1207 fueron documentados, y seis de ellos no son correctas.

La mensajera en Android es explcita (en el que el nombre del destinatario se especica) o implci-
ta (un mensaje personalizado con ningn objetivo especco, tales como my.special.action).
Esta distincin permite algunos mensajes para ser interceptados o suplantar los malware, gen-
eralmente permitiendo la fuga de datos o ataques de denegacin de servicio.

Aplicaciones Overprivileged (que solicitan ms permisos de los necesarios) son comunes (31 por
ciento, segn los autores). Donde violan el principio de mnimo privilegio. Existen varias causas
de aplicaciones overprivileged:

Pobre documentacin sobre las API que necesitan los permisos.

Artefactos de prueba: el cdigo de depuracin no se elimina despus del desarrollo o pruebas


de calidad.

Los errores propagados a travs de asesoramientos por Foros: Desarrolladores mantienen


copiar y pegar el mismo deciente cdigo fuente, incluso si contiene errores que los autores
posteriormente corregidos han.

33. iOS, Windows Phone 7, y otros


El iPhone OS (conocido como OS X iPhone OS X en su historia temprana) es un sistema operativo
desarrollado y comercializado por Apple Inc. Es el sistema operativo por defecto del iPhone, el iPod
Touch y el iPad y es derivado de Mac OS X, con el que comparte la base de Darwin, y es por lo tanto,
un sistema operativo Unix por naturaleza. iPhone OS tiene cuatro capas de abstraccin: la capa Core
OS, la capa Core Services, la capa de Medios de Comunicacin, y la capa Cocoa Touch.

Figura 33.1: Las cuatros capas de iOS

Gutierrez Gonzalo E.
33 IOS, WINDOWS PHONE 7, Y OTROS 90

El sistema operativo utiliza menos de 500 megabytes de la memoria del dispositivo y las capas Core
OS y Core Services contienen las interfaces fundamentales para el iPhone OS, incluidos los utilizados
para acceder a los archivos de bajo nivel de tipos de datos, servicios Bonjour, tomas de corriente de la
red, y as sucesivamente. Estas interfaces son en su mayora Tecnologas basadas en C e incluyen Core
Foundation, CFNetwork, SQLite, y el acceso a los hilos POSIX y los zcalos UNIX, entre otros. La
capa de medios contiene las tecnologas fundamentales utilizadas para los Dibujo en 2D y 3D, audio y
video. Esta capa incluye C-Based, OpenGL ES, Cuarzo, y Core Audio.
IOS de Apple es actualmente el mayor rival de Android. Hasta el momento Apple ha hecho un
trabajo excelente de asegurar sus dispositivos, no se noticaron casos de malware para el iPhone que
no han sido jailbroken. (Jailbreaking abre el iPhone a aplicaciones no autorizadas, lo que representa
un riesgo de seguridad, ya que permite cualquier software sin rmar pueda correr.)
Aparte de Android y iOS, otros sistemas operativos tambin puede jugar un papel importante en
el futuro. A medida que estos OS se encuentran bajo desarrollo activo, se retendr el anlisis de sus
caractersticas de seguridad para ms adelante. Los ms destacados son:

Windows Phone 7: Nokia ha decidido utilizar este sistema operativo en sus futuros dispositivos.
Un estudio de IDC predice que Windows Phone llegar a alrededor del 20 por ciento del mercado
y a la sombra tanto de Apple y el sistema operativo de RIM.

Samsung Bada: tiene una cuota de mercado muy pequea, pero Samsung se asoci con Intel para
crear Tizen, que es probable que subsumir al MeeGo.

Gutierrez Gonzalo E.
33 IOS, WINDOWS PHONE 7, Y OTROS 91

Apendice 1: Preguntas Frecuentes


Desarrolle los conceptos de procesos, programas e hilo, explicando la diferencia entre
ellos. Indique las consecuencias que trae la implementacin de los hilos en kernel y en el
espacio de usuario.

Un proceso es un programa en ejecucin, es una entidad activa a cargo del sistema operativo que
necesita recursos como tiempo en la CPU, memoria, archivos y dispositivos de E/S.
Un proceso incluye, adems del cdigo, un contador de programa, registros de la CPU, una pila de
procesos que contiene datos temporales y una seccin de datos que contiene las variables globales.
Sin entrar en ms detalles, un proceso tiene un estado y cada proceso se representa en el sistema
operativo mediante un PCB. El PCB es una descripcin del proceso donde incluye el estado del
proceso, contador de programa, registros de la CPU asignados, informacin de la planicacin del
CPU, informacin de la gestin de memoria e informacin de los dispositivos de E/S asignados.
Una hebra es, en cambio, una unidad bsica de utilizacin de CPU. Comprende de un ID de
hebra, un contador de programa, un conjunto de registros y una pila. Comparte con otras hebras que
pertenecen al mismo proceso la seccin de datos, cdigo, archivos y dispositivos.
Con esta perspectiva un proceso puede ser monohebra (tradicional) o multihebra, cuando un proceso
es multihebra tiene varias ventajas entre las que se incluye la realizacin de varias tareas simultaneas.
Desde el punto de vista prctico el soporte de las hebras puede proporcionarse desde el nivel usuario o
desde el nivel kernel. El soporte para las hebras de usuario se realiza por encima del kernel y no recibe
ningn soporte por parte de este. Cada hebra de usuario genera un nuevo proceso y cuando una hebra
se bloquea puede ocasionar el bloqueo total del proceso. En el nivel kernel, las hebras se crean mediante
llamadas al sistema y el soporte para las mismas es brindado por el sistema operativo. Sin embargo,
existe una relacin entre las hebras de usuario y las hebras del kernel, los tres modelos multihebras que
muestra dicha relacin son el modelo muchos-uno, el modelo uno-uno y el modelo muchos-muchos.

Denir planicacin de procesos, planicador de trabajos y planicador de la CPU. Crite-


rios de planicacin, polticas y algoritmos de planicacin. Planicacin de varios niveles.

Los mecanismos de planicacin de la CPU son la base de los sistemas operativos multiprogramados,
cuya idea principal trata de tener un sistema operativo ms productivo mediante la conmutacin de la
CPU entre distintos procesos y con el n de maximizar el uso de la CPU. En sntesis, la planicacin de
la CPU consiste bsicamente como asignar la CPU mediante un algoritmo de planicacin apropiado
a un determinado proceso, y el mecanismo de seleccin de un determinado proceso se realiza mediante
un planicador apropiado.

Gutierrez Gonzalo E.
33 IOS, WINDOWS PHONE 7, Y OTROS 92

A menudo en un sistema de procesamiento por lotes, se envan ms procesos de los que pueden
ser ejecutados de manera inmediata. Es por ello que los procesos se guardan en un dispositivo de
almacenamiento masivo formando una cola donde son posteriormente seleccionados por el planicador
de trabajos y cargndolo en memoria para su posterior ejecucin. Una vez cargados en memoria, el
planicador a corto plazo selecciona un proceso cargados en memoria (es decir, listos para ejecutarse)
y le asigna la CPU, la eleccin de dicho proceso se realiza mediante un algoritmo de planicacin
determinado.
Una diferencia sustancial entre estos planicadores es la frecuencia de ejecucin. El planicador a
corto plazo se ejecuta con mucha ms frecuencia que el planicador a largo plazo y debe ser rpido en
cuanto a la eleccin de un proceso para su asignacin de la CPU.
Los diferentes algoritmos de planicacin de la CPU tienen diversas caractersticas y propiedades
y la eleccin de un determinado algoritmo en particular puede favorecer una clase de procesos sobre
otro. Para poder comparar tales algoritmos se utiliza diversos criterios tales como:

Porcentaje de utilizacin de la CPU.

Taza de procesamiento.

Tiempo de ejecucin.

Tiempo medio de espera.

Tempo medio de respuesta.

Adems, la poltica de planicacin de un algoritmo determinado puede ser expropiativa o no expropia-


tiva. Algunos de estos algoritmos son:

1. FCFS: Se asigna la CPU al proceso que primero la solicite y se gestiona fcilmente mediante
una cola FIFO. La poltica de planicacin del FCFS es no expropiativa, una vez asignado el
CPU a un determinado proceso, dicho proceso conserva la CPU hasta que naliza su ejecucin
o ejecuta una solicitud de E/S. En general, este algoritmo no presenta valores mnimos para el
tiempo medio de espera y los procesos tienden a monopolizar la CPU.

2. SJF y SPN: El SJF asigna la CPU al proceso que tiene la siguiente rfaga de CPU ms corta, por
tal motivo es necesario asociar con cada proceso la duracin de la siguiente rfaga de CPU. Si bien
presenta valores ptimos para el tiempo medio de espera, el problema es conocer la duracin de
la siguiente rfaga de CPU. Lo nico que se puede hacer es estimar dicha duracin conando que
la siguiente rfaga de CPU ser similar en duracin a las anteriores empleando como estimador
la media exponencial
n+1 = tn + (1 )n

El algoritmo SJF puede ser expropiativo o no expropiativo. El empleo de un algoritmo SJF


expropiativo radica por el simple hecho que en un determinado instante pudo haber llegado un
proceso de menor trabajo al cual poder asignarle la CPU, penalizando de este modo a los trabajos
largos. El algoritmo SPN es una variante del SJF cuando se utiliza el concepto de quantum.

3. Planicacin por Prioridades: Se asocia a cada proceso una prioridad y se asigna la CPU al de
prioridad ms alta. Un ejemplo particular sera SJF y el objetivo de estos algoritmos es favorecer
a determinados procesos sobre otros. La planicacin por prioridades puede ser expropiativa
o no expropiativa y un problema importante de los algoritmos de planicacin por prioridades
expropiativo es la muerte por inanicin o bloqueo indenido, en donde procesos con prioridad baja
pueden quedar esperando indenidamente. Como solucin a la inanicin se emplean mecanismos
de envejecimiento.

Gutierrez Gonzalo E.
33 IOS, WINDOWS PHONE 7, Y OTROS 93

4. Planicacin por turnos Round Robin: Est especialmente diseado para sistemas de tiempo
compartido. Es similar al FCFS, pero se aade tcnica de desalojo para la conmutacin de la
CPU, es por ello necesario emplear el concepto de quantum. Si la rfaga de CPU de un proceso
actualmente es mayor que un quantum, se producir un n de temporizador, interrupcin en el
sistema operativo, cambio de contexto, ubicacin del proceso al nal de la cola de preparados y
se planica el siguiente proceso. Es por ello que la cola de preparados se trata como una cola
circular. El tiempo medio de espera es frecuentemente largo y a ningn proceso se le asigna ms
de un quantum por turno.

5. Planicacin de varios niveles: Se consideran tres niveles importantes de planicacin, detallados


a continuacin:

a) Planicacin de alto nivel: Tambin denominado planicacin de trabajos, determina que


trabajos tienen permitidos competir activamente por los recursos del sistema, lo cual se
denomina planicacin de admisin.

b) Planicacin de nivel medio: Determina que procesos competirn por la CPU y deben ayudar
alcanzar ciertas metas en el rendimiento del sistema.

c) Planicacin de bajo nivel: Determina que proceso listo se le asigna la CPU cuando esta
queda disponible.

Explique en que consisten las rfagas de CPU y rfagas de E/S. Qu signica que un
proceso tenga carga de CPU y carga de E/S y exponga la relacin entre estos dos procesos.
Explique brevemente las dos polticas de planicacin de procesos y en particular respecto
a la poltica SPN.

Una rfaga de CPU es el instante de tiempo transcurrido en que un proceso ocup la CPU antes
de realizar una solicitud de E/S o haber terminado. Del mismo modo, una rfaga de E/S es el instante
transcurrido de tiempo que un proceso espera debido a una solicitud de E/S.
Cualquier proceso alterna entre una rfaga de CPU y una de E/S, comenzando y terminando
siempre con una rfaga de CPU y gracias a este esquema es posible disear sistemas multiprogramados
que permite maximizar la eciencia en el uso de los recursos del sistema.
Un proceso tiene carga de CPU cuando la duracin de las rfagas de CPU son ms largas que la
duracin de las rfagas de E/S, los procesos limitados por CPU presentan esta cualidad. Un proceso
tiene carga de E/S cuando la duracin de las rfagas de E/S son ms largas que las de CPU, esto es
debido que el proceso tiene muchas solicitudes de E/S, por lo que se trata de un proceso limitado por
E/S.
Una poltica de planicacin hace referencia a la forma de asignar la CPU a un determinado
proceso, dicha poltica puede ser expropiativa o no expropiativa. Si la poltica es no expropiativa, una
ve asignada la CPU a un determinado proceso este la conserva hasta que bien termina o realiza una
solicitud de E/S, en cambio cuando la poltica es expropiativa podemos quitarle la CPU al proceso que
est actualmente en ejecucin y asignrsela a otro proceso planicando nuevamente la cola de procesos
preparados (expropiacin de la CPU).
Por ejemplo en el algoritmo SJF que consiste en asignar la CPU al proceso que tiene la siguiente
rfaga de CPU mas corta, la poltica puede ser expropiativa como no expropiativa. Tiene sentido elegir
un SJF expropiativo al considerar que en un determinado instante de tiempo pudo haber llegado un
proceso el cual presenta un trabajo mas pequeo que el proceso actualmente en ejecucin y al cual se
podra asignarle la CPU. El algoritmo SPN es un ejemplo del SJF expropiativo implementando en el
mismo el concepto de quantum de tiempo, donde se asigna un quantum a un proceso y despus que
termina el quantum se planica nuevamente la cola de proceso asignndole la CPU al que presenta el
trabajo ms corto.

Gutierrez Gonzalo E.
33 IOS, WINDOWS PHONE 7, Y OTROS 94

Dena condiciones de competencias, secciones crticas, exclusin mutua con espera ocu-
pada. Semforos y monitores.

Las condiciones de carreras son situaciones donde varios procesos que se ejecutan simultneamente
de manera cooperativa (no independientes) acceden y modican de manera concurrente los mismos
datos concurrentemente y el resultado de los mismos dependen del orden concreto de ejecucin. Tales
datos son denominados recursos crticos
Las secciones crticas hace referencia a las secciones o porciones de cdigo de los procesos donde se
produce el acceso a los recursos crticos.
El problema de la seccin crtica consiste en el diseo de un protocolo, donde los procesos puedan
usar para acceder a su regin critica solicitando permiso a la misma y cualquier solucin al problema
de la seccin crtica debe satisfacer las siguientes propiedades

Exclusin mutua.

Espera limitada.

Progreso.

Se entiende por exclusin mutua el hecho que solo un proceso a la vez puede ejecutar su seccin crtica.
Sin embargo, muchas veces se presentan con frecuencia los siguientes problemas

No se cumple la exclusin mutua.

Espera activa.

Deadlock.

Lockout.

Exclusin mutua con espera activa o alternancia estricta es una solucin al problema de la seccin
crtica con exclusin mutua y consiste en el diseo de un bucle de control que permite un accesos
alternado a las secciones crticas.
Un semforo es un tipo especial de variable soportada por el hardware y el sistema operativo, que
dejando detalles de implementacin slo se puede acceder a travs de dos operaciones atmicas wait()
y signal(). La denicin de las operaciones atmicas son

wait(S:semaphore){
if S>0 then S=S-1
else block();
}

signal(S:semaphore){
if exist suspend process in S then wakeup(P)
else S=S+1;
}

Las operaciones wait() y signal() son indivisibles, esto es, solo un proceso a la vez podr ejecutarlas.
El uso de semforos es un mecanismo de bajo nivel que deja la responsabilidad de la concurrencia al
programador.
Los monitores en cambio son tcnicas de alto nivel que permite centralizar en un solo objeto todas las
secciones crticas que presentan condiciones de carreras. El monitor mantiene una cola de llamadas a
las regiones crticas y garantiza que slo un proceso a la vez ingrese a su regin crtica, se ejecuta de
manera ininterrumpida y libera al programador de la responsabilidad de la exclusin mutua.

Gutierrez Gonzalo E.
33 IOS, WINDOWS PHONE 7, Y OTROS 95

Dena memoria virtual y en que consiste la paginacin en un sistema de memoria virtual.


Explique porque es necesario denir una poltica de remplazo de pgina en un sistema
de memoria virtual y cuales son los supuestos y caractersticas que se basan LRU, LFU y
ptimo. Explique el algoritmo de la segunda chance o del reloj ilustrando con un ejemplo.

La memoria virtual es un mecanismo ms general para la ejecucin de programas no enteros en


memoria principal, se basa en un sistema de paginacin o segmentacin en donde solo un subconjunto
de porciones estn cargadas en memoria principal y el resto se encuentra en disco. La memoria virtual
se ocupa de la transferencia de informacin entre la memoria principal y la memoria secundaria.
La paginacin es un mecanismo de gestin de memoria que permite la ejecucin de programas en
donde el espacio de direcciones fsico de un proceso no necesariamente es contiguo y evita el problema
de encajar fragmentos de memoria variables en el almacn de respaldo.
En un sistema de memoria virtual se emplea la paginacin bajo demanda, que consiste en cargar las
pginas de un proceso slo cuando estas son solicitadas durante la ejecucin del mismo. En la paginacin
una direccin lgica se divide en dos partes, con el formato (nro pagina, nro desplazamiento) y mediante
una unidad de gestin de memoria MMU se lleva a cabo la traduccin a una direccin fsica con el
formato (nro marco, desplazamiento). Para ello cada proceso dispone de una tabla de paginas indexada
por los nmeros de paginas y en cada entrada se indica el nmero correspondiente a dicha pgina que
concatenado con el desplazamiento genera la direccin fsica real. Cuando un proceso necesita acceder
a una direccin que no est cargada en memoria se produce lo que se denomina un fallo de pagina,
debido que no todas las pginas del proceso estn en memoria principal. En cada entrada de la tabla
de pginas es necesario contar tambin con otros bits de control como ser el bit de validez, bit de
referencia y bit de modicacin que son necesarios para el tratamiento de fallo de pginas.
Como es el tratamiento de fallo de pginas?

1. Se comprueba una tabla interna que se mantiene con el PCB asociada con el proceso para
determinar si fue una referencia vlida o invalida.

2. Si la referencia fue invalida se termina el proceso. Si fue vlida, dicha pgina no fue cargada.

3. Se elige un marco libre en memoria principal. En caso que no haya uno se elige una pgina victima
para expulsin mediante una poltica de remplazo de pginas.

4. Ordenamos una operacin de lectura en el disco para leer la pgina deseada en el marco asignado.

5. Modicamos la tabla interna indicando que dicha pgina est disponible en memoria.

6. Reiniciamos la instruccin que ocasion el fallo.

Poltica optimo: La pgina victima a seleccionar ser aquella que ms tiempo tardar en ser refer-
enciada. Desafortunadamente determinar las referencias futuras es irresoluble en la practica por lo que
la mayora de las polticas aplicables se basan en el comportamiento pasado.
Poltica LRU: Se selecciona como pgina victima la menos recientemente referenciada. Esto implica
modicar en cada referencia la informacin acerca de las paginas cargadas. La implementacin de
hardware es costosa ya que para llevarlo a la prctica es necesario tener ordenada una lista con las
pginas por su ltima referencia o tener un contador y un registro de al menos 64 bits que contendr
el valor de la ltima referencia de dicha pgina. Otra desventaja es el hecho que se basa en el principio
de localidad, lo cual no es apropiado cuando se disean aplicaciones mediante POO.
Poltica LFU: Manteniendo un contador del nmero de referencias que se han hecho a cada pgina se
elige la menos frecuentemente referenciada. Se basa en el principio de localidad y requiere de estructuras
de datos complejas para llevar la cuenta de las referencias. Adems es ineciente en el caso de pginas
que se usaron mucho al comienzo y despus no se utilizaron ms.
Algoritmo del Reloj ejemplicado.

Gutierrez Gonzalo E.
33 IOS, WINDOWS PHONE 7, Y OTROS 96

Dena sistema de archivos, archivos, atributos de un archivo, estructura y tipo de archivo.


Acceso a un archivo. Implementacin de sistemas de archivos, archivo y directorios.

Un archivo bsicamente es una coleccin de informacin relacionada con nombre y que se graba en
un dispositivo de almacenamiento masivo como ser disco. Es una secuencia de bytes y registros cuyo
signicado esta denido por el creador del archivo y tendr una determinada estructura dependiendo
de su tipo.
Un atributo es una cualidad que permite describir y diferenciar los archivos unos con otros. Algunos
atributos de un archivo son nombre, id, tamao, tipo, ubicacin, proteccin, fecha y hora de creacin.
Una tcnica bastante comn para implementar el tipo de archivo es incluyndolo como parte del
nombre. Generalmente el nombre se divide en dos partes: nombre y extensin. Adems el tipo de
archivo tambin puede indicar una estructura del archivo y algunos Sistemas operativos imponen una
estructura a un archivo determinado.
Un sistema de archivos es la parte del sistema de administracin de almacenamiento responsable de
archivos, es la parte del sistema operativo responsable de permitir compartir la informacin disponible
en un archivo, proporciona mecanismos de almacenamiento en linea y el acceso a los contenidos in-
cluyendo datos y programas.
Los discos constituyen el principal tipo de almacenamiento secundario para albergar un sistema
de archivos. Lo deseable sera dividir el disco en varias partes denominadas particiones o volmenes y
cargar en cada una de ellas un determinado sistema de archivos. La transferencia de E/S entre memoria
y disco generalmente se realiza en unidades de bloques para obtener una mayor eciencia y para ello
el sistema operativo impone uno o ms sistemas de archivos para gestionar los archivos.
Un sistema de archivos tiene dos dicultades de diseo: Denir el aspecto que debe tener para los
usuarios y crear algoritmos y estructuras de datos que permitan mapear el sistema lgico de archivos
sobre los dispositivos fsicos.
Para ello el propio sistema de archivos est compuesto de varios niveles donde se denen ciertas
funciones que despus son implementadas por niveles superiores (control de E/S, sistema bsico de
archivos, modelo de organizacin de archivos y tarea de localizacin).
Los sistemas operativos implementan llamadas al sistema open() y close() para que los procesos
puedan acceder a los datos y contenidos de los archivos. El sistema de archivos puede contener informa-

Gutierrez Gonzalo E.
33 IOS, WINDOWS PHONE 7, Y OTROS 97

cin que el sistema operativo albergante necesita para poder iniciar y la implementacin de un sistema
de archivos utiliza varias estructuras en disco y memoria tales como bloque de control de arranque,
bloque de control de volumen, una estructura de directorios por cada archivo y un bloque FTB para
cada archivo donde se almacenarn los detalles de los mismos.
El aspecto ms importante de la implementacin del almacenamiento en archivos es como relacionar
bloques de disco con archivos. La seleccin de un algoritmo de asignacin y gestin de directorios puede
afectar signicativamente la eciencia, abilidad y prestaciones de un sistema de archivos. Dos tcnicas
que se usan para la implementacin de directorios son Lista lineal y Tabla hash. Por ultimo, una poltica
de asignacin de bloques de disco puede o no permitir un acceso rpido a la informacin presente en
un archivo, las ms usuales son asignacin contigua, asignacin por lista enlazada (FAT) y asignacin
por lista indexada (Nodo-i).

Gutierrez Gonzalo E.
REFERENCIAS 98

Referencias
[AS06] Greg GAGNE. Abraham SILBERSCHATZ, Peter Baer GALVIN, Fundamentos de sistemas
operativos., 7ed., 2006.

[Cer12] INTECO Cert., Seguridad en dispositivos mvile, Monogrco de seguridad del catlogo stic
Nmero 5, abril 2012.

[GJ] Mayank Jain Gaurav Jindal, A comparative study of mobile phone's operating systems, In-
ternational Journal of Computer Applications & Information Technology Vol. I, Issue III,
November 2012, 6.

[Ket00] Arto Kettula, Security comparison of mobile oses, Helsinki University of Technology. Telecom-
munications Software and Multimedia Laboratory (2000), 14.

[Mut11] Dr. Igor Muttik, Securing mobile devices: Present and future, McAfee, 2011.

[ROC10] Sergio ROCABADO., Problemas de sincronizacin y comunicacin de procesos., 1ed, 2010.

[STA97] William STALLINGS., Sistemas operativos., 2ed, 1997.

[TAN97] Andrew S. TANENBAUM., Sistemas operativos distribuidos., 2ed, 1997.

[Zha10] Junyao Zhang., Android vs iphone., 20.

Gutierrez Gonzalo E.