Teor´ıa General de Sistemas Operativos
por Carlos Eduardo G´ omez Montoya Juli´ an Esteban Guti´ errez Posada
ii
Teor´ıa General de Sistemas Operativos No est´a permitida la reproducci´on total o parcial de esta obra, ni su tratamiento o transmisi´on por cualquier m´etodo sin autorizaci´on escrita de los autores. Car´ atula: Luis Eduardo Sep´ ulveda Rodr´ıguez Derechos reservados c 2001 ISBN: 958 - 33 - 2068 - 4 Este libro fue editado usando LATEX 2ε Impreso en Conceptos Gr´aficos Armenia, Quind´ıo - Colombia
Presentaci´ on Este libro abarca los conceptos m´as importantes de la teor´ıa general y partes de un sistema operativo, sin inclinarse hacia ninguno en particular. Sin embargo, cuando sea pertinente mencionar el hardware, est´a orientado al modo protegido de los procesadores superiores al 80386 de Intel y compatibles. A diferencia de otros libros, Teor´ıa General de Sistemas Operativos, hace un tratamiento muy especial al manejo de discos duros E-IDE, las tablas de particiones y en especial al Master Boot Record (MBR) para discos de cualquier tama˜ no, desde los Megabytes hasta los Terabytes. Es un texto gu´ıa para un curso universitario con una duraci´on aproximada de 60 horas. Est´a altamente ilustrado, con gr´aficas muy cuidadosamente elaboradas que permiten afianzar los diferentes conceptos. Est´a dividido en cinco partes: Conceptos B´asicos (Introducci´on, Estructuras de dise˜ no y Rese˜ na hist´orica); Administraci´ on de Memoria, compuesta por generalidades acerca de la memoria, manejo de entornos de trabajo (paginaci´on y segmentaci´on), memoria virtual (swap) y la forma de administraci´on de memoria de procesadores Intel en modo protegido. Gesti´on de almacenamiento secundario, se compone de conceptos sobre disco duro, planificaci´on, espacio libre, sistemas de archivos y MBR; Manejo de entrada/salida (conceptos y manejo de la IDT en Intel); finalizando con Control de Procesos, conceptos, planificaci´on y concurrencia.
iii
iv
´ PRESENTACION
´Indice General Presentaci´ on
iii
I
1
Conceptos B´ asicos
1 Introducci´ on
3
2 Estructuras de Dise˜ no
7
3 Rese˜ na hist´ orica
9
II
Administraci´ on de Memoria
4 Memoria
15 17
4.1
Clases de memoria . . . . . . . . . . . . . . . . . . . . . . . . 19
4.2
Sistemas de protecci´on . . . . . . . . . . . . . . . . . . . . . . 20
5 M´ ultiples entornos de trabajo 5.1
25
Bloques de tama˜ no fijo . . . . . . . . . . . . . . . . . . . . . . 25 5.1.1
Estrategias de ajuste . . . . . . . . . . . . . . . . . . . 26
5.1.2
Criterios de evaluaci´on de las estrategias . . . . . . . . 27
5.1.3
Compactaci´on . . . . . . . . . . . . . . . . . . . . . . . 28 v
´INDICE GENERAL
vi
5.2
5.1.4
Paginaci´on . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.1.5
Direccionamiento . . . . . . . . . . . . . . . . . . . . . 32
Bloques de tama˜ no variable . . . . . . . . . . . . . . . . . . . 37 5.2.1
5.3
Segmentaci´on . . . . . . . . . . . . . . . . . . . . . . . 38
Sistemas combinados . . . . . . . . . . . . . . . . . . . . . . . 40
6 Memoria virtual
43
6.1
Paginaci´on por demanda . . . . . . . . . . . . . . . . . . . . . 45
6.2
Rutinas de reemplazo de p´aginas . . . . . . . . . . . . . . . . 47 6.2.1
Algoritmo FIFO . . . . . . . . . . . . . . . . . . . . . . 47
6.2.2
Algoritmo LRU . . . . . . . . . . . . . . . . . . . . . . 48
6.2.3
Algoritmos de bits de referencia . . . . . . . . . . . . . 49
7 Intel y compatibles
53
7.1
Modos de operaci´on . . . . . . . . . . . . . . . . . . . . . . . . 53
7.2
Protecci´on de memoria . . . . . . . . . . . . . . . . . . . . . . 54
7.3
Paginaci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
7.4
7.3.1
Direcci´on l´ogica . . . . . . . . . . . . . . . . . . . . . . 54
7.3.2
Descriptor de p´agina . . . . . . . . . . . . . . . . . . . 55
7.3.3
Funcionamiento . . . . . . . . . . . . . . . . . . . . . . 57
Segmentaci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 7.4.1
Direcci´on l´ogica . . . . . . . . . . . . . . . . . . . . . . 60
7.4.2
Descriptor de segmento . . . . . . . . . . . . . . . . . . 61
7.4.3
Funcionamiento . . . . . . . . . . . . . . . . . . . . . . 63
7.5
Sistemas combinados . . . . . . . . . . . . . . . . . . . . . . . 65
7.6
Memoria Virtual . . . . . . . . . . . . . . . . . . . . . . . . . 66
´INDICE GENERAL
III
vii
Gesti´ on de almacenamiento secundario
8 Disco Duro 8.1
69
Estructura f´ısica . . . . . . . . . . . . . . . . . . . . . . . . . . 70 8.1.1
8.2
67
Conversi´on de direcciones . . . . . . . . . . . . . . . . 72
Administraci´on de disco . . . . . . . . . . . . . . . . . . . . . 73 8.2.1
Gestor de solicitudes . . . . . . . . . . . . . . . . . . . 74
8.2.2
Asignaci´on de espacio . . . . . . . . . . . . . . . . . . . 76
8.2.3
Espacio libre
8.2.4
Planificaci´on de acceso . . . . . . . . . . . . . . . . . . 81
. . . . . . . . . . . . . . . . . . . . . . . 79
9 Master Boot Record
83
9.1
C´odigo de arranque . . . . . . . . . . . . . . . . . . . . . . . . 83
9.2
Tabla de particiones . . . . . . . . . . . . . . . . . . . . . . . 84 9.2.1
Direccionamiento usando CHS . . . . . . . . . . . . . . 87
9.2.2
Direccionamiento usando LBA . . . . . . . . . . . . . . 88
9.3
N´ umero m´agico . . . . . . . . . . . . . . . . . . . . . . . . . . 88
9.4
Particiones extendidas . . . . . . . . . . . . . . . . . . . . . . 89
9.5
IV
9.4.1
Restricciones . . . . . . . . . . . . . . . . . . . . . . . 90
9.4.2
Partici´on DOS extendida (05h) . . . . . . . . . . . . . 91
9.4.3
Partici´on LBA VFAT DOS extendida (0Fh) . . . . . . 92
Bloques no asignados en el disco . . . . . . . . . . . . . . . . . 95
Manejo de entradas/salidas
10 Control de dispositivos
97 99
10.1 Interfaces procesador-perif´erico . . . . . . . . . . . . . . . . . 100 10.2 Rutina de control (Driver) . . . . . . . . . . . . . . . . . . . . 102
´INDICE GENERAL
viii 11 Intel y compatibles
V
Control de Procesos
12 Procesos
103
107 109
12.1 Bloques de control . . . . . . . . . . . . . . . . . . . . . . . . 110 12.2 Cambio de contexto . . . . . . . . . . . . . . . . . . . . . . . . 113 12.3 Operaciones de control de procesos . . . . . . . . . . . . . . . 114 13 Planificaci´ on
119
13.1 Algoritmos de planificaci´on . . . . . . . . . . . . . . . . . . . . 120 13.1.1 FCFS . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 13.1.2 SJF . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 13.1.3 SRTF . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 13.1.4 Prioridad . . . . . . . . . . . . . . . . . . . . . . . . . 122 13.1.5 HRN . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 13.1.6 RR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 13.1.7 FMQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 14 Concurrencia
125
14.1 Comunicaci´on de procesos . . . . . . . . . . . . . . . . . . . . 126 14.1.1 Mensajer´ıa directa . . . . . . . . . . . . . . . . . . . . 128 14.1.2 Mensajer´ıa indirecta . . . . . . . . . . . . . . . . . . . 129 14.2 Control de acceso . . . . . . . . . . . . . . . . . . . . . . . . . 130 14.2.1 Espera activa . . . . . . . . . . . . . . . . . . . . . . . 132 14.2.2 Espera no activa . . . . . . . . . . . . . . . . . . . . . 132 14.2.3 Bloqueos Indefinidos . . . . . . . . . . . . . . . . . . . 137 14.2.4 Mecanismos de hardware . . . . . . . . . . . . . . . . . 140 14.3 Mecanismos de asignaci´on de recursos . . . . . . . . . . . . . . 141
´INDICE GENERAL
ix
14.3.1 Prevenci´on de interbloqueos . . . . . . . . . . . . . . . 143 14.3.2 Recuperaci´on de un interbloqueo . . . . . . . . . . . . 144 14.4 Mecanismos de control de flujo . . . . . . . . . . . . . . . . . . 145
Bibliograf´ıa
147
x
´INDICE GENERAL
´Indice de Figuras 1.1
Partes b´asicas de un computador personal . . . . . . . . . . .
4
1.2
Partes b´asicas de un sistema operativo . . . . . . . . . . . . .
5
4.1
Modelo conceptual de la memoria . . . . . . . . . . . . . . . . 17
4.2
Protecci´on usando l´ımite inferior de zona . . . . . . . . . . . . 21
4.3
Protecci´on usando l´ımite superior de zona . . . . . . . . . . . 21
4.4
Protecci´on usando registro base . . . . . . . . . . . . . . . . . 21
4.5
Protecci´on usando l´ımites . . . . . . . . . . . . . . . . . . . . 22
4.6
Protecci´on usando registro base y l´ımite superior . . . . . . . . 22
4.7
Protecci´on usando tama˜ no y base . . . . . . . . . . . . . . . . 23
5.1
Fragmentaci´on Interna . . . . . . . . . . . . . . . . . . . . . . 26
5.2
Ejemplo de compactaci´on . . . . . . . . . . . . . . . . . . . . 29
5.3
Mecanismo de paginaci´on . . . . . . . . . . . . . . . . . . . . 31
5.4
Mecanismo de paginaci´on - Funcionamiento . . . . . . . . . . 32
5.5
PTBR - Page Table Base Register . . . . . . . . . . . . . . . . 34
5.6
Mecanismo de segmentaci´on . . . . . . . . . . . . . . . . . . . 39
5.7
Mecanismo de segmentaci´on - Funcionamiento . . . . . . . . . 40
5.8
STBR - Segment Table Base Register . . . . . . . . . . . . . . 41
6.1
Memoria Virtual . . . . . . . . . . . . . . . . . . . . . . . . . 44
6.2
Memoria Virtual - Funcionamiento . . . . . . . . . . . . . . . 46 xi
´INDICE DE FIGURAS
xii 7.1
Direcci´on L´ogica . . . . . . . . . . . . . . . . . . . . . . . . . 55
7.2
Descriptor de p´aginas . . . . . . . . . . . . . . . . . . . . . . . 56
7.3
Acceso a las p´aginas a trav´es de descriptores . . . . . . . . . . 57
7.4
Estructura de los registros base usados en paginaci´on . . . . . 58
7.5
Paginaci´on en Intel y compatibles . . . . . . . . . . . . . . . . 59
7.6
Direcci´on L´ogica . . . . . . . . . . . . . . . . . . . . . . . . . 60
7.7
Descriptor de segmento . . . . . . . . . . . . . . . . . . . . . . 62
7.8
Segmentaci´on en Intel y compatibles . . . . . . . . . . . . . . 65
7.9
Sistemas combinados en Intel y compatibles . . . . . . . . . . 66
8.1
Estructura b´asica de un disco duro . . . . . . . . . . . . . . . 71
8.2
Representaci´on tridimensional de acceso al disco . . . . . . . . 72
8.3
Diagrama de Administraci´on de disco . . . . . . . . . . . . . . 74
8.4
M´etodo de asignaci´on contigua . . . . . . . . . . . . . . . . . . 77
8.5
M´etodo de asignaci´on enlazada . . . . . . . . . . . . . . . . . 77
8.6
M´etodo de asignaci´on indexada . . . . . . . . . . . . . . . . . 78
8.7
Asignaci´on indexada - Variante combinada . . . . . . . . . . . 80
9.1
Estructura del MBR . . . . . . . . . . . . . . . . . . . . . . . 84
9.2
Tabla de particiones . . . . . . . . . . . . . . . . . . . . . . . 85
9.3
Esquema de particiones primarias . . . . . . . . . . . . . . . . 87
9.4
Extended Master Boot Record . . . . . . . . . . . . . . . . . . 89
9.5
Tabla de particiones EMBR-1 . . . . . . . . . . . . . . . . . . 90
9.6
Esquema b´asico de particiones extendidas 05h . . . . . . . . . 92
9.7
Esquema avanzado de paticiones extendidas 05h . . . . . . . . 93
9.8
Esquema avanzado de paticiones extendidas 0Fh . . . . . . . . 94
9.9
Espacio no asignado a continuaci´on de un MBR . . . . . . . . 95
10.1 Concepto general de un driver . . . . . . . . . . . . . . . . . . 99 10.2 Tipos de interface procesador-periferico . . . . . . . . . . . . . 100
´INDICE DE FIGURAS
xiii
10.3 Esquema de los tipos de drivers . . . . . . . . . . . . . . . . . 102 11.1 Modo de operaci´on de una IRQ . . . . . . . . . . . . . . . . . 105 11.2 Conexi´on de los PICs en una PC . . . . . . . . . . . . . . . . 105 12.1 Estados b´asicos de un proceso . . . . . . . . . . . . . . . . . . 110 12.2 Segmento de Estado de Tarea - TSS . . . . . . . . . . . . . . . 112 12.3 Conmutaci´on entre tareas . . . . . . . . . . . . . . . . . . . . 113 12.4 Sistemas de procesamiento . . . . . . . . . . . . . . . . . . . . 115 12.5 Procesos hijo . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 13.1 Planificaci´on de procesos . . . . . . . . . . . . . . . . . . . . . 120 14.1 Ejemplo del problema de concurrencia a alto nivel . . . . . . . 130 14.2 Ejemplo del problema de concurrencia a bajo nivel . . . . . . 130 14.3 Espera activa . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 14.4 Estructura b´asica de un sem´aforo . . . . . . . . . . . . . . . . 133 14.5 Operaci´on Wait . . . . . . . . . . . . . . . . . . . . . . . . . . 134 14.6 Operaci´on Signal . . . . . . . . . . . . . . . . . . . . . . . . . 134 14.7 Secci´on cr´ıtica con sem´afotos . . . . . . . . . . . . . . . . . . . 135 14.8 Productor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 14.9 Consumidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 14.10 Proceso Escritor . . . . . . . . . . . . . . . . . . . . . . . . . 138 14.11 Proceso Lector . . . . . . . . . . . . . . . . . . . . . . . . . . 139 14.12 Proceso 1 - Bloqueo Indefinido . . . . . . . . . . . . . . . . . 139 14.13 Proceso 2 - Bloqueo Indefinido . . . . . . . . . . . . . . . . . 140 14.14 Interbloqueo de dos procesos . . . . . . . . . . . . . . . . . . 142 14.15 Ejemplo de control de flujo . . . . . . . . . . . . . . . . . . . 145 14.16 Control de flujo . . . . . . . . . . . . . . . . . . . . . . . . . . 146
xiv
´INDICE DE FIGURAS
´Indice de Tablas 6.1
Bits de control
. . . . . . . . . . . . . . . . . . . . . . . . . . 49
7.1
Tipos de segmentos de c´odigo . . . . . . . . . . . . . . . . . . 64
8.1
Comparaci´on entre los discos magn´eticos y la memoria. . . . . 71
9.1
Identificaci´on de las particiones m´as comunes . . . . . . . . . . 86
11.1 Entradas de la IDT . . . . . . . . . . . . . . . . . . . . . . . . 104 11.2 Usos predeterminados de las IRQ . . . . . . . . . . . . . . . . 106
xv
xvi
´INDICE DE TABLAS
Parte I Conceptos B´ asicos
1
Cap´ıtulo 1 Introducci´ on Una computadora es un sistema electr´onico programable de uso gen´erico, constituido b´asicamente por cuatro partes: • Almacenamiento primario (Memoria) • Almacenamiento secundario (Disco) • Dispositivos de entrada y salida • Unidad de procesamiento (procesador) Ver figura 1.1 Sin embargo, todo este conjunto de dispositivos electr´onicos, no servir´ıan para nada sin un programa o software de control, que ayude a la administraci´on adecuada de los componentes del sistema. Un sistema operativo 1 es un programa cuyo objetivo principal es controlar el uso adecuado de los recursos computacionales; es decir, debe controlar todas las partes disponibles en un sistema. Ya que un computador b´asicamente esta formado por cuatro partes, un sistema operativo tambi´en lo est´a. Ver figura 1.2. Para lograr su objetivo, el sistema operativo suele crear un entorno donde las operan aplicaciones de los usuarios. Dicho entorno brinda una serie de servicios que facilitan el manejo de los distintos perif´ericos. 1
No existe una definici´on universalmente aceptada
3
4
´ CAP´ITULO 1. INTRODUCCION
Figura 1.1: Partes b´asicas de un computador personal
5
Figura 1.2: Partes b´asicas de un sistema operativo
6
´ CAP´ITULO 1. INTRODUCCION
Cap´ıtulo 2 Estructuras de Dise˜ no Seg´ un la forma en que se haya construido, es decir, su estructura de dise˜ no un sistema operativo se puede clasificar de las siguientes maneras: Estructura monol´ıtica: Es la estructura que tienen los primeros sistemas operativos. Consiste en crear procedimientos separados que pod´ıan llamarse unos a otros. Estos sistemas carec´ıan de protecciones y privilegios, sin embargo eran muy eficientes debido a su forma de operaci´on. Estructura jer´ arquica: El sistema est´a dividido en niveles, uno sobre el otro. Cada nivel le presta una serie de servicios al nivel superior. As´ı, el n´ ucleo del sistema estar´a protegido por n capas o niveles. En esta estructura se basan pr´acticamente todos los sistemas actuales. M´ aquinas virtuales: Hay un sistema operativo central que proporciona a cada uno de los otros sistemas operativos la ilusi´on de que trabajan solos controlando cada uno su propia m´aquina. Para que todo ello funcione, el hardware debe proporcionar servicios de separaci´on de memoria. Cliente/Servidor: Es el tipo m´as reciente de sistema operativo. El n´ ucleo o kernel del sistema operativo se encarga u ´nicamente de establecer la comunicaci´on entre los distintos clientes y servidores, adem´as de manejar la multiprogramaci´on. Tanto cliente como servidor son aplicaciones que se ejecutan en el sistema. Sin embargo, la diferencia radica en el hecho de que el servidor 7
8
˜ CAP´ITULO 2. ESTRUCTURAS DE DISENO provee una serie de servicios que son solicitados por los clientes para realizar una labor determinada. Un cliente puede ser simult´aneamente servidor de otra aplicaci´on. Esto se ve claramente, cuando se dice que todos los dispositivos de hardware son controlados por un servidor, y que cuando un cliente desea usar ese dispositivo, debe solicitarle al servidor usando uno de sus servicios el acceso al dispositivo. Sin embargo, no solo los servidores sirven para controlar los dispositivos de hardware. Tambi´en pueden proveer servicios de software como ejecutar m´as aplicaciones, c´alculos, entre otros.
Cap´ıtulo 3 Rese˜ na hist´ orica Para que un sistema operativo evolucione, no se requiere de nuevo hardware, puede evolucionar a partir de un sistema operativo. No obstante, si aparece un nuevo hardware, es muy probable que surjan nuevos sistemas operativos, o mejoras y adaptaciones de los que ya existen. Tablero de conexiones: Las primeras computadoras se programaban usando conexiones f´ısicas en un tablero; los programadores tambi´en eran los operadores de la computadora, y la supervisaban observando el comportamiento de unas luces de control. Consola: Un programador a la vez, usaba la computadora durante un per´ıodo de tiempo asignado con anterioridad En dicho per´ıodo de tiempo, el programador era due˜ no y se˜ nor de la computadora. Este sistema era muy ineficiente y costoso, ya que si el programador terminaba su labor antes de terminar su tiempo, la computadora permanec´ıa inactiva el resto de tiempo asignado, dado que estos aparatos eran muy costosos se produc´ıa desperdicio. Pero si por otro lado, el programador no lograba terminar en dicho per´ıodo de tiempo, ten´ıa que retirarse para darle el turno a otro, y posteriormente volver a cargar todo y continuar donde iba o volver a empezar. Esta situaci´on le hacia perder mucho tiempo. Separaci´ on operadores / programadores: Para ayudar a solucionar el problema del desperdicio en el sistema de consola, el programador deja 9
10
˜ HISTORICA ´ CAP´ITULO 3. RESENA de tener acceso directo a la computadora. Esto se logra contratando operarios especializados en el manejo de la misma. El operador organiza (por trabajos similares) y procesa en la computadora todos los programas entregados a ´el y luego entrega los resultados a los programadores para que ´estos hagan las correcciones necesarias. Esto ayud´o a mejorar la eficiencia en el manejo del sistema, pero a´ un se perd´ıa tiempo, mientras el operador organizaba y cambia de un trabajo a otro.
Secuenciador autom´ atico de trabajos: Dado que la labor del operador era en parte muy mec´anica, se decidi´o crear un peque˜ no programa que transfiriera autom´aticamente el control de un trabajo a otro, para aumentar a´ un m´as la eficiencia. Inicialmente se le denomin´o “monitor residente” y podr´ıa decirse que ´este fue el primer sistema operativo. Este sistema operativo usaba con un lenguaje de control de trabajos llamado JCL (Job Control Language), que se programaba con instrucciones que se pasaban a la computadora usando tarjetas perforadas. Sin embargo, debido a la diferencia en las velocidades de procesamiento entre los dispositivos de entrada/salida con respecto a la unidad de procesamiento, la computadora permanec´ıa mucho tiempo inactiva. Operaciones fuera de l´ınea (Off-Line): Mientras iba evolucionando la velocidad de los dispositivos de entrada/salida, se opt´o por dividir el proceso en tres etapas: • La primera consist´ıa en convertir los programas en tarjetas perforadas a cintas magn´eticas (ya que escribir los programas directamente en las cintas era muy complicado en esa ´epoca) usando una peque˜ na computadora especializada en ello. • Luego dicha cinta era puesta en otra computadora, la cual procesaba toda la informaci´on que conten´ıa. Y almacenaba los resultados en otra cinta. • En la tercera y u ´ltima etapa, se llevaba la cinta de resultados a otra computadora especializada, la cual usaba una impresora para pasar todos los resultados a papel. As´ı pod´ıan ser analizados por
11 los programadores posteriormente, para saber si hab´ıa necesidad o no de corregir el programa y repetir el ciclo. Esto aumentaba considerablemente el uso de la computadora, ya que se pod´ıa tener varias lectoras de tarjetas operando simult´aneamente, para aportar m´as cintas a procesar. Sin embargo, hab´ıa que esperar a que la cinta se llenara antes de pasarla a la siguiente etapa, demorando muchas veces el tiempo total de procesamiento. Buffering: Para resolver el problema mencionado se necesit´o crear un t´ecnica, que ayudara a mantener operando todo el sistema (etapa de entrada, procesamiento y salida) al mismo tiempo. Esta t´ecnica consiste en asignar un bloque de memoria predeterminado llamado Buffer, el cual se llena con los datos enviados por los dispositivos de entrada/salida. Al mismo tiempo la computadora lee de este buffer y comienza a procesar colocando los resultados en otro buffer, del que posteriormente se toman para ser impresos. Esta t´ecnica mejora las anteriores gracias a que labores internas antes realizadas por operadores, ahora son automatizadas. Esta t´ecnica dio origen a la t´ecnica DMA1 usada hoy en d´ıa por dispositivos de entrada/salida. Esta t´ecnica consiste b´asicamente en darle el control al dispositivo de DMA para que este coloque la informaci´on directamente en memoria, sin necesidad de utilizar el procesador para ello. Spooling: Debido a la aparici´on de las unidades de disco magn´eticos, fue posible crear la t´ecnica de spool2 , que es b´asicamente un buffer pero en disco. As´ı era posible mantener la memoria un poco m´as descongestionada. Multiprogramaci´ on: Ya que la computadora est´a pr´acticamente inactiva cuando el programa que se ejecuta est´a realizando operaciones de entrada/salida, fue necesario buscar alg´ un mecanismo para poder mejorar su rendimiento. El mecanismo de multiprogramaci´on consiste en conmutar a otro programa a´ un si el actual no ha terminado. Esta conmutaci´on se puede 1 2
Direct Memory Access Simultaneous Peripheral Operation On-Line
12
˜ HISTORICA ´ CAP´ITULO 3. RESENA producir por muchos factores: llegada de programa de mayor prioridad, terminaci´on de un tiempo asignado, solicitud de entrada/salida a un dispositivo, etc. Suponga que el criterio de conmutaci´on es la asignaci´on de un periodo de tiempo entonces si esta conmutaci´on se hace muy r´apidamente, todos los usuarios tendr´ıan la impresi´on de estar trabajando como due˜ nos y se˜ nores de toda la computadora. Este fen´omeno produce la expresi´on “es que la computadora est´a procesando varios programas simult´aneamente”, aunque en la realidad no sea del todo cierta esta afirmaci´on. En estos sistemas pueden presentarse simult´aneamente dos t´ecnicas distintas llamadas Batch (Procesamiento por lotes) y Time Sharing (Tiempo compartido); la diferencia fundamental entre ellas, est´a en la intervenci´on del usuario: en la primera no se presenta, y en la segunda s´ı. Esto quiere decir que en sistemas con multiprogramaci´on del tipo batch no existe la interactividad, mientras que en los de tiempo compartido s´ı (usando m´ ultiples teclados y pantallas llamadas terminales. A los trabajos generados desde una terminal se les conoce con el nombre de sesi´on.
Tiempo Real: Es una modalidad especial de los sistemas con multiprogramaci´on en la cual el tiempo de respuesta es vital para cualquier petici´on. Por ejemplo, el tiempo real en sistemas reactivos utilizados b´asicamente para controlar procesos en la vida real (industriales, control de veh´ıculos, aviones, etc), que est´an continuamente monitoreados por sensores. En ellos, para tomar una determinada acci´on debe presentarse alg´ un evento en especial, como ser´ıa el apagado de todos los motores, el encendido de un sistema contra incendios, entre otros. Es decir, el tiempo de respuesta debe ser extremadamente corto. Procesamiento distribuido: Son sistemas en donde varias computadoras cooperan para resolver un problema. Regularmente se emplean redes de alta velocidad para interconectarlas. Esta capacidad de cooperaci´on no interfiere con la capacidad individual de procesar datos ajenos al problema principal. Se conocen como sistemas d´ebilmente acoplados.
13 Multiprocesamiento: Sistemas donde una sola computadora posee varios procesadores (sistemas fuertemente acoplados). Estos sistemas se utilizan para resolver problemas que requieran una gran cantidad de procesamiento (sistemas expertos, simulaci´on del clima, etc). Para ello, los problemas muy grandes se dividen en problemas m´as sencillos que son atacados por cada procesador. Posteriormente, los resultados parciales de cada uno conforman la soluci´on del problema inicial. Esta t´ecnica se conoce como programaci´on en paralelo. Sistemas monousuario: Al reducirse el costo de los componentes de hardware y aumentar el nivel de miniaturizaci´on, aparecen m´aquinas de uso dom´estico dise˜ nadas para un solo usuario, conocidas como computadoras personales (P.C.). Estas m´aquinas han venido evolucionado tan r´apidamente, que ahora, se encuentran pr´acticamente en cualquier parte y realizando diferentes tipos de labores, desde entretenimiento, hasta procesamiento de im´agenes, pasando por video y sonido a nivel profesional.
14
˜ HISTORICA ´ CAP´ITULO 3. RESENA
Parte II Administraci´ on de Memoria
15
Cap´ıtulo 4 Memoria La memoria puede considerarse con un arreglo unidimensional, es decir, una serie de casillas contiguas donde se almacena informaci´on. Cada casilla tiene asignado un u ´nico n´ umero o subindice (direcci´on memoria), el cual sirve para identificarla. Ver figura 4.1.
Figura 4.1: Modelo conceptual de la memoria
Tanto la capacidad de almacenamiento de una casilla, como la cantidad de ellas en la memoria, son definidas directamente por el fabricante. La cantidad de casillas en memoria, est´a estrechamente relacionada con la capacidad de direccionamiento del hardware. 17
18
CAP´ITULO 4. MEMORIA
Esto quiere decir, que si solo se utilizan 16 bits para direccionar una casilla de memoria, el hardware podr´a tener como m´aximo 216 unidades de almacenamiento. El procesador lee constantemente instrucciones y datos de la memoria para poder ejecutar los programas y por lo tanto, la velocidad de la memoria influye directamente en la velocidad de procesamiento. Al referirse a la velocidad de la memoria, es importante tener en cuenta dos factores: Tiempo de Acceso: Es el tiempo que transcurre entre el inicio y el fin de una operaci´on de lectura o escritura sobre la memoria. Tiempo de Ciclo de Memoria: Es el tiempo m´ınimo entre el inicio de dos accesos consecutivos a memoria. A veces coincide con el tiempo de acceso, pero otras veces es mayor. Por otro lado, todo programa debe encontrarse en memoria, de manera contigua antes de ser ejecutado. Luego que un programa termina su ejecuci´on, la memoria que ocupa se libera. Existen b´asicamente dos tipos de programas desde el punto de vista de la memoria: programas relocalizables y programas no relocalizables. Esta clasificaci´on se refiere a si los programas una vez cargados en la memoria, se pueden cambiar o mover a otra posici´on de memoria, sin ver afectada su ejecuci´on. En adelante, nos centraremos en los programas relocalizables. Como la caracter´ıstica principal de los programas relocalizables, es precisamente el poder moverlos de un lugar a otro sin problema alguno, estos programas no pueden utilizar direccionamiento directo para referenciar sus componentes. Esto quiere decir, que ellos deben utilizar direccionamiento relativo, el cual consiste en referenciar todos los componentes de la aplicaci´on a partir de un desplazamiento sobre una variable llamada cero relativo. Dicha variable contendr´a una direcci´on f´ısica de la memoria, en la cual se encuentra actualmente la aplicaci´on.
4.1. CLASES DE MEMORIA
4.1
19
Clases de memoria
Existen diferentes clases de memoria, dise˜ nadas para diferentes usos. Entre las m´as importantes se encuentran: Ram: La memoria RAM1 (memoria de acceso aleatorio) es el principal sistema de almecenamiento de las computadoras. Esta memoria se considera vol´atil, es decir, su contenido se pierde al desconectarse de la energ´ıa. EDO-RAM: La EDO-RAM2 (RAM de salida extendida de datos) tiene un tama˜ no de 72 pines y usa un banco en la tarjeta principal llamado SIMM. SD-RAM: La SD-RAM3 (Memoria Din´amica Sincr´onica de Acceso aleatorio) tiene un tama˜ no de 168 pines y usa un banco en la tarjeta principal llamado DIMM. Flash: Es un medio de almacenamiento de alta velocidad y facilidad de transporte. Actualmente usado en las c´amaras digitales y reproductores de m´ usica en formato MP3. No todas las presentaciones de la memoria flash son iguales ni compatibles entre ellas. Cach´ e: Es un tipo de memoria de acceso m´as r´apido que la RAM. Almacena la informaci´on que el procesador necesita ejecutar con mayor frecuencia. La Cach´e primaria se reside en el microprocesador y la secundaria reside en la tarjeta principal o main board. ROM: La memoria ROM4 (memoria de s´olo lectura) es la memoria que almacena informaci´on de manera permanente, la cual no se pierde si se apaga el computador. En ella se almacena informaci´on importante para el sistema de diagn´ostico en el proceso de arranque de un computador. 1
Random Access Memory Extended Data Output RAM 3 Synchronous Dinamic RAM 4 Read Only Memory 2
CAP´ITULO 4. MEMORIA
20
4.2
Sistemas de protecci´ on
Por ser la memoria un recurso tan influyente en el rendimiento del procesamiento, debe ser manejada de la mejor forma posible. El proceso software del sistema operativo que se encarga de manejar la memoria, se llama administraci´on de memoria. Existen muchos mecanismos o alternativas para la administraci´on de memoria. La primera alternativa que se tiene, es no tener ning´ un mecanismo propio del sistema para la asignaci´on de memoria, es decir, existe un entorno de trabajo y el programador es due˜ no y se˜ nor de ella (M´aquinas de prop´osito espec´ıfico). Luego se podr´ıa pensar en sistemas de uso m´as generales pero limitados a un solo usuario (monousuario) y a una sola tarea (monotarea), en los cuales la memoria se divide b´asicamente en dos, una peque˜ na parte para el sistema operativo y el resto para el usuario o programador. Debido a que el programa del usuario se encuentra en memoria al mismo tiempo que el sistema operativo, debe crearse alg´ un mecanismo para que el programa del usuario no da˜ ne al sistema operativo ya sea accidentalmente o a prop´osito. Se mencionar´an varios de estos mecanismos de protecci´on, a pesar de que en la pr´actica no se utilizan todos. El primer mecanismo es comparar si cada direcci´on de memoria se encuentra o no dentro de la zona asignada al usuario. En este mecanismo de protecci´on, existen dos posibilidades, que el sistema operativo este ubicado al inicio de la memoria, o al final de ella. Ver figuras 4.2 y 4.3. Otro mecanismo de protecci´on, con el sistema operativo al inicio de la memoria consiste en sumar a la direcci´on solicitada el contenido de un registro base, el cual contiene el l´ımite superior del sistema operativo. Ver figura 4.4. Debido al crecimiento de los sistemas de computo, es necesario crear otras alternativas, de modo que se puedan atender “al mismo tiempo” varios usuarios y varias tareas, pero para ello hay que garantizar un entorno de trabajo (zona de memoria bajo la responsabilidad del programa) protegido de otros programas, que accidentalmente o no, utilicen memoria ya asignada a este entorno.
´ 4.2. SISTEMAS DE PROTECCION
Figura 4.2: Protecci´on usando l´ımite inferior de zona
Figura 4.3: Protecci´on usando l´ımite superior de zona
Figura 4.4: Protecci´on usando registro base
21
22
CAP´ITULO 4. MEMORIA
Para poder garantizar ´esto, es necesario dividir la memoria en m´ ultiples particiones, una para el sistema operativo y una para cada uno de los programas que se est´en ejecutando en el sistema. Para garantizar la “privacidad” de todos los entornos de trabajo, se pueden utilizar los mismos mecanismos ya vistos, pero con unas ligeras modificaciones. Ver figura 4.5.
Figura 4.5: Protecci´on usando l´ımites De igual manera, se puede usar el mecanismo presentado en la figura 4.6.
Figura 4.6: Protecci´on usando registro base y l´ımite superior Otro posible mecanismo utiliza en lugar de la direcci´on, un desplazamiento sobre la zona asignada. Ver figura 4.7.
´ 4.2. SISTEMAS DE PROTECCION
Figura 4.7: Protecci´on usando tama˜ no y base
23
24
CAP´ITULO 4. MEMORIA
Cap´ıtulo 5 M´ ultiples entornos de trabajo Existen dos formas b´asicas de dividir la memoria para contener varios entornos de trabajo: • Divisiones de tama˜ no fijo • Divisiones de tama˜ no variable
5.1
Bloques de tama˜ no fijo
En este modelo cuando un programa requiere m posiciones de memoria, se le asigna n bloques contiguos de un tama˜ no p tal que, n * p >= m. Ver figura 5.1. Es claro observar que en algunos casos, se asignar´a m´as memoria de la que el programa realmente necesita, caso en el cual n * p es estrictamente mayor que m. El espacio adicional al tama˜ no del programa se desperdicia y no puede ser utilizado por ning´ un otro programa, ya que u ´selo o no, este espacio pertenece al entorno de trabajo de ese programa. A este problema se le llama fragmentaci´on interna . Como ya se ha mencionado, cuando un programa termina su ejecuci´on, la memoria que ´este ten´ıa asignada se libera. Pero como no todos los programas 25
´ ENTORNOS DE TRABAJO CAP´ITULO 5. MULTIPLES
26
Figura 5.1: Fragmentaci´on Interna
terminan al mismo tiempo, ir´an apareciendo espacios libres cuyo tama˜ no varia entre 1 y p bloques contiguos de memoria. Cuando otro programa necesita memoria y hayan varios huecos disponibles, surge la pregunta de cu´al hueco debe usar. La asignaci´on de memoria se puede hacer siguiendo una de las siguientes estrategias:
5.1.1
Estrategias de ajuste
• Estrategias sobre los huecos: FF: La estrategia FF1 selecciona el primer hueco que cumpla la condici´on de asignaci´on. BF: La estrategia BF2 selecciona el hueco m´as peque˜ no que cumpla la condici´on de asignaci´on. 1 2
First Fit Best Fit
˜ FIJO 5.1. BLOQUES DE TAMANO
27
WF: La estrategia WF3 selecciona el hueco m´as grande que cumpla la condici´on de asignaci´on. • Estrategias sobre las solicitudes: FF: La estrategia FF selecciona la primera solicitud que se pueda suplir con el hueco actual. BF: La estrategia BF selecciona la solicitud m´as grande que se pueda suplir con el hueco actual. WF: La estrategia WF selecciona la solicitud m´as peque˜ na que se pueda suplir con el hueco actual. Estas estrategias de ajuste no son las u ´nicas que pueden ser utilizadas, pero son las m´as comunes. Es de anotar que el tiempo que el sistema operativo se demora en determinar el hueco o solicitud a utilizar es diferente en cada una de las estrategias. Es decir, este factor hay que tenerlo en cuenta a la hora de seleccionar la estrategia de ajuste. Adem´as, este tiempo puede depender de los datos y en casos particulares debe ser considerado como un valor constante dependiendo de la complejidad del algoritmo.
5.1.2
Criterios de evaluaci´ on de las estrategias
Para poder saber si una estrategia de ajuste es mejor que otra, se utilizan los siguientes indicadores como puntos de comparaci´on: Tiempo de servicio: Tiempo que tarda un programa o proceso en ejecutarse y salir del sistema (T iempo de salida − T iempo de llegada). Dicho tiempo, cuanto m´as peque˜ no sea, mejor. Tiempo de espera: Este valor expresa todo el tiempo que el proceso estuvo inactivo (T iempo de servicio − T iempo de ejecucion). Dicho valor cuanto m´as peque˜ no sea, mucho mejor. 3
Worst Fit
28
´ ENTORNOS DE TRABAJO CAP´ITULO 5. MULTIPLES
´Indice de Servicio: Valor que representa el porcentaje de tiempo que el proceso se est´a ejecutando, con respecto al tiempo que permanece en de ejecucion el sistema ( TTiempo ). Este valor indica si el proceso fue limiiempo de servicio tado por el procesador (valor cercano a 1) o por los dispositivos de entrada/salida del sistema (valor cercano a 0). Los valores que realmente importan son los promedios de estos criterios despu´es de un periodo x de tiempo y de haber ejecutado n procesos. Por otra parte, debido a que es estrictamente necesario que los programas se coloquen de manera contigua en la memoria para ser ejecutados, tenemos el siguiente problema: Imagine un programa que requiera m bloques de memoria en un momento dado, pero justo en ese momento la memoria est´a fragmentada, existiendo huecos de tama˜ no menor que m. Entonces el programa no se puede ejecutar, a´ un si la suma de todos los huecos es mucho mayor que m. Por lo tanto fue necesario buscar mecanismos que permitieran solucionar este problema de asignaci´on. Existen varios mecanismos para ayudar a solucionar este problema. Sin embargo, cabe destacar dos, uno que no requiere de un hardware especial, (´ unicamente software) y el otro que si lo requiere.
5.1.3
Compactaci´ on
Esta es una alternativa para solucionar el problema usando solamente software. La idea consiste en mover de un lugar a otro entornos de trabajo, de tal manera que se logre acomodar los datos dejando juntos todos los huecos solucionando as´ı el problema. Pero imagine por un momento el costo (tiempo de procesamiento) de esta operaci´on. Primero habr´ıa que analizar la situaci´on actual de la memoria, determinando qu´e entornos de trabajo se pueden mover y cuales no (relocalizables y no relocalizables) y buscar todas las combinaciones posibles de movimiento, trantando de encontrar la m´as apropiada. Ver figura 5.2. Como se puede ver claramente, es extremadamente costoso desde el punto de vista del tiempo requerido como del tiempo de procesamiento.
˜ FIJO 5.1. BLOQUES DE TAMANO
29
Figura 5.2: Ejemplo de compactaci´on
5.1.4
Paginaci´ on
La paginaci´on permite que los bloques de memoria que componen un entorno de trabajo no est´en necesariamente contiguos. Para lograrlo, es necesario un hardware especial. En este nuevo modelo de administraci´on de memoria, el programador tiene una visi´on de la memoria diferente al estado real de la misma. Esto quiere decir que desde su punto de vista, la memoria de su entorno es contigua, pero no necesariamente lo est´a. En primera instancia, el programador trabajar´a en una memoria llamada memoria l´ogica, la cual es solo un “espejismo”, es decir, es la misma memoria f´ısica o real, pero vista a trav´es del hardware especial. Como la memoria l´ogica es la misma f´ısica, se encuentra dividida en bloques de igual tama˜ no. Los bloques de la memoria f´ısica se les llama marcos (frames) y los bloques de la memoria l´ogica se llaman p´aginas.
30
´ ENTORNOS DE TRABAJO CAP´ITULO 5. MULTIPLES
El mecanismo de hardware consiste b´asicamente en soportar una tabla por cada programa, llamada tabla de p´aginas. Cada entrada de la tabla est´a un´ıvocamente relacionada con una p´agina determinada y en su contenido, expresa el n´ umero del marco en el cual se encuentra dicha p´agina en la memoria f´ısica. Para disminuir la fragmentaci´on interna, se desea que el tama˜ no de las p´aginas sea peque˜ no. Pero esto aumentar´ıa el n´ umero de entradas de la tabla, por lo que no puede ser tampoco muy peque˜ no. Para entender mejor el concepto b´asico de la paginaci´on, vea el ejemplo de la figura 5.3, en el cual el tama˜ no de los bloques es de 2 bytes y los programas tienen asignado un n´ umero determinado de p´aginas: 4 (Programa 1), 5 (Programa 2), 3 (Programa n). Observe que en la p´agina 3 del programa 1 se almacena u ´nicamente un caracter (caben dos). Ocurre lo mismo en la p´agina 2 del programa n. En ambos programas, existe un desperdicio de un 1 byte. En este ejemplo se puede apreciar claramente que desde el punto de vista de cada programa, su memoria l´ogica est´a contigua mientras que en la memoria f´ısica no. Otra ventaja muy importante de este mecanismo de paginaci´on es la posibilidad de compartir marcos entre programas, con el objeto de no tener informaci´on duplicada en la memoria. Observe el marco 8 de la figura 5.3. Un ejemplo de ello, es cuando se desea ejecutar m´as de una vez un mismo programa. Entonces dicho programa “deber´ıa” estar duplicado, tantas veces como se haya ejecutado en la memoria, pero si colocamos una copia de ´el, compartida en todos los entornos, estaremos ahorrando mucho espacio. Cabe anotar que cada instancia del programa debe conservar sus datos de manera no compartida, propia de su entorno de trabajo. Esta es una visi´on muy general del mecanismo de paginaci´on. En la pr´actica es mucho m´as complejo, ya que la tabla de p´aginas contiene m´as informaci´on: (si un marco es de datos, de c´odigo, de s´olo de lectura, de ejecuci´on, entre otros).
˜ FIJO 5.1. BLOQUES DE TAMANO
Figura 5.3: Mecanismo de paginaci´on
31
32
5.1.5
´ ENTORNOS DE TRABAJO CAP´ITULO 5. MULTIPLES
Direccionamiento
Dado que existe conceptualmente una memoria l´ogica y existe una memoria f´ısica, tambi´en existen direcciones l´ogicas y direcciones f´ısicas. Se definir´a una direcci´on l´ogica, a toda aquella que haga referencia a la memoria l´ogica y de manera an´aloga se definen las direcciones f´ısicas. Una direcci´on en este modelo est´a construida por dos partes: la primera hace referencia a la p´agina que se desea acceder, y la segunda, hace referencia a un desplazamiento dentro de esta p´agina. Ver figura 5.4.
Figura 5.4: Mecanismo de paginaci´on - Funcionamiento
En el ejemplo de la figura 5.3, un desplazamiento de 0 indica el primer caracter, mientras que un desplazamiento de k indica el caracter que est´a en la posici´on k - 1. Naturalmente, dicho desplazamiento no debe ser mayor al tama˜ no de la p´agina. Veamos ejemplos con respecto a la figura 5.3.
˜ FIJO 5.1. BLOQUES DE TAMANO
33
• Programa 1: – Direcci´on L´ogica 1:0, convertida a Direcci´on F´ısica 1:0, Dato i – Direcci´on L´ogica 2:1, convertida a Direcci´on F´ısica 8:1, Dato y – Direcci´on L´ogica 1:1, convertida a Direcci´on F´ısica 1:1, Dato o • Programa 2: – Direcci´on L´ogica 3:1, convertida a Direcci´on F´ısica 8:1, Dato y – Direcci´on L´ogica 2:0, convertida a Direcci´on F´ısica 5:0, Dato e Tabla de p´ aginas Podr´ıa pensarse que dichas tablas se encuentran en registros de hardware. Sin embargo, aunque ´esto podr´ıa hacerse, ser´ıa muy costoso. Por lo tanto, hay que buscar otra alternativa m´as viable. Dicha alternativa puede ser crear estas tablas en la memoria f´ısica. Pero como es necesario pasar por la tabla de p´aginas para ir a la memoria f´ısica, el hecho de tener la tabla de p´aginas en ella crea un c´ırculo vicioso. As´ı, es necesario que el hardware brinde un registro adicional llamado PTBR 4 para guardar la direcci´on f´ısica de la tabla de p´aginas del programa en ejecuci´on. Ver figura 5.5. Dado que realmente los procesos no se ejecutan al mismo tiempo, solo existir´a un proceso ejecut´andose en cada instante en m´aquinas de un solo procesador. Entonces, el registro PTBR, almacenar´a la direcci´on f´ısica de la tabla de p´aginas del programa en ejecuci´on. Cuando sea necesario pasar a otro programa, este valor se guardar´a en la memoria f´ısica, se restaura la direcci´on de la nueva tabla de p´aginas que ya hab´ıa sido almacenada con anterioridad y todo contin´ ua igual. Este proceso de guardar y recuperar la informaci´on de cada proceso se conoce como cambio de contexto. El proceso para llegar a la p´agina i-esima es el siguiente: • Se ubica en la memoria f´ısica la tabla de p´aginas usando el PTBR. 4
Page Table Base Register
´ ENTORNOS DE TRABAJO CAP´ITULO 5. MULTIPLES
34
Figura 5.5: PTBR - Page Table Base Register
• Se desplaza hasta la posici´on i-esima de la tabla. • Se toma el n´ umero del marco de la tabla de p´aginas. • Se busca en la memoria f´ısica el marco y tomamos el elemento solicitado usando el desplazamiento (el desplazamiento f´ısico es el mismo que el desplazamiento l´ogico). Como se puede ver en el procedimiento anterior, para acceder a una posici´on determinada, hay que ir dos veces a la memoria: una a buscar el marco correspondiente y otra a buscar el dato. Esto duplica el tiempo de acceso a memoria, lo cual es un problema. Para solucionarlo, en la pr´actica se utiliza una memoria especial muy peque˜ na usqueda anticipada o TLB 5 que usualllamada buffer de traducci´on con b´ 5
Translation look aside buffers
˜ FIJO 5.1. BLOQUES DE TAMANO
35
mente se implementa con un tipo de memoria especial llamada memoria asociativa.
´ ENTORNOS DE TRABAJO CAP´ITULO 5. MULTIPLES
36
Cuando a una memoria asociativa se le hace una solicitud de b´ usqueda, ´esta se realiza simult´aneamente en todos los registros de la memoria y la respuesta es casi inmediata (Menos del 10% tiempo que gastar´ıa ir a la memoria f´ısica). Esta memoria contendr´a una parte muy peque˜ na de la tabla de p´aginas, y su forma de utilizaci´on es la siguiente: Se hace una solicitud de b´ usqueda de una p´agina determinada. • Si est´a, entonces se obtiene el n´ umero del marco asociado esta p´agina. • Sino: – Se hace el procedimiento normal para llegar a una p´agina. – Se guarda este resultado en la memoria asociativa (Con lo cual se garantiza que si las siguientes consultas son a esta p´agina, el valor del marco ya est´a listo en la memoria asociativa, reduciendo de manera considerable el tiempo de acceso). Cada fabricante de hardware, entrega un valor equivalente al porcentaje de acierto de b´ usqueda en la memoria asociativa. Dicho valor se llama tasa de acierto T. Por ejemplo : Suponga que se gastan m nanosegundos para el acceso al TLB y p nanosegundos para el acceso a la memoria, donde m << p. Entonces si la p´agina est´a almacenada en el TLB, se utilizaran m + p nanosegundos. Si la p´agina no se encuentra en el TLB, se gastar´an 2p + m: • m nanosegundos buscando en el TLB. • p nanosegundos buscando en la tabla de p´aginas. • p nanosegundos buscando el marco deseado. En consecuencia, se defiere el tiempo de acceso efectivo a la memoria como: T A = T (m + p) + (1 − T )(2p + m) Donde 1 - T es la tasa de desaciertos en el TLB.
˜ VARIABLE 5.2. BLOQUES DE TAMANO
5.2
37
Bloques de tama˜ no variable
En este modelo, cuando un programa requiere m posiciones de memoria, se le asigna un bloque de tama˜ no m. Es claro observar que no existe el problema de fragmentaci´on interna. Pero, por el simple hecho de asignar y liberar memoria en un per´ıodo de tiempo, se van generando huecos (memoria contigua libre) entre los entornos de trabajo ya asignados. Sin embargo, si se asignan bloques de tama˜ no variable, los huecos que van quedando son tambi´en de tama˜ no variable. Recuerde que en el modelo anterior, los huecos son un conjunto de bloques de tama˜ no fijo, mientras en este nuevo modelo no hay ninguna garant´ıa en cual puede ser el tama˜ no m´ınimo de un hueco. Por lo tanto cuando quedan huecos en la memoria donde la suma total de la memoria disponible es mayor o igual a la de una solicitud de un programa, pero dicha solicitud no cabe en ning´ un hueco individual se produce un problema llamado fragmentaci´on externa. La fragmentaci´on externa puede llegar a ser un problema grave de ineficiencia y desperdicio de recursos, debido a que mantener la informaci´on del lugar en el que se encuentran bloques muy peque˜ nos es m´as costoso en t´erminos de memoria que los mismos huecos. Una posible soluci´on es otorgarle el espacio de los huecos huecos peque˜ nos a la solicitud m´as cercana, creando as´ı fragmentaci´on interna en este sistema. Ahora bien, si existen varios huecos que cumplen con un tama˜ no adecuado para una solicitud, tambi´en se pueden usar las estrategias de ajuste ya mencionadas, al igual que el planificador de trabajos. De manera an´aloga como ocurre en el modelo que utiliza bloques de tama˜ no fijo, en este modelo tambi´en se presenta el problema de asignaci´on de memoria, por tener la memoria libre dispersa en bloques de tama˜ no variable no contiguos. Para solucionar el problema de la fragmentaci´on externa, se puede usar la compactaci´on de forma similar a la usada en el modelo de bloques de tama˜ no fijo, o usar una soluci´on por hardware llamada segmentaci´ on.
´ ENTORNOS DE TRABAJO CAP´ITULO 5. MULTIPLES
38
5.2.1
Segmentaci´ on
En la segmentaci´on el entorno de trabajo de los programas se compone de un conjunto de segmentos de tama˜ no variable, sin ning´ un orden espec´ıfico donde la memoria no necesariamente es considerada como un arreglo unidimensional. Cada uno de los bloques tiene un nombre y un desplazamiento. Para hacer m´as sencilla la implementaci´on, los segmentos se numeran, y se hace referencia a ellos por el n´ umero y no por el nombre. Ver figura 5.6. Su forma operar es la siguiente: • Toda direcci´on l´ogica en este modelo est´a constituida por dos partes, una parte que num´ericamente indica el segmento y la otra parte que indica el desplazamiento dentro de ´el. • A partir de esa posici´on tomamos el valor de la base (direcci´on f´ısica donde comienza el segmento) y del l´ımite (longitud o tama˜ no) de ese segmento. • Luego se procede a comparar el valor del l´ımite del segmento con el valor del desplazamiento. Si el primero es mayor, se le sumar´a el desplazamiento a la base del segmento para obtener la direcci´on f´ısica donde se encuentra ese segmento. Si es menor, se produce un error. Ver figura 5.7. La tabla de segmentos tiene las mismas consideraciones de implementaci´on que la tabla de p´aginas. Por ende, existe un registro llamado STBR 6 , el cual contiene la direcci´on f´ısica en donde radica la tabla en la memoria. Ver figura 5.8. Es importante observar que las operaciones aritm´eticas y relacionales como sumas, multiplicaciones, b´ usquedas y comparaciones son realizadas por el hardware y no por el software. La u ´nica responsabilidad del software es la de mantener la informaci´on en las p´aginas. Cada programa debe tener su propia tabla de segmentos, para que ´el conozca donde se encuentra toda su informaci´on. Al igual que en el sistema de 6
Segment Table Base Register
˜ VARIABLE 5.2. BLOQUES DE TAMANO
Figura 5.6: Mecanismo de segmentaci´on
39
´ ENTORNOS DE TRABAJO CAP´ITULO 5. MULTIPLES
40
Figura 5.7: Mecanismo de segmentaci´on - Funcionamiento
paginaci´on, el programa ve toda su memoria contigua, pero es posible que ´esta no lo est´e realmente. Como cada programa tiene su propia tabla de segmentos, tampoco existe problema alguno en compartir segmentos entre programas, simplemente haciendo que el valor de la base y l´ımite de los segmentos a compartir, est´en igual en ambas tablas. Ver figura 5.6. Cabe anotar, que en la pr´actica, al igual que en el sistema de paginaci´on, estas tablas contienen m´as informaci´on que la ya mencionada. Sin embargo, ´esta es la m´ınima informaci´on necesaria para que el modelo opere.
5.3
Sistemas combinados
En estos modelos, se utiliza una combinaci´on de paginaci´on y segmentaci´on. Dichos modelos se llaman, dependiendo el orden en que se aplican los m´etodos: • Paginaci´on Segmentada.
5.3. SISTEMAS COMBINADOS
41
Figura 5.8: STBR - Segment Table Base Register
• Segmentaci´on Paginada. Por ejemplo en el caso de la segmentaci´on paginada, se aplica primero el modelo de segmentaci´on y posteriormente el de paginaci´on, es decir, el programador ve su sistema totalmente segmentado y da las direcciones l´ogicas como ya se vi´o. El cambio aparece al final del proceso de segmentaci´on, ya que la salida no es una direcci´on f´ısica sino l´ogica, la cual es procesada por la unidad de paginaci´on. Esto quiere decir que el resultado del modelo de segmentaci´on es una direcci´on que contiene un n´ umero de p´agina y un desplazamiento dentro de ella.
42
´ ENTORNOS DE TRABAJO CAP´ITULO 5. MULTIPLES
Cap´ıtulo 6 Memoria virtual Ya se han mostrado varias estrategias para administrar la memoria. Sin embargo, ellas solo consideran el problema de ubicaci´on de los programas y sus entornos, es decir, consideran el problema de manejo de la asignaci´on u ´nicamente. La memoria virtual es una t´ecnica de gesti´on que ayuda a la ejecuci´on de programas y el manejo de sus entornos de una manera parcial, es decir, que ellos no necesariamente tienen que estar en su totalidad en memoria. Esto garantiza un mejor aprovechamiento de la misma, ya que habr´a m´as espacio disponible para cargar o manipular m´as informaci´on. La memoria virtual se conoce con el nombre de Swap o zona de intercambio. Adem´as, con esta t´ecnica, el sistema operativo puede manipular o ejecutar programas cuyo tama˜ no supere el de la memoria f´ısica. Esta t´ecnica de gesti´on utiliza una parte de la unidad de almacenamiento secundario de la computadora (disco) como si fuera memoria. Por supuesto, esto no quiere decir que ahora los programas no tienen que estar en memoria para ser ejecutados, o los datos para ser procesados; simplemente lo que hace es almacenar zonas que no est´en siendo usadas de la memoria, o que cuyo acceso sea muy espor´adico, en el disco (swap-out) y liberar esta zona de la memoria, para que posteriormente sea asignada a informaci´on o parte de una aplicaci´on que s´ı se necesita ahora o con mayor frecuencia. Cuando el sistema necesite la informaci´on que ten´ıa en memoria y que baj´o al disco (swap-out), ´esta tendr´a que ser cargada en memoria nuevamente para poder ser utilizada (swap-in). 43
44
CAP´ITULO 6. MEMORIA VIRTUAL
Figura 6.1: Memoria Virtual
Como ya se ha dicho, los programas y los datos se pueden subir a memoria por partes, lo cual le da al usuario la perspectiva de tener m´as memoria que la que realmente tiene, ya que “aparentemente” puede ejecutar m´as programas y manejar un volumen de informaci´on mayor. Ahora bien, como el tiempo de acceso a un dispositivo de almacenamiento secundario es mucho mayor que el tiempo de acceso a la memoria, el utilizar de manera no apropiada esta t´ecnica de gesti´on, podr´ıa disminuir notablemente la velocidad del sistema. Otra consideraci´on que hay que tener en cuenta para no afectar la velocidad, es la ubicaci´on de la zona destinada a la memoria virtual en el disco. Es mucho mejor tener esta zona por fuera de la reservada para el sistema operativo, que tenerla entremezclada con ´el. Esto garantiza que todo el espacio reserva-
´ POR DEMANDA 6.1. PAGINACION
45
do es responsabilidad exclusiva del manejador de memoria virtual. Adem´as se puede acceder esta zona directamente, sin pasar por los servicios de acceso a archivos dados por el mismo sistema operativo. La memoria virtual se puede implementar mediante varios mecanismos, dependiendo de qu´e administrador de memoria estemos usando. Paginaci´ on por demanda: Solo se ir´an subiendo a memoria las p´aginas que se vayan requiriendo. Segmentaci´ on por demanda: Se ir´an subiendo los segmentos que se necesiten. Es m´as complejo por ser de tama˜ no variable. Segmentaci´ on paginada por demanda: Se usa cuando se ven segmentos, pero el sistema utiliza paginaci´on. En este modelo se emplea la paginaci´on por demanda. En consecuencia, la paginaci´on por demanda, es el mecanismo m´as utilizado.
6.1
Paginaci´ on por demanda
Es un proceso mediante el cual se puede cargar parte de un programa en la memoria, aumentando la memoria disponible del sistema. Los pasos a continuaci´on ilustran el proceso. Ver figura 6.2. 1. Instrucci´on de acceso a memoria. 2. Se genera una excepci´on llamada “fallo de p´agina”. Dicha excepci´on ejecuta autom´aticamente una rutina del sistema operativo, espec´ıficamente una parte del mecanismo de memoria virtual. 3. Se busca la p´agina solicitada en el disco. Esta labor la desempe˜ na la rutina ejecutada autom´aticamente por la excepci´on. 4. Se ubica la p´agina en un marco libre (si existe). 5. Se actualiza la tabla de p´aginas con la informaci´on del nuevo marco. 6. Se retorna a la instrucci´on de acceso a memoria.
46
CAP´ITULO 6. MEMORIA VIRTUAL
Figura 6.2: Memoria Virtual - Funcionamiento
Algo que debe quedar muy claro es que todos estos mecanismos de administraci´on de memoria, al igual que las t´ecnicas de gesti´on son transparentes para el usuario o programador. Supongamos que estamos en el punto cuarto del funcionamiento de la memoria virtual, es decir, estamos buscando un marco libre para ubicar la p´agina solicitada, pero resulta que no hay marcos libres. Entonces se debe ejecutar otra parte del mecanismo de memoria virtual, que se encargar´a de determinar cual de las p´aginas que actualmente est´a en memoria debe hacersele swapout, para poder colocar la p´agina solicitada en ese espacio. A esta rutina se le llama rutina de reemplazo de p´aginas. Se v´e claramente que cuando no hay marcos disponibles, se deben realizar dos transferencias de p´agina, una para hacer swap-out (p´agina seleccionada para ser reemplazada) y la otra de swap-in (p´agina solicitada), aumentando a´ un m´as el retardo en el sistema. Para ayudar a controlar este fen´omeno, el hardware proporciona de un bit por cada p´agina llamado (dirty bit) o bit “sucio”, el cual indica en cada momento si la p´agina ha sido modificada o no. Para ver como este bit puede ayudar, suponga que se comenz´o a ejecutar la rutina de reemplazo de p´aginas, la cual detecta que existe una p´agina que no se ha modificado y que a´ un permanece una copia de ella en el disco. Entonces la rutina decide quitar esta p´agina, modificando u ´nicamente la tabla de p´aginas (no hace swap-out), sobrescribe
´ 6.2. RUTINAS DE REEMPLAZO DE PAGINAS
47
en ese espacio los datos de la p´agina solicitada y actualiza nuevamente la tabla de p´aginas, ahorrando as´ı una transferencia de p´agina.
6.2
Rutinas de reemplazo de p´ aginas
Existen varios algoritmos para solucionar este problema. Sin embargo, el mejor ser´a aquel que logre reemplazar las p´aginas que tarden m´as en ser solicitadas. Es decir que trate de evitar al m´aximo el reemplazar p´aginas que se usen muy frecuentemente, ya que ello producir´ıa fallas de p´agina muy continuamente, deteriorando la eficiencia del sistema. Est´a claro que la dificultad radica en no poder prever el comportamiento futuro de los procesos. Otro factor muy importante es el n´ umero de p´aginas que dispone el hardware, pues entre menos ixmarcos existan, m´as fallas de p´aginas habr´a.
6.2.1
Algoritmo FIFO
FIFO 1 es el algoritmo m´as sencillo. Consiste en asociar a cada p´agina el instante de tiempo en el que se trajo a memoria (cola que indicar´a el movimiento de p´aginas). As´ı pues cuando hay que reemplazar una p´agina (se a˜ nade al final de la cola), se reemplazar´a por la p´agina m´as antigua (la que est´e a la salida de la cola). Este algoritmo es f´acil de programar y produce poca sobrecarga al sistema. Sin embargo su rendimiento no siempre es bueno, ya que sufre de la anomal´ıa de Belady. La anomal´ıa de Belady es un fen´omeno que les ocurre a los algoritmos de reemplazo de p´aginas, que consiste en que la tasa de fallo de p´aginas se incrementa cuando se aumenta el n´ umero de marcos asignados. Adem´as de sufrir de la anomal´ıa Belady, la filosof´ıa FIFO no siempre es correcta, ya que no necesariamente la p´agina m´as antigua es la menos utilizada, por ejemplo cuando se tiene c´odigo compartido entre aplicaciones. Dicho c´odigo permanecer´a en el sistema sin ser modificado, convirti´endose 1
First In, First Out
CAP´ITULO 6. MEMORIA VIRTUAL
48
en alg´ un momento en el m´as antiguo a pesar de ser uno de los m´as utilizados, fallando as´ı su filosof´ıa.
6.2.2
Algoritmo LRU
El algoritmo LRU 2 , asocia a cada p´agina el instante de tiempo en que se us´o por u ´ltima vez. Aunque se considera un algoritmo ´optimo, tiene la dificultad de c´omo saber en la pr´actica cu´al es la p´agina que se us´o menos recientemente. Este algoritmo requiere de hardware especial. Sin embargo, el problema radica en el c´omo determinar el orden por hardware.
Contadores de hardware: El hardware incorpora un contador de referencias a memoria, colocando este valor en un nuevo campo de la tabla de p´aginas. Dicho campo ser´a el que el sistema operativo consulte a la hora de buscar que p´agina reemplazar. Matrices de hardware: Consiste en tener una matrizde n * n bits, siendo n el n´ umero de p´aginas en la memoria. Dicha matriz se inicializa a cero (matriz nula). Cuando se accede a la p´agina i-´esima, se colocar´a a 1 toda la fila i-´esima y a 0 toda la columna i-´esima. As´ı la p´agina menos usada ser´a aquella que tenga el menor valor binario en la fila. Pilas: La idea consiste en tener una pila (LIFO3 ), en la cual se almacenan todas las referencias a las p´aginas. As´ı la p´agina menos usada ser´a la que est´e en el fondo de la pila.
En conclusi´on, pocos sistemas proporcionan suficiente ayuda por hardware para un verdadero reemplazo LRU, incluso muchos no ofrecen ning´ un apoyo. Por lo tanto hay que buscar otros algoritmos que tiendan a un comportamiento ´optimo. 2 3
Least Recently Used Last In, First Out
´ 6.2. RUTINAS DE REEMPLAZO DE PAGINAS
6.2.3
49
Algoritmos de bits de referencia
Como ya se dijo el hardware proporciona un bit “sucio”. Sin embargo, muchos sistemas tambi´en ofrecen otro bit “de referencia”, el cual se activar´a (valor 1) cuando se acceda a la p´agina ya sea para lectura o escritura. Dicho control tambi´en se lleva por cada p´agina. No hay que olvidar que es el sistema operativo, y no el hardware, quien limpia (coloca a 0) estos bits. Ahora con la ayuda de estos bits, surgen varios algoritmos de reemplazo de p´aginas. Algoritmo por clasificaci´ on Consideremos ambos bits para crear una tabla de clasificaci´on: Bit Bit Clase “Referencia” Sucio” 0 0 No accedida y no modificado. 1 0 Accedida y no modificada. 1 1 Accedida y modificada. Tabla 6.1: Bits de control Se puede ver claramente que la combinaci´on 1 para el bit “sucio”, y 0 para el bit “referencia” no se presenta, ya que el de el bit “referencia” se activa cuando hay un acceso a la p´agina, es decir, no solo cuando hay una lectura, sino tambi´en cuando hay una escritura. La filosof´ıa de este algoritmo es permitir al sistema operativo que seleccione por alg´ un m´etodo una p´agina que se encuentre a nivel 0,0 (no accedida y no modificada). El m´etodo que se utilice para seleccionar dicha p´agina no importa. Algoritmo de segunda oportunidad o reloj Consiste en tener todas las p´aginas en una estructura de lista circular. En ella, un apuntador indicar´a la posici´on actual en la lista. La p´agina que se encuentre en dicha posici´on ser´a la candidata a ser reemplazada.
50
CAP´ITULO 6. MEMORIA VIRTUAL
Sin embargo, la p´agina siguiente no necesariamente es la siguiente p´agina de la lista, sino que se buscar´a la p´agina cuyo bit de referencia est´e en cero. Cada vez que el puntero avanza en la lista, ir´a limpiando el bit de referencia. Hay que notar que cuando todos los bits de referencia est´an a 1, este algoritmo se convierte temporalmente en el algoritmo FIFO. Este algoritmo se puede extender a un historial de bits, es decir, que en un intervalo de tiempo peri´odico el sistema tomar´a el valor del bit “referencia” sin importar cual sea y lo a˜ nadir´a a un byte o bytes de control. La manera de a˜ nadir este valor es haciendo un desplazamiento a la izquierda de dichos bytes hist´oricos y sumarle el bit “referencia”. A la hora de seleccionar una p´agina, se selecciona la p´agina cuyo valor binario en los bytes hist´oricos sea menor (indicar´a que la p´agina no se ha accedido en n per´ıodos, donde n es el tama˜ no en bits de los bytes hist´oricos). Algoritmo de apoyo Este algoritmo de apoyo complementa al algoritmo de reemplazo de p´aginas para ganar velocidad de respuesta. La idea de este algoritmo es tener permanentemente un dep´osito de marcos vac´ıos. Cuando ocurre un “fallo de p´agina” se le asigna r´apidamente un marco del dep´osito para suplir la necesidad y acelerar el tiempo respuesta. Adem´as el algoritmo de reemplazo selecciona una p´agina, para realizarle swap-out. Dicho espacio libre se a˜ nade al dep´osito, para as´ı mantener un existencia de marcos libres. Una extensi´on a este algoritmo, es que cuando el dispositivo de paginaci´on est´e inactivo todas las p´aginas que hayan sido modificadas, se copian en el disco. Luego se limpian sus bits de control (sucio y referencia). Esta extensi´on aumenta la probabilidad de que una p´agina est´e limpia (no modificada) cuando se tenga que seleccionar una. Por consiguiente no tendr´a ya que hacersele swap-out. Otra extensi´on, es mantener una lista que indique que p´aginas son las que est´an en el dep´osito, pues el hecho de pasar una p´agina a ´el no indica que haya que borrar f´ısicamente la informaci´on que contiene. Solo se borra de la tabla de p´aginas su referencia. As´ı, cuando se genere un “fallo de p´agina”, se consulta esta lista para saber si est´an sus datos en el dep´osito. De estarlo,
´ 6.2. RUTINAS DE REEMPLAZO DE PAGINAS
51
no se requiere ning´ un acceso al disco, aumentando la eficiencia; de no estar en el dep´osito, el algoritmo se comporta igual que antes. Esto se puede hacer, ya que cuando se retir´o la referencia de la p´agina, se le hizo swap-out, y se sabe que en el disco no sufrir´a cambio alguno. Por lo tanto, los datos que est´an en memoria (ahora en el deposito) s´ı son v´alidos. Por u ´ltimo, hay que tener cuidado ya que un proceso requiere un m´ınimo de p´aginas activas para operar normalmente. Si se le asigna menos del limite inferior de p´aginas dado por la arquitectura, se presentar´a un problema de hiperpaginaci´on (thrashing).
52
CAP´ITULO 6. MEMORIA VIRTUAL
Cap´ıtulo 7 Intel y compatibles 7.1
Modos de operaci´ on
Los procesadores Intel 80386 y compatibles son capaces de operar en tres modos diferentes: Modo real: Opera en forma id´entica al 8086/8088 de Intel, siendo su u ´nica diferencia la velocidad de procesamiento. Est´a limitado a direccionar 1 MB. Cuando se inicia un computador, siempre lo hace en modo real. Luego a trav´es de un procedimiento especial conmuta a modo protegido. Modo protegido: Es un modo que permite direccionar 4 GB lineales o 64 TB virtuales. Tambi´en dispone de mecanismos por hardware de protecci´on para la memoria, multitarea, paginaci´on y segmentaci´on. Modo virtual: Debido a que los programas dise˜ nados para ejecutarse en modo real no funcionan en modo protegido, fue necesario crear por hardware un mecanismo que lo permitiera. Este se llama modo virtual. Los programas que se ejecutan en modo virtual no diferencian entre este modo y el modo real. Cuando el procesador est´a en modo virtual debe existir un programa monitor (propio del sistema operativo) en modo protegido que intercepta algunas de las solicitudes de la aplicaci´on en modo virtual y las convierte a su equivalente en modo protegido, haciendo el proceso transparente para el usuario. 53
CAP´ITULO 7. INTEL Y COMPATIBLES
54
Cuando se encuentra en ejecuci´on el programa monitor, ´este es considerado como un proceso m´as del modo protegido. Es decir, tambi´en se pueden ejecutar “al mismo tiempo” otros modos virtuales o diferentes tareas en modo protegido. Este cap´ıtulo describe los conceptos fundamentales de la gesti´on de memoria avanzada (MMU 1 en modo protegido) en los procesadores superiores a INTEL 80386 y compatibles.
7.2
Protecci´ on de memoria
Recordemos que la protecci´on de memoria se utiliza para evitar que los usuarios, de manera accidental o intencionada, accedan a la zona de memoria utilizada por el sistema operativo u otros usuarios. Los procesadores Intel usan base y tama˜ no para delimitar las zonas de sus distintos entornos de trabajo. Los sistemas de protecci´on de memoria para estos entornos de trabajo est´an implicitos en los mecanismos de paginaci´on y segmentaci´on.
7.3
Paginaci´ on
La paginaci´on es el manejo que se le da a los entornos de trabajo cuando se utiliza una tabla de p´aginas.
7.3.1
Direcci´ on l´ ogica
Una direcci´on l´ogica en estos procesadores est´a conformada por un ´ındice de directorio, un ´ındice de p´agina y un desplazamiento. Ver la figura 7.1. Si se omitiera el ´Indice de Directorio, podr´ıamos decir que corresponde al modelo te´orico visto en la p´agina 29. De acuerdo a la figura 7.1, el campo Indice de p´agina se compone de 10 bits, raz´on por la cual el n´ umero de entradas a la tabla de p´aginas est´a limitado a 1
Memory Management Unit
´ 7.3. PAGINACION
55
Figura 7.1: Direcci´on L´ogica
1024 m´aximo2 . Ocurre lo mismo con el directorio de p´aginas, el cual es una tabla en la cual sus entradas apuntan cada una a una tabla de paginas. Ver la figura 7.3. Como hay capacidad para 1.024 posibles descriptores en el directorio de p´aginas y 1.024 en la tabla de p´aginas, entonces se pueden direccionar 1.048.576 p´aginas en total3 . Adem´as, el campo Desplazamiento tiene 12 bits, lo que permite determinar que el tama˜ no de una p´agina es de 4.096 bytes (4 KB4 ). Finalmente, si tenemos 1.048.576 p´aginas de 4 KB cada una, podemos direccionar hasta 4 GB m´aximo5 .
7.3.2
Descriptor de p´ agina
A diferencia de lo que suced´ıa en el modelo te´orico, en el cual la tabla de p´aginas solo conten´ıa el n´ umero del marco asociado a dicha p´agina, en Intel, la tabla de p´aginas y el directiorio de p´aginas contienen descriptores. Un descriptor de p´aginas se compone de 32 bits (4 bytes) y su estructura es como la que aparece en la figura 7.2 y se interpretan asi: Presencia: Este bit activo indica que la p´agina est´a residente en memoria f´ısica. Este bit sirve adem´as para validar los otros bits de control. Si el segmento no est´a en memoria, la unidad de paginaci´on genera una excepci´on (“fallo de p´agina”) que pone en marcha una rutina del sistema operativo, la cual debe colocar dicho segmento en la memoria y 2 3 4 5
210 = 1.024 = 1K 210 × 210 = 220 = 1.048.576 = 1M 4 × 210 = 4 × 1K = 4K 1.048.576 × 4K = 220 × 4K = 4 × 220 × 210 = 4 × 230 = 4G
56
CAP´ITULO 7. INTEL Y COMPATIBLES
Figura 7.2: Descriptor de p´aginas
actualizar este bit. As´ı, al retornar de la excepci´on, se ejecutar´a autom´aticamente la instrucci´on que caus´o la excepci´on, solo que ahora no habr´a problema alguno. Lectura/Escritura: Si est´a activo indica que la p´agina se puede leer y escribir. De lo contrario, esta p´agina es de s´olo lectura. Usuario/Supervisor: Si est´a activo indica que el nivel de privilegio es supervisor. En otro caso es de usuario. Accedido: Se activa autom´aticamente cuando la p´agina es accedida, pero es responsabilidad de sistema operativo desactivar este bit. Sucio: Se activa cuando la p´agina ha sido escrita. Libres: Son de uso disponible para el sistema operativo. Direcci´ on Base: Indica la direcci´on f´ısica de una p´agina. Existen dos diferencias fundamentales entre un descriptor de p´aginas ubicado en un directorio de p´aginas y otro ubicado en una tabla de p´aginas: • El descriptor de un directorio de p´aginas apunta a una tabla de p´aginas, mientras que el descriptor de una tabla de p´aginas apunta a una p´agina de datos en la memoria. Existe un directorio de p´aginas por cada programa en ejecuci´on. Ver figura 7.3. • El campo D (Sucio) no tiene funci´on en el descriptor del directorio de p´aginas.
´ 7.3. PAGINACION
57
Figura 7.3: Acceso a las p´aginas a trav´es de descriptores
7.3.3
Funcionamiento
Antes de iniciar con la explicaci´on de este mecanismo, es necesario aclarar que el registro CR3 6 es equivalente al PTBR en el modelo te´orico y los campos Base de los descriptores en las tablas, correspondientes a los 20 bits m´as significativos (MSB 7 ), pero se consideran de 32 bits, pues se toman sus 12 bits menos significativos (LSB8 ) como 0 (reservados para el campo Desplazamiento). Ver figura 7.4. La unidad de paginaci´on calcula la direcci´on f´ısica de memoria de la siguiente 6
Control Register 3. Most Significant Bit 8 Least Significant Bit 7
CAP´ITULO 7. INTEL Y COMPATIBLES
58
Figura 7.4: Estructura de los registros base usados en paginaci´on
forma: 1. El ´ındice de directorio de p´agina se multiplica por 4 (tama˜ no de un descriptor), convirti´endolo a 12 bits, para obtener el desplazamiento total (medido en bytes) desde el inicio del directorio de p´aginas hasta el descriptor especificado por el ´ındice. 2. Al valor obtenido en el paso anterior se le suma la direcci´on base del directorio de p´aginas contenido en el registro CR3, para obtener la direcci´on f´ısica del descriptor deseado en el directorio de p´aginas. 3. Del descriptor ubicado en esta posici´on se obtiene la direcci´on base de la tabla de p´aginas que se desea acceder. 4. La direcci´on base es sumada con el producto del ´ındice de p´aginas multiplicado por 4, para obtener el desplazamiento desde el inicio de la tabla de p´aginas hasta el descriptor de p´agina deseado. 5. Sumando la direcci´on base extra´ıda del descriptor de p´aginas en el paso anterior con el desplazamiento que est´a indicado en la direcci´on l´ogica, se obtiene finalmente la direcci´on f´ısica para acceder a la informaci´on. Ver figura 7.5. Hay que anotar que el sistema operativo no necesariamente tiene que crear todas las tablas, debido a que no todos los computadores tienen 64 GB de memoria RAM. La unidad de paginaci´on permanece desactivada por defecto, es el sistema operativo el responsable de crear estas tablas y directios de p´aginas, antes de activar la unidad de paginaci´on.
´ 7.3. PAGINACION
Figura 7.5: Paginaci´on en Intel y compatibles
59
CAP´ITULO 7. INTEL Y COMPATIBLES
60
7.4
Segmentaci´ on
La segmentaci´on es el manejo que se le da a los entornos de trabajo cuando se utiliza una tabla de segmentos.
7.4.1
Direcci´ on l´ ogica
Una direcci´on l´ogica en estos procesadores est´a conformada por un ´ındice de descriptor, un bit que selecciona entre una tabla u otra, un nivel de privilegio solicitado y un desplazamiento. Ver la figura 7.6.
Figura 7.6: Direcci´on L´ogica
Segmento: Registro de 16 bits usado para indicar el tipo segmento que se desea acceder. ´Indice de descriptor: Expresa el n´ umero de uno de los 8.192 descriptores dispobles en la tabla de segmentos (13 bits). TI: Indica el tipo de tabla que se desea acceder (LDT9 o la GDT10 ). RTL: Sirve para referenciar el nivel de privilegio solicitado. 00b11 (Supervisor o kernel - M´aximo privilegio), 11b (Usuario - M´ınimo privilegio). Existen privilegios intermedios 01b y 10b, cuyo privilegio disminuye respectivamente, usados en fines especificos del sistema operativo. Desplazamiento: Campo de 32 bits que determina una posici´on dentro del segmento. Su capacidad m´axima es de 4 GB. 9
Local Descriptor Table Global Descriptor Table 11 binario 10
´ 7.4. SEGMENTACION
61
Dado que se dispone de 14 bits en el selector (13 bits de ´ındice + 1 del TI) y 32 bits de desplazamiento, obtenemos una direcci´on l´ogica de 46 bits12 y un direccionamiento m´aximo de 64 TB virtuales, es decir, una parte reside en memoria y otra en disco. Intel, ha definido 6 registros de segmento o tambi´en llamados selectores, lo cual restringe a usar como m´aximo este n´ umero de segmentos simult´aneamente, pero puede direccionarse en cualquier momento uno de los 16.384 segmentos (8.192 en la LDT + 8.192 en la GDT). CS (Code Segment): Usado para direccionar el segmento de c´odigo. DS (Data Segment): Usado para direccionar el segmento de datos. SS (Stack Segment): Usado para direccionar el segmento de pila. ES, FS, GS (Extra Segment): Usados como segmentos de uso no especificado.
7.4.2
Descriptor de segmento
Al igual que sucedi´o en paginaci´on, la tabla de segmentos en el modelo te´orico (P´agina 38) difiere un poco de la que utilizan los procesadores Intel, pues ahora se almacenan descriptores de segmento. Un descriptor de segmento es una estructura de datos que define completamente un segmento. Esta definici´on puede estar en la GDT o en la LDT. Si est´a en la GDT todos los procesos pueden tener acceso a dicho segmento (dependen del nivel de privilegio). Si est´a en la LDT, solo el proceso due˜ no de dicha tabla puede tener acceso a este segmento. Un descriptor de segmento se compone de 64 bits (8 bytes) y su estructura es como la que aparece en la figura 7.7 y se interpretan asi: Base: Direcci´on f´ısica donde comienza el segmento (32 bits). L´ımite: Expresa el tama˜ no m´aximo de un segmento (20 bits), medido en bytes o p´aginas de 4 KB, de acuerdo al bit de granularidad. Si la 12
246 = 64T
CAP´ITULO 7. INTEL Y COMPATIBLES
62
Figura 7.7: Descriptor de segmento
unidad de medida es bytes, se puede direccionar hasta 1 MB. En otro caso, se pueden direccionar hasta 4 GB13 . Atributos: Son los bits que le dan al segmento ciertas caracter´ısticas especiales: Granularidad (G): Indica si el l´ımite est´a expresado en bytes, si est´a en 0. Si este bit vale 1, quiere decir que el l´ımite est´a expresado en p´aginas de 4 KB. Defecto/Grande: Este bit se utiliza para distinguir los segmentos nativos de 32 bits propios de procesadores superiores al 80386. Se utiliza para guardar compatibilidad con los segmentos del 80286. Si est´a en 1 es propio del 80386. A este bit se le conoce como Defecto (D) si es de c´odigo o Grande (B) si es de datos. Derechos de acceso (DA): Es un conjunto de 8 bits, que se divide en los siguientes campos: Presencia (P): Indica si el segmento en encuentra actualmente en memoria 1 o si no est´a en memoria 0. 13
1.024M B × 4KB = 4GB
´ 7.4. SEGMENTACION
63
Nivel de privilegio (DPL): Indica el nivel de privilegio del segmento al que hace referencia. 00 (Supervisor o kernel - M´aximo privilegio); 11 (Usuario - M´ınimo privilegio); 01 y 10 son privilegios intermedios. Tipo: Son cinco bits que identifican la clase de segmento: Clase de segmento (S): Si est´a activo, indica que es un segmento normal o de usuario. En otro caso, es un segmento de sistema. Tipo de segmento (E): Si est´a activo, indica que es un segmento de c´odigo. Sino, es un segmento de datos. Accedido (A): Es utilizado en los segmentos de usuario para indicar si fue accedido o no. Segmento de c´ odigo: Es un segmento que contiene las instrucciones de un programa. Ajuste de privilegio (C): Si est´a activo, indica si el segmento de c´odigo cambia su nivel de privilegio al del segmento llamante. Legible (R): Si tiene el valor de 1, el segmento de c´odigo es de lectura/escritura. En caso contrario, s´olo ejecuci´on. Segmento de datos: Es un segmento que contiene u ´nicamente datos. Expansi´ on decreciente (D:) Si est´a activo, indica que crece en forma incremental (segmento de datos). En otro caso, crece en forma decreciente (segmento de pila). Escritura (W): Si est´a activo indica que los datos son lectura/escritura. En otro caso, s´olo lectura. C´ odigo: El campo c´odigo en un del segmento de sistema tiene un significado que se puede obtener de la tabla: 7.1
7.4.3
Funcionamiento
La unidad de segmentaci´on calcula la direcci´on f´ısica de memoria de la siguiente forma:
CAP´ITULO 7. INTEL Y COMPATIBLES
64 C´ odigo 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
Significado No definido TSS disponible (80286) LDT TSS en uso (80286) Puerta de llamada (80286) Puerta de tarea Puerta de interrupci´on (80286) Puerta de excepci´on (80286) No definido TSS disponible (80386) No definido TSS en uso (80386) Puerta de llamada (80386) No definido Puerta de interrupci´on (80386) Puerta de excepci´on (80386)
Tabla 7.1: Tipos de segmentos de c´odigo
1. El ´ındice de descriptor se multiplica por 8 (tama˜ no de un descriptor), convirti´endolo a 16 bits, para obtener el desplazamiento total (medido en bytes) desde el inicio de la tabla (LDT o GDT) hasta el descriptor especificado por el ´ındice. 2. Al valor obtenido en el paso anterior se le suma la direcci´on base de la tabla deseada, seg´ un se indique en el campo TI, 1 para la GDT (GDTR14 ) o 0 para la LDT (LDTR15 ), para obtener la direcci´on f´ısica del descriptor deseado. 3. Sumando la direcci´on base extra´ıda del descriptor en el paso anterior con el desplazamiento que est´a indicado en la direcci´on l´ogica, se obtiene finalmente la direcci´on f´ısica para acceder a la informaci´on. Ver la figura 7.8. 14 15
Global Descriptor Table Register Global Descriptor Table Register
7.5. SISTEMAS COMBINADOS
65
Figura 7.8: Segmentaci´on en Intel y compatibles
7.5
Sistemas combinados
Hasta ahora, se han visto paginaci´on y segmentaci´on, los componentes de la MMU. Ver la figura 7.9. La unidad de segmentaci´on y la unidad de paginaci´on pueden operar coope-
66
CAP´ITULO 7. INTEL Y COMPATIBLES
Figura 7.9: Sistemas combinados en Intel y compatibles
rativa o independientemente. Esto logra que los procesadores Intel puedan administrar la memoria de cuatro formas posibles: Modelo de segmentaci´ on: La unidad de paginaci´on esta desactivada. Modelo de segmentaci´ on paginada: La unidad de paginaci´on esta activada. Modelo plano: La unidad de paginaci´on esta desactivada y todos los segmentos se encuentran solapados, cubriendo toda la memoria. Modelo de paginaci´ on: La unidad de paginaci´on esta activada y todos los segmentos se encuentran solapados, cubriendo toda la memoria. No es posible tener el modelo de paginaci´on segmentada, debido a la distribuci´on de la unidades de segmentaci´on y paginaci´on en la MMU.
7.6
Memoria Virtual
Como se ha podido observar, no importa qu´e mecanismo de administraci´on desee usar en los procesadores Intel, simpre va ha tener a disposici´on los bits necesarios y el soporte por hardware para implementar esta t´ecnica de gesti´on. En otras palabras, si un sistema operativo desea brindar el servicio de memoria virtual al usuario, la implementaci´on es reponsabilidad del dise˜ nador del sistema, no del procesador.
Parte III Gesti´ on de almacenamiento secundario
67
Cap´ıtulo 8 Disco Duro El disco duro es utilizado en la gesti´on de memoria virtual (swap). Sin embargo, tambi´en es sirve para almacenar datos y programas, tanto del sistema como de los usuarios. En este cap´ıtulo se analizar´an los factores relacionados con su manejo. Vale la pena aclarar que existen diferentes clases de discos que se pueden utilizar para todos los procesos de la gesti´on de almacenamiento secundario (los que tienen caracter´ısticas de lectura y escritura). Entre ellos se encuentran: Disquete: El disquete o floppy es el dispositivo de almacenamiento secundario m´as com´ un en todas las computadoras. Es de muy limitada capacidad (1.44 MB), pero permite leer y escribir datos. Disquete Zip: Es una clase de disquete de mayor capacidad (100 MB y 250 MB). Requiere una unidad especial. Los drives para disquetes de 250 MB pueden leer disquetes de 100 MB pero no al rev´es, ni son compatibles con otros formatos de disquete. SuperDisk: Es un formato de disquete similar al anterior con capacidad para almacenar 120 MB. Sus drives pueden leer disquetes tradicionales de 1.44 MB pero no disquetes Zip. Disco duro: Es el principal dispositivo de almacenamiento secundario en las computadoras. Actualmente su capacidad est´a dada en GB. Existen b´asicamente dos tipos de disco: 69
CAP´ITULO 8. DISCO DURO
70
E-IDE: Los disco E-IDE1 son discos duros que se pueden conectar directamente a la main board de la computadora. Por su costo son los m´as comunes en las computadoras personales. Se puede clasificar en: ATA-PIO, Ultra-ATA (Ultra-DMA) y Ultra-ATA 66. Este cap´ıtulo est´a orientado a la gesti´on de esta clase de discos duros. SCSI: La tecnolog´ıa SCSI2 que permite controlar dispositivos a alta velocidad. Los discos duros SCSI requieren una tarjeta controladora especial para que pueda funcionar. Estos discos duros son altamente costosos y su principal aplicaci´on es en servidores de red. Hay diferentes clases de discos SCSI: Ultra-SCSI, Ultra-SCSI 2 y Ultra-SCSI 3, siendo el u ´ltimo el m´as veloz. CD: Es el formato de Disco Compacto en el cual se pueden almacenar datos y m´ usica. Los diferentes formatos que existen son: CD-ROM, CD-R, CD-RW. El CD-RW permite lectura y escritura. Su capacidad es de 650 MB aproximadamente. DVD: El DVD3 es un disco compacto de apariencia similar a la de un CD, con mayor capacidad de almacenamiento. Existen diferentes formatos: El DVD-ROM, DVD-R, DVD-RAM, DVD-RW y MMVF4 . Los tres u ´ltimos formatos tienen caracter´ısticas de lectura/escritura. La capacidad de estos discos compactos est´a dada en GB.
8.1
Estructura f´ısica
Aunque los discos magn´eticos tambi´en son utilizados para el almacenamiento de informaci´on, tiene visibles diferencias con respecto a la memoria RAM. Ver tabla 8.1. Los discos est´an divididos en una serie de pistas conc´entricas. De acuerdo a la forma en que “est´an construidos”, el acceso a los bloques se hace por medio de tres valores CHS5 : 1
Enhanced Intelligent Drive Electronics Small Computer System Interface 3 Disco de Video Digital 4 Multi Media Video Format 5 Cilinder - Head - Sector 2
8.1. ESTRUCTURA F´ISICA Discos magn´ eticos Su informaci´on es persistente. Capacidad actual en GB. Operaciones por bloques de 512B Mayor velocidad. Acceso: Cabeza, Cilindro, Sector.
71 Memoria Su informaci´on es vol´atil. Capacidad actual en MB. Soportan operaciones desde Bytes. Menor velocidad que el de disco. Acceso: Direcciones de memoria.
Tabla 8.1: Comparaci´on entre los discos magn´eticos y la memoria.
Cilindro: Es el conjunto de todas las pistas de un mismo nivel en los diferentes platos que lo componen. Cabeza: Es la parte mec´anica que flota a unas micras de distancia de cada plato. Se utiliza para los procesos de lectura y escritura. Sector: Cada pista est´a dividida en sectores. Cada sector contiene un bloque de disco. Ver figura 8.1.
Figura 8.1: Estructura b´asica de un disco duro Ahora bien, un disco se puede considerar en abstracto como un arreglo tridimensional de bloques de disco. Generalmente cada bloque tiene un tama˜ no de 512 Bytes. El acceso a cada bloque del disco se hace a trav´es de n´ umero que identifica de manera u ´nica cada bloque. Este n´ umero se conoce como LBA6 Ver figura 6
Logical Block Address
CAP´ITULO 8. DISCO DURO
72
Figura 8.2: Representaci´on tridimensional de acceso al disco
8.2.
8.1.1
Conversi´ on de direcciones
De CHS a LBA Dado que el sistema lo que necesita internamente es el n´ umero del bloque, entonces es necesario convertir de tres dimensiones a una. Para poder hacer esta conversi´on, simplemente se aplica la siguiente formula: LBA = Sector + M axSectores ∗ (Cabeza + Cilindro ∗ M axCabezas ) − 1 De aqu´ı en adelante, trabajaremos con bloques de disco. De LBA a CHS
LBA Cilindro = Entero M axCabezas ∗ M axSectores
!
´ DE DISCO 8.2. ADMINISTRACION
73
LBA Mod ( M axCabezas ∗ M axSectores ) Cabeza = Entero M axSectores
!
!
Sector = LBA Mod ( M axCabezas ∗ M axSectores ) Mod M axSectores + 1 Recuerde que la funci´on Entero tiene como objetivo truncar la parte decimal de un n´ umero, sin ning´ un tipo de aproximaci´on, y la funci´on Mod permite obtener el residuo de la divisi´on entera.
8.2
Administraci´ on de disco
Cuando se est´a trabajando con unidades de almacenamiento secundario, surgen inmediatamente tres preguntas: ¿C´ omo administra el espacio libre? Es decir, c´omo se conoce exactamente cu´ando y cu´ales son los bloques de disco disponibles o no usados. ¿C´ omo controla la asignaci´ on de espacio? Es decir, c´omo sabe cu´ales bloques pertenecen a un bloque de informaci´on del mismo tipo (archivo). ¿Cual es el modelo conceptual del usuario? Es decir, el usuario cuando piensa en el almacenamiento secundario, ¿piensa en bloques de disco?, ¿piensa en archivos u ´nicamente?, ¿piensa en archivos y directorios?, ¿en que piensa? Existe otra pregunta tan importante o m´as que las anteriores que afecta directamente la eficiencia del sistema: dadas varias solicitudes de acceso al disco, ¿en que orden las procesa?. Esto es muy importante, porque para llegar a un bloque determinado hay que desplazar f´ısicamente una cabeza lectora por un disco que gira a gran velocidad. Si garantizamos que dicha cabeza se va a desplazar de la forma m´as eficiente posible, garantizamos impl´ıcitamente un tiempo de respuesta menor en el acceso al disco. A esta parte se le llama planificaci´ on de acceso al disco. Ver figura 8.3.
CAP´ITULO 8. DISCO DURO
74
Figura 8.3: Diagrama de Administraci´on de disco
8.2.1
Gestor de solicitudes
Es el subsistema con un mayor grado de abstracci´on, porque es quien se entiende directamente con el usuario. Para el usuario solo existen archivos (subsistemas de informaci´on) y normalmente existen directorios (jerarqu´ıa de archivos). El usuario no llega a ver los subsistemas de disco. Dado que a este nivel solo se ven archivos y directorios, esta parte del sistema debe proporcionar servicios que afecten u ´nicamente a este tipo de elementos. Es decir, debe proporcionar los siguientes servicios b´asicos: Creaci´ on: Permitir que el usuario genere nuevos archivos y directorios, seg´ un su conveniencia. Borrado: Eliminaci´on o destrucci´on de archivos y directorios. Listado: Entregar un reporte de los archivos y directorios actuales en el disco. Lectura: Permitir acceder a la informaci´on que contiene un archivo. Escritura: Permitir actualizar el contenido de un archivo.
´ DE DISCO 8.2. ADMINISTRACION
75
Renombrar: Cambiar el nombre o identificaci´on de un archivo o directorio. Cambio de directorio: Moverse de un directorio a otro. En otros sistemas existen otros servicios como: Atributos: Asignar o modificar pol´ıticas de acceso a un archivo o directorio, es decir, permitir que un archivo sea de s´olo lectura, de s´olo escritura, de lectura/ejecuci´on, etc. Seguridad: Restringir el acceso a ciertos archivos y directorios seg´ un el usuario o el nivel de seguridad de acceso al sistema. Es importante anotar que este subsistema no tiene acceso directo al dispositivo de almacenamiento. Es decir, deber´a convertir muchas de estas solicitudes a solicitudes v´alidas para el siguiente subsistema. Este subsistema tambi´en es el encargado de controlar el acceso concurrente a la informaci´on, ya que dicho problema no es tratado en los otros subsistemas. A partir de este subsistema toda la informaci´on est´a libre de restricciones de atributos y seguridad. El usuario tampoco tiene acceso a los otros subsistemas, garantizando as´ı el cumplimiento de todas las restricciones. Este subsistema decide si una solicitud del usuario puede o no realizarse, seg´ un las restricciones existentes. Si no puede realizarse, lo u ´nico que tiene que hacer es rechazar la orden e impedir su avance. Para el subsistema siguiente (Control de asignaci´on de espacio) solo existen archivos, no existen directorios o cualquier otro mecanismo de abstracci´on. Entonces un directorio no es m´as que un archivo cuyo contenido son los nombre o identificadores de todos los archivos que est´an en ese nivel. Uno o m´as de estos archivos pueden ser otros directorios, creando as´ı la jerarqu´ıa o ´arbol de directorios. Por ello, este subsistema debe leer la informaci´on de estos directorios e interpretarla para el usuario. Por u ´ltimo, digamos que a este subsistema no le interesa d´onde est´an localizados f´ısicamente sus archivos o directorios. S´olo le interesa la informaci´on que contienen. Del mismo modo que a los otros subsistemas, no le interesan las restricciones o seguridad sobre los archivos.
CAP´ITULO 8. DISCO DURO
76
8.2.2
Asignaci´ on de espacio
Para este subsistema s´olo existen archivos o bloques de informaci´on. El problema es saber qu´e mecanismo usa para saber cuales de los bloques de disco pertenecen a un mismo archivo. Hay que recordar que este subsistema ya conoce y manipula bloques de disco sin tener acceso directo al dispositivo. Existen muchos m´etodos o mecanismos para realizar esta labor. Veamos los m´as conocidos: Asignaci´ on contigua Aunque en los discos no existe la limitante de tener que almacenar todo un archivo de una manera contigua como suced´ıa en la memoria, esta soluci´on plantea usar ese mecanismo. En otras palabras, este mecanismo requiere que todos los bloques de disco pertenecientes a un archivo, est´en contiguos en el disco. Aqu´ı tambi´en son validas las estrategias de ajuste para la soluci´on del problema de asignaci´on de memoria (primer ajuste, mejor ajuste, peor ajuste). Hay que anotar que este mecanismo sufre de fragmentaci´on externa por requerir que todos los bloques sean contiguos, adem´as de la fragmentaci´on interna que va impl´ıcita en todos los mecanismos, debido a que se usan bloques de disco de tama˜ no fijo. El acceso secuencial y directo (no secuencial), es relativamente eficiente. Ver figura 8.4. Asignaci´ on enlazada En este mecanismo, los bloques de disco pertenecientes a un archivo no tienen por que estar contiguos. El sistema toma una parte de cada bloque para almacenar la direcci´on del siguiente bloque que compone el archivo. Esta informaci´on no es visible para el usuario, y los bloques que le quedan son ligeramente m´as peque˜ nos. Ver figura 8.5. Es favorable para el acceso secuencial, pero no para el acceso directo. Cada archivo requiere un poco m´as de espacio, porque necesita almacenar la informaci´on de los punteros. Para solucionar este problema, se acostumbra direccionar varios bloques con una sola direcci´on (cluster ), donde surge la fragmentaci´on interna, es decir,
´ DE DISCO 8.2. ADMINISTRACION
Figura 8.4: M´etodo de asignaci´on contigua
Figura 8.5: M´etodo de asignaci´on enlazada
77
CAP´ITULO 8. DISCO DURO
78
el desperdicio de espacio cuando se usan bloques de tama˜ no fijo (hay mayor fragmentaci´on interna en un cluster que en un bloque, est´a parcialmente ocupado). No sufre de fragmentaci´on externa. Es muy vulnerable, pues si uno de estos bloques se da˜ na, se pierde toda posibilidad de encontrar el resto de bloques. Para dar soluci´on a esta dificultad, se puede usar una variaci´on que consiste en reunir todas las direcciones en una tabla de localizac´on de archivos (FAT 7 ). Asignaci´ on indexada El sistema reserva una serie de bloques de disco, los cuales contendr´an un n´ umero fijo de direcciones a bloques de datos por cada archivo. A estos bloques se les denomina, bloques ´ındice. Si el archivo es demasiado grande, es decir, si el n´ umero de direcciones de un bloque ´ındice no alcanza para indicar todos los bloques del archivo, se usa una de tres posibles variantes de este mecanismo: Variante enlazada: El sistema reserva una de las direcciones del bloque ´ındice para apuntar al siguiente bloque ´ındice. Ver figura 8.6.
Figura 8.6: M´etodo de asignaci´on indexada
7
File Allocation Table
´ DE DISCO 8.2. ADMINISTRACION
79
Variante multinivel: El sistema reserva otro bloque ´ındice llamado super´ındice por cada archivo, el cual apuntar´a u ´nicamente a los bloques ´ındice. Aunque con solo dos niveles es suficiente, esta variante puede generalizarse a n super´ındices, es decir, se tienen n-1 super´ındices (´arbol de ´ındices) en los cuales todos los bloques del nivel n, apuntan a datos. Variante combinada: Es la variante m´as utilizada por sistemas UNIX, que consiste b´asicamente en reservar en un bloque ´ındice, de tres direcciones: una para aplicar multinivel de nivel uno, la segunda para multinivel de nivel dos y la u ´ltima para multinivel de nivel tres; el resto de direcciones son directas a datos. Cualquiera que sea la variante, mejora muy notablemente el acceso directo y no da˜ na el acceso secuencial con respecto al mecanismo enlazado. No es tan vulnerable como el anterior mecanismo, ya que toda la responsabilidad recae ahora sobre un n´ umero m´as peque˜ no de bloques. Claro que si uno de ellos falla, es l´ogico que tambi´en se pierda informaci´on. Ver figura 8.7.
8.2.3
Espacio libre
Al igual que en la memoria, el disco es un recurso limitado y reutilizable, por lo cual hay que tener un mecanismo que ayude a controlar los bloques de disco disponibles o no utilizados. Aqu´ı se pueden utilizar variantes de los mismos mecanismos de asignaci´on. Sin embargo, existe un mecanismo usado especialmente para este tipo de problemas. A este mecanismo se le conoce como mapa de bits. Un mapa de bits consiste en tener asociado un bit a cada bloque de disco. Si este bit est´a en uno, indica que el bloque est´a ocupado. Y si vale cero, indica que est´a libre. Este mecanismo es muy eficiente si dicho mapa de bits permanece en memoria. Puede verse claramente que para este subsistema, no importa quien est´a usando esos bloques, solo interesa el hecho de que est´an ocupados. El subsistema de asignaci´on de espacio le solicitar´a el n´ umero de bloque que pueda utilizar para almacenar informaci´on, y le reportar´a cu´ales bloques se han dejado de usar, para poder llevar un control real de ellos.
80
CAP´ITULO 8. DISCO DURO
Figura 8.7: Asignaci´on indexada - Variante combinada
´ DE DISCO 8.2. ADMINISTRACION
8.2.4
81
Planificaci´ on de acceso
Existen varios algoritmos que se pueden emplear para “ordenar de la mejor manera posible un n´ umero de solicitudes de acceso al disco, ya sea para lectura o para escritura. Mientras se atienden unas solicitudes, pueden llegar otras. A este subsistema no le interesa qui´en est´a leyendo o escribiendo. S´olo indica cu´al es el mejor orden de ejecuci´on de las solicitudes, para optimizar el movimiento de la cabeza lectora. A todos estos algoritmos les interesa, adem´as de las solicitudes, la posici´on y direcci´on de desplazamiento actual de la cabeza, para poder conocer el estado del disco en cualquier momento. Algunos sistemas operativos ofrecen herramientas que permiten ordenar (defragmentaci´on) los bloques en el disco con el objeto de disminuir el movimiento de la cabeza lectora. FCFS FCFS8 es el m´as simple. Se atienden las solicitudes en orden en que llegan. Es muy sencillo de implementar, no produce sobrecargas al sistema, pero su eficiencia deja mucho que desear. Es u ´til en discos que no tengan muchas solicitudes. SSTF SSTF9 atiende primero al que est´e m´as cerca de la posici´on actual, no importa la direcci´on. Es decir, el de menor tiempo de posicionamiento. Este algoritmo puede producir la no ejecuci´on de una solicitud, pues ´esta puede ser postergada indefinidamente por la llegada de solicitudes cuyo tiempo de posicionamiento sea mucho menor. No es un m´etodo muy adecuado para sistemas interactivos, ya que no garantiza buenos tiempos de acceso, debido al problema ya mencionado. 8 9
First Come, First Served Shortest Seek Time First
82
CAP´ITULO 8. DISCO DURO
SCAN Se mueve atendiendo desde la posici´on actual hasta un extremo, luego regresa atendiendo hasta el otro extremo, y as´ı sucesivamente. Se habla de extremos, asumiendo que el disco es un arreglo unidimensional de bloques el cual se direcciona a trav´es de LBA. C-SCAN Es una variante del algoritmo SCAN, que atiende s´olo en un sentido, cuando la cabeza viaja del inicio al fin del disco. Durante el retorno no atiende ninguna solicitud (formando un acceso circular; de all´ı la C). Al igual que C-SCAN es una variante de SCAN, existen otras variantes, una por cada uno de los dos. Estas variantes llamadas C-LOOK y LOOK, tiene como diferencia el hecho de no ir hasta los extremos del disco, sino hasta la primera y u ´ltima solicitud, siendo los de mejor desempe˜ no.
Cap´ıtulo 9 Master Boot Record El MBR 1 es el primer sector del disco duro, ubicado en el Cilindro 0, Cabeza 0, Sector 1 (no existe el Sector 0). Su funci´on principal es mantener informaci´on que permita dividir l´ogicamente el disco duro en zonas m´as peque˜ nas conocidas como particiones. Cada partici´on se considera como otro disco, lo que permite que el usuario pueda instalar varios sistemas operativos, uno por cada partici´on (m´aximo cuatro). Si las particiones son usadas para instalar sistemas operativos, su sector de arranque se encontrar´a en el inicio de la partici´on. En otro caso este sector ser´a simplemente de datos. El MBR est´a compuesto por tres partes: el c´odigo de arranque (446 Bytes), la tabla de partici´on (64 Bytes) y un n´ umero m´agico 55h, AAh (2 Bytes). Ver figura 9.1.
9.1
C´ odigo de arranque
La funci´on del c´odigo de arranque del MBR es ubicar y subir a la memoria el primer sector del la partici´on activa2 (sector de arranque de un sistema operativo) y ejecutarlo. Una vez comienza a ejecutarse este sector de arranque, es responsabilidad del sistema operativo y no del MBR, continuar con 1 2
Master Boot Record Campo Flag-Boot en la tabla de particiones
83
84
CAP´ITULO 9. MASTER BOOT RECORD
Figura 9.1: Estructura del MBR
el proceso de arranque . Cuando el tama˜ no de este c´odigo no llegue a 446 bytes, el resto deben ser ceros.
9.2
Tabla de particiones
La tabla de particiones tiene una capacidad m´axima de cuatro entradas en las cuales se almacena la informaci´on que permite localizar cada partici´on y conocer su tama˜ no en bloques. Ver la figura 9.2. Cada una de las particiones ubicadas en el MBR se conocen como particiones primarias. Nota: Observe que las estructuras LBA y N´ umero de sectores tiene el byte m´as significativo en el extremo derecho (byte 3). Es importante tenerlo en cuenta para poder interpretar correctamente esta informaci´on.
9.2. TABLA DE PARTICIONES
85
Figura 9.2: Tabla de particiones
Campos de la tabla de particiones Flag Boot: Valor que indica cu´al de las cuatro particiones fue seleccionada o activada para el arranque del sistema (boot) la pr´oxima vez que la computadora reinicie. Puede haber m´aximo una partici´on activa, si el disco tiene alg´ un sistema operativo. El valor (80h) indica la partici´on activa. Las otras tres deben estar en 00h. Punto de inicio: Se puede llegar a una posici´on del disco duro, usando una terna de valores llamada CHS (Cilindro, Cabeza, Sector), por lo que el punto de inicio son las coordenadas dadas en esta terna para indicar el
86
CAP´ITULO 9. MASTER BOOT RECORD lugar donde comienza la partici´on en el disco duro.
ID Sistema: Este Byte identifica el sistema operativo que se alojar´a en ella o el tipo de datos que almacenar´a. En la tabla 9.1 se mencionan los identificadores de las particiones m´as comunes. C´ odigo ID Tipo de partici´ on 00h Partici´on libre 04h DOS (FAT 16 hasta 32 MB) 05h DOS Extendida 06h DOS (FAT 16 hasta 2 GB) 07h Windows NT NTFS 0Bh Windows 95 FAT 32 0Ch Windows 95 FAT 32 LBA 0Eh LBA VFAT BIGDOS FAT 16 0Fh LBA VFAT DOS Extendida 63h Unix Sistema V/38616 82h Swap Linux / Solaris x86 83h Linux (ext2FS/xiaFS) Tabla 9.1: Identificaci´on de las particiones m´as comunes
Punto final: Representa el punto donde termina la partici´on y est´a dado en CHS. Por lo regular el valor del Sector y el de las Cabezas en esta coordenada son iguales a los m´aximos en el disco (si es posible). Sectores relativos: Indica la distancia desde el MBR hasta el inicio de la partici´on. Es equivalente al LBA visto en la p´agina 72. LBA = Sector + M axSectores ∗ (Cabeza + Cilindro ∗ M axCabezas ) − 1 La raz´on por la cual se resta 1 es porque se requiere la direcci´on del sector inicial de la partici´on, no el siguiente. Tenga en cuenta que el sector 0 no existe. N´ umero de sectores: Representa el tama˜ no de la partici´on en bloques, incluidos los dos extremos. Se calcula como la diferencia de las coordenadas de los extremos m´as 1. N umeroSectores = LBAP unto
F inal
− LBAP unto
Inicial
+1
9.2. TABLA DE PARTICIONES
87
En la figura 9.3 se ilustra el direccionamiento con LBA y el n´ umero de sectores de cada partici´on primaria. Algunos campos en la tabla de particiones fueron omitidos y representados con puntos suspensivos por ser irrelevantes para el direccionamiento con LBA.
Figura 9.3: Esquema de particiones primarias
umero Nota: El valor de S1 por lo general (no es obligaci´on) es igual al n´ m´aximo de sectores del disco, el resto, depende del tama˜ no definido por el usuario para las particiones. En la tabla de particiones del MBR, se tiene informaci´on duplicada para cada partici´on porque el punto inicial y final se utilizan para conocer el LBA del sector inicial y el n´ umero de sectores (tama˜ no) de la partici´on. Asimismo, el LBA y el n´ umero de sectores de la partici´on permiten conocer el punto inicial y final en t´erminos de CHS. Ver p´agina 72.
9.2.1
Direccionamiento usando CHS
De acuerdo con la figura 9.2, se tienen reservados tres bytes para la informaci´on de cada partici´on. Es decir, 10 bits para el n´ umero de cilindros, 8 para el n´ umero de cabezas y 6 para el n´ umero de sectores. Conociendo el n´ umero m´aximo de cilindros (1024), cabezas (256) y sectores (63), es posible calcular el n´ umero m´aximo de bloques (tama˜ no m´aximo del disco) que es posible direccionar con CHS. Los n´ umeros posibles de cilindro
88
CAP´ITULO 9. MASTER BOOT RECORD
son 0-1023, de cabeza 0-255, y de sectores 1-63 (los sectores se cuentan desde 1, no desde 0). Con esos 24 bits se pueden direccionar 1.024 × 256 × 63 = 16.515.072 bloques de 512 bytes, para un total de 8.455.716.864 bytes equivalente a 7.88 GB. Con menos de 8 GB, un disco duro actualmente no es la soluci´on para las necesidades de un usuario promedio.
9.2.2
Direccionamiento usando LBA
De acuerdo con la figura 9.2, se tienen reservados cuatro bytes que representan el inicio de la partici´on (sectores relativos en LBA) y cuatro bytes para calcular el tama˜ no de cada partici´on. Con esos 32 bits se pueden direccionar 232 = 4.294.967.296 bloques de 512 bytes, para un total de 2 TB. En consecuencia, cuando un disco duro es superior a 7.88 GB, los sistemas operativos se ven obligados a ignorar los valores almacenados en los campos CHS, recalculando los valores correctos a partir del LBA. Es decir, si el n´ umero de Cabezas cabe en los 8 bits, el valor es correcto. Si no cabe, deber´a aparecer el m´aximo valor posible (FFh). Ocurre lo mismo con Cilindros (10 bits) y Sectores (6 bits). No olvide la estructura de los campos CHS en la figura 9.2.
9.3
N´ umero m´ agico
Es una constante arbitraria que valida o certifica que la informaci´on contenida en este sector, s´ı pertenece a un sector de arranque. Esta validaci´on no tiene nada que ver con el contenido del sector. Esto incluye, por supuesto, los sectores de arranque de los sistemas operativos.
9.4. PARTICIONES EXTENDIDAS
9.4
89
Particiones extendidas
En la tabla 9.1 se pueden observar dos tipos de particiones que no corresponden a un sistema operativo en particular. Estas partici´on son la 05h (direccionamiento por CHS) y 0Fh (direccionamiento por LBA), denominadas particiones extendidas. Estas particiones permiten crear en el disco m´as de cuatro particiones. Para lograrlo, se subdivide el espacio reservado para la partici´on extendida en nuevas particiones, llamadas particiones l´ogicas. En la tabla de particiones del MBR solo puede existir una y solo una partici´on extendida. El primer sector de esta partici´on extendida no corresponde a un sector de arranque de un sistema operativo, sino a un MBR que recibe el nombre de EMBR 3 de nivel 1. Ver figura 9.4.
Figura 9.4: Extended Master Boot Record
3
Extended Master Boot Record
CAP´ITULO 9. MASTER BOOT RECORD
90
9.4.1
Restricciones
Aunque la tabla de particiones del EMBR-1 es id´entica en su estructura a la tabla que reside en el MBR (ver figura 9.2), esta tabla tiene algunas restricciones. • Un EMBR-1 no tiene c´odigo de arranque. En su lugar hay ceros que representan el espacio libre. Sin embargo, en algunas ocasiones existe un programa que imprime un mensaje “Extended partition is not bootable”, es decir, indica que por tratarse de una partici´on extendida, ´esta no puede inicializar el sistema operativo y a continuaci´on procede a reiniciar o bloquear la computadora. Dicho mensaje aparecer´ıa cuando por accidente o de manera voluntaria se activa el Flag Boot de esta partici´on. Esta es una restricci´on de software, no de hardware. • En la tabla de particiones del EMBR-1, solo pueden existir dos particiones m´aximo: – La partici´on l´ogica n´ umero 1 – La informaci´on que referencia la siguiente partici´on extendida (si la hay) Ver figura 9.5.
Figura 9.5: Tabla de particiones EMBR-1
9.4. PARTICIONES EXTENDIDAS
91
Observe que la informaci´on sobre la segunda partici´on extendida no se aloja en el MBR sino en el EMBR-1. Es decir, en una tabla de particiones solamente puede haber una partici´on extendida. Estas dos particiones pueden ocupar cualquier posici´on de las cuatro posibles de la tabla en la estructura del EMBR, sin importar su orden. Las otras dos entradas deben est´an vac´ıas (se representan con ceros). Cuando se crea una partici´on extendida4 en el EMBR-1, ´esta se comporta igual que una ubicada en el MBR, solo que ahora su sector inicial no se llama EMBR-1, sino EMBR-2. Si en el EMBR-2 se crea otra partici´on extendida, tendr´a un comportamiento similar al EMBR-1, y el sector inicial de la nueva partici´on se llamar´a EMBR-3, y as´ı sucesivamente hasta completar el tama˜ no m´aximo de la partici´on extendida que est´a definida en el MBR. Hay que anotar que algunos sistemas operativos limitan el n´ umero de particiones al n´ umero de letras en el alfabeto ingl´es (26), debido a que las utilizan para identificar las particiones. Sin embargo, existen otros sistemas operativos en los cuales se numeran las particiones eliminando as´ı este problema. • El campo Flag Boot no tiene sentido ni se usa en las particiones extendidas, porque hay imposibilidad de arrancar el sistema desde ellas.
9.4.2
Partici´ on DOS extendida (05h)
Esta partici´on extendida utiliza direccionamiento CHS y por lo tanto est´a limitada a discos con capacidades inferiores a los 7.88 GB. Adem´as, tambi´en modifica la interpretaci´on del campo Sectores Relativos para los EMBR. Ahora este campo se debe interpretar dependiendo de la ubicaci´on dentro de la tabla de particiones en un EMBR: • Si est´a en la entrada que representa una partici´on l´ogica, se interpreta como la distancia que hay desde el este EMBR hasta su partici´on l´ogica. Es decir, el lugar donde inicia la partici´on l´ogica. Ver en la figura 9.6, los valores S1 y S3. Estos valores de las particiones l´ogicas por defecto son iguales al m´aximo n´ umero de sectores del disco. 4
Todas las particiones extendidas dentro de un EMBR son de tipo 05h
CAP´ITULO 9. MASTER BOOT RECORD
92
• Si est´a en la entrada que identifica una partici´on extendida, entonces, se interpreta como la distancia desde el EMBR-1 hasta el inicio de la siguiente partici´on extendida al EMBR actual. Es decir, el lugar donde inicia la partici´on extendida. Ver figura 9.6, el valor S2.
Figura 9.6: Esquema b´asico de particiones extendidas 05h
Observe detenidamente la figura 9.7. Interprete correctamente los sectores relativos. Note que las particiones extendidas de los EMBRs solo cubren el EMBR siguiente y su unidad l´ogica y no todas las dem´as, como lo hace la primera partici´on extendida.
9.4.3
Partici´ on LBA VFAT DOS extendida (0Fh)
Esta partici´on extendida utiliza direccionamiento LBA y por lo tanto puede direccionar discos con una capacidad m´axima de 2 TB. Debe quedar muy claro que el ID Sistema 0Fh es solo para la primera partici´on extendida (ubicada en el MBR), el resto de particiones extendidas (ubicadas en los EMBR) deben ser de ID 05h. La u ´nica diferencia con una partici´on extendida 05h, radica en la interpretaci´on del campo Sectores relativos (LBA), debido que ahora estos miden la distancia desde el MBR hasta la partici´on correspondiente, igual como sucede con las particiones primarias. Ver la figura 9.8.
9.4. PARTICIONES EXTENDIDAS
Figura 9.7: Esquema avanzado de paticiones extendidas 05h
93
94
CAP´ITULO 9. MASTER BOOT RECORD
Figura 9.8: Esquema avanzado de paticiones extendidas 0Fh
9.5. BLOQUES NO ASIGNADOS EN EL DISCO
9.5
95
Bloques no asignados en el disco
Por lo regular, a la hora de crear particiones, los programas que soportan esta labor inician una partici´on extendida en Cabeza = 0 y Sector = 1. Las particiones l´ogicas inician en Cabeza = 1 y Sector = 1. Por lo tanto, en todo el disco duro se tiene el (M axSectores − 1) × N umM BRs umero de MBRs bloques de 512 bytes libres. Tenga en cuenta que el n´ (N umM BRs ) incluye el MBR y todos los EMBRs. Ver la figura 9.9.
Figura 9.9: Espacio no asignado a continuaci´on de un MBR Entonces, cuantos m´as sectores tenga el disco, m´as grandes ser´an los huecos. Sin embargo, la suma de todos estos huecos podr´ıa seguir siendo insignificante comparado con todo el tama˜ no del disco, pero este espacio es suficiente para alojar virus inform´aticos. Vale la pena tomar ciertas medidas de precauci´on y revisar que estas zonas permanezcan en ceros. Informaci´on diferente a ceros no implica necesariamente que se tenga virus, ya que algunos programas guardan informaci´on en estas zonas, especialmente entre el MBR y la primera partici´on primaria. Debido a que estas zonas no pertenecen a nadie, estos programas corren un grave riesgo al guardar informaci´on all´ı, pues otro programa podr´ıa sobreescribir en estas zonas y destruir dicha informaci´on, ya que si no es de nadie, nadie la respeta, es decir, cualquier programa puede escribir en cualquiera de estas zonas sin tener que consultar ni realizar ninguna verificaci´on, ya que se supone que son libres y no asignadas.
96
CAP´ITULO 9. MASTER BOOT RECORD
Parte IV Manejo de entradas/salidas
97
Cap´ıtulo 10 Control de dispositivos Otra tarea muy importante del sistema operativo es el manejo de los dispositivos de Entrada/Salida (E/S). El sistema operativo debe brindar una serie de servicios que faciliten la utilizaci´on estos dispositivos. Para lograrlo, el sistema operativo tiene una serie de rutinas o bloques de c´odigo llamados drivers (manejadores) que sirven de intermediario entre los procesos y el hardware. Es decir, los drivers ocultan las caracter´ısticas especiales de los dispositivos, con el fin de que los procesos los utilicen. Por ejemplo, la apertura de un archivo deber´ıa ser igual en todos los casos sin importar el tipo o tecnolog´ıa del disco que estemos usando en el sistema. Si los procesos manipularan directamente el hardware se perder´ıa bastante portabilidad al pasar los procesos de una m´aquina con un determinado hardware a otra con un hardware distinto. Ver figura 10.1.
Figura 10.1: Concepto general de un driver
99
100
10.1
CAP´ITULO 10. CONTROL DE DISPOSITIVOS
Interfaces procesador-perif´ erico
Existen varias formas de conectar un perif´erico a un procesador. Sin embargo, ello viene determinado por el tipo de perif´erico, es decir, que depende directamente de la complejidad y velocidad de los dispositivos.
Figura 10.2: Tipos de interface procesador-periferico
Como puede verse en la figura 10.2, existen tres formas principales de conectar un perif´erico: Directamente usando registros de control: Existen algunos dispositivos relativamente lentos (comparados con la velocidad del procesador) que pueden ser controlados directamente por el procesador principal, por medio de sus registros de control (estado, comando, datos). Usando estos registros el procesador puede determinar el estado del dispositivo, enviarle comandos y recibir o enviar datos, respectivamente. Controladores: Son dispositivos m´as r´apidos y complejos que los anteriores. El controlador es qui´en acepta las ´ordenes y reporta su estado
´ 10.1. INTERFACES PROCESADOR-PERIFERICO
101
como si fuese un dispositivo com´ un y corriente. A un controlador se le pueden conectar varios dispositivos de un mismo tipo. El controlador puede manejarlos sin ayuda del procesador principal. Procesador de E/S: En sistemas mucho m´as complejos existe un procesador dedicado a manipular un gran n´ umero de controladores de dispositivos. Este procesador tambi´en es conocido como IOP 1 . El procesador principal se comunica con este nuevo procesador por medio de comandos que le indican lo que debe hacer. Los registros de control, pueden ser accedidos en algunos sistemas directamente usando direcciones de memoria. Dicha zona de memoria se conoce como I/O!Address 2 . El conjunto de todas las I/O Address se conoce como I/O page o I/O map. Otra forma de acceder a estos registros es por medio de instrucciones especiales. Este mecanismo puede ser complementario del anterior. Por otra parte, cuando el procesador principal da la orden de ejecuci´on de un comando, no sabe exactamente cuando termina su ejecuci´on. Por lo tanto tiene dos opciones: Pooling: El procesador constantemente lee los resgistros de estado de los dispositivos y determina si terminaron o no la operaci´on de E/S. Este m´etodo no es muy apropiado, porque se pierde tiempo del procesador innecesariamente. Interrupciones: El dispositivo, cuando tiene algo que informar al procesador, genera una se˜ nal que hace que el procesador suspenda cualquier tipo de labor que est´e haciendo y comience a ejecutar la rutina del manejo de la interrupci´on. Una vez atendida la interrupci´on, continuar´a con lo que estaba haciendo. Los dispositivos que necesitan un gran n´ umero de informaci´on en muy poco tiempo utilizan la transferencia directamente desde o hacia la memoria sin la ayuda del procesador. Esto se conoce como DMA. 1 2
Input Output Processor Direcci´on de Entrada/Salida
CAP´ITULO 10. CONTROL DE DISPOSITIVOS
102
10.2
Rutina de control (Driver)
Normalmente estas rutinas no son procesos independientes sino peque˜ nos trozos de c´odigo de muy r´apida ejecuci´on que se encargan de controlar los dispositivos conectados al procesador. Los drivers pueden ser de dos tipos b´asicamente: Independientes del dispositivo: Son el conjunto de rutinas que procesan la informaci´on proveniente del dispositivo y son indiferentes a sus caracter´ısticas. Dependientes del dispositivo: Son el conjunto de rutinas que controlan directamente el dispositivo. Cada dispositivo diferente, posee un driver distinto. Por ejemplo, si se tienen varios discos de diferente tecnolog´ıa, cada disco deber´a tener su propio driver dependiente, aunque podr´ıan compartir un driver independiente que interprete la informaci´on que contienen. Ver figura 10.3.
Figura 10.3: Esquema de los tipos de drivers Un driver es responsable de procesar todas las solicitudes que vengan desde o hacia el dispositivo. Es decir, es aqu´el que procesa los comandos hacia el dispositivo o determina qu´e acci´on tomar cuando el dispositivo env´ıa un error. Tambi´en es responsable de inicializar el dispositivo, habilitarlo o deshabilitarlo seg´ un sea el caso e incluso, de ser necesario, cancelar las solicitudes en proceso.
Cap´ıtulo 11 Intel y compatibles En los procesadores Intel 80386 o posteriores y compatibles existen dos tipos de interrupciones: Las interrupciones por software (INT) y las interrupciones por hardware (IRQ). Interrupci´ on por Software: Se genera cuando un programa o proceso ejecuta la instrucci´on INT1 o cuando se genera una respuesta obligada por un evento determinado, por ejemplo una divisi´on por cero o un fallo de p´agina, las cuales se activan autom´aticamente. Una interrupci´on por software hace que el procesador suspenda lo que est´e haciendo y ejecuta el llamado a una funci´on. Al terminar retorna, en algunos casos, a la siguiente l´ınea a continuaci´on de la l´ınea que hizo el llamado; en otros, a la misma l´ınea (caso del fallo de p´agina). En la tabla 11.1 se pueden apreciar las interrupciones por software para modo protegido de Intel. Interrupci´ on por Hardware: Las interrupciones por hardware se pueden clasificar en interrupciones no enmascarables NMI2 y la solicitud de interrupci´on IRQ. Cuando un dispositivo tiene algo que informar al procesador, genera una se˜ nal llamada IRQ que es decodificada por un controlador programable denominado PIC 3 . 1
Assembler No Mask Interrupt 3 Programmable Interrupt Controler 2
103
CAP´ITULO 11. INTEL Y COMPATIBLES
104 No. INT INT-00h INT-01h INT-02h INT-03h INT-04h INT-05h INT-06h INT-07h INT-08h INT-09h INT-0Ah INT-0Bh INT-0Ch INT-0Dh INT-0Eh INT-0Fh INT-10h - 1Fh INT-20h - 2Fh INT-30h - FFh
Uso predeterminado Divisi´on por cero Excepci´on de depuraci´on NMI Punto de ruptura Overflow Comprobaci´on de l´ımites C´odigo Operaci´on no v´alido Coprocesador no disponible Doble falta Overflow por coprocesador TSS no v´alido Segmento no presente Excepci´on de pila Fallo de protecci´on general Fallo de p´agina Error de coprocesador Reservados por Intel Generalmente para las IRQ Disponibles
Tabla 11.1: Entradas de la IDT
La se˜ nal decodificada permite ubicar en una tabla la interrupci´on por software (INT) asociada a la IRQ. Ver tabla 11.2. La INT asociada a la IRQ hace un llamado a una funci´on cuya direcci´on se encuentra en una tabla de interrupciones en modo real o en una IDT4 , en modo protegido. Esta funci´on tiene como objetivo atender al dispositivo y se conoce como driver. Ver figura 11.1. Una NMI se genera cuando se produce un error grave en el sistema, por ejemplo “error de paridad en la memoria”. Regularmente despu´es de una NMI el sistema queda bloqueado o inoperante. 4
Interrupt Descriptor Table
105
Figura 11.1: Modo de operaci´on de una IRQ
Una computadora tiene dos PIC. Cada uno de ellos tiene una capacidad de ocho entradas posibles. Sin embargo, el segundo PIC est´a conectado a la segunda entrada del primer PIC, teniendo as´ı una configuraci´on de quince diferentes IRQs usando dos PICs en cascada. Ver figura 11.2.
Figura 11.2: Conexi´on de los PICs en una PC Recuerde que para poder acceder a los registros de control de un controlador es necesario hacerlo usando su direcci´on de E/S (I/O Address) ubicada en el mapa de E/S (I/O map) en una PC. Cada PIC es un controlador independiente, por lo tanto, cada uno tiene una direcci´on de E/S asociada.
CAP´ITULO 11. INTEL Y COMPATIBLES
106
No. IRQ IRQ-00 IRQ-01 IRQ-02 IRQ-03 IRQ-04 IRQ-05 IRQ-06 IRQ-07 IRQ-08 IRQ-09 IRQ-10 IRQ-11 IRQ-12 IRQ-13 IRQ-14 IRQ-15
Uso definido en una PC Sistema de reloj Teclado Casacada PIC Slave Disponible COM1 Disponible Disponible Disponible Reloj de tiempo real Disponible Disponible Disponible Disponible Redirecciona a la MMI Controlador de E-IDE Disponible
Uso general en una PC
COM2
Floppy LPT1
Tabla 11.2: Usos predeterminados de las IRQ
Parte V Control de Procesos
107
Cap´ıtulo 12 Procesos Ya se ha mencionado que existen programas de usuario y entornos de trabajo. Incluso pueden haber varios programas en ejecuci´on “al mismo tiempo” en una computadora. Se define el t´ermino proceso, como un programa con su entorno de trabajo, el cual requiere de los distintos recursos computacionales , para cumplir una tarea espec´ıfica, tales como tiempo del procesador, memoria, dispositivos de entrada/salida, etc. En un modelo b´asico de un sistema operativo, un proceso puede estar en uno de tres estados posibles: Listo: Estado en el que se encuentran uno o varios procesos que necesitan tiempo de procesador para continuar su ejecuci´on. listo Ejecuci´ on: Estado en el que se encuentra el proceso que actualmente tiene el control del procesador. ejecucici´on Espera: Estado en el que se encuentran todos los procesos que requieren que un evento suceda para continuar su ejecuci´on, es decir, que aunque tuvieran el control del procesador, no podr´ıan continuar su ejecuci´on. espera Ver figura 12.1 Debe estar muy claro que en una computadora con un solo procesador solo se puede ejecutar en el “mismo instante de tiempo” un programa. 109
CAP´ITULO 12. PROCESOS
110
Figura 12.1: Estados b´asicos de un proceso
As´ı, si un sistema operativo en una m´aquina con un solo procesador, desea brindar la posibilidad de ejecutar m´ ultiples procesos “al mismo tiempo”, deber´a atender uno a la vez durante un intervalo de tiempo, para luego conmutar a otro proceso. Por supuesto, si esta conmutaci´on se realiza muy r´apidamente, el usuario tendr´a la sensaci´on de que el sistema operativo est´a haciendo todo al mismo tiempo. De aqu´ı en adelante supondremos que solo se tiene un procesador.
12.1
Bloques de control
Para que el sistema operativo pueda conmutar de un proceso a otro, deber´a guardar cierta informaci´on adicional necesaria para poder retomar la ejecuci´on posteriormente de este proceso. Esta informaci´on adicional se conoce a nivel te´orco como el PCB 1 del proceso. La informaci´on que el PCB puede contener, depende en parte, de la arquitectura de la m´aquina y tambi´en del dise˜ no del sistema operativo, pero debe incluir: • Estado actual del proceso. • Ultimo valor de los registros del procesador. • N´ umero identificador del proceso dentro del sistema. 1
Process Control Block
12.1. BLOQUES DE CONTROL
111
Adicionalmente puede haber contener tambi´en: • Privilegios. • Due˜ no del proceso. • Tiempo de procesamiento (usado para servicios de cobro por uso). • Recursos en uso. • Prioridad. • L´ımites de la memoria asignada. En fin, puede existir toda la informaci´on que el sistema requiera. En los procesadores Intel 80386 y posteriores, o compatibles, el PCB se conoce como TSS 2 . Ver figura 12.2. El procesador hace referencia al TSS por medio del registro TR 3 , el cual act´ ua como un selector de la GDT, es decir, debe apuntar al descriptor de la TSS del proceso que est´a en curso de ejecuci´on. Como se puede observar en la figura 12.2, es necesario mantener almacenados los valores de los registros del procesador a fin de poder conmutar entre las diferentes tareas. As´ı como cada proceso tiene un PCB, el sistema operativo tiene un SCB 4 , en el cual almacena toda la informaci´on necesaria para la ejecuci´on apropiada del sistema operativo. Entre la informaci´on existente en el SCB tenemos: • Ubicaci´on de los PCB. • Ubicaci´on de las funciones controladoras del sistema. • Cantidad de recursos disponibles. • Recursos asignados. 2
Task State Segment Task Register 4 System Control Block 3
112
CAP´ITULO 12. PROCESOS
Figura 12.2: Segmento de Estado de Tarea - TSS
12.2. CAMBIO DE CONTEXTO
12.2
113
Cambio de contexto
El cambio de contexto es el nombre que recibe el mecanismo mediante el cual el procesador conmuta de una tarea a otra. Para comprenderlo mejor observe la figura 12.3.
Figura 12.3: Conmutaci´on entre tareas
Observe que cuando el sistema operativo toma el control del procesador, ´este guarda el PCB del proceso actual y recupera el PCB del proceso siguiente. El cambio de contexto en computadoras con procesador Intel y compatibles es realizado, en modo protegido por el procesador directamente, mientras que en modo real, es realizado por el sistema operativo, pues el hardware no lo soporta. Como se ver´a m´as adelante, pueden existir muchas causas por las que el sistema operativo tenga que conmutar a otro proceso. Sin embargo aclaremos dos nuevos t´erminos: Sistemas operativos Expulsivos: Son aquellos en los que el sistema puede interrumpir la ejecuci´on de un proceso para tomar el control del procesador (multiprogramaci´on), tal como el proceso 1 en la figura 12.3.
CAP´ITULO 12. PROCESOS
114
Sistemas operativos No Expulsivos: Son aquellos donde el sistema tendr´a que esperar a que el proceso termine su ejecuci´on normal para poder tomar el control (monoprogramaci´on). Los sistemas operativos expulsivos, instalan una rutina durante el proceso de inicializaci´on, la cual puede modificar o reemplazar la funci´on asociada a la interrupci´on por software responsable de atender la interrupci´on por hardware del reloj (IRQ-08 en INTEL). Dicha funci´on se ejecuta en forma peri´odica y autom´atica, usualmente cada 10 mseg. Es decir, cada 10 mseg el sistema operativo interrumpe la ejecuci´on del proceso actual y decide si contin´ ua con el proceso actual o le entrega el control a otro proceso. Esta labor de decisi´on es realizada por el planificador de procesos del sistema operativo. Por otra parte, vale la pena aclarar dos nuevos t´erminos que hacen referencia a los sistemas de procesamiento actuales: Multiprocesador: Sistemas donde se tienen varios procesadores trabajando cooperativamente para atender la ejecuci´on de varios procesos. Multicomputadoras: Sistemas donde se tienen varias computadoras trabajando cooperativamente para atender la ejecuci´on del varios procesos. Dichas computadoras trabajan en red reparti´endose la carga de procesamiento. Ver figura 12.4.
12.3
Operaciones de control de procesos
Todo sistema operativo que brinde el servicio de multiprogramaci´on en sus diferentes modos (multiprocesador, multicomputadoras) debe brindarle al usuario un m´ınimo de operaciones para controlar los procesos: Ejecutar: Carga el proceso en la memoria y coloca la direcci´on de su PCB en la lista de procesos listos. Cancelar: Retira apropiadamente de la lista (Listo o Espera), la direcci´on del PCB del proceso y si est´a en ejecuci´on, termina.
12.3. OPERACIONES DE CONTROL DE PROCESOS
Figura 12.4: Sistemas de procesamiento
115
116
CAP´ITULO 12. PROCESOS
Suspender: Pasa la direcci´on del PCB del proceso de la lista de procesos listos a la lista de procesos en espera y, si se est´a ejecutando, conmuta a otro proceso. Reanudar: Pasa la direcci´on del PCB del proceso de la lista de procesos en espera a la lista de procesos listos. Estas ser´ıan las m´ınimas operaciones que deber´ıa brindar. Sin embargo, en sistemas operativos mucho m´as complejos (donde no existen solo tres estados posibles para un proceso), el n´ umero de operaciones aumenta considerablemente. Por otra parte, existen m´as consideraciones sobre estas operaciones, como son: Ejecuci´ on: Un proceso durante su ejecuci´on puede ejecutar a otro. A este nuevo proceso se le llama proceso hijo, mientras que al ejecutor se le llama proceso padre. A su vez un proceso hijo, podr´a ejecutar m´as procesos hijos de ´el. Bajo esta modalidad, existen dos tendencias bien marcadas para el manejo de asignaci´on de recursos a los procesos hijo. • El sistema operativo les asignar´a nuevos recursos a los procesos, como si fueran procesos totalmente independientes. • El proceso padre, deber´a compartir los recursos que el sistema operativo le asign´o para sus procesos hijos. Adem´as de consideraciones sobre asignaci´on de recursos, el sistema operativo puede tomar dos medidas a la hora de ejecutar un proceso hijo: • El proceso padre pasa a la lista de procesos en espera hasta que su proceso hijo termine su ejecuci´on (sistemas operativos con un solo hilo de ejecuci´on). En sistemas operativos monohilo un proceso puede tener un solo hijo. • Tanto los procesos hijo como sus padres permanecen en la lista de procesos listos, para as´ı competir por el uso del procesador como cualquier otro proceso (sistemas operativos con m´ ultiples hilos de ejecuci´on o multihilo)
12.3. OPERACIONES DE CONTROL DE PROCESOS
117
Ver figura 12.5.
Figura 12.5: Procesos hijo
Cancelar: Un proceso deber´a informar al sistema operativo, que ´el ya termin´o su labor, para que as´ı el sistema operativo pueda liberar todos los recursos asignados a este proceso. Eventualmente un proceso puede cancelar la ejecuci´on de otro proceso, a trav´es del sistema operativo. Cuando un proceso termina su ejecuci´on por alguna raz´on, el sistema operativo tiene dos posibilidades con los procesos hijo de ´el. • Todo proceso hijo debe terminar su ejecuci´on, si la ejecuci´on de su padre termina. • Los procesos hijos, no son influenciados por la terminaci´on de su proceso padre, ya que para el sistema son procesos independientes. Hay que tener muy en claro que un sistema operativo por el simple hecho de brindar el servicio de multiprogramaci´on, no necesariamente es un sistema multihilo.
118
CAP´ITULO 12. PROCESOS
Cap´ıtulo 13 Planificaci´ on Un planificador de procesos es una parte del sistema operativo que se encarga de tomar decisiones de selecci´on sobre los procesos, con el fin de mejorar los indicadores del sistema. Existen tres tipos de planificadores b´asicos a saber: Planificador de largo plazo: El planificador de largo plazo, conocido tambi´en como planificador de trabajos, controla el n´ umero de procesos en memoria. Lo ideal ser´ıa que la tasa de creaci´on de procesos sea igual a la tasa de salida de procesos (solo se invoca cada vez que se ejecuta o cancela un proceso). Planificador de mediano plazo: Tambi´en es conocido como el planificador de swapping. Se encarga de bajar al disco algunos procesos con el objetivo de reducir la competencia del procesador (disminuir la carga en el sistema). Planificador de corto plazo: Selecciona un proceso que est´e en la memoria principal (lista de procesos listos) para asignarle el procesador, pudiendo ser expulsivo o no expulsivo. Tambi´en conocido como planificador de procesos. Si un sistema posee los tres planificadores, es evidente que no basta con los tres estados de un proceso. Por lo menos, se requieren cinco estados. Ver la figura 13.1 119
´ CAP´ITULO 13. PLANIFICACION
120
Figura 13.1: Planificaci´on de procesos
Cabe anotar que, b´asicamente, los planificadores se dise˜ nan para tratar de sacar el mejor provecho de la computadora. En otras palabras, trata de ejecutar de la mejor manera posible, el mayor n´ umero de procesos en una unidad de tiempo. Ahora nos centraremos en el estudio de los principales algoritmos de planificaci´on. Estos algoritmos pueden operar en cualquiera de los tres tipos de planificadores. Incluso, no es necesario que los tres utilicen el mismo algoritmo. Sin embargo, hay que tener cuidado pues solo los algoritmos no expulsivos se pueden usar en los planificadores de largo y mediano plazo.
13.1
Algoritmos de planificaci´ on
De forma similar a las estrategias de ajuste para el manejo de los espacios libres en memoria, los algoritmos de planificaci´on de procesos se eval´ uan usando los mismos criterios. Ver p´agina 27.
13.1.1
FCFS
FCFS 1 utiliza una pol´ıtica no expulsiva. Su filosof´ıa se basa en seleccionar un proceso seg´ un el orden de llegada de los procesos al sistema. Su implementaci´on es muy simple, pero su desempe˜ no en la practica no es muy bueno. 1
First Come, First Served
´ 13.1. ALGORITMOS DE PLANIFICACION
13.1.2
121
SJF
El SJF 2 es un algoritmo de pol´ıtica no expulsiva. Su filosof´ıa es seleccionar el proceso cuyo tiempo de ejecuci´on sea el m´as peque˜ no. De haber dos o m´as procesos cuyo tiempo de ejecuci´on sea igual, entonces se seleccionar´a seg´ un el algoritmo FCFS. Su implementaci´on es complicada, ya que conocer de antemano la duraci´on de un proceso no es una labor simple. Sin embargo, se puede calcular una aproximaci´on usando un promedio exponencial de las longitudes medias de las r´afagas (tiempo que un proceso hace uso del procesador) de procesamiento anteriores. T (n + 1) = α ∗ T (n) + (1 − α)T (n)0 T (n + 1): Valor aproximado de siguiente r´afaga de procesamiento. T (n): Longitud de la n-´esima r´afaga de procesamiento. T (n)0 : Datos hist´oricos. α: Constante de ponderaci´on de los datos hist´oricos sobre los actuales. Este algoritmo no es muy justo con los procesos cuya duraci´on sea grande con respecto a los dem´as. Adem´as, en un caso extremo, causa la postergaci´on indefinida de aquellos procesos cuyo tiempo de ejecuci´on siempre sea muy superior al tiempo de ejecuci´on de todos los dem´as procesos actuales y entrantes. Este problema se llama bloqueo indefinido o inanici´on (starvation).
13.1.3
SRTF
El algoritmo SRTF3 , utiliza una pol´ıtica expulsiva. Su filosof´ıa es seleccionar el proceso cuyo tiempo restante de ejecuci´on sea menor. Este algoritmo es realmente la versi´on expulsiva del algoritmo SJF. As´ı pues comparte todos los problemas del SJF. 2 3
Shortest Job First Shortest Remaining Time First
´ CAP´ITULO 13. PLANIFICACION
122
13.1.4
Prioridad
Este algoritmo puede ser implementado tanto con pol´ıtica expulsiva como no expulsiva. A cada proceso se le asigna una valor entero llamado prioridad. La prioridad tiene como objeto clasificar a los procesos seg´ un un criterio cualquiera de importancia. No existe consenso alguno sobre si el valor m´as alto es el de m´as prioridad, o es el valor m´as bajo. Esto se define de antemano. Su filosof´ıa se basa en seleccionar el proceso de mayor prioridad en el sistema. Si se est´a trabajando con la versi´on expulsiva, se debe que verificar la prioridad de todo proceso entrante en el sistema, para saber si se tiene o no que interrumpir al proceso que actualmente se ejecuta. La prioridad puede ser generada de dos formas: Prioridad interna: Es definida por el sistema operativo seg´ un alg´ un criterio definido de antemano (cantidad de memoria, tipo de proceso, etc). Prioridad externa: Se fijan empleando criterios ajenos al sistema (importancia del proceso, propietario, etc). Este m´etodo tambi´en puede sufrir del problema de inanici´on. Sin embargo, con una peque˜ na variante se soluciona el problema. Dicha variante lo u ´nico que hace es aumentar la prioridad del proceso cada vez que cumpla un determinado tiempo en el sistema. As´ı se garantiza que en un tiempo determinado el proceso tendr´a la m´as alta prioridad y sea atendido. Esta variante se conoce con el nombre de t´ecnica de envejecimiento. Por u ´ltimo, si dos o m´as procesos poseen la misma prioridad, entonces se hace la selecci´on usando el algoritmo FCFS.
13.1.5
HRN
El algoritmo HRN 4 es no expulsivo. Su filosof´ıa se basa en asignarle a cada proceso una prioridad, seleccionando aquel que tenga el valor m´as alto, seg´ un la siguiente f´ormula: 4
High Response Next
´ 13.1. ALGORITMOS DE PLANIFICACION
P =
123
Te + Tej Tej
En donde : P : Prioridad. Te : Tiempo de espera. T ej :
Tiempo de ejecuci´on.
Tiene la misma dificultad del SJF y del SRTF, ya que tambi´en necesita el tiempo de ejecuci´on del proceso. Adem´as, produce mucha sobrecarga ya que hay que realizar c´alculos por cada proceso. Sin embargo, es una pol´ıtica muy justa para los procesos.
13.1.6
RR
El algoritmo RR 5 , tambi´en llamado circular, es de pol´ıtica expulsiva. Su filosof´ıa se basa en ir colocando los procesos en un lista seg´ un unas reglas. Se seleccionar´a el proceso que est´e al inicio de la lista. Una vez seleccionado, se le asigna el procesador por un tiempo determinado. A este tiempo se le conoce por el nombre de cuanto o quantum. Para el funcionamiento apropiado del RR, es indispensable aplicar las siguientes reglas: • Cuando un proceso termina su ejecuci´on totalmente, es retirado de la lista del RR y se procede a seleccionar el proceso siguiente en la lista. • Cuando un proceso termina su quantum, se pasa al final de la lista y se selecciona el siguiente. • Al crear un proceso, se inserta al final de la lista. 5
Round Robin
´ CAP´ITULO 13. PLANIFICACION
124
• Si al mismo tiempo un proceso llega y otro termina su quantum, se pondr´a al final de la lista el proceso entrante y posteriormente el que termin´o su quantum. El quantum tiene una duraci´on entre 10 y 100 milisegundos. Hay que anotar el hecho de que el tiempo del cambio de contexto debe ser bastante menor que el tiempo del quantum.
13.1.7
FMQ
FMQ 6 es un algoritmo de pol´ıtica expulsiva. Su filosof´ıa se basa en mantener los procesos no en una sino en n listas interconectadas, de las cuales n - 1 listas operan con el algoritmo RR regularmente, y la n-esima lista opera con el algortimo FCFS. Su funcionamiento es el siguiente: • Cuando un proceso ha sido atendido un n´ umero k de veces (constante propia de cada una de las listas, no necesariamente igual), este proceso se mueve a la lista siguiente seg´ un las reglas de cada algoritmo. • Siempre se seleccionar´a el primer proceso que est´e en la lista de nivel m´as bajo. Esto quiere decir que s´olo se atender´an los procesos de la lista FCFS, cuando no exista ning´ un proceso en todas las listas RR. • Cuando un proceso termina, simplemente se retira de la lista en que se encuentra. • Los procesos se crean siempre en la primera lista. Aunque normalmente se utilizan algoritmos RR en las n - 1 primeras listas, esto no tiene por que ser siempre as´ı. Sin embargo la lista n-esima s´ı es FCFS. Del mismo modo, no necesariamente el quantum tiene que ser igual para todas las listas. Este algoritmo soporta muy bien la sobrecarga de procesos, esto es cuando existen demasiados procesos compitiendo por el procesador en el sistema operativo. 6
Feedback Multiple Queues
Cap´ıtulo 14 Concurrencia En un sistema que soporte multiprogramaci´on o multiprocesamiento, b´asicamente existen dos tipos de procesos, procesos independientes y procesos cooperativos. La diferencia fundamental entre estos dos tipos de procesos es que en los primeros no existe entre ellos relaci´on alguna, es decir, estos procesos no afectan y no son afectados por otros procesos. Por el contrario, los procesos cooperativos s´ı pueden afectar o ser afectados por otros procesos. Cuando dos o m´as procesos cooperan para solucionar un problema, ya sea en un sistema con uno o varios procesadores, se dice que estos procesos trabajan de forma concurrente. Est´a claro que para que exista concurrencia en sistemas de un solo procesador, es necesaria la existencia de la multiprogramaci´on. Sin embargo, la presencia de la multiprogramaci´on no es condici´on suficiente para que la exista la concurrencia. Un proceso puede verse afectado por otro cuando uno o m´as de los recursos de software o de hardware que necesita para operar correctamente, son requeridos o compartidos por m´as procesos. Para que existan procesos cooperativos es necesario que el sistema operativo les brinde servicios de comunicaci´on y sincronizaci´on, es decir, que los procesos puedan “hablar” para compartir informaci´on y controlar el acceso concurrente. Los mecanismos de sincronizaci´on, tienen como objetivo: 125
CAP´ITULO 14. CONCURRENCIA
126
• El Control de acceso a los recursos compartidos de hardware o software. • La Asignaci´on de recursos. • El Controlar el flujo de ejecuci´on(el proceso P s´olo debe ejecutarse cuando se ejecute completamente el proceso Q).
14.1
Comunicaci´ on de procesos
Existen dos esquemas complementarios de comunicaci´on entre procesos: Sistemas de memoria compartida: En estos sistemas los procesos comparten una zona de memoria o buffer por el cual ellos se comunican. En este esquema la comunicaci´on es responsabilidad exclusiva de los procesos, es decir, el sistema operativo s´olo les brinda la posibilidad de compartir memoria. La forma de utilizarla para comunicarse depende de los procesos y no del sistema operativo. Mensajer´ıa entre procesos: En este esquema el sistema operativo es el ente responsable de la comunicaci´on, porque mueve la informaci´on generada por un proceso (mensaje) hacia otro. Sea cual sea el m´etodo que se seleccione, debe darse soluci´on de manera muy clara, entre otros, a los siguientes interrogantes: • ¿Cu´ales son los pasos que se deben seguir para comunicar dos procesos? • ¿Se puede crear un medio de comunicaci´on compartido por m´as de dos procesos? • ¿Cuantos medios de comunicaci´on pueden haber entre dos procesos? • ¿Cu´al es la capacidad de almacenamiento de un canal de comunicaci´on cuando un proceso transmite pero el otro no puede atenderlo? • ¿Un proceso puede mantener m´as de un canal de comunicaci´on abierto al mismo tiempo?
´ DE PROCESOS 14.1. COMUNICACION
127
• ¿Cu´al es tama˜ no m´aximo de informaci´on (por paquete) que se puede enviar por un canal de comunicaci´on? • ¿En una comunicaci´on entre dos procesos usan un canal simplex1 , half duplex2 , full duplex3 ? • ¿C´omo hace un proceso para interrumpir o terminar un enlace de comunicaci´on? • ¿Qu´e pasa con la informaci´on que a´ un no ha sido procesada, cuando uno ambos procesos terminan su ejecuci´on, o si el canal es interrumpido? • ¿Qu´e pasa cuando un proceso desea comunicarse con otro que en el momento no se est´a ejecutando?
Un mensaje es informaci´on almacenada en un formato determinado. Este formato var´ıa entre los distintos sistemas operativos. Sin embargo, en dicho formato debe ir por lo menos:
Fuente: Identificaci´on (ID) del proceso que env´ıa la informaci´on. Destino: Identificaci´on (ID) del proceso receptor de la informaci´on. Contenido: Informaci´on o cuerpo del mensaje.
Por supuesto, para algunos sistemas operativos, existe m´as informaci´on importante que tiene que ir en el mensaje, como prioridad del mensaje, longitud, n´ umero del paquete, etc. Por otro lado, los procesos que deseen comunicarse deben tener una manera de referirse unos a otros. Para ello pueden usar comunicaci´on directa o indirecta. 1
unidireccional bidireccional no simult´aneo 3 bidireccional 2
CAP´ITULO 14. CONCURRENCIA
128
14.1.1
Mensajer´ıa directa
Cada proceso que desee enviar o recibir un mensaje, deber´a nombrar expl´ıcitamente al receptor o emisor de la comunicaci´on.
Enviar ( IDX , Mensaje ): Enviar el mensaje contenido en “Mensaje” al proceso X. Recibir ( IDY , Mensaje ): Recibir y almacenar el mensaje en “Mensaje”, proveniente del proceso Y.
Las propiedades de esta forma de comunicaci´on son:
• Establece un enlace entre cada par de procesos. • Los procesos necesitan conocer la identidad del otro. • Un enlace est´a asociado exactamente a dos procesos. • El enlace puede ser simplex o full duplex. Dado que ambos procesos necesitan conocer la identidad del otro, se conoce este sistema como comunicaci´on directa sim´etrica. Sin embargo, una peque˜ na variante de este sistema es la comunicaci´on directa asim´etrica, en la que las llamadas al sistema quedan:
Enviar ( IDX , Mensaje ): Enviar el mensaje contenido en “Mensaje” al proceso X. Recibir ( IDT emp , Mensaje ): Recibir y almacenar el mensaje en “Mensaje”. Adem´as, en la variable IDT emp , se almacena la identidad del proceso que envi´o el mensaje.
14.2. CONTROL DE ACCESO
14.1.2
129
Mensajer´ıa indirecta
En este sistema, los mensajes son enviados y recibidos usando buzones, tambi´en conocidos como puertos. Las llamadas al sistema ahora son:
Enviar ( IDX , Mensaje ): Enviar el mensaje contenido en “Mensaje” al buz´on IDX . Recibir ( IDX , Mensaje ): Recibir y almacenar el mensaje en “Mensaje”, proveniente del buz´on IDX .
Las propiedades de este sistema son:
• Un proceso puede comunicarse con otro si y solo si, comparten por lo menos un buz´on. • Dos procesos pueden comunicarse usando uno o m´as buzones. • Un buz´on puede ser compartido por dos o m´as procesos. • Este sistema puede ser unidireccional o bidireccional. Adem´as, el sistema operativo tiene que proveer otras llamadas como son:
• Creaci´on de buzones. • Destrucci´on de buzones. • Liberaci´on del espacio de buzones que por una u otra raz´on se han dejado de usar (concepto del recolector de basura).
CAP´ITULO 14. CONCURRENCIA Contador = 5
130
Proceso 1 Proceso 2 Contador = Contador + 1; Contador = Contador - 1; Figura 14.1: Ejemplo del problema de concurrencia a alto nivel
14.2
Control de acceso
Imagine por un momento, el problema m´as sencillo de concurrencia: dos procesos comparten una variable Contador. El primer proceso la incrementar´a, mientras que el segundo la decrementar´a. Inicialmente la variable tiene un valor de 5. Ver figura 14.1. Sin embargo, este problema resuelto usando un lenguaje de alto nivel, no es el que realmente se ejecuta, ya que el procesador s´olo ejecuta el lenguaje de m´aquina. Ver figura 14.2. Por lo tanto, este programa quedar´a convertido en lo siguiente: • Imagine un procesador, que no tiene instrucciones para incrementar o decrementar posiciones de memoria (variables directamente), as´ı que tiene que hacerlo por medio de sus registros internos. • Imagine que este procesador, tiene dos registros llamados Reg1 y Reg2. Contador = 5 Proceso 1 Proceso 2 MOV Reg1, Contador MOV Reg2, Contador INC Reg1 DEC Reg2 MOV Contador, Reg1 MOV Contador, Reg2 Figura 14.2: Ejemplo del problema de concurrencia a bajo nivel
Puede verse que el contenido de la variable Contador, tiene que moverse a un registro del procesador, luego se incrementar´a o decrementar´a este registro
14.2. CONTROL DE ACCESO
131
con un instrucci´on del procesador para que al final, el resultado se almacene nuevamente en la variable. A´ un as´ı, esta soluci´on parece buena, si se ejecuta cada una por separado (ejecuta Proceso 1 y luego Proceso 2, Contador = 5), pero si lo ejecutamos de otra manera (por ejemplo: el Proceso 1 se ejecuta hasta la segunda instrucci´on; all´ı por alguna raz´on, el sistema conmuta al Proceso 2, que se ejecuta completamente; al terminar, el proceso 1 ejecuta la tercera y u ´ltima instrucci´on) el resultado puede ser err´oneo (Contador = 6). Esto no es algo fortuito. Imagine que se ejecuta una instrucci´on por cada proceso, es decir, se ejecuta la primera instrucci´on del primer proceso, luego la primera del segundo y as´ı sucesivamente. Al final queda Contador = 4, siendo otro error. Siendo este ejemplo muy sencillo, imagine la cantidad de errores que se presentar´ıan en problemas mucho m´as complejos. Se debe aclarar que no es necesario usar registros diferentes para estos dos procesos pues, como ya se vi´o en la p´agina 113, el contenido de los registros del procesador es almacenado en el PCB del proceso cuando se realiza una conmutaci´on. Por lo tanto, si usara el mismo registro en ambos procesos la situaci´on ser´ıa la misma. La raz´on por la cual el programa falla, es la no atomicidad de las instrucciones, es decir, que las instrucciones pueden ser interrumpidas en medio de su ejecuci´on (una instrucci´on de alto nivel, puede ser equivalente a m´as de una instrucci´on en lenguaje de m´aquina, como el ejemplo anterior). Veremos a continuaci´on c´omo solucionar este problema de atomicidad. Considere n procesos concurrentes, en los cuales, cada uno tiene una zona en su c´odigo en la cual hace referencia a un componente compartido (por ejemplo la variable Contador del ejemplo anterior). A estas zonas de c´odigo se les conoce como secciones cr´ıticas. Entonces, si deseamos garantizar que cuando un proceso est´a ejecutando su secci´on cr´ıtica, ning´ un otro proceso que tenga recursos compartidos con ´el, puede estar ejecutando su secci´on cr´ıtica. Para poder garantizarlo, han aparecido varias alternativas:
CAP´ITULO 14. CONCURRENCIA
132
14.2.1
Espera activa
Son las soluciones de software que se basan en mantener los procesos que esperan entrar a su secci´on cr´ıtica, en un ciclo cuya condici´on se rompe cuando el proceso que estaba en su secci´on cr´ıtica termina, y que se activa cada vez que un proceso obtiene acceso a su secci´on cr´ıtica. Ver la figura 14.3 Condicion = FALSO Entrar_Sec_Critica ( void ) { while ( Condicion ); Condicion = VERDADERO; < Seccion critica > Condicion = FALSO; } Figura 14.3: Espera activa
Observe que el texto < Seccion critica > corresponde a un conjunto de instrucciones que componen la secci´ on cr´ıtica. En adelante, cualquier bloque de instrucciones que no sean de mucha importancia y se quieran resumir ser´an escritas entre < ... > . Se le llama espera activa, pues los procesos que esperan, siguen gastando tiempo de procesamiento en verificar dicha condici´on para saber si se quedan o no en el ciclo.
14.2.2
Espera no activa
Para evitar que un proceso gaste tiempo de procesador verificando una condici´on, mientras otro sale de la secci´on cr´ıtica, es necesario “dormirlo” (Sleep). Para dormir un proceso, basta con mover su ID a la lista de procesos en espera. Posteriormente cuando el otro proceso termine su secci´on cr´ıtica, es
14.2. CONTROL DE ACCESO
133
necesario “despertarlo” (Wakeup), o mejor dicho, mover si ID nuevamente a la lista de procesos listos. Una soluci´on que utiliza espera no activa es realizada con sem´aforos (creados por E.W.Dijkstra en 1965 ). Imagine que existe un tipo de datos llamado (S_Semaforo), el cual es una estructura de datos que tiene asociada una variable entera positiva y una cola (FIFO4 ) de ID de procesos. Ver figura 14.4. struct S_Semaforo { unsigned int Valor; T_Cola Cola_ID; }; Figura 14.4: Estructura b´asica de un sem´aforo Con esta estructura de datos se instancia (crea) una variable. Dicha variable ser´a entonces un sem´aforo, el cual tiene por definici´on tres restricciones: • El sistema operativo, debe brindar dos funciones at´omicas que manipulen los datos asociados a un sem´aforo. (Wait y Signal). • Los procesos no pueden modificar directamente los campos asociados a un sem´aforo, es decir, deben usar las funciones que brinda el sistema operativo. • Solo en el proceso de creaci´on es posible asignar un valor inicial a un sem´aforo. Las funciones Wait y Signal se implementan en la forma en que se muestra en las figuras 14.5 y 14.6. Al ejecutar Wait, se verifica si el valor del sem´aforo es igual a 0. De ser as´ı, se obtiene el ID del proceso actual. Luego, se coloca su ID en la cola del sem´aforo y por u ´ltimo, por medio de una solicitud al sistema operativo, este proceso se duerme (se coloca en estado de espera), y si por el contrario su valor es positivo, simplemente se decrementar´a en uno este valor. 4
First In, First Out
134
CAP´ITULO 14. CONCURRENCIA
Wait ( S_Semaforo ID_Sem ) { if ( ID_Sem.Valor = 0 ) { ID_Proceso = Obtener_ID_Proceso_Actual(); ID_Sem.Cola_ID.Ingrese( ID_Proceso ); Sleep ( ID_Proceso ); } else ID_Sem.Valor = ID_Sem.Valor - 1; } Figura 14.5: Operaci´on Wait
Signal ( S_Semaforo ID_Sem ) { ID_Proceso = ID_Sem.Cola_ID.Retire(); if ( ID_Proceso <> NULL ) Wakeup ( ID_Proceso ); else ID_Sem.Valor = ID_Sem.Valor + 1; } Figura 14.6: Operaci´on Signal
14.2. CONTROL DE ACCESO
135
Si se ejecuta la funci´on Signal, se retira el proceso de la cola del sem´aforo, se le pide al sistema operativo que lo despierte (lo pase de la lista de procesos en espera a la lista de proceso listos). As´ı ´este podr´a pasar sin ning´ un problema a ejecutar su secci´on cr´ıtica. Por supuesto, todo esto es transparente para los procesos, ya que s´olo invocan las funciones Wait y Signal, no se preocupan de c´omo est´an construidas. Problema de atomicidad Para solucionar el problema de atomicidad de la secci´on cr´ıtica basta con un solo sem´aforo compartido por todos los procesos concurrentes al que llamaremos, por definici´on Mutex. El valor inicial de Mutex siempre es uno. Ver figura 14.7. Mutex.Valor = 1 Entrar_Sec_Critica ( void ) { Wait ( Mutex ); < Seccion Critica > Signal ( Mutex ); } Figura 14.7: Secci´on cr´ıtica con sem´afotos
Si todos los procesos concurrentes utilizan de esta manera el sem´aforo, se garantizar´a que uno y s´olo un proceso estar´a ejecutando su secci´on cr´ıtica. Problema Productor / Consumidor En un sistema existen dos procesos concurrentes: uno produce elementos para colocarlos en un buffer (proceso Productor), mientras el segundo toma los elementos del mismo buffer para procesarlos(proceso consumidor). C´omo sincronizarlos, para que el Productor no coloque m´as elementos en el buffer si est´a lleno (tama˜ no m´aximo n), y que el Consumidor no trate de tomar elementos del buffer si est´a vac´ıo.
CAP´ITULO 14. CONCURRENCIA
136
La respuesta puede ser observada en las figuras 14.8 y 14.9, la cuales muestran al proceso Productor y Consumidor respectivamente. Mutex = 1, Vacio = n, Lleno = 0 Productor ( void ) { < Producir un Elemento > Wait ( Vacio ); Wait ( Mutex ); < Adiciona el Elemento > Signal( Mutex ); Signal ( Lleno ); } Figura 14.8: Productor
Observe que al igual que Mutex, Vacio y Lleno son sem´aforos que controlan el n´ umero de espacios vac´ıos y llenos (en el buffer) respectivamente. Mutex = 1, Vacio = n, Lleno = 0 Consumidor ( void ) { Wait ( Lleno ); Wait ( Mutex ); < Retira un elemento > Signal ( Mutex ); Signal ( Vacio ); < Procesa el elemento > } Figura 14.9: Consumidor
14.2. CONTROL DE ACCESO
137
Problema Escritores / Lectores Se tiene un archivo de datos que puede ser accedido por muchas instancias de forma de s´olo lectura, o de lectura/escritura. El sistema debe garantizar su uso seg´ un las siguientes restricciones: • No limitaci´on alguna con el n´ umero de instancias de procesos en forma de s´olo lectura. • S´olo se puede abrir en forma lectura/escritura, cuando el archivo no se est´a usando. • Cuando un proceso solicita acceso de lectura/escritura, el sistema no puede conceder m´as accesos de solo lectura o lectura/escritura. Sin embargo, debe esperar hasta que todos los procesos de s´olo lectura terminen normalmente. La soluci´on puede ser observada en las figuras 14.10 y 14.11. Observe que Mutex1, Mutex2, Mutex_E y Mutex_SL son sem´aforos que controlan: el bloqueo de acceso a los lectores cuando hay una solicitud de escritura; la actualizaci´on del n´ umero de escritores; el proceso de escritura; y la actualizaci´on del n´ umero de lectores, respectivamente. Adem´as existen dos variables simples, Num_E para contabilizar el n´ umero de escritores y Num_SL para almacenar el n´ umero de lectores. En este punto, vale la pena hacer una advertencia: el uso indebido de los sem´aforos puede producir bloqueos indefinidos.
14.2.3
Bloqueos Indefinidos
Este problema aparece cuando uno o m´as procesos concurrentes est´an en espera y no existe ning´ un otro proceso que los haga salir de dicho estado. Ver figuras 14.12 y 14.13. Si se ejecutan ambos procesos at´omicamente no hay problema. Pero si se ejecuta la primera instrucci´on del proceso 1 y luego la primera instrucci´on del proceso 2, para cuando se quiera continuar con la segunda instrucci´on de cualquiera de los dos procesos, ´estos inmediatamente son dormidos, pues los
CAP´ITULO 14. CONCURRENCIA
138
Mutex1 = 1, Mutex2 = 1, Mutex_E = 1, Num_E = 0 Escritor ( void ) { Wait ( Mutex2 ); Num_E = Num_E + 1; if ( Num_E == 1 ) Wait ( Mutex1 ); Signal ( Mutex2 ); Wait ( Mutex_E ); < Realiza la escritura > Signal (Mutex_E ); Wait ( Mutex2 ); Num_E = Num_E - 1; if ( Num_E == 0 ) Signal ( Mutex1 ); Signal ( Mutex2 ); } Figura 14.10: Proceso Escritor
14.2. CONTROL DE ACCESO Mutex1 = 1, Mutex2 = 1, Mutex_SL = 1, Num_SL = 0 Lector ( void ) { Wait ( Mutex1 ); Signal ( Mutex1 ); Wait ( Mutex_SL ); Num_SL = Num_SL + 1; if ( Num_SL == 1 ) Wait ( Mutex_E ); Signal ( Mutex_SL ); < Realiza la lectura > Wait ( Mutex_SL ); Num_SL = Num_SL - 1; if ( Num_SL == 0 ) Signal ( Mutex_E ); Signal (Mutex_SL ); } Figura 14.11: Proceso Lector
Mutex1 = 1, Mutex2 = 1 Proceso1 ( void ) { Wait ( Mutex1 ) Wait ( Mutex2 ) < Ejecuta el proceso 1 > Signal ( Mutex2 ) Signal ( Mutex1 ) } Figura 14.12: Proceso 1 - Bloqueo Indefinido
139
CAP´ITULO 14. CONCURRENCIA Mutex1 = 1, Mutex2 = 1
140
Proceso2 ( void ) { Wait ( Mutex2 ) Wait ( Mutex1 ) < Ejecuta el proceso 2 > Signal ( Mutex1 ) Signal ( Mutex2 ) } Figura 14.13: Proceso 2 - Bloqueo Indefinido
valores de Mutex1 y Mutex2, ya son iguales a 0, quedando ambos procesos bloqueados y sin esperanzas de ser despertados en alg´ un momento. Por otra parte, los sem´aforos constituyen la m´as importante soluci´on no activa, a pesar de no ser la u ´nica. Tambi´en existen otros mecanismos de m´as alto nivel, por ejemplo las regiones cr´ıticas (macro instrucciones) que ayudan al manejo adecuado de los sem´aforos y los monitores5 .
14.2.4
Mecanismos de hardware
Son las instrucciones de hardware que ayudan a la atomicidad. La principal de ellas es la inhibici´on y activaci´on de las interrupciones. Esto se logra ejecutando instrucciones de bajo nivel (una por cada acci´on requerida) que impiden que un proceso sea interrumpido mientras est´a ejecutando una secci´on cr´ıtica. Sin embargo, hoy por hoy, no es un m´etodo muy seguro para las aplicaciones del usuario, ya que estas instrucciones se encuentran protegidas (es decir, no son accesibles al usuario, pues su uso indiscriminado podr´ıa bloquear la computadora). Adem´as, con la utilizaci´on del multiprocesamiento y el procesamiento distribuido, este tipo de soluciones no son adecuadas. 5
B. Hansen y C.A.R. Hoare.
´ DE RECURSOS 14.3. MECANISMOS DE ASIGNACION
14.3
141
Mecanismos de asignaci´ on de recursos
Un recurso es un elemento de software o de hardware que puede ser usado por un solo proceso en un instante dado. As´ı pues, una computadora se compone de un n´ umero finito de recursos que se distribuyen entre varios procesos que compiten por ellos. En un computadora pueden existir muchas clases de recursos, en donde cada clase puede contener m´as de un ejemplar (es decir, tener varias impresoras, varios discos, entre muchos otros). Si un proceso solicita un ejemplar de un recurso, el sistema operativo puede asignarle cualquiera de los ejemplares de ese tipo. En caso contrario, se puede afirmar que los ejemplares no son del mismo tipo y que la clasificaci´on est´a mal hecha. En un modo normal de operaci´on, un proceso debe pasar por las siguientes etapas: Solicitud: El proceso le pide al sistema operativo que le asigne un ejemplar de un recurso determinado. Si no existe un ejemplar disponible, el proceso debe pasar a la lista de procesos en espera. Utilizaci´ on: Una vez que el proceso obtiene el acceso al recurso, trabaja con ´el. Liberaci´ on: El proceso le indica al sistema que puede disponer ahora del recurso, pues ´el ya termin´o de utilizarlo. Aunque ´esto parece muy elemental, podr´ıa no serlo a la hora de asignar m´ ultiples recursos a varios procesos. En este caso puede surgir el problema que llamaremos interbloqueo o bloqueo mutuo, tambi´en conocido por otros como abrazo mortal (deadlock ), que consiste en lo siguiente: Imagine por un momento un sistema en el que tenemos dos procesos P1 y P2, los cuales por alguna raz´on necesitan los recursos R1 y R2. Hasta ahora todo marcha bien, pero supongamos que: • El proceso P1, solicita al sistema que le asigne R1 (se le asigna, pues ´este est´a disponible).
142
CAP´ITULO 14. CONCURRENCIA
• El sistema conmuta a P2, el cual solicita R2 (se le asigna, pues ahora est´a disponible). • Ahora cuando P1 solicite R2, ´este pasa inmediatamente a la lista de espera, hasta que se libere el dispositivo R2 (asignado en este momento al proceso P2). • De manera an´aloga, cuando P2 solicite a R1, tambi´en va a pasar a la lista de espera, pues R1 esta actualmente asignado y debe esperar a que se libere (asignado en este momento al proceso P1). Como puede verse claramente, tanto P1 como P2 permanecer´an en una espera indefinida, pues el evento que necesitan para continuar su ejecuci´on nunca se dar´a, ya que el u ´nico proceso que puede provocarlo tambi´en est´a bloqueado. Ver figura 14.14.
Figura 14.14: Interbloqueo de dos procesos Por supuesto, ´este es un ejemplo muy simple con solo dos procesos y dos recursos. Imagine un sistema real, no con dos procesos sino con n, y no con 2 recursos sino con p recursos cada uno con m´ ultiples ejemplares. Para que el interbloqueo se produzca, es necesario que en el sistema se den las siguientes cuatro condiciones. Si una de las cuatro no existe, entonces podemos decir que nunca se presentar´a el interbloqueo.
´ DE RECURSOS 14.3. MECANISMOS DE ASIGNACION
143
Exclusi´ on mutua sobre recursos: Es decir, existe por lo menos un recurso compartido, el cual no se puede acceder por m´as de un proceso simult´aneamente. No apropiaci´ on de recursos: Cada recurso, una vez asignado, es liberado voluntariamente por el proceso que lo posee. Ning´ un otro proceso puede liberarlo para apropiarse de ´el. Posesi´ on y espera simult´ aneamente: Es decir, existen procesos que estando en espera de asignaci´on de un recurso, tienen asignados por lo menos uno. Espera circular: Se presenta cuando una serie de procesos est´an en espera, debido a que necesitan un recurso que est´a asignado o otro proceso de la serie. P1, R2, P2, R1, P1, ..., (Figura 14.14) Para tratar el interbloqueo, existen dos m´etodos: • Asegurar de alguna manera que nunca el sistema entre a un interbloqueo. • Permitir que se den los interbloqueos, y lograr despu´es que el sistema se recupere.
14.3.1
Prevenci´ on de interbloqueos
La mejor manera de prevenir los interbloqueos es asegurar que no se presente al menos, uno de los cuatro factores necesarios para su aparici´on. Sin embargo, estas medidas provocan efectos secundarios como es la reducci´on en la productividad del sistema. Las medidas m´as comunes para restringir la forma en que se pueden hacer las solicitudes son: • Distinguir claramente entre los recursos que soportan accesos m´ ultiples y los que no, ya que aquellos que soportan accesos m´ ultiples (archivos de solo lectura), no tienen posibilidades de participar en un interbloqueo.
144
CAP´ITULO 14. CONCURRENCIA
• Si un proceso tiene que esperar por un recurso, todos los que tiene asignados se liberaran autom´aticamente (ello solo se puede hacer con recursos que puedan almacenar y recuperar su estado f´acilmente). El proceso al que le expropiaron los recursos deber´a esperar hasta que le regresen todos sus recursos asignados y le asignen los que estaba esperando. • Cada proceso antes de comenzar su ejecuci´on, debe solicitar y esperar la asignaci´on de todos los recursos que necesita para su funcionamiento. • Un proceso solo puede solicitar recursos despu´es de haber liberado todos los que ya tiene asignados. Si requiere uno que tiene asignado actualmente debe liberarlo y volverlo a solicitar. • El sistema impone un orden ascendente de los recursos seg´ un su uso. Todos los procesos deben hacer las solicitudes de asignaci´on de recursos usando ese orden. Con ello se garantiza la no aparici´on de la espera circular. Como puede verse, ´estas son pol´ıticas de asignaci´on que pueden ser complementarias unas de otras. Sin embargo, pueden causar algunas dificultades adicionales.
14.3.2
Recuperaci´ on de un interbloqueo
Cuando se detecta que hay un interbloqueo en el sistema, existen varias alternativas de recuperaci´on: Informar: El sistema le informa al usuario para que tome la medidas necesarias manualmente. Abortar procesos: El sistema automaticamente decide qu´e proceso abortar, para que se rompa la espera circular. Para ello puede usar dos pol´ıticas diferentes: • Abortar todos los de la espera circular.
• Abortar uno a uno hasta romper la espera circular.
14.4. MECANISMOS DE CONTROL DE FLUJO
145
Expropiar recursos: El sistema comienza a expropiar los recursos asignados a los procesos que se encuentran en interbloqueo hasta romperlo.
Para poder decidir sobre cu´al o cu´ales procesos se abortan, se suelen utilizar las mismas pol´ıticas o algoritmos de planificaci´on. Aqu´ı la prioridad es el costo de la operaci´on en t´erminos de tiempo y procesamiento. Sin embargo, hay que tener en cuenta la prioridad del proceso, el tiempo de ejecuci´on, la cantidad y tipo de recursos asignados, etc. Ninguna de las estrategias b´asicas referidas al interbloqueo por s´ı sola es apropiada para toda la gama de problemas que pueden surgir con la asignaci´on de recursos.
14.4
Mecanismos de control de flujo
Suponga que se tiene una sola instancia (n´ umero de copias de un proceso en ejecuci´on) de los procesos P1 y P2. Ademas ambos comienzan su ejecuci´on simult´aneamente en un sistema con multiprogramaci´on. Sin embargo, se desea que sin importar la pol´ıtica de planificaci´on ni el tama˜ no de P1 o P2, se ejecute seg´ un el orden mostrado en la figura 14.15.
Figura 14.15: Ejemplo de control de flujo
CAP´ITULO 14. CONCURRENCIA
146
Como puede verse claramente, lo u ´nico que se desea es asegurar un orden de ejecuci´on, aqu´ı no existe una secci´on cr´ıtica. Una forma de solucionar este problema, es utilizando sem´aforos. Llamaremos Sync a este sem´aforo especial cuyo valor inicial ser´a 0 (cero). Ver 14.16. Proceso1 ( void ) { < Primera parte >
Proceso1 ( void ) { Wait ( Sync2 );
Signal ( Sync2 ); Wait ( Sync1 ); < Segunda Parte Signal ( Sync2 ); }
< Primera parte >
>
Signal ( Sync1 ); Wait ( Sync2 ); < Segunda Parte
>
}
Figura 14.16: Control de flujo Este tipo de problemas son muy comunes en los sistemas operativos que suelen utilizar control de flujo y control de sincronismo.
Bibliograf´ıa [1] ALCALDE, Eduardo Lancharro: Introducci´ on a los SISTEMAS OPERATIVOS. Mc Graw-Hill. Madrid, 1992. [2] ANGULO, Jose Mar´ıa: 386 y 486 Microprocesadores avanzados de 32 bits. Paraninfo. Madrid 1989. [3] BAUTISTA, Tom´as y otros: Una descripci´ on de LATEX2E. Centro de Microelectr´onica Aplicada de la Universidad de Las Palmas de G.C. 1998. [4] GOOSSEN, Michel y MITTELBACH, Frank: Addison Wesley Longman. 1997.
The LATEXcompanion.
´ [5] GUTIERREZ no y construcci´ on de un POSADA, Juli´an Esteban: Dise˜ sistema operativo con fines educativos. Trabajo de grado, Universidad del Valle. Cali, 1999. [6] JUNGBLUTH, Thomas: Boixareu Editores. 1990.
El gran libro del 486 y SX.
Marcombo
[7] SILBERSCHATZ, Galvin: Sistemas Operativos, Quinta Edici´on. Pearson, Addison Wesley Longman. Mexico, 1999. [8] TANENBAUM, Andrew S.: Sistemas operativos - Dise˜ no e implementaci´on. Prentice Hall. 1991. [9] TRIEBEL, Walter: The 80386DX Microprocesor - Hardware, Software and Interfacing. Prentice Hall. 1989.
147
148
BIBLIOGRAF´IA
´Indice de Materias A acceso concurrente. . . . . . . . .75, 125 algoritmos bits de referencia . . . . . . . . . . . 49 de apoyo . . . . . . . . . . . . . . . . . . . 50 de planificaci´on . . . . . . . . . . . 120 FCFS . . . . . . . . . . . . . . . . . . . 120 no expulsivos . . . . . . . . . . . . 120 prioridad . . . . . . . . . . . . . . . . 122 SJF . . . . . . . . . . . . . . . . . . . . . 121 SRTF . . . . . . . . . . . . . . . . . . . 121 reemplazo de p´aginas . . . . . . . 49 almacenamiento . . . . . . . . . . . . . . . . 17 almacenamiento secundario. . . . .43 anomal´ıa de Belady . . . . . . . . . . . . 47 aplicaciones . . . . . . . . . . . . . . . . . . . . 47 archivo atributos . . . . . . . . . . . . . . . . . . . 75 borrar . . . . . . . . . . . . . . . . . . . . . . 74 crear . . . . . . . . . . . . . . . . . . . . . . . 74 escribir . . . . . . . . . . . . . . . . . . . . . 74 leer . . . . . . . . . . . . . . . . . . . . . . . . 74 renombrar . . . . . . . . . . . . . . . . . . 75 seguridad . . . . . . . . . . . . . . . . . . 75 arquitectura . . . . . . . . . . . . . . . . . . . . 51 arranque . . . . . . . . . . . . . . . . . . . . . . . 83 arreglo . . . . . . . . . . . . . . . . . . . . . . . . . 17 atomicidad . . . . . . . . . . . . . . . . . . . . 131
B bajo nivel . . . . . . . . . . . . . . . . . . . . . 140 Batch . . . . . . . . . . . . . . . . . . . . . . . . . . 12 bit de control . . . . . . . . . . . . . . . . . . 50 de referencia . . . . . . . . . . . . . . . 49 limpiar . . . . . . . . . . . . . . . . . . . 50 dirty . . . . . . . . . . . . . . . . . . . . . . . 46 sucio . . . . . . . . . . . . . . . . . . . . . . . 46 bloqueo indefinido . . . . . . . . . . . . 121 bloqueos . . . . . . . . . . . . . . . . . . . . . . 137 indefinidos . . . . . . . . . . . . . . . . 137 mutuo . . . . . . . . . . . . . . . . . . . . 141 bloques contiguos . . . . . . . . . . . . . . . . . . . 25 tama˜ no fijo . . . . . . . . . . . . . 25, 76 tama˜ no variable . . . . . . . . 25, 37 buffer . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Buffering . . . . . . . . . . . . . . . . . . . . . . . 11 byte de control . . . . . . . . . . . . . . . . . 50 C cabeza . . . . . . . . . . . . . . . . . . . . . . . . . 71 cabeza lectora . . . . . . . . . . . . . . 73, 81 Cabezas n´ umero m´aximo . . . . . . . . . . . . 87 cambio de contexto . . . 33, 113, 124 cascada . . . . . . . . . . . . . . . . . . . . . . . 105 cero relativo. . . . . . . . . . . . . . . . . . . .18 CHS . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 149
150 direccionamiento . . . . . . . . . . . 87 cilindro . . . . . . . . . . . . . . . . . . . . . . . . 71 Cilindros n´ umero m´aximo . . . . . . . . . . . . 87 cintas magn´eticas . . . . . . . . . . . . . . 10 cliente. . . . . . . . . . . . . . . . . . . . . . . . . . .7 cluster . . . . . . . . . . . . . . . . . . . . . . . . . 76 cola . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 compatibles . . . . . . . . . . . . . . . . . . . 103 complejidad . . . . . . . . . . . . . . . . . . . 100 comportamiento . . . . . . . . . . . . 47, 48 computadora . . . . . . . . . 3, 10, 12, 43 personal . . . . . . . . . . . . . . . . . . . . 13 comunicaci´on . . . . . . . . . . . . . . . . . 125 bidireccional . . . . . . . . . . . . . . 127 duplex . . . . . . . . . . . . . . . . . . . . 127 full duplex . . . . . . . . . . . . . . . . 127 interrogantes . . . . . . . . . . . . . . 126 mensaje . . . . . . . . . . . . . . . . . . . 127 contenido . . . . . . . . . . . . . . . 127 destino . . . . . . . . . . . . . . . . . . 127 fuente . . . . . . . . . . . . . . . . . . . 127 ID . . . . . . . . . . . . . . . . . . . . . . 127 longitud . . . . . . . . . . . . . . . . . 127 prioridad . . . . . . . . . . . . . . . . 127 paquete . . . . . . . . . . . . . . . . . . . 127 n´ umero . . . . . . . . . . . . . . . . . 127 simplex . . . . . . . . . . . . . . . . . . . 127 unidireccional . . . . . . . . . . . . . 127 concurrente . . . . . . . . . . . . . . . . . . . 125 conmutaci´on . . . . . . . . . . . . . . 11, 110 Consola . . . . . . . . . . . . . . . . . . . . . . . . . 9 controlador. . . . . . . . . . . . . . .101, 105 convertir . . . . . . . . . . . . . . . . . . . . . . . 72 cooperaci´on . . . . . . . . . . . . . . . . . . . . 12 costoso . . . . . . . . . . . . . . . . . . . . . . . . . . 9 criterio de conmutaci´on . . . . . . . . 12 cuanto . . . . . . . . . . . . . . . . . . . . . . . . 123
´INDICE DE MATERIAS D deadlock . . . . . . . . . . . . . . . . . . . . . . 141 demanda paginaci´on . . . . . . . . . . . . . . . . . 45 segmentaci´on . . . . . . . . . . . . . . . 45 segmentaci´on paginada . . . . . 45 dep´osito. . . . . . . . . . . . . . . . . . . . . . . .50 desperdicio . . . . . . . . . . . . . . . . . . 9, 30 desplazamiento . 18, 22, 32, 38, 41, 50 f´ısico . . . . . . . . . . . . . . . . . . . . . . . 34 l´ogico . . . . . . . . . . . . . . . . . . . . . . 34 Dijkstra . . . . . . . . . . . . . . . . . . . . . . . 133 direcci´on . . . . . . . . . . . . . . . . . . . 22, 76 f´ısica . . . . . . . . . . . . . . . . . . . 32, 38 l´ogica . . . . . . . . . . . . . . . . . . .32, 38 direccionamiento . . . . . . . . 17, 18, 32 directo . . . . . . . . . . . . . . . . . . . . . 18 relativo . . . . . . . . . . . . . . . . . . . . 18 directorio cambiar . . . . . . . . . . . . . . . . . . . . 75 crear . . . . . . . . . . . . . . . . . . . . . . . 74 listar . . . . . . . . . . . . . . . . . . . . . . . 74 disco . . . . . . . . . . . . . 3, 43, 46, 50, 83 asignaci´on contigua . . . . . . . . . . . . . . . . . . 76 enlazada . . . . . . . . . . . . . . . . . 76 indexada . . . . . . . . . . . . . . . . . 78 asignaci´on de espacio . . . . . . . 75 espacio libre . . . . . . . . . . . . 73, 79 modelo conceptual . . . . . . . . . 73 planificaci´on C-LOOK . . . . . . . . . . . . . . . . . 82 C-SCAN . . . . . . . . . . . . . . . . . 82 FCFS . . . . . . . . . . . . . . . . . . . . 81 LOOK . . . . . . . . . . . . . . . . . . . 82 SCAN . . . . . . . . . . . . . . . . . . . . 82 SSTF . . . . . . . . . . . . . . . . . . . . 81
´INDICE DE MATERIAS
151
planificaci´on de acceso. . . . . .81 planificacion de acceso. . . . . .73 servicios . . . . . . . . . . . . . . . . . . . . 75 solicitudes . . . . . . . . . . . . . . . . . . 81 disco duro. . . . . . . . . . . . . . . . . . . . . .69 dispositivo. . . . . . . . . . . . . . . . . .44, 50 dispositivos . . . . . . . . . 8, 10, 99, 104 complejidad . . . . . . . . . . . . . . . 100 Entrada/Salida . . . . . . . . . . . . . 99 velocidad. . . . . . . . . . . . . . . . . .100 DMA . . . . . . . . . . . . . . . . . . . . . 11, 101 drive . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 driver . . . . . . . . . . . . . . . . 99, 102, 104 dependiente . . . . . . . . . . . . . . . 102 independiente . . . . . . . . . . . . . 102
BF . . . . . . . . . . . . . . . . . . . . . . . 27 FF . . . . . . . . . . . . . . . . . . . . . . . 27 First Fit . . . . . . . . . . . . . . . . . 27 mejor ajuste . . . . . . . . . . . . . . 27 peor ajuste . . . . . . . . . . . . . . . 27 primer ajuste . . . . . . . . . . . . . 27 WF . . . . . . . . . . . . . . . . . . . . . . 27 Worst Fit . . . . . . . . . . . . . . . . 27 estrategias de ajuste. . . . . . . . . . . .76 Estructura Cliente/Servidor . . . . . . . . . . . . . 7 jer´arquica . . . . . . . . . . . . . . . . . . . 7 M´aquinas virtuales . . . . . . . . . . 7 monol´ıtica . . . . . . . . . . . . . . . . . . . 7 excepci´on . . . . . . . . . . . . . . . . . . . . . . 45
E eficiencia . . . . . . . . . . . . . . . . . . . 10, 47 ejecuci´on . . . . . . . . . . . . . . . . . . . 18, 43 EMBR . . . . . . . . . . . . . . . . . . . . . . . . . 89 c´odigo de arranque . . . . . . . . . 90 entornos de trabajo . . . . 20, 25, 109 mover . . . . . . . . . . . . . . . . . . . . . . 28 entrada/salida . . . . . . . . . . . 3, 10, 11 espera activa . . . . . . . . . . . . . . . . . . 132 estrategias . . . . . . . . . . . . . . . . . . . . . 26 huecos . . . . . . . . . . . . . . . . . . . . . 26 Best Fit . . . . . . . . . . . . . . . . . . 26 BF . . . . . . . . . . . . . . . . . . . . . . . 26 FF . . . . . . . . . . . . . . . . . . . . . . . 26 First Fit . . . . . . . . . . . . . . . . . 26 mejor ajuste . . . . . . . . . . . . . . 26 peor ajuste . . . . . . . . . . . . . . . 27 primer ajuste . . . . . . . . . . . . . 26 WF . . . . . . . . . . . . . . . . . . . . . . 27 Worst Fit . . . . . . . . . . . . . . . . 27 solicitudes . . . . . . . . . . . . . . . . . . 27 Best Fit . . . . . . . . . . . . . . . . . . 27
F fabricante . . . . . . . . . . . . . . . . . . 17, 36 fallo de p´agina . . . . . . . . . . 45, 47, 50 FAT . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 FCFS . . . . . . . . . . . . . . . . . . . . . . . . . 120 FIFO . . . . . . . . . . . . . . . . . . . . . . . 47, 50 Flag Boot . . . . . . . . . . . . . . . . . . . . . . 90 floppy . . . . . . . . . . . . . . . . . . . . . . . . . . 69 FMQ . . . . . . . . . . . . . . . . . . . . . . . . . 124 fragmentaci´on externa . . . . . . . . . . . . . . . . . 37, 76 interna . . . . . . . . . . 25, 30, 37, 76 frames . . . . . . . . . . . . . . . . . . . . . . . . . 29 full duplex . . . . . . . . . . . . . . . 127, 128 funci´on . . . . . . . . . . . . . . . . . . . . . . . 103 G GDT. . . . . . . . . . . . . . . . . . . . . . . . . .111 gesti´on . . . . . . . . . . . . . . . . . . . . . 43, 46 gestor de solicitudes . . . . . . . . . . . . 74 H half duplex. . . . . . . . . . . . . . . . . . . .127
´INDICE DE MATERIAS
152 Hansen . . . . . . . . . . . . . . . . . . . . . . . 140 hardware . . 8, 9, 13, 28, 29, 37, 38, 47–49, 99 contador . . . . . . . . . . . . . . . . . . . 48 matriz. . . . . . . . . . . . . . . . . . . . . .48 hiperpaginaci´on . . . . . . . . . . . . . . . . 51 Hoare . . . . . . . . . . . . . . . . . . . . . . . . . 140 HRN. . . . . . . . . . . . . . . . . . . . . . . . . .122 huecos . . . . . . . . . . . . . . . . . . . . . . . . . 95 peque˜ nos . . . . . . . . . . . . . . . . . . . 37 I I/O Address . . . . . . . . . . . . . . . . . . . 101 map. . . . . . . . . . . . . . . . . . . . . . .101 page . . . . . . . . . . . . . . . . . . . . . . 101 inanici´on . . . . . . . . . . . . . . . . . 121, 122 Indice de servicio . . . . . . . . . . . . . . . 28 ineficiente . . . . . . . . . . . . . . . . . . . . . . . 9 informaci´on . . . . . . . . . . . . . . . . . . . . 17 inicializaci´on . . . . . . . . . . . . . . . . . . 114 instrucciones . . . . . . . . . . . . . . . . . . . 18 Intel . . . . . . . . . . . . . . . . . . . . . . . . . . 103 ´ındice de directorio. . . . . . . . . . . . . .54 de descriptor . . . . . . . . . . . . . 60 de p´agina . . . . . . . . . . . . . . . . 54 base . . . . . . . . . . . . . . . . . . . . . . . . 54 bits de control . . . . . . . . . . . . . .55 CR3 . . . . . . . . . . . . . . . . . . . . . . . 57 descriptor p´aginas. . . . . . . . . . . . . . . . . . .55 segmento . . . . . . . . . . . . . . . . . 61 desplazamiento . . . . . . . . . . . . . 60 direcci´on f´ısica . . . . . . . . . . . . . . . . . . . . . 57 l´ogica . . . . . . . . . . . . . . . . . 54, 60 directorio de p´aginas . . . . . . . 56
fallo de p´agina . . . . . . . . . . . . . 55 GDT . . . . . . . . . . . . . . . . . . 61, 111 gesti´on de memoria . . . . . 54, 66 IDT . . . . . . . . . . . . . . . . . . . . . . .104 LDT . . . . . . . . . . . . . . . . . . . . . . . 61 memoria f´ısica . . . . . . . . . . . . . . . . . . . . . 55 virtual . . . . . . . . . . . . . . . . . . . 66 MMU . . . . . . . . . . . . . . . . . . 54, 65 modelo paginaci´on . . . . . . . . . . . . . . . 66 paginaci´on segmentada . . . 66 plano. . . . . . . . . . . . . . . . . . . . .66 segmentaci´on . . . . . . . . . . . . . 66 segmentaci´on paginada . . . 66 modo protegido . . . . . . 103, 104, 113 real . . . . . . . . . . . . . . . . 104, 113 modo de operaci´on protegido . . . . . . . . . . . . . . . . . 53 real . . . . . . . . . . . . . . . . . . . . . . 53 modos de operaci´on . . . . . . . . 53 nivel de privilegio . . . . . . . . . . 60 Paginaci´on . . . . . . . . . . . . . . . . . 54 accedido. . . . . . . . . . . . . . . . . .56 direcci´on base . . . . . . . . . . . . 56 lectura . . . . . . . . . . . . . . . . . . . 56 libres . . . . . . . . . . . . . . . . . . . . . 56 presencia . . . . . . . . . . . . . . . . . 55 sucio . . . . . . . . . . . . . . . . . . . . . 56 supervisor . . . . . . . . . . . . . . . . 56 protecci´on de memoria . . . . . 54 PTBR . . . . . . . . . . . . . . . . . . . . . 57 registros de segmento . . . . . . . 61 CS . . . . . . . . . . . . . . . . . . . . . . . 61 DS . . . . . . . . . . . . . . . . . . . . . . . 61 ES . . . . . . . . . . . . . . . . . . . . . . . 61 FS . . . . . . . . . . . . . . . . . . . . . . . 61
´INDICE DE MATERIAS GS . . . . . . . . . . . . . . . . . . . . . . . 61 SS . . . . . . . . . . . . . . . . . . . . . . . 61 rutina . . . . . . . . . . . . . . . . . . . . . . 55 Segmentaci´on . . . . . . . . . . . . . . 60 accedido. . . . . . . . . . . . . . . . . .63 ajuste de privilegio . . . . . . . 63 atributos . . . . . . . . . . . . . . . . . 62 Base . . . . . . . . . . . . . . . . . . . . . 61 c´odigo . . . . . . . . . . . . . . . . . . . . 63 clase de segmento . . . . . . . . 63 Defecto. . . . . . . . . . . . . . . . . . .62 Derechos de acceso . . . . . . . 62 desplazamiento . . . . . . . . . . . 60 escritura . . . . . . . . . . . . . . . . . 63 expansi´on decreciente. . . . .63 Grande . . . . . . . . . . . . . . . . . . . 62 granularidad . . . . . . . . . . . . . 62 indice . . . . . . . . . . . . . . . . . . . . 60 l´ımite . . . . . . . . . . . . . . . . . . . . 62 legible . . . . . . . . . . . . . . . . . . . . 63 Nivel de privilegio . . . . . . . . 63 presencia . . . . . . . . . . . . . . . . . 62 RTL . . . . . . . . . . . . . . . . . . . . . 60 segmento . . . . . . . . . . . . . . . . . 60 segmento de c´odigo . . . . . . . 63 segmento de datos . . . . . . . . 63 TI. . . . . . . . . . . . . . . . . . . . . . . .60 Tipo . . . . . . . . . . . . . . . . . . . . . 63 tipo de segmento . . . . . . . . . 63 segmento . . . . . . . . . . . . . . . . . . . 61 selectores. . . . . . . . . . . . . . . . . . .61 tabla de p´aginas . . . . . . . . 54, 56 tama˜ no . . . . . . . . . . . . . . . . . . . . 54 TSS . . . . . . . . . . . . . . . . . . . . . . . 111 interbloqueos . . . . . . . . . . . . . . . . . 143 medidas . . . . . . . . . . . . . . . . . . . 143 pol´ıticas de asignaci´on. . . . .144 recuperaci´on . . . . . . . . . . . . . . 144
153 abortar . . . . . . . . . . . . . . . . . 144 expropiar . . . . . . . . . . . . . . . 145 informar . . . . . . . . . . . . . . . . 144 interface conectar . . . . . . . . . . . . . . . . . . 100 procesador-perif´erico . . . . . . 100 interrupciones . . 101, 103, 104, 140 activaci´on . . . . . . . . . . . . . . . . . 140 IDT . . . . . . . . . . . . . . . . . . . . . . .104 inhibici´on . . . . . . . . . . . . . . . . . 140 INT . . . . . . . . . . . . . . . . . . . . . . . 103 IRQ . . . . . . . . . . . . . . . . . . . . . . .103 por hardware . . . . . . . . . 103, 114 por software. . . . . . . . . . . . . . .103 solicitud . . . . . . . . . . . . . . . . . . 104 IOP. . . . . . . . . . . . . . . . . . . . . . . . . . .101 IRQ . . . . . . . . . . . . . . . . . . . . . . . . . . 103 J JCL (Job Control Language) . . . 10 K kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 L l´ımite . . . . . . . . . . . . . . . . . . . . . . . . . . 20 superior . . . . . . . . . . . . . . . . . . . . 20 LBA . . . . . . . . . . . . . . . . 72, 82, 84, 88 direccionamiento . . . . 87, 88, 92 lenguaje alto nivel. . . . . . . . . . . . . . . . . .130 m´aquina . . . . . . . . . . . . . . . . . . 130 lenguaje de control de trabajos . 10 LIFO . . . . . . . . . . . . . . . . . . . . . . . . . . 48 LRU . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 M manejadores . . . . . . . . . . . . . . . . . . . 99 marco . . . . . . . . . . . . . . . . . . . . . . . . . . 45
154 marcos . . . . . . . . . . . . . . . . . . . . . . . . . 29 MBR . . . . . . . . . . . . . . . . . . . . . . . . . . 83 c´odigo de arranque . . . . . . . . . 83 n´ umero m´agico . . . . . . . . . . . . . 83 tabla de particiones . . . . . . . . 83 mejor ajuste . . . . . . . . . . . . . . . . . . . 76 memoria . . 3, 11, 17, 18, 20, 47, 48, 51 acceso . . . . . . . . . . . . . . . . . . . . . . 36 administraci´on . . . . . . 20, 29, 46 administrador . . . . . . . . . . . . . . 45 asignaci´on . . . . . . . . . . 20, 28, 43 asignada . . . . . . . . . . . . . . . . . . . 25 asociativa . . . . . . . . . . . . . . . . . . 35 cach´e . . . . . . . . . . . . . . . . . . . . . . .19 capacidad . . . . . . . . . . . . . . . . . . 17 clases . . . . . . . . . . . . . . . . . . . . . . 19 compartida. . . . . . . . . . . . . . . .126 desperdicio . . . . . . . . . . . . . . . . . 25 DIMM . . . . . . . . . . . . . . . . . . . . . 19 direcci´on . . . . . . . . . . . . . . . . . . . 17 direcci´on f´ısica . . . . . . . . . . . . . 18 dividir . . . . . . . . . . . . . . . . . . 22, 25 EDO-RAM . . . . . . . . . . . . . . . . . 19 escritura . . . . . . . . . . . . . . . . . . . 18 f´ısica . . . . . . . . . . . . . . . . 29, 32, 43 Flash. . . . . . . . . . . . . . . . . . . . . . .19 fragmentada. . . . . . . . . . . . . . . .28 l´ogica . . . . . . . . . . . . . . . . . . .29, 32 lectura . . . . . . . . . . . . . . . . . . . . . 18 liberar . . . . . . . . . . . . . . . . . . . . . 25 paginaci´on . . . . . . . . . . . . . . . . . 29 posici´on . . . . . . . . . . . . . . . . . . . . 18 posiciones . . . . . . . . . . . . . . . . . . 25 protecci´on . . . . . . . . . . . . . . . . . . 20 RAM . . . . . . . . . . . . . . . . . . . . . . 19 real . . . . . . . . . . . . . . . . . . . . . . . . 29 ROM . . . . . . . . . . . . . . . . . . . . . . 19
´INDICE DE MATERIAS SDRAM . . . . . . . . . . . . . . . . . . . 19 segmentaci´on . . . . . . . . . . . . . . . 37 SIMM . . . . . . . . . . . . . . . . . . . . . . 19 tiempo de acceso . . . . . . . . . . . . . 18, 34 de ciclo. . . . . . . . . . . . . . . . . . .18 TLB . . . . . . . . . . . . . . . . . . . . . . . 34 unidades . . . . . . . . . . . . . . . . . . . 18 velocidad . . . . . . . . . . . . . . . . . . . 18 virtual . . . . . . . . . . . . . . 43, 45, 46 manejador . . . . . . . . . . . . . . . .45 swap-in . . . . . . . . . . . . . . . . . . 43 swap-out . . . . . . . . . . . . . . . . . 43 zona asignada . . . . . . . . . . . . . . 20 memoria virtual . . . . . . . . . . . . 45, 46 mensaje . . . . . . . . . . . . . . . . . . . . . . . 127 monitor residente . . . . . . . . . . . . . . 10 monitores . . . . . . . . . . . . . . . . . . . . . 140 monotarea . . . . . . . . . . . . . . . . . . . . . 20 monousuario . . . . . . . . . . . . . . . . . . . 20 movimiento de p´aginas . . . . . . . . . 47 multicomputadoras. . . . . . . . . . . .114 multiprocesador . . . . . . . . . . . . . . . 114 Multiprocesamiento . . . . . . . . . . . . 13 multiprocesamiento . . . . . . . . . . . 125 Multiprogramaci´on . . . . . . . . . . . . . 11 multiprogramaci´on . . . . . . . 114, 125 N n´ ucleo . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 n´ umero m´agico . . . . . . . . . . . . . . . . . 84, 88 n´ umero de p´aginas . . . . . . . . . . . . . 47 NMI . . . . . . . . . . . . . . . . . . . . . . . . . . 103 no relocalizables. . . . . . . . . . . . . . . .28 O Off-Line . . . . . . . . . . . . . . . . . . . . . . . . 10
´INDICE DE MATERIAS On-Line . . . . . . . . . . . . . . . . . . . . . . . . 11 operaciones . . . . . . . . . . . . . . . . . . . 114 operadores . . . . . . . . . . . . . . . . . . . . . . 9 operadores / programadores . . . . . 9 orden de ejecuci´on . . . . . . . . . . . . 146 P p´aginas activas . . . . . . . . . . . . . . . . . 51 paginaci´on. . . . . . . . . . . . . . . . . .29, 40 partici´on . . . . . . . . . . . . . . . . . . . 83, 86 activa . . . . . . . . . . . . . . . . . . . . . . 84 extendida . . . . . . . . . . . . . . . . . . 89 05h . . . . . . . . . . . . . . . . . . . 89, 91 0Fh . . . . . . . . . . . . . . . . . . 89, 92 n´ umero de sectores . . . . . . . 91 l´ogica . . . . . . . . . . . . . . . . . . . . . . 89 primaria . . . . . . . . . . . . . . . . . . . 84 tama˜ no . . . . . . . . . . . . . . . . . . . . 84 particiones . . . . . . . . . . . . . . . . . . . . . 22 PCB . . . . . . . . . . . . . . . . . . . . . 110, 131 peor ajuste . . . . . . . . . . . . . . . . . . . . . 76 perif´erico . . . . . . . . . . . . . . . . . . . . . 100 conectar . . . . . . . . . . . . . . . . . . 100 PIC . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 pila . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 planificaci´on FCFS . . . . . . . . . . . . . . . . . . . . . 120 prioridad . . . . . . . . . . . . . . . . . . 122 externa . . . . . . . . . . . . . . . . . 122 interna . . . . . . . . . . . . . . . . . . 122 SJF . . . . . . . . . . . . . . . . . . . . . . . 121 SRTF . . . . . . . . . . . . . . . . . . . . . 121 planificador . . . . . . . . . . . . . . 114, 119 corto plazo . . . . . . . . . . . . . . . . 119 largo plazo . . . . . . . . . . . . . . . . 119 mediano plazo. . . . . . . . . . . . .119 procesos. . . . . . . . . . . . . . . . . . .119 swapping . . . . . . . . . . . . . . . . . . 119
155 trabajos . . . . . . . . . . . . . . . . . . . 119 pooling . . . . . . . . . . . . . . . . . . . . . . . 101 portabilidad . . . . . . . . . . . . . . . . . . . . 99 primer ajuste . . . . . . . . . . . . . . . . . . 76 primer sector . . . . . . . . . . . . . . . . . . . 83 prioridad . . . . . . . . . . . . . . . . . . 12, 122 externa . . . . . . . . . . . . . . . . . . . 122 interna . . . . . . . . . . . . . . . . . . . . 122 procesador . . . . . . 3, 13, 18, 33, 113 E/S . . . . . . . . . . . . . . . . . . . . . . . 101 procesamiento . . . . . . . . . . . . . . 18, 20 velocidad . . . . . . . . . . . . . . . . . . . 18 Procesamiento distribuido . . . . . . 12 proceso . . . . . . . . . . . . . . . . . . . . 99, 109 control . . . . . . . . . . . . . . . . . . . . 114 cancelar . . . . . . . . . . . . 114, 117 ejecuci´on . . . . . . . . . . . . . . . . 116 ejecutar . . . . . . . . . . . . . . . . . 114 reanudar . . . . . . . . . . . . . . . . 116 suspender . . . . . . . . . . . . . . . 116 estados. . . . . . . . . . . . . . . . . . . .109 ejecucici´on . . . . . . . . . . . . . . 109 espera . . . . . . . . . . . . . . . . . . . 109 listo . . . . . . . . . . . . . . . . . . . . . 109 hijo . . . . . . . . . . . . . . . . . . . . . . . 116 padre . . . . . . . . . . . . . . . . . . . . . 116 procesos. . . . . . . . . . . . . . . . . . . . . . . .12 asignaci´on de recursos . . . . . 141 interbloqueos . . . . . . . . . . . . 143 recuperaci´on . . . . . . . . . . . . 144 atomicidad . . . . . . . . . . . . . . . . 131 comunicaci´on . . . . . . . . . 125, 126 bidireccional . . . . . . . . . . . . 129 buz´on . . . . . . . . . . . . . . . . . . . 129 directa . . . . . . . . . . . . . . . . . . 127 indirecta . . . . . . . . . . . . . . . . 127 recolector de basura . . . . . 129 unidireccional . . . . . . . . . . . 129
156 concurrentes . . . . . . . . . . . . . . 135 control de acceso . . . . . . . . . . 130 atomicidad . . . . . . . . . . . . . . 135 bloqueos . . . . . . . . . . . . . . . . 137 escritor/lector . . . . . . . . . . . 137 espera activa . . . . . . . . . . . . 132 espera no activa . . . . . . . . . 132 mecanismos de hardware 140 productor/consumidor. . .135 control de flujo . . . . . . . . . . . . 145 cooperativos . . . . . . . . . . . . . . 125 despertarlo . . . . . . . . . . . . . . . . 133 dormirlo . . . . . . . . . . . . . . . . . . 132 identidad. . . . . . . . . . . . . . . . . .128 independientes . . . . . . . . . . . . 125 mensajer´ıa . . . . . . . . . . . . . . . . 126 directa . . . . . . . . . . . . . . . . . . 128 indirecta . . . . . . . . . . . . . . . . 129 monitores . . . . . . . . . . . . . . . . . 140 Mutex . . . . . . . . . . . . . . . . . . . . 135 secci´on cr´ıtica . . . . . . . . . . . . . 131 Signal . . . . . . . . . . . . . . . . 133, 135 sincronizaci´on . . . . . . . . 125, 130 asignaci´on de recursos . . . 126 control de acceso . . . . . . . . 126 control de flujo . . . . . . . . . . 126 Sleep . . . . . . . . . . . . . . . . . . . . . . 132 Wait . . . . . . . . . . . . . . . . . . . . . . 133 Wakeup . . . . . . . . . . . . . . . . . . . 133 programa . . . . . . . . . . . . . . . . 103, 109 programaci´on en paralelo . . . . . . . 13 programador . . . . . . . . . . . . . . . 20, 46 programadores . . . . . . . . . . . . . . . . . . 9 programas . . . . . . . . . . . . . . . . . . . . . 18 no relocalizables . . . . . . . . . . . . 18 relocalizables . . . . . . . . . . . . . . . 18 promedio . . . . . . . . . . . . . . . . . . . . . . .28 protegido . . . . . . . . . . . . . . . . . . . . . . 20
´INDICE DE MATERIAS punto de inicio . . . . . . . . . . . . . . . . . . . .86 final . . . . . . . . . . . . . . . . . . . . . . . . 86 Q quantum . . . . . . . . . . . . . . . . . . . . . . 123 R recurso . . . . . . . . . . . . . . . . . . . . 20, 141 apropiaci´on . . . . . . . . . . . . . . . 143 ejemplar . . . . . . . . . . . . . . . . . . 141 espera circular . . . . . . . . . . . . 143 exclusi´on mutua . . . . . . . . . . . 143 interbloqueo . . . . . . . . . . 141, 143 liberaci´on . . . . . . . . . . . . . . . . . 141 posesi´on. . . . . . . . . . . . . . . . . . .143 solicitud . . . . . . . . . . . . . . . . . . 141 utilizaci´on. . . . . . . . . . . . . . . . .141 recursos . . . . . . . . . . . . . . . . . . 109, 116 reemplazar . . . . . . . . . . . . . . . . . . . . . 47 reemplazo de p´aginas . . . . . . . 46, 50 regiones cr´ıticas . . . . . . . . . . . . . . . 140 registro . . . . . . . . . . . . . . . . 20, 33, 111 base . . . . . . . . . . . . . . . . . . . . . . . . 20 de control . . . . . . . . . . . . . . . . . 100 comando . . . . . . . . . . . . . . . . 100 datos. . . . . . . . . . . . . . . . . . . .100 estado. . . . . . . . . . . . . . . . . . .100 PTBR . . . . . . . . . . . . . . . . . . . . . 33 STBR . . . . . . . . . . . . . . . . . . . . . . 38 relocalizables . . . . . . . . . . . . . . . . . . . 28 rendimiento . . . . . . . . . . . . . . . . 20, 47 restricciones . . . . . . . . . . . . . . . . . . . . 75 RR . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 rutina . . . . . . . . . . . . 45, 99, 102, 114 S SCB . . . . . . . . . . . . . . . . . . . . . . . . . . 111 secci´on cr´ıtica . . . . . . . 131, 135, 140
´INDICE DE MATERIAS sector . . . . . . . . . . . . . . . . . . . . . . . . . . 71 sectores de arranque . . . . . . . . . . . . . . . . 83 n´ umero m´aximo . . . . . . . . . . . . 87 Secuenciador autom´atico . . . . . . . 10 segmentaci´on . . . . . . . . . . . . . . . . . . .37 paginada . . . . . . . . . . . . . . . . . . . 41 segmento . . . . . . . . . . . . . . . . . . . . . . . 45 selector . . . . . . . . . . . . . . . . . . . . . . . 111 sem´aforo . . . . . . . . . . . . . . . . . . . . . . 133 sem´aforos . . . . . . . . . . . . . . . . . . . . . 133 servicios. . . . . . . . . . . . . . . . . . . . . . . .99 servidor . . . . . . . . . . . . . . . . . . . . . . . . . 7 sesi´on . . . . . . . . . . . . . . . . . . . . . . . . . . 12 simplex . . . . . . . . . . . . . . . . . . 127, 128 simult´aneamente . . . . . . . . . . . . . . . 12 sincronizaci´on . . . . . . . . . . . . . . . . . 125 sistema . . . . . . . . . . . . . . . . . . . . . 44, 47 sistema operativo. . .3, 7, 9, 10, 20, 22, 43–45, 48, 49 estructura de dise˜ no . . . . . . . . . 7 expulsivo . . . . . . . . . . . . . . . . . . 113 monohilo . . . . . . . . . . . . . . . . . . 116 multihilo . . . . . . . . . . . . . . . . . . 116 no expulsivo . . . . . . . . . . . . . . 114 sistemas d´ebilmente acoplados . . . . . . . 12 fuertemente acoplados . . . . . . 13 monousuario . . . . . . . . . . . . . . . 13 reactivos . . . . . . . . . . . . . . . . . . . 12 SJF . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Sleep. . . . . . . . . . . . . . . . . . . . . . . . . .132 sobrecarga . . . . . . . . . . . . . . . . . . . . 124 software . . . . . . . . . . . . . . . . 20, 28, 38 spool . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Spooling . . . . . . . . . . . . . . . . . . . . . . . 11 sucio . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Swap. . . . . . . . . . . . . . . . . . . . . . . . . . .43
157 swap-in . . . . . . . . . . . . . . . . . . . . . 43, 46 swap-out. . . . . . . . . . . . . . . .43, 46, 50 T t´ecnica de envejecimiento . . . . . 122 tabla de p´aginas . . . . . . . . . . . . . . . . . 38 de segmentos . . . . . . . . . . . . . . . 38 tabla de p´aginas. . . . .30, 33, 46, 50 tabla de particiones . . . . . . . . . . . . 84 campos. . . . . . . . . . . . . . . . . . . . .85 Flag-Boot . . . . . . . . . . . . . . . . . . 85 ID-Sistema . . . . . . . . . . . . . . . . . 86 n´ umero de sectores . . . . . . . . . 86 punto de inicio . . . . . . . . . . . . . . . . . . 86 final . . . . . . . . . . . . . . . . . . . . . . 86 sectores relativos . . . . . . . . . . . 86 Tablero de conexiones . . . . . . . . . . . 9 tarea . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 tarjetas perforadas . . . . . . . . . . . . . 10 tasa de acierto . . . . . . . . . . . . . . . . . 36 terminal . . . . . . . . . . . . . . . . . . . . . . . 12 thrashing . . . . . . . . . . . . . . . . . . . . . . 51 tiempo de acceso efectivo . . . . . . . . . . 36 de espera . . . . . . . . . . . . . . . . . . . 27 de respuesta . . . . . . . . . . . . . . . . 12 de servicio. . . . . . . . . . . . . . . . . .27 del sistema . . . . . . . . . . . . . . . . . 27 real . . . . . . . . . . . . . . . . . . . . . . . . 12 Time Sharing . . . . . . . . . . . . . . . . . . 12 tipos de disco CD. . . . . . . . . . . . . . . . . . . . . . . . .70 CD-R . . . . . . . . . . . . . . . . . . . . 70 CD-ROM . . . . . . . . . . . . . . . . 70 CD-RW . . . . . . . . . . . . . . . . . . 70 disco duro . . . . . . . . . . . . . . . . . . 69
158 DVD . . . . . . . . . . . . . . . . . . . . . 70 E-IDE . . . . . . . . . . . . . . . . . . . .70 SCSI . . . . . . . . . . . . . . . . . . . . . 70 disquete . . . . . . . . . . . . . . . . . . . . 69 disquete zip . . . . . . . . . . . . . . . . 69 superdisk. . . . . . . . . . . . . . . . . . .69 TLB . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 TR . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 transparentes . . . . . . . . . . . . . . . . . . 46 TSS. . . . . . . . . . . . . . . . . . . . . . . . . . .111 U unidades de disco . . . . . . . . . . . . . . 11 usuario . . . . . . . . . . . . . . . . . . . . . 20, 46 V variante combinada . . . . . . . . . . . . . . . . . 79 enlazada . . . . . . . . . . . . . . . . . . . 78 multinivel . . . . . . . . . . . . . . . . . . 79 velocidad . . . . . . . . . . . . . . . . . . 44, 100 de respuesta . . . . . . . . . . . . . . . . 50 virus inform´aticos . . . . . . . . . . . . . . 95 W Wakeup . . . . . . . . . . . . . . . . . . . . . . . 133 Z zona de intercambio . . . . . . . . . . . . 43
´INDICE DE MATERIAS
Carlos Eduardo G´ omez Montoya Especialista en Redes de Comunicaci´on Universidad del Valle, 1999 Profesor Tiempo Completo Universidad del Quind´ıo charlie@quimbaya.uniquindio.edu.co
Juli´ an Esteban Guti´ errez Posada Ingeniero de Sistemas Universidad del Valle, 1999 Profesor Tiempo Completo Universidad del Quind´ıo jugutier@quimbaya.uniquindio.edu.co