UniversidadNacionaldelNordeste TrabajoFinaldeAplicación...

188
Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación “Desarrollo de un Entorno de Aprendizaje de Sistemas Operativos” Laura Cristina Gonzalez - L.U.: 30.470 Prof. Coordinador: Agr. Castor Herrmann Prof. Orientador: Mgter. David Luis la Red Martínez Licenciatura en Sistemas Corrientes - Argentina 2009

Transcript of UniversidadNacionaldelNordeste TrabajoFinaldeAplicación...

Page 1: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

Universidad Nacional del NordesteFacultad de Ciencias Exactas, Naturales y Agrimensura

Trabajo Final de Aplicación

“Desarrollo de un Entorno de Aprendizaje de Sistemas Operativos”

Laura Cristina Gonzalez - L.U.: 30.470

Prof. Coordinador: Agr. Castor HerrmannProf. Orientador: Mgter. David Luis la Red Martínez

Licenciatura en SistemasCorrientes - Argentina

2009

Page 2: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de
Page 3: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

A mi Familia, Amigos y Compañeros

Page 4: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de
Page 5: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

PrefacioUna de las muchas y muy variadas posibles aplicaciones de la P.O.O. (programación

orientada a objetos) está en el desarrollo de algoritmos que implementen estrategias deadministración de recursos por parte del Sistema Operativo.

Como parte de las estrategias antes mencionadas, podemos considerar las de adminis-tración o asignación del procesador, es decir aquéllas según las cuales los S. O. seleccionana cuál de los procesos listos para ser ejecutados en ejecución concurrente, le asignarán elprocesador en un momento dado, es decir, a qué proceso darán la posibilidad de utilizarla CPU para ejecutar sus propias instrucciones; a esta decisión también se la conoce comodespacho del proceso.

El concepto central de cualquier Sistema Operativo es el de proceso: una abstracciónde un programa en ejecución también llamada tarea.

En sistemas de multiprogramación la CPU alterna de programa en programa, enun esquema de seudoparalelismo, es decir que la cpu ejecuta en cierto instante un soloprograma, intercambiando muy rápidamente entre uno y otro.

El paralelismo real de hardware se da en las siguientes situaciones:

• En ejecución de instrucciones de programa con más de un procesador de instruccionesen uso simultáneamente.

• Con la superposición de ejecución de instrucciones de programa con la ejecución deuna o más operaciones de entrada / salida.

El objetivo es aumentar el paralelismo en la ejecución.El modelo de procesos posee las siguientes características:

• Todo el software ejecutable, inclusive el Sistema Operativo, se organiza en variosprocesos secuenciales o procesos.

• Un proceso incluye al programa en ejecución y a los valores activos del contador,registros y variables del mismo.

• Conceptualmente cada proceso tiene su propia CPU virtual.

• Si la CPU alterna entre los procesos, la velocidad a la que ejecuta un proceso noserá uniforme.

• Un proceso es una actividad de un cierto tipo, que tiene un programa, entrada, saliday estado.

• Un solo procesador puede ser compartido entre varios procesos con cierto algoritmode planificación, el cual determina cuándo detener el trabajo en un proceso y darservicio a otro distinto.

En cuanto a las jerarquías de procesos es necesario señalar que los Sistemas Opera-tivos deben disponer de una forma de crear y destruir procesos cuando se requiera durantela operación, teniendo además presente que los procesos pueden generar procesos hijosmediante llamadas al Sistema Operativo, pudiendo darse ejecución en paralelo.

Respecto de los estados del proceso deben efectuarse las siguientes consideraciones:

Page 6: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

vi

• Cada proceso es una entidad independiente pero frecuentemente debe interactuarcon otros procesos.

• Los procesos pueden bloquearse en su ejecución porque:

— Desde el punto de vista lógico no puede continuar porque espera datos que aúnno están disponibles.

— El Sistema Operativo asignó la CPU a otro proceso.

Los estados que puede tener un proceso son 3:

• En ejecución: utiliza la CPU en el instante dado.

• Listo: ejecutable, se detiene en forma temporal para que se ejecute otro proceso.

• Bloqueado: no se puede ejecutar debido a la ocurrencia de algún evento externo.

Son posibles cuatro transiciones entre estos estados.Estados de ProcesosDurante su existencia un proceso pasa por una serie de estados discretos, siendo varias

las circunstancias que pueden hacer que el mismo cambie de estado.Debido a ello se puede establecer una Lista de Listos para los procesos listos y una

Lista de Bloqueados para los bloqueados.La Lista de Listos se mantiene en orden prioritario y la Lista de Bloqueados está

desordenada, ya que los procesos se desbloquean en el orden en que tienen lugar loseventos que están esperando.

Al admitirse un trabajo en el sistema se crea un proceso equivalente y es insertado enla última parte de la Lista de Listos.

La asignación de la CPU al primer proceso de la Lista de Listos se denomina Despacho,que es ejecutado por una entidad del Sistema Operativo llamada Despachador.

El Bloqueo es la única transición de estado iniciada por el propio proceso del usuario,puesto que las otras transiciones son iniciadas por entidades ajenas al proceso.

Los sistemas que administran los procesos deben poder crear, destruir, suspender,reanudar, cambiar la prioridad, bloquear, despertar y despachar un proceso.

La creación de un proceso significa:

• Dar nombre al proceso.

• Insertar un proceso en la lista del sistema de procesos conocidos.

• Determinar la prioridad inicial del proceso.

• Crear el bloque de control del proceso.

• Asignar los recursos iniciales del proceso.

Un proceso puede crear un nuevo proceso, en cuyo caso el proceso creador se denominaproceso padre y el proceso creado proceso hijo y se obtiene una estructura jerárquica deprocesos.

La destrucción de un proceso implica:

Page 7: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

vii

• Borrarlo del sistema.

• Devolver sus recursos al sistema.

• Purgarlo de todas las listas o tablas del sistema.

• Borrar su bloque de control de procesos.

Un proceso suspendido no puede proseguir hasta que otro proceso lo reanude.Reanudar (reactivar) un proceso implica reiniciarlo en el punto donde fue suspendido.La destrucción de un proceso puede o no significar la destrucción de los procesos hijos,

según el Sistema Operativo.Generalmente se denomina Tabla de Procesos al conjunto de información de control

sobre los distintos procesos.Una interrupción es un evento que altera la secuencia en que el procesador ejecuta las

instrucciones; es un hecho generado por el hardware del computador.Cuando ocurre una interrupción, el Sistema Operativo:

• Obtiene el control.

• Salva el estado del proceso interrumpido, generalmente en su bloque de control deprocesos.

• Analiza la interrupción.

• Transfiere el control a la rutina apropiada para la manipulación de la interrupción.

Una interrupción puede ser iniciada por un proceso en estado de ejecución o por unevento que puede o no estar relacionado con un proceso en ejecución.

Generalmente las interrupciones se pueden clasificar en los siguientes tipos:

• SVC (llamada al supervisor): es una petición generada por el usuario para un servicioparticular del sistema.

• Entrada/Salida: son iniciadas por el hardware de Entrada / Salida.

• Externas: son causadas por distintos eventos, por ejemplo, expiración de un cuantoen un reloj de interrupción o recepción de una señal de otro procesador en un sistemamultiprocesador.

• De reinicio: ocurren al presionar la tecla de reinicio o cuando llega una instrucciónde reinicio de otro procesador en un sistema multiprocesador.

• De verificación de programa: son causadas por errores producidos durante la ejecu-ción de procesos.

Concurrencia e Hilos con JavaLos hilos o procesos ligeros son una parte de código o miniprograma que puede ser

ejecutada independientemente, de forma que una aplicación o un applet puede tener varios

Page 8: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

viii

hilos ejecutándose simultáneamente y efectuando distintas tareas; estos hilos se encuentrandentro de un programa y son parte de él.

Los hilos, a veces también llamados contextos de ejecución, pueden ser utilizados parala implementación de algoritmos paralelos o procesos concurrentes, sin ser necesario dis-poner de equipos con estructura de multiprocesador. En el caso de un solo procesador,los procesos ligeros incorporan mecanismos para compartirlo, estableciéndose prioridadesentre ellos y también facilidades de sincronización, cuando es necesario.

Objetivos logradosSe han alcanzado los objetivos planteados para el presente trabajo:

• Desarrollo de una página Web empleando para la confeccion de la misma softwareDreamweaver .

• Desarrollo de Applets empleandoel lenguaje Java y el Netbeans IDe 6.7.1.

Etapas de desarrolloSe ha efectuado una amplia recopilación bibliográfica específica a los temas pertinentes

a la tarea planificada y a los productos de software que se emplearon para la concrecióndel trabajo final.

Se ha desarrollado el aplicativo con la utilización del lenguaje Java, versión jdk1.5.0-15.En el marco de la herramienta Dreamweaver CS3 se desarrollaron la página web del

aplicativo utilizadando páginas HTML.En el marco de la herramienta Netbeans IDE 6.7.1 se desarrollaron los Applets utili-

zadandos en la página web del aplicativo.Generacion del ejecutable del Sistema desarrollado por el Profesor Orientador Mgter.

David Luis la Red Martinez, Concurrencia e Hilos en javaUna vez finalizada la etapa de desarrollo se realizaron las siguientes actividades:

• Montar la página web en un servidor.

• Testear el buen funcionamiento de la página y de los algoritmos desarrollados.

Finalizada la aplicación se realizó la grabación en DVD de todo el material corres-pondiente al trabajo final: una versión de la aplicación, otra referente al libro en formatoLaTex y el PDF generado. También se incluyó los instaladores de los productos utilizadospara el desarrollo, es decir Netbeans IDE 6.7.1, Dreamweaver CS3,java 6.0 update 11.

• Organización del Informe Final

El trabajo final de aplicación comprende un informe final impreso y un DVD ademásde un resúmen y de un resúmen extendido. El informe final está organizado en capítuloslos que se indican a continuación:

Introducción: Es un breve marco teórico sobre los Sistemas operativos:

• Conceptos S.O., estructuras S.O., tendencias S.O.

• Definiciones de procesos, estados y planificacion de procesos, niveles de planificacion,etc.

Page 9: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

ix

Java: Se presentan los principales aspectos y características referidas al lenguaje.Heramientas Utilizadas: Se detallan las características más utilizadas tanto en

Netbeans IDE 6.7.1 y Dreamweaver CS3.Descripción de la aplicación: Se describen todos los aspectos de la aplicación

desarrollada utilizando las herramientas antes mencionadas.Conclusiones: Se presentan las conclusiones a las que se ha llegado al finalizar el

presente trabajo.

El DVD adjunto al informe final impreso, contiene lo siguiente:

• Instaladores del software utilizado.

• Resúmenes del trabajo realizado.

• Informe final en formato digital.

• Presentación para la defensa final.

• Aplicación desarrollada.

Laura Cristina GonzalezLicenciatura en Sistemas

Universidad Nacional del NordesteCorrientes; 15 de Diciembre de 2009

Page 10: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

x

Page 11: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

Índice General

1 Introducción 11.1 Qué es un Sistema Operativo . . . . . . . . . . . . . . . . . . . . . 11.2 Historia de los Sistemas Operativos - Generaciones . . . . . . . . . . . . . . 31.3 Conceptos de los Sistemas Operativos . . . . . . . . . . . . . . . 61.4 Estructura de los Sistemas Operativos . . . . . . . . . . . . . . . 81.5 Tendencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121.6 Definiciones Sobre Procesos . . . . . . . . . . . . . . . . . . . . . . . . . . . 141.7 Estados de Procesos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171.8 El Núcleo del Sistema Operativo . . . . . . . . . . . . . . . . . . . . . . . . 181.9 Planificación de Procesos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191.10 Niveles de Planificación del Procesador . . . . . . . . . . . . . . . . . . . . . 201.11 Objetivos de la Planificación . . . . . . . . . . . . . . . . . . . . . . . . . . 211.12 Conceptos Básicos de Almacenamiento Virtual . . . . . . . . . . . . . . . . 231.13 Organización del Almacenamiento de Niveles Múltiples . . . . . . . . . . . . 241.14 Sistemas de Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251.15 Funciones del Sistema de Archivos . . . . . . . . . . . . . . . . . . . . . . . 271.16 El Sistema de Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281.17 Entrada / Salida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291.18 Algoritmos de Programación del Brazo del Disco . . . . . . . . . . . . . . . 29

2 Fundamentos Teóricos 332.1 Procesos y Administración del Procesador . . . . . . . . . . . . . . . . . . . 33

2.1.1 Criterios de Planificación . . . . . . . . . . . . . . . . . . . . . . . . 332.2 Planificación Apropiativa Versus No Apropiativa . . . . . . . . . . . . . . . 342.3 Temporizador de Intervalos o Reloj de Interrupción . . . . . . . . . . . . . . 352.4 Prioridades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352.5 Tipos de Planificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

2.5.1 Planificación a Plazo Fijo . . . . . . . . . . . . . . . . . . . . . . . . 362.5.2 Planificación Garantizada . . . . . . . . . . . . . . . . . . . . . . . . 372.5.3 Planificación del Primero en Entrar Primero en Salir (FIFO) . . . . 372.5.4 Planificación de Asignación en Rueda (RR: Round Robin) . . . . . . 372.5.5 Tamaño del Cuanto o Quantum . . . . . . . . . . . . . . . . . . . . . 382.5.6 Planificación del Trabajo Más Corto Primero (SJF) . . . . . . . . . 382.5.7 Planificación del Tiempo Restante Más Corto (SRT) . . . . . . . . . 392.5.8 Tiene mayor sobrecarga que la planificación SJF. . . . . . . . . . . . 39

xi

Page 12: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

xii ÍNDICE GENERAL

2.5.9 Planificación el Siguiente con Relación de Respuesta Máxima HRN . 392.5.10 Planificación por Prioridad . . . . . . . . . . . . . . . . . . . . . . . 392.5.11 Colas de Retroalimentación de Niveles Múltiples . . . . . . . . . . . 402.5.12 Política Versus Mecanismo de Planificación . . . . . . . . . . . . . . 412.5.13 Planificación de Dos Niveles . . . . . . . . . . . . . . . . . . . . . . . 41

2.6 Estrategias de Administración del Almacenamiento Virtual . . . . . . . . . 432.6.1 Estrategias de Reposición de Página . . . . . . . . . . . . . . . . . . 442.6.2 El Principio de Optimización . . . . . . . . . . . . . . . . . . . . . . 442.6.3 Reposición de Página al Azar . . . . . . . . . . . . . . . . . . . . . . 442.6.4 Reposición de Página por el Sistema de Primero en Entrar - Primero

en Salir (FIFO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452.6.5 Reposición de Página Menos - Recientemente - Usada (LRU) . . . . 452.6.6 Reposición de Página Menos - Frecuentemente - Usada (LFU) . . . 462.6.7 Reposición de Página No Usada - Recientemente (NUR) . . . . . . . 462.6.8 Localidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472.6.9 Conjuntos de Trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . 48

2.7 Paginación por Demanda y Paginación Anticipada . . . . . . . . . . . . . . 512.7.1 Paginación por Demanda . . . . . . . . . . . . . . . . . . . . . . . . 512.7.2 Paginación Anticipada . . . . . . . . . . . . . . . . . . . . . . . . . . 512.7.3 Tamaño de Página . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512.7.4 Comportamiento de un Programa en la Paginación . . . . . . . . . . 53

2.8 Porqué es Necesaria la Planificación de Discos . . . . . . . . . . . . . . . . . 532.8.1 Características Deseables de las Políticas de Planificación de Discos 55

2.9 Algoritmos de Programación del Brazo del Disco . . . . . . . . . . . . . . . 562.10 Optimización de la Búsqueda en Discos . . . . . . . . . . . . . . . . . . . . 59

2.10.1 Planificación FCFS (Primero en Llegar, Primero en Ser Servido) . . 592.10.2 Planificación SSTF (Menor Tiempo de Búsqueda Primero) . . . . . 592.10.3 Planificación SCAN . . . . . . . . . . . . . . . . . . . . . . . . . . . 602.10.4 Planificación SCAN de N - Pasos . . . . . . . . . . . . . . . . . . . . 602.10.5 Planificación C - SCAN (Búsqueda Circular) . . . . . . . . . . . . . 602.10.6 Esquema Eschenbach . . . . . . . . . . . . . . . . . . . . . . . . . . . 602.10.7 Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

2.11 Optimización Rotacional en Discos . . . . . . . . . . . . . . . . . . . . . . . 612.12 Consideraciones de los Discos Sobre los Sistemas . . . . . . . . . . . . . . . 612.13 Manejo de Errores en Discos . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

2.13.1 Ocultamiento de Una Pista a la Vez en Discos . . . . . . . . . . . . 632.14 Discos en RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642.15 Relojes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642.16 Terminales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652.17 Procesos y Procesadores en Sistemas Distribuidos . . . . . . . . . . . . . . . 672.18 Introducción a los Hilos (Threads) . . . . . . . . . . . . . . . . . . . . . . . 67

2.18.1 Uso de Hilos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682.18.2 Aspectos del Diseño de un Paquete de Hilos . . . . . . . . . . . . . . 69

2.19 Implantación de un Paquete de Hilos . . . . . . . . . . . . . . . . . . . . . . 702.20 Hilos y RPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

Page 13: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

ÍNDICE GENERAL xiii

3 JAVA 733.1 Introducción al Lenguaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

3.1.1 Bibliotecas de Clases Estándares de Java . . . . . . . . . . . . . . . 743.1.2 Java es Multiplataforma . . . . . . . . . . . . . . . . . . . . . . . . . 743.1.3 Características del Lenguaje Java . . . . . . . . . . . . . . . . . . . . 75

3.2 Estructura General de un Programa Java . . . . . . . . . . . . . . . . . . . 763.3 Conceptos Básicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

3.3.1 Clase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 773.3.2 Herencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

3.3.3 Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 783.3.4 Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

3.3.5 La Jerarquía de Clases de Java (API) . . . . . . . . . . . . . . . . . 793.4 Variables Dentro del Lenguaje Java . . . . . . . . . . . . . . . . . . . . . . . 79

3.4.1 Visibilidad y Vida de las Variables . . . . . . . . . . . . . . . . . . . 813.5 Operadores en Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

3.5.1 Operadores Aritméticos . . . . . . . . . . . . . . . . . . . . . . . . . 823.5.2 Operadores de Asignación . . . . . . . . . . . . . . . . . . . . . . . . 823.5.3 Operadores Unarios . . . . . . . . . . . . . . . . . . . . . . . . . . . 823.5.4 Operadores Incrementales . . . . . . . . . . . . . . . . . . . . . . . . 833.5.5 Operadores Relacionales . . . . . . . . . . . . . . . . . . . . . . . . . 833.5.6 Operador de Concatenación de Cadenas de Caracteres (+) . . . . . 843.5.7 Precedencia de Operadores . . . . . . . . . . . . . . . . . . . . . . . 84

3.6 Estructuras de Programación . . . . . . . . . . . . . . . . . . . . . . . . . . 853.6.1 Sentencias o Expresiones . . . . . . . . . . . . . . . . . . . . . . . . . 853.6.2 Comentarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863.6.3 Bifurcaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863.6.4 Bucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

3.7 Clases en Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 893.7.1 Características Importantes de las Clases . . . . . . . . . . . . . . . 90

3.7.2 Métodos o Funciones Miembros . . . . . . . . . . . . . . . . . . . . . 903.8 Algunas Clases de Utilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

3.8.1 Clase Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 923.8.2 Clases String y StringBuffer . . . . . . . . . . . . . . . . . . . . . . . 933.8.3 Clase Double . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933.8.4 Clase Integer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

3.9 El AWT (Abstract Windows Toolkit) . . . . . . . . . . . . . . . . . . . . . . 943.9.1 Qué es el AWT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 943.9.2 Creación de una Interface Gráfica de Usuario . . . . . . . . . . . . . 943.9.3 Objetos “event source” y Objetos “event listener” . . . . . . . . . . 953.9.4 Proceso a Seguir Para Crear Una Aplicación Interactiva (Orientada

a Eventos) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 953.10 Errores Frecuentes de Programación . . . . . . . . . . . . . . . . . . . . . . 96

3.10.1 Scheduling de Hilos de Ejecución . . . . . . . . . . . . . . . . . . . . 963.10.2 Errores en el Uso de las Características de Portabilidad de Java . . . 973.10.3 Uso de Directorios Definidos . . . . . . . . . . . . . . . . . . . . . . 98

Page 14: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

xiv ÍNDICE GENERAL

3.10.4 Carga de Drivers JDBC . . . . . . . . . . . . . . . . . . . . . . . . . 1003.10.5 Terminación de Líneas . . . . . . . . . . . . . . . . . . . . . . . . . . 1003.10.6 Entrada/Salida por Archivo . . . . . . . . . . . . . . . . . . . . . . . 1013.10.7 Fuentes de Caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . 101

3.11 APPLETS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1013.12 QUÉ ES UN APPLET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

3.12.1 Algunas características de las applets . . . . . . . . . . . . . . . . . 1023.12.2 Métodos que controlan la ejecución de un applet . . . . . . . . . . . 1033.12.3 Métodos para dibujar el applet . . . . . . . . . . . . . . . . . . . . . 104

3.13 CÓMO INCLUIR UN APPLET EN UNA PÁGINA HTML . . . . . . . . . 1043.14 PASO DE PARÁMETROS A UN APPLET . . . . . . . . . . . . . . . . . . 1053.15 CARGA DE APPLETS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

3.15.1 Localización de ficheros . . . . . . . . . . . . . . . . . . . . . . . . . 1053.15.2 Archivos JAR (Java Archives) . . . . . . . . . . . . . . . . . . . . . 105

3.16 APPLETS QUE TAMBIÉN SON APLICACIONES . . . . . . . . . . . . . 106

4 Herramientas utilizadas 109

4.1 Netbeans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1094.1.1 La Plataforma NetBeans . . . . . . . . . . . . . . . . . . . . . . . . . 109

4.2 NetBeans IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1104.3 Creación de proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1104.4 Creación de un Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1124.5 Creación del applet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1124.6 Creación de la página HTML . . . . . . . . . . . . . . . . . . . . . . . . . . 1154.7 Ejecución de un Applets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1164.8 Como crear un archivo jar con Netbeans . . . . . . . . . . . . . . . . . . . . 1164.9 Adobe Dreamweaver CS3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

4.9.1 Qué es Dreamweaver CS3? . . . . . . . . . . . . . . . . . . . . . . . 1224.9.2 Novedades de Dreamweaver CS3 . . . . . . . . . . . . . . . . . . . . 122

4.10 Entorno de trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1254.10.1 Pantalla Principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1254.10.2 La barra de título . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1254.10.3 La barra de menús . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1274.10.4 La barra de herramientas estándar . . . . . . . . . . . . . . . . . . . 1274.10.5 La barra de herramientas de documento . . . . . . . . . . . . . . . . 1274.10.6 La barra de estado . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1274.10.7 Los paneles e inspectores . . . . . . . . . . . . . . . . . . . . . . . . 1284.10.8 El inspector de Propiedades . . . . . . . . . . . . . . . . . . . . . . . 1284.10.9 La barra de herramientas Insertar o panel de objetos . . . . . . . . . 1284.10.10Vistas de un documento . . . . . . . . . . . . . . . . . . . . . . . . . 1284.10.11La vista de Diseño . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

4.10.12La vista código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1304.10.13La vista Código y Diseño . . . . . . . . . . . . . . . . . . . . . . . . 130

4.11 Como crear un página HTML con Dreamweaver CS3 . . . . . . . . . . . . . 1334.11.1 Propiedades de la página. . . . . . . . . . . . . . . . . . . . . . . . . 1344.11.2 Insertar una imagen con Dreamweaver . . . . . . . . . . . . . . . . . 135

Page 15: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

ÍNDICE GENERAL xv

4.11.3 Insertar un Vinculo . . . . . . . . . . . . . . . . . . . . . . . . . . . 1354.11.4 Vista previa del HTML . . . . . . . . . . . . . . . . . . . . . . . . . 137

5 Algoritmos de Planificación del Procesador 1435.1 Como montar la página web al servidor . . . . . . . . . . . . . . . . . . . . 145

6 Conclusión 159

Bibliografía 161

Índice de Materias 163

Page 16: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de
Page 17: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

Índice de Figuras

1.1 Recursos administrados por el S. O. . . . . . . . . . . . . . . . . . . . . . . 41.2 Modelo de estructura simple para un sistema monolítico. . . . . . . . . . . . 91.3 Forma de llamada al sistema en un sistema monolítico. . . . . . . . . . . . . 91.4 La estructura de VM/370 con CMS. . . . . . . . . . . . . . . . . . . . . . . 121.5 El modelo cliente - servidor. . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.6 El modelo cliente - servidor en un sistema distribuido. . . . . . . . . . . . . 131.7 Multiprogramación de cuatro programas. . . . . . . . . . . . . . . . . . . . 161.8 Solo un programa está activo en un momento dado. . . . . . . . . . . . . . 161.9 Un proceso puede estar en ejecución, bloqueado o listo. . . . . . . . . . . . 171.10 Niveles de planificación del procesador. . . . . . . . . . . . . . . . . . . . . . 211.11 Transformación de ítems del espacio de direcciones virtuales al espacio de

direcciones reales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241.12 Contigüidad artificial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251.13 Almacenamiento de dos niveles. . . . . . . . . . . . . . . . . . . . . . . . . . 26

2.1 Tipos de planificación del procesador . . . . . . . . . . . . . . . . . . . . . . 422.2 Ejemplo de anomalía de FIFO. . . . . . . . . . . . . . . . . . . . . . . . . . 452.3 Fenómeno de localidad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492.4 Una definición del conjunto de trabajo de páginas de un proceso. . . . . . . 502.5 Tamaño del conjunto de trabajo como una función del tamaño de la ventana. 502.6 Producto espacio - tiempo con paginación por demanda. . . . . . . . . . . . 522.7 Comportamiento de un programa en la paginación. . . . . . . . . . . . . . . 54

3.1 Jerarquia de Clases de Applets . . . . . . . . . . . . . . . . . . . . . . . . . 102

4.1 Nuevo proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1114.2 Nuevo proyecto paso 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1114.3 Nuevo proyecto paso 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1124.4 Creando un paquete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1134.5 Creacion de paquete paso 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1144.6 Creacion del applet paso 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1154.7 Creacion del applets paso 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1164.8 Creaccion de applet paso 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1174.9 Creacion del HTML paso 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1184.10 Creacion del HTML paso 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1194.11 Creacion del HTML paso 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1194.12 Ejecutar un Applet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

xvii

Page 18: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

xviii ÍNDICE DE FIGURAS

4.13 Visualizando el applet en el appletviewer . . . . . . . . . . . . . . . . . . . . 1204.14 Propiedades de un proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . 1214.15 Propiedades del Proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1224.16 Generar un archivo jar-Clean and Build . . . . . . . . . . . . . . . . . . . . 1234.17 Outup del proyecto al generar el archivo jar . . . . . . . . . . . . . . . . . . 1234.18 Proyecto - dist -Hilos.jar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1244.19 Pantalla principal del Dreamweaver Cs3 . . . . . . . . . . . . . . . . . . . . 1264.20 Barra de menues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1274.21 Barra de Herramientas estándart . . . . . . . . . . . . . . . . . . . . . . . . 1274.22 Barra de herramienta del documento . . . . . . . . . . . . . . . . . . . . . . 1274.23 Barra de Estado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1284.24 Panel de inspector de propiedades . . . . . . . . . . . . . . . . . . . . . . . 1284.25 Barra de herramientas Insertar o Panel de objetos . . . . . . . . . . . . . . 1294.26 Barra de herramienta del documento . . . . . . . . . . . . . . . . . . . . . . 1294.27 Vista de Diseño Dreamweaver . . . . . . . . . . . . . . . . . . . . . . . . . . 1304.28 Vista de código en Dreamweaver . . . . . . . . . . . . . . . . . . . . . . . . 1314.29 Vista de diseño y codigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1324.30 Nuevo Documento HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1334.31 Ventana de Bienvenida del Dramweaver . . . . . . . . . . . . . . . . . . . . 1344.32 Documento Html sin titulo. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1354.33 Ventana de Guardar Como. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1364.34 Propiedades de la página HTML . . . . . . . . . . . . . . . . . . . . . . . . 1374.35 Configuración de las propiedades de la página . . . . . . . . . . . . . . . . . 1374.36 Paleta de Colores de Fondo del la página . . . . . . . . . . . . . . . . . . . . 1384.37 Tamaño y tipo de fuente de la página . . . . . . . . . . . . . . . . . . . . . 1384.38 Insertar -Barra de herramientas . . . . . . . . . . . . . . . . . . . . . . . . . 1394.39 Insertar una imagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1394.40 Insertar un Hyperlink desde el menu. . . . . . . . . . . . . . . . . . . . . . . 1404.41 Configuracion Hyperlik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1404.42 Seleccionar archivo para el enlace . . . . . . . . . . . . . . . . . . . . . . . . 141

5.1 Barra de dirección del navegador . . . . . . . . . . . . . . . . . . . . . . . . 1435.2 Página Principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1445.3 Botón de Algortimo de Planificacion de Procesos . . . . . . . . . . . . . . . 1445.4 Página de los Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1455.5 Algoritmo de Planificacion F.I.F.O. . . . . . . . . . . . . . . . . . . . . . . . 1465.6 Cuadro de entrada de cantidad de procesos . . . . . . . . . . . . . . . . . . 1465.7 Cuadro de entrada del tiempo de los procesos. . . . . . . . . . . . . . . . . . 1475.8 Resultado del Algoritmo Fifo . . . . . . . . . . . . . . . . . . . . . . . . . . 1475.9 Botón Hilos de Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1485.10 Página de Hilos de java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1485.11 Abriendo ejecutable de Hilos en Java . . . . . . . . . . . . . . . . . . . . . . 1495.12 Cuadro de Dialogo con navegador Explorer . . . . . . . . . . . . . . . . . . 1495.13 Cuadro Guardar Como . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1505.14 Ventana principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1505.15 Menú Configuración y Ejecución ->Datos de Configuración. . . . . . . . . . 151

Page 19: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

ÍNDICE DE FIGURAS xix

5.16 Ventana de Configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1515.17 Ventana de Carga de Datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1525.18 Menú Configuración y Ejecución -> Ejecución Concurrente e Hilos . . . . . 1525.19 Ventana Realizar Ejecución Concurrente e Hilos. . . . . . . . . . . . . . . . 1535.20 Ventana Lista de Resultados de Ejecución Concurrente e Hilos. . . . . . . . 1545.21 Ventana Principal-Menú Salir . . . . . . . . . . . . . . . . . . . . . . . . . . 1545.22 Ventana Principal Tunnelier . . . . . . . . . . . . . . . . . . . . . . . . . . . 1555.23 Cuadro de Verificacin del HOST . . . . . . . . . . . . . . . . . . . . . . . . 1565.24 Ventana de Local File y Remote File . . . . . . . . . . . . . . . . . . . . . . 1565.25 Ventana Local File y Remote File pasando los archivos. . . . . . . . . . . . 157

Page 20: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de
Page 21: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

Índice de Tablas

1.1 Estructura del S.O. en capas “THE”. . . . . . . . . . . . . . . . . . . . . . . 101.2 Criterios de un buen algoritmo de planificación. . . . . . . . . . . . . . . . . 20

2.1 Criterios de un buen algoritmo de planificación. . . . . . . . . . . . . . . . . 342.2 Tipos de prioridades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

3.1 Tipos de Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803.2 Categorías de Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813.3 Tipos Primitivos de Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . 813.4 Operadores de asignación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833.5 Operadores relacionales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843.6 Precedencia de Operadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

xxi

Page 22: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de
Page 23: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

Capítulo 1

Introducción

1.1 Qué es un Sistema Operativo

Una de las definiciones más comúnmente aceptadas expresa:

• “Un S. O. es un grupo de programas de proceso con las rutinas de controlnecesarias para mantener continuamente operativos dichos programas”.

El objetivo primario de un Sistema Operativo es [5, la Red Martinez]:

• Optimizar todos los rcursos del sistemapara soportar los requerimientos.

A los efectos de situar a los S. O. en el conjunto del software para computadoras,podemos clasificar a este de la siguiente manera:

• Programas de sistema:

— Controlan la operación de la computadora en sí.

• Programas de aplicación:

— Resuelven problemas para los usuarios.

En este contexto, el Sistema Operativo es el programa fundamental de todos los pro-gramas de sistema.

El S. O. protege y libera a los programadores de la complejidad del hardware, colo-cándose un nivel de software por sobre el hardware para:

• Controlar todas las partes del sistema.

• Presentar al usuario una interfaz o maquina virtual .

El esquema típico de un sistema de cómputos incluye:

• Programas de aplicación:

1

Page 24: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

2 CAPÍTULO 1. INTRODUCCIÓN

— Sistema bancario, reservaciones en una línea aérea, juegos, etc.

• Programas de sistema:

— Compiladores, editores, intérpretes de comandos.

— Sistema Operativo.

• Hardware:

— Lenguaje de máquina.

— Microprogramación.

— Dispositivos físicos

Las principales características del microprograma son:

• Se trata de software que generalmente se localiza en la memoria de solo lectura.

• Busca las instrucciones de lenguaje de máquina para ejecutarlas como una serie depequeños pasos.

• El conjunto de instrucciones que interpreta define al lenguaje de máquina.

• En ciertas máquinas se implanta en el hardware y no es en realidad una capa distinta.

Respecto del lenguaje de máquina es preciso señalar que:

• Generalmente posee entre 50 y 300 instrucciones, sirviendo la mayoría para desplazardatos, hacer operaciones aritméticas y comparar valores.

• Los dispositivos de e / s (entrada / salida) se controlan al cargar valores en registrosdel dispositivo especiales.

Una de las principales funciones del S. O. es ocultar toda esta complejidad ybrindar al programador un conjunto mas conveniente de instrucciones para trabajar.

El S. O. se ejecuta en modo central o modo de supervisión, con máxima prioridad ygeneralmente con protección por hardware.

Los compiladores, editores y demás programas se ejecutan en modo usuario.El S. O. es la serie de programas, dispuestos ya sea en el software o en la memoria fija

(microcódigo), que hacen al hardware utilizable.Los S. O. ponen el “poder computacional básico” del hardware convenientemente a

disposición del usuario, pero consumen parte de ese poder computacional para funcionar[4, Deitel].

Los S. O. son, en primer lugar, administradores de recursos, siendo el recursoprimario el hardware del sistema.1

Las principales características de los S. O. son:

• Definir la “Interfaz del Usuario”.1Ver Figura 1.1 de la página 4.

Page 25: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

1.2. HISTORIA DE LOS SISTEMAS OPERATIVOS - GENERACIONES 3

• Compartir el hardware entre usuarios.

• Permitir a los usuarios compartir los datos entre ellos.

• Planificar recursos entre usuarios.

• Facilitar la entrada / salida.

• Recuperarse de los errores.

Los principales recursos administrados por los S. O. son:

• Procesadores.

• Almacenamiento.

• Dispositivos de e / s.

• Datos.

Los S. O. son una interfaz con:

• Operadores.

• Programadores de aplicaciones.

• Programadores de sistemas (administradores del S. O.).

• Programas.

• Hardware.

• Usuarios.

El S. O. debe presentar al usuario el equivalente de unamáquina extendida o máqui-na virtual que sea mas fácil de programar que el hardware subyacente.

1.2 Historia de los Sistemas Operativos - Generaciones

Los S. O. han estado relacionados históricamente con la arquitectura de las computadorasen las cuales se ejecutan, razón por la cual su historia puede analizarse según las siguientesgeneraciones y sus principales características [4, Deitel]:

• Generación Cero (década de 1940):

— Carencia total de S. O.

— Completo acceso al lenguaje de máquina.

• Primera generación (1945-1955): bulbos y conexiones:

— Carencia de S. O.

Page 26: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

4 CAPÍTULO 1. INTRODUCCIÓN

Figura 1.1: Recursos administrados por el S. O.

Page 27: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

1.2. HISTORIA DE LOS SISTEMAS OPERATIVOS - GENERACIONES 5

— En los años cincuenta comienzan como transición entre trabajos, haciendo lamisma más simple.

• Segunda generación (1955-1965): transistores y sistemas de procesamiento por lotes(batch):

— En los años sesenta aparecen los S. O. para sistemas compartidos con:

∗ Multiprogramación: varios programas de usuarios se encuentran al mis-mo tiempo en el almacenamiento principal, cambiando el procesador rápi-damente de un trabajo a otro.

∗ Multiprocesamiento: varios procesadores se utilizan en un mismo siste-ma para incrementar el poder de procesamiento.

— Posteriormente aparece la independencia de dispositivo:

∗ El programa del usuario especifica las características de los dispositivos querequieren los archivos.

∗ El S. O. asigna los dispositivos correspondientes según los requerimientosy las disponibilidades.

• Tercera generación (1965-1980): circuitos integrados y multiprogramación:

— Difusión de la multiprogramación:

∗ Partición de la memoria en porciones, con trabajos distintos en cada unade ellas.

∗ Aprovechamiento del tiempo de espera consecuencia de operaciones de e /s, para utilizar la CPU para otros procesos.

— Protección por hardware del contenido de cada partición de memoria.

— Aparición de técnicas de spooling:

∗ Simultaneous Peripheral Operation On Line: operación simultánea y enlínea de periféricos.

∗ Almacenamiento de trabajos de entrada y de salida en dispositivos tran-sitorios rápidos (discos), para disminuir el impacto de los periféricos maslentos.

— Son sistemas de modos múltiples, es decir que deben soportar sistemasde propósitos generales; son grandes y complejos pero muy poderosos.

— Interponen una capa de software entre el usuario y el hardware.

— Aparecen los lenguajes de control de trabajos, necesarios para especificarel trabajo y los recursos requeridos.

— Soportan timesharing (tiempo compartido), variante de la multiprogra-mación con usuarios conectados mediante terminales en línea, permitiendo laoperación en modo interactivo o conversacional.

— Aparecen los sistemas de tiempo real, que requieren tiempos de respuestamuy exigentes, especialmente para usos industriales o militares.

Page 28: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

6 CAPÍTULO 1. INTRODUCCIÓN

— Se difunden las computadoras de rango medio.

• Cuarta generación (1980-1990): computadoras personales:

— Aparición de software amigable con el usuario, destinado a usuarios noprofesionales y con una interfase gráfica muy desarrollada.

— Desarrollo de sistemas operativos de red y sistemas operativos distri-buidos.

— Sistemas operativos de red :

∗ Los usuarios están conscientes de la existencia de varias computadoras co-nectadas.

∗ Cada máquina ejecuta su propio S. O. local.∗ Son similares a los S. O. de un solo procesador pero con el agregado de:

· Controlador de interfaz de la red y su software de bajo nivel.· Software para conexión y acceso a archivos remotos, etc.

— Sistemas operativos distribuidos:

∗ Aparece ante los usuarios como un S. O. de un solo procesador, aún cuandode soporte a varios procesadores.

∗ Los usuarios no son conscientes del lugar donde se ejecutan sus programaso donde se encuentran sus archivos, ya que lo debe administrar el S. O.automáticamente.

∗ Deben permitir que un programa se ejecute mediante varios procesadoresa la vez, maximizando el paralelismo.

— Aparición de emuladores de terminal para el acceso a equipos remotos desdecomputadoras personales (PC).

— Gran énfasis en la seguridad, en especial por el desarrollo de los sistemas decomunicaciones de datos.

— El S. O. crea un ambiente de trabajo según el concepto de máquina virtual,que lo aísla del funcionamiento interno de la máquina.

— Proliferación de sistemas de bases de datos, accesibles mediante redes decomunicación.

1.3 Conceptos de los Sistemas Operativos

La interfaz entre el S. O. y los programas del usuario se define como el conjunto de “ins-trucciones ampliadas” [10, Tanenbaum] que proporciona el S. O. y son las “llamadasal sistema”:

— Crean, eliminan y utilizan objetos del software controlados por el S. O.:

∗ Los mas importantes son procesos y archivos.

• Procesos:

Page 29: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

1.3. CONCEPTOS DE LOS SISTEMAS OPERATIVOS 7

— Es el concepto central de todos los S. O.

— Es básicamente un programa en ejecución.

— Consta del programa ejecutable, sus datos y pila, contador y otros registros,además de la información necesaria para ejecutar el programa.

— La información de control relacionada con los procesos se almacena en la tablade procesos:

∗ Es administrada por el S. O.

∗ Posee un arreglo de estructuras, una por cada proceso existente en esemomento.

— Un proceso (suspendido) consta de:

∗ Un espacio de dirección.

∗ Los datos pertinentes de la tabla de procesos.

— Un proceso puede crear procesos hijo y estos nuevos procesos hijo, confor-mando un árbol de procesos.

• Archivos:

— Una de las funciones principales del S. O. es brindar independencia de dis-positivo.

— Muchos S. O. soportan el concepto de directorio como una forma de agrupararchivos.

— Los directorios se estructuran jerárquicamente, por lo que a cada archivo lecorresponde una ruta de acceso.

— Existen distintos esquemas de seguridad de archivos en los distintos S. O.

• Llamadas al sistema:

— Permiten a los programas comunicarse con el S. O. y solicitarle servicios.

— A cada llamada le corresponde un procedimiento:

∗ Pone los parámetros de la llamada en un lugar específico para luego ejecutaruna instrucción tipo “trap” de llamada a procedimiento protegido parainiciar el S. O.

∗ Luego de “trap” el S. O. recupera el control , examina los parámetros y sison válidos ejecuta el trabajo solicitado.

∗ Luego de terminar, el S. O. coloca un código de estado en un registroindicando si tuvo éxito o fracaso y ejecuta una instrucción del tipo “returnfrom trap” para regresar el control al procedimiento.

∗ El procedimiento regresa al programa llamador con un código de estadocomo un valor de función; dentro de los parámetros pueden regresar valoresadicionales.

Page 30: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

8 CAPÍTULO 1. INTRODUCCIÓN

1.4 Estructura de los Sistemas Operativos

Se considera la organización interna de los S. O. y conforme a ella se los clasifica de lasiguiente manera, destacándose sus principales características:

• Sistemas monoliticos:

— Es muy común: no existe estructura propiamente dicha o es mínima.

— El S. O. es una colección de procedimientos que se pueden llamar entre sí.2

— Cada procedimiento tiene una interfaz bien definida en términos de parámetrosy resultados.

— Para ejecutar los servicios del S. O. (llamadas al sistema):3

∗ Se solicitan colocando los parámetros en lugares bien definidos (registros opilas).

∗ Se ejecuta una instrucción especial de trampa: llamada al núcleo o lla-mada al supervisor.

∗ La instrucción cambia la máquina del modo usuario al modo núcleo (omodo supervisor). [10, Tanenbaum]

∗ Se transfiere el control al S. O.∗ El S. O. examina los parámetros de la llamada para determinar cuál de

ellas se desea realizar.∗ El S. O. analiza una tabla que contiene en la entrada “k” un apuntador al

procedimiento que realiza la “k-ésima” llamada al sistema:

· Identifica al procedimiento de servicio llamado.

∗ La llamada al sistema termina y el control regresa al programa del usuario.

• Sistemas con capas:

— Es una generalización del modelo de estructura simple para un sistema mono-lítico.

— Consiste en organizar el s. o. como una jerarquía de capas, cada una construidasobre la inmediata inferior.

— El primer sistema con este esquema fue el “THE” (Holanda - Dijkstra -1968):4

∗ “THE”: Technische Hogeschool Eindhoven.

∗ Capa 0:

· Trabaja con la asignación del procesador.· Alterna entre los procesos cuando ocurren las interrupciones o expiranlos cronómetros.

2Ver Figura 3.1 de la página 102 [10, Tanenbaum].3Ver Figura 1.3 de la página 9 [10, Tanenbaum].4Ver Tabla 1.1 de la página 10 [10, Tanenbaum].

Page 31: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

1.4. ESTRUCTURA DE LOS SISTEMAS OPERATIVOS 9

PROGRAMA 2 DEL USUARIO

PROGRAMA 1 DEL USUARIO

LLAMADA AL NUCLEO

PROC. DE SERVICIO

3

4

2

1

MEMORIA

PRINCIPAL

PROG. DEL

USUARIO

EN MODO

USUARIO

SIST. OPER.

EN MODO

NUCLEO

Figura 1.2: Modelo de estructura simple para un sistema monolítico.

PROCED. PRINCIPAL

PROC. DE

SERVICIO

PROCED.

UTILITARIOS

Figura 1.3: Forma de llamada al sistema en un sistema monolítico.

Page 32: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

10 CAPÍTULO 1. INTRODUCCIÓN

5 - Operador4 - Programas del Usuario

3 - Control de Entrada / Salida2 - Comunicaciones Operador - Proceso

1 - Administración de la Memoria y del Disco0 - Asignación del Procesador y Multiprogramación

Tabla 1.1: Estructura del S.O. en capas “THE”.

· Proporciona la multiprogramación básica.

∗ Capa 1:

· Administra la memoria.· Asegura que las páginas (porciones de memoria) requeridas de los pro-cesos lleguen a memoria cuando fueran necesarias.

∗ Capa 2:

· Administra la comunicación entre cada proceso y la consola del opera-dor.

· Por sobre esta capa, cada proceso tiene su propia consola de operador.

∗ Capa 3:

· Controla los dispositivos de e / s y almacena en buffers los flujos deinformación entre ellos.

· Por sobre la capa 3 cada proceso puede trabajar con dispositivos abs-tractos de e / s en vez de con dispositivos reales.

∗ Capa 4:

· Aloja los programas del usuario.· Los programas. del usuario no tienen que preocuparse por el proceso,memoria, consola o control de e / s.

∗ Capa 5:

· Localiza el proceso operador del sistema.

— Una generalización mas avanzada del concepto de capas se presento con “Mul-tics” (MIT, Bell Labs y General Electric):

∗ “Multics”: multiplexed information and computing service.

∗ Presenta una estructura en anillos concéntricos, siendo los interiores losprivilegiados.

∗ Un procedimiento de un anillo exterior, para llamar a un procedimiento deun anillo interior, debe hacer el equivalente a una llamada al sistema.

• Máquinas virtuales:

— Se separan totalmente las funciones de multiprogramación y de máquina exten-dida.

Page 33: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

1.4. ESTRUCTURA DE LOS SISTEMAS OPERATIVOS 11

— Existe un elemento central llamado monitor de la máquina virtual que:

∗ Se ejecuta en el hardware.∗ Realiza la multiprogramación.∗ Proporciona varias máquinas virtuales a la capa superior.

— Las máquinas virtuales instrumentan copias “exactas” del hardware simple, consu modo núcleo / usuario, e / s, interrupciones y todo lo demás que posee unamáquina real.

— Pueden ejecutar cualquier S. O. que se ejecute en forma directa sobre el hard-ware.

— Las distintas máquinas virtuales pueden ejecutar distintos S. O. y en generalasí lo hacen.

— Soportan periféricos virtuales.

— Ejemplo de S. O. representativo de esta estructura: “VM/370” de IBM:5

∗ Las m. v. generalmente utilizaran, entre otros, el S. O. “CMS”: Conversa-tional Monitor System.

∗ Cuando un programa “CMS” ejecuta una llamada al sistema:

· La llamada es atrapada por el S. O. en su propia m. v.; no pasadirectamente al “VM/370”.

· “CMS” proporciona las instrucciones de e / s en hardware para lalectura del disco virtual o lo necesario para efectuar la llamada.

· “VM/370” atrapa estas instrucciones de e / s y las ejecuta sobre elhardware verdadero.

• Modelo cliente - servidor:

— Una tendencia en los S. O. modernos es la de explotar la idea de mover elcódigo a capas superiores y mantener un núcleo mínimo, de manera similaral “VM/370”.

— Implantar la mayoría de las funciones del S. O. en los procesos del usuario.

— Para solicitar un servicio (por ej.: lectura de un bloque de cierto archivo) segúnel modelo cliente - servidor:6

∗ El proceso del usuario (proceso cliente) envía la solicitud a un procesoservidor:

· Realiza el trabajo y regresa la respuesta.

— El núcleo controla la comunicación entre los clientes y los servidores.

— Se fracciona el S. O. en partes, cada una controlando una faceta:

∗ Servicio a archivos, a procesos, a terminales, a memoria, etc., cada partepequeña y más fácilmente controlable.

5Ver Figura 1.4 de la página 12 [10, Tanenbaum].6Ver Figura 1.5 de la página 13 [10, Tanenbaum].

Page 34: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

12 CAPÍTULO 1. INTRODUCCIÓN

CMS CMS CMS

VM / 370

370 HARDWARE SIMPLE

MAQUINAS 370 VIRTUALES

LLAMADA AL

SISTEMA AQUI

TRAMPA AQUI

INSTRUC.

DE E / S

AQUI

TRAMPAS

AQUI

Figura 1.4: La estructura de VM/370 con CMS.

— Los servidores se ejecutan como procesos en modo usuario:

∗ No tienen acceso directo al hardware.∗ Se aíslan y acotan más fácilmente los problemas.

— Se adapta para su uso en los sistemas distribuidos:7

∗ Si un cliente se comunica con un servidor mediante mensajes:

· No necesita saber si el mensaje se atiende localmente o mediante unservidor remoto, situado en otra máquina conectada.

· Envía una solicitud y obtiene una respuesta.

— Algunas funciones del S. O., por ej. el cargado de comandos en los registrosfísicos del dispositivo de e / s, presentan problemas especiales y distintas solu-ciones:

∗ Ejecución en modo núcleo, con acceso total al hardware y comunicacióncon los demás procesos mediante el mecanismo normal de mensajes.

∗ Construcción de un mínimo de mecanismos dentro del núcleo mantenien-do las decisiones de política relativas a los usuarios dentro del espacio delusuario.

1.5 Tendencias

Las principales tendencias en S. O. son las siguientes [4, Deitel]:

• Soporte generalizado para multiprocesamiento.

• Migración hacia el microcódigo de funciones de los S. O. realizadas por software.

• Distribución del control entre procesadores localizados.

• Mejora de la eficiencia en el soporte de la ejecución concurrente de programas.7Ver Figura 1.6 de la página 13 [10, Tanenbaum].

Page 35: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

1.5. TENDENCIAS 13

PROCESO

CLIENTE

PROCESO

CLIENTE

SERVIDOR

DEL PROC.

SERVIDOR

DE LA TERM. . .

SERVIDOR

DE ARCHIV.

SERVIDOR

DE MEMOR.

NUCLEO

MODO

USUARIO

MODO

NUCLEO

LOS CLIENTES OBTIENEN EL SERVICIO AL

ENVIAR MENSAJES A LOS PROC. SERVIDORES

Figura 1.5: El modelo cliente - servidor.

CLIENTE

NUCLEO

SERV. DE

ARCHIVOS

NUCLEO

SER. DE

PROCESOS

NUCLEO

SERV. DE

TERMINALES

NUCLEO... ...

MAQUINA 1 MAQUINA 2 MAQUINA 3 MAQUINA 4

RED

MENSAJE DEL CLIENTE AL SERVIDOR

Figura 1.6: El modelo cliente - servidor en un sistema distribuido.

Page 36: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

14 CAPÍTULO 1. INTRODUCCIÓN

• Soporte del paralelismo masivo con altísimo grado de concurrencia.

• Profundización de los esquemas de máquinas virtuales.

• Continuación del esquema de familias de S. O. para familias de computadoras, viendolas aplicaciones máquinas virtuales.

• Compatibilidad con nuevas generaciones de computadoras.

• Desarrollos en la ingeniería de software para brindar S. O. más preservables, confia-bles y comprensibles.

• Proliferación de redes de sistemas, distribuyendo tareas en equipos sobre los que elusuario puede no tener conocimiento ni control con énfasis en la importancia de laperspectiva de las máquinas virtuales.

• Permanencia del concepto de almacenamiento virtual.

• Permanencia de la perspectiva del S. O. como administrador de recursos, teniendopresente que los datos serán considerados cada vez más como un recurso para seradministrado.

• Profundización del desarrollo de S. O. con funciones distribuidas entre varios proce-sadores a través de grandes redes de sistemas [12, Tanenbaum].

1.6 Definiciones Sobre Procesos

El concepto central de cualquier Sistema Operativo es el de proceso: una abstracción deun programa en ejecución también llamada tarea.

No hay un acuerdo universal sobre una definición de proceso, pero sí algunas defini-ciones aceptadas [4, Deitel]:

• Un programa que se está ejecutando.

• Una actividad asincrónica.

• El emplazamiento del control de un procedimiento que está siendo ejecutado.

• Aquello que se manifiesta por la existencia en el Sistema Operativo de un bloquede control de proceso.

• Aquella entidad a la cual son asignados los procesadores.

• La unidad despachable.

En sistemas de multiprogramación la cpu alterna de programa en programa, en unesquema de seudoparalelismo , es decir que la cpu ejecuta en cierto instante un soloprograma, intercambiando muy rápidamente entre uno y otro.

El paralelismo real de hardware se da en las siguientes situaciones:

Page 37: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

1.6. DEFINICIONES SOBRE PROCESOS 15

• En ejecución de instrucciones de programa con más de un procesador de instruccionesen uso simultáneamente.

• Con la superposición de ejecución de instrucciones de programa con la ejecución deuna o más operaciones de entrada / salida.

El objetivo es aumentar el paralelismo en la ejecución.El modelo de procesos posee las siguientes características:

• Todo el software ejecutable, inclusive el Sistema Operativo, se organiza en variosprocesos secuenciales o procesos.

• Un proceso incluye al programa en ejecución y a los valores activos del contador,registros y variables del mismo.

• Conceptualmente cada proceso tiene su propia cpu virtual.

• Si la cpu alterna entre los procesos, la velocidad a la que ejecuta un proceso no seráuniforme, por lo que es necesario aclarar lo siguiente:

— Que los procesos no deben programarse con hipótesis implícitas acerca del tiem-po.

— Que normalmente la mayoría de los procesos no son afectados por la multipro-gramación subyacente de la cpu o las velocidades relativas de procesos distintos.

• Un proceso es una actividad de un cierto tipo, que tiene un programa, entrada, saliday estado.

• Un solo procesador puede ser compartido entre varios procesos con cierto “algoritmode planificación” , el cual determina cuándo detener el trabajo en un proceso y darservicio a otro distinto8.

En cuanto a las jerarquías de procesos es necesario señalar que los Sistemas Opera-tivos deben disponer de una forma de crear y destruir procesos cuando se requiera durantela operación, teniendo además presente que los procesos pueden generar procesos hijosmediante llamadas al Sistema Operativo, pudiendo darse ejecución en paralelo.

Respecto de los estados del proceso deben efectuarse las siguientes consideraciones:

• Cada proceso es una entidad independiente pero frecuentemente debe interactuarcon otros procesos9.

• Los procesos pueden bloquearse en su ejecución porque:

— Desde el punto de vista lógico no puede continuar porque espera datos que aúnno están disponibles.

— El Sistema Operativo asignó la cpu a otro proceso.

8Ver Figura 1.7 de la página 16 [10, Tanenbaum].9Ver Figura 1.8 de la página 16 [10, Tanenbaum].

Page 38: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

16 CAPÍTULO 1. INTRODUCCIÓN

A

B

C

D

ALTERNADOR DE PROCESOS

UN CONTADOR DE PROGRAMA

MODELO CONCEPTUAL DE CUATRO

PROCESOS SECUENCIALES INDEPENDIENTES

A C D B

CUATRO CONTADORES DE PROGRAMA

Figura 1.7: Multiprogramación de cuatro programas.

TIEMPO

P

R

O

C

E

S

OA

B

C

D

Figura 1.8: Solo un programa está activo en un momento dado.

• Los estados [10, Tanenbaum] que puede tener un proceso son10:

— En ejecución: utiliza la cpu en el instante dado.

— Listo: ejecutable, se detiene en forma temporal para que se ejecute otro pro-ceso.

— Bloqueado: no se puede ejecutar debido a la ocurrencia de algún evento ex-terno.

• Son posibles cuatro transiciones entre estos estados.

10Ver Figura 1.9 de la página 17 [10, Tanenbaum].

Page 39: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

1.7. ESTADOS DE PROCESOS 17

EN EJECUCION

BLOQUEADO LISTO

12

3

4

1-EL PROCESO SE BLOQUEA EN ESPERA DE DATOS

2-EL PLANIFICADOR ELIGE OTRO PROCESO

3-EL PLANIFICADOR ELIGE ESTE PROCESO

4-LOS DATOS ESTAN DISPONIBLES

TANSICIONES ENTRE LOS ESTADOS

1-BLOQUEO

2-TIEMPO EXCEDIDO

3-DESPACHO

4-DESPERTAR

Figura 1.9: Un proceso puede estar en ejecución, bloqueado o listo.

1.7 Estados de Procesos

Durante su existencia un proceso pasa por una serie de estados discretos, siendo varias lascircunstancias que pueden hacer que el mismo cambie de estado.

Debido a ello se puede establecer una “Lista de Listos” para los procesos “listos” yuna “Lista de Bloqueados” para los “bloqueados”.

La “Lista de Listos” se mantiene en orden prioritario y la “Lista de Bloqueados” estádesordenada, ya que los procesos se desbloquean en el orden en que tienen lugar los eventosque están esperando.

Al admitirse un trabajo en el sistema se crea un proceso equivalente y es insertado enla última parte de la “Lista de Listos”.

La asignación de la cpu al primer proceso de la “Lista de Listos” se denomina “Des-pacho” , que es ejecutado por una entidad del Sistema Operativo llamada “Despachador”.

El “Bloqueo” es la única transición de estado iniciada por el propio proceso del usuario,puesto que las otras transiciones son iniciadas por entidades ajenas al proceso.

La manifestación de un proceso en un Sistema Operativo es un “Bloque de Control deProceso” (PCB) con información que incluye [4, Deitel]:

• Estado actual del proceso.

• Identificación única del proceso.

• Prioridad del proceso.

• Apuntadores para localizar la memoria del proceso.

• Apuntadores para asignar recursos.

• Area para preservar registros.

Cuando el Sistema Operativo cambia la atención de la cpu entre los procesos, utilizalas áreas de preservación del PCB para mantener la información que necesita para reiniciarel proceso cuando consiga de nuevo la cpu.

Page 40: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

18 CAPÍTULO 1. INTRODUCCIÓN

Los sistemas que administran los procesos deben poder crear, destruir, suspender,reanudar, cambiar la prioridad, bloquear, despertar y despachar un proceso.

La “creación” de un proceso significa:

• Dar nombre al proceso.

• Insertar un proceso en la lista del sistema de procesos conocidos.

• Determinar la prioridad inicial del proceso.

• Crear el bloque de control del proceso.

• Asignar los recursos iniciales del proceso.

Un proceso puede “crear un nuevo proceso”, en cuyo caso el proceso creador se de-nomina “proceso padre” y el proceso creado “proceso hijo” y se obtiene una “estructurajerárquica de procesos”.

La “destrucción” de un proceso implica:

• Borrarlo del sistema.

• Devolver sus recursos al sistema.

• Purgarlo de todas las listas o tablas del sistema.

• Borrar su bloque de control de procesos.

Un proceso “suspendido” no puede proseguir hasta que otro proceso lo reanude.Reanudar (reactivar) un proceso implica reiniciarlo en el punto donde fue suspendido.

La “destrucción” de un proceso puede o no significar la destrucción de los procesoshijos, según el Sistema Operativo.

Generalmente se denomina “Tabla de Procesos” al conjunto de información de controlsobre los distintos procesos.

1.8 El Núcleo del Sistema Operativo

El “núcleo” del Sistema Operativo controla todas las operaciones que implican procesos yrepresenta solo una pequeña porción del código de todo el Sistema Operativo pero es deamplio uso [4, Deitel].

Generalmente permanece en el almacenamiento primario.El proceso de interrupciones se incluye en el núcleo ya que debe ser rápido (espe-

cialmente en sistemas multiusuario), para optimizar el uso de los recursos del sistema yproveer tiempos de respuesta aceptables a los usuarios interactivos.

El núcleo inhabilita las interrupciones mientras responde a una interrupción. Lasinterrupciones son habilitadas de nuevo después de completar el proceso de una interrup-ción.

El núcleo del Sistema Operativo generalmente realiza las siguientes funciones:

• Manipulación de interrupciones.

Page 41: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

1.9. PLANIFICACIÓN DE PROCESOS 19

• Creación y destrucción de procesos.

• Cambio de estados de procesos.

• Despacho.

• Suspensión y reanudación de procesos.

• Sincronización de procesos.

• Comunicación entre procesos.

• Manipulación de bloques de control de proceso.

• Soporte de las actividades de Entrada / Salida.

• Soporte de la asignación y desasignación de almacenamiento.

• Soporte del sistema de archivos.

• Soporte de un mecanismo de llamada / regreso al procedimiento.

• Soporte de ciertas funciones contables (estadísticas) del sistema.

1.9 Planificación de Procesos

Cuando más de un proceso es ejecutable desde el punto de vista lógico, el Sistema Opera-tivo debe decidir cuál de ellos debe ejecutarse en primer término.

El Planificador es la porción del Sistema Operativo que decide y el Algoritmo dePlanificación es el utilizado.

Los principales “criterios” respecto de un buen algoritmo de planificación [10, Ta-nenbaum] son la equidad, la eficacia, el tiempo de respuesta, el tiempo de regreso y elrendimiento11.

Algunas de estas metas son contradictorias, por ejemplo, minimizar el tiempo de res-puesta para los usuarios interactivos significaría no ejecutar las tareas batch.

Cada proceso es único e impredecible, es decir que pueden requerir intensivamente ope-raciones de Entrada / Salida o intensivamente cpu; el planificador del Sistema Operativono tiene la certeza de cuánto tiempo transcurrirá hasta que un proceso se bloquee, ya seapor una operación de Entrada / Salida o por otra razón .

Para evitar que un proceso se apropie de la cpu un tiempo excesivo, los equipos poseenun dispositivo que provoca una interrupción en forma periódica, por ejemplo 60 hz, o seasesenta veces por segundo.

En cada interrupción del reloj el Sistema Operativo decide si el proceso que se estáejecutando continúa o si el proceso agotó su tiempo de cpu y debe suspenderse y ceder lacpu a otro proceso.

Los principales conceptos relacionados con Planificación del Procesador son lossiguiente:

11Ver Tabla 2.1 de la página 34 [10, Tanenbaum].

Page 42: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

20 CAPÍTULO 1. INTRODUCCIÓN

Criterio Descripción

Equidad Garantizar que cada proceso obtiene su proporciónjusta de la cpu

Eficacia Mantener ocupada la cpu el ciento por cientodel tiempo

Tiempo de respuesta Minimizar el tiempo de respuesta para losusuarios interactivos

Tiempo de regreso Minimizar el tiempo que deben esperar losusuarios por lotes (batch) para obtener

sus resultadosRendimiento Maximizar el número de tareas procesadas por hora

Tabla 1.2: Criterios de un buen algoritmo de planificación.

• Planificación apropiativa : es la estrategia de permitir que procesos ejecutables (des-de el punto de vista lógico) sean suspendidos temporalmente.

• Planificación no apropiativa : es la estrategia de permitir la ejecución de un procesohasta terminar.

• Planificación del procesador : determinar cuándo deben asignarse los procesadoresy a qué procesos, lo cual es responsabilidad del Sistema Operativo.

1.10 Niveles de Planificación del Procesador

Se consideran tres niveles importantes de planificación, los que se detallan a continuación12:

• Planificación de alto nivel:

— También se denomina Planificación de trabajos.

— Determina a qué trabajos se les va a permitir competir activamente por losrecursos del sistema, lo cual se denomina Planificación de admisión.

• Planificación de nivel intermedio:

— Determina a qué procesos se les puede permitir competir por la cpu.

— Responde a fluctuaciones a corto plazo en la carga del sistema y efectúa “sus-pensiones” y “activaciones” (“reanudaciones”) de procesos.

— Debe ayudar a alcanzar ciertas metas en el rendimiento total del sistema.

• Planificación de bajo nivel:

— Determina a qué proceso listo se le asigna la cpu cuando esta queda disponibley asigna la cpu al mismo, es decir que “despacha” la cpu al proceso.

12Ver Figura 1.10 de la página 21 [4, Deitel].

Page 43: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

1.11. OBJETIVOS DE LA PLANIFICACIÓN 21

TRABAJOS ESPERANDO

ENTRADA

TRABAJOS ESPERANDO

INICIACION

ENTRADA DE TRABAJOS

TRABAJOS SUSPENDIDOS

ESPERANDO ACTIVACION

INICIACION DE TRABAJOS

PLANIFICACION DE

ALTO NIVEL

PROCESOS ACTIVOS

PLANIFICACION DE

NIVEL INTERMEDIO

ACTIVAR SUSPENDER

PROCESOS EN

EJECUCION

DESPACHO PLANIFICACION DE

BAJO NIVEL

TERMINADO

TERMINAR

Figura 1.10: Niveles de planificación del procesador.

— La efectúa el Despachador del Sistema Operativo, el que opera muchas vecespor segundo y reside siempre en el almacenamiento primario.

Los distintos Sistemas Operativos utilizan varias Políticas de Planificación, que se ins-trumentan mediante Mecanismos de Planificación .

1.11 Objetivos de la Planificación

Los objetivos de la planificación del procesador son los siguientes e involucran a los con-ceptos detallados seguidamente [4, Deitel]:

• Ser justa:

— Todos los procesos son tratados de igual manera.

— Ningún proceso es postergado indefinidamente.

Page 44: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

22 CAPÍTULO 1. INTRODUCCIÓN

• Maximizar la capacidad de ejecución:

— Maximizar el número de procesos servidos por unidad de tiempo.

• Maximizar el número de usuarios interactivos que reciban unos tiemposde respuesta aceptables:

— En un máximo de unos segundos.

• Ser predecible:

— Un trabajo dado debe ejecutarse aproximadamente en la misma cantidad detiempo independientemente de la carga del sistema.

• Minimizar la sobrecarga:

— No suele considerarse un objetivo muy importante.

• Equilibrar el uso de recursos:

— Favorecer a los procesos que utilizarán recursos infrautilizados.

• Equilibrar respuesta y utilización:

— La mejor manera de garantizar buenos tiempos de respuesta es disponer de losrecursos suficientes cuando se necesitan, pero la utilización total de recursospodrá ser pobre.

• Evitar la postergación indefinida:

— Se utiliza la estrategia del “envejecimiento” .

— Mientras un proceso espera por un recurso su prioridad debe aumentar, así laprioridad llegará a ser tan alta que el proceso recibirá el recurso esperado.

• Asegurar la prioridad:

— Los mecanismos de planificación deben favorecer a los procesos con prioridadesmás altas.

• Dar preferencia a los procesos que mantienen recursos claves:

— Un proceso de baja prioridad podría mantener un recurso clave, que puede serrequerido por un proceso de más alta prioridad.

— Si el recurso es no apropiativo, el mecanismo de planificación debe otorgar alproceso un tratamiento mejor del que le correspondería normalmente, puestoque es necesario liberar rápidamente el recurso clave.

Page 45: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

1.12. CONCEPTOS BÁSICOS DE ALMACENAMIENTO VIRTUAL 23

• Dar mejor tratamiento a los procesos que muestren un “comportamientodeseable”:

— Un ejemplo de comportamiento deseable es una tasa baja de paginación.

• Degradarse suavemente con cargas pesadas:

— Un mecanismo de planificación no debe colapsar con el peso de una exigentecarga del sistema.

— Se debe evitar una carga excesiva mediante las siguientes acciones:

∗ No permitiendo que se creen nuevos procesos cuando la carga ya es pesada.∗ Dando servicio a la carga más pesada al proporcionar un nivel moderada-

mente reducido de servicio a todos los procesos.

Muchas de estas metas se encuentran en conflicto entre sí, por lo que la planificaciónse convierte en un problema complejo.

1.12 Conceptos Básicos de Almacenamiento Virtual

La clave del concepto de memoria (almacenamiento) virtual esta en la disociación:

• De las direcciones a las que hace referencia un programa.

• De las direcciones disponibles en la memoria real (almacenamiento primario).

Los principales conceptos son los siguientes:

• “Direcciones virtuales”:

— Son las referidas por un proceso en ejecución.

• “Direcciones reales”:

— Son las disponibles dentro del almacenamiento primario.

• “Espacio de direcciones virtuales (v)” de un proceso:

— Es el número de direcciones virtuales a que puede hacer referencia el proceso.

• “Espacio de direcciones reales (r)” de un computador:

— Es el número de direcciones reales disponibles en el ordenador.

Los procesos hacen referencia a direcciones virtuales pero éstas deben ejecutarse en elalmacenamiento real:

• Las direcciones virtuales deben ser transformadas dentro de las direcciones reales,mientras el proceso está en ejecución.

Page 46: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

24 CAPÍTULO 1. INTRODUCCIÓN

ALMACENAM. VIRTUAL ALMACENAM. REAL

Figura 1.11: Transformación de ítems del espacio de direcciones virtuales al espacio dedirecciones reales.

• La traducción de direcciones deberá hacerse rápidamente para no degradar al siste-ma.

Existen varios medios para asociar las direcciones virtuales con las reales.13

Los mecanismos de “traducción dinámica de direcciones” (dat) convierten las direccio-nes virtuales en reales al ejecutarse el proceso.

Las direcciones contiguas dentro del espacio de direcciones virtuales de un proceso notienen por qué ser contiguas dentro del almacenamiento real, a esto se denomina “con-tigüidad artificial”.14

1.13 Organización del Almacenamiento de Niveles Múlti-ples

Se deben proporcionar los medios para retener programas y datos en un gran almacena-miento auxiliar para:

• Permitir que el espacio de direcciones virtuales de un usuario sea mayor que el espaciode direcciones reales.

• Soportar multiprogramación de forma efectiva en un sistema con muchos usuariosque compartan el almacenamiento real.

Se utiliza un esquema de almacenamiento de dos niveles:15

• Primer nivel: “almacenamiento real”:13Ver Figura 1.11 de la página 24 [4, Deitel].14Ver Figura 1.12 de la página 25 [4, Deitel].15Ver Figura 1.13 de la página 26 [4, Deitel].

Page 47: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

1.14. SISTEMAS DE ARCHIVOS 25

ALMACENAM. VIRTUAL ALMACENAM.

REAL

MECANISMO DE

TRANSFORMACION

DE DIRECCIONES

LOCALIZA-

CIONES

CONTI-

GUAS DE

ALMA-

CENA-

MIENTO

VIRTUAL

Figura 1.12: Contigüidad artificial.

— En él se ejecutan los procesos y en él deben estar los datos para que un procesopueda referirse a ellos.

• Segundo nivel: “almacenamiento auxiliar, secundario o adicional”:

— Generalmente consta de discos de gran capacidad que pueden mantener losprogramas y datos que no caben al mismo tiempo en el más limitado almace-namiento real.

Cuando se va a ejecutar un proceso su código y datos se pasan al almacenamientoprincipal.

El almacenamiento real es compartido por varios procesos:

• Cada proceso puede tener un espacio de direcciones virtuales mucho mayor que elalmacenamiento real.

• Solo se mantiene al mismo tiempo una pequeña parte de los programas y datos decada proceso en el almacenamiento real.

1.14 Sistemas de Archivos

Todas las aplicaciones computarizadas necesitan almacenar y recuperar la información[4, Deitel]:

Page 48: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

26 CAPÍTULO 1. INTRODUCCIÓN

PROCESA-

DORES

ALMACENAM.

REAL

ALMACENAM. PRINCIPAL,

PRIMARIO O REAL

DISCOS

OTROS

DISPOSIT.

ALMACENAM. SECUNDARIO,

AUXILIAR O ADICIONAL

ALMACENAMIENTO AUXILIAR

ALMACENAMIENTO

VIRTUAL DEL PROC. A

EL ALMACENAMIENTO VIRTUAL DE UN PROCESO

NO NECESITA SER CONTIGUO NI SIQUIERA EN EL

ALMACENAMIENTO SECUNDARIO

ALMACENAMIENTO

VIRTUAL DEL PROC. B

ALMACENAMIENTO

VIRTUAL DEL PROC. Z

ALMACENAMIENTO REAL

Figura 1.13: Almacenamiento de dos niveles.

Page 49: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

1.15. FUNCIONES DEL SISTEMA DE ARCHIVOS 27

• Superando las limitaciones del almacenamiento real.

• Trascendiendo a la duración de los procesos que las utilizan o generan.

• Independizando a la información de los procesos permitiendo el acceso a la misma através de varios procesos.

Las condiciones esenciales para el almacenamiento de la información a largo plazo son:

• Debe ser posible almacenar una cantidad muy grande de información.

• La información debe sobrevivir a la conclusión del proceso que la utiliza.

• Debe ser posible que varios procesos tengan acceso concurrente a la información.

La solución es el almacenamiento de la información en discos y otros medios externosen unidades llamadas archivos:

• Los archivos deben ser persistentes, decir que no deben verse afectados por lacreación o terminación de un proceso.

• Los archivos son una colección de datos con nombre.

• Pueden ser manipulados como una unidad por operaciones como: open, close, create,destroy, copy, rename, list.

• Los elementos de datos individuales dentro del archivo pueden ser manipulados poroperaciones como: read, write, update, insert, delete.

El “Sistema de Archivos” es la parte del sistema de administración del almacenamien-to responsable, principalmente, de la administración de los archivos del almacenamientosecundario.

Es la parte del S. O. responsable de permitir “compartir controladamente” la informa-ción de los archivos.

1.15 Funciones del Sistema de Archivos

Los usuarios deben poder crear, modificar y borrar archivos.Se deben poder compartir los archivos de una manera cuidadosamente controlada [4,

Deitel].El mecanismo encargado de compartir los archivos debe proporcionar varios tipos de

acceso controlado:

• Ej.: “Acceso de Lectura”, “Acceso de Escritura”, “Acceso de Ejecución”, variascombinaciones de estos, etc.

Se debe poder estructurar los archivos de la manera más apropiada a cada aplicación.Los usuarios deben poder ordenar la transferencia de información entre archivos.Se deben proporcionar posibilidades de “respaldo” y “recuperación” para prevenirse

contra:

Page 50: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

28 CAPÍTULO 1. INTRODUCCIÓN

• La pérdida accidental de información.

• La destrucción maliciosa de información.

Se debe poder referenciar a los archivos mediante “Nombres Simbólicos”, brindando“Independencia de Dispositivos”.

En ambientes sensibles, el sistema de archivos debe proporcionar posibilidades de “Ci-frado” y “Descifrado”.

El sistema de archivos debe brindar una interfase favorable al usuario:

• Debe suministrar una “visión lógica” de los datos y de las funciones que serán eje-cutadas, en vez de una “visión física”.

• El usuario no debe tener que preocuparse por:

— Los dispositivos particulares.

— Dónde serán almacenados los datos.

— El formato de los datos en los dispositivos.

— Los medios físicos de la transferencia de datos hacia y desde los dispositivos.

1.16 El Sistema de Archivos

Un “Archivo” es un conjunto de registros relacionados [10, Tanenbaum].El “Sistema de Archivos” es un componente importante de un S. O. y suele contener

[4, Deitel]:

• “Métodos de acceso” relacionados con la manera de acceder a los datos almacenadosen archivos.

• “Administración de archivos” referida a la provisión de mecanismos para que losarchivos sean almacenados, referenciados, compartidos y asegurados.

• “Administración del almacenamiento auxiliar” para la asignación de espacio a losarchivos en los dispositivos de almacenamiento secundario.

• “Integridad del archivo” para garantizar la integridad de la información del archivo.

El sistema de archivos está relacionado especialmente con la administración del espaciode almacenamiento secundario, fundamentalmente con el almacenamiento de disco.

Una forma de organización de un sistema de archivos puede ser la siguiente:

• Se utiliza una “raíz” para indicar en qué parte del disco comienza el “directorioraíz”.

• El “directorio raíz” apunta a los “directorios de usuarios”.

• Un “directorio de usuario” contiene una entrada para cada uno de los archivos delusuario.

Page 51: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

1.17. ENTRADA / SALIDA 29

• Cada entrada de archivo apunta al lugar del disco donde está almacenado el archivoreferenciado.

Los nombres de archivos solo necesitan ser únicos dentro de un directorio de usuariodado.

El nombre del sistema para un archivo dado debe ser único para el sistema de archivos.En sistemas de archivo “jerárquicos” el nombre del sistema para un archivo suele estar

formado como el “nombre de la trayectoria” del directorio raíz al archivo.

1.17 Entrada / Salida

Una de las funciones principales de un S. O. es el control de todos los dispositivos de e /s de la computadora [10, Tanenbaum].

Las principales funciones relacionadas son:

• Enviar comandos a los dispositivos.

• Detectar las interrupciones.

• Controlar los errores.

• Proporcionar una interfaz entre los dispositivos y el resto del sistema:

— Debe ser sencilla y fácil de usar.

— Debe ser la misma (preferentemente) para todos los dispositivos (independenciadel dispositivo).

El código de e / s representa una fracción significativa del S. O.El uso inapropiado de los dispositivos de e / s frecuentemente genera ineficiencias del

sistema, lo que afecta la performance global.

1.18 Algoritmos de Programación del Brazo del Disco

En la mayoría de los discos, el tiempo de búsqueda supera al de retraso rotacional y al detransferencia [10, Tanenbaum], debido a ello, la reducción del tiempo promedio de búsquedapuede mejorar en gran medida el rendimiento del sistema.

Si el manejador del disco utiliza el algoritmo primero en llegar primero en seratendido (FCFS), poco se puede hacer para mejorar el tiempo de búsqueda.

Es posible que mientras el brazo realiza una búsqueda para una solicitud, otros procesosgeneren otras solicitudes.

Muchos manejadores tienen una tabla:

• El índice es el número de cilindro.

• Incluye las solicitudes pendientes para cada cilindro enlazadas entre sí en una listaligada.

Page 52: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

30 CAPÍTULO 1. INTRODUCCIÓN

• Cuando concluye una búsqueda, el manejador del disco tiene la opción de elegir lasiguiente solicitud a dar paso:

— Se atiende primero la solicitud más cercana, para minimizar el tiempo de bús-queda.

— Este algoritmo se denomina primero la búsqueda más corta (SSF: shor-test seek first).

— Reduce a la mitad el número de movimientos del brazo en comparación conFCFS.

Ej. de SSF :

• Consideramos un disco de 40 cilindros.

• Se presenta una solicitud de lectura de un bloque en el cilindro 11.

• Durante la búsqueda, llegan solicitudes para los cilindros 1, 36, 16, 34, 9 y 12, enese orden.

• La secuencia de búsqueda SSF será: 12, 9, 16, 1, 34, 36.

• Habrá un número de movimientos del brazo para un total de:

— 111 cilindros según FCFS.

— 61 cilindros según SSF.

El algoritmo SSF tiene el siguiente problema:

• El ingreso de nuevas solicitudes puede demorar la atención de las más antiguas.

• Con un disco muy cargado, el brazo tenderá a permanecer a la mitad del disco lamayoría del tiempo, como consecuencia de ello las solicitudes lejanas a la mitad deldisco tendrán un mal servicio.

• Entran en conflicto los objetivos de:

— Tiempo mínimo de respuesta.

— Justicia en la atención.

La solución a este problema la brinda el algoritmo del elevador (por su analogíacon el ascensor o elevador):

• Se mantiene el movimiento del brazo en la misma dirección, hasta que no tiene mássolicitudes pendientes en esa dirección; entonces cambia de dirección.

• El software debe conservar el bit de dirección actual.

Ej. del algoritmo del elevador para el caso anterior, con el valor inicial arriba del bitde dirección:

Page 53: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

1.18. ALGORITMOS DE PROGRAMACIÓN DEL BRAZO DEL DISCO 31

• El orden de servicio a los cilindros es: 12, 16, 34, 36, 9 y 1.

• El número de movimientos del brazo corresponde a 60 cilindros.

El algoritmo del elevador:

• Ocasionalmente es mejor que el algoritmo SSF.

• Generalmente es peor que SSF.

• Dada cualquier colección de solicitudes, la cuota máxima del total de movimientosestá fija, siendo el doble del número de cilindros.

Una variante consiste en rastrear siempre en la misma dirección:

• Luego de servir al cilindro con el número mayor:

— El brazo pasa al cilindro de número menor con una solicitud pendiente.

— Continúa su movimiento hacia arriba.

Algunos controladores de disco permiten que el software inspeccione el número delsector activo debajo del cabezal:

• Si dos o más solicitudes para el mismo cilindro están pendientes:

— El manejador puede enviar una solicitud para el sector que pasará debajo delcabezal.

— Se pueden hacer solicitudes consecutivas de distintas pistas de un mismo cilin-dro, sin generar un movimiento del brazo.

Cuando existen varias unidades, se debe tener una tabla de solicitudes pendientes paracada unidad.

Si una unidad está inactiva, deberá buscarse el cilindro siguiente necesario, si el con-trolador permite búsquedas traslapadas.

Cuando termina la transferencia actual se verifica si las unidades están en la posicióndel cilindro correcto:

• Si una o más unidades lo están, se puede iniciar la siguiente transferencia en unaunidad ya posicionada.

• Si ninguno de los brazos está posicionado, el manejador:

— Debe realizar una nueva búsqueda en la unidad que terminó la transferencia.

— Debe esperar hasta la siguiente interrupción para ver cuál brazo se posicionaprimero.

Generalmente, las mejoras tecnológicas de los discos:

• Acortan los tiempos de búsqueda (seek).

Page 54: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

32 CAPÍTULO 1. INTRODUCCIÓN

• No acortan los tiempos de demora rotacional (search).

• En algunos discos, el tiempo promedio de búsqueda ya es menor que el retrasorotacional.

• El factor dominante será el retraso rotacional, por lo tanto, los algoritmos que op-timizan los tiempos de búsqueda (como el algoritmo del elevador) perderán impor-tancia frente a los algoritmos que optimicen el retraso rotacional.

Una tecnología importante es la que permite el trabajo conjunto de varios discos.Una configuración interesante es la de treinta y ocho (38) unidades ejecutándose en

paralelo.Cuando se realiza una operación de lectura:

• Ingresan a la cpu 38 bit a la vez, uno por cada unidad.

• Los 38 bits conforman una palabra de 32 bits junto con 6 bits para verificación.

• Los bits 1, 2, 4, 8, 16 y 32 se utilizan como bits de paridad.

• La palabra de 38 bits se puede codificar mediante el código Hamming, que es uncódigo corrector de errores.

• Si una unidad sale de servicio:

— Se pierde un bit de cada palabra.

— El sistema puede continuar trabajando; se debe a que los códigos Hamming sepueden recuperar de un bit perdido.

Este diseño se conoce como RAID; siglas en inglés de “arreglo redundante de discosno costosos”.

Page 55: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

Capítulo 2

Fundamentos Teóricos

2.1 Procesos y Administración del Procesador

2.1.1 Criterios de Planificación

Para realizar los objetivos de la planificación, un mecanismo de planificación debe consi-derar lo siguiente [4, Deitel]

• La limitación de un proceso a las operaciones de Entrada / Salida: cuando un procesoconsigue la cpu, ¿la utiliza solo brevemente antes de generar una petición de Entrada/ Salida?.

• La limitación de un proceso a la cpu: cuando un proceso obtiene la cpu, ¿tiende ausarla hasta que expira su tiempo?.

• Si un proceso es por lote (batch) o interactivo: los usuarios interactivos deben recibirinmediato servicio para garantizar buenos tiempos de respuesta.

• ¿Qué urgencia tiene una respuesta rápida?: por ejemplo, un proceso de tiempo realde un sistema de control que supervise una re.nería de combustible requiere unarespuesta rápida, más rápida que la respuesta requerida por un proceso en lotes(batch) que deberá entregarse al día siguiente.

• La prioridad de un proceso: a mayor prioridad mejor tratamiento.

• Frecuentemente un proceso genera fallos (carencias) de página:

— Probablemente los procesos que generan pocos fallos de página hayan acumu-lado sus .conjuntos de trabajo. en el almacenamiento principal.

— Los procesos que experimentan gran cantidad de fallos de página aún no hanestablecido sus conjuntos de trabajo.

— Un criterio indica favorecer a los procesos que han establecido sus conjuntos detrabajo.

— Otro criterio indica favorecer a los procesos con una tasa alta de fallos de páginaya que rápidamente generarán una petición de Entrada / Salida.

33

Page 56: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

34 CAPÍTULO 2. FUNDAMENTOS TEÓRICOS

Disciplina Descripción

Apropiativa Una vez que se le ha otorgado la cpu a un proceso,le puede ser retirada

No Apropiativa Una vez que se le ha otorgado la cpu a un proceso,no le puede ser retirada

Tabla 2.1: Criterios de un buen algoritmo de planificación.

• Frecuentemente un proceso ha sido apropiado por otro de más alta prioridad, lo cualsignifica lo siguiente:

— A menudo los procesos apropiados deben recibir un tratamiento menos favora-ble.

— Cada vez que el Sistema Operativo asume la sobrecarga para hacer ejecutareste proceso, el corto tiempo de ejecución antes de la apropiación no justificala sobrecarga de hacer ejecutar al proceso en primer lugar.

• ¿Cuánto tiempo de ejecución real ha recibido el proceso?: un criterio considera que

• debe ser favorecido un proceso que ha recibido muy poco tiempo de cpu.

• ¿Cuánto tiempo adicional va a necesitar el proceso para terminar?: los tiempospromedio de espera pueden reducirse priorizando los procesos que requieren de untiempo de ejecución mínimo para su terminación, pero pocas veces es posible conocerla cantidad de tiempo adicional que cada proceso necesita para terminar.

2.2 Planificación Apropiativa Versus No Apropiativa

Las Disciplinas de Planificación pueden ser Apropiativas o No Apropiativas1.Las principales características de la planificación apropiativa son las siguientes:

• Es útil cuando los procesos de alta prioridad requieren atención rápida.

• Es importante para garantizar buenos tiempos de respuesta en sistemas interactivosde tiempo compartido.

• Tiene su costo en recursos, ya que el intercambio de contexto implica sobrecargay además requiere mantener muchos procesos en el almacenamiento principal, enespera de la cpu, lo que también implica sobrecarga.

Las principales características de la planfiicación no apropiativa son las siguientes:

• Significa que los trabajos largos hacen esperar a los trabajoscortos.

• Logra más equidad en el tratamiento de los procesos.

1Ver Figura ?? de la página ?? [10, Tanenbaum].

Page 57: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

2.3. TEMPORIZADOR DE INTERVALOS O RELOJ DE INTERRUPCIÓN 35

• Logra hacer más predecibles los tiempos de respuesta puesto que los trabajos nuevosde prioridad alta no pueden desplazar a los trabajos en espera.

El diseño de un mecanismo apropiativo hace necesario considerar las arbitrariedades decasi cualquier esquema de prioridades, en razón de que muchas veces las propias prioridades

no son asignadas de forma significativa [11, Tanenbaum].El mecanismo debería ser sencillo pero efectivo y significativo..

2.3 Temporizador de Intervalos o Reloj de Interrupción

El proceso al cual está asignada la cpu se dice que está en ejecución y puede ser un procesode Sistema Operativo o de usuario.

El Sistema Operativo dispone de mecanismos para quitarle la cpu a un proceso deusuario para evitar que monopolice el sistema.

El Sistema Operativo posee un reloj de interrupción o temporizador de intervalos paragenerar una interrupción, en algún tiempo futuro especí.co o después de un transcurso detiempo en el futuro; la cpu es entonces despachada hacia el siguiente proceso [4, Deitel].

Un proceso retiene el control de la cpu hasta que ocurra alguna de las siguientessituaciones:

• La libera voluntariamente.

• El reloj la interrumpe.

• Alguna otra interrupción atrae la atención de la cpu.

Si el reloj interrumpe un proceso de usuario, la interrupción causa la ejecución delSistema Operativo, el que decide cuál será el proceso que obtendrá la cpu.

El reloj de interrupción ayuda a garantizar tiempos de respuesta razonables a usuariosinteractivos, ya que evita que el sistema se .cuelgue. a un solo usuario en un ciclo in.nito

y permite que los procesos respondan a eventos dependientes del tiempo.Asimismo, los procesos que necesitan una ejecución periódica dependen del reloj de

interrupción [9, Tanenbaum].

2.4 Prioridades

Las prioridades pueden ser de distinto tipo2.En el caso de prioridades asignadas arbitrariamente, un mecanismo del sistema necesitadistinguir entre procesos sin importarle cuál es el más importante.Las principales características de las prioridades estáticas son las siguientes:

• No cambian.

• Los mecanismos de implementación son sencillos.

2Ver Figura 2.2 de la página 36 [4, Deitel].

Page 58: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

36 CAPÍTULO 2. FUNDAMENTOS TEÓRICOS

Tipos de prioridades

Asignadas automáticamente por el sistema

Asignadas desde el exterior

Dinámicas

Estáticas

Asignadas racionalmente

Asignadas arbitrariamente

Tabla 2.2: Tipos de prioridades

• Implican una sobrecarga relativamente baja.

• No responden a cambios en el ambiente (contexto) que harían deseable ajustar algunaprioridad.

Las principales características de las prioridades dinámicas son las siguientes:

• Responden al cambio.

• La prioridad inicial asignada a un proceso puede durar poco tiempo, luego se lareajusta a un mejor valor.

• Los mecanismos de implementación son más complicados que para prioridades es-táticas.

• Implican una sobrecarga mayor que para esquemas estáticos.

Respecto de las prioridades adquiridas, se hace referencia al tratamiento especialque en situaciones excepcionales requiere un cierto proceso, lo que puede signi.car restarrecursos a los demás procesos.

2.5 Tipos de Planificación

2.5.1 Planificación a Plazo Fijo

Ciertos trabajos se planifican para ser terminados en un tiempo específico o plazo fijo. Esuna planificación compleja debido a los siguientes factores:

• El usuario debe suministrar anticipadamente una lista precisa de recursos necesariospara el proceso, pero generalmente no se dispone de dicha información.

• La ejecución del trabajo de plazo fijo no debe producir una grave degradación delservicio a otros usuarios.

• El sistema debe planificar cuidadosamente sus necesidades de recursos hasta el plazofijo, lo que se puede complicar con las demandas de recursos de nuevos procesos queingresen al sistema.

Page 59: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

2.5. TIPOS DE PLANIFICACIÓN 37

• La concurrencia de varios procesos de plazo fijo (activos a la vez) puede requerirmétodos sofisticados de optimización.

• La administración intensiva de recursos puede generar una considerable sobrecargaadicional.

2.5.2 Planificación Garantizada

Se establecen compromisos de desempeño con el proceso del usuario, por ejemplo, si existenn procesos en el sistema, el proceso del usuario recibirá cerca del 1/n de la potencia de lacpu.

El sistema debe tener un registro del tiempo de cpu que cada proceso ha tenido desdesu entrada al sistema y del tiempo transcurrido desde esa entrada.

Con los datos anteriores y el registro de procesos en curso de ejecución, el sistema cal-cula y determina qué procesos están más alejados por defecto de la relación 1/n prometiday prioriza los procesos que han recibido menos cpu de la prometida.

2.5.3 Planificación del Primero en Entrar Primero en Salir (FIFO)

Es muy simple, los procesos se despachan de acuerdo con su tiempo de llegada a la colade listos.

Una vez que el proceso obtiene la cpu, se ejecuta hasta terminar, ya que es una disci-plina no apropiativa..

Puede ocasionar que procesos largos hagan esperar a procesos cortos y que procesosno importantes hagan esperar a procesos importantes.

Es más predecible que otros esquemas.No puede garantizar buenos tiempos de respuesta interactivos.Suele utilizarse integrado a otros esquemas, por ejemplo, de la siguiente manera:

• Los procesos se despachan con algún esquema de prioridad.

• Los procesos con igual prioridad se despachan FIFO.

2.5.4 Planificación de Asignación en Rueda (RR: Round Robin)

Los procesos se despachan en FIFO y disponen de una cantidad limitada de tiempo decpu, llamada división de tiempo o cuanto.

Si un proceso no termina antes de expirar su tiempo de cpu ocurren las siguientesacciones:

1. La cpu es apropiada.

2. La cpu es otorgada al siguiente proceso en espera.

3. El proceso apropiado es situado al .nal de la lista de listos.

Es efectiva en ambientes de tiempo compartido.La sobrecarga de la apropiación se mantiene baja mediante mecanismos eficientes de

intercambio de contexto y con suficiente memoria principal para los procesos.

Page 60: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

38 CAPÍTULO 2. FUNDAMENTOS TEÓRICOS

2.5.5 Tamaño del Cuanto o Quantum

La determinación del tamaño del cuanto es decisiva para la operación efectiva de un sistemacomputacional [4, Deitel].

Los interrogantes son: ¿cuanto pequeño o grande?, ¿cuanto .jo o variable? y ¿cuantoigual para todos los procesos de usuarios o determinado por separado para cada uno de

ellos?.Si el cuanto se hace muy grande, cada proceso recibe todo el tiempo necesario para

llegar a su terminación, por lo cual la asignación en rueda (RR) degenera en FIFO.Si el cuanto se hace muy pequeño, la sobrecarga del intercambio de contexto se con-

vierte en un factor dominante y el rendimiento del sistema se degrada, puesto que la mayorparte del tiempo de cpu se invierte en el intercambio del procesador (cambio de contexto)y los procesos de usuario disponen de muy poco tiempo de cpu.

El cuanto debe ser lo su.cientemente grande como para permitir que la gran mayoría delas peticiones interactivas requieran de menos tiempo que la duración del cuanto, es decirque el tiempo transcurrido desde el otorgamiento de la cpu a un proceso hasta que generauna petición de Entrada / Salida debe ser menor que el cuanto establecido, de esta forma,ocurrida la petición la cpu pasa a otro proceso y como el cuanto es mayor que el tiempotranscurrido hasta la petición de Entrada / Salida, los procesos trabajan al máximo develocidad, se minimiza la sobrecarga de apropiación y se maximiza la utilización de laEntrada / Salida.

El cuanto óptimo varía de un sistema a otro y con la carga, siendo un valor de referencia100 mseg (cien milisegundos).

2.5.6 Planificación del Trabajo Más Corto Primero (SJF)

Es una disciplina no apropiativa y por lo tanto no recomendable en ambientes de tiempocompartido.

El proceso en espera con el menor tiempo estimado de ejecución hasta su terminación esel siguiente en ejecutarse.

Los tiempos promedio de espera son menores que con FIFO.

Los tiempos de espera son menos predecibles que en FIFO.

Favorece a los procesos cortos en detrimento de los largos.

Tiende a reducir el número de procesos en espera y el número de procesos que esperandetrás de procesos largos.

Requiere un conocimiento preciso del tiempo de ejecución de un proceso, lo que general-mente se desconoce.

Se pueden estimar los tiempos en base a series de valores anteriores.

Page 61: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

2.5. TIPOS DE PLANIFICACIÓN 39

2.5.7 Planificación del Tiempo Restante Más Corto (SRT)

Es la contraparte apropiativa del SJF.Es útil en sistemas de tiempo compartido.El proceso con el tiempo estimado de ejecución menor para .nalizar es el siguiente en

ser ejecutado.Un proceso en ejecución puede ser apropiado por un nuevo proceso con un tiempo

estimado de ejecución menor.

2.5.8 Tiene mayor sobrecarga que la planificación SJF.

Debe mantener un registro del tiempo de servicio transcurrido del proceso en ejecución,lo que aumenta la sobrecarga.

Los trabajos largos tienen un promedio y una varianza de los tiempos de espera aúnmayor que en SJF.

La apropiación de un proceso a punto de terminar por otro de menor duración reciénllegado podría significar un mayor tiempo de cambio de contexto (administración delprocesador) que el tiempo de finalización del primero.

Al diseñarse los Sistemas Operativos se debe considerar cuidadosamente la sobrecargade los mecanismos de administración de recursos comparándola con los beneficios espera-dos.

2.5.9 Planificación el Siguiente con Relación de Respuesta Máxima HRN

Corrige algunas de las debilidades del SJF, tales como el exceso de perjuicio hacia losprocesos (trabajos) largos y el exceso de favoritismo hacia los nuevos trabajos cortos.

Es una disciplina no apropiativa.La prioridad de cada proceso está en función no sólo del tiempo de servicio del trabajo,

sino que también in.uye la cantidad de tiempo que el trabajo ha estado esperando serservido.

Cuando un proceso ha obtenido la cpu, corre hasta terminar.Las prioridades, que son dinámicas, se calculan según la siguiente fórmula, donde pr

es la prioridad., tees el tiempo de espera. y ts es el tiempo de servicio:

pr=(te + ts)ts

2.5.10 Planificación por Prioridad

Considera factores externos al proceso [10, Tanenbaum].Las ideas centrales son que cada proceso tiene asociada una prioridad y que el proceso

ejecutable con máxima prioridad es el que tiene el permiso de ejecución.Los procesos de alta prioridad podrían ejecutar indefinidamente, ya que el planificador

del sistema puede disminuir la prioridad del proceso en ejecución en cada interrupción delreloj.

Las prioridades también pueden ser asignadas dinámicamente por el sistema para lograrciertas metas relacionadas con el procesador o la Entrada / Salida.

Page 62: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

40 CAPÍTULO 2. FUNDAMENTOS TEÓRICOS

Los procesos limitados por la Entrada / Salida (requerimientos intensivos de Entrada/ Salida) ocupan mucho de su tiempo en espera de operaciones de Entrada / Salida, porlo tanto:

• Deben tener prioridad para usar la cpu y efectuar la siguiente petición de Entrada /Salida, ya que se ejecutará (la operación de Entrada / Salida) en paralelo con otroproceso que utilice la cpu.

• Si deben esperar mucho tiempo a la cpu estarán ocupando memoria por un tiempoinnecesario.

Un algoritmo sencillo consiste en establecer que la prioridad sea 1/f, donde f es lafracción del último cuanto utilizado por el proceso.

Un proceso que utilice 2 mseg (dos milisegundos) de su cuanto de 100 mseg (cienmilisegundos) tendrá prioridad 50 (cincuenta).

Un proceso que se ejecutó 50 mseg antes del bloqueo tendrá prioridad 2.Un proceso que utilizó todo el cuanto tendrá prioridad 1.Frecuentemente los procesos se agrupan en Clases de Prioridad, en cuyo caso se

utiliza la Planificación con Prioridades entre las clases y con Round Robin (RR) dentrode cada clase. Si las prioridades no se reajustan en algún momento, los procesos de lasclases de prioridad mínima podrían demorarse indefinidamente.

2.5.11 Colas de Retroalimentación de Niveles Múltiples

Proporcionan una estructura para lograr los siguientes objetivos:Favorecer trabajos cortos.Favorecer trabajos limitados por la Entrada / Salida para optimizar el uso de los

dispositivos de Entrada / Salida.Determinar la naturaleza de un trabajo lo más rápido posible y planificar el trabajo

(proceso) en consecuencia.Un nuevo proceso entra en la red de línea de espera al .nal de la cola superior.Se mueve por esta cola .FIFO. hasta obtener la cpu.Si el trabajo termina o abandona la cpu para esperar por la terminación de una ope-

ración de Entrada / Salida o la terminación de algún otro suceso, el trabajo abandona lared de línea de espera.

Si su cuanto expira antes de abandonar la cpu voluntariamente, el proceso se colocaen la parte trasera de la cola del siguiente nivel inferior.

El trabajo recibe servicio al llegar a la cabeza de esta cola si la primera está vacía.Mientras el proceso continúe consumiendo totalmente su cuanto en cada nivel, conti-

nuará moviéndose hacia el .nal de las colas inferiores.Generalmente hay una cola en la parte más profunda a través de la cual el proceso

circula en asignación de rueda hasta que termina.Existen esquemas en los que el cuanto otorgado al proceso aumenta a medida que el

proceso se mueve hacia las colas de los niveles inferiores, en tal caso, cuanto más tiempohaya estado el proceso en la red de línea de espera, mayor será su cuanto cada vez queobtiene la cpu y no podrá obtener la cpu muy a menudo debido a la mayor prioridad delos procesos de las colas superiores.

Page 63: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

2.5. TIPOS DE PLANIFICACIÓN 41

Un proceso situado en una cola dada no podrá ser ejecutado hasta que las colas de losniveles superiores estén vacías.

Un proceso en ejecución es apropiado por un proceso que llegue a una cola superior.Es un mecanismo adaptable, es decir que se adapta a cargas variables.A los efectos de una revisión gráfica de lo enunciado precedentemente, ver la figura 2.1

de la pág.42, [4, Deitel].

2.5.12 Política Versus Mecanismo de Planificación

Puede ocurrir que haya procesos con muchos procesos hijos ejecutándose bajo su control,por ejemplo, un proceso en un DBMS con procesos hijos atendiendo funciones especí.cas,tales como, análisis de interrogantes, acceso a discos, etc.

Es posible que el proceso principal (padre) pueda identificar la importancia (o criti-cidad) de sus procesos hijos, pero los planificadores analizados no aceptan datos de losprocesos de usuario relativos a decisiones de planificación.

La solución es separar el mecanismo de planificación de la política de planifica-ción , para ello se parametriza el algoritmo de planificación y los parámetros pueden serdeterminados por medio de procesos del usuario; así el mecanismo está en el núcleo delSistema Operativo pero la política queda establecida por un proceso del usuario.

2.5.13 Planificación de Dos Niveles

Los esquemas analizados hasta ahora suponen que todos los procesos ejecutables están enla memoria principal.

Si la memoria principal es insuficiente, ocurrirá lo siguiente [10, Tanenbaum]:

• Habrá procesos ejecutables que se mantengan en disco.

• Habrá importantes implicaciones para la planificación, tales como las siguientes:

— El tiempo de alternancia entre procesos para traer y procesar un proceso deldisco es considerablemente mayor que el tiempo para un proceso que ya estáen la memoria principal.

— Es más eficiente el intercambio de los procesos con un plani.cador de dos niveles.

El esquema operativo de un plani.cador de dos niveles es como sigue:Se carga en la memoria principal cierto subconjunto de los procesos ejecutables.

1. El planificador se restringe a ellos durante cierto tiempo.

2. Periódicamente se llama a un plani.cador de nivel superior para efectuar las siguientestareas:

• Eliminar de la memoria los procesos que hayan permanecido en ella el tiemposuficiente.

• Cargar a memoria los procesos que hayan estado en disco demasiado tiempo.

Page 64: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

42 CAPÍTULO 2. FUNDAMENTOS TEÓRICOS

Figura 2.1: Tipos de planificación del procesador

Page 65: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

2.6. ESTRATEGIAS DEADMINISTRACIÓNDEL ALMACENAMIENTOVIRTUAL43

3. El planificador de nivel inferior se restringe de nuevo a los procesos ejecutables quese encuentren en la memoria.

4. El planificador de nivel superior se encarga de desplazar los procesos de memoria adisco y viceversa.

Los criterios que podría utilizar el planificador de nivel superior para tomar sus deci-siones son los que se indican a continuación:

• ¿Cuánto tiempo ha transcurrido desde el último intercambio del proceso?.

• ¿Cuánto tiempo de cpu ha utilizado recientemente el proceso?.

• ¿Qué tan grande es el proceso? (generalmente los procesos pequeños no causantantos problemas en este sentido).

• ¿Qué tan alta es la prioridad del proceso?.

El planificador de nivel superior podría utilizar cualquiera de los métodos de planifi-cación analizados.

2.6 Estrategias de Administración del Almacenamiento Vir-tual

Las diferentes organizaciones de almacenamiento virtual generalmente implementadas son[4, Deitel]:

• Paginación.

• Segmentación.

• Segmentación y paginación.

Las estrategias para la administración de sistemas de almacenamiento virtual con-dicionan la conducta de los sistemas de almacenamiento virtual que operan según esasestrategias.

Se consideran las siguientes estrategias:Estrategias de búsqueda.:

— Tratan de los casos en que una página o segmento deben ser traídos del alma-cenamiento secundario al primario.

— Las estrategias de búsqueda por demanda esperan a que se haga referenciaa una página o segmento por un proceso antes de traerlos al almacenamientoprimario.

— Los esquemas de búsqueda anticipada intentan determinar por adelantado aqué páginas o segmentos hará referencia un proceso para traerlos al almacena-miento primario antes de ser explícitamente referenciados.

Page 66: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

44 CAPÍTULO 2. FUNDAMENTOS TEÓRICOS

Estrategias de colocación:

— Tratan del lugar del almacenamiento primario donde se colocará una nuevapágina o segmento.

— Los sistemas toman las decisiones de colocación de una forma trivial ya queuna nueva página puede ser colocada dentro de cualquier marco de páginadisponible.

Estrategias de reposición:

— Tratan de la decisión de cuál página o segmento desplazar para hacer sitio auna nueva página o segmento cuando el almacenamiento primario está comple-tamente comprometido.

2.6.1 Estrategias de Reposición de Página

Las principales son:

• El principio de optimización.

• Reposición de páginas al azar.

• Primero en entrar - primero en salir.

• Menos recientemente usada.

• Menos frecuentemente usada.

• No usada recientemente.

• Conjuntos de trabajo.

2.6.2 El Principio de Optimización

El principio de optimización indica que para obtener un rendimiento óptimo, la páginaque se va a reponer es una que no se va a utilizar en el futuro durante el período de tiempomás largo.

El problema es que no es factible predecir el futuro.

2.6.3 Reposición de Página al Azar

Consiste en escoger al azar la página que va a ser reemplazada.Todas las páginas del almacenamiento principal deben tener la misma probabilidad de

ser reemplazadas.Debe poder seleccionar cualquier página, incluyendo la que va a ser referenciada a

continuación (peor selección).Este esquema es raramente usado.

Page 67: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

2.6. ESTRATEGIAS DEADMINISTRACIÓNDEL ALMACENAMIENTOVIRTUAL45

Figura 2.2: Ejemplo de anomalía de FIFO.

2.6.4 Reposición de Página por el Sistema de Primero en Entrar - Pri-mero en Salir (FIFO)

Se registra el momento en que cada página ingresa al almacenamiento primario.Para reemplazar una página, se selecciona aquella que ha estado más tiempo almace-

nada.Se presenta el inconveniente de que se pueden reemplazar páginas muy usadas, que

serán llamadas de nuevo al almacenamiento primario casi de inmediato.Se puede presentar la llamada anomalía FIFO:

• Belady, Nelson y Shedler descubrieron que con la reposición FIFO, ciertos patronesde referencias de páginas causan más fallos de páginas cuando se aumenta el númerode marcos (celdas) de páginas asignados a un proceso: en esto consiste la anomalíaFIFO.

• Esta anomalía contradice a la intuición 3.

2.6.5 Reposición de Página Menos - Recientemente - Usada (LRU)

Esta estrategia selecciona para ser reemplazada la página que no ha sido usada durante elmayor período de tiempo.

3Ver Figura 2.2 de la página 45 [4, Deitel].

Page 68: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

46 CAPÍTULO 2. FUNDAMENTOS TEÓRICOS

Se basa en la heurística de que el pasado reciente es un buen indicador del futuropróximo.

Requiere que cada página reciba un sello de tiempo cada vez que se referencia:

• Puede significar una sobrecarga adicional importante.

• No se implementa frecuentemente.

La página seleccionada para reemplazo podría ser la próxima en ser requerida, por loque habría que paginarla de nuevo al almacenamiento principal casi de inmediato.

2.6.6 Reposición de Página Menos - Frecuentemente - Usada (LFU)

Acá interesa la intensidad de uso que haya tenido cada página.La página que será reemplazada es aquella que ha sido usada con menos frecuencia o

que ha sido referida con menos intensidad.El inconveniente es que se puede seleccionar fácilmente para su reposición la página

equivocada:

• Ej.: La página de uso menos frecuente puede ser la página de entrada más recienteal almacenamiento principal, y por lo tanto existe una alta probabilidad de que sea

usada de inmediato.

2.6.7 Reposición de Página No Usada - Recientemente (NUR)

Presupone que las páginas que no han tenido uso reciente tienen poca probabilidad de serusadas en el futuro próximo y pueden ser reemplazadas por otras nuevas.

Es deseable reemplazar una página que no ha sido cambiada mientras estaba en elalmacenamiento primario.

La estrategia NUR se implementa con la adición de dos bits de hardware por página:

• Bit referenciado:

— = 0 si la página no ha sido referenciada.

— = 1 si la página ha sido referenciada.

• Bit modificado (también llamado bit sucio):

— = 0 si la página no ha sido modificada.

— = 1 si la página ha sido modificada.

La selección de la página que será reemplazada comienza buscando una página que noha sido referenciada, pero si no la encuentra habrá que reemplazar una página que ha sidoreferenciada.

Si una página ha sido referenciada se comprueba si ha sido modificada o no:

• Si no ha sido modificada se la reemplaza:

Page 69: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

2.6. ESTRATEGIAS DEADMINISTRACIÓNDEL ALMACENAMIENTOVIRTUAL47

— Su reposición representa menos sobrecarga que la de una página modi.cada, yaque debería grabarse de nuevo en el almacenamientos secundario.

• Si no se encuentra una página que no ha sido modi.cada será reemplazada una páginamodificada.

Con el transcurso del tiempo la mayoría de los bits referenciados serán activados:

• Se pierde la capacidad para distinguir las páginas más deseables para ser reempla-zadas.

Para evitarlo se ajustan periódicamente todos los bits referenciados a 0 :

— Se logra un nuevo inicio.

— Se vuelve vulnerable al reemplazo aún a las páginas activas, pero solo breve-mente,mientras se reajustan los bits.

Los bits modificados no se ajustan periódicamente según esta estrategia.

2.6.8 Localidad

El concepto de localidad expresa [4, Deitel]:Los procesos tienden a hacer referencia al almacenamiento en patrones no uniformes y

muy localizados.La .localidad. se mani.esta en el tiempo y en el espacio:

• Es una propiedad empírica (observada).

• Nunca está garantizada pero es altamente probable.

• Ej.: Los procesos tienden a favorecer ciertos subconjuntos de páginas, las que tiendena ser adyacentes entre sí en el espacio de direcciones virtuales del proceso.

• Está relacionada con la forma en que se escriben los programas y se organizan losdatos.

— Localidad temporal.: signi.ca que las localidades de almacenamiento referen-ciadas recientemente tienen una alta probabilidad de ser referenciadas en unfuturo próximo:

• Se apoya en la utilización de:

— Formación de ciclos (loops).

— Subrutinas.

— Pilas.

— Variables usadas para contar y totalizar.

Page 70: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

48 CAPÍTULO 2. FUNDAMENTOS TEÓRICOS

Localidad en el espacio.: significa que las referencias de almacenamiento tiendena acumularse de manera tal que, una vez que se hace referencia a una localidad, es muyprobable que las localidades cercanas sean también referenciadas:

• Se apoya en la utilización de:

— Recorrido de arreglos.

— Ejecución secuencial de código.

— Tendencia de los programadores a colocar de.niciones de variables relacionadas,próximas entre sí.

Un programa puede ejecutar eficientemente mientras su subconjunto de páginas pre-ferido se encuentre en el almacenamiento primario.

El número de fallos de páginas de un proceso depende de la cantidad de almacenamientoprimario disponible para sus páginas.

Generalmente los procesos no muestran patrones de referencias aleatorios uniforme-mente distribuidos por sus diferentes páginas.

Al reducir el número de marcos (celdas) de páginas disponibles para un proceso existeun intervalo durante el cual la razón de fallos de páginas no se afecta excesivamente.

En determinado punto, cuando se reduce más el número de marcos de páginas, elnúmero de fallos de páginas aumenta drásticamente.

Mientras el subconjunto de páginas favorecidas por un proceso permanezca en el al-macenamiento primario, el número de fallos de páginas no aumenta mucho.

Tan pronto como las páginas del subconjunto favorecido son retiradas del almace-namiento primario, la actividad de paginación del proceso aumenta en gran medida alreferenciar y traer de nuevo estas páginas al almacenamiento primario.

Los subconjuntos favorecidos también son llamados conjuntos de trabajo o working sets4.

2.6.9 Conjuntos de Trabajo

Denning desarrolló un punto de vista de la actividad de paginación de un programa llamadola teoría de conjunto de trabajo del comportamiento de un programa [4, Deitel] .

Un conjunto de trabajo es una colección de páginas a las cuales un proceso hace acti-vamente referencia.

Denning sostenía que para que un programa se ejecutara eficientemente, su conjunto detrabajo debe ser mantenido en el almacenamiento primario, para evitar la hiperpaginación.

Una política de administración de almacenamiento por conjunto de trabajo trata demantener el conjunto de trabajo de los programas activos en el almacenamiento primario.

La decisión de añadir un nuevo proceso al conjunto activo de procesos (aumentar elnivel de multiprogramación):

• Se basa en si hay suficiente espacio disponible en el almacenamiento primario comopara acomodar el conjunto de trabajo del nuevo proceso.

4Ver Figura 2.3 de la página 49 [4, Deitel].

Page 71: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

2.6. ESTRATEGIAS DEADMINISTRACIÓNDEL ALMACENAMIENTOVIRTUAL49

Figura 2.3: Fenómeno de localidad.

• Se toma generalmente de forma heurística ya que es imposible para el sistema conocerpor anticipado el tamaño del conjunto de trabajo de un proceso dado.

El conjunto de trabajo de páginas de un proceso w (t,w) en el momento t es el conjuntode páginas referidas por un proceso durante el intervalo de tiempo del proceso t - w a t.5.

El tiempo del proceso es el tiempo durante el cual este proceso tiene la cpu.La variable w se denomina tamaño de la ventana del conjunto de trabajo:

• La determinación del tamaño de w es muy importante.

• Al aumentar el tamaño de la ventana .w. aumenta el tamaño del conjunto de tra-bajo6.

El verdadero conjunto de trabajo de un proceso es el conjunto de páginas que debenestar en el almacenamiento primario para la ejecución eficaz de este proceso.

Los conjuntos de trabajo cambian mientras un proceso está en ejecución:

• Complica la administración precisa del almacenamiento primario en base a estaestrategia.

• Los conjuntos de trabajo son transitorios y el siguiente conjunto de trabajo del procesopuede diferir substancialmente de su conjunto de trabajo anterior.

5Ver Figura 2.5 de la página 50 [4, Deitel].6Ver Figura 2.4 de la página 50 [4, Deitel].

Page 72: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

50 CAPÍTULO 2. FUNDAMENTOS TEÓRICOS

Figura 2.4: Una definición del conjunto de trabajo de páginas de un proceso.

Figura 2.5: Tamaño del conjunto de trabajo como una función del tamaño de la ventana.

Page 73: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

2.7. PAGINACIÓN POR DEMANDA Y PAGINACIÓN ANTICIPADA 51

2.7 Paginación por Demanda y Paginación Anticipada

2.7.1 Paginación por Demanda

Las paginas son cargadas por demanda [4, Deitel].No se llevan páginas del almacenamiento secundario al primario hasta que son referen-

ciadas explícitamente por un proceso en ejecución.Las razones del atractivo de esta estrategia son:

• Los resultados de computabilidad, en especial el problema de parada, indican que elcamino que tomará la ejecución de un programa no se puede predecir con exactitud.

• Garantiza que solo las páginas que necesita el proceso sean traídas al almacenamientoprincipal.

• La sobrecarga de proceso para decidir qué página traer al almacenamiento principales mínima.

El principal inconveniente está en los procesos que requieren acumular sus páginas unapor una:

• Los tiempos de espera de páginas son considerables.

• Es creciente la cantidad de almacenamiento primario afectada al proceso que esperapáginas, por lo que el producto espacio - tiempo se incrementa.

El producto espacio - tiempo indica la cantidad de almacenamiento que usa un procesoy la cantidad de tiempo que lo usa.

La reducción del producto espacio - tiempo de las esperas de páginas de un proceso esuna meta importante de las estrategias de administración del almacenamiento7.

2.7.2 Paginación Anticipada

Un proceso usuario puede emitir una .liberación voluntaria de página. para liberar elmarco de página cuando ya no necesitara esa página [4, Deitel].

Se puede eliminar el desperdicio y acelerar la ejecución.El inconveniente es que la incorporación de mandatos de liberación de páginas dentro

de los programas de usuarios puede ser peligroso y retrasar el desarrollo de aplicaciones.Los compiladores y S. O. deberían detectar automáticamente situaciones de liberación

de página mucho antes de lo que es posible con estrategias de conjuntos de trabajo.

2.7.3 Tamaño de Página

Generalmente el almacenamiento real se divide en marcos o celdas de página de tamañofijo [4, Deitel].

Los interrogantes tienen que ver con el tamaño de las páginas, si todas las páginastendrán igual tamaño, si en caso de utilizar páginas de diferente tamaño las páginasmayores deben ser o no múltiplos enteros de las menores, etc.

7Ver Figura 2.6 de la página 52 [4, Deitel].

Page 74: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

52 CAPÍTULO 2. FUNDAMENTOS TEÓRICOS

Figura 2.6: Producto espacio - tiempo con paginación por demanda.

Algunas consideraciones para determinar el tamaño de página son las siguientes:Cuanto más pequeño sea el tamaño de una página, más páginas y marcos de páginas

habrá y mayores serán las tablas de páginas:

— El desperdicio de almacenamiento debido al tamaño excesivo de las tablas depágina se llama fragmentación de tablas.

— Esto indica la necesidad de páginas más grandes.

• Con páginas grandes, grandes cantidades de información que nunca llegaría a serreferenciada, se paginarán hacia el almacenamiento primario:

— Esto indica la necesidad de páginas más pequeñas.

• Debido a que las transferencias de e / s del disco (paginación) consumen bastantetiempo, se debe minimizar la paginación que un proceso requiera:

— Esto indica la necesidad de páginas grandes.

• Los programas tienden a mostrar la propiedad de localidad de referencia y estalocalidad tiende a ser pequeña:

— Esto indica la necesidad de páginas pequeñas.

• Los procedimientos y datos rara vez comprenden un número entero de páginas, porlo que los sistemas de paginación experimentan una .fragmentación interna.:

— El desperdicio promedio es de 1 / 2 página no usada por segmento (grupo) depáginas, que estará en la última página del segmento.

— Esto indica la necesidad de páginas pequeñas.

Los tamaños de pagina mas utilizados son: 512 b, 1 kb, 2 kb, 4 kb.

Page 75: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

2.8. PORQUÉ ES NECESARIA LA PLANIFICACIÓN DE DISCOS 53

2.7.4 Comportamiento de un Programa en la Paginación

Respecto del porcentaje de las páginas de un proceso típico referenciadas desde el momentode iniciarse su ejecución [4, Deitel]:

• Un proceso tiende a hacer referencia a una parte significativa de sus páginas inme-diatamente después de iniciar su ejecución.

• El proceso puede concluir sin haber referenciado a algunas de sus páginas, corres-pondientes a rutinas que atienden errores que no se produjeron.

Respecto de variar el tamaño de la página manteniendo constante la cantidad de al-macenamiento primario:

• El número de fallos de páginas experimentados por un proceso en ejecución tiendea aumentar con el tamaño de la página, debido a que se traen al almacenamientoprimario un mayor número de procedimientos y datos que no serán referenciados,restando lugar para los que sí lo serán.

Respecto de cómo el promedio de tiempo interfallos (tiempo entre fallos de página)varía al aumentar el número de marcos de página asignados al proceso:

• Cuanto más marcos de página tenga un proceso, mayor será el tiempo entre los fallosde páginas.

• El punto de inflexión se da cuando el proceso tiene todo su conjunto de trabajo enel almacenamiento primario.

• Asignar marcos de página adicionales más allá del punto de inflexión no produceefectos significativos sobre el tiempo interfallos.

Respecto del porcentaje de instrucciones de una página que son ejecutadas antes detransferirse el control a otra página, los valores experimentales obtenidos indican un máxi-mo de 200 instrucciones por página de 1 kb 8.

2.8 Porqué es Necesaria la Planificación de Discos

En los sistemas de multiprogramación muchos procesos pueden estar generando peticionesde e / s sobre discos [4, Deitel].

• La generación de peticiones puede ser mucho más rápida que la atención de lasmismas:

— Se construyen líneas de espera o colas para cada dispositivo.

— Para reducir el tiempo de búsqueda de registros se ordena la cola de peticiones:esto se denomina planificación de disco.

8Ver Figura 2.7 de la página 54 [4, Deitel].

Page 76: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

54 CAPÍTULO 2. FUNDAMENTOS TEÓRICOS

Figura 2.7: Comportamiento de un programa en la paginación.

Page 77: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

2.8. PORQUÉ ES NECESARIA LA PLANIFICACIÓN DE DISCOS 55

La planificación de disco implica:

• Un examen cuidadoso de las peticiones pendientes para determinar la forma máseficiente de servirlas.

• Un análisis de las relaciones posicionales entre las peticiones en espera.

• Un reordenamiento de la cola de peticiones para servirlas minimizando los movi-mientos mecánicos.

Los tipos más comunes de planificación son:

• Optimización de la búsqueda.

• Optimización rotacional (latencia).

Generalmente los tiempos de búsqueda superan a los de latencia, aunque la diferenciadisminuye:

• Muchos algoritmos de plani.cación se concentran en la reducción de los tiempos debúsqueda para un conjunto de peticiones.

• Generalmente la reducción de la latencia recién tiene efectos bajo cargas de trabajomuy pesadas.

Bajo condiciones de carga ligera (promedio bajo de longitud de la cola), es aceptableel desempeño del método FCFS (primero en llegar, primero en ser servido).

Bajo condiciones de carga media o pesada, es recomendable un algoritmo de planifica-ción de las colas de requerimientos.

2.8.1 Características Deseables de las Políticas de Planificación de Dis-cos

Los principales criterios de categorización de las políticas de plani.cación son [4, Deitel]:

• Capacidad de ejecución.

• Media del tiempo de respuesta.

• Varianza de los tiempos de respuesta (predecibilidad).

Una política de plani.cación debe intentar maximizar la capacidad de ejecución:

• Maximizar el número de peticiones servidas por unidad de tiempo.

• Minimizar la media del tiempo de respuesta.

• Mejorar el rendimiento global, quizás a costa de las peticiones individuales.

La planificación suele mejorar la imagen total al tiempo que reduce los niveles deservicio de ciertas peticiones:

Page 78: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

56 CAPÍTULO 2. FUNDAMENTOS TEÓRICOS

• Se mide utilizando la varianza de los tiempos de respuesta.

• La varianza es un término estadístico que indica hasta qué punto tienden a desviarsedel promedio de todos los elementos los elementos individuales.

• A menor varianza mayor predecibilidad.

• Se desea una política de planificación que minimice la varianza, es decir quemaximicela predecibilidad.

• No debe haber peticiones que puedan experimentar niveles de servicio erráticos.

2.9 Algoritmos de Programación del Brazo del Disco

En la mayoría de los discos, el tiempo de búsqueda supera al de retraso rotacional y alde transferencia [10, Tanenbaum], debido a ello, la reducción del tiempo promedio debúsqueda

puede mejorar en gran medida el rendimiento del sistema.Si el manejador del disco utiliza el algoritmo primero en llegar primero en ser atendido

(FCFS), poco se puede hacer para mejorar el tiempo de búsqueda.Es posible que mientras el brazo realiza una búsqueda para una solicitud, otros procesos

generen otras solicitudes.Muchos manejadores tienen una tabla:

• 2 El índice es el número de cilindro.

• 2 Incluye las solicitudes pendientes para cada cilindro enlazadas entre sí en una listaligada.

• 2 Cuando concluye una búsqueda, el manejador del disco tiene la opción de elegir lasiguiente solicitud a dar paso:

— Se atiende primero la solicitud más cercana, para minimizar el tiempo de bús-queda.

— Este algoritmo se denomina primero la búsqueda más corta (SSF: shor-test seek rst).

— Reduce a la mitad el número de movimientos del brazo en comparación conFCFS.

Ej. de SSF:

• Consideramos un disco de 40 cilindros.

• Se presenta una solicitud de lectura de un bloque en el cilindro 11.

• Durante la búsqueda, llegan solicitudes para los cilindros 1, 36, 16, 34, 9 y 12, enese orden.

• La secuencia de búsqueda SSF será: 12, 9, 16, 1, 34, 36.

Page 79: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

2.9. ALGORITMOS DE PROGRAMACIÓN DEL BRAZO DEL DISCO 57

• Habrá un número de movimientos del brazo para un total de:

— 111 cilindros según FCFS.

— 61 cilindros según SSF.

El algoritmo SSF tiene el siguiente problema:

• El ingreso de nuevas solicitudes puede demorar la atención de las más antiguas.

• Con un disco muy cargado, el brazo tenderá a permanecer a la mitad del disco lamayoría del tiempo, como consecuencia de ello las solicitudes lejanas a la mitad deldisco tendrán un mal servicio.

• Entran en con.icto los objetivos de:

— Tiempo mínimo de respuesta.

— Justicia en la atención.

La solución a este problema la brinda el algoritmo del elevador (por su analogía con elascensor o elevador):

• Se mantiene el movimiento del brazo en la misma dirección, hasta que no tiene mássolicitudes pendientes en esa dirección; entonces cambia de dirección.

• El software debe conservar el bit de dirección actual.

Ej. del algoritmo del elevador para el caso anterior, con el valor inicial arriba del bitde dirección:

• El orden de servicio a los cilindros es: 12, 16, 34, 36, 9 y 1.

• El número de movimientos del brazo corresponde a 60 cilindros.

El algoritmo del elevador:

• Ocasionalmente es mejor que el algoritmo SSF.

• Generalmente es peor que SSF.

• Dada cualquier colección de solicitudes, la cuota máxima del total de movimientosestá fija, siendo el doble del número de cilindros.

Una variante consiste en rastrear siempre en la misma dirección:

• Luego de servir al cilindro con el número mayor:

— El brazo pasa al cilindro de número menor con una solicitud pendiente.

— Continúa su movimiento hacia arriba.

Page 80: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

58 CAPÍTULO 2. FUNDAMENTOS TEÓRICOS

Algunos controladores de disco permiten que el software inspeccione el número delsector activo debajo del cabezal:

• Si dos o más solicitudes para el mismo cilindro están pendientes:

— El manejador puede enviar una solicitud para el sector que pasará debajo delcabezal.

— Se pueden hacer solicitudes consecutivas de distintas pistas de un mismo cilin-dro, sin generar un movimiento del brazo.

Cuando existen varias unidades, se debe tener una tabla de solicitudes pendientes paracada unidad.

Si una unidad está inactiva, deberá buscarse el cilindro siguiente necesario, si el con-trolador permite búsquedas traslapadas.

Cuando termina la transferencia actual se veri.ca si las unidades están en la posicióndel cilindro correcto:

• Si una o más unidades lo están, se puede iniciar la siguiente transferencia en unaunidad ya posicionada.

• Si ninguno de los brazos está posicionado, el manejador:

— Debe realizar una nueva búsqueda en la unidad que terminó la transferencia.

— Debe esperar hasta la siguiente interrupción para ver cuál brazo se posicionaprimero.

Generalmente, las mejoras tecnológicas de los discos:

• Acortan los tiempos de búsqueda (seek).

• No acortan los tiempos de demora rotacional (search).

• En algunos discos, el tiempo promedio de búsqueda ya es menor que el retrasorotacional.

• El factor dominante será el retraso rotacional, por lo tanto, los algoritmos que optimi-zan los tiempos de búsqueda (como el algoritmo del elevador) perderán importancia

frente a los algoritmos que optimicen el retraso rotacional.Una tecnología importante es la que permite el trabajo conjunto de varios discos.Una con.guración interesante es la de treinta y ocho (38) unidades ejecutándose en

paralelo.Cuando se realiza una operación de lectura:

• Ingresan a la cpu 38 bit a la vez, uno por cada unidad.

• Los 38 bits conforman una palabra de 32 bits junto con 6 bits para verificación.

• Los bits 1, 2, 4, 8, 16 y 32 se utilizan como bits de paridad.

Page 81: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

2.10. OPTIMIZACIÓN DE LA BÚSQUEDA EN DISCOS 59

• La palabra de 38 bits se puede codificar mediante el código Hamming, que es uncódigo corrector de errores.

• Si una unidad sale de servicio:

— Se pierde un bit de cada palabra.

— El sistema puede continuar trabajando; se debe a que los códigos Hamming sepueden recuperar de un bit perdido.

Este diseño se conoce como RAID; siglas en inglés de .arreglo redundante de discosno costosos.

2.10 Optimización de la Búsqueda en Discos

Las estrategias más comunes de optimización de la búsqueda son las siguientes [4, Deitel]:

• FCFS.

• SSTF.

• SCAN.

• SCAN de N - Pasos.

• C - SCAN.

• Esquema Eschenbach.

2.10.1 Planificación FCFS (Primero en Llegar, Primero en Ser Servido)

Una petición no puede ser desplazada por la llegada de una petición con prioridad másalta.

No hay reordenamiento de la cola de peticiones pendientes.

Se ignoran las relaciones posicionales entre las peticiones pendientes.Ofrece una varianza pequeña aunque perjudica a las peticiones situadas al final de la

cola.

2.10.2 Planificación SSTF (Menor Tiempo de Búsqueda Primero)

El brazo del disco se sitúa en la siguiente petición que minimice el movimiento del brazo.No respeta el orden de llegada de las peticiones a la cola.Tiende a favorecer a las pistas del centro del disco.La media de tiempos de respuesta tiende a ser más baja que con FCFS, para cargas

moderadas.Las varianzas tienden a ser mayores que con FCFS por el efecto de las pistas interiores

y exteriores.

Page 82: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

60 CAPÍTULO 2. FUNDAMENTOS TEÓRICOS

2.10.3 Planificación SCAN

El brazo del disco se desplaza sirviendo a todas las peticiones que encuentra a su paso.Cambia de dirección cuando ya no hay peticiones pendientes en la dirección actual.Ha sido la base de la mayoría de las estrategias de plani.cación implementadas.Elimina las discriminaciones de SSTF y tiene menor varianza.Las pistas exteriores son menos visitadas que las intermedias, pero no es tan grave

como con SSTF.

2.10.4 Planificación SCAN de N - Pasos

La estrategia de movimiento del brazo es como en SCAN; solo da servicio a las peticionesque se encuentran en espera cuando comienza un recorrido particular.

Las peticiones que llegan durante un recorrido son agrupadas y ordenadas y seránatendidas durante el recorrido de regreso.

Posee menor varianza de los tiempos de respuesta si se compara con las planificacionesSSTF y SCAN convencionales.

2.10.5 Planificación C - SCAN (Búsqueda Circular)

El brazo se mueve del cilindro exterior al interior, sirviendo a las peticiones sobre una basede búsqueda más corta.

Finalizado el recorrido hacia el interior, salta a la petición más cercana al cilindroexterior y reanuda su desplazamiento hacia el interior.

No discrimina a los cilindros exterior e interior.La varianza de los tiempos de respuesta es muy pequeña.

2.10.6 Esquema Eschenbach

El brazo del disco se mueve como en C - SCAN, pero:

• Las peticiones se reordenan para ser servidas dentro de un cilindro para tomar ven-taja de la posición rotacional.

• Si dos peticiones trasladan posiciones de sectores dentro de un cilindro, solo se sirveuna en el movimiento actual del brazo del disco.

Esta estrategia tiene en cuenta el retraso rotacional.

2.10.7 Conclusiones

Mediante trabajos de simulación y de laboratorio se demostró lo siguiente:

• La estrategia SCAN es la mejor con carga baja.

• La estrategia C - SCAN es la mejor con cargas medias y pesadas.

• La estrategia C - SCAN con optimización rotacional es la mejor para cargas muypesadas (mejor que la estrategia Eschenbach inclusive).

Page 83: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

2.11. OPTIMIZACIÓN ROTACIONAL EN DISCOS 61

2.11 Optimización Rotacional en Discos

En condiciones de carga pesada, las probabilidades de que ocurran referencias al mismocilindro aumentan, por ello resulta útil considerar la optimización rotacional además de la

optimización de búsqueda .La optimización rotacional es de uso común en dispositivos de cabezas fijas.La estrategia utilizada es la SLTF (tiempo de latencia más corto primero):

• Situado el brazo del disco en un cilindro:

— . Examina todas las peticiones sobre el cilindro.

— . Sirve primero a la que tiene el retraso rotacional más corto.

2.12 Consideraciones de los Discos Sobre los Sistemas

Los principales interrogantes son [4, Deitel]:

• Cuándo es útil la plani.cación de disco.

• Cuándo puede degradar el rendimiento.

El almacenamiento en disco como un recurso limitador.La planificación de disco puede mejorar el rendimiento y eliminar el embotellamiento,

que se produce cuando se concentran grandes cargas de peticiones sobre relativamentepocos discos o pocos cilindros de un disco.

Nivel de multiprogramaciónGeneralmente la planificación es efectiva en sistemas de tiempo compartido con un

nivel alto de multiprogramación.Subsistemas de discos múltiplesFrecuentemente la cpu está conectada mediante canales (o bus) a dispositivos contro-

ladores, los que están conectados a las unidades de discos.El embotellamiento puede producirse en algún disco, algún controlador o en algún

canal.Existe software específico para:

• Medir la actividad.

• Detectar dónde se produce el embotellamiento.

Para eliminar ciertos embotellamientos puede ser necesaria una recon.guración delhardware:

• Agregar canales, controladores, dispositivos.

• Cambiar dispositivos de un controlador a otro.

• Cambiar controladores de un canal a otro.

Page 84: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

62 CAPÍTULO 2. FUNDAMENTOS TEÓRICOS

Para ayudar a reducir la congestión del canal, muchos sistemas han incorporado latécnica de examen (sensado) de posición rotacional (RPS):

• Reduce el tiempo durante el cual un canal se encuentra ocupado en la búsqueda deun registro.

• RPS permite al canal quedar libre justo hasta antes de que el registro se encuentredebajo de la cabeza de lectura - grabación apropiada.

• RPS permite varias peticiones activas al mismo tiempo en un solo canal, incremen-tando la performance.

Distribución de peticiones no uniformesSon muy comunes en ciertas situaciones reales.Son frecuentes en procesos secuenciales de archivos secuenciales, para los que se afec-

taron cilindros adyacentes inmediatos.Generalmente en estos casos las búsquedas son cortas y la planificación de disco será

de poca utilidad.Técnicas de organización de archivosLos métodos de organización y acceso de archivos, así como los DBMS (manejadores

de bases de datos):

• 2 Son muy convenientes desde el punto de vista de las aplicaciones y del usuario.

• 2 Pueden generar complicaciones en la implementación y el rendimiento, puesto quesignificar un gran número de operaciones de e / s.

2.13 Manejo de Errores en Discos

Algunos de los errores más comunes en discos son [10, Tanenbaum]:

• Error de programación:

— Ej.: Solicitar un sector no existente.

• Error temporal en la suma de verificación:

— Ej.: Provocado por polvo en la cabeza.

• Error permanente en la suma de verificación:

— Ej.: Un bloque del disco dañado físicamente.

• Error de búsqueda:

— Ej.: El brazo se envía al cilindro 6 pero va al 7.

• Error del controlador:

Page 85: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

2.13. MANEJO DE ERRORES EN DISCOS 63

— Ej.: El controlador no acepta los comandos.

El manejador del disco debe controlar los errores de la mejor manera posible.La mayoría de los controladores:

• Verifican los parámetros que se les proporcionan.

• Informan si no son válidos.

Respecto de los errores temporales en la suma de verificación:

• Generalmente se eliminan al repetir la operación.

• Si persisten, el bloque debe ser marcado como un bloque defectuoso, para que elsoftware lo evite.

Otra posibilidad es que controladores inteligentes reserven cierta cantidad de pistas:

• Serán asignadas en reemplazo de pistas defectuosas.

• Una tabla asocia las pistas defectuosas con las pistas de repuesto:

— . Está alojada en la memoria interna del controlador y en el disco.

— . La sustitución es transparente para el manejador.

— . Puede afectarse el desempeño de los algoritmos de búsqueda, como el del ele-vador,ya que el controlador utiliza pistas físicamente distintas de las solicitadas.

2.13.1 Ocultamiento de Una Pista a la Vez en Discos

Generalmente el tiempo de búsqueda supera al de rotación y transferencia (aunque estose esta equilibrando) [10, Tanenbaum].

Una vez resuelta la búsqueda del cilindro correspondiente, no es muy importante si selee un sector o toda la pista:

• Especialmente en dispositivos con sensibilidad rotacional (RPS):

— El manejador puede ver que sector se encuentra debajo de la cabeza y puedeenviar una solicitud del siguiente sector:

∗ Permite leer una pista en un tiempo de rotación.∗ De lo contrario se tardaría, en promedio, un tiempo de rotación más un

tiempo de sector, para leer un solo sector.

• Algunos manejadores aprovechan esto mediante un caché secreto de una pista a lavez :

— Es desconocido por el software independiente del dispositivo.

— Si se necesita un sector del caché, no es necesaria una transferencia del disco.

— Las principales desventajas de este ocultamiento de una pista a la vez son:

Page 86: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

64 CAPÍTULO 2. FUNDAMENTOS TEÓRICOS

∗ Complejidad del software.∗ Requerimientos de espacio para buers.∗ Las transferencias del caché al programa que hace la llamada:

· Las debe realizar la cpu mediante un ciclo programado.· No las puede hacer el hardware DMA.

— Algunos controladores realizan el ocultamiento de una pista a la vez en su propiamemoria interna:

∗ Resulta transparente al manejador.∗ Las transferencias entre el controlador y la memoria pueden utilizar DMA.

2.14 Discos en RAM

Utilizan una parte de la memoria principal asignada con anterioridad para almacenar losbloques [10, Tanenbaum].

Tienen la ventaja del acceso instantáneo:

• No hay demora rotacional o debida a las búsquedas.

• Son adecuados para el almacenamiento de programas o datos con accesos muy fre-cuentes.

Los bloques de almacenamiento tienen el mismo tamaño que en los discos reales.Cuando el manejador debe leer de o escribir en un bloque de un disco en RAM, calcula

el lugar de la memoria donde se encuentra el bloque solicitado y lee o escribe en el mismo.

2.15 Relojes

Los relojes o cronómetros son esenciales para la operación de sistemas de tiempo compar-tido [10, Tanenbaum].

Registran la hora del día.Evitan que un proceso monopolice la cpu.El software para reloj toma generalmente la forma de un manejador de dispositivo,

aunque no es un dispositivo de bloque ni de caracter.Los relojes más sencillo trabajan con la línea de corriente eléctrica de 110 o 220 voltios

y provocan una interrupción por cada ciclo de voltaje, a 50 o 60 hz.Otro tipo de relojes consta de tres componentes:

• Un oscilador de cristal, un contador y un registro.

• Una pieza de cristal de cuarzo se monta en una estructura bajo tensión:

— Genera una señal periódica de muy alta precisión, generalmente entre 5 y 100mhz.

— La señal se alimenta en el contador para que cuente en forma descendente hastacero.

Page 87: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

2.16. TERMINALES 65

— Cuando el contador llega a cero, provoca una interrupción de la cpu.

Los relojes programables tienen varios modos de operación:

• Modo de una instancia:

— Cuando el reloj se inicializa, copia el valor del registro en el contador.

— Decrementa el contador en cada pulso del cristal.

— Cuando el contador llega a cero provoca una interrupción y se detiene hasta sernuevamente inicializado por el software.

• Modo de onda cuadrada:

— Luego de llegar a cero y provocar la interrupción, el registro se copia de maneraautomática en el contador.

— Todo el programa se repite en forma indefinida.

— Las interrupciones periódicas se llaman marcas del reloj.

La ventaja del reloj programable es que su frecuencia de interrupción puede ser con-trolada por el software.

Las principales funciones del software manejador del reloj son:

• Mantener la hora del día o tiempo real.

• Evitar que los procesos se ejecuten durante más tiempo del permitido.

• Mantener un registro del uso de la cpu.

• Controlar llamadas al sistema tipo .alarm. por parte de los procesos del usuario.

• Proporcionar cronómetros guardianes de partes del propio sistema.

• Realizar resúmenes, monitoreo y recolección de estadísticas.

El software manejador del reloj puede tener que simular varios relojes virtuales con unúnico reloj físico.

2.16 Terminales

Las terminales tienen gran número de formas distintas [10, Tanenbaum] :

• El manejador de la terminal debe ocultar estas diferencias.

• La parte independiente del dispositivo en el S. O. y los programas del usuario no setienen que reescribir para cada tipo de terminal.

Desde el punto de vista del S. O. se las puede clasi.car en:

Page 88: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

66 CAPÍTULO 2. FUNDAMENTOS TEÓRICOS

• Interfaz RS-232:

— Hardcopy (terminales de impresión).

— TTY de vidrio (terminales de video).

— Inteligente (computadoras con cpu y memoria).

• Interfaz mapeada a memoria:

— Orientada a caracteres.

— Orientada a bits.

Las terminales RS-232 poseen un teclado y un monitor que se comunican medianteuna interfaz serial, un bit a la vez; las conversiones de bits a bytes y viceversa las efectúanlos chips uart (transmisores - receptores asíncronos universales).

Las terminales mapeadas a memoria:No se comunican mediante una línea serial.

• Poseen una interfaz mediante una memoria especial llamada video RAM:

— Forma parte del espacio de direcciones de la computadora.

— La cpu se dirige a ella como al resto de la memoria.

— En la tarjeta de video RAM hay un chip llamado controlador de video:

∗ Extrae bytes del video RAM y genera la señal de video utilizada paramanejar la pantalla.

∗ El monitor genera un rayo de electrones que recorre la pantalla pintandolíneas.

∗ Cada línea está constituida por un cierto número de puntos o pixeles.∗ La señal del controlador de video modula el rayo de electrones y determina

si un pixel debe estar o no iluminado.∗ Los monitores de color poseen tres rayos (rojo, verde y azul) que se modulan

independientemente.

En las pantallas mapeadas a caracteres:Cada caracter en la pantalla equivale a dos caracteres de RAM:

— . Uno aloja al código (ASCII) del caracter por exhibir.

— . Otro es el byte de atributo, necesario para determinar el color, el video inverso,el parpadeo, etc.

En las terminales mapeadas a bits:

• Se utiliza el mismo principio.

• Cada bit en el video RAM controla en forma directa un solo pixel de la pantalla.

Page 89: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

2.17. PROCESOS Y PROCESADORES EN SISTEMAS DISTRIBUIDOS 67

• Permite una completa .exibilidad en los tipos y tamaños de caracteres, varias ven-tanas y grá.cos arbitrarios.

Con las pantallas mapeadas a memoria, el teclado se desacopla totalmente de la pan-talla :

El teclado dispone de su propio manejador.

• El manejador del teclado puede operar en modo caracter o en modo línea.

Las terminales pueden operar con una estructura central de buffers o con buffers ex-clusivos para cada terminal.

Frecuentemente los manejadores de terminales soportan operaciones tales como:

• Mover el cursor hacia arriba, abajo, a la izquierda o a la derecha una posición.

• Mover el cursor a x,y.

• Insertar un caracter o una línea en el cursor.

• Eliminar un caracter o una línea en el cursor.

• Recorrer la pantalla hacia arriba o hacia abajo .n. líneas.

• Limpiar la pantalla desde el cursor hacia el final de la línea o hasta el final de lapantalla.

• Trabajar en modo de video inverso, subrayado, parpadeo o normal.

• Crear, construir, mover o controlar las ventanas.

2.17 Procesos y Procesadores en Sistemas Distribuidos

2.18 Introducción a los Hilos (Threads)

Muchos S. O. distribuidos soportan múltiples hilos de control dentro de un proceso que[11, Tanenbaum]:

Comparten un único espacio de direcciones.

• Se ejecutan quasi - paralelamente como si fueran procesos independientes.

Ej.: servidor de archivos que debe bloquearse ocasionalmente en espera de acceso aldisco:

• Si tiene varios hilos de control podría ejecutar un segundo hilo mientras el primeroespera:

— El resultado sería mejor rendimiento y desempeño.

— No se logra esto con procesos servidores independientes puesto que deben com-partir un buffer caché común y deben estar en el mismo espacio de direcciones.

Page 90: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

68 CAPÍTULO 2. FUNDAMENTOS TEÓRICOS

En muchos sentidos los hilos son como miniprocesos:

• Cada hilo:

— Se ejecuta en forma estrictamente secuencial.

— Tiene su propio contador de programa y una pila para llevar un registro de suposición.

• Los hilos comparten la cpu de la misma forma que lo hacen los procesos:

— Secuencialmente, en tiempo compartido.

• Solo en un multiprocesador se pueden ejecutar realmente en paralelo.

• Los hilos pueden crear hilos hijos.

• Mientras un hilo está bloqueado se puede ejecutar otro hilo del mismo proceso.

Los distintos hilos de un proceso comparten un espacio de direcciones, el conjunto dearchivos abiertos, los procesos hijos, cronómetros, señales, etc.

Los hilos pueden tener distintos estados: en ejecución, bloqueado, listo, terminado.

2.18.1 Uso de Hilos

Los hilos permiten la combinación del paralelismo con la ejecución secuencial y el bloqueode las llamadas al sistema [11, Tanenbaum] .

Consideramos el ejemplo del servidor de archivos con sus posibles organizaciones paramuchos hilos de ejecución.

Iniciamos con el modelo servidor / trabajador:

• Un hilo, el servidor, lee las solicitudes de trabajo en el buzón del sistema.

• Elige a un hilo trabajador inactivo (bloqueado) y le envía la solicitud, despertándolo.

El hilo trabajador verifica si puede satisfacer la solicitud por medio del bloque cachécompartido, al que tienen acceso todos los hilos.

• Si no envía un mensaje al disco para obtener el bloque necesario y se duerme espe-rando el fin de la operación.

• Se llama:

— Al planificador y se inicializa otro hilo, que tal vez sea el servidor, para pedirmás trabajo; o.

— A otro trabajador listo para realizar un trabajo.

Los hilos ganan un desempeño considerable pero cada uno de ellos se programa enforma secuencial.

Otro modelo es el de equipo:

Page 91: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

2.18. INTRODUCCIÓN A LOS HILOS (THREADS) 69

• Todos los hilos son iguales y cada uno obtiene y procesa sus propias solicitudes.

• No hay servidor.

• Se utiliza una cola de trabajo que contiene todos los trabajos pendientes, que sontrabajos que los hilos no han podido manejar.

• Un hilo debe veri.car primero la cola de trabajo antes de buscar en el buzón delsistema.

Un tercer modelo es el de entubamiento:El primer hilo genera ciertos datos y los trans.ere al siguiente para su procesamiento.

• 2 Los datos pasan de hilo en hilo y en cada etapa se lleva a cabo cierto procesamiento.

Un programa diseñado adecuadamente y que utilice hilos debe funcionar bien:

• 2 En una única cpu con hilos compartidos.

• 2 En un verdadero multiprocesador.

2.18.2 Aspectos del Diseño de un Paquete de Hilos

Un conjunto de primitivas relacionadas con los hilos (ej.: llamadas a biblioteca) disponiblespara los usuarios se llama un .paquete de hilos. [11, Tanenbaum] .

Respecto del manejo de los hilos se tienen hilos estáticos e hilos dinámicos.En un diseño estático:

• Se elige el número de hilos al escribir el programa o durante su compilación.

• Cada uno de ellos tiene asociada una pila .ja.

• Se logra simplicidad pero también in.exibilidad

En un diseño dinámico:

• Se permite la creación y destrucción de los hilos durante la ejecución.

• La llamada para la creación de hilos determina:

— El programa principal del hilo.

— Un tamaño de pila.

— Una prioridad de planificación, etc.

• La llamada generalmente regresa un identi.cador de hilo:

— Se usará en las posteriores llamadas relacionadas al hilo.

• Un proceso:

Page 92: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

70 CAPÍTULO 2. FUNDAMENTOS TEÓRICOS

— Se inicia con un solo hilo.

— Puede crear el número necesario de hilos.

— Los hilos pueden concluir:

• Por su cuenta, al terminar su trabajo.

• Por su eliminación desde el exterior.

— Los hilos comparten una memoria común:

• Contiene datos que los distintos hilos comparten.

• El acceso generalmente se controla mediante regiones críticas.

2.19 Implantación de un Paquete de Hilos

Un paquete de hilos se puede implantar en el espacio [11, Tanenbaum]:

• Del usuario.

• Del núcleo.

Implantación del paquete de hilos en el espacio del usuario:

• El núcleo no sabe de su existencia.

• El núcleo maneja procesos con un único hilo.

• No requiere soporte de hilos por parte del S. O.

• Los hilos se ejecutan en un sistema de tiempo de ejecución:

— Es un grupo de procedimientos que manejan los hilos.

• Cuando un hilo ejecuta una llamada al sistema o cualquier acción que pueda provocarsu suspensión:

• Llama a un procedimiento del sistema de tiempo de ejecución.

• El procedimiento veri.ca si hay que suspender al hilo, en cuyo caso:

∗ Almacena los registros del hilo en una tabla.∗ Busca un hilo no bloqueado para ejecutarlo.∗ Vuelve a cargar los registros de la máquina con los valores resguardados

del nuevo hilo.

• Las principales ventajas son:

— El intercambio de hilos es más rápido que si se utilizaran los señalamientos alnúcleo.

Page 93: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

2.19. IMPLANTACIÓN DE UN PAQUETE DE HILOS 71

— Cada proceso puede tener su propio algoritmo adaptado de planificación dehilos.

— Tienen una mejor escalabilidad para un número muy grande de hilos, ya queno afectan al núcleo con tablas y bloques de control (pila).

Implantación del paquete de hilos en el espacio del núcleo:

• No se necesita un sistema de tiempo de ejecución.

• Para cada proceso el núcleo tiene una tabla con una entrada por cada hilo quecontiene:

— Los registros, estados, prioridades y demás información relativa al hilo.

• Todas las llamadas que pueden bloquear un hilo se implantan como llamadas alsistema:

— Significa un costo mayor (en recursos y tiempo).

• Cuando un hilo se bloquea, el núcleo puede ejecutar:

— Otro hilo listo del mismo proceso.

— Un hilo de otro proceso:

∗ Con los hilos a nivel usuario el sistema de tiempo de ejecución mantiene enejecución los hilos de su propio proceso hasta que:· El núcleo les retira la cpu, o.· No hay hilos listos.

Un problema fundamental de los paquetes de hilos a nivel usuario es el de las llamadasal sistema con bloqueo:

• No se puede permitir que el hilo realmente realice la llamada al sistema:

— Detendría a todos los hilos del proceso.

— Un hilo bloqueado no debe afectar a los demás.

• Una solución es agregar código junto a la llamada al sistema para verificar si lamisma no generaría bloqueo:

— . Se efectuaría la llamada al sistema solo si la veri.cación da o.k.

— . El código adicional suele llamarse jacket.

Otro problema de los paquetes de hilos a nivel usuario es que si un hilo comienza suejecución no puede ejecutarse ningún otro hilo de ese proceso, salvo que el hilo entreguevoluntariamente la cpu.

Un problema adicional para los hilos a nivel usuario es que generalmente los progra-madores desean los hilos en aplicaciones donde los hilos se bloquean a menudo:

• Ej.: servidor de archivos con varios hilos.

Page 94: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

72 CAPÍTULO 2. FUNDAMENTOS TEÓRICOS

2.20 Hilos y RPC

Es común que los sistemas distribuidos utilicen RPC e hilos [11, Tanenbaum].Al iniciar un hilo servidor, S, éste exporta su interfaz al informarle de ésta al núcleo;

la interfaz de.ne los procedimientos que puede llamar, sus parámetros, etc.Al iniciar un hilo cliente, C, éste importa la interfaz del núcleo:

• Se le proporciona un identi.cador especial para utilizarlo en la llamada.

• El núcleo sabe que C llamará posteriormente a S:

— Crea estructuras de datos especiales para prepararse para la llamada.

Una de las estructuras es una pila de argumentos compartida por C y S, que se asociade manera lectura / escritura en ambos espacios de direcciones.

Para llamar al servidor, C :

• Coloca sus argumentos en la pila compartida mediante el procedimiento normal detransferencia.

• Hace un señalamiento al núcleo colocando un identificador especial en un registro.

El núcleo:

• Detecta esto y deduce que es una llamada local.

• Modifica el mapa de memoria del cliente para colocar éste en el espacio de direccionesdel servidor.

• Inicia el hilo cliente, al ejecutar el procedimiento del servidor

La llamada se efectúa de tal forma que:

• Los argumentos se encuentran ya en su lugar:

— No es necesario su copiado u ordenamiento.

— La RPC local se puede realizar más rápido de esta manera.

Page 95: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

Capítulo 3

JAVA

3.1 Introducción al Lenguaje

Java es un lenguaje orientado a objetos. Esto significa que posee ciertas característicasque hoy día se consideran estándares en los lenguajes OO:

• Objetos.

• Clases.

• Métodos.

• Subclases.

• Herencia simple.

• Enlace dinámico.

• Encapsulamiento.

Para programar orientado a objetos es necesario primero diseñar un conjunto de clases.La claridad, eficiencia y mantenibilidad del programa resultante dependerá principalmentede la calidad del diseño de clases. Un buen diseño de clases significará una gran economíaen tiempo de desarrollo y mantención.

Lamentablemente se necesita mucha habilidad y experiencia para lograr diseños declases de calidad. Un mal diseño de clases puede llevar a programas OO de peor calidady de más alto costo que el programa equivalente no OO [8, Castillo-Cobo-Solares].

Por qué entonces la ventaja de programar en un lenguaje OO, si se requiere unaexperiencia que probablemente una persona nunca tendrá el tiempo de práctica para llegara obtenerla. La respuesta a este interrogante es que Java es un lenguaje multiparadigma(como muchos otros lenguajes de programación). No se necesita hacer un diseño de clasespara programar una aplicación de mil líneas.

Entonces otro interrogante podrá ser porque no programar con otro lenguaje mássimples, como puede ser Visual Basic, si no se necesita que sea OO. La respuesta a éstoes la gran ventaja de un lenguaje OO, que son las bibliotecas de clases que se puedenconstruir para la aplicación [6, Joyanes Aguilar-Zahonero Martínez]. Una biblioteca de

73

Page 96: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

74 CAPÍTULO 3. JAVA

clases cumple el mismo objetivo de una biblioteca de procedimientos en una lenguaje comoC. Sin embargo:

Una biblioteca de clases es mucho más fácil de usar que una biblioteca de procedimien-tos, incluso para programadores sin experiencia en orientación a objetos. Esto se debe aque las clases ofrecen mecanismos de abstracción más eficaces que los procedimientos.

Se puede distinguir entre varios tipos de programadores en Java:

— El diseñador de clases: Es el encargado de definir qué clases ofrece unabiblioteca y cuál es la funcionalidad que se espera de estas clases. Esta personatiene que ser muy hábil y de mucha experiencia. Un diseño equivocado puedeconducir a clases que son incomprensibles para los clientes de la biblioteca.

— El programador de clases de biblioteca: Sólo programa la clases especi-ficadas por el diseñador de clases. Esta persona debe entender orientación aobjetos, pero no requiere mayor experiencia en diseño de clases.

— El cliente de bibliotecas: Es el programador de aplicaciones. Él sólo usa lasclases que otros han diseñado y programado. Como en el caso anterior necesitaentender orientación a objetos y conocer la biblioteca que va usar, pero nonecesita mayor experiencia.

Tanto programadores de clases como clientes de bibliotecas pueden llegar a convertirseen buenos diseñadores de clases en la medida que adquieran experiencia, comparando losdiseños de las bibliotecas que utilicen.

Por lo tanto es importante destacar que no se necesita gran experiencia en diseñoorientado a objetos para poder aprovechar las ventajas de la orientación a objetos [2,Joyanes Aguilar].

3.1.1 Bibliotecas de Clases Estándares de Java

Toda implementación de Java debe tener las siguientes bibliotecas de clases:

• Manejo de archivos.

• Comunicación de datos.

• Acceso a la red Internet..

• Acceso a bases de datos.

• Interfaces gráficas.

La interfaz de programación de estas clases es estándar, es decir en todas ellas lasoperaciones se invocan con el mismo nombre y los mismos argumentos.

3.1.2 Java es Multiplataforma

Los programas en Java pueden ejecutarse en cualquiera de las siguientes plataformas, sinnecesidad de hacer cambios:

Page 97: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

3.1. INTRODUCCIÓN AL LENGUAJE 75

Windows/95 y /NT.

Power/Mac.

Unix (Solaris, Silicon Graphics, ...).

La compatibilidad es total:A nivel de fuentes: El lenguaje es exactamente el mismo en todas las plataformas.A nivel de bibliotecas: En todas las plataformas están presentes las mismas biblio-

tecas estándares.A nivel del código compilado: el código intermedio que genera el compilador es el

mismo para todas las plataformas. Lo que cambia es el intérprete del código intermedio.

3.1.3 Características del Lenguaje Java

• Robustez

En Java no se pueden cometer los cuatro errores que se mencionarán a continuación:Java siempre chequea los índices al acceder a un arreglo.Java realiza chequeo de tipos durante la compilación (al igual que C). En una asigna-

ción entre punteros el compilador verifica que los tipos sean compatibles.Además, Java realiza chequeo de tipos durante la ejecución (cosa que C y C++ no

hacen). Cuando un programa usa un cast para acceder a un objeto como si fuese de untipo específico, se verifica durante la ejecución que el objeto en cuestión sea compatible conel cast que se le aplica. Si el objeto no es compatible, entonces se levanta una excepciónque informa al programador la línea exacta en donde está la fuente del error.

Java posee un recolector de basuras que administra automáticamente la memoria. Esel recolector el que determina cuando se puede liberar el espacio ocupado por un objeto.El programador no puede liberar explícitamente el espacio ocupado por un objeto.

Java no posee aritmética de punteros, porque es una propiedad que no se necesita paraprogramar aplicaciones. En C sólo se necesita la aritmética de punteros para programamalloc/free o para programar el núcleo del sistema operativo.

Por lo tanto Java no es un lenguaje para hacer sistemas operativos o administradoresde memoria, pero sí es un excelente lenguaje para programar aplicaciones.

• Flexibilidad

Java combina flexibilidad, robustez y legibilidad gracias a una mezcla de chequeo detipos durante la compilación y durante la ejecución. En Java se pueden tener punteros aobjetos de un tipo específico y también se pueden tener punteros a objetos de cualquiertipo. Estos punteros se pueden convertir a punteros de un tipo específico aplicando uncast, en cuyo caso se chequea en tiempo de ejecución de que el objeto sea de un tipocompatible.

El programador usa entonces punteros de tipo específico en la mayoría de los casoscon el fin de ganar legibilidad y en unos pocos casos usa punteros a tipos desconocidoscuando necesita tener flexibilidad. Por lo tanto Java combina la robustez de Pascal conla flexibilidad de Lisp, sin que lo programas pierdan legibilidad en ningún caso.

• Administración Automática de la Memoria

Page 98: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

76 CAPÍTULO 3. JAVA

En Java los programadores no necesitan preocuparse de liberar un trozo de memoriacuando ya no lo necesitan. Es el recolector de basuras el que determina cuando se puedeliberar la memoria ocupada por un objeto.

Un recolector de basuras es un gran aporte a la productividad. Se ha estudiado encasos concretos que los programadores han dedicado un 40% del tiempo de desarrollo adeterminar en qué momento se puede liberar un trozo de memoria.

Además este porcentaje de tiempo aumenta a medida que aumenta la complejidad delsoftware en desarrollo. Es relativamente sencillo liberar correctamente la memoria en unprograma de 1000 líneas. Sin embargo, es difícil hacerlo en un programa de 10000 líneas.Y se puede postular que es imposible liberar correctamente la memoria en un programade 100000 líneas.

Para entender mejor esta afirmación, se podría suponer que se realizó un programade 1000 líneas hace un par de meses y ahora se necesita hacer algunas modificaciones.Ahora, para esta altura ya se habrán olvidado gran parte de los detalles de la lógica deese programa y no será sencillo determinar si un puntero referencia un objeto que todavíaexiste, o si ya fue liberado. Peor aún, supóngase que el programa fue hecho por otrapersona y evalúe cuán probable es cometer errores de memoria al tratar de modificar eseprograma.

Volviendo al caso de un programa de 100000 líneas. Este tipo de programas los desarro-lla un grupo de programadores que pueden tomar años en terminarlo. Cada programadordesarrolla un módulo que eventualmente utiliza objetos de otros módulos desarrolladospor otros programadores. Entonces, quién libera la memoria de estos objetos, cómo seponen de acuerdo los programadores sobre cuándo y quién libera un objeto compartido,o cómo probar el programa completo ante las infinitas condiciones de borde que puedenexistir en un programa de 100000 líneas.

Es inevitable que la fase de prueba dejará pasar errores en el manejo de memoria quesólo serán detectados más tarde por el usuario final. Probablemente se incorporan otroserrores en la fase de mantención.

Resumiendo, se puede concluir que: todo programa de 100000 líneas que libera explíci-tamente la memoria tiene errores latentes, sin un recolector de basuras no hay verdaderamodularidad y un recolector de basuras resuelve todos los problemas de manejo de me-moria en forma trivial.

El interrogante sería cuál es el impacto de un recolector de basura en el desempeñode un programa. El sobrecosto de la recolección de basuras no es superior al 100%. Esdecir si se tiene un programa que libera explícitamente la memoria y que toma tiempo X,el mismo programa modificado de modo que utilice un recolector de basuras para liberarla memoria tomará un tiempo no superior a 2X. Este sobrecosto no es importante si seconsidera el periódico incremento en la velocidad de los procesadores.

El impacto que un recolector de basura en el tiempo de desarrollo y en la confiabilidaddel software resultante es muchos más importante que la pérdida en eficiencia.

3.2 Estructura General de un Programa Java

En el siguiente ejemplo se presenta la estructura habitual de un programa realizado encualquier lenguaje orientado a objetos u OOP (Object Oriented Programming), y en par-

Page 99: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

3.3. CONCEPTOS BÁSICOS 77

ticular en el lenguaje Java:

import java.awt.*;import java.lang.String;import java.lang.Integer;

import java.awt.event.WindowEvent;

import java.util.*;

import java.awt.TextField;

public class Simu extends Frame implements ActionListener,ItemListener{

MenuBar barra;

m1 =new Menu(“Archivo”);

barra.add(m1);

m2 =new Menu(“Ver”);

barra.add(m2);

....

public static void main(String argv [ ]){

Simu menus = new Simu();

menus.setTitle(“Simulación de Redes”);

menus.setVisible(true);

}

}

Aparece una clase que contiene el programa principal Simu (aquel que contiene lafunción main()) y algunas clases de usuario (las específicas de la aplicación que se estádesarrollando) que son utilizadas por el programa principal. La aplicación se ejecuta pormedio del nombre de la clase que contiene la funciónmain(). Las clases de Java se agrupanen packages, que son librerías de clases. Si las clases no se definen como pertenecientes aun package, se utiliza un package por defecto (default) que es el directorio activo.

3.3 Conceptos Básicos

3.3.1 Clase

Una clase es una agrupación de datos (variables o campos) y de funciones (métodos)que operan sobre esos datos. A estos datos y funciones pertenecientes a una clase se lesdenomina variables y métodos o funciones miembro. La programación orientada a objetosse basa en la programación de clases [2, Joyanes]. Un programa se construye a partir deun conjunto de clases.

Una vez definida e implementada una clase, es posible declarar elementos de esta clasede modo similar a como se declaran las variables del lenguaje (int, double, String). Loselementos declarados de una clase se denominan objetos de la clase. De una única clase sepueden declarar o crear numerosos objetos. La clase es lo genérico: es el patrón o modelo

Page 100: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

78 CAPÍTULO 3. JAVA

para crear objetos. Cada objeto tiene sus propias copias de las variables miembro, con suspropios valores, en general distintos de los demás objetos de la clase. Las clases puedentener variables static, que son propias de la clase y no de cada objeto [?, Bosz].

Ejemplo:

public abstract class FuncionActivacion implements Cloneable,Serializable{

/*constructor sin argumentos que permite la herencia */

public FuncionActivacion () {

}

}

3.3.2 Herencia

La herencia permite que se puedan definir nuevas clases basadas en clases existentes, lo cualfacilita reutilizar código previamente desarrollado. Si una clase deriva de otra (extends)hereda todas sus variables y métodos. La clase derivada puede añadir nuevas variables ymétodos y/o redefinir las variables y métodos heredados.

En Java, a diferencia de otros lenguajes orientados a objetos, una clase sólo puedederivar de una única clase, con lo cual no es posible realizar herencia múltiple en base aclases. Sin embargo es posible “simular” la herencia múltiple en base a las interfaces.

3.3.3 Interface

Una interface es un conjunto de declaraciones de funciones. Si una clase implementa(implements) una interface, debe definir todas las funciones especificadas por la interface.Una clase puede implementar más de una interface, representando una forma alternativade la herencia múltiple.

Una interface puede derivar de otra o incluso de varias interfaces, en cuyo caso incor-pora todos los métodos de las interfaces de las que deriva.

Ejemplo: La clase TangenteHiperbolica se extiende de la clase FuncionActivacion queimplementa la interface Serializable.

/*función de activación tangente hiperbólica */

public class TangenteHiperbolica extends FuncionActivacion implements Serializable{

/*constructor sin argumentos */

public TangenteHiperbolica () {

}

}

Page 101: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

3.4. VARIABLES DENTRO DEL LENGUAJE JAVA 79

3.3.4 Package

Un package es una agrupación de clases. Existen una serie de packages incluidos en ellenguaje.

Además el programador puede crear sus propios packages. Todas las clases que formenparte de un package deben estar en el mismo directorio.

Los packages se utilizan con las siguientes finalidades:

1. Para agrupar clases relacionadas.

2. Para evitar conflictos de nombres. En caso de conflicto de nombres entre clasesimportadas, el compilador obliga a cualificar en el código los nombres de dichasclases con el nombre del package.

3. Para ayudar en el control de la accesibilidad de clases y miembros.

Por las razones citadas, durante la etapa de Diseño del Software desarrollado, se hadecido crear dos paquetes, calculos e interfase, utilizando la sentencia package.

package myprojects.simu;

import myprojects.calculos.*;

import myprojects.interfase.*;

3.3.5 La Jerarquía de Clases de Java (API)

Durante la generación de código en Java, es recomendable y casi necesario tener siempre ala vista la documentación on-line del API de Java 1.1 o Java 1.2. En dicha documentaciónes posible ver tanto la jerarquía de clases, es decir la relación de herencia entre clases, comola información de los distintos packages que componen las librerías base de Java.

Es importante distinguir entre lo que significa herencia y package. Un package es unaagrupación arbitraria de clases, una forma de organizar las clases. La herencia sin embargoconsiste en crear nuevas clases en base a otras ya existentes. Las clases incluidas en unpackage no derivan en general de la misma clase.

En la documentación on-line se presentan ambas visiones: “Package Index” y “ClassHierarchy”. La primera presenta la estructura del API de Java agrupada por packages,mientras que en la segunda aparece la jerarquía de clases. Hay que resaltar el hecho deque todas las clases en Java son derivadas de la clase java.lang.Object, por lo que heredantodos los métodos y variables de ésta.

Si se selecciona una clase en particular, la documentación muestra una descripcióndetallada de todos los métodos y variables de la clase. A su vez muestra su herenciacompleta (partiendo de la clase java.lang.Object).

3.4 Variables Dentro del Lenguaje Java

Una variable en Java es un identificador que representa una palabra de memoria quecontiene información. El tipo de información almacenado en una variable sólo puede serdel tipo con que se declaró esa variable.

En Java hay dos tipos principales de variables:

Page 102: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

80 CAPÍTULO 3. JAVA

1. Variables de tipos primitivos. Están definidas mediante un valor único y almace-nan directamente ese valor siempre que pertenezca al rango de ese tipo. Por ejemplouna variable int almacena un valor entero como 1, 2, 0, -1, etc. Esto significa que alasignar una variable entera a otra variable entera, se copia el valor de la primera enel espacio que ocupa la segunda variable.

2. Variables referencia. Las variables referencia son referencias o nombres de una in-formación más compleja: arrays u objetos de una determinada clase. Una referenciaa un objeto es la dirección de un área en memoria destinada a representar ese objeto.El área de memoria se solicita con el operador new. Al asignar una variable de tiporeferencia a objeto a otra variable se asigna la dirección y no el objeto referenciadopor esa dirección. Esto significa que ambas variables quedan referenciando el mismoobjeto. En Java una variable no puede almacenar directamente un objeto, comoocurre en C y C++. Por lo tanto cuando se dice en Java que una variable es unstring, lo que se quiere decir en realidad es que la variable es una referencia a unstring.

Desde el punto de vista de su papel dentro del programa, las variables pueden ser:

1. Variables miembro de una clase: Se definen en una clase, fuera de cualquiermétodo; pueden ser tipos primitivos o referencias.

2. Variables locales: Se definen dentro de un método o más en general dentro decualquier bloque entre llaves {}. Se crean en el interior del bloque y se destruyen alfinalizar dicho bloque. Pueden ser también tipos primitivos o referencias.

En la Tabla 3.1 de la pág. 80 se muestra una declaración, el nombre de la variableintroducida y el tipo de información que almacena la variable:

Declaración Identificador Tipo

int i; i enteroString s; s referencia a stringint a []; a referencia a arreglo de enterosint[]b; b referencia a arreglo de enteros

Tabla 3.1: Tipos de Variables.

En la Tabla 3.2 de la pág. 81 se muestran las dos grandes categorías de tipos para lasvariables en Java:

En la Tabla 3.3de la pág. 81 se indica para cada tipo primitivo el número de bits que seemplea en su representación y el rango de valores que se puede almacenar en las variablesde estos tipos.

Se dice que un tipo A es de mayor rango que un tipo B si A es un superconjunto deB. Esto quiere decir que las variables de tipo B siempre se pueden asignar a variables detipo A (eventualmente con pérdida de significancia).

Por ejemplo int es de mayor rango que short, que a su vez es de mayor rango que byte.Float y double son de mayor rango que int. Double es de mayor rango que float.

Page 103: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

3.4. VARIABLES DENTRO DEL LENGUAJE JAVA 81

Tipos Primitivos Referencias a Objetos

int, short, byte, long Stringschar, boolean Arreglosfloat, double otros objetos

Tabla 3.2: Categorías de Variables.

Tipo Bits Rango Ejemplos

int 32 −231..231 − 1 0,1,5,-120,...short 16 −215..215 − 1 0,1,5,-120,...byte 8 −27..27 − 1 0,1,5,-120,...long 64 −263..263 − 1 0,1,5,-120,...

boolean 1 n/a false, truechar 16 n/a ‘a’,‘A’,‘0’,‘*’,...float 32 IEEE 1.2

double 64 IEEE 1.2

Tabla 3.3: Tipos Primitivos de Variables.

Esto se puede quedar resumido de la siguiente manera:

double > float > long > int > short > byte

3.4.1 Visibilidad y Vida de las Variables

Se entiende por visibilidad, ámbito o scope de una variable, la parte de la aplicacióndonde dicha variable es accesible y por lo tanto puede ser utilizada en cualquier expresión.En Java todos las variables deben estar incluidas en una clase. En general las variablesdeclaradas dentro de unas llaves {}, es decir dentro de un bloque, son visibles y existendentro de estas llaves. Por ejemplo las variables declaradas al principio de una funciónexisten mientras se ejecute la función; las variables declaradas dentro de un bloque if noserán válidas al finalizar las sentencias correspondientes a dicho if y las variables miembrode una clase (es decir declaradas entre las llaves {} de la clase pero fuera de cualquiermétodo) son válidas mientras existe el objeto de la clase.

Las variables miembro de una clase declaradas como public son accesibles a través deuna referencia a un objeto de dicha clase utilizando el operador punto (.). Las variablesmiembro declaradas como private no son accesibles directamente desde otras clases. Lasfunciones miembro de una clase tienen acceso directo a todas las variables miembro dela clase sin necesidad de anteponer el nombre de un objeto de la clase. Sin embargo lasfunciones miembro de una clase B derivada de otra A, tienen acceso a todas las variablesmiembro de A declaradas como public o protected, pero no a las declaradas como private.Una clase derivada sólo puede acceder directamente a las variables y funciones miembrode su clase base declaradas como public o protected. Otra característica del lenguaje esque es posible declarar una variable dentro de un bloque con el mismo nombre que una

Page 104: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

82 CAPÍTULO 3. JAVA

variable miembro, pero no con el nombre de otra variable local. La variable declaradadentro del bloque oculta a la variable miembro en ese bloque. Para acceder a la variablemiembro oculta será preciso utilizar el operador this.

Uno de los aspectos más importantes en la programación orientada a objetos (OOP) esla forma en la cual son creados y eliminados los objetos. La forma de crear nuevos objetoses utilizar el operador new. Cuando se utiliza el operador new, la variable de tipo referenciaguarda la posición de memoria donde está almacenado este nuevo objeto. Para cada objetose lleva cuenta de por cuántas variables de tipo referencia es apuntado. La eliminaciónde los objetos la realiza el denominado garbage collector, quien automáticamente libera oborra la memoria ocupada por un objeto cuando no existe ninguna referencia apuntando aese objeto. Lo anterior significa que aunque una variable de tipo referencia deje de existir,el objeto al cual apunta no es eliminado si hay otras referencias apuntando a ese mismoobjeto.

3.5 Operadores en Java

Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++. Estosoperadores se describen brevemente a continuación.

3.5.1 Operadores Aritméticos

Son operadores binarios (requieren siempre dos operandos) que realizan las operacionesaritméticas habituales: suma (+), resta (-), multiplicación (*), división (/) y resto de ladivisión (%).

3.5.2 Operadores de Asignación

Los operadores de asignación permiten asignar un valor a una variable. El operador deasignación por excelencia es el operador igual (=). La forma general de las sentencias deasignación con este operador es:

variable = expression;

Java dispone de otros operadores de asignación. Se trata de versiones abreviadas deloperador (=) que realizan operaciones “acumulativas” sobre una variable.

La siguiente Tabla 3.4 de la pág. 83, muestra estos operadores y su equivalencia con

el uso del operador igual (=).

3.5.3 Operadores Unarios

Los operadores más (+) y menos (-) unarios sirven para mantener o cambiar el signo deuna

variable, constante o expresión numérica. Su uso en Java es el estándar de estosoperadores.

Page 105: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

3.5. OPERADORES EN JAVA 83

Operador Utilización ExpresiónEquivalente

+ = op1 + = op2 op1 = op1 + op2- = op1 - = op2 op1 = op1 - op2= * op1 * = op2 op1 = op1 * op2= / op1 / = op2 op1 = op1 / op2% = op1% = op2 op1 = op1 % op2

Tabla 3.4: Operadores de asignación.

3.5.4 Operadores Incrementales

Java dispone del operador incremento (++) y decremento (—). El operador (++) incre-menta en una unidad la variable a la que se aplica, mientras que (—) la reduce en unaunidad. Estos operadores se pueden utilizar de dos formas:

1. Precediendo a la variable (por ejemplo: ++i). En este caso primero se incrementala

variable y luego se utiliza (ya incrementada) en la expresión en la que aparece.

2. Siguiendo a la variable (por ejemplo: i++). En este caso primero se utiliza la variableen la expresión (con el valor anterior) y luego se incrementa.

En muchas ocasiones estos operadores se utilizan para incrementar una variable fuerade una expresión. En este caso ambos operadores son equivalente. Si se utilizan enuna expresión más complicada, el resultado de utilizar estos operadores en una u otrade sus formas será diferente. La actualización de contadores en bucles for es una de lasaplicaciones más frecuentes de estos operadores.

3.5.5 Operadores Relacionales

Los operadores relacionales sirven para realizar comparaciones de igualdad, desigualdad yrelación de menor o mayor. El resultado de estos operadores es siempre un valor boolean(true o false) según se cumpla o no la relación considerada. La siguiente Tabla 3.5 de lapág. 84 muestra los operadores relacionales de Java.

Estos operadores se utilizan con mucha frecuencia en las bifurcaciones y en los bucles,que se verán luego.

Ejemplo de Operadores Incrementales y Operadores Relacionales en un método.

public void cambiarParesEntrenamiento(double[ ] paresEntrenamiento){

/* inicialización de sus valores a partir de los valores pasados como argumentos */

for(int i = 0; i< paresEntrenamiento.length; i++)

{for(int j = 0; j< numeroNeuronasEntrada; j++)

Page 106: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

84 CAPÍTULO 3. JAVA

Operador Utilización El resultado es true

> op1 > op2 si op1 es mayor que op2> = op1 >= op2 si op1 es mayor o igual que op2< op1 < op2 si op1 es menor que op 2< = op1 <= op2 si op1 es menor o igual que op2= = op1 == op2 si op1 y op2 son iguales! = op1 != op2 sio p1 y op2 son diferentes

Tabla 3.5: Operadores relacionales.

{entradaEntrenamiento[i][j] = paresEntrenamiento[i][j];

}

for(int j = 0; j< numeroSalidas; j++)

{salidaEntrenamiento[i][j] = paresEntrenamiento[i][j+numeroNeuronasEntrada];

}

}

}

3.5.6 Operador de Concatenación de Cadenas de Caracteres (+)

El operador más (+) se utiliza también para concatenar cadenas de caracteres. Por ejem-plo, para escribir una cantidad con un rótulo puede utilizarse la sentencia:

editor.append(“Error Obtenido:” + String.valueOf(imprimoError) + “\n”);

editor.append(“Iteraciones:”+ String.valueOf(imprimoIteraciones) + “\n”);

editor.append(“Inicio: ” + horaInicial.toString() + “\n”);

editor.append(“Final: ” + horaFinal.toString() + “\n”);

donde el operador de concatenación se utiliza dos veces para construir la cadena decaracteres que se desea imprimir. Las variables imprimoErrror, imprimoIteraciones, ho-raInicial, horaFinal son convertidas en cadena de caracteres para poder concatenarlas.

3.5.7 Precedencia de Operadores

El orden en que se realizan las operaciones es fundamental para determinar el resultado deuna expresión. Por ejemplo, el resultado de x/y*z depende de qué operación (la divisióno el producto) se realice primero. La Tabla 3.6 de la pág. 85 muestra el orden en que seejecutan los distintos operadores en una sentencia, de mayor a menor precedencia:

Page 107: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

3.6. ESTRUCTURAS DE PROGRAMACIÓN 85

Nombre Sintáxis

Postfijos [ ] .(params) expr++ expr-Unarios ++expr —expr +expr -expr !

De creación (type) exprMultiplicativo * / %

Adición + -Shift << >> >>>

Relacional <> <= >= instanceofIgualdad = = ! =AND &

Or Excluyente ^Or Incluyente |

Logico AND &&Logico OR ||

Condicional ?:Asignación = += -= *= /= %= &= ^= |= <<= >>= >>>=

Tabla 3.6: Precedencia de Operadores.

En Java, todos los operadores binarios, excepto los operadores de asignación, se evalúande izquierda a derecha. Los operadores de asignación se evalúan de derecha a izquierda,lo que significa que el valor de la izquierda se copia sobre la variable de la derecha.

3.6 Estructuras de Programación

Las estructuras de programación o estructuras de control permiten tomar decisiones yrealizar un proceso repetidas veces. Son los denominados bifurcaciones y bucles. Enla mayoría de los lenguajes de programación, este tipo de estructuras son comunes encuanto a concepto, aunque su sintaxis varía de un lenguaje a otro. La sintaxis de Javacoincide prácticamente con la utilizada en C/C++, lo que hace que para un programadorde C/C++ no suponga ninguna dificultad adicional.

3.6.1 Sentencias o Expresiones

Una expresión es un conjunto variables unidos por operadores. Son órdenes que se le danal computador para que realice una tarea determinada.

Una sentencia es una expresión que acaba en punto y coma (;). Se permite incluir variassentencias en una línea, aunque lo habitual es utilizar una línea para cada sentencia. Acontinuación se muestra un ejemplo de una línea compuesta de tres sentencias:

i = 0; j = 5; x = i + j;

Page 108: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

86 CAPÍTULO 3. JAVA

3.6.2 Comentarios

Existen dos formas diferentes de introducir comentarios entre el código de Java (en realidadson tres, como pronto se verá). Son similares a la forma de realizar comentarios en ellenguaje C/C++. Los comentarios son tremendamente útiles para poder entender elcódigo utilizado, facilitando de ese modo futuras revisiones y correcciones. Además permiteque cualquier persona distinta al programador original pueda comprender el código escritode una forma más rápida. Se recomienda acostumbrarse a comentar el código desarrollado.De esta forma se simplifica también la tarea de estudio y revisión posteriores.

Java interpreta que todo lo que aparece a la derecha de dos barras “// ” en unalínea cualquiera del código es un comentario del programador y no lo tiene en cuenta. Elcomentario puede empezar al comienzo de la línea o a continuación de una instrucción quedebe ser ejecutada. La segunda forma de incluir comentarios consiste en escribir el textoentre los símbolos “ /* */ ”. Este segundo método es válido para comentar más de unalínea de código. Por ejemplo:

// Esta línea es un comentario

int a=1; // Comentario a la derecha de una sentencia

// Esta es la forma de comentar más de una línea utilizando

// las dos barras. Requiere incluir dos barras al comienzo de cada línea

/* Esta segunda forma es mucho más cómoda para comentar un número elevado de líneasya que sólo requiere modificar el comienzo y el final. */

En Java existe además una forma especial de introducir los comentarios (utilizando/***/ más algunos caracteres especiales) que permite generar automáticamente la docu-mentación sobre las clases y packages desarrollados por el programador. Una vez intro-ducidos los comentarios, el programa javadoc.exe (incluido en el JDK) genera de formaautomática la información de forma similar a la presentada en la propia documentacióndel JDK. La sintaxis de estos comentarios y la forma de utilizar el programa javadoc.exese puede encontrar en la información que viene con el JDK.

3.6.3 Bifurcaciones

Las bifurcaciones permiten ejecutar una de entre varias acciones en función del valor deuna expresión lógica o relacional. Se tratan de estructuras muy importantes ya que son lasencargadas de controlar el flujo de ejecución de un programa. Se exponen dos variantesdel de tipo if.

Bifurcación if

Esta estructura permite ejecutar un conjunto de sentencias en función del valor que tengala expresión de comparación. Ejemplo: se ejecuta si la expresión de comparación (error< errorMinimo) tiene valor true:

protected void comprobarNuevoMinimo() {

Page 109: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

3.6. ESTRUCTURAS DE PROGRAMACIÓN 87

if (error < errorMinimo)

{errorMinimo = error;

vectorDisMinimo = (double[ ])(vectorDis.clone());

} /* fin del if */

}

Las llaves {} sirven para agrupar en un bloque las sentencias que se han de ejecutar,y no son necesarias si sólo hay una sentencia dentro del if.

Bifurcación if else

Análoga a la anterior, de la cual es una ampliación. Las sentencias incluidas en el else seejecutan en el caso de no cumplirse la expresión de comparación (false),

Ejemplo:

public double decirSalidaActual(int indiceEtapa) {

if(pila != null)

{return pila[indiceEtapa];}

else

{System.out.println(“Fallo: Pila no creada”);

return 0;

}

}

3.6.4 Bucles

Un bucle se utiliza para realizar un proceso repetidas veces. Se denomina también lazoo loop. El código incluido entre las llaves {} (opcionales si el proceso repetitivo constade una sola línea), se ejecutará mientras se cumpla unas determinadas condiciones. Hayque prestar especial atención a los bucles infinitos, hecho que ocurre cuando la condiciónde finalizar el bucle (booleanExpression) no se llega a cumplir nunca. Se trata de un fallomuy típico, habitual sobre todo entre programadores poco experimentados.

Bucle while

En el siguiente ejemplo se muestra que se ejecutará la sentencia fin++mientras la expresión(capas.charAt(fin)!=‘,’ && capas.charAt(fin)!=-1) sea verdadera.

for (int j=0; j < numeroCapas; j++)

{int fin = principio;

try {

while (capas.charAt(fin) != ‘,’ && capas.charAt(fin) != -1)

Page 110: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

88 CAPÍTULO 3. JAVA

{fin++;

}

}

}

Bucle for

A continuación se podrá apreciar la utilización del bucle for:

/* calcular el nuevo vector de diseño */

for (int i = 0; i < vectorDis.length; i++)

{vectorDis[i] = vectorDis[i] + learningRate * S[i];

}

La sentencia int i = 0 (inicialización) se ejecuta al comienzo del for, e i++ (incremento)después de vectorDis[i] = vectorDis[i] + learningRate * S[i] (sentencia). La expresiónbooleana (vectorDis.length) se evalúa al comienzo de cada iteración; el bucle terminacuando la expresión de comparación toma el valor false.

Bucle do while

Es similar al bucle while pero con la particularidad de que el control está al final delbucle (lo que hace que el bucle se ejecute al menos una vez, independientemente de quela condición se cumpla o no). Una vez ejecutados las sentencias, se evalúa la condición: siresulta true se vuelven a ejecutar las sentencias incluidas en el bucle, mientras que si lacondición se evalúa a false finaliza el bucle.

do{

/* calcular el gradiente del vector fijar el vector de diseño */

problema.fijoVector(vectorDis);

/* incrementar el contador de iteraciones*/

step++;

} while (error > errorDeseado && step < iteracionesMaximas);

/* ... hasta que el error sea menor o igual que el deseado o */

/* se alcance el número de iteraciones pasado como argumento */

problema.fijoVector(vectorDis);

Page 111: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

3.7. CLASES EN JAVA 89

Sentencia return

Una forma de salir de un bucle es utilizar la sentencia return. Esta sentencia sale tambiénde un método o de una función. En el caso de que la función devuelva alguna variable,este valor se deberá poner a continuación del return.

public double devuelveErrorMinimo()

{return errorMinimo;

}

Bloque try{...} catch{...} finally{...}

Java incorpora en el propio lenguaje la gestión de errores. El mejor momento para detectarlos errores es durante la compilación. Sin embargo prácticamente sólo los errores de sintaxisson detectados en esta operación. El resto de problemas surgen durante la ejecución delos programas.

En el lenguaje Java, una Exception es un cierto tipo de error o una condición anormalque se ha producido durante la ejecución de un programa. Algunas excepciones son fatalesy provocan que se deba finalizar la ejecución del programa. En este caso conviene terminarordenadamente y dar un mensaje explicando el tipo de error que se ha producido. Otrasexcepciones, como por ejemplo no encontrar un fichero en el que hay que leer o escribiralgo, pueden ser recuperables. En este caso el programa debe dar al usuario la oportunidadde corregir el error (dando por ejemplo un nuevo path del fichero no encontrado).

Los errores se representan mediante clases derivadas de la clase Throwable, pero losque tiene que chequear un programador derivan de Exception (java.lang.Exception que asu vez deriva de Throwable). Existen algunos tipos de excepciones que Java obliga a teneren cuenta. Esto se hace mediante el uso de bloques try, catch y finally.

El código dentro del bloque try está “vigilado”: Si se produce una situación anormaly se lanza como consecuencia una excepción, el control pasa al bloque catch que se hacecargo de la situación y decide lo que hay que hacer. Se pueden incluir tantos bloques catchcomo se desee, cada uno de los cuales tratará un tipo de excepción. Finalmente, si estápresente, se ejecuta el bloque finally, que es opcional, pero que en caso de existir se ejecutasiempre, sea cual sea el tipo de error.

En el caso en que el código de un método pueda generar una Exception y no se deseeincluir en dicho método la gestión del error (es decir los bucles try/catch correspondientes),es necesario que el método pase la Exception al método desde el que ha sido llamado. Estose consigue mediante la adición de la palabra throws seguida del nombre de la Exceptionconcreta, después de la lista de argumentos del método. A su vez el método superiordeberá incluir los bloques try/catch o volver a pasar la Exception. De esta forma se puedeir pasando la Exception de un método a otro hasta llegar al último método del programa,el método main().

3.7 Clases en Java

Las clases son el centro de la Programación Orientada a Objetos (OOP - Object OrientedProgramming). Algunos conceptos importantes de la POO son los siguientes:

Page 112: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

90 CAPÍTULO 3. JAVA

1. Encapsulación: Las clases pueden ser declaradas como públicas (public) y comopackage (accesibles sólo para otras clases del package). Las variables miembro y losmétodos pueden ser public, private, protected y package. De esta forma se puedecontrolar el acceso y evitar un uso inadecuado.

2. Herencia: Una clase puede derivar de otra (extends), y en ese caso hereda todas susvariables y métodos. Una clase derivada puede añadir nuevas variables y métodosy/o redefinir las variables y métodos heredados.

3. Polimorfismo: Los objetos de distintas clases pertenecientes a una misma jerarquíao que implementan una misma interface pueden tratarse de una forma general eindividualizada, al mismo tiempo. Esto facilita la programación y el mantenimientodel código.

3.7.1 Características Importantes de las Clases

A continuación se enumeran algunas características importantes de las clases:

1. Todas las variables y funciones de Java deben pertenecer a una clase. No hayvariables y funciones globales.

2. Si una clase deriva de otra (extends), hereda todas sus variables y métodos.

3. Java tiene una jerarquía de clases estándar de la que pueden derivar las clases quecrean los usuarios.

4. Una clase sólo puede heredar de una única clase (en Java no hay herencia múltiple).Si al definir una clase no se especifica de qué clase deriva, por defecto la clase derivade Object. La clase Object es la base de toda la jerarquía de clases de Java.

5. En un fichero se pueden definir varias clases, pero en un fichero no puede haber másque una clase public. Este fichero se debe llamar como la clase public que contienecon extensión *.java. Con algunas excepciones, lo habitual es escribir una sola clasepor fichero.

6. Si una clase contenida en un fichero no es public, no es necesario que el fichero sellame como la clase.

7. Los métodos de una clase pueden referirse de modo global al objeto de esa clase alque se aplican por medio de la referencia this.

8. Las clases se pueden agrupar en packages, introduciendo una línea al comienzo delfichero (package packageName;). Esta agrupación en packages está relacionada conla jerarquía de directorios y ficheros en la que se guardan las clases.

3.7.2 Métodos o Funciones Miembros

Métodos de Objeto

Los métodos son funciones definidas dentro de una clase. Salvo los métodos static o declase, se aplican siempre a un objeto de la clase por medio del operador punto (.). Dicho

Page 113: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

3.7. CLASES EN JAVA 91

objeto es su argumento implícito. Los métodos pueden además tener otros argumentosexplícitos que van entre paréntesis, a continuación del nombre del método.

La primera línea de la definición de un método se llama declaración o header; el códigocomprendido entre las llaves {} es el cuerpo o body del método. Considérese el siguienteejemplo:

imprimoError=algor.devuelveErrorMinimo();

public double devuelveErrorMinimo()

{return errorMinimo;

}

La Clase Object

Como ya se ha dicho, la clase Object es la raíz de toda la jerarquía de clases de Java.Todas las clases de Java derivan de Object.

La clase Object tiene métodos interesantes para cualquier objeto que son heredadospor cualquier clase. Entre ellos se pueden citar los siguientes:

1. Métodos que pueden ser redefinidos por el programador:

• clone(): Crea un objeto a partir de otro objeto de la misma clase. El métodooriginal heredado de Object lanza una CloneNotSupportedException. Si se deseapoder clonar una clase hay que implementar la interface Cloneable y redefinirel método clone(). Este método debe hacer una copia miembro a miembro delobjeto original. No debería llamar al operador new ni a los constructores.

• equals(): Indica si dos objetos son o no iguales. Devuelve true si son iguales,tanto si son referencias al mismo objeto como si son objetos distintos con igualesvalores de las variables miembro.

• toString(): Devuelve un String que contiene una representación del objetocomo cadena de caracteres, por ejemplo para imprimirlo o exportarlo.

• finalize(): Este método ya se ha visto al hablar de los finalizadores.

2. Métodos que no pueden ser redefinidos (son métodos final):

• getClass(): Devuelve un objeto de la clase Class, al cual se le pueden aplicarmétodos para determinar el nombre de la clase, su super-clase, las interfacesimplementadas, etc. Se puede crear un objeto de la misma clase que otro sinsaber de qué clase es.

• notify(), notifyAll() y wait(): Son métodos relacionados con los threads(hilos).

Page 114: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

92 CAPÍTULO 3. JAVA

3.8 Algunas Clases de Utilidad

3.8.1 Clase Arrays

Los arrays de Java (vectores, matrices, hiper-matrices de más de dos dimensiones) setratan como objetos de una clase predefinida. Los arrays son objetos, pero con algunascaracterísticas propias.

Los arrays pueden ser asignados a objetos de la clase Object y los métodos de Objectpueden ser utilizados con arrays.

Algunas de sus características más importantes de los arrays son las siguientes:

1. Los arrays se crean con el operador new seguido del tipo y número de elementos.

2. Se puede acceder al número de elementos de un array con la variable miembro im-plícita length (por ejemplo, vect.length).

3. Se accede a los elementos de un array con los corchetes [ ] y un índice que varía de0 a length-1.

4. Se pueden crear arrays de objetos de cualquier tipo. En principio un array de objetoses un array de referencias que hay que completar llamando al operador new.

5. Los elementos de un array se inicializan al valor por defecto del tipo correspondiente(cero para valores numéricos, la cadena vacía para Strings, false para boolean, nullpara referencias).

6. Como todos los objetos, los arrays se pasan como argumentos a los métodos porreferencia.

7. Se pueden crear arrays anónimos (por ejemplo, crear un nuevo array como argumentoactual en la llamada a un método).

Inicialización de Arrays

Los arrays se pueden inicializar con valores entre llaves {...} separados por comas. Tambiénlos arrays de objetos se pueden inicializar con varias llamadas a new dentro de unas llaves{...}.

Si se igualan dos referencias a un array no se copia el array, sino que se tiene un arraycon dos nombres, apuntando al mismo y único objeto.

Ejemplo de creación de una referencia a un array:

/*vector de pesos */

public double[ ] pesos;

También existen arrays bidimensionales, que se crean de un modo muy similar al deC++ (con reserva dinámica de memoria). En Java una matriz es un vector de vectoresfila, o más en concreto un vector de referencias a los vectores fila. Con este esquema, cadafila podría tener un número de elementos diferente.

Una matriz se puede crear directamente en la siguiente forma:

Page 115: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

3.8. ALGUNAS CLASES DE UTILIDAD 93

/*vector de las entradas de los pares de entrenamiento*/

protected double[ ][ ] entradaEntrenamiento;

3.8.2 Clases String y StringBuffer

Las clases String y StringBuffer están orientadas a manejar cadenas de caracteres. Laclase String está orientada a manejar cadenas de caracteres constantes, es decir, que nopueden cambiar. La clase StringBuffer permite que el programador cambie la cadenainsertando, borrando, etc. La primera es más eficiente, mientras que la segunda permitemás posibilidades.

Ambas clases pertenecen al package java.lang, y por lo tanto no hay que importarlas.Hay que indicar que el operador de concatenación (+) entre objetos de tipo String utilizainternamente objetos de la clase StringBuffer y el método append().

Los métodos de String se pueden utilizar directamente sobre literals (cadenas entrecomillas), como por ejemplo: “Hola”.length().

Métodos de la Clase String

Algunos métodos de String y la función que realizan:

• String(...): Constructores para crear Strings a partir de arrays de bytes o de ca-racteres.

• String(String str) yString(StringBuffer sb): Costructores a partir de un objetoString o StringBuffer.

• charAt(int): Devuelve el carácter en la posición especificada.

• getChars(int, int, char[ ], int): Copia los caracteres indicados en la posiciónindicada de un array de caracteres.

• length(): Devuelve el número de caracteres de la cadena.

• toLowerCase(): Convierte en minúsculas (puede tener en cuenta el locale).

• toUpperCase(): Convierte en mayúsculas (puede tener en cuenta el locale).

• valueOf(): Devuelve la representación como String de sus argumento. AdmiteObject, arrays de caracteres y los tipos primitivos.

3.8.3 Clase Double

La clase java.lang.Double deriva de Number, que a su vez deriva de Object. Esta clasecontiene un valor primitivo de tipo double.

Page 116: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

94 CAPÍTULO 3. JAVA

Algunos Métodos de la Clase Double

• Double(double) y Double(String): Los constructores de esta clase.

• doubleValue(), floatValue(), longValue(), intValue(), shortValue(), byte-Value(): Métodos para obtener el valor del tipo primitivo.

• String toString(), Double valueOf(String): Conversores con la clase String.

• isInfinite(), isNaN(): Métodos de chequear condiciones.

• equals(Object): Compara con otro objeto.

3.8.4 Clase Integer

La clase java.lang.Integer tiene como variable miembro un valor de tipo int.

Algunos Métodos de la Clase Integer

• Integer(int) y Integer(String): Constructores de la clase.

• doubleValue(), floatValue(), longValue(),intValue(), shortValue(), byte-Value(): Conversores con otros tipos primitivos.

• Integer decode(String), Integer parseInt(String), String toString(), Inte-ger ValueOf(String): Conversores con String del sistema a partir del nombre dedicha propiedad.

3.9 El AWT (Abstract Windows Toolkit)

3.9.1 Qué es el AWT

El AWT (Abstract Windows Toolkit) es la parte de Java que se ocupa de construir in-terfaces gráficas de usuario. Aunque el AWT ha estado presente en Java desde la versión1.0, la versión 1.1 representó un cambio notable, sobre todo en lo que respecta al modelode eventos. La versión 1.2 ha incorporado un modelo distinto de componentes llamadoSwing, que también está disponible en la versión 1.1 como package adicional.

3.9.2 Creación de una Interface Gráfica de Usuario

Para construir una interface gráfica de usuario hace falta:

1. Un “contenedor” o container, que es la ventana o parte de la ventana donde sesituarán los componentes (botones, barras de desplazamiento, etc.) y donde serealizarán los dibujos. Se correspondería con un formulario o una picture box deVisual Basic.

2. Los componentes: menúes, botones de comando, barras de desplazamiento, cajasy áreas de texto, botones de opción y selección, etc. Se corresponderían con loscontroles de Visual Basic.

Page 117: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

3.9. EL AWT (ABSTRACT WINDOWS TOOLKIT) 95

3. El modelo de eventos. El usuario controla la aplicación actuando sobre los compo-nentes, de ordinario con el ratón o con el teclado. Cada vez que el usuario realiza unadeterminada acción, se produce el evento correspondiente, que el sistema operativotransmite al AWT.

El AWT crea un objeto de una determinada clase de evento, derivada de AWTEvent.Este evento es transmitido a un determinado método para que lo gestione. En VisualBasic el entorno de desarrollo crea automáticamente el procedimiento que va a gestionarel evento (uniendo el nombre del control con el tipo del evento mediante el carácter _ ) yel usuario no tiene más que introducir el código. En Java esto es un poco más complicado:el componente u objeto que recibe el evento debe “registrar” o indicar previamente quéobjeto se va a hacer cargo de gestionar ese evento.

3.9.3 Objetos “event source” y Objetos “event listener”

El modelo de eventos de Java está basado en que los objetos sobre los que se producenlos eventos (event sources) “registran” los objetos que habrán de gestionarlos (event lis-teners), para lo cual los event listeners habrán de disponer de los métodos adecuados.Estos métodos se llamarán automáticamente cuando se produzca el evento. La forma degarantizar que los event listeners disponen de los métodos apropiados para gestionar loseventos es obligarles a implementar una determinada interface Listener. Las interfacesListener se corresponden con los tipos de eventos que se pueden producir.

Las capacidades gráficas del AWT resultan pobres y complicadas en comparación conlo que se puede conseguir con Visual Basic, pero tienen la ventaja de poder ser ejecutadascasi en cualquier ordenador y con cualquier sistema operativo.

3.9.4 Proceso a Seguir Para Crear Una Aplicación Interactiva (Orien-tada a Eventos)

Pasos que se pueden seguir para construir una aplicación orientada a eventos sencilla, coninterface gráfica de usuario:

1. Determinar los componentes que van a constituir la interface de usuario (botones,cajas de texto, menúes, etc.).

2. Crear una clase para la aplicación que contenga la función main().

3. Crear una clase Ventana, sub-clase de Frame, que responda al evento WindowClo-sing().

4. La función main() deberá crear un objeto de la clase Ventana (en el que se van aintroducir las componentes seleccionadas) y mostrarla por pantalla con el tamaño yposición adecuados.

5. Añadir al objeto Ventana todos los componentes y menúes que deba contener.

6. Definir los objetos Listener (objetos que se ocuparán de responder a los eventos, cu-yas clases implementan las distintas interfaces Listener) para cada uno de los eventosque deban estar soportados. En aplicaciones pequeñas, el propio objeto Ventana se

Page 118: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

96 CAPÍTULO 3. JAVA

puede ocupar de responder a los eventos de sus componentes. En programas másgrandes se puede crear uno o más objetos de clases especiales para ocuparse de loseventos.

7. Finalmente, se deben implementar los métodos de las interfaces Listener que sevayan a hacer cargo de la gestión de los eventos.

En la aplicación se podrá observar la gran variedad de componentes de AWT que se uti-lizaron. También se acudió a los paquetes de Swing , por ejemplo para la implementaciónde un hilo en la presentación de la aplicación.

El objetivo de este capítulo ha sido brindar nociones leves sobre este lenguaje deprogramación, mostrando algunos ejemplos que se pueden encontrar en el código fuentede la aplicación.

3.10 Errores más Frecuentes en la Programación con Java

A continuación se presenta una varios ejemplos de errores, vistos desde el punto de vistade la portabilidad, porque quizá el sine qua non de Java, en última instancia sea perseguiruna verdadera independencia de plataforma.

Los errores no tienen ningún orden de dificultad, no son más que algunos de ellos enlos que puede caer cualquier programador.

Hay muchísimas formas cometer fallos a la hora de programar en Java; algunas sedeben simplemente a malos hábitos y son muy difíciles de encontrar, mientras que otrossaltan a la vista al instante. Los errores de programación más obvios, también son los quecon más frecuencia cometen los programadores.

Quizás muchos de los fallos se evitarían si los programadores intentarán aplicar calidada sus programas desde el momento mismo de concebir el programa, y no la tendencia deaplicar pureza a la aplicación en el último momento.

3.10.1 Scheduling de Hilos de Ejecución

El scheduling de los hilos de ejecución, es decir, el tiempo que el sistema destina a laejecución de cada uno de los hilos de ejecución, puede ser distinto en diferentes plataformas.Si no se tienen en cuenta las prioridades o se deja al azar la prevención de que dos hilosde ejecución accedan a un mismo objeto al mismo tiempo, el programa no será portable.

El siguiente programa, por ejemplo, no es portable:class Contador implements Runnable{

static long valor = 0;

public void run() {

valor += 1;

}public static void main( String args[] ){

Page 119: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

3.10. ERRORES FRECUENTES DE PROGRAMACIÓN 97

try

{

Thread hilo1 = new Thread( new Contador() );

hilo1.setPriority( 1 );

Thread hilo2 = new Thread( new Contador() );

hilo2.setPriority( 2 );

hilo1.start();

hilo2.start();

hilo1.join();

hilo2.join();

Systtem.out.println( valor );

} catch( Exception e ) {

e.printStackTrace();

}

}

}Este programa puede no imprimir “2” en todas las plataformas, porque los dos hilos de

ejecución no están sincronizados y, desgraciadamente, este es un problema muy profundoy no hay forma de detectar su presencia ni adivinar el momento en que va a ocurrir.

Una solución simple, y drástica, es hacer todos los métodos sincronizados. Pero estotambién tiene problemas porque puede presentar como puntos sin retorno obvios, lo queen realidad es una corrupción de datos.

El scheduling de los hilos de ejecución es uno de los aspectos más problemáticos dela programación Java, porque la naturaleza del problema se vuelve global, al intervenirvarios hilos de ejecución. No se puede buscar el problema en una parte del programa, esimprescindible entender y tratar el programa en su globalidad.

Además, hay ejemplos de contención de hilos que no serán detectados. Por ejemplo,en la clase Contador anterior no se detectará el problema ya que la contención está en elacceso al campo, en lugar de en el acceso al método.

3.10.2 Errores en el Uso de las Características de Portabilidad de Java

Hay características de portabilidad en el API de Java. Es posible, pero menos portable,escribir código que no haga uso de estas características. Muchas de las propiedades delsistema proporcionan información sobre la portabilidad; por ejemplo, se pueden utilizarlas propiedades del sistema para conocer cuál es el carácter definido como fin de línea o elque se emplea como terminador del archivo, para emplear el adecuado a la plataforma enque se está ejecutando el programa.

Java proporciona dos métodos para facilitar la escritura de programas portables eneste sentido. Por un lado, utilizar el método println() en vez de imprimir las cade-nas seguidas del terminador de cadena embebido; o también, utilizar la expresión Sys-tem.getProperty(“line.separator”) para conocer cuál es el terminado de línea que se utilizaen la plataforma en que se está ejecutando el programa.

Page 120: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

98 CAPÍTULO 3. JAVA

En general, el uso de las propiedades facilita en gran modo la portabilidad y deberíaextenderse su uso siempre que fuese aplicable.

3.10.3 Uso de Directorios Definidos

Un error muy común y fácil de cometer entre los programadores, aunque igual de fácil decorregir es la designación en el código de nombre de los archivos, que pueden dar lugar aproblemas de portabilidad, pero cuando se añade el directorio en que se sitúan, seguroque estos problemas aparecerán. Estos fallos son más comunes entre programadores conviejos hábitos, que eran dependientes del sistema operativo, y que son difíciles de olvidar.

La forma más portable de construir un File para un fichero en un directorio es utilizarel constructor File(File,String). Otra forma sería utilizar las propiedades para conocercuál es el separador de ficheros y el directorio inicial; o también, preguntarle al operadora través de una caja de diálogo.

Otro problema es la noción de camino absoluto, que es dependiente del sistema.En Unix los caminos absolutos empiezan por /, mientras que en Windows pueden

empezar por cualquier letra. Por esta razón, el uso de caminos absolutos que no seandependientes de una entrada por operador o de la consulta de las propiedades del sistemano será portable.

El ejemplo siguiente proporciona una clase útil para la construcción de nombres dearchivos. La última versión del JDK es mucho más exhaustiva, y detecta más fácilmentelos errores cometidos en los directorios y nombres de ficheros.

import java.io.File;

import java.util.StringTokenizer;

public class UtilFichero {/* Crea un nuevo fichero con el nombre de otros. Si la base inicial es* nula, parte del directorio actual*/public static File dirInicial( File base,String path[] ) {

File valor = base;

int i=0;

if( valor == null && path.length == 0 ) {

valor = new File( path[i++] );

}

for( ; i < path.length; i++ ) {

valor = new File( valor,path[i] );

}

return( valor );

}

public static File desdeOrigen( String path[] ) {

Page 121: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

3.10. ERRORES FRECUENTES DE PROGRAMACIÓN 99

return( dirInicial( null,path ) );

}

public static File desdeProp( String nombrePropiedad ) {

String pd = System.getProperty( nombrePropiedad );

return( new File( pd ) );

}

// Utilizando la propiedad del sistema “user.dir”

public static File userDir() {

return( desdeProp( “user.dir” ) );

}

// Utilizando la propiedad del sistema “java.home”

public static File javaHome() {

return( desdeProp( “java.home” ) );

}

// Utilizando la propiedad del sistema “user.home”

public static File userHome() {

return( desdeProp( “user.home” ) );

}

/* Separa el primer argumento, utilizando el segundo argumetno como* carácter separador.* Es muy útil a la hora de crear caminos de ficheros portables*/

public static String[] split( String p,String sep ) {

StringTokenizer st = new StringTokenizer( p,sep );

String valor[] = new String[st.countTokens()];

for( int i=0; i < valor.length; i++ ) {

valor[i] = st.nextToken();

}

return( valor );

}

}

Page 122: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

100 CAPÍTULO 3. JAVA

3.10.4 Carga de Drivers JDBC

El interfaz JDBC, definido por el paquete java.sql, proporciona gran flexibilidad a lahora de codificar la carga del driver JDBC a utilizar. Esta flexibilidad permite la sus-titución de diferentes drivers sin que haya que modificar el código, a través de la claseDriverManager, que selecciona entre los drivers disponibles en el momento de estable-cer la conexión. Los drivers se pueden poner a disposición de DriverManager a travésde la propiedad del sistema jdbc.drivers o cargándolos explícitamente usando el métodojava.lang.Class.forName().

También es posible la carga de una selección de drivers, dejando que el mecanismode selección de DriverManager encuentre el adecuado en el momento de establecer laconexión con la base de datos.

Hay que tener siempre en cuenta los siguientes puntos:

• La prueba de drivers se intenta siempre en el orden en que se han registrado, por loque los primeros drivers tienen prioridad sobre los últimos cargados, con la máximaprioridad para los drivers listados en jdbc.drivers.

• Un driver que incluya código nativo fallará al cargarlo sobre cualquier plataformadiferente de la que fue diseñado; por lo que el programa deberá recoger la excepciónClassNotFoundException.

• Un driver con código nativo no debe registrarse con DriverManager hasta que nose sepa que la carga ha tenido éxito.

• Un driver con código nativo no está protegido por la caja negra de Java, así quepuede presentar potenciales problemas de seguridad.

3.10.5 Terminación de Líneas

Las distintas plataformas de sistemas operativos tienen distintas convenciones para laterminación de líneas en un fichero de texto. Por esto debería utilizarse el método println(),o la propiedad del sistema line.separator, para la salida; y para la entrada utilizar losmétodos readLine().

Java internamente utiliza Unicode, que al ser un estándar internacional, soluciona elproblema a la hora de codificar; pero el problema persiste al leer o escribir texto en unarchivo.

En el JDK 1.1 se utilizan las clases java.io.Reader y java.io.Writer para manejar laconversión del set de caracteres, pero el problema puede surgir cuando se leen o escribenarchivos ASCII planos, porque en el ASCII estándar no hay un carácter específico parala terminación de líneas; algunas máquinas utilizan \n, otras usan \r, y otras emplean lasecuencia \r\n.

Enarbolando la bandera de la portabilidad, deberían utilizarse los métodos println()para escribir una línea de texto, o colocar un marcador de fin de línea. También, usar elmétodo readLine() de la clase java.io.BufferedReader para recoger una línea completade texto.

Los otros métodos readLine() son igualmente útiles, pero el de la clase BufferedRea-der proporciona al código también la traslación.

Page 123: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

3.11. APPLETS 101

3.10.6 Entrada/Salida por Archivo

Las clases de entrada y salida del JDK 1.0 no son portables a plataformas que no soportenformatos nativos de archivos no-ASCII. Es fácil para el programador suponer alegrementeque todo el mundo es ASCII. Pero la realidad no es esa, los chinos y los japoneses, porejemplo, no puedes escribir nada con los caracteres ASCII. Hay que tener esto en cuentasi se quiere que los programas viajen fuera del país propio.

3.10.7 Fuentes de Caracteres

El tamaño y disponibilidad de varios tipos de fuentes varía de pantalla a pantalla, inclusoen una misma plataforma hardware, dependiendo de la instalación que se haya hecho.Esto es algo que no descalifica totalmente el programa, porque se verá defectuosamente,pero el programa podrá seguir usándose; pero debería prevenirse, porque se presupone queel programador desea que su software aparezca de la mejor manera posible en cualquierplataforma.

El modo mejor de evitar todo esto es no codificar directamente el tamaño de los textos,dejar que los textos asuman su tamaño en relación al layout, y utilizar los métodos de laclase FontMetrics para encontrar el tamaño en que aparecen los caracteres de una cadenasobre un Canvas. Cuando se coloca una fuente que no se encuentra entre las de defecto,hay que asegurarse siempre de colocar alguna de respaldo en el bloque catch.

Cuando se crea un menú para seleccionar fuentes de caracteres, se debería utilizar elmétodo java.awt.Toolkit.getFontList(), en lugar de especificar una lista de fuentes.

Cuando se actualice un programa del JDK 1.0 al JDK 1.1, hay que tener en cuentaque los nombre de las fuentes de caracteres se han actualizado, tal como se indica en ladocumentación del método getFontList().

3.11 APPLETS

3.12 QUÉ ES UN APPLET

Un applet es una mini-aplicación, escrita en Java, que se ejecuta en un browser (Nets-capeNavigator, Microsoft Internet Explorer, ) al cargar una página HTML que incluyeinformación sobre el applet a ejecutar por medio de las tags <APPLET>... </APPLET>.

A continuación se detallan algunas características de las applets:

1. Los ficheros de Java compilados (*.class) se descargan a través de la red desde unservidor de Web o servidor HTTP hasta el browser en cuya Java Virtual Machine seejecutan. Pueden incluir también ficheros de imágenes y sonido.

2. Las applets no tienen ventana propia: se ejecutan en la ventana del browser (en unpanel).

3. Por la propia naturaleza abierta de Internet, las applets tienen importantes res-tricciones de seguridad, que se comprueban al llegar al browser: sólo pueden leer yescribir ficheros en el servidor del que han venido, sólo pueden acceder a una limitadainformación sobre el ordenador

Page 124: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

102 CAPÍTULO 3. JAVA

Figura 3.1: Jerarquia de Clases de Applets

en el que se están ejecutando, etc. Con ciertas condiciones, las applets de confianza(trusted applets) pueden pasar por encima de estas restricciones.

Aunque su entorno de ejecución es un browser, las applets se pueden probar sin nece-sidad de browser con la aplicación appletviewer del JDK de Sun.

3.12.1 Algunas características de las applets

Las características de las applets se pueden considerar desde el puntode vista del progra-mador y desde el del usuario. En este manual lo más importante es el punto de vista delprogramador:

• Las applets no tienen un método main() con el que comience

la ejecución. El papel central de su ejecución lo asumen otrosmétodos que se verán posteriormente.

• Todas las applets derivan de la clase java.applet.Applet. LaFigura 3.1 de la pag.102muestra la jerarquía de clases de la que deriva laclase Applet. Las applets deben re-definir ciertos métodosheredados de Applet que controlan su ejecución: init(),start(),stop(), destroy().

• Se heredan otros muchos métodos de las super-clases de Applet que tienen que vercon la generación de interfaces gráficas de usuario (AWT). Así, los métodos gráficosse heredan de Component, mientras que la capacidad de añadir componentes deinterface de

usuario se hereda de Container y de Panel.

• Las applets también suelen redefinir ciertos métodos gráficos: los más importan-tes son paint() y update(), heredados de Component y de Container; y repaint()heredado de Component.

Page 125: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

3.12. QUÉ ES UN APPLET 103

• Las applets disponen de métodos relacionados con la obtención de información, comopor ejemplo: getAppletInfo(), getAppletContext(), getParameterInfo(), getParame-ter(), getCodeBase(), getDocumentBase(), e isActive().

El método showStatus() se utiliza para mostrar información en la barra de estado delbrowser.Existen otros métodos relacionados con imágenes y sonido: getImage(), getAu-dioClip(), play(), etc.

3.12.2 Métodos que controlan la ejecución de un applet

Los métodos que se estudian en este Apartado controlan la ejecución de las applets. Deordinario el programador tiene que redefinir uno o más de estos métodos, pero no tieneque preocuparse de llamarlos: el browser se encarga de hacerlo.

Método init()

Se llama automáticamente al método init() en cuanto el browser o visualizador carga elapplet. Este método se ocupa de todas las tareas de inicialización, realizando las funcionesdel constructor (al que el browser no llama).

En Netscape Navigator se puede reinicializar un applet con Shift+Reload.

Método start()

El método start() se llama automáticamente en cuanto el applet se hace visible, despuésde haber sido inicializada. Se llama también cada vez que el applet se hace de nuevovisible después de haber estado oculta (por dejar de estar activa esa página del browser,al cambiar el tamaño de la ventana del browser, al hacer reload, etc.).

Es habitual crear threads en este método para aquellas tareas que, por el tiempo querequieren, dejarían sin recursos al applet o incluso al browser. Las animaciones y ciertastareas a través de Internet son ejemplos de este tipo de tareas.

Método stop()

El método stop() se llama de forma automática al ocultar el applet (por haber haberdejado de estar activa la página del browser, por hacer reload o resize, etc.).

Con objeto de no consumir recursos inútilmente, en este método se suelen parar lasthreads que estén corriendo en el applet, por ejemplo para mostrar animaciones.

Método destroy()

Se llama a este método cuando el applet va a ser descargada para liberar los recursos quetenga reservados (excepto la memoria). De ordinario no es necesario redefinir este método,pues el que se hereda cumple bien con esta misión.

Page 126: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

104 CAPÍTULO 3. JAVA

3.12.3 Métodos para dibujar el applet

Las applets son aplicaciones gráficas que aparecen en una zona de la ventana del browser.Por ello deben redefinir los métodos gráficos paint() y update(). El método paint() sedeclara en la forma:

public void paint(Graphics g)El objeto gráfico g pertenece a la clase java.awt.Graphics, que siempre debe ser impor-

tada por el applet. Este objeto define un contexto o estado gráfico para dibujar (métodosgráficos, colores, fonts, etc.) y es creado por el browser.

Todo el trabajo gráfico del applet (dibujo de líneas, formas gráficas, texto, etc.) sedebe incluir en el método paint(), porque este método es llamado cuando el applet sedibuja por primera vez y también de forma automática cada vez que el applet se deberedibujar.

En general, el programador crea el método paint() pero no lo suele llamar. Para pedirexplícitamente al sistema que vuelva a dibujar el applet (por ejemplo, por haber realizadoalgún cambio) se utiliza el método repaint(), que es más fácil de usar, pues no requiereargumentos. El método repaint() se encarga de llamar a paint() a través de update().

El método repaint() llama a update(), que borra todo pintando de nuevo con el colorde fondo y luego llama a paint(). A veces esto produce parpadeo de pantalla o flickering.Existen dos formas de evitar el flickering:

1. Redefinir update() de forma que no borre toda la ventana sino sólo lo necesario.2. Redefinir paint() y update() para utilizar doble buffer.

3.13 CÓMO INCLUIR UN APPLET EN UNA PÁGINAHTML

Para llamar a un applet desde una página HTML se utiliza la tag doble<APPLET></APPLET>,cuya forma general es (los elementos opcionales aparecen entre corchetes[]):

<APPLET CODE=”miApplet.class” [CODEBASE=”unURL”] [NAME=”unName”]WIDTH=”wpixels” HEIGHT=”hpixels”[ALT=”TextoAlternativo”]>[texto alternativo para browsers que reconocen el tag<applet> pero no pueden ejecutar

el applet][<PARAM NAME=”MyName1” VALUE=”valueOfMyName1”>][<PARAM NAME=”MyName2” VALUE=”valueOfMyName2”>]</APPLET>El atributo NAME permite dar un nombre opcional al applet, con objeto de poder

comunicarse con otras applets o con otros elementos que se estén ejecutando en la mismapágina. El atributo ARCHIVE permite indicar uno o varios ficheros Jar o Zip (separadospor comas) donde se

deben buscar las clases.A continuación se señalan otros posibles atributos de <APPLET>:

1. ARCHIVE=”file1, file2, file3”. Se utiliza para especificar ficheros JAR y ZIP.

Page 127: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

3.14. PASO DE PARÁMETROS A UN APPLET 105

(a) ALIGN, VSPACE, HSPACE. Tienen el mismo significado que el tag IMG deHTML.

3.14 PASO DE PARÁMETROS A UN APPLET

Los tags PARAM permiten pasar diversos parámetros desde el fichero HTML al programaJava del applet, de una forma análoga a la que se utiliza para pasar argumentos amain().

Cada parámetro tiene un nombre y un valor. Ambos se dan en forma de String, aunqueel valor sea numérico. El applet recupera estos parámetros y, si es necesario, conviertelos Strings en valores numéricos. El valor de los parámetros se obtienen con el siguientemétodo de la clase Applet:

String getParameter(String name)La conversión de Strings a los tipos primitivos se puede hacer con los métodos asociados

a los wrappers que Java proporciona para dichos tipo fundamentales (Integer.parseInt(String),Double.valueOf(String), ).

En los nombres de los parámetros no se distingue entre mayúsculas y minúsculas, perosí en los valores, ya que serán interpretados por un programa Java, que sí distingue.

El programador del applet debería prever siempre unos valores por defecto para losparámetros del applet, para el caso de que en la página HTML que llama al applet no sedefinan.

El método getParameterInfo() devuelve una matriz de Strings (String[][]) con informa-ción sobre cada uno de los parámetros soportados por el applet: nombre, tipo y descripción,cada uno de ellos en un String. Este método debe ser redefinido por el programador delapplet y utilizado por la persona que prepara la página HTML que llama al applet. Enmuchas ocasiones serán personas distintas, y ésta es una forma de que el programador delapplet dé información al usuario.

3.15 CARGA DE APPLETS

3.15.1 Localización de ficheros

Por defecto se supone que los ficheros *.class del applet están en el mismo directorio queel fichero HTML. Si el applet pertenece a un package, el browser utiliza el nombre delpackage para construir un path de directorio relativo al directorio donde está el HTML.

El atributo CODEBASE permite definir un URL para los ficheros que continen elcódigo y demás elementos del applet. Si el directorio definido por el URL de CODEBASEes relativo, se interpreta respecto al directorio donde está el HTML; si es absoluto seinterpreta en sentido estricto y puede ser cualquier directorio de la Internet.

3.15.2 Archivos JAR (Java Archives)

Si un applet consta de varias clases, cada fichero *.class requiere una conexión con elservidor de Web (servidor de protocolo HTTP), lo cual puede requerir algunos segundos.En este caso es conveniente agrupar todos los ficheros en un archivo único, que se puedecomprimir y cargar con una sola conexión HTTP.

Page 128: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

106 CAPÍTULO 3. JAVA

Los archivos JAR están basados en los archivos ZIP y pueden crearse con el programajar que viene con el JDK. Por ejemplo:

jar cvf myFile.jar *.class *.gif

crea un fichero llamado myFile.jar que contiene todos los ficheros *.class y *.gif deldirectorio actual. Si las clases pertenecieran a un package llamado es.ceit.infor2 se utilizaríael comando:

jar cvf myFile.jar es\ceit\infor2\*.class *.gif

3.16 APPLETS QUE TAMBIÉN SON APLICACIONES

Es muy interesante desarrollar aplicaciones que pueden funcionar también como applets yviceversa. En concreto, para hacer que un applet pueda ejecutarse como aplicación puedenseguirse las siguientes instrucciones:

1. Se añade un método main() a la clase MiApplet (que deriva de Applet)2. El método main() debe crear un objeto de la clase MiApplet e introducirlo en un

Frame.3. El método main() debe también ocuparse de hacer lo que haría el browser, es decir,

llamar a los métodos init() y start() de la clase MiApplet.4. Se puede añadir también una static inner class que derive de WindowAdapter y que

gestione el evento de cerrar la ventana de la aplicación definiendo el método windowClo-sing(). Este método llama al método System.exit(0). Según como sea el applet, el métodowindowClosing() previamente deberá también llamar a los métodos MiApplet.stop() yMiApplet.destroy(), cosa que para las applets se encarga de hacer el browser. En este casoconviene que el objeto de MiApplet creado por main() sea static, en lugar de una variablelocal.

A continuación se presenta un ejemplo:public class MiApplet extends Applet {...public void init() {...}...// clase para cerrar la aplicaciónstatic class WL extends WindowsAdapter {public void windowClosing(WindowEvent e) {MiApplet.stop();MiApplet.destroy();System.exit(0);}} // fin de WindowAdapter// programa principalpublic static void main(String[] args) {static MiApplet unApplet = new MiApplet();Frame unFrame = new Frame(”MiApplet”);unFrame.addWindowListener(new WL());unFrame.add(unapplet, BorderLayout.CENTER);unFrame.setSize(400,400);

Page 129: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

3.16. APPLETS QUE TAMBIÉN SON APLICACIONES 107

unApplet.init();unApplet.start();unFrame.setVisible(true);}} // fin de la clase MiApplet

Page 130: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de
Page 131: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

Capítulo 4

Herramientas utilizadas

4.1 Netbeans

La plataforma NetBeans permite que las aplicaciones sean desarrolladas a partir de unconjunto de componentes de software llamados módulos. Un módulo es un archivo Javaque contiene clases de java escritas para interactuar con las APIs de NetBeans y un archivoespecial (manifest file) que lo identifica como módulo. Las aplicaciones construidas a partirde módulos pueden ser extendidas agregándole nuevos módulos. Debido a que los módulospueden ser desarrollados independientemente, las aplicaciones basadas en la plataformaNetBeans pueden ser extendidas fácilmente por otros desarrolladores de software.

NetBeans es un proyecto de código abierto de gran éxito con una gran base de usuarios,una comunidad en constante crecimiento, y con cerca de 100 socios en todo el mundo. SunMicroSystems fundó el proyecto de código abierto NetBeans en junio 2000 y continúasiendo el patrocinador principal de los proyectos.

4.1.1 La Plataforma NetBeans

La Plataforma NetBeans es una base modular y extensible usada como una estructura deintegración para crear aplicaciones de escritorio grandes. Empresas independientes aso-ciadas, especializadas en desarrollo de software, proporcionan extensiones adicionales quese integran fácilmente en la plataforma y que pueden también utilizarse para desarrollarsus propias herramientas y soluciones.

La plataforma ofrece servicios comunes a las aplicaciones de escritorio, permitiéndoleal desarrollador enfocarse en la lógica específica de su aplicación. Entre las característicasde la plataforma están:

• Administración de las interface de usuario (ej. menús y barras de herramientas).

• Administración de las configuraciones del usuario.

• Administración del almacenamiento (guardando y cargando cualquier tipo de dato).

• Administración de ventanas.

• Framework basado en asistentes (diálogos paso a paso).

109

Page 132: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

110 CAPÍTULO 4. HERRAMIENTAS UTILIZADAS

4.2 NetBeans IDE

El IDE NetBeans es un IDE - una herramienta para programadores pensada para escribir,compilar, depurar y ejecutar programas. Está escrito en Java - pero puede servir paracualquier otro lenguaje de programación. Existe además un número importante de módu-los para extender el IDE NetBeans. El IDE NetBeans es un producto libre y gratuito sinrestricciones de uso.

El NetBeans IDE es un IDE de código abierto escrito completamente en Java usandola plataforma NetBeans. El NetBeans IDE soporta el desarrollo de todos los tipos deaplicación Java (J2SE, web, EJB y aplicaciones móviles). Entre sus características seencuentra un sistema de proyectos basado en Ant, control de versiones y refactoring.

NetBeans IDE 6.5, la cual fue lanzada el 19 de Noviembre de 2008, extiende las carac-terísticas existentes del Java EE (incluyendo Soporte a Persistencia, EJB 3 y JAX-WS).Adicionalmente, el NetBeans Enterprise Pack soporta el desarrollo de Aplicaciones em-presariales con Java EE 5, incluyendo herramientas de desarrollo visuales de SOA, herra-mientas de esquemas XML, orientación a web servicies (for BPEL), y modelado UML.El NetBeans C/C++ Pack soporta proyectos de C/C++, mientras el PHP Pack, soportaPHP 5.

ModularidadTodas las funciones del IDE son provistas por módulos. Cada módulo provee una

función bien definida, tales como el soporte de Java, edición, o soporte para el sistema decontrol de versiones. NetBeans contiene todos los módulos necesarios para el desarrollode aplicaciones Java en una sola descarga, permitiéndole al usuario comenzar a trabajarinmediatamente.

Sun Studio, Sun Java Studio Enterprise, y Sun Java Studio Creator de Sun Microsys-tems han sido todos basados en el IDE NetBeans.

Desde Julio de 2006, NetBeans IDE es licenciado bajo la Common Development andDistribution License (CDDL), una licencia basada en la Mozilla Public License (MPL).

4.3 Creación de proyecto

1) File / New Proyect (o Ctrl Mayúscula N), ver figura 4.1 de la pág.111.

en el cuadro de dialogo New Project elegimos Java y Java ClassLibrary y seguidamentehacemos clic sobre el botón NEXT , ver Figura 4.2 en la pág. 111.

en el cuadro de diálogo New Java Class Librery tenemos que rellenar los siguientescampos

• Project Name: Hilos

• Project Location: C:\Tesis\hilos

vamos a hacer clic sobre el botón Browser para indicar que queremos que nuestroproyecto se aloje por debajo de los directorios C:\Tesis\hilos seguidamente hacemos clicsobre el botón Finish; ver Figura 4.3 en la pág. 112.

Page 133: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

4.3. CREACIÓN DE PROYECTO 111

Figura 4.1: Nuevo proyecto

Figura 4.2: Nuevo proyecto paso 2

Page 134: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

112 CAPÍTULO 4. HERRAMIENTAS UTILIZADAS

Figura 4.3: Nuevo proyecto paso 3

4.4 Creación de un Package

Cuando se esta realizando aplicaciones de cierta envergadura,se tiene que incluir las Clasesde nuestra aplicación en paquetes (packages) para poder obtener una serie de ventajas.

• estos paquetes tienen sentido tanto en el proceso de desarrollo como en el de pro-ducción

• los paquetes no están ligados a un entorno de desarrollo, sino que es una parteintegral y esencial del lenguaje Java

En este caso, se creara un paquete llamado PackHilo siguiendo los siguientes pasos,situese en la ventana Projects ,con el botón derecho del mouse seleccionara la carpetaSource Packages correspondiente al proyecto Hilos que se acaba de crear, se elegira New-Java Package ( ver figura 4.4 de la pág. 113 ).

y en el cuadro de diálogo New Java Package se introduce el nombre del paquete Pac-kHilo y se hace clic sobre el botón Finish; ver figura 4.5 de la pág. 114.

4.5 Creación del applet

1. Seleccionar el paquete,sobre este hacer click con el botón derecho del mouse New-Applets,(ver figura 4.6 de la pág. 115).

2. Fijamos el nombre del Applet y luego presionamos el botón Finish.

Page 135: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

4.5. CREACIÓN DEL APPLET 113

Figura 4.4: Creando un paquete

Page 136: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

114 CAPÍTULO 4. HERRAMIENTAS UTILIZADAS

Figura 4.5: Creacion de paquete paso 2

Page 137: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

4.6. CREACIÓN DE LA PÁGINA HTML 115

3. El editor automaticamente genera un código que hay que rellenar con el código quese necesite, (ver figura 4.8 de la pág. 117).

Figura 4.6: Creacion del applet paso 1

Una vez creado el applets se debe crear la página web que va a contener a este. Sedebe crear un archivo HTML dentro del paquete que contiene el applet.

4.6 Creación de la página HTML

1. Seleccionar el paquete,sobre este hacer click con el botón derecho del mouse New-HTML File...

2. Fijamos el nombre del HTML y presionamos el botón Finish.

3. Desaparecerá el asistente para crear un archivo HTML y aparecerá lo mostrado enla figura 4.11 de la pág.119.Del lado derecho aparece el editor de NetBeans con elesqueleto del HTML: HilosJava.html, mientras que del lado izquierdo aparece elárbol del proyecto Hilos.

Este fichero html debe contener una marca que especifica el código que cargará elappletviewer:<applet name=”Hilojava.class” width=”300” height=”200”> ver figura 4.11de la pág.119.

Page 138: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

116 CAPÍTULO 4. HERRAMIENTAS UTILIZADAS

Figura 4.7: Creacion del applets paso 2

4.7 Ejecución de un Applets

1. Para ejecutar la aplicación dentro de NetBeans, seleccione el archivo .java,en estecaso Hilo.java, con el botón derecho del mouse debe hace clik en Run File como semuestra en la figura 4.12 de la pág.120

2. Los resultados arrojados al ejecutar la aplicación se muestran la ventana: Applet-viewer,en la parte superior de la ventana de NetBeans, como se muestra en la figura4.13 del pág.120.

3. Para ejecutar una aplicación desde una consola del sistema, se tecleara en la consola:java - jar ruta\nombreProyecto.jar, antes se debe crear el archivo jar ,donderuta\nombreProyecto.jar es la ruta y nombre del archivo .jar. Para este ejemploruta \nombreProyecto .jar es: C: \Tesis \Hilos \dist \Hilos.jar.

4.8 Como crear un archivo jar con Netbeans

Archivos JAR (”Java Archives”)

Una archivo JAR es simplemente un archivo comprimido que incluye una estructura dedirectorios con Clases, lo anterior permite:

• Distribuir/Utilizar Clases de una manera eficiente a través de un solo archivo.

Page 139: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

4.8. COMO CREAR UN ARCHIVO JAR CON NETBEANS 117

Figura 4.8: Creaccion de applet paso 3

Page 140: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

118 CAPÍTULO 4. HERRAMIENTAS UTILIZADAS

Figura 4.9: Creacion del HTML paso 1

Page 141: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

4.8. COMO CREAR UN ARCHIVO JAR CON NETBEANS 119

Figura 4.10: Creacion del HTML paso 2

Figura 4.11: Creacion del HTML paso 3

Page 142: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

120 CAPÍTULO 4. HERRAMIENTAS UTILIZADAS

Figura 4.12: Ejecutar un Applet

Figura 4.13: Visualizando el applet en el appletviewer

Page 143: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

4.8. COMO CREAR UN ARCHIVO JAR CON NETBEANS 121

• Declarar dichas Clases de una manera más eficiente en la variable CLASSPATH.

En todo JDK/J2SE se incluye el comando jar el cual permite generar, observar ydescomprimir archivos JAR.

Para poder generar un archivo .jar con Netbean ,primero hay que ver si esta configuradoel proyecto para poder generlo.

1) Se debe hacer click con el boton derecho del mouse sobre el proyecto (en este casoHilos) seleccione Propiedades, ver figura 4.14 de la pág. 121.

Figura 4.14: Propiedades de un proyecto

2) En el cuadro de dialogo de Proyect Propieties en la categoria Packaging debe es-tar tildado Compress JAR file. y en Jar file especifica donde se ubicara el ejecutable

Page 144: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

122 CAPÍTULO 4. HERRAMIENTAS UTILIZADAS

.jar.(dist/Hilos.jar) ver figura 4.15 pág. 122.

Figura 4.15: Propiedades del Proyecto

Para generar un jar de una aplicación sencilla solo debe hacer clickcon el bóton derechodel mouse sobre el proyecto -> Clean and Build ver figura 4.16 de la pág.123.

Une vez que se ejecuto Clean and Build en la pantalla de salida Output mostrara losiguiente,ver figura 4.17 de la pág.123.

En el panel de Archivos(Files) se podra visualizar el archivo JAR dentro de la carpetadist, ver figura 4.18 de la pág. 124.

Ahora cada vez que se desee ejecutar el proyecto sin abrir el netbeans solo bastará conhacer doble clic en el archivo JAR y listo.

4.9 Adobe Dreamweaver CS3

4.9.1 Qué es Dreamweaver CS3?

Dreamweaver CS3 es un software fácil de usar que permite crear páginas web profesionales.Las funciones de edición visual de Dreamweaver CS3 permiten agregar rápidamente

diseño y funcionalidad a las páginas, sin la necesidad de programar manualmente el códigoHTML.

Se puede crear tablas, editar marcos, trabajar con capas, insertar comportamientosJavaScript, etc., de una forma muy sencilla y visual.

Además incluye un software de cliente FTP completo, permitiendo entre otras cosastrabajar con mapas visuales de los sitios web, actualizando el sitio web en el servidor sinsalir del programa.

4.9.2 Novedades de Dreamweaver CS3

Las características que aporta esta nueva versión sobre la anterior.

Page 145: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

4.9. ADOBE DREAMWEAVER CS3 123

Figura 4.16: Generar un archivo jar-Clean and Build

Figura 4.17: Outup del proyecto al generar el archivo jar

Page 146: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

124 CAPÍTULO 4. HERRAMIENTAS UTILIZADAS

Figura 4.18: Proyecto - dist -Hilos.jar

Page 147: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

4.10. ENTORNO DE TRABAJO 125

• Mejoras en Spry. El ”Framework” o estructura Spry ha recibido un fuerte impulsoen esta versión de Dreamweaver. Spry es un conjunto de archivos JavaScript quepermiten la inclusión de elementos dinámicos en las páginas HTML. Por ejemplose pueden incluir acordeones, barras de menus, validación de formularios, acceso adatos XML, etc.

También se han incluido efectos spry que se aplican a elementos ya existentes en lapágina HTML para hacer que se desvanezcan, reduzcan su tamaño, se resalten, etc.

• Mayor integración con Photoshop y Fireworks. Ahora es posible pegar directamen-te imágenes desde Photoshop en una página HTML de Dreamweaver. Luego conun doble clic podremos ir a editar la imagen en Photoshop. Se pueden importarimágenes con capas.

• Mejoras en la comprobación de la compatiblidad con diferentes navegadores. Dream-weaver CS3 puede generar informes con los problemas de visualización de elementosCSS en los navegadores más utilizados.

• Adobe CSS Advisor es un sitio web accesible desde Dreamweaver que contiene in-formación útil para resolver los problemas de compatibilidad entre navegadores.

• Mejoras en CSS. La administración de CSS es más fácil, ahora se pueden trasladarelementos CSS entre diferentes hojas de estilo. También ha aumentado la cantidadde plantillas CSS disponibles para aplicar a nuestras páginas web.

bola Adobe Device Central, incluido en la Adobe Creative Suite, facilita la publicaciónen dispositivos móviles, PDAs, etc.

4.10 Entorno de trabajo

4.10.1 Pantalla Principal

Al arrancar Dreamweaver aparece una pantalla inicial como se ve en la figura 4.19 de lapág.126 vamos a ver sus componentes fundamentales.

4.10.2 La barra de título

La barra de título contiene el nombre del programa (Marcromedia Dreamweaver CS3) yseguidamente el nombre del documento que aparecerá en el explorador y entre paréntesis,su ubicación y el nombre del archivo en formato html. En el extremo de la derecha estánlos botones para minimizar, maximizar/restaurar y cerrar.

Barra de titulo

Page 148: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

126 CAPÍTULO 4. HERRAMIENTAS UTILIZADAS

Figura 4.19: Pantalla principal del Dreamweaver Cs3

Page 149: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

4.10. ENTORNO DE TRABAJO 127

4.10.3 La barra de menús

La barra de menús contiene las operaciones de Dreamweaver, agrupadas en menús desple-gables. Al hacer clic en Insertar, por ejemplo, veremos las operaciones relacionadas conlos diferentes elementos que se pueden insertar en Dreamweaver.

Muchas de las operaciones se pueden hacer a partir de estos menús, pero para algunases preferible o indispensable hacerlas desde los paneles.

Figura 4.20: Barra de menues

4.10.4 La barra de herramientas estándar

Figura 4.21: Barra de Herramientas estándart

La barra de herramientas estándar contiene iconos para ejecutar de forma inmediata al-gunas de las operaciones más habituales, como Abrir , Guardar , etc.

4.10.5 La barra de herramientas de documento

Figura 4.22: Barra de herramienta del documento

La barra de herramientas de documento contiene iconos para ejecutar de forma inmediataalgunas otras operaciones habituales que no incluye la barra de herramientas estándar.Estas operaciones son las de cambio de vista del documento, vista previa, etc.

4.10.6 La barra de estado

La barra de estado nos indica en cada momento en qué etiqueta HTML nos encontramos(en la imagen al encontrarnos en un documento en blanco estamos directamente sobre laetiqueta <body>).

También nos es posible alternar entre los modos de selección, mano (para arrastrarla página), o zoom. En cualquier momento puedes seleccionar el zoom preferido desde eldesplegable zoom y ajustar la vista al porcentaje preferido (por defecto siempre viene al100%).

Page 150: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

128 CAPÍTULO 4. HERRAMIENTAS UTILIZADAS

Figura 4.23: Barra de Estado

4.10.7 Los paneles e inspectores

Dreamweaver utiliza ventanas flotantes similares a las barras de herramientas, que se co-nocen como paneles o inspectores. La diferencia entre panel e inspector es que, en general,la apariencia y opciones de un inspector cambian dependiendo del objeto seleccionado.

A través de la opción Ventana, de la barra de menús, es posible mostrar u ocultar cadauno de los paneles o inspectores. Vamos a ver los más importantes.

4.10.8 El inspector de Propiedades

Figura 4.24: Panel de inspector de propiedades

El inspector de Propiedades muestra y permite modificar las propiedades del elementoseleccionado que son usadas de forma más frecuente. Por ejemplo, cuando el elementoseleccionado sea texto mostrará el tipo de fuente, la alineación, si está en negrita o cursiva,etc.

Pulsando sobre el botón se despliega para mostrar más opciones. Este botón se en-cuentra en la esquina inferior-derecha.

Seguramente es la herramienta de Dreamweaver que más se utiliza.

4.10.9 La barra de herramientas Insertar o panel de objetos

La barra de herramientas Insertar o panel de objetos permite insertar elementos en undocumento sin la necesidad de recurrir al menú Insertar. Los elementos están clasificadossegún su categoría: tablas, texto, objetos de formulario, etc.

Es posible configurar este panel para que en los botones se muestren los iconos de losobjetos (como ocurre en la figura4.25), para que se muestren los nombres de los objetos,o para que se muestren ambos a la vez.

4.10.10 Vistas de un documento

Puedes cambiar la vista del documento a través de la barra de herramientas de documento.

Page 151: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

4.10. ENTORNO DE TRABAJO 129

Figura 4.25: Barra de herramientas Insertar o Panel de objetos

Figura 4.26: Barra de herramienta del documento

Page 152: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

130 CAPÍTULO 4. HERRAMIENTAS UTILIZADAS

4.10.11 La vista de Diseño

La vista Diseño permite trabajar con el editor visual. Es la vista predeterminada deDreamweaver y la que se suele utilizar habitualmente.

Figura 4.27: Vista de Diseño Dreamweaver

4.10.12 La vista código

La vista Código se utiliza para poder trabajar en un entorno totalmente de programa-ción, de código fuente. No permite tener directamente una referencia visual de cómo vaquedando el documento según se va modificando el código.

4.10.13 La vista Código y Diseño

La vista Código y Diseño permite dividir la ventana en dos zonas. La zona superiormuestra el código fuente, y la inferior el editor visual. Cuando se realiza un cambio enalguna de las zonas, este cambio se aplica directamente sobre la otra.

Page 153: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

4.10. ENTORNO DE TRABAJO 131

Figura 4.28: Vista de código en Dreamweaver

Page 154: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

132 CAPÍTULO 4. HERRAMIENTAS UTILIZADAS

Figura 4.29: Vista de diseño y codigo

Page 155: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

4.11. COMO CREAR UN PÁGINA HTML CON DREAMWEAVER CS3 133

4.11 Como crear un página HTML con Dreamweaver CS3

1. Seleccionar la opción File ->New.. Al hacer esto se abrirá el cuadro de dialogo de NewDocument.En la lista de categorías de la izquierda se elige Página en blanco(BlankPage): Tipo de página HTML y Diseño <ninguno>(<none>)

2. Se debe hacer click en Create y listo, (ver figura 4.30 de la pág. 133).

Figura 4.30: Nuevo Documento HTML

También se podrá crear un nuevo documento HTML con la ventana de Bienvenida verfigura4.31,al hacerse clic sobre la opción HTML ,automaticamente genera un HTML sintitulo(Untitled-1) ,según la vista de código se visualizara lo siguiente, ver figura4.32

Se debe guardar este documento nuevo para que esté localizado físicamente en algunacarpeta del sistema (en concreto, en la carpeta del sitio Web en el que se este por trabajar).

Para guardar una página nueva los pasos a seguir serán:

(a) Seleccionar File > Save o hacer clic sobre el botón de la barra deherramientas Estándar.

(b) En el cuadro de diálogo Save AS, accedemos a la carpeta raíz del sitio (ennuestro ejemplo, la carpeta Sitio ).

Aparecerá por defecto la carpeta raíz del sitio que tengamos abierto en el Panel Ar-chivos; ver figura 4.33 de la pág. 136.

1. Se introduce el nombre de archivo .html ( por ejemplo; Prueba.html)

Page 156: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

134 CAPÍTULO 4. HERRAMIENTAS UTILIZADAS

Figura 4.31: Ventana de Bienvenida del Dramweaver

2. Luego se hace clic en Guardar.

El nombre de archivo y su localización en la carpeta del sitio aparecerán en la barrade título de la ventana de DW.

Nombre de archivo Ubicación del HTML

4.11.1 Propiedades de la página.

1. Ir al menú Modify ,seleccionar la opción Page properties,ver figura4.34 de la pág.137, el cual desplegará el cuadro Page Propierties, ver figura 4.35 de la pág. 137.

2. Se puede cambiar el Título de la página modificándolo en la categoría Title/Encoding.

3. Modificará el color de fondo en la categoría Appearance , en la opción Backgroundcolor , se puede seleccionar el color que se desee de la paleta de colores que sedespliega , ver figura4.36 de la pág.138.

4. Se puede cambiar el tipo y tamaño de fuente dentro de la categoría Appearance, verfigura4.37 de la pág.138.

5. Luego de configurar la página como se desea, se hace clic en el botón OK.

Page 157: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

4.11. COMO CREAR UN PÁGINA HTML CON DREAMWEAVER CS3 135

Figura 4.32: Documento Html sin titulo.

4.11.2 Insertar una imagen con Dreamweaver

Para insertar una imagen se debe ir a al menú Insertar elegir la opción Imagen, el cualdesplegara el siguiente ventana, ver figura 4.39 de la pág.139.

También se puede insertar la imagen a través del barra de herramientas,como se ve enla figura 4.38 de la pág.139.

4.11.3 Insertar un Vinculo

1. Sitúa el cursor en la zona del documento que quieres que aparezca el hipervínculo

2. Realiza una de estas dos operaciones para mostrar el cuadro de dialogo Hipervínculo:

• Vamos al menú Insertar > Hyperlink4.40

• Pulsamos sobre el botón Hipervínculo del panel Insertar > Common, el cualdesplegara la siguiente ventana4.41.

Para realizar un enlace simple basta con rellenar estos campos de texto:

• Texto : el texto que se mostrará como hipervínculo en el documento.

• Vinculo : la dirección URL del vínculo o haga clic en el icono de carpeta paralocalizar y seleccionar un archivo dentro del sitio web.

• Destino : Lo explicaremos detenidamente al final de esta Unidad.

Page 158: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

136 CAPÍTULO 4. HERRAMIENTAS UTILIZADAS

Figura 4.33: Ventana de Guardar Como.

Page 159: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

4.11. COMO CREAR UN PÁGINA HTML CON DREAMWEAVER CS3 137

Figura 4.34: Propiedades de la página HTML

Figura 4.35: Configuración de las propiedades de la página

• Título: Escribiremos un texto alternativo que se muestra en un letrero amarillo (verfigura 4.41 de la pág. 140.

4) Aceptar y se obtiene este resultado .

4.11.4 Vista previa del HTML

Para poder visualizar nuestras páginas web, existe la opción de la Vista previa(File ->Preview in Browser). En esta lista de navegadores podrás seleccionar el navegador conel que se desee realizar la vista previa. También podrás Editar esta lista en la opción EditBrowser List.

Page 160: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

138 CAPÍTULO 4. HERRAMIENTAS UTILIZADAS

Figura 4.36: Paleta de Colores de Fondo del la página

Figura 4.37: Tamaño y tipo de fuente de la página

Vista previa del HTMLDreamweaver CS3 incorpora una nueva opción que te permitirá tener una vista previa

de la Web en diferentes marcas y modelos de teléfonos celulares, esta opción se llamaDevice Central.

Page 161: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

Figura 4.38: Insertar -Barra de herramientas

Figura 4.39: Insertar una imagen

Page 162: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

140 CAPÍTULO 4. HERRAMIENTAS UTILIZADAS

Figura 4.40: Insertar un Hyperlink desde el menu.

Figura 4.41: Configuracion Hyperlik

Page 163: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

4.11. COMO CREAR UN PÁGINA HTML CON DREAMWEAVER CS3 141

Figura 4.42: Seleccionar archivo para el enlace

Page 164: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

142 CAPÍTULO 4. HERRAMIENTAS UTILIZADAS

Page 165: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

Capítulo 5

Algoritmos de Planificación delProcesador

Para ingresar al aplicativo a través de Internet desde un navegador ( Exlporer o FireFox)escriba la siguiente dirección en la barra de direcciones:

http://guarani.dch.unne.edu.ar/classes

Figura 5.1: Barra de dirección del navegador

La página se mostrará de la siguiente manera:ver figura 5.2 de la pág.144.Si su pc no posee Java podra descargarlo e instalarlo seleccionando el bóton:

Si no posee Flass player podra descargarlo e instalarlo seleccionando el bóton

, este permite visualizar el reloj.Para poder acceder a la teoría de los Algoritmos de Planificación del procesador ,deberá

presionar el botón de la figura 5.3 de la pág. 144, a continuación mostrara la siguientepantalla,ver figura5.4 de la pág.145.

Una vez que este en esta página podrá acceder a los distintos algoritmos haciendo

clic en el enlace , el cual ejecutará el applet del algoritmo que hayaseleccionado, por ejemplo si eligió Algoritmo de planificación F.I.F.O, mostrará lapágina siguiente, ver figura5.5 de la pág. 146.

En la página le aparecerá un cuadro de dialogo, que le pedirá que ingrese la cantidadde procesos a ejecutar,ver figura 5.6 de la pág.146,una vez realizado esto le solicitará quecargue los tiempo de ejecución de cada unos de los procesos, ver figura 5.7 de la pág.147 .

143

Page 166: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

144 CAPÍTULO 5. ALGORITMOS DE PLANIFICACIÓN DEL PROCESADOR

Figura 5.2: Página Principal

Figura 5.3: Botón de Algortimo de Planificacion de Procesos

Una vez realizado esto podrá visualizar los resultado, ver figura 5.8 de la pág.147 .Para poder acceder a la teoría da Hilos de Java,deberá presionar el botón ,ver figura5.9

de la pág.148 .luego visualizara la siguiente página, ver figura 5.10 de la pág.148.Para poder ejecutar la aplicación realizada en Java, deberá hacer clic en el enlace

,a continuación mostrara el cuadro de dialogo, ver figura 5.11 dela pág. 149, si desea ejecutar directamente el archivo, debe hacer clic en el botón Aceptar,en caso contrario si desea guardar el archivo para luego ejecutarlo desde su Pc, se debeseleccionar la opción Guardar archivo, el cual se descargara por defecto si es un navegadorFireFox en la carpeta Mis Documentos/Descargas.

En el caso que su navegador sea el Explorer el cuadro de dialogo que visualizara es elsiguiente:

Si desea guardar el archivo le mostrara el cuadro de dialogo de la figura 5.11,donde

Page 167: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

5.1. COMO MONTAR LA PÁGINA WEB AL SERVIDOR 145

Figura 5.4: Página de los Algoritmos

deberá especificar donde desea guardar.En el caso de ejecutar directamente se debe hacer clic en el botón Abrir.Una vez que se ha decidió ejecutar la aplicación en Java ,se visualizará la siguiente

ventana:Luego se debe cargar los datos de configuración, para ello seleccione Configuración

y Ejecución, se desplegara una lista, seleccione Datos de configuración.. a continuaciónvisualizara la ventana ,ver figura

se debe ingresar en numero incial de buffer ocupados, los demás datos esta preestable-cidos, luego se hace clic en el botón Aceptar.

Luego mostrara los datos ingresados.Para poder realizar la ejecución se debe seleccionar de la lista de Configuración y

ejecución -> Ejecución Concurrente e HilosPodrá ver a continuación el cuadro siguiente; ver figura 5.19 de la pág.153.Si hace clic en Datos de Configuración -> Listado de resultados de Ejecución, podrá

visualizar el resultado obtenido de la ejecución; ver figura 5.20 de la pág. 154.Para salir del Sistema se debe seleccionar la opción Salir-> Salir del Sistema; ver figura

5.21 de la pág.154.

5.1 Como montar la página web al servidor

Tunnelier es un cliente SSH rápido, robusto, fácil de usar para Windows (todas las versio-nes) con un cliente de transferencia de ficheros SFTP gráfico.

Page 168: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

146 CAPÍTULO 5. ALGORITMOS DE PLANIFICACIÓN DEL PROCESADOR

Figura 5.5: Algoritmo de Planificacion F.I.F.O.

Figura 5.6: Cuadro de entrada de cantidad de procesos

Page 169: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

5.1. COMO MONTAR LA PÁGINA WEB AL SERVIDOR 147

Figura 5.7: Cuadro de entrada del tiempo de los procesos.

Figura 5.8: Resultado del Algoritmo Fifo

Page 170: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

148 CAPÍTULO 5. ALGORITMOS DE PLANIFICACIÓN DEL PROCESADOR

Figura 5.9: Botón Hilos de Java

Figura 5.10: Página de Hilos de java

1. Abrir el Tunnerlier,Inicio-Todos los programas-Bitvise Tunnelier-Tunnerlier.

2. Se debe especificar el Host (en este caso guarani.dch.unne.edu.ar); ver figura 5.22 dela pág. 155.

3. Ingresar el Username y password, luego hacer clic en el botón Login, luego se visua-lizara el siguiente cuadro de dialogo, se debe hacer clic en el botón Accept and Save;ver figura 5.23 de la pág. 156.

4. Podrá visualizar tanto los archivos locales como los archivos remotos(servidor). verfigura 5.24 de la pág. 156.

5. Seleccione la carpeta que contiene los archivos de la página web, y arrastrelo dentrode la carpeta /var/www/classes del archivo del servidor web y listo; ver figura 5.25de la pág. 157.

Page 171: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

Figura 5.11: Abriendo ejecutable de Hilos en Java

Figura 5.12: Cuadro de Dialogo con navegador Explorer

Page 172: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

150 CAPÍTULO 5. ALGORITMOS DE PLANIFICACIÓN DEL PROCESADOR

Figura 5.13: Cuadro Guardar Como

Figura 5.14: Ventana principal

Page 173: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

5.1. COMO MONTAR LA PÁGINA WEB AL SERVIDOR 151

Figura 5.15: Menú Configuración y Ejecución ->Datos de Configuración.

Figura 5.16: Ventana de Configuración

Page 174: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

152 CAPÍTULO 5. ALGORITMOS DE PLANIFICACIÓN DEL PROCESADOR

Figura 5.17: Ventana de Carga de Datos.

Figura 5.18: Menú Configuración y Ejecución -> Ejecución Concurrente e Hilos

Page 175: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

5.1. COMO MONTAR LA PÁGINA WEB AL SERVIDOR 153

Figura 5.19: Ventana Realizar Ejecución Concurrente e Hilos.

Page 176: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

154 CAPÍTULO 5. ALGORITMOS DE PLANIFICACIÓN DEL PROCESADOR

Figura 5.20: Ventana Lista de Resultados de Ejecución Concurrente e Hilos.

Figura 5.21: Ventana Principal-Menú Salir

Page 177: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

5.1. COMO MONTAR LA PÁGINA WEB AL SERVIDOR 155

Figura 5.22: Ventana Principal Tunnelier

Page 178: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

156 CAPÍTULO 5. ALGORITMOS DE PLANIFICACIÓN DEL PROCESADOR

Figura 5.23: Cuadro de Verificacin del HOST

Figura 5.24: Ventana de Local File y Remote File

Page 179: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

5.1. COMO MONTAR LA PÁGINA WEB AL SERVIDOR 157

Figura 5.25: Ventana Local File y Remote File pasando los archivos.

Page 180: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

158 CAPÍTULO 5. ALGORITMOS DE PLANIFICACIÓN DEL PROCESADOR

Page 181: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

Capítulo 6

Conclusión

Se ha desarrollado un entorno interactivo web que ayuda a los usuarios a entender elcomportamiento de los Sistemas Operativos a trevés del analisis de los algoritmos deplanificación del procesador:

• Los algoritmos apropiativos

— Round Robin

— S.R.T

• Los algoritmos no apropiativos

— F.I.F.O

— S.J.F.

Este aplicativo se ha desarrollado utilizando el lenguaje de programacion Java medianteApplets.El applet desarrollado no realiza la grabación de la simulación en un archivo,sinoque muestra los datos del resultado de la simulación en una pantalla dentro del mismoapplet,los cuales se pierden al cerrar el applet.

En cuanto a la aplicación Concurrencia e Hilos con Java proporcionado por elMagister La Red Matinez se realizo una adaptación para que pueda ser ejecutado desde laaplicación web, esto se logro haciendo un compresión de la aplicación en un archivo .jar,para ello requerira que se instale en el cliente la Maquina Virtual.

Actividades futuras.Mejorara el entorno gráfico de los distintos algortimos,agregar más algoritmos.Utilizar Servlets en vez de Applets, para asi poder guardar los resultados en base de

datos, y poder realizar comparaciones o estadisticas con los resultados obtenidos con losdistintos algoritmos.

159

Page 182: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de
Page 183: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

Bibliografía

[1] L. Joyanes Aguilar. Fundamentos de Programación - Algoritmos y Estructura deDatos - Segunda Edición. Mc Graw Hill/Interamericana de España, S.A.U., España,1996.

[2] L. Joyanes Aguilar. Programación Orientada a Objetos - Segunda Edición. Mc GrawHill/Interamericana de España, S.A.U., España, 1998.

[3] L. Joyanes Aguilar; L. Rodríguez Baena; M. Fernández Azuela. Fundamentos deProgramación - Libro de Problemas. Mc Graw Hill/Interamericana de España, S.A.U.,España, 1996.

[4] H. M. Deitel. Introducción a los Sistemas Operativos. Addison-Wesley Iberoamerica-na, México, 1987.

[5] D. L. la Red Martinez. Sistemas Operativos. EUDENE, Argentina, 2004.

[6] L. Joyanes Aguilar; I. Zahonero Martínez. Estructura de Datos - Algoritmos, Abs-tracción y Objetos. Mc Graw Hill/Interamericana de España, S.A.U., España, 1998.

[7] J. L. Peterson; A. Silberschatz. Operating Systems Concepts. Addison-Wesley, MA-USA, 1991.

[8] E. Castillo; A. Cobo; P. Gómez; C. Solares. JAVA - Un Lenguaje de ProgramaciónMultiplataforma para Internet. Paraninfo, España, 1997.

[9] A. S. Tanenbaum. Operating Systems: Design And Implementation. Prentice Hall,NJ-USA, 1987.

[10] A. S. Tanenbaum. Sistemas Operativos Modernos. Prentice Hall Hispanoamericana,S.A., México, 1993.

[11] A. S. Tanenbaum. Sistemas Operativos Distribuidos. Prentice Hall Hispanoamericana,S.A., México, 1996.

[12] A. S. Tanenbaum. Redes de Computadoras. Prentice Hall Hispanoamericana S. A.,México, 1997.

161

Page 184: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de
Page 185: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

Índice de Materias

árbol de procesos, 7

algoritmode planificación, 15

algoritmos de búsqueda en discoalgoritmo del elevador, 30primero en llegar primero en ser aten-

dido, 29primero la búsqueda más corta, 30

almacenamientoauxiliar, 25real, 24

almacenamiento de niveles múltiplesorganización del, 24

almacenamiento virtual, 14conceptos básicos, 23

API (Application Programming Interfa-ce), 79

aplicación interactiva, 95archivo, 28archivos, 6, 27arrays, 92AWT

concepto, 94interface gráfica de usuario, 94

búsquedastraslapadas, 31

batch, 5bibliotecas

de clases, 73bifurcaciones, 86

if, 86if else, 87

bitsde paridad, 32

bloque try, catch, finally, 89brazo del disco

algoritmos de programación del, 29bucles, 87

do while, 88for, 88while, 87

C-SCAN, 60C/C++, 86código

Hamming, 32cargas pesadas, 23Clase, 77clase, 89

características, 90clase object, 91clases de utilidad, 92

clase Arrays, 92clases string y StringBuffer, 93Double, 93integer, 94

CMS, 11comentarios, 86concurrencia, 14contiguidad

artificial, 24cpu, 5, 14, 17cuanto, 37

despachadorde procesos, 17

despachode procesos, 17

direccionesreales, 23traducción de, 23virtuales, 23

direcciones realesespacio de, 23

163

Page 186: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

164 ÍNDICE DE MATERIAS

direcciones virtualesespacio de, 23, 24

directorio, 7de usuarios, 28raíz, 28

discomanejador del, 29

discosmejoras tecnológicas de los, 31RAID, 32

dispositivoindependencia del, 29

Double, 93métodos de la clase, 94

ejemplo dearrays, 92bifurcación if, 86bifurcación if else, 87bucle for, 88bucle while, 87clase, 78comentario, 86construcción de nombres de archivos

en Java, 98do while, 88interface, 78línea compuesta por tres sentencias,

85método, 91matriz, 92operadores incrementales y relaciona-

les, 83programa no portable, 96sentencia return, 89

entrada / salida, 19introducción a la, 29

Errores de Disco, 62errores de programación

carga de drivers JDBC, 100entrada/salida por archivo, 101fuentes de caracteres, 101scheduling de los hilos de ejecución,

96terminación de líneas, 100

uso de características de portabilidad,97

uso de directorios definidos, 98Eschenbach, 60estructuras de programación, 85evento, 95

sources, 95eventos

listeners, 95expresión, 85

FCFS, 29, 59FIFO, 37

herencia, 78, 79Hilos y RPC, 72HRN, 39

independencia de dispositivo, 5, 7información

acceso concurrente a la, 27inialización de arrays, 92instrucciones, 2

ampliadas, 6integer, 94

métodos de la clase, 94interface, 78interfaz, 3

Java, 74características, 75conceptos, 73conceptos básicos, 77errores de programación, 96estructura general de un programa,

76introducción a, 73Jerarquía de clases en, 79

JDK, 86, 100

latencia, 55lenguaje de control de trabajos, 5lenguaje de máquina, 2listener, 95llamada

al núcleo, 8llamadas

Page 187: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

ÍNDICE DE MATERIAS 165

al sistema, 6

máquina virtual, 1, 6máquinas virtuales, 10, 14métodos, 90

de la clase object, 91de objeto, 90

microprogramamicrocódigo, 2

modelo cliente - servidor, 11modo interactivo

conversacional, 5modo núcleo

modo supervisor, 8modo usuario, 8, 12Multics, 10multiprocesamiento, 5, 12multiprogramación

sistemas de, 14multiprogramación, 5, 24

Netbeans, 109

objetos del software, 6OOP, 76, 89operadores, 82

aritméticos, 82de asignación, 82de concatenación de cadenas de ca-

racteres, 84incrementales, 83precedencia de, 84racionales, 83unarios, 82

organizacióninterna, 8

package, 79packages, 77Paginación, 53Paginación anticipada, 51Paginación por demanda, 51Paquetes de Hilos, 70paralelismo, 14PC

computadoras personales, 6planificación

apropiativa, 20del procesador, 20mecanismos de, 21no apropiativa, 20objetivos de la, 21políticas de, 21

planificación apropiativa, 34planificación no apropiativa, 34Prioridad, 35procesador, 15

niveles de planificación del, 20planificación del, 19

procesadoresasignación de los, 14

proceso, 14, 15bloque de control de, 14, 17creación de un, 18destrucción de un, 18estados del, 15hijo, 18padre, 18reanudar un, 18suspendido, 18

proceso cliente, 11proceso servidor, 11procesos, 6

algoritmo de planificación de, 19comportamiento deseable de, 23envejecimiento de, 22estados de, 17estructura jerárquica de, 18jerarquías de, 15lista de bloqueados, 17lista de listos, 17planificación de, 19planificador de, 19prioridad de los, 22tabla de, 18transiciones entre estados, 16

procesos hijo, 7programas de aplicación, 1programas de sistema, 1

Quantum, 38

RAID, 59

Page 188: UniversidadNacionaldelNordeste TrabajoFinaldeAplicación ...exa.unne.edu.ar/informatica/SO/TFLauraGonzalez.pdf · Prefacio Una de las muchas y muy variadas posibles aplicaciones de

166 ÍNDICE DE MATERIAS

discos RAID, 32recursos administrados, 3recursos claves

retención de, 22redes de sistemas, 14reloj de interrupción, 35retraso o demora

rotacional, 29return

do while, 89Round Robin, 37ruta de acceso, 7

Scan, 60SCAN de N- Pasos, 60search

tiempo de demora rotacional, 31seek

tiempo de búsqueda, 31seguridad, 6sentencia, 85seudoparalelismo, 14sistema de archivos, 28

funciones del, 27sistema operativo, 15, 17, 19, 29

características, 2de red, 6definición, 1despachador del, 21distribuido, 6funciones del, 2funciones del núcleo, 18núcleo del, 18objetivo primario, 1

sistemas de archivos, 27sistemas de bases de datos, 6sistemas de tiempo real, 5Sistemas Distribuidos, 67sistemas monolíticos, 8sistemas operativos

conceptos, 6estructura, 8generaciones, 3historia, 3introducción, 1tendencias, 12

SJF, 39software, 79spooling, 5SRT, 39SSF, 30SSTF, 59String, 93

métodos de la clase, 93StringBuffer, 93swing, 96

tablade solicitudes pendientes, 29, 31

tabla de procesos, 7tarea, 14Terminales, 65THE, 8Threads, 67tiempo

de búsqueda, 29de transferencia, 29

timesharingtiempo compartido, 5

Tipo de planificación, 36trap, 7

Uso de Hilos, 68

variableclasificación, 79local, 80miembro, 81miembro de una clase, 80referencia, 80

variablestipo primitivo, 80visibilidad y vida de las, 81

VM/370, 11