Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
1
Este documento contiene informacin para el curso de Sistemas operativos recopilada de diversas fuentes en Internet
Instituto Tecnolgico de Tuxtla Gutirrez Ingeniera en Sistemas Computacionales SISTEMAS OPERATIVOS Prof. Germn Ros Toledo
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
2 Unidad I Introduccin a los sistemas operativos. INTRODUCCION: Sin el software una computadora es en esencia una masa metlica sin utilidad. Con el software, una computadora puede almacenar, procesar y recuperar informacin, encontrar errores de ortografa e intervenir en muchas otras valiosas actividades para ganar el sustento. El software para computadoras puede clasificarse en general, en 2 clases: los programas de sistema, que controlan la operacin de la computadora en s y los programas de aplicacin, los cuales resuelven problemas para sus usuarios. El programa fundamental de todos los programas de sistema, es el Sistema Operativo, que controla todos los recursos de la computadora y proporciona la base sobre la cual pueden escribirse los programas de aplicacin. Un Sistema Operativo es un programa que acta como intermediario entre el usuario y el hardware de una computadora y su propsito es proporcionar un entorno en el cual el usuario pueda ejecutar programas. El objetivo principal de un Sistema Operativo es, entonces, lograr que el Sistema de computacin se use de manera cmoda, y el objetivo secundario es que el hardware de la computadora se emplee de manera eficiente.
Los sistemas operativos 1.1 Concepto y definicin de Sistemas Operativos. Un Sistema Operativo es una parte importante de cualquier sistema de computacin. Un sistema de computacin puede dividirse en tres componentes: el hardware, el Sistema Operativo, los programas de aplicacin. El hardware (Unidad Central de Procesamiento (CPU), memoria y dispositivos de entrada/salida (E/S)) proporciona los recursos de computacin bsicos. Los programas de aplicacin (compiladores, sistemas de bases de datos, juegos de video y programas para negocios) definen la forma en que estos recursos se emplean para resolver los problemas de computacin de los usuarios. Existen diversas definiciones de lo que es un Sistema Operativo, pero no hay una definicin exacta, es decir una que sea estndar; a continuacin se presentan algunas: Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
3 Se pueden imaginar un Sistema Operativo como los programas, instalados en el software o firmware, que hacen utilizable el hardware. El hardware proporciona la "capacidad bruta de cmputo"; los sistemas operativos ponen dicha capacidad de cmputo al alcance de los usuarios y administran cuidadosamente el hardware para lograr un buen rendimiento. Los Sistemas Operativos son ante todo administradores de recursos; el principal recurso que administran es el hardware de la computadora; adems de los procesadores, los medios de almacenamiento, los dispositivos de entrada/salida, los dispositivos de comunicacin y los datos. Un Sistema Operativo es un programa que acta como intermediario entre el usuario y el hardware de la computadora y su propsito es proporcionar el entorno en el cual el usuario pueda ejecutar programas. Entonces, el objetivo principal de un Sistema Operativo es, lograr que el sistema de computacin se use de manera cmoda, y el objetivo secundario es que el hardware de la computadora se emplee de manera eficiente. Un Sistema Operativo es un conjunto de programas que controla la ejecucin de programas de aplicacin y acta como una interfaz entre el usuario y el hardware de una computadora, esto es, un Sistema Operativo explota y administra los recursos de hardware de la computadora con el objeto de proporcionar un conjunto de servicios a los usuarios del sistema. En resumen, se podra decir que los Sistemas Operativos son un conjunto de programas que crean la interfaz del hardware con el usuario, y que tiene dos funciones primordiales, que son: Gestionar el hardware.- Se refiere al hecho de administrar de una forma ms eficiente los recursos de la mquina. Facilitar el trabajo al usuario.- Permite una comunicacin con los dispositivos de la mquina. El Sistema Operativo se encuentra almacenado en la memoria secundaria. Primero se carga y ejecuta un pedazo de cdigo que se encuentra en el procesador, el cual carga el BIOS, y este a su vez carga el Sistema Operativo que carga todos los programas de aplicacin y software variado.
1.2 Caractersticas de los Sistemas Operativos.
En general, se puede decir que un Sistema Operativo tiene las siguientes caractersticas: Conveniencia. Un Sistema Operativo hace ms conveniente el uso de una computadora. Eficiencia. Un Sistema Operativo permite que los recursos de la computadora se usen de la manera ms eficiente posible. Habilidad para evolucionar. Un Sistema Operativo deber construirse de manera que permita el desarrollo, prueba o introduccin efectiva de nuevas funciones del sistema sin interferir con el servicio. Encargado de administrar el hardware. El Sistema Operativo se encarga de manejar de una mejor manera los recursos de la Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
4 computadora en cuanto a hardware se refiere, esto es, asignar a cada proceso una parte del procesador para poder compartir los recursos. Relacionar dispositivos (gestionar a travs del kernel). El Sistema Operativo se debe encargar de comunicar a los dispositivos perifricos, cuando el usuario as lo requiera. Organizar datos para acceso rpido y seguro. Manejar las comunicaciones en red. El Sistema Operativo permite al usuario manejar con alta facilidad todo lo referente a la instalacin y uso de las redes de computadoras. Procesamiento por bytes de flujo a travs del bus de datos. Facilitar las entradas y salidas. Un Sistema Operativo debe hacerle fcil al usuario el acceso y manejo de los dispositivos de Entrada/Salida de la computadora. Tcnicas de recuperacin de errores. Evita que otros usuarios interfieran. El Sistema Operativo evita que los usuarios se bloqueen entre ellos, informndoles si esa aplicacin esta siendo ocupada por otro usuario. Generacin de estadsticas. Permite que se puedan compartir el hardware y los datos entre los usuarios.
El software de aplicacin son programas que se utilizan para disear, tal como el procesador de palabras, lenguajes de programacin, hojas de clculo, etc. El software de base sirve para interactuar el usuario con la mquina, son un conjunto de programas que facilitan el ambiente plataforma, y permite el diseo del mismo. El Software de base est compuesto por: Cargadores. Compiladores. Ensambladores. Macros. 1.3 Clasificacin de los sistemas operativos. Con el paso del tiempo, los Sistemas Operativos fueron clasificndose de diferentes maneras, dependiendo del uso o de la aplicacin que se les daba. A continuacin se mostrarn diversos tipos de Sistemas Operativos que existen en la actualidad, con algunas de sus caractersticas: Sistemas Operativos por lotes. Los Sistemas Operativos por lotes, procesan una gran cantidad de trabajos con poca o ninguna interaccin entre los usuarios y los programas en ejecucin. Se renen todos los trabajos comunes para realizarlos al mismo tiempo, evitando la espera de dos o ms trabajos como sucede en el procesamiento en serie. Estos Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
5 sistemas son de los ms tradicionales y antiguos, y fueron introducidos alrededor de 1956 para aumentar la capacidad de procesamiento de los programas. Cuando estos sistemas son bien planeados, pueden tener un tiempo de ejecucin muy alto, porque el procesador es mejor utilizado y los Sistemas Operativos pueden ser simples, debido a la secuenciabilidad de la ejecucin de los trabajos. Algunos ejemplos de Sistemas Operativos por lotes exitosos son el SCOPE, del DC6600, el cual est orientado a procesamiento cientfico pesado, y el EXEC II para el UNIVAC 1107, orientado a procesamiento acadmico. Algunas otras caractersticas con que cuentan los Sistemas Operativos por lotes son: Requiere que el programa, datos y rdenes al sistema sean remitidos todos juntos en forma de lote. Permiten poca o ninguna interaccin usuario/programa en ejecucin. Mayor potencial de utilizacin de recursos que procesamiento serial simple en sistemas multiusuarios. No conveniente para desarrollo de programas por bajo tiempo de retorno y depuracin fuera de lnea. Conveniente para programas de largos tiempos de ejecucin (ej, anlisis estadsticos, nminas de personal, etc.). Se encuentra en muchas computadoras personales combinados con procesamiento serial. Planificacin del procesador sencilla, tpicamente procesados en orden de llegada. Planificacin de memoria sencilla, generalmente se divide en dos: parte residente del S.O. y programas transitorios. No requieren gestin crtica de dispositivos en el tiempo. Suelen proporcionar gestin sencilla de manejo de archivos: se requiere poca proteccin y ningn control de concurrencia para el acceso. Sistemas Operativos de tiempo real. Los Sistemas Operativos de tiempo real son aquellos en los cuales no tiene importancia el usuario, sino los procesos. Por lo general, estn subutilizados sus recursos con la finalidad de prestar atencin a los procesos en el momento que lo requieran. se utilizan en entornos donde son procesados un gran nmero de sucesos o eventos. Muchos Sistemas Operativos de tiempo real son construidos para aplicaciones muy especficas como control de trfico areo, bolsas de valores, control de refineras, control de laminadores. Tambin en el ramo automovilstico y de la electrnica de consumo, las aplicaciones de tiempo real estn creciendo muy rpidamente.
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
6
Ejemplo de Tiempo Real Algunos ejemplos de Sistemas Operativos de tiempo real son: QNX, TR Linux, VxWorks, Solaris, Lyns OS y Spectra. Los Sistemas Operativos de tiempo real, cuentan con las siguientes caractersticas: Se dan en entornos en donde deben ser aceptados y procesados gran cantidad de sucesos, la mayora externos al sistema computacional, en breve tiempo o dentro de ciertos plazos. Se utilizan en control industrial, conmutacin telefnica, control de vuelo, simulaciones en tiempo real., aplicaciones militares, etc. Objetivo es proporcionar rpidos tiempos de respuesta. Procesa rfagas de miles de interrupciones por segundo sin perder un solo suceso. Proceso se activa tras ocurrencia de suceso, mediante interrupcin. Proceso de mayor prioridad expropia recursos. Por tanto generalmente se utiliza planificacin expropiativa basada en prioridades. Gestin de memoria menos exigente que tiempo compartido, usualmente procesos son residentes permanentes en memoria. Poblacin de procesos esttica en gran medida. Poco movimiento de programas entre almacenamiento secundario y memoria. Gestin de archivos se orienta ms a velocidad de acceso que a utilizacin eficiente del recurso. Sistemas Operativos de multiprogramacin (o Sistemas Operativos de multitarea). Se distinguen por sus habilidades para poder soportar la ejecucin de dos o ms trabajos activos (que se estn ejecutado) al mismo tiempo. Esto trae como Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
7 resultado que la Unidad Central de Procesamiento (UCP) siempre tenga alguna tarea que ejecutar, aprovechando al mximo su utilizacin. Su objetivo es tener a varias tareas en la memoria principal, de manera que cada uno est usando el procesador, o un procesador distinto, es decir, involucra mquinas con ms de una UCP. Sistemas Operativos como UNIX, Windows 95, Windows 98, Windows NT, MAC- OS, OS/2, soportan la multitarea. Las caractersticas de un Sistema Operativo de multiprogramacin o multitarea son las siguientes: Mejora productividad del sistema y utilizacin de recursos. Multiplexa recursos entre varios programas. Generalmente soportan mltiples usuarios (multiusuarios). Proporcionan facilidades para mantener el entorno de usuarios individuales. Requieren validacin de usuario para seguridad y proteccin. Proporcionan contabilidad del uso de los recursos por parte de los usuarios. Multitarea sin soporte multiusuario se encuentra en algunas computadoras personales o en sistemas de tiempo real. Sistemas multiprocesadores son sistemas multitareas por definicin ya que soportan la ejecucin simultnea de mltiples tareas sobre diferentes procesadores. En general, los sistemas de multiprogramacin se caracterizan por tener mltiples programas activos compitiendo por los recursos del sistema: procesador, memoria, dispositivos perifricos.
La Multitarea
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
8 Sistemas Operativos de tiempo compartido. Permiten la simulacin de que el sistema y sus recursos son todos para cada usuario. El usuario hace una peticin a la computadora, esta la procesa tan pronto como le es posible, y la respuesta aparecer en la terminal del usuario. Los principales recursos del sistema, el procesador, la memoria, dispositivos de E/S, son continuamente utilizados entre los diversos usuarios, dando a cada usuario la ilusin de que tiene el sistema dedicado para s mismo. Esto trae como consecuencia una gran carga de trabajo al Sistema Operativo, principalmente en la administracin de memoria principal y secundaria. Ejemplos de Sistemas Operativos de tiempo compartido son Multics, OS/360 y DEC-10. Caractersticas de los Sistemas Operativos de tiempo compartido: Populares representantes de sistemas multiprogramados multiusuario, ej: sistemas de diseo asistido por computadora, procesamiento de texto, etc. Dan la ilusin de que cada usuario tiene una mquina para s. Mayora utilizan algoritmo de reparto circular. Programas se ejecutan con prioridad rotatoria que se incrementa con la espera y disminuye despus de concedido el servicio. Evitan monopolizacin del sistema asignando tiempos de procesador (time slot). Gestin de memoria proporciona proteccin a programas residentes. Gestin de archivo debe proporcionar proteccin y control de acceso debido a que pueden existir mltiples usuarios accesando un mismo archivos. Sistemas Operativos distribuidos. Permiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores. Puede ser que este conjunto de procesadores est en un equipo o en diferentes, en este caso es trasparente para el usuario. Existen dos esquemas bsicos de stos. Un sistema fuertemente acoplado es a es aquel que comparte la memoria y un reloj global, cuyos tiempos de acceso son similares para todos los procesadores. En un sistema dbilmente acoplado los procesadores no comparten ni memoria ni reloj, ya que cada uno cuenta con su memoria local. Los sistemas distribuidos deben de ser muy confiables, ya que si un componente del sistema se compone otro componente debe de ser capaz de reemplazarlo. Entre los diferentes Sistemas Operativos distribuidos que existen tenemos los siguientes: Sprite, Solaris-MC, Mach, Chorus, Spring, Amoeba, Taos, etc. Caractersticas de los Sistemas Operativos distribuidos: Teor Prof. Germ
Coleccin de sistemas autnomos capaces de comunicacin y cooperacin mediante interconexiones hardware y software . Gobierna operacin de un S.C. y proporciona abstraccin de mquina virtual a los usuarios. Objetivo clave es la transparencia. Generalmente proporcionan medios para la comparticin global de recursos. Servicios aadidos: denominacin global, sistemas de archivos distribuidos, facilidades para distribucin de clculos (a travs de comunicacin de procesos internodos, llamadas a procedimientos remotos, etc.).
Sistemas Operativos de red. Son aquellos sistemas que mantienen a dos o ms computadoras unidas a trav de algn medio de comunicacin (fsico o no), con el objetivo primordial de poder compartir los diferentes recursos y la informacin del sistema. El primer Sistema Operativo de red estaba enfocado a equipos con un procesador Motorola 68000, pasando pos Netware. Los Sistemas Operativos de red mas ampliamente usados son: Novell Netware, Personal Netware, LAN Manager, Windows NT Server, UNIX, LANtastic. Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Guti Coleccin de sistemas autnomos capaces de comunicacin y cooperacin mediante interconexiones hardware y software . operacin de un S.C. y proporciona abstraccin de mquina virtual a los usuarios. Objetivo clave es la transparencia. Generalmente proporcionan medios para la comparticin global de Servicios aadidos: denominacin global, sistemas de archivos distribuidos, facilidades para distribucin de clculos (a travs de comunicacin de procesos internodos, llamadas a procedimientos
Sistemas Operativos de red. Son aquellos sistemas que mantienen a dos o ms computadoras unidas a trav de algn medio de comunicacin (fsico o no), con el objetivo primordial de poder compartir los diferentes recursos y la informacin del sistema. El primer Sistema Operativo de red estaba enfocado a equipos con un procesador Motorola 68000, pasando posteriormente a procesadores Intel como Novell Los Sistemas Operativos de red mas ampliamente usados son: Novell Netware, Personal Netware, LAN Manager, Windows NT Server, UNIX, LANtastic.
Sistema operativo de Red gico de Tuxtla Gutirrez) 9 Coleccin de sistemas autnomos capaces de comunicacin y operacin de un S.C. y proporciona abstraccin de mquina Generalmente proporcionan medios para la comparticin global de Servicios aadidos: denominacin global, sistemas de archivos distribuidos, facilidades para distribucin de clculos (a travs de comunicacin de procesos internodos, llamadas a procedimientos Son aquellos sistemas que mantienen a dos o ms computadoras unidas a travs de algn medio de comunicacin (fsico o no), con el objetivo primordial de poder El primer Sistema Operativo de red estaba enfocado a equipos con un procesador teriormente a procesadores Intel como Novell Los Sistemas Operativos de red mas ampliamente usados son: Novell Netware, Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
10 Sistemas Operativos Multiproceso. Las computadoras que tienen mas de un CPU son llamadas multiproceso. Un sistema operativo multiproceso coordina las operaciones de la computadoras multiprocesadoras. Ya que cada CPU en una computadora de multiproceso puede estar ejecutando una instrucci n, el otro procesador queda liberado para procesar otras instrucciones simultneamente. Al usar una computadora con capacidades de multiproceso incrementamos su velocidad de respuesta y procesos. Casi todas las computadoras que tienen capacidad de mu ltiproceso ofrecen una gran ventaja. Los primeros Sistemas Operativos Multiproceso realizaban lo que se conoce como: Multiproceso asimtrico: Una CPU principal retiene el control global de la computadora, as como el de los otros procesadores. Esto fue un primer paso hacia el multiproceso pero no fue la direccin ideal a seguir ya que la CPU principal poda conv ertirse en un cuello de botella. Multiproceso simtrico: En un sistema multiproceso simtrico, no existe una CPU controladora nica. La barrera a vencer al implementar el multiproceso simtrico es que los SO tienen que ser rediseados o diseados desde el principio para trabajar en u n ambiente multiproceso. Las extensiones de Unix, que soportan multiproceso asimtrico ya estn disponibles y las extensiones simtricas se estn haciendo disponibles. Windows NT de Microsoft soporta multiproceso simtrico.
Sistema Multiprocesador
2.1 Metodologa de diseo Existen autores que son partidarios de un enfoque jerrquico para el diseo de sistemas operativos. En la base de la jerarqua se encuentra el hardware , en el siguiente nivel de la jerarqua (o en varios de los siguientes niveles en algunos diseos) estn las diferentes funciones del ncleo, las cuales se ven como si formaran una mquina ampliada, es decir, un computadora que ofrece no slo su lenguaje de mquina como apoyo al sistema operativo y a sus usuarios, sino tambin un grupo de funciones adicionales proporcionadas por el ncleo. Estas posibilidades adicionales se denominan a menudo primitivas.
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
11 Arriba del ncleo, en jerarqua, se encuentran los diferentes procesos del sistema operativo que trabajan en apoyo de los procesos de usuario; por ejemplo, los procesos de administracin de los dispositivos, que se encargan en la prctica de supervisar las operaciones de entrada/salida de los dispositivos del sistema para beneficio de los diversos usuarios. En la cima de la jerarqua se encuentran los procesos de usuario.
Se ha visto que los diseos jerrquicos son ms fciles de depurar, modificar y verificar. En los diseos en que el ncleo est distribuido en varios niveles de jerarqua, elegir qu funcin colocar en cada nivel requiere un anlisis cuidadoso. En tales diseos, con frecuencia slo se permite hacer llamadas a funciones situadas jerrquicamente por debajo de quin hace la llamada; es decir, cada nivel slo puede llamar a las funciones que estn colocadas en el nivel inmediato inferior.
Arquitectura del Sistema Operativo En los sistemas ms recientes existe la tendencia de colocar gran parte del ncleo en microcdigo. sta es una tcnica de seguridad efectiva, pues impide la alteracin del ncleo y con una cuidadosa codificacin se puede lograr que se ejecuten ms eficientemente las funciones del ncleo. 2.2 Ncleo o Kernel y niveles de un sistema operativo El Kernel consiste en la parte principal del cdigo del sistema operativo, el cual se encargan de controlar y administrar los servicios y peticiones de recursos y de hardware con respecto a uno o varios procesos, este se divide en 5 capas: Nivel 1. Gestin de Memoria: que proporciona las facilidades de bajo nivel para la gestin de memoria secundaria necesaria para la ejecucin de procesos. Nivel 2. Procesador: Se encarga de activar los cuantums de tiempo para cada uno de los procesos, creando interrupciones de hardware cuando no son respetadas. Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
12 Nivel 3. Entrada/Salida: Proporciona las facilidades para poder utilizar los dispositivos de E/S requeridos por procesos. Nivel 4. Informacin o Aplicacin o Interprete de Lenguajes: Facilita la comunicacin con los lenguajes y el sistema operativo para aceptar las ordenes en cada una de las aplicaciones. Cuando se solicitan ejecutando un programa el software de este nivel crea el ambiente de trabajo e invoca a los procesos correspondientes. Nivel 5. Control de Archivos: Proporciona la facilidad para el almacenamiento a largo plazo y manipulacin de archivos con nombre, va asignando espacio y acceso de datos en memoria.
El ncleo y los procesos
El ncleo (Kernel) de un sistema operativo es un conjunto de rutinas cuya misin es la de gestionar el procesador, la memoria, la entrada/salida y el resto de procesos disponibles en la instalacin. Toda esta gestin la realiza para atender al funcionamiento y peticiones de los trabajos que se ejecutan en el sistema. El esquema general del mismo es el siguiente: Definicin y concepto de proceso. El Bloque de Control de Proceso (PCB) como imagen donde el sistema operativo ve el estado del proceso. Estados por los que pasa un proceso a lo largo de su existencia en la computadora. Operaciones que se pueden realizar sobre un proceso. Clasificacin de los procesos segn su forma de ejecucin, de carga, etc.
Procesos
Uno de los conceptos ms importantes que gira entorno a un sistema operativo es el de proceso. Un proceso es un programa en ejecucin junto con el entorno asociado (registros, variables, etc.). El corazn de un sistema operativo es el ncleo, un programa de control que reacciona ante cualquier interrupcin de eventos externos y que da servicio a los procesos, crendolos, terminndolos y respondiendo a cualquier peticin de servicio por parte de los mismos.
Un proceso es una actividad que se apoya en datos, recursos, un estado en cada momento y un programa. Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
13
Prioridades Todo proceso por sus caractersticas e importancia lleva aparejadas unas determinadas necesidades de ejecucin en cuanto a urgencia y asignacin de recursos. Las prioridades segn los sistemas operativos se pueden clasificar del siguiente modo:
Asignadas por el sistema operativo. Se trata de prioridades que son asignadas a un proceso en el momento de comenzar su ejecucin y dependen fundamentalmente de los privilegios de su propietario y del modo de ejecucin. Asignadas por el propietario. Estticas. Dinmicas.
Prioridades de procesos
El Ncleo del Sistema Operativo Todas las operaciones en las que participan procesos son controladas por la parte del sistema operativo denominada ncleo (core o kernel, en ingls). El ncleo normalmente representa slo una pequea parte de lo que por lo general se piensa que es todo el sistema operativo, pero es tal vez el cdigo que ms se utiliza. Por esta razn, el ncleo reside por lo regular en la memoria principal, mientras que otras partes del sistema operativo son cargadas en la memoria principal slo cuando se necesitan. Los ncleos se disean para realizar el mnimo posible de procesamiento en cada interrupcin y dejar que el resto lo realice el proceso apropiado del sistema, que puede operar mientras el ncleo se habilita para atender otras interrupciones.
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
14 Resumen de las Funciones del Ncleo El ncleo de un sistema operativo normalmente contiene el cdigo necesario para realizar las siguientes funciones: Manejo de interrupciones. Creacin y destruccin de procesos. Cambio de estado de los procesos. Despacho. Suspensin y reanudacin de procesos. Sincronizacin de procesos. Comunicacin entre procesos. Manipulacin de los bloques de control de procesos. Apoyo para las actividades de entrada/salida. Apoyo para asignacin y liberacin de memoria. Apoyo para el sistema de archivos. Apoyo para el mecanismo de llamada y retorno de un procedimiento. Apoyo para ciertas funciones de contabilidad del sistema.
Estructura Jerrquica del Sistema
Una computadora que ofrece no slo su lenguaje de mquina como apoyo al sistema operativo y a sus usuarios, sino tambin un grupo de funciones adicionales proporcionadas por el ncleo. Arriba del ncleo, en jerarqua, se encuentran los diferentes procesos del sistema operativo que trabajan en apoyo de los procesos de usuario, que se encargan en la prctica de supervisar las operaciones de entrada/salida de los dispositivos del sistema para beneficio de los diversos usuarios. En los diseos en que el ncleo est distribuido en varios niveles de jerarqua, elegir qu funcin colocar en cada nivel requiere un anlisis cuidadoso. En tales diseos, con frecuencia slo se permite hacer llamadas a funciones situadas jerrquicamente por debajo de quien hace la llamada; es decir, cada nivel slo puede llamar a las funciones que estn colocadas en el nivel inmediato inferior.
El bloque de control de procesos (PCB)
El bloque de control de proceso (PCB) es una estructura de datos que contiene la informacin que permite al sistema operativo localizar toda la informacin importante sobre un proceso, incluyendo su estado actual, identificacin, prioridad, memoria, recursos, valores de los registros, etctera. El PCB define el proceso al sistema operativo. Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
15 Los sistemas operativos contienen mecanismos para realizar diversas operaciones sobre los procesos, como crear, destruir, reanudar, cambiar la prioridad, bloquear, despertar y despachar.
La estructura del PCB
Los subsistemas del Kernel El subsistema de archivos controla los recursos del sistema de archivos y tiene funciones como reservar espacio para los archivos, administrar el espacio libre, controlar el acceso a los archivos, permitir el intercambio de datos entre los archivos y el usuario, etc. El subsistema de control de procesos es el responsable de la planificacin de los procesos (scheduler), su sincronizacin, comunicacin entre los mismos (IPC inter process comunication) y del control de la memoria principal. Al mdulo gestor de memoria (swapping) se le conoce tambin como swapper. El planificador o scheduler se encarga de gestionar el tiempo de CPU que tiene asignado cada proceso. El scheduler entra en ejecucin cada cuanto de tiempo y decide si el proceso actual tiene derecho a seguir ejecutndose (esto depende de la prioridad y de sus privilegios). La comunicacin entre procesos puede realizarse de forma asncrona (seales) o sncrona (colas de mensajes, semforos). Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
16 Por ltimo, el mdulo de control del hardware es la parte del kernel encargada del manejo de las interrupciones y de la comunicacin con la mquina. Los dispositivos pueden interrumpir a la CPU mientras est ejecutando un proceso. Si esto ocurre, el kernel debe reanudar la ejecucin del proceso despus de atender a la interrupcin. Las interrupciones no son atendidas por procesos, sino por funciones especiales, codificadas en el kernel, que son invocadas durante la ejecucin de cualquier proceso.
Los subsistemas del Ncleo
2.3 Interrupciones de Entrada y Salida Son iniciadas por hardware de entrada y salida. Estas interrupciones indican a la CPU el cambio de estado de un canal o dispositivo. Las interrupciones de E/S se producen cuando finaliza una operacin de E/S o cuando un dispositivo pasa al estado listo. 2.4 Interrupciones del procesador Una interrupcin es un evento que altera la secuencia en que el procesador ejecuta las instrucciones. La interrupcin es generada por el hardware del sistema de cmputo. Cuando ocurre una interrupcin:
El sistema operativo toma el control (es decir, el hardware pasa el control al sistema operativo). El sistema operativo guarda el estado del proceso interrumpido. En muchos sistemas esta informacin se guarda en el bloque de control de proceso interrumpido. El sistema operativo analiza la interrupcin y transfiere el control a la rutina apropiada para atenderla; en muchos sistemas actuales el hardware se encarga de esto automticamente. La rutina del manejador de interrupciones procesa la interrupcin. Se restablece el estado del proceso interrumpido (o del siguiente proceso). Se ejecuta el proceso interrumpido (o el siguiente proceso). Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
17
Controlador de interrupciones Una interrupcin puede ser iniciada especficamente por un proceso en ejecucin (en cuyo caso se suele denominar trampa (trap), y se dice que est sincronizada con la operacin del proceso) o puede ser causada por algn evento que puede estar relacionado o no con el proceso en ejecucin (en cuyo caso se dice que es asncrona con la operacin del proceso). Los sistemas orientados hacia las interrupciones pueden sobrecargarse. Si ests llegan con mucha frecuencia, el sistema no ser capaz de atenderlas. En algunos sistemas orientados hacia el teclado, cada tecla presionada almacena en la memoria un cdigo de un byte y genera un interrupcin para informar a la UCP que un carcter est listo para ser procesado. Si la UCP no puede procesar el dato antes de que se presione la siguiente tecla, se pierde el primer carcter.
Clases de Interrupciones
Existen seis clases de interrupciones:
Interrupciones SVC (supervisor call, llamadas al supervisor). Son iniciadas por un proceso en ejecucin que ejecute la instruccin SVC. Una SVC es una peticin generada por el usuario de un servicio particular del sistema, como realizar una operacin de entrada/salida, obtener ms memoria o comunicarse con el operador del sistema. El mecanismo de las SVC ayuda a proteger el sistema operativo de las acciones de los usuarios. Un usuario no puede entrar arbitrariamente al sistema operativo, sino que debe solicitar un servicio por medio de una SVC. El sistema operativo est al tanto de todos los usuarios que intentan rebasar sus limites y puede rechazar ciertas peticiones si el usuario no tiene los privilegios necesarios. Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
18 Interrupciones de E/S. Son iniciadas por hardware de entrada y salida. Estas interrupciones indican a la UCP el cambio de estado de un canal o dispositivo. Las interrupciones de E/S se producen cuando finaliza una operacin de E/S o cuando un dispositivo pasa al estado listo. Interrupciones externas. Son causadas por diversos eventos, incluyendo la expiracin de un cuanto de un reloj que interrumpe, la pulsacin de la tecla de interrupcin de la consola o la recepcin de una seal procedente de otro procesador en un sistema de mltiples procesadores. Interrupciones de Reinicio. Se produce cuando se presiona el botn de reinicio de la PC o cuando llega de otro procesador una instruccin de reinicio en un sistema de multiprocesamiento Interrupciones de verificacin del programa. Son causadas por una amplia clase de problemas que pueden ocurrir cuando se ejecutan las instrucciones en lenguaje mquina de un programa. Dichos problemas incluyen la divisin entre cero, el exceso o defecto de los nmeros que pueden ser manejados por las operaciones aritmticas, el intento de hacer referencia a una localidad de memoria que est fuera de los lmites de la memoria real. Muchos sistemas ofrecen a los usuarios la opcin de especificar las rutinas que deben ejecutarse cuando ocurra una interrupcin de verificacin del programa. Interrupciones de verificacin de la mquina. Son ocasionadas por el mal funcionamiento del hardware.
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
19 Unidad II Administracin de procesos.
2. INTRODUCCIN A LOS PROCESOS Todas las computadoras modernas hacen varias cosas al mismo tiempo. A la vez que ejecuta un programa del usuario, una computadora puede leer de un disco e imprimir en una terminal o impresora. En un sistema de multiprogramacin, la CPU tambin alterna de programa en programa, ejecutando cada uno de ellos por decenas o cientos de milisegundos. Aunque, en sentido estricto, la CPU ejecuta en cierto instante un solo programa, durante un segundo puede trabajar con varios de ellos, lo que da una apariencia de paralelismo. A veces, las personas hablan de pseudoparalelismo para indicar este rpido intercambio de los programas en la CPU, para distinguirlo del paralelismo real del hardware, donde se hacen clculos en la CPU a la vez que operan uno o ms dispositivos de entrada/salida. Es difcil mantener un registro de las distintas actividades paralelas. Por lo tanto, los diseadores del sistema operativo han desarrollado con el tiempo un modelo que facilita el uso del paralelismo.
2.1 CONCEPTO DE PROCESO.
El trmino "PROCESO", fue utilizado por primera vez por los diseadores del sistema Multics en los aos 60s. Desde entonces, el trmino proceso, utilizado a veces como sinnimo de tarea, ha tenido muchas definiciones. A continuacin se presentan algunas: Un programa en ejecucin Una actividad asncrona El "espritu animado" de un procedimiento El "centro de control" de un procedimiento en ejecucin Lo que se manifiesta por la existencia de un "bloque de control del proceso" en el sistema operativo La entidad a la que se asignan los procesadores La unidad "despachable" Aunque se han dado muchas otras definiciones, no hay una definicin universalmente aceptada, pero el concepto de "Programa en ejecucin" parece ser el que se utiliza con ms frecuencia. Un programa es una entidad inanimada; slo cuando un procesador le "infunde vida" se convierte en la entidad "activa" que se denomina proceso.
Un proceso pasa por una serie de datos discretos. Se dice que un proceso se est ejecutando (estado de ejecucin), si tiene asignada la CPU. Se dice que un proceso est listo (estado listo) si pudiera utilizar una CPU en caso de haber una Teor Prof. Germ
disponible. Un proceso est bloqueado (estado bloqueado) si est esperando que suceda algn evento antes de poder seguir la ejecucin.
El
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Guti disponible. Un proceso est bloqueado (estado bloqueado) si est esperando que suceda algn evento antes de poder seguir la ejecucin. Ciclo de vida de un proceso
ciclo de vida detallado de un proceso gico de Tuxtla Gutirrez) 20 disponible. Un proceso est bloqueado (estado bloqueado) si est esperando que
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
21 El Bloque de Control de Procesos (PCB)
Un proceso se representa desde el punto de vista del sistema operativo, por un conjunto de datos donde se incluyen el estado en cada momento, recursos utilizados, registros, etc., denominado Bloque de Control de Procesos (PCB).
Los objetivos del bloque de control de procesos son los siguientes:
Localizacin de la informacin sobre el proceso por parte del sistema operativo. Mantener registrados los datos del proceso en caso de tener que suspender temporalmente su ejecucin o reanudarla. La informacin contenida en el bloque de control es la siguiente:
Estado del proceso. Informacin relativa al contenido del controlador del programa (Program Counter, PC), estado de procesador en cuanto a prioridad del proceso, modo de ejecucin, etc., y por ultimo el estado de los registros internos de la computadora. Estadsticas de tiempo y ocupacin de recursos para la gestin de la planificacin del procesador. Ocupacin de memoria interna y externa para el intercambio (swapping). Recursos en uso (normalmente unidades de entrada/salida). Archivos en uso. Privilegios.
Estas informaciones se encuentran en memoria principal en disco y se accede a ellas en los momentos en que se hace necesaria su actualizacin o consulta. Los datos relativos al estado del proceso siempre se encuentran en memoria principal. El cambio de contexto se producir en caso de ejecucin de una instruccin privilegiada, una llamada al sistema operativo o una interrupcin, es decir, siempre que se requiera la atencin de algn servicio del sistema operativo.
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
22 Estado de los procesos
Los bloques de control de los procesos se almacenan en colas, cada una de las cuales representa un estado particular de los procesos, existiendo en cada bloque, entre otras informaciones. Los estados de los procesos son internos del sistema operativo y transparente al usuario.
Los estados de los procesos se pueden dividir en dos tipos: activos e inactivos.
1.- Estados activos: Son aquellos que compiten con el procesador o estn en condiciones de hacerlo. Se dividen en: Ejecucin. Estado en el que se encuentra un proceso cuando tiene el control del procesador. En un sistema monoprocesador este estado slo lo puede tener un proceso. Preparado. Aquellos procesos que estn dispuestos para ser ejecutados, pero no estn en ejecucin por alguna causa (Interrupcin, haber entrado en cola estando otro proceso en ejecucin, etc.). Bloqueado. Son los procesos que no pueden ejecutarse de momento por necesitar algn recurso no disponible (generalmente recursos de entrada/salida). 2.- Estados inactivos: Son aquellos que no pueden competir por el procesador, pero que pueden volver a hacerlo por medio de ciertas operaciones. En estos estados se mantiene el bloque de control de proceso aparcado hasta que vuelva a ser activado. Se trata de procesos que no han terminado su trabajo que lo han impedido y que pueden volver a activarse desde el punto en que se quedaron sin que tengan que volver a ejecutarse desde el principio. Son de dos tipos:
Suspendido bloqueado. Es el proceso que fue suspendido en espera de un evento, sin que hayan desaparecido las causas de su bloqueo. Suspendido programado. Es el proceso que han sido suspendido, pero no tiene causa parta estar bloqueado.
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
23 Transiciones de estado Todo proceso a lo largo de su existencia puede cambiar de estado varias veces. Cada uno de estos cambios se denomina transaccin de estado. Estas transacciones son las siguientes:
Comienzo de la ejecucin. Todo proceso comienza al ser dada la orden de ejecucin del programa insertndose en la cola de preparados. El encolamiento depender de la poltica de gestin de dicha cola. Paso de estado de ejecucin. Cuando el procesador se encuentra inactivo y en la cola de preparados exista algn proceso en espera de ser ejecutado, se pondr en ejecucin el primero de ellos. Paso a estado bloqueado. Un proceso que se encuentre en ejecucin y que solicite una operacin a un dispositivo externo, teniendo que esperar a que dicha operacin finalice, ser pasado de estado de ejecucin a estado bloqueado insertndose su PCB en la cola correspondientes de bloqueado. A partir de este momento el procesador pone en ejecucin el siguiente proceso, que ser el primero de la cola de preparados. Paso a estado preparado. Este paso puede ser producido por alguna de las siguientes causas. Orden de ejecucin de un programa, con la cual, ya se ha mencionado, el proceso pasa a la cola de preparados. Si un proceso est en estado bloqueado por causa de una operacin de entrada/salida y est finaliza, pasar de la cola de bloqueados a la de preparados. Si un proceso est en ejecucin y aparece una interrupcin que fuerza al sistema operativo a ejecutar otro proceso, el primero pasar al estado de preparado y su PCB a la cola de preparados. Activacin. Un proceso suspendido previamente sin estar bloqueado pasar al estado preparado al ser activado nuevamente. Paso a estado suspendido bloqueado. Si un proceso est bloqueado y el sistema operativo recibe la orden de suspenderlo, su PCB entrar en la cola de procesos suspendidos bloqueados. Paso a estado suspendido preparado. Este paso se puede producir bajo tres circunstancias: Suspensin de un proceso preparado pasando ste de la cola de procesos preparados a la de suspendidos preparados Suspensin de un proceso en ejecucin, con lo cual el proceso pasa a la cola de uspendidos preparados. Desbloqueo de un proceso suspendido bloqueado por desaparecer la causa que impeda el ser activado de nuevo.
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
24
Operaciones sobre procesos
Los sistemas operativos actuales poseen una serie de funciones cuyo objetivo es el de la manipulacin de los procesos. Las operaciones que se pueden hacer sobre un proceso son las siguientes:
Crear el proceso. Se produce con la orden de ejecucin del programa y suele necesitar varios argumentos, como el nombre y la prioridad del proceso. Aparece en este momento el PCB, que ser insertado en la cola de procesos preparados. La creacin de un proceso puede ser de dos tipos:
Jerrquica. En ella, cada proceso que se crea es hijo del proceso creador y hereda el entorno de ejecucin de su padre. El primer proceso que ejecuta un usuario ser hijo del intrprete de comandos con el que interacta. No jerrquica. Cada proceso creado por otro proceso se ejecuta independientemente de su creador con un entorno diferente. Es un tipo de creacin que no suele darse en los sistemas operativos actuales. Destruir un proceso. Se trata de la orden de eliminacin del proceso con la cual el sistema operativo destruye su PCB. Suspender un proceso. Es un proceso de alta prioridad que paraliza un proceso que puede ser reanudado posteriormente. Suele utilizarse en ocasiones de mal funcionamiento o sobrecarga del sistema. Reanudar un proceso. Trata de activar un proceso que a sido previamente suspendido. Cambiar la prioridad de un proceso. Temporizar la ejecucin de un proceso. Hace que un determinado proceso se ejecute cada cierto tiempo (segundos, minutos, horas...) por etapas de una sola vez, pero transcurrido un periodo de tiempo fijo. Despertar un proceso. Es una forma de desbloquear un proceso que habr sido bloqueado previamente por temporizacin o cualquier otra causa.
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
25 2.2 CONCURRENCIA Y SECUENCIABILIDAD Los procesos son concurrentes si existen simultneamente. Los procesos concurrentes pueden funcionar en forma totalmente independiente unos de otros, o pueden ser asncronos, lo cual significa que en ocasiones requieren cierta sincronizacin o cooperacin.
Cuando dos o ms procesos llegan al mismo tiempo a ejecutarse, se dice que se ha presentado una concurrencia de procesos. Es importante mencionar que para que dos o ms procesos sean concurrentes, es necesario que tengan alguna relacin entre ellos como puede ser la cooperacin para un determinado trabajo o el uso de informacin o recursos compartidos, por ejemplo: en un sistema de un procesador, la multiprogramacin es una condicin necesaria pero no suficiente para que exista concurrencia, ya que los procesos pueden ejecutarse de forma totalmente independiente. Por otro lado en un sistema de varios procesos se puede presentar la concurrencia siempre y cuando las actividades necesiten actuar entre s ya sea para utilizar informacin en comn o para cualquier otra cosa. 2.2.1.1 BENEFICIOS DE LA CONCURRENCIA Trata de evitar los tiempos muertos de la UCP Comparte y optimiza el uso de recursos Permite la modularidad en las diferentes etapas del proceso Acelera los clculos Da mayor comodidad 2.2.1.2 DESVENTAJAS DE LA CONCURRENCIA Inanicin Interrupcin de procesos Bloqueos Que dos o ms procesos requieran el mismo recurso. Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
26 2.2.2 LA SINCRONIZACION En muchos casos, los procesos se renen para realizar tareas en conjunto, a este tipo de relacin se le llama procesos cooperativos. Para lograr la comunicacin, los procesos deben sincronizarse, de no ser as pueden ocurrir problemas no deseados. La sincronizacin es la transmisin y recepcin de seales que tiene por objeto llevar a cabo el trabajo de un grupo de procesos cooperativos. Es la coordinacin y cooperacin de un conjunto de procesos para asegurar la comparacin de recursos de cmputo. La sincronizacin entre procesos es necesaria para prevenir y/o corregir errores de sincronizacin debidos al acceso concurrente a recursos compartidos, tales como estructuras de datos o dispositivos de E/S, de procesos contendientes. La sincronizacin entre procesos tambin permite intercambiar seales de tiempo (ARRANQUE/PARADA) entre procesos cooperantes para garantizar las relaciones especficas de precedencia impuestas por el problema que se resuelve. Sin una sincronizacin adecuada entre procesos, la actualizacin de variables compartidas puede inducir a errores de tiempo relacionados con la concurrencia que son con frecuencia difciles de depurar. Una de las causas principales de este problema es que procesos concurrentes puedan observar valores temporalmente inconsistentes de una variable compartida mientras se actualizan. una aproximacin para resolver este problema es realizar actualizaciones de variables compartidas de manera mutuamente exclusiva. Se pueden mejorar permitiendo que a lo ms un proceso entre a la vez en la seccin crtica de cdigo en la que se actualiza una variable compartida o estructura de datos en particular.
Sincronizacin de procesos
2.3 REGIONES CRTICAS.
Cmo evitar las condiciones de competencia? La clave para evitar los problemas en sta y otras situaciones relacionadas con la memoria compartida, archivos compartidos y cualquier otra cosa compartida, es determinar una forma de prohibir que ms de algn proceso lea o escriba en los datos compartidos a la vez. En otras palabras, lo que necesitamos es la exclusin mutua (una forma de garantizar Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
27 que si un proceso utiliza una variable o archivos compartidos, los dems procesos no puedan utilizarlos).
El problema de evitar las condiciones de competencia tambin se puede formular de manera abstracta. Durante cierta parte del tiempo, un proceso est ocupado realizando clculos internos y otras labores que no conducen a condiciones de competencia. Sin embargo, en algunas ocasiones un proceso puede tener acceso a la memoria compartida de archivos o realizando labores crticas que pueden llevar a conflictos. Esa parte del programa, en la cual se tiene acceso a la memoria compartida se llama la Seccin o Regin Crtica.
Aunque esta condicin evita los conflictos, no es suficiente para que los procesos paralelos cooperen en forma correcta y usen de modo eficaz los datos compartidos.
La exclusin mutua debe ponerse en prctica, slo cuando los procesos obtienen acceso a datos compartidos modificables; cuando los procesos realizan operaciones que no entran en conflictos con otras, deben permitirse que procedan concurrentemente.
Cuando un proceso obtiene acceso a datos compartidos modificables, se dice que se encuentra en una seccin crtica. Para evitar alguna clase de problemas se debe asegurar que cuando un proceso se encuentre en una seccin crtica, los dems procesos no pueden entrar a sus propias secciones crticas.
Si un proceso se encuentra en su seccin crtica, otros procesos pueden seguir ejecutndose fuera de sus secciones crticas. Cuando un proceso abandona su regin, otro proceso que esperaba entrar en su propia seccin podr hacerlo. El problema de la programacin concurrente est en que se cumpla la exclusin mutua.
Cuando se encuentra en una regin crtica se est hablando de un estado especial que se concede a un proceso. El proceso tiene acceso exclusivo a los datos compartidos y los dems procesos que requieren acceso a esos datos y en ese momento deben esperar; por esto las secciones crticas deben ejecutarse tan rpido como sea posible. Un proceso no se debe bloquear dentro de su propia seccin crtica y estas deben codificarse con mucho cuidado.
Si un proceso de una seccin crtica termina, el S.O. al realizar su mantenimiento de terminaciones, debe liberar la exclusin mutua para que otros procesos puedan entrar en sus regiones crticas.
Necesitamos 4 condiciones para poder obtener una buena solucin: 1. Dos procesos no deben encontrarse al mismo tiempo dentro de sus secciones crticas. 2. No se deben hacer hiptesis sobre la velocidad o el nmero de UCP. 3. Ninguno de los procesos que estn en ejecucin fuera de su seccin crtica puede bloquear a otros procesos. Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
28 4. Ningn proceso debe esperar eternamente para entrar a su seccin crtica.
2.4 EXCLUSIN MUTUA
Considrese un sistema con muchas terminales en tiempo compartido. Supngase que los usuarios terminan con un retorno del carro cada lnea que introducen en el sistema, que es necesario vigilar continuamente el nmero total de lneas introducidas por los usuarios desde que comenz el da y que cada terminal de usuario est vigilada por un proceso diferente. Cada vez que uno de estos procesos recibe una lnea desde una terminal de usuario, suma a una variable global compartida por todo el sistema, LNEAS_INTRO. Considrese que sucedera si dos procesos tratan de incrementar LNEAS_INTRO simultneamente. Supngase que cada proceso tiene su propia copia de cdigo
CARGAR LNEAS_INTRO SUMAR 1 ALMACENAR LNEAS_INTRO
Supngase que LNEAS_INTRO tiene en este momento el valor 21687. Ahora supngase que el primer proceso ejecuta las instrucciones CARGAR y SUMAR, dejando por tanto el valor 21688 en un acumulador. Despus el proceso pierde el procesador (por haber expirado un cuanto) y el segundo proceso se apropia de l. El segundo proceso ejecuta las tres instrucciones y deja el valor de 21688 en LNEAS_INTRO. Debido al acceso no controlado a la variable compartida LNEAS_INTRO, el sistema ha perdido de hecho el rastro de una de las lneas; el total correcto debera ser 21689. Cmo evitar las condiciones de competencia?
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
29
2.5 SINCRONIZACIN POR SEMFOROS
En 1965, E.W. Dijkstra sugiri el uso de una variable entera para contar el nmero de despertares almacenados para su uso posterior.
En su propuesta se present un nuevo tipo de variable, llamada Semforo. Un semforo puede tener el valor 0, lo que indica que no existen despertares almacenados; o bien algn valor positivo si estn pendientes uno o ms despertares.
Dijkstra, propuso dos operaciones, DOWN y UP (generalizaciones de SLEEP y WAKEUP, respectivamente). La operacin Down verifica si el valor de un semforo es mayor que 0. En este caso, decrementa el valor (es decir, utiliza un despertar almacenado) y contina. Si el valor es cero, el proceso se va a dormir. La verificacin y modificacin del valor, as como la posibilidad de irse a dormir se realiza en conjunto, como una sola e indivisible accin atmica. Se garantiza que al iniciar una operacin con un semforo, ningn otro proceso puede tener acceso a semforo hasta que la operacin termine o se bloquee. Esta atomicidad es absolutamente esencial para resolver los problemas de sincronizacin y evitar condiciones de competencia.
La operacin UP incrementa el valor del semforo correspondiente. Si uno o ms procesos dorman en ese semforo y no podan completar una operacin Down anterior, el sistema elige alguno de ellos (por ejemplo, en forma aleatoria) y se le permite terminar Down. As, despus de un UP en un semforo con procesos durmiendo, el semforo seguir con valor cero, pero habr un menor nmero de procesos durmiendo. La operacin de incremento del semforo y despertar de un proceso tambin es indivisible. Ningn proceso llega a bloquear mediante un UP.
Un semforo es una variable protegida, cuyo valor slo puede ser ledo y alterado mediante las operaciones P y V, y una operacin de asignacin de valores iniciales y (Inicia semforo).
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
30 TIPOS DE SEMFOROS
SEMFOROS BINARIOS (VALORES DE 1,0) SEMAFOROS CONTADORES (Valores enteros no negativos)
Operacin P (Sobre el semforo S) si S>0 entonces S:=S-1; sino (esperar S)
Operacin V (Sobre el semforo S) si (Uno o ms procesos esperan S) entonces (dejar que prosiga uno de esos procesos) sino S:=S+1
La exclusin mutua sobre el semforo S se implanta dentro de P(S) y V(S). Si varios procesos desean ejecutar una operacin P(S) de manera simultnea, slo se podr ejecutar uno de ellos, pero esto no quiere decir que se aplazarn en forma indefinida.
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
31 UNIDAD III ADMINISTRACION DE LA MEMORIA.
3. INTRODUCCIN. La parte del sistema operativo que administra la memoria se llama administrador de la memoria. Su labor consiste en llevar el registro de las partes de memoria que se estn utilizando y aquellas que no, con el fin de asignar espacio en memoria a los procesos; cuando estos la necesiten y liberarlo cuando terminen. As como administrar el intercambio entre la memoria principal y el disco, en los casos en que la memoria principal no pueda albergar a todos los procesos. 3.1 Almacenamiento Virtual La necesidad cada vez ms imperiosa de ejecutar programas grandes y el crecimiento en poder de las unidades centrales de procesamiento empujaron a los diseadores de los sistemas operativos a implantar un mecanismo para ejecutar automticamente programas ms grandes que la memoria real disponible, esto es, de ofrecer `memoria virtual'. La memoria virtual se llama as porque el programador ve una cantidad de memoria mucho mayor que la real, y en realidad se trata de la suma de la memoria de almacenamiento primario y una cantidad determinada de almacenamiento secundario. El sistema operativo, en su mdulo de manejo de memoria, se encarga de intercambiar programas enteros, segmentos o pginas entre la memoria real y el medio de almacenamiento secundario. Si lo que se intercambia son procesos enteros, se habla entonces de multiprogramacin en memoria real, pero si lo que se intercambian son segmentos o pginas, se puede hablar de multiprogramacin con memoria virtual. La memoria virtual se apoya en varias tcnicas interesantes para lograr su objetivo. Una de las teoras ms fuertes es la del `conjunto de trabajo', la cual se refiere a que un programa o proceso no est usando todo su espacio de direcciones en todo momento, sino que existen un conjunto de localidades activas que conforman el `conjunto de trabajo'. Si se logra que las pginas o segmentos que contienen al conjunto de trabajo estn siempre en RAM, entonces el programase desempear muy bien. Otro factor importante es si los programas exhiben un fenmeno llamado `localidad', lo cual quiere decir que algunos programas tienden a usar mucho las instrucciones que estn cercanas a la localidad de la instruccin que se est ejecutando actualmente La memoria es parte central de cualquier sistema de cmputo actual. Es un arreglo de palabras o bytes, cada uno con su propia direccin. La interaccin se logra por medio de una secuencia de lectura escritura a direcciones especficas de la memoria. La UCP busca informacin de la memoria o la almacena en ella. Por ejemplo, para la ejecucin de una instruccin primero buscar la instruccin de la memoria. Luego la instruccin se decodifica y esto puede provocar que se busquen operados de la memoria. Despus de aplicar la instruccin a los operndos, los resultados pueden guardarse en memoria. Obsrvese que la unidad de memoria slo ve el flujo de direcciones de memoria, no sabe como se generan o para que son las instrucciones. Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
32 El trmino almacenamiento virtual suele asociarse con la capacidad de tener acceso a direcciones en un espacio de almacenamiento mucho mayor que el disponible en el almacenamiento primario. Los dos mtodos ms comunes para poner en prctica el almacenamiento virtual son la paginacin y segmentacin, los cuales se vern ms adelante. Es por eso que la clave de este concepto es la asociacin de direcciones a las que hace referencia un proceso en ejecucin en el almacenamiento secundario. A estas direcciones se les conoce como direcciones virtuales. A las direcciones que estn disponibles en el almacenamiento primario se les conoce como direcciones reales. El intervalo entre cada una de las direcciones virtuales o reales se les conoce como espacio entre direcciones virtuales o reales segn sea el caso. Se han desarrollado varios mtodos para asociar las direcciones virtuales con las reales. Uno de ellos es el mecanismo de traduccin dinmica de direcciones, que convierte las direcciones virtuales en reales mientras se ejecuta un proceso. Todos estos sistemas tienen la propiedad de que las direcciones del almacenamiento virtual son contiguas, pero no necesariamente en el almacenamiento virtual. De esta forma se libera al usuario de la preocupacin de ejecutar uno o varios procesos sin ver la posicin de los procesos. 3.2 Mecanismos de Asignacin. Enlace de Direcciones. Para ejecutar un proceso este debe cargarse en memoria. Generalmente el proceso reside en disco como archivo binario o ejecutable. El conjunto de procesos en disco que esperan entrar en la memoria para ejecutarse forman la cola de entrada. El procedimiento normal consiste en seleccionar uno de los procesos de la cola de entrada y cargarlos en memoria. Esto ocasiona la relocalizacin de direccin o enlaces a referencias externas, segn sea el caso. Mientras se ejecuta un programa, se accede a las instrucciones o datos en la memoria. Finalmente, el programa termina de ejecutarse y su espacio en memoria se declara disponible. Un proceso de usuario puede residir en cualquier parte de la memoria fsica. Por esto, aunque el espacio de direcciones de la computadora comience con 00000, no necesariamente debe de ser ocupado por el proceso del usuario En la mayora de los casos, un programa de usuario pasar por varias etapas (algunas pueden ser optativas) antes de ejecutarse. En estas etapas las direcciones pueden representarse de maneras distintas. En un programa fuente las direcciones son generalmente simblicas. Un compilador enlazar estas direcciones simblicas con direcciones relocalizables. A su vez, el director de enlaces o cargador enlazar las direcciones relocalizables con direcciones absolutas. Cada enlace es una correspondencia entre un espacio de direcciones y otro (hueco de direcciones virtuales). El enlace de las instrucciones y datos con las direcciones de memoria casi siempre puede efectuarse en cualquier etapa del camino:
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
33 Compilacin. Si en la compilacin se sabe donde residir el programa en memoria, se puede generar cdigo absoluto. Es decir, si se sabe la posicin donde inicia el cdigo, entonces el compilador comenzara en esa posicin y se extendera a partir de ah. Si se cambia la posicin de inicio, ser necesario volver a compilar el cdigo. Los programas con formato. COM se enlazan de manera absoluta durante la compilacin. Carga. Si en la compilacin no se conoce donde residir el programa en memoria, entonces el compilador deber cargar el cdigo relocalizable. Ejecucin. Si durante la ejecucin el proceso puede moverse de un segmento de memoria a otro, entonces el enlace final se debe postergar hasta el momento de la ejecucin. Esto depende de hardware especial
3.3 Implementacin de los Mecanismos de Asignacin de Memoria Virtual. Existen tres estrategias de administracin de la memoria virtual: OBTENCIN Determina cuando es que se debe transferir una pgina o segmento del almacenamiento secundario al primario. Se espera a que un proceso en ejecucin haga referencia a una pgina o segmento antes de traer la pgina o segmento antes de traer la pgina o segmento al almacenamiento primario, y adems intenta determinar por anticipado a que lugar se har referencia. COLOCACIN Determina en que lugar del almacenamiento primario se debe colocar una pgina o segmento entrante. Esto hace que se vuelva una decisin trivial de colocacin, porque la pgina entrante se puede ubicar en cualquier marco de pgina disponible. REMPLAZO Sirve para decidir cual pgina o segmento se debe desplazar para dejar espacio a una pgina o segmento entrante cuando est ocupado el almacenamiento primario. En este caso, las rutinas de almacenamiento primario se van a desplazar para dejar espacio a una pgina entrante. Estrategia de colocacin del almacenamiento. Las estrategias de colocacin del almacenamiento sirven para determinar en que lugar del almacenamiento primario se deben colocar los programas y datos entrantes.
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
34 Las primeras estrategias ESTRATEGIA DE MEJOR AJUSTE Un trabajo que entre en le sistema se colocar en el hueco del almacenamiento primario principal en el que quepa mejor e que deje la menor cantidad de espacios posibles sin utilizar. Para muchos, el mejor ajuste parece ser intuitivamente la estrategia ms efectiva.
ESTRATEGIA DE PRIMER AJUSTE Un trabajo que entre en el sistema se colocar en el almacenamiento primario principal en el primer hueco disponible, lo suficientemente grande para contenerlo.
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
35 ESTRATEGIA DE PEOR AJUSTE consiste en colocar un programa en el almacenamiento primario en el hueco donde peor se ajusta, es decir, el hueco ms grande.
3.4. Fragmentacin La fragmentacin es la memoria que queda desperdiciada al usar los mtodos de gestin de memoria que se vieron en los mtodos anteriores. Tanto el primer ajuste, como el mejor y el peor producen fragmentacin externa. La fragmentacin es generada cuando durante el reemplazo de procesos quedan huecos entre dos o ms procesos de manera no contigua y cada hueco no es capaz de soportar ningn proceso de la lista de espera. La fragmentacin puede ser: Fragmentacin Externa: existe el espacio total de memoria para satisfacer un requerimiento, pero no es contigua. Fragmentacin Interna: la memoria asignada puede ser ligeramente mayor que la requerida; esta referencia es interna a la particin, pero no se utiliza.
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
36
Fragmentacin Interna y Externa
La fragmentacin externa se puede reducir mediante la compactacin para colocar toda la memoria libre en un solo gran bloque, pero esta solo es posible si la relocalizacin es dinmica y se hace en tiempo de ejecucin.
3.5 Paginacin.
La paginacin pura en el manejo de memoria consiste en que el sistema operativo divide dinmicamente los programas en unidades de tamao fijo ( generalmente mltiplos de 1 kilobyte) los cuales va a manipular de RAM a disco y viceversa. Al proceso de intercambiar pginas, segmentos o programas completos entre RAM y disco se le conoce como `intercambio' o `swapping'. En la paginacin, se debe cuidar el tamao de las pginas, ya que si stas son muy pequeas el control por parte del sistema operativo para saber cules estn en RAM y cuales en disco, sus direcciones reales, etc; crece y provoca mucha `sobrecarga' (overhead). Por otro lado, si las pginas son muy grandes, el overhead disminuye pero entonces puede ocurrir que se desperdicie memoria en procesos pequeos. Debe haber un equilibrio. Uno de los aspectos ms importantes de la paginacin, as como de cualquier esquema de memoria virtual, es la forma de traducir una direccin virtual a direccin real. Para explicarlo, obsrvese la figura siguiente Teor Prof. Germ
Como se observa, una direccin virtual `v'= ( b virtual `b' y un desplazamiento `d'. Por ejemplo, si el sistema ofrece un espacio de direcciones virtuales de 64 kilobytes, con pginas de 4 kilobytes y la RAM slo es de 32 kilobytes, entonces tenemos 16 pginas v virtuales contiene 16 entradas, una por cada pgina virtual. En cada entrada, o registro de la tabla de direcciones virtuales se almacenan varios datos: si la pgina est en disco o en memoria, quin es el dueo de la pgina, si la pgina ha sido modificada o es de lectura nada ms, etc. Pero el dato que nos interesa ahora es el nmero de pgina real que le corresponde a la pgina virtual. Obviamente, de las 16virtuales, slo ocho tendrn un valor de control que dice que la pgina est cargada en RAM, as como la direccin real de la pgina, denotada en la figura como b' virtual nmero 14 la tabla dice que, efectivamente est cargada y es la pgina real 2( direccin de memoria 8192 ).Una vez encontrada la pgina real, se le suma el desplazamiento, que es la direccin que deseamos dentro de la pgina buscada ( b' + d ). La tabla de direcciones virtuales a veces est ubicada en la misma memoria RAM, por lo cual se necesita saber en qu direccin comienza, en este caso, existe un registro con la direccin base denotada por la letra `a' en la figura anterior.
Cuando se est buscando una pgina cualquiera y sta no est cargada, surge lo que se llama un fallo de pgina (page fault ). Esto es caro para el manejador de memoria, ya que tiene que realizar una serie de pasos extra para poder resolverla direccin deseada y darle su contenido a quien lo pide. Primero, se detecta que la pgina no est presente y entonces se busca en la tabla la direccin de esta pgina en disco. Una vez localizada en disco se intenta cargar en alguna pgina libre de RAM. Si no hay pginas libres se tiene que escoger alguna para enviarla hacia el disco. Una vez escogida y enviada a disco, se marca su valor de control en la tabla de direcciones virtuales para indicar que ya no est en RAM, mientras que la pgina deseada se carga en RAM y se marca su valor para indicar que ahora ya est en RAM. Todo este procedimiento es caro, ya que se sabe que Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Guti El mecanismo de paginacin Como se observa, una direccin virtual `v'= ( b, d) est formada por un nmero de pgina virtual `b' y un desplazamiento `d'. Por ejemplo, si el sistema ofrece un espacio de direcciones virtuales de 64 kilobytes, con pginas de 4 kilobytes y la RAM slo es de 32 kilobytes, entonces tenemos 16 pginas virtuales y 8 reales. La tabla de direcciones virtuales contiene 16 entradas, una por cada pgina virtual. En cada entrada, o registro de la tabla de direcciones virtuales se almacenan varios datos: si la pgina est en disco o en de la pgina, si la pgina ha sido modificada o es de lectura nada ms, etc. Pero el dato que nos interesa ahora es el nmero de pgina real que le corresponde a la pgina virtual. Obviamente, de las 16virtuales, slo ocho tendrn un dice que la pgina est cargada en RAM, as como la direccin real de la pgina, denotada en la figura como b' Por ejemplo, supngase que para la pgina virtual nmero 14 la tabla dice que, efectivamente est cargada y es la pgina real 2( memoria 8192 ).Una vez encontrada la pgina real, se le suma el desplazamiento, que es la direccin que deseamos dentro de la pgina buscada ( b' + d ). La tabla de direcciones virtuales a veces est ubicada en la misma memoria RAM, por lo a saber en qu direccin comienza, en este caso, existe un registro con la direccin base denotada por la letra `a' en la figura anterior. Cuando se est buscando una pgina cualquiera y sta no est cargada, surge lo que se e fault ). Esto es caro para el manejador de memoria, ya que tiene que realizar una serie de pasos extra para poder resolverla direccin deseada y darle su contenido a quien lo pide. Primero, se detecta que la pgina no est presente y la tabla la direccin de esta pgina en disco. Una vez localizada en disco se intenta cargar en alguna pgina libre de RAM. Si no hay pginas libres se tiene que escoger alguna para enviarla hacia el disco. Una vez escogida y enviada a disco, se valor de control en la tabla de direcciones virtuales para indicar que ya no est en RAM, mientras que la pgina deseada se carga en RAM y se marca su valor para indicar que ahora ya est en RAM. Todo este procedimiento es caro, ya que se sabe que gico de Tuxtla Gutirrez) 37
, d) est formada por un nmero de pgina virtual `b' y un desplazamiento `d'. Por ejemplo, si el sistema ofrece un espacio de direcciones virtuales de 64 kilobytes, con pginas de 4 kilobytes y la RAM slo es de 32 irtuales y 8 reales. La tabla de direcciones virtuales contiene 16 entradas, una por cada pgina virtual. En cada entrada, o registro de la tabla de direcciones virtuales se almacenan varios datos: si la pgina est en disco o en de la pgina, si la pgina ha sido modificada o es de lectura nada ms, etc. Pero el dato que nos interesa ahora es el nmero de pgina real que le corresponde a la pgina virtual. Obviamente, de las 16virtuales, slo ocho tendrn un dice que la pgina est cargada en RAM, as como la direccin real Por ejemplo, supngase que para la pgina virtual nmero 14 la tabla dice que, efectivamente est cargada y es la pgina real 2( memoria 8192 ).Una vez encontrada la pgina real, se le suma el desplazamiento, que es la direccin que deseamos dentro de la pgina buscada ( b' + d ). La tabla de direcciones virtuales a veces est ubicada en la misma memoria RAM, por lo a saber en qu direccin comienza, en este caso, existe un registro con la Cuando se est buscando una pgina cualquiera y sta no est cargada, surge lo que se e fault ). Esto es caro para el manejador de memoria, ya que tiene que realizar una serie de pasos extra para poder resolverla direccin deseada y darle su contenido a quien lo pide. Primero, se detecta que la pgina no est presente y la tabla la direccin de esta pgina en disco. Una vez localizada en disco se intenta cargar en alguna pgina libre de RAM. Si no hay pginas libres se tiene que escoger alguna para enviarla hacia el disco. Una vez escogida y enviada a disco, se valor de control en la tabla de direcciones virtuales para indicar que ya no est en RAM, mientras que la pgina deseada se carga en RAM y se marca su valor para indicar que ahora ya est en RAM. Todo este procedimiento es caro, ya que se sabe que Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
38 los accesos a disco duro son del orden de decenas de veces ms lentos que en RAM. En el ejemplo anterior se mencion que cuando se necesita descargar una pgina de RAM hacia disco se debe de hacer una eleccin. Para realizar esta eleccin existen varios algoritmos, los cuales se describen enseguida.
La primera en entrar, primera en salir Se escoge la pgina que haya entrado primero y est cargada en RAM. Se necesita que en los valores de control se guarde un dato de tiempo. No es eficiente porque no aprovecha ninguna caracterstica de ningn sistema. Es justa e imparcial. La no usada recientemente Se escoge la pgina que no haya sido usada (referenciada) en el ciclo anterior. Pretende aprovechar el hecho de la localidad en el conjunto de trabajo. R La usada menos recientemente: Es parecida a la anterior, pero escoge la pgina que se us hace ms tiempo, pretendiendo que como ya tiene mucho sin usarse es muy probable que siga sin usarse en los prximos ciclos. Necesita de una bsqueda exhaustiva. La no usada frecuentemente Este algoritmo toma en cuenta no tanto el tiempo, sino el nmero de referencias. En este caso cualquier pgina que se use muy poco, menos veces que alguna otra. La menos frecuentemente usada Es parecida a la anterior, pero aqu se busca en forma exhaustiva aquella pgina que se ha usado menos que todas las dems. R En forma aleatoria: Elige cualquier pgina sin aprovechar nada. Es justa e imparcial, pero ineficiente.
Otro dato interesante de la paginacin es que ya no se requiere que los programas estn ubicados en zonas de memoria adyacente, ya que las pginas pueden estar ubicadas en cualquier lugar de la memoria RAM. Tomando en consideracin que la paginacin trabaja con memoria virtual, entonces recordaremos que en la memoria virtual se encuentran las direcciones virtuales, las cuales se generan por ndices, registros, palabras o bytes. Estas direcciones virtuales no pasan de forma directa al bus de memoria, sino que van a la unidad de administracin de memoria (MMU), y por medio de un chip se asocian las virtuales con las reales.
La paginacin surge de la necesidad de crear espacios de memoria contiguos, pues debido a que la fragmentacin genera espacios dispersos de almacenamiento, no se pueden ejecutar los procesos. Claro esta que esto se soluciona mediante la paginacin y la compactacin. La paginacin permite que la memoria de un proceso o sea contigua(almacenamiento secundario), pero al ser asignado al almacenamiento primario necesariamente seria contigua. El usuario ya no se preocupa al tener espacio disponible Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
39 en el almacenamiento secundario, pues as se lograran ejecutar los procesos. La paginacin es un mtodo comn en los sistemas operativos.
El reemplazo de pginas
La memoria fsica se divide en bloques de tamao fijo llamados MARCOS. La memoria lgica se divide en bloques del mismo tamao PGINAS. Cuando un proceso se va ha ejecutar, sus paginas se cargan desde el almacenamiento auxiliar (secundario) en cualquiera de los marcos disponibles. Por lo tanto al crear al crear la paginacin (pginas) se crean tambin los marcos de las pginas resultantes del nmero de pginas que ocurran. Viendo entonces que la paginacin se da en el almacenamiento secundario (disco, dispositivos), estamos haciendo uso del hardware por lo que el hardware representa el apoyo para la paginacin. 3.6 ALGORITMOS DE REEMPLAZO DE PGINAS Existen muchos y diferentes algoritmos para el reemplazo de pgina, pero en general se prefieren los que presenten el menor nmero de fallos de pgina, Evaluamos un algoritmo ejecutndolo para una serie determinada de referencias a memoria y calculando el nmero de fallos pgina. A la serie de referencia a memoria se le llama serie de referencias. Las series de referencias pueden obtener de un resto a un sistema anotando la direccin de cada referencia a memoria lo cual producira un gran numero de datos considerando dos aspectos. Para un tamao de pgina dado, el cual est determinado por el hardware o el sistema, necesitamos considerar slo el nmero de pginas, no toda la direccin. Si tenemos una referencia a una pgina p, entonces ninguna referencia a la pagina p que se represente inmediatamente despus provocar un fallo de pagina, ya que la pgina p se encuentra en memoria. Por lo anterior resumiendo los fallos de pgina, solo ocurren en dos ocasiones: Cundo la memoria est vaca y entran solo las pginas disponibles de acuerdo al tamao del marco de pginas. Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
40 Cuando entran las dems pginas en localidades diferentes a la pgina que entra en ese momento. Para realizar esta eleccin existen varios algoritmos, los cuales se describen enseguida:
o La primera en entrar, primera en salir: Se escoge la pgina que haya entrado primero y est cargada en RAM. Se necesita que en los valores de control segura de un dato de tiempo. No es eficiente porque no aprovecha ninguna caracterstica de ningn sistema. Es justa e imparcial. o La no usada recientemente: Se escoge la pgina que no haya sido usada (referenciada) en el ciclo anterior. Pretende aprovechar el hecho de la localidad en el conjunto de trabajo. o La usada menos recientemente: Es parecida a la anterior, pero escoge la pgina que se us hace ms tiempo, pretendiendo que como ya tiene mucho sin usarse es muy probable que siga sin usarse en los prximos ciclos. Necesita de una bsqueda exhaustiva. o La no usada frecuentemente: Este algoritmo toma en cuenta no tanto el tiempo, sino el nmero de referencias. En este caso cualquier pgina que se use muy poco, menos veces que alguna otra. o La menos frecuentemente usada: Es parecida a la anterior, pero aqu se busca en forma exhaustiva aquella pgina que se ha usado menos que todas las dems. o En forma aleatoria: Elige cualquier pgina sin aprovechar nada. Es justa e imparcial, pero ineficiente. Otro dato interesante de la paginacin es que ya no se requiere que los programas estn ubicados en zonas de memoria adyacente, ya que las pginas pueden estar ubicadas en cualquier lugar de la memoria RAM.
ALGORITMO FIFO
El algoritmo de remplazo de pginas ms sencillo es el primero en entrar, primero en salir (First Input, first output). Un algoritmo FIFO asocia a cada pgina el instante en el que se trajo a memoria. Cuando hay que reemplazar una pgina se elige la ms antigua.
Si construimos una cola FIFO que contenga las en memoria reemplazamos la pgina de inicio de la cola y cuando se introduce en memoria una pgina, la insertamos al final de la cola. Por ejemplo Teniendo la serie de referencias con un marco de pgina de tamao 3, observamos: 7 0 1 2 3 0 4 2 3 0 1 2 7 0 1 7 7 7 2 2 2 4 4 4 0 0 0 7 7 7 0 0 0 3 3 3 2 2 2 1 1 1 0 0 1 1 1 0 0 0 3 3 3 2 2 2 1
Nota: Los cuadros en color gris indican las pginas que entran.
Despus de descargar una pagina activa para incorporar una pgina nueva, se provocar casi de inmediato una falla por la pgina activa. Tendremos que reemplazar otra pgina para devolver memoria la pgina activa. De esta manera, una mala eleccin en el reemplazo aumenta la cantidad de fallos de pginas y frena la ejecucin de procesos, Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
41 pero no provoca ejecucin incorrecta. Al elegir una pgina equivocada el sistema operativo tiene varias opciones conocidas como
ANOMALIA DE BELADY.
1. Abortar el proceso del usuario lo cual no es la mejor opcin ya que el sistema operativo realiza la paginacin para mejorar la utilizacin y productividad el sistema de computadora. 2. Descargar un proceso de pginas por cualquier algoritmo de reemplazo. 3. Reemplazo de pginas por cualquier algoritmo de reemplazo.
Despus de descargar una pagina activa para incorporar una pgina nueva, se provocar casi de inmediato una falla por la pgina activa. Tendremos que reemplazar otra pgina para devolver memoria la pgina activa. De esta manera, una mala eleccin en el reemplazo aumenta la cantidad de fallos de pginas y frena la ejecucin de procesos, pero no provoca ejecucin incorrecta.En este ejemplo se muestra como se implementan los algoritmos de reemplazo de pginas. Tomamos como referencia la siguiente serie:
Una consecuencia del estudio de la anomala de Belady, fue la bsqueda de un algoritmo de reemplazo de pginas ptimo. Este algoritmo tiene la menor tasa de fallos de pgina de todos los algoritmos: un algoritmo ptimo nunca presentar la anomala de Belady. Consiste en reemplazar la pgina que no se usar durante el mayor periodo de tiempo. Por ejemplo considerando la siguiente serie de referencias, tendremos que: 7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1
7 7 7 2 2 2 2 2 7 0 0 0 0 4 0 0 0 1 1 3 3 3 1 1
Nota: Los cuadros en negrillas indican las pginas que entran.
Las primeras tres referencias causan fallas que llenan los tres marcos vacos. La referencia a la pgina 2 reemplaza a la pgina 7 hasta la referencia nmero 1 , la pgina 0 Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
42 se usar en la pgina 5 y la pgina 1 en la referencia No. 14. La referencia a la pgina 3 reemplaza a la pgina 1, ya que esta ser la ltima de las 3 pginas en memoria a la que se volver a hacer referencia. Con slo 9 fallos de pgina el reemplazo ptimo es mucho mejor que el FIFO que con la misma serie presenta 15 fallos de pgina. De hecho, ningn algoritmo de reemplazo puede procesar esta serie de referencias con menos de 9 fallos usando un marco de tamao 3. Por desgracia, es difcil de implantar el algoritmo de reemplazo de pginas ptimo, ya que se requiere el conocimiento a futuro de la serie de referencias.
ALGORITMO LRU
Si el algoritmo no es tan factible quiz sea posible una aproximacin. La principal diferencia entre el FIFO y el PTIMO, es que el FIFO utiliza el instante en que entr la pgina a memoria; el PTIMO utiliza el tiempo en que usar la pgina. Si Utilizamos el pasado reciente como aproximacin de que suceder en un futuro cercano, reemplazaremos la pgina que no se ha utilizado durante el mayor periodo de tiempo posible. Este es el algoritmo MENOS RECIENTE USADO (LRU, Least Recently Used). El reemplazo LRU asocia a cada pgina al instante en que se us por ltima vez. Cuando hay que reemplazar una pgina, LRU asocia la pgina que no ha sido utilizada durante el mayor perodo de tiempo posible, es decir, ve hacia atrs en el tiempo (su utilizacin en el pasado). Por ejemplo, si tenemos la misma serie de referencias que en el ptimo 7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1,2,0,1,7,0,1. 7 7 7 2 2 4 4 4 0 1 1 1 0 0 0 0 0 0 3 3 3 0 0 1 1 3 3 2 2 2 2 2 7
Nota: Los cuadros en negrillas indican las pginas que entran.
El algoritmo LRU produce 12 fallos. Las cinco primeras son las mismas que en el ptimo, sin embargo, cuando se presenta la referencia a la pgina 4, el reemplazo observa que de las 3 pginas en memoria, la 2 fue la menos reciente usada. La pagina que se us ms recientemente es la pgina 0 y justo antes se us la pgina 3. Por lo tanto, el LRU reemplaza a la pgina 2, sin saber que est a punto de usarse. Luego, cuando s de la falla por la pgina 2, el algoritmo LRU puede reemplazar la pgina 3. A pesar de estos problemas, el reemplazo por LRU con 12 fallos sigue siendo mejor que el FiFo con 15 fallos.
La poltica de implantar el algoritmo LRU es generalmente buena, sin embargo existe el problema de cmo implantar el reemplazo de pginas. El problema consiste en determinar un orden para los marcos definidos por el instante del ltimo uso. El algoritmo LRU se puede implementar de dos maneras:
Contadores. A cada entrada de la tabla de pginas asociamos un registros de instante de uso y aadimos al CPU un reloj lgico o contador. El reloj se Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
43 incremento con cada referencia a memoria. De esta manera siempre tendremos el tiempo de la ultima referencia a la pgina y reemplazaremos la pgina con menor valor. Pilas. Cuando se hace referencia a una pgina, se saca la pila y se coloca en la parte superior. De esta manera, en la parte superior de la pila siempre se encuentra la pila ms recientemente usada, y en la parte inferior de la pila la pgina menos reciente usada. Puesto que las entradas deben sacarse de la mitad de la pila, puede implantarse mejor con una lista doblemente ligada. La siguiente serie muestra el algoritmo : 9 0 1 8 3 1 0 4 6 3 8 7 0 8 2 5 1 3 4 5 0 7 1 2 8 4 6 7 1 2 0 9. 1 1 1 1 1 1 6 6 6 7 7 7 2 2 2 3 3 3 0 0 0 2 2 2 6 6 6 2 2 2 0 0 3 3 3 4 4 4 8 8 8 8 8 8 1 1 1 5 5 5 1 1 1 4 4 4 1 1 1 9 9 8 8 8 0 0 0 3 3 3 0 0 0 5 5 5 4 4 4 7 7 7 8 8 8 8 8 8 0 0 Total de fallos = 29
Nota: Los cuadros en color gris indican las pginas que entran.
ALGORITMOS APROXIMADOS (BIT DE REFERENCIA)
Pocos sistemas proporcionan suficiente ayuda del hardware para un verdadero reemplazo de pginas LRU. Algunos sistemas no ofrecen ningn apoyo del hardaware, por lo que hay que emplear otros algoritmos de reemplazo de pginas, sin embargo, muchos sistemas ofrecen cierta ayuda en la forma de un bit de referencia. El hardware coloca un 1 en el bit de referencia para una pgina cada vez que se hace referencia a ella. Los bits de referencia estn asociados a cada entrada de la tabla de pginas.
ALGORITMO DE BITS ADICIONALES DE REFERENCIA.
Podemos obtener informacin del uso de las pginas en un algoritmo de reemplazo. Esta informacin se puede implementar utilizando una tabla adicional de 8 bits para cada pgina. Estos registros contienen la historia de utilizacin de la pgina durante los 8 periodos. Si el registro del desplazamiento contiene 00000000, entonces la pgina no se ha utilizado por lo menos en 8 periodos. Una pgina que se utiliza cuando menos una vez cada periodo tendra un, valor de 1 1 1 1 1 1 1 en su registro adicional de referencia al desplazamiento de la pgina. Una pgina con valor de 1 1 0 0 0 1 0 0, si interpretamos esto en bytes de 8 bits como enteros sin signo, la pgina con el menor nmero de 1's a la izquierda es la pgina menos reciente usada y puede entonces reemplazarse. Por lo mismo, puede haber ms de una pgina que, casi no se est usando, entonces habra que aplicar una seleccin FIFO entre ellas. Por Ejemplo:
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
44 El proceso ms usado = 2 El proceso menos usado = 9 El proceso con mayor demanda = 2 El proceso con menor demanda = 8 El proceso nunca usado = 3, 5
El algoritmo bsico para el reemplazo de segunda oportunidad es el FIFO, sin embargo, cuando se selecciona una pgina examinamos su bit de referencia; si el bit de referencia es igual a 0, reemplazarnos la Sin embargo, si el bit de referencia es 1, damos a la pgina la segunda oportunidad y pasando s a seleccionar la siguiente pgina en el orden FIFO. Cuando a una pgina se le da segunda oportunidad, se borra su bit de referencia y se establece como llegada actual, de esa pgina. De esta manera, una de las pginas a las que se les brinde una segunda unidad no sern reemplazadas hasta que todas las dems pginas se reemplacen (o que se les otorgue una segunda oportunidad). Adems si una pgina se usa con frecuencia suficiente para mantener su bit de referencia en 1, nunca ser reemplazada.
Algoritmo de segunda oportunidad
Caractersticas de la paginacin: Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
45 El espacio de direcciones lgico de un proceso puede ser no contiguo. Se divide la memoria fsica en bloques de tamao fijo llamados marcos (frames). Se divide la memoria en bloques de tamao llamados paginas. Se mantiene informacin en los marcos libres. Para correr un programa de n paginas de tamao, se necesitan encontrara n marcos y cargar el programa. Se establece una tabla de paginas para trasladar las direcciones lgicas a fsicas. Se produce fragmentacin interna. Ventajas de la paginacin 1. Es posible comenzar a ejecutar un programa, cargando solo una parte del mismo en memoria, y el resto se cargara bajo la solicitud. 2. No es necesario que las paginas estn contiguas en memoria, por lo que no se necesitan procesos de compactacin cuando existen marcos de paginas libres dispersos en la memoria. 3. Es fcil controlar todas las pginas, ya que tienen el mismo tamao. 4. El mecanismo de traduccin de direcciones (DAT) permite separar los conceptos de espacio de direcciones y espacios de memoria. Todo el mecanismo es transparente al usuario. 5. Se libera al programador de la restriccin de programar para un tamao fsico de memoria, con lo que s e aumenta su productividad. Se puede programar en funcin de una memoria mucho ms grande a la existente. 6. Al no necesitarse cargar un programa completo en memoria para su ejecucin, se puede aumentar el numero de programas multiprogramndose. 7. Se elimina el problema de fragmentacin externa. Desventajas de la paginacin 1. El costo de hardware y software se incrementa, por la nueva informacin que debe manejarse y el mecanismo de traduccin de direcciones necesario. Se consume mucho mas recursos de memoria, tiempo en el CPU para su implantacin. 2. Se deben reservar reas de memoria para las PMT de los procesos. Al no ser fija el tamao de estas, se crea un problema semejante al de los programas (como asignar un tamao ptimo sin desperdicio de memoria, u "ovearhead" del procesador). 3. Aparece el problema de fragmentacin interna. As, si se requieren 5K para un programa, pero las paginas son de 4K, debern asignrseles 2 paginas (8k), con lo que quedan 3K sin utilizar. La suma de los espacios libres dejados de esta forma puede ser mayor que el de varias paginas, pero no podr ser utilizados. Debe asignarse un tamao promedio a las pginas, evitando que si son muy pequeas, se necesiten TABLAS BMT y PMT muy grandes, y si son muy grandes, se incremente el grado de fragmentacin interna.
3.7 Segmentacin. Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
46 Es un esquema de manejo de memoria mediante el cual la estructura del programa refleja su divisin lgica; llevndose a cabo una agrupacin lgica de la informacin en bloques de tamao variable denominados segmentos. Cada uno de ellos tienen informacin lgica del programa: subrutina, arreglo, etc. Luego, cada espacio de direcciones de programa consiste de una coleccin de segmentos, que generalmente reflejan la divisin lgica del programa.
La segmentacin permite alcanzar los siguientes objetivos: 1. Modularidad de programas: cada rutina del programa puede ser un bloque sujeto a cambios y recopilaciones, sin afectar por ello al resto del programa. 2. Estructuras de datos de largo variable: donde cada estructura tiene su propio tamao y este puede variar. 3. Proteccin: se puede proteger los mdulos del segmento contra accesos no autorizados. 4. Comparticin: dos o ms procesos pueden ser un mismo segmento, bajo reglas de proteccin; aunque no sean propietarios de los mismos. 5. Enlace dinmico entre segmentos: puede evitarse realizar todo el proceso de enlace antes de comenzar a ejecutar un programa. Los enlaces se establecern solo cuando sea necesario. La segmentacin se aprovecha del hecho de que los programas se dividen en partes lgicas, como son las partes de datos, de cdigo y de pila (stack). La segmentacin asigna particiones de memoria a cada segmento de un programa y busca como objetivos el hacer fcil el compartir segmentos ( por ejemplo libreras compartidas ) y el intercambio entre memoria y los medios de almacenamiento secundario. La segmentacin permite que un programa y sus datos puedan ocupar muchos bloques separados de almacenamiento real. Los bloques a diferencia de la paginacin no tienen que ser del mismo tamao pero si deben estar formados por localidades contiguas. Uno de los esquemas para lograr la proteccin del almacenamiento en los sistemas de segmentaciones el empleo de claves de proteccin en el almacenamiento. Estos sistemas de almacenamiento virtual son segmentacin se forman por un par ordenado V=(s,d), donde s es el nmero de segmento en el almacenamiento y d es el lugar de desplazamiento dentro del segmento. Un proceso slo se puede ejecutar si su segmento activo se encuentra en el almacenamiento primario, y sus localidades se colocan en localidades contiguas. La traduccin dinmica de la segmentacin se realiza de la siguiente forma: 1. Un proceso de ejecucin hace referencia a una direccin de almacenamiento virtual V=(s,d). 2. Un mecanismo de correspondencia de segmentos busca el segmento en la tabla de correspondencia de segmentos. 3. Se determinar el segmento se encuentra en el almacenamiento real. 4. Se ejecuta el proceso. Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
47
La Segmentacin Una de las cualidades de la segmentacin es el cuidadoso control de acceso que puede realizarse, se logra asignando a cada proceso ciertos derechos de acceso a cada segmento, y de hecho, denegando por completo el acceso a muchos segmentos no localizables. La siguiente tabla muestra los tipos de control de acceso ms comunes empleados por los sistemas actuales. Si un proceso tiene acceso para la lectura a un segmento, podr tener cualquier informacin contenida en el segmento. Si el proceso tiene acceso de escritura a un. segmento, entonces puede modificar cualquier parte del segmento y colocar informacin adicional. Un proceso con derecho de ejecucin, puede ejecutar ese segmento como programa. Tipo de acceso Abreviatura Aplicacin Lectura R Se puede leer un segmento Escritura W Puede modificar un segmento
Cada entrada en la tabla de segmentos tiene un formato similar al mostrado en la figura. Se tienen campos que indican la longitud, los permisos, la presencia o ausencia y direccin de inicio en memoria real del segmento Teor Prof. Germ
Segn amplios experimentos [Deitel93] sugieren que un tamao de pginas de 1024 bytes generalmente ofrece un tener pginas del mayor tamao posible hara que el desempeo fuera ptimo pero no es as, a menos que la pgina fuera del tamao del proceso total. No es as con tamaos grandes de pgina menores qu una pgina por motivo de un solo byte o palabra, se estn trayendo muchsimos ms bytes de los deseados. La dependencia entre el nmero de fallas respecto al tamao de las pginas se muestra en la fig Un hecho notable en los sistemas que manejan paginacin es que cuando el proceso comienza a ejecutarse ocurren un gran nmero de fallos de pgina, porque es cuando est referenciando muchas direcciones nuevas por vez primera, despus el sistema se estabiliza, conforme el nmero de marcos asignados se acerca al tamao del conjunto de trabajo. Ventajas de la segmentacin El esquema de segmentacin ofrece las siguientes ventajas: El programador puede conocer las unidades lgicas de su programa, dndol tratamiento particular. Es posible compilar mdulos separados como segmentos el enlace entre los segmentos puede suponer hasta tanto se haga una referencia entre segmentos. Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Guti
Segn amplios experimentos [Deitel93] sugieren que un tamao de pginas de 1024 bytes generalmente ofrece un desempeo muy aceptable. Intuitivamente parecera que el tener pginas del mayor tamao posible hara que el desempeo fuera ptimo pero no es as, a menos que la pgina fuera del tamao del proceso total. No es as con tamaos grandes de pgina menores que el proceso, ya que cuando se trae a memoria principal una pgina por motivo de un solo byte o palabra, se estn trayendo muchsimos ms de los deseados. La dependencia entre el nmero de fallas respecto al tamao de las pginas se muestra en la figura.
Un hecho notable en los sistemas que manejan paginacin es que cuando el proceso comienza a ejecutarse ocurren un gran nmero de fallos de pgina, porque es cuando est referenciando muchas direcciones nuevas por vez primera, despus el sistema se estabiliza, conforme el nmero de marcos asignados se acerca al tamao del conjunto de Ventajas de la segmentacin El esquema de segmentacin ofrece las siguientes ventajas: El programador puede conocer las unidades lgicas de su programa, dndol Es posible compilar mdulos separados como segmentos el enlace entre los segmentos puede suponer hasta tanto se haga una referencia entre segmentos. gico de Tuxtla Gutirrez) 48 Segn amplios experimentos [Deitel93] sugieren que un tamao de pginas de 1024 desempeo muy aceptable. Intuitivamente parecera que el tener pginas del mayor tamao posible hara que el desempeo fuera ptimo pero no es as, a menos que la pgina fuera del tamao del proceso total. No es as con tamaos e el proceso, ya que cuando se trae a memoria principal una pgina por motivo de un solo byte o palabra, se estn trayendo muchsimos ms de los deseados. La dependencia entre el nmero de fallas respecto al tamao de Un hecho notable en los sistemas que manejan paginacin es que cuando el proceso comienza a ejecutarse ocurren un gran nmero de fallos de pgina, porque es cuando est referenciando muchas direcciones nuevas por vez primera, despus el sistema se estabiliza, conforme el nmero de marcos asignados se acerca al tamao del conjunto de El programador puede conocer las unidades lgicas de su programa, dndoles un Es posible compilar mdulos separados como segmentos el enlace entre los segmentos puede suponer hasta tanto se haga una referencia entre segmentos. Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
49 Debido a que es posible separar los mdulos se hace ms fcil la modificacin de los mismos. Cambios dentro de un modulo no afecta al resto de los mdulos. Es fcil el compartir segmentos. Es posible que los segmentos crezcan dinmicamente segn las necesidades del programa en ejecucin. Existe la posibilidad de definir segmentos que aun no existan. As, no se asignara memoria, sino a partir del momento que sea necesario hacer usos del segmento. Un ejemplo de esto, serian los arreglos cuya dimensin no se conoce hasta tanto no se comienza a ejecutar el programa. En algunos casos, incluso podra retardar la asignacin de memoria hasta el momento en el cual se referencia el arreglo u otra estructura de dato por primera vez. Desventajas de la segmentacin Hay un incremento en los costos de hardware y de software para llevar a cabo la implantacin, as como un mayor consumo de recursos: memoria, tiempo de CPU, etc. Debido a que los segmentos tienen un tamao variable se pueden presentar problemas de fragmentacin externas, lo que puede ameritar un plan de reubicacin de segmentos en memoria principal. Se complica el manejo de memoria virtual, ya que los discos almacenan la informacin en bloques de tamaos fijos, mientras los segmentos son de tamao variable. Esto hace necesaria la existencia de mecanismos ms costosos que los existentes para paginacin. Al permitir que los segmentos varen de tamao, puede ser necesarios planes de reubicacin a nivel de los discos, si los segmentos son devueltos a dicho dispositivo; lo que conlleva a nuevos costos. No se puede garantizar, que al salir un segmento de la memoria, este pueda ser trado fcilmente de nuevo, ya que ser necesario encontrar nuevamente un rea de memoria libre ajustada a su tamao. La comparticion de segmentos permite ahorrar memoria, pero requiere de mecanismos adicionales da hardware y software. Estas desventajas tratan de ser minimizadas, bajo la tcnica conocida como Segmentacin paginada. 3.8 Segmentacin Paginada Paginacin y segmentacin son tcnicas diferentes, cada una de las cuales busca brindar las ventajas enunciadas anteriormente. Para la segmentacin se necesita que estn cargadas en memoria, reas de tamaos variables. Si se requiere cargar un segmento en memoria; que antes estuvo en ella y fue removido a memoria secundaria; se necesita encontrar una regin de la memoria lo suficientemente grande para contenerlo, lo cual no es siempre factible; en cambio "recargar" una pagina implica solo encontrar un merco de pagina disponible.
A nivel de paginacin, si quiere referenciar en forma cclicas n paginas, estas debern ser cargadas una a una generndose varias interrupciones por fallas de paginas; bajo segmentacin, esta pagina podra conformar un solo segmento, ocurriendo una sola interrupcin, por falla de segmento. No obstante, si bajo segmentacin, se desea acceder Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
50 un rea muy pequea dentro de un segmento muy grande, este deber cargarse completamente en memoria, desperdicindose memoria; bajo paginacin solo se cargara la pgina que contiene los tems referenciados.
Puede hacerse una combinacin de segmentacin y paginacin para obtener las ventajas de ambas. En lugar de tratar un segmento como una unidad contigua, este puede dividirse en pginas. Cada segmento puede ser descrito por su propia tabla de pginas. Los segmentos son usualmente mltiplos de pginas en tamao, y no es necesario que todas las pginas se encuentren en memoria principal a la vez; adems las pginas de un mismo segmento, aunque se encuentren contiguas en memoria virtual; no necesitan estarlo en memoria real.
Las direcciones tienen tres componentes: (s, p,d), donde la primera indica el numero del segmento, la segunda el numero de la pagina dentro del segmento y la tercera el desplazamiento dentro de la pagina. Se debern usar varias tablas: SMT (tabla de mapas de segmentos): una para cada proceso. En cada entrada de la SMT se almacena la informacin descrita bajo segmentacin pura, pero en el campo de direccin se indicara la direccin de la PMT (tabla de mapas de pginas) que describe a las diferentes pginas de cada segmento. PMT (tabla de mapas de pginas): una por segmento; cada entrada de la PMT describe una pgina de un segmento; en la forma que se presento la pagina pura. TBM (tabla de bloques de memoria): para controlar asignacin de pginas por parte del sistema operativo. JT (tabla de Jobs): que contiene las direcciones de comienzo de cada una de las SMT de los procesos que se ejecutan en memoria.
La Segmentacin Paginada Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
51
En el caso, de que un segmento sea de tamao inferior o igual al de una pagina, no se necesita tener la correspondiente PMT, actundose en igual forma que bajo segmentacin pura; puede arreglarse un bit adicional (S) a cada entrada de la SMT, que indicara si el segmento esta paginado o no. Ventajas de la segmentacin paginada El esquema de segmentacin paginada tiene todas las ventajas de la segmentacin y la paginacin: Debido a que los espacios de memorias son segmentados, se garantiza la facilidad de implantar la comparticion y enlace. Como los espacios de memoria son paginados, se simplifican las estrategias de almacenamiento. Se elimina el problema de la fragmentacin externa y la necesidad de compactacin. Desventajas de la segmentacin paginada
Las tres componentes de la direccin y el proceso de formacin de direcciones hace que se incremente el costo de su implantacin. El costo es mayor que en el caso de de segmentacin pura o paginacin pura. Se hace necesario mantener un nmero mayor de tablas en memoria, lo que implica un mayor costo de almacenamiento. Sigue existiendo el problema de fragmentacin interna de todas- o casi- todas las pginas finales de cada uno de los segmentos. Bajo paginacin pura se desperdician solo la ltima pgina asignada, mientras que bajo segmentacin paginada el desperdicio puede ocurrir en todos los segmentos asignados.
Conclusiones Para concluir se entiende que: En la memoria principal son ejecutados los programas y procesos de una computadora y es el espacio real que existe en memoria para que se ejecuten los procesos. La memoria virtual es aquella que le ofrece a las aplicaciones la ilusin de que estn solas en el sistema y que pueden usar el espacio de direcciones completo. Las direcciones de memoria son de tres tipo: fsicas, lgicas y lineales. El objetivo del intercambio es dar cabida a la ejecucin de mas aplicaciones de las que pueden residir simultneamente en la memoria del sistema. Las asignacin consiste en determinar cual espacio vaco en la memoria principal es el mas indicado para ser asignado a un proceso. Las estrategias mas comunes para asignar espacios vacos (huecos) son: primer ajuste, mejor ajuste, peor ajuste. Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
52 La fragmentacin es la memoria que queda desperdiciada al usar los mtodos de gestin de memoria tal como la asignacin. La fragmentacin puede ser interna o externa. La paginacin es una tcnica de gestin de memoria en la cual el espacio de memoria se divide en secciones fsicas de igual tamao llamadas marcos de pagina, las cuales sirven como unidad de almacenamiento de informacin. La segmentacin es un esquema de manejo de memoria mediante el cual la estructura del programa refleja su divisin lgica; llevndose a cabo una agrupacin lgica de la informacin en bloques de tamao variable denominados segmentos.
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
53 UNIDAD IV EL SISTEMA DE ARCHIVOS Un sistema de archivos (File System o FS ) es una estructura de directorios con algn tipo de organizacin el cual nos permite almacenar, crear y borrar archivos en diferentes formatos. En esta seccin se revisarn conceptos importantes relacionados a los sistemas de archivos.
Un Sistema de Archivos 4.1. Almacenamiento Fsico de Datos En un sistema de cmputo es evidente que existe la necesidad por parte de los usuarios y aplicaciones de almacenar datos en algn medio, a veces por periodos largos y a veces por instantes. Cada aplicacin y cada usuario debe tener ciertos derechos con sus datos, como son el poder crearlos y borrarlos, o cambiarlos de lugar; as como tener privacidad contra otros usuarios o aplicaciones. El subsistema de archivos del sistema operativo se debe encargar de estos detalles, adems de establecer el formato fsico en el cual almacenar los datos en discos duros, cintas o discos flexibles. Debe ser conocido por todos que tradicionalmente la informacin en los sistemas modernos se almacena en discos duros, flexibles y unidades de disco ptico, y en todos ellos se comparten algunos esquemas bsicos para darles formato fsico: las superficies de almacenamiento son divididas en crculos concntricos llamados "pistas" y cada pista se divide en "sectores". A la unin lgica de varias pistas a travs de varias superficies "paralelas" de almacenamiento se les llama "cilindros", los cuales son inspeccionados al momento de lectura o escritura de datos por las respectivas unidades fsicas llamadas "cabezas". Las superficies de almacenamiento reciben el nombre de "platos" y generalmente estn en movimiento rotatorio para que las cabezas accesen a las pistas Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
54 que los componen. Los datos se escriben a travs de los sectores en las pistas y cilindros modificando las superficies por medio de las cabezas. El tiempo que una cabeza se tarda en ir de una pista a otra se le llama "tiempo de bsqueda" y depender de la distancia entre la posicin actual y la distancia a la pista buscada. El tiempo que tarda una cabeza en ir del sector actual al sector deseado se le llama tiempo de latencia y depende de la distancia entre sectores y la velocidad de rotacin del disco. El impacto que tiene las lecturas y escrituras sobre el sistema est determinado por la tecnologa usada en los platos y cabezas y por la forma de resolver las peticiones de lectura y escritura, es decir, los algoritmos de planificacin.
El esquema de un disco
4.1.1. Algoritmos de planificacin de peticiones Los algoritmos de planificacin de peticiones de lectura y escritura a discos se encargan de registrar dichas peticiones y de responderlas en un tiempo razonable. Los algoritmos ms comunes para esta tarea son: Primero en llegar, primero en ser servido ( FIFO ): Las peticiones son encoladas de acuerdo al orden en que llegaron y de esa misma forma se van leyendo o escribiendo las mismas. La ventaja de este algoritmo es su simplicidad y no causa sobrecarga, su desventaja principal es que no aprovecha para nada ninguna caracterstica de las peticiones, de manera que es muy factible que el brazo del disco se mueva muy ineficientemente, ya que las peticiones pueden tener direcciones en el disco unas muy alejadas de otras. Por ejemplo, si se estn haciendo peticiones a los sectores 6, 10, 8, 21 y 4, las mismas sern resueltas en el mismo orden. _ Primero el ms cercano a la posicin actual: En este algoritmo las peticiones se ordenan de acuerdo a la posicin actual de la cabeza lectora, sirviendo primero a aquellas peticiones ms cercanas y reduciendo, as, el movimiento del brazo, lo cual constituye la ventaja principal de este algoritmo. Su desventaja consiste en que puede haber solicitudes que se queden esperando Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
55 para siempre, en el infortunado caso de que existan peticiones muy alejadas y en todo momento estn entrando peticiones que estn ms cercanas. Para las peticiones 6, 10, 8, 21 y 4, las mismas sern resueltas en el orden 4,6,8,10 y 21. Por exploracin (algoritmo del elevador): En este algoritmo el brazo se estar moviendo en todo momento desde el permetro del disco hacia su centro y viceversa, resolviendo las peticiones que existan en la direccin que tenga en turno. En este caso las peticiones 6,10,8,21 y 4 sern resueltas en el orden 6,10,21,8 y 4; es decir, la posicin actual es 6 y como va hacia los sectores de mayor numeracin (hacia el centro, por ejemplo), en el camino sigue el sector 10, luego el 21 y ese fue el ms central, as que ahora el brazo resolver las peticiones en su camino hacia afuera y la primera que se encuentra es la del sector 8 y luego la 4. La ventaja de este algoritmo es que el brazo se mover mucho menos que en FIFO y evita la espera indefinida; su desventaja es que no es justo, ya que no sirve las peticiones en el orden en que llegaron, adems de que las peticiones en los extremos interior y exterior tendrn un tiempo de respuesta un poco mayor. Por exploracin circular: Es una variacin del algoritmo anterior, con la nica diferencia que al llegar a la parte central, el brazo regresa al exterior sin resolver ninguna peticin, lo cual proveer un tiempo de respuesta ms cercana al promedio para todas las peticiones, sin importar si estn cercas del centro o del exterior.
4.1.2. Asignacin del espacio de almacenamiento Asignacin contigua. Cada directorio contiene la los nombres de archivos y la direccin del bloque inicial de cada archivo, as como el tamao total de los mismos. Por ejemplo, si un archivo comienza en el sector 17 y mide 10 bloques, cuando el archivo sea accesado, el brazo se mover inicialmente al bloque 17 y de ah hasta el 27. Si el archivo es borrado y luego creado otro ms pequeo, quedarn huecos intiles entre archivos tiles, lo cual se llama fragmentacin externa. El mtodo de asignacin contigua requiere que cada archivo ocupe un conjunto de bloques contiguos en el disco. Las direcciones de disco definen un ordenamiento lineal en l. Con este ordenamiento, suponiendo que slo un trabajo est accediendo al disco, el acceso al bloque b + 1 despus del bloque b normalmente no requiere movimiento de la cabeza. Si es preciso mover la cabeza (del ltimo sector de un cilindro al primero del siguiente), slo es una pista. As, el nmero de bsquedas de disco necesarias para acceder a archivos asignados contiguamente es mnimo, lo mismo que el tiempo de bsqueda cuando finalmente se necesita una bsqueda. El sistema operativo VM/CMS de IBM utiliza asignacin contigua por el buen desempeo que provee.
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
56
La Asignacin Contigua
La asignacin contigua de un archivo est definida por la direccin en disco y la longitud (en unidades de bloque) del primer bloque. Si el archivo tiene n bloques, y comienza en la posicin b, ocupar los bloques b, b + 1, b + 2, ... , b + n 1. La entrada de directorio para cada archivo indica la direccin del bloque inicial y la longitud del rea asignada a este archivo.
El acceso a un archivo que se asign de forma contigua es fcil. Si el acceso es secuencial, el sistema de archivos recuerda la direccin en disco del ltimo bloque al que se hizo referencia y, cuando llega el momento, lee el siguiente bloque. Si el acceso es directo al bloque i de un archivo que comienza en el bloque b, podemos acceder de inmediato al bloque b + i. As, la asignacin contigua permite manejar acceso tanto secuencial como directo.
Una dificultad de la asignacin contigua es encontrar espacio para un archivo nuevo. La implementacin del sistema de administracin de espacio libre, que veremos en la fig., determina la forma de efectuar esto. Se puede usar cualquier sistema de administracin, pero algunos son ms lentos que otros.
Es evidente que el problema de asignacin de espacio contiguo en disco es una aplicacin especfica del problema general de asignacin dinmica de almacenamiento, a saber, cmo satisfacer una solicitud de tamao n a partir de una lista de huecos libres. Las estrategias de primer ajuste y mejor ajuste son las que ms comnmente se usan para seleccionar un hueco libre del conjunto de huecos disponibles. Se ha demostrado mediante simulaciones que tanto el primer ajuste como el mejor ajuste son ms eficientes que el peor ajuste en trminos tanto de tiempo como de utilizacin de espacio. No se ha determinado claramente si el primer ajuste es mejor que el mejor ajuste en trminos de aprovechamiento del espacio, pero generalmente es ms rpido.
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
57 Estos algoritmos padecen el problema de fragmentacin externa. Conforme los archivos se asignan y borran, el espacio libre en disco se divide en trozos pequeos. Hay fragmentacin externa siempre que el espacio libre se divide en trozos, y se convierte en un problema cuando el trozo contiguo ms grande es insuficiente para una solicitud; el almacenamiento se fragmenta en varios huecos, ninguno de los cuales es lo bastante grande como para contener los datos. Dependiendo de la cantidad total de espacio en disco y del tamao promedio de los archivos, la fragmentacin externa podra ser un problema menor o mayor.
La asignacin contigua tiene otros problemas. Uno de los ms importantes es determinar cunto espacio se necesita para un archivo. Cuando se crea un archivo, es preciso encontrar la cantidad total de espacio que necesitar, y asignarla. Cmo sabe el creador (programa o persona) qu tamao tendr el archivo creado? En algunos casos tal determinacin podra ser sencilla (cuando se copia un archivo existente, por ejemplo), pero en general puede ser difcil estimar el tamao de un archivo de salida.
Si asignamos un espacio demasiado pequeo a un archivo, podramos encontrarnos con que ya no podemos extender ese archivo. Sobre todo si se usa una estrategia de mejor ajuste, el espacio a ambos lados del archivo podra estar ya en uso, y no podramos hacer crecer el archivo en su lugar. En tal caso hay dos posibilidades. Primera, podramos terminar el programa de usuario, con un mensaje de error apropiado. El usuario tendr entonces que asignar ms espacio y ejecutar de nuevo el programa. Tales ejecuciones repetidas podran ser costosas. Para evitarlas, el usuario normalmente sobreestimar la cantidad de espacio requerida, y el resultado ser un desperdicio considerable de espacio.
La otra posibilidad es encontrar un hueco ms grande, copiar el contenido del archivo en el nuevo espacio, y liberar el espacio anterior. Esta serie de acciones podra repetirse mientras haya espacio disponible, aunque tambin podra consumir mucho tiempo. La ventaja en este caso es que no es necesario informar al usuario explcitamente de lo que est sucediendo; el sistema contina a pesar del problema, aunque cada vez con mayor lentitud.
Incluso si se conoce con anticipacin la cantidad total del espacio requerido para un archivo, la preasignacin podra ser ineficiente. Un archivo que crece lentamente durante un periodo largo (meses o aos) tendra que recibir inicialmente suficiente espacio para su tamao final, aunque gran parte de ese espacio no se ocupe durante largo tiempo. En este caso el archivo tiene una gran cantidad de fragmentacin interna.
Para evitar varias de estas desventajas, algunos sistemas operativos utilizan un esquema de asignacin contigua modificado, en el que inicialmente se asigna un trozo contiguo de espacio y luego, cuando ese espacio deja de ser suficiente, se aade otro trozo de espacio contiguo, una extensin, a la asignacin inicial. La ubicacin de los bloques de un archivo se registra entonces como una posicin y una cuenta de bloques, ms un enlace al primer bloque de la siguiente extensin. En algunos sistemas, el propietario del archivo puede establecer el tamao de las extensiones, pero esto puede dar lugar a ineficiencias si el propietario no acta correctamente. La fragmentacin interna puede seguir siendo un problema si las extensiones son demasiado grandes, y la fragmentacin externa puede ser tambin problemtica cuando se asignan y liberan extensiones de diferentes tamaos. Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
58
Asignacin encadenada. Con este criterio los directorios contienen los nombres de archivos y por cada uno de ellos la direccin del bloque inicial que compone al archivo. Cuando un archivo es ledo, el brazo va a esa direccin inicial y encuentra los datos iniciales junto con la direccin del siguiente bloque y as sucesivamente. Con este criterio no es necesario que los bloques estn contiguos y no existe la fragmentacin externa, pero en cada "eslabn" de la cadena se desperdicia espacio con las direcciones mismas. En otras palabras, lo que se crea en el disco es una lista ligada. La asignacin enlazada resuelve todos los problemas de la asignacin contigua. Con este esquema, cada archivo es una lista enlazada de bloques de disco, los cuales pueden estar dispersos en cualquier parte del disco. El directorio contiene un puntero al primer y al ltimo bloques del archivo. Por ejemplo, un archivo de cinco bloques podra comenzar en el bloque 9, continuar en el bloque 16, luego el 1, el 10 y por ltimo el bloque 25 (Fig. ). Cada bloque contiene un puntero al siguiente bloque. Estos punteros no se proporcionan al usuario. As, si cada bloque tiene 512 bytes, y una direccin de disco (el puntero) requiere cuatro bytes, el usuario ver bloques de 508 bytes.
Para crear un archivo nuevo, simplemente creamos una nueva entrada en el directorio. Con la asignacin enlazada, cada entrada de directorio tiene un puntero al primer bloque de disco del archivo. Inicialmente el puntero recibe el valor nil (el valor del puntero de fin de lista) para indicar un archivo vaco, y tambin se asigna cero al campo de tamao. Una escritura en el archivo hace que se encuentre un bloque libre a travs del sistema de administracin del espacio libre, y luego se escribe en ese bloque, enlazndolo al final del archivo. Para leer un archivo, basta con leer los bloques siguiendo los punteros de un bloque al siguiente.
Cuando se usa asignacin enlazada no hay fragmentacin externa, pues cualquier bloque libre de la lista de espacio libre se puede usar para satisfacer una solicitud. Adems, no hay necesidad de declarar el tamao de un archivo en el momento de crearlo. Un archivo puede continuar creciendo en tanto haya bloques libres. Por ello, nunca es necesario compactar el disco.
La asignacin enlazada no carece de problemas. El principal de ellos es que slo puede usarse efectivamente para archivos de acceso secuencial. Para encontrar el i-simo bloque de un archivo, es necesario partir del principio del archivo y seguir los punteros hasta llegar al i-simo bloque. Cada acceso a un puntero requiere una lectura del disco/ y a veces una bsqueda de disco. Por consiguiente, no resulta eficiente proveer una capacidad de acceso directo para archivos de asignacin enlazada. Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
59
La Asignacin Encadenada
Otra desventaja de la asignacin enlazada es el espacio que ocupan los punteros. Si un puntero requiere cuatro bytes de un bloque de 512 bytes, el 0.78% del disco se usar para punteros, no para informacin. Cada archivo requiere un poco ms de espacio del que requerira en otro caso.
La solucin usual a este problema es juntar bloques en mltiplos, llamados cmulos (clusters), y asignar los cmulos en lugar de los bloques. Por ejemplo, el sistema de archivos podra definir un cmulo como cuatro bloques, y operar con el disco slo en unidades de cmulos. Entonces, los punteros ocuparn un porcentaje mucho ms pequeo del espacio en disco del archivo. Este mtodo permite que la correspondencia entre bloques lgicos y fsicos siga siendo sencilla, mejora el rendimiento del disco (menos bsquedas de disco) y reduce el espacio necesario para la asignacin de bloques y la administracin de la lista de espacio libre. El costo de la estrategia es un aumento en la fragmentacin interna, ya que se desperdicia ms espacio cuando un cmulo est parcialmente lleno que cuando un bloque est parcialmente lleno. Los cmulos pueden servir para mejorar el tiempo de acceso a disco con muchos otros algoritmos, y es por ello que se usan en casi todos los sistemas operativos.
Un problema adicional es la confiabilidad. Dado que los archivos se enlazan mediante punteros que estn dispersos por todo el disco, consideremos lo que sucedera si un puntero se perdiera o daara. Un error en el software del sistema operativo o un fallo en el hardware del disco podra hacer que se obtuviera un puntero equivocado.
Esto podra hacer que un archivo se enlazara con la lista de espacio libre o con i archivo. Dos soluciones parciales seran usar listas doblemente enlazadas o almacenar el nombre del archivo y el nmero de bloque relativo en cada bloque; sin embargo, tales esquemas requieren un gasto extra an mayor para cada archivo.
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
60 Una variacin importante del mtodo de asignacin enlazada es usar una tabla de asignacin de archivos (FAT, file-allocation table). Este sencillo pero eficiente mtodo asignacin de espacio en disco se emplea en los sistemas operativos MS-DOS y OS/2. Se aparta una seccin del disco al principio de cada particin para guardar en ella la tabla, la cual tiene una entrada para cada bloque del disco y est indizada por nmero de bloque. La FAT se usa de manera similar a una lista enlazada. La entrada de directorio contiene el nmero de bloque del primer bloque del archivo. entrada de la tabla indizada por ese nmero de bloque contiene el nmero del siguiente bloque del archivo. Esta cadena contina hasta el ltimo bloque, que tiene un valor especial de fn-de-archivo (end of file) como entrada de tabla. Los bloques desocupados se indican con un valor de cero en la tabla. Para asignar un bloc nuevo a un archivo, basta con encontrar la primera entrada de la tabla que valga cero y sustituir el valor de fin-de-archivo anterior por la direccin del nuevo bloque. A continuacin, el cero se sustituye por el valor de fin-de- archivo. Un ejemplo ilustrativo es la estructura de FAT de la figura para un archivo que consiste en bloques de disco 217, 618 y 339.
El Sistema de Archivos FAT
Cabe sealar que el esquema de asignacin por FAT puede dar pie a un nmero significativo de movimientos de la cabeza del disco, a menos que la FAT se mantenga cach. La cabeza del disco debe moverse al principio de la particin para leer la FA1 encontrar la ubicacin del bloque en cuestin, luego moverse a la posicin del bloque en s. En el peor caso, ocurrirn ambos movimientos para cada uno de los bloques. Un beneficio es que se mejora el tiempo de acceso aleatorio, porque la cabeza del disco puede encontrar la posicin de cualquier bloque leyendo la informacin en la FAT.
Asignacin con ndices ( indexada ). En este esquema se guarda en el directorio un bloque de ndices para cada archivo, con apuntadores hacia todos sus bloques constituyentes, de manera que el acceso directo se agiliza notablemente, a cambio de sacrificar varios bloques para almacenar dichos Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
61 apuntadores. Cuando se quiere leer un archivo o cualquiera de sus partes, se hacen dos accesos: uno al bloque de ndices y otro a la direccin deseada. Este es un esquema excelente para archivos grandes pero no para pequeos, porque la relacin entre bloques destinados para ndices respecto a los asignados para datos es incosteable. La asignacin enlazada resuelve los problemas de fragmentacin externa y declaracin de tamao de la asignacin contigua, pero, si no se usa una FAT, no puede apoyar un acceso directo eficiente, ya que los punteros a los bloques estn dispersos junto con los bloques mismos por todo el disco y necesitan recuperarse en orden. La asignacin indizada resuelve este problema al reunir todos los punteros en un mismo lugar: el bloque ndice.
Cada archivo tiene su propio bloque ndice, que es una matriz de direcciones de bloques de disco. La i-sima entrada del bloque ndice apunta al i-simo bloque del archivo. El directorio contiene la direccin del bloque ndice. Para leer el i-simo bloque, usamos el puntero de la i-sima entrada del bloque ndice para encontrar y leer el bloque deseado.
La Asignacin Indexada
Cuando se crea el archivo, se asigna nil a todos los apuntadores del bloque ndice. La primera vez que se escribe el -simo bloque, se obtiene un bloque del administrador de espacio libre y su direccin se coloca en la I-sima entrada del bloque ndice.
La asignacin indizada apoya el acceso directo sin sufrir fragmentacin externa, porque cualquier bloque libre del disco puede satisfacer una solicitud de espacio adicional. La asignacin indizada s desperdicia espacio. El gasto extra de los punteros del bloque ndice generalmente es mayor que el de los punteros de la asignacin enlazada. Consideremos un caso comn en el que tenemos un archivo que slo ocupa uno o dos bloques. Con la asignacin enlazada, slo perdemos el espacio de un puntero por bloque (uno o dos punteros). Con la asignacin indizada, es preciso asignar un bloque ndice entero, aun si slo uno o dos punteros son diferentes de nil. Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
62
Esto hace surgir la pregunta de qu tan grande debe ser el bloque ndice. Cada archivo debe tener un bloque ndice, as que nos conviene que el bloque sea lo ms pequeo posible. Sin embargo, si el bloque ndice es demasiado pequeo no podr contener suficientes punteros para un archivo grande, y se necesitar un mecanismo para resolver este problema:
Esquema enlazado. Un bloque ndice normalmente ocupa un bloque de disco; por tanto, se puede leer y escribir directamente por s solo. Para manejar archivos grandes, podramos enlazar varios bloques ndice. Por ejemplo, un bloque ndice podra contener una cabecera pequea con el nombre del archivo y las primeras 100 direcciones de bloques de disco. La siguiente direccin (la ltima palabra del bloque ndice) es nil (si el archivo es pequeo) o un puntero a otro bloque ndice (si el archivo es grande). ndice multinivel. Una variante de la representacin enlazada es usar un bloque ndice de primer nivel que apunte a un conjunto de bloques ndice de segundo nivel, que a su vez apuntan a los bloques de disco. Para acceder a un bloque, el sistema operativo usa el ndice de primer nivel para encontrar un bloque ndice de segundo nivel, y ese bloque para hallar el bloque de datos deseado. Este enfoque podra extenderse a un tercer o cuarto nivel, dependiendo del tamao mximo de archivo deseado. Con bloques de 4096 bytes, podramos guardar 1024 punteros de cuatro bytes en un bloque ndice. Dos niveles de ndices permitiran apuntar a 1,048/576 bloques de datos, con lo que un archivo podra tener hasta cuatro gigabytes. Esquema combinado. Otra alternativa, que se usa en el sistema BSD UNIX, es guardar los primeros, digamos, 15 punteros del bloque ndice en el bloque ndice (o i-nodo) del archivo. (La entrada de directorio apunta al i- nodo). Los primeros 12 de estos punteros apuntan a bloques directos; es decir, contienen direcciones de bloques que contienen datos del archivo. As, los datos de archivos pequeos (de no ms de 12 bloques) no necesitan un bloque ndice aparte. Si el tamao de bloque es de 4K, es posible acceder directamente a hasta 48K de datos. Los siguientes tres punteros apuntan a bloques indirectos. El primer puntero de bloque indirecto es la direccin de un bloque indirecto simple: un bloque ndice que no contiene datos, sino las direcciones de bloques que s contienen datos. Luego viene un puntero a un bloque indirecto doble, que contiene la direccin de un bloque que contiene las direcciones de bloques que contienen punteros a los bloques de datos reales. El ltimo puntero contendra la direccin de un bloque indirecto triple. Con este mtodo, el nmero de bloques que es posible asignar a un archivo excede la cantidad de espacio que puede direccionarse con los punteros de archivo de cuatro bytes que usan muchos sistemas operativos. Un puntero de archivo de 32 bits slo alcanza para 2 Exp.32 bytes, o 4 gigabytes. Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
63
La estructura i-nodo
Los esquemas de asignacin indizada exhiben algunos de los mismos problemas de desempeo que la asignacin enlazada. En trminos especficos, los bloques ndice se pueden colocar en un cach en la memoria, pero los bloques de datos podran estar dispersos por toda una particin. 3.1.3. Mtodos de acceso en los sistemas de archivos Los mtodos de acceso se refiere a las capacidades que el subsistema de archivos provee para accesar datos dentro de los directorios y medios de almacenamiento en general. Se ubican tres formas generales: acceso secuencial, acceso directo y acceso directo indexado. Acceso secuencial: Es el mtodo ms lento y consiste en recorrer los componentes de un archivo uno en uno hasta llegar al registro deseado. Se necesita que el orden lgico de los registros sea igual al orden fsico en el medio de almacenamiento. Este tipo de acceso se usa comunmente en cintas y cartuchos. Acceso directo: Permite accesar cualquier sector o registro inmediatamente, por medio de llamadas al sistema como la de seek. Este tipo de acceso es rpido y se usa comnmente en discos duros y discos o archivos manejados en memoria de acceso aleatorio. _ Acceso directo indexado: Este tipo de acceso es til para grandes volmenes de informacin o datos. Consiste en que cada arcivo tiene una Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
64 tabla de apuntadores, donde cada apuntador va a la direccin de un bloque de ndices, lo cual permite que el archivo se expanda a travs de un espacio enorme. Consume una cantidad importante de recursos en las tablas de ndices pero es muy rpido. 4.1.4. Operaciones soportadas por el subsistema de archivos Independientemente de los algoritmos de asignacin de espacio, de los mtodos de acceso y de la forma de resolver las peticiones de lectura y escritura, el subsistema de archivos debe proveer un conjunto de llamadas al sistema para operar con los datos y de proveer mecanismos de proteccin y seguridad. Las operaciones bsicas que la mayora de los sistemas de archivos soportan son: Crear ( create ) : Permite crear un archivo sin datos, con el propsito de indicar que ese nombre ya est usado y se deben crear las estructuras bsicas para soportarlo. Borrar ( delete ): Eliminar el archivo y liberar los bloques para su uso posterior. Abrir ( open ): Antes de usar un archivo se debe abrir para que el sistema conozca sus atributos, tales como el dueo, la fecha de modificacin, etc. _ Cerrar ( close ): Despus de realizar todas las operaciones deseadas, el archivo debe cerrarse para asegurar su integridad y para liberar recursos de su control en la memoria. Leer o Escribir ( read, write ): Aadir informacin al archivo o leer el caracter o una cadena de caracteres a partir de la posicin actual. _ Concatenar ( append ): Es una forma restringida de la llamada `write', en la cual slo se permite aadir informacin al final del archivo. _ Localizar ( seek ): Para los archivos de acceso directo se permite posicionar el apuntador de lectura o escritura en un registro aleatorio, a veces a partir del inicio o final del archivo. Leer atributos: Permite obtener una estructura con todos los atributos del archivo especificado, tales como permisos de escritura, de borrado, ejecucin, etc. Poner atributos: Permite cambiar los atributos de un archivo, por ejemplo en UNIX, donde todos los dispositivos se manejan como si fueran archivos, es posible cambiar el comportamiento de una terminal con una de estas llamadas. Renombrar ( rename ): Permite cambiarle el nombre e incluso a veces la posicin en la organizacin de directorios del archivo especificado. Los subsistemas de archivos tambin proveen un conjunto de llamadas para operar sobre directorios, las ms comunies son crear, borrar, abrir, cerrar, renombrar y leer. Sus funcionalidades son obvias, pero existen tambin otras dos operaciones no tan comunes que son la de `crear una liga' y la de `destruir la liga'. La operacin de crear una liga sirve para que desde diferentes puntos de la organizacin de directorios se pueda accesar un mismo directorio sin necesidad de copiarlo o duplicarlo. La llamada a `destruir nla liga' lo que hace es eliminar esas referencias, siendo su efecto la de eliminar las ligas y no el directorio real. El directorio real es eliminado hasta que la llamada a `destruir liga' se realiza sobre l. Tendencias actuales Con el gran auge de las redes de comunicaciones y su incremento en el ancho de banda, la proliferacin de paquetes que ofrecen la comparticin de archivos es comn. Los esquemas ms solicitados en la industria es el poder accesar los grandes volmenes de informacin que residen en grandes servidores desde las computadoras personales y Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
65 desde otros servidores tambin. A veces se requieren soluciones ms complejas con ambientes heterogneos: diferentes sistemas operativos y diferentes arquitecturas. ESTUDIO DEL SISTEMA DE ARCHIVOS NTFS Factores de rendimiento de NTFS Es posible definir muchos de los factores que afectan el rendimiento de los volmenes NTFS. Se puede escoger elementos tan importantes como el tipo de disco (por ejemplo, SCSI o IDE), su velocidad (por ejemplo, la velocidad en rpm de los discos), y el nmero de discos que formarn un volumen. Adems de estos componentes importantes, los factores siguientes tambin influyen de manera significativa en el rendimiento de volumen de un NTFS: El tamao de la unidad de cluster y de asignacin. La localizacin y el nivel de fragmentacin de los archivos accedidos ms frecuentemente, como la tabla MFT (Master File Table), los directorios, los archivos especiales que contienen informacin del propio NTFS, el archivo de paginacin y los archivos de datos de usuario que se utilizan habitualmente. Si se crea el volumen NTFS desde cero o si se convierte a partir de un volumen FAT existente. Si el volumen utiliza compresin NTFS Si se desactivan opciones de NTFS innecesarias.
Estructura General de FAT y NTFS
La utilizacin de discos ms rpidos y ms unidades en volmenes multidisco es una manera obvia de mejorar el rendimiento. Los otros mtodos de mejora de rendimiento son ms complejos y tienen que ver con detalles de la configuracin de volumen de un NTFS. Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
66 Tamao de cluster Todos los sistemas de archivos de disco NT, incluido NTFS, utilizan el cluster como unidad bsica de almacenamiento. Independientemente de lo pequeo que sea un archivo, debe ocupar como mnimo un cluster de espacio de disco. As, los archivos muy pequeos que son menores que un cluster desperdician espacio de disco. (Los archivos menores de 1 KB son una excepcin. El sistema almacena estos archivos en lo que se conoce como FRS (File Record Segment) de la MFT que hace referencia a estos, en lugar de almacenarlos externamente. Adems cuando un archivo ocupa un poco ms que un cluster, el excedente del archivo se reservar otro cluster entero, con el consiguiente desperdicio de espacio. Cuanto mayor sea el cluster sobre el que el archivo se desbord, mayor espacio se desperdicia. El tamao mnimo de cluster de NTFS desperdicia mucho menos espacio de disco que los volmenes FAT. El rango por defecto de los tamaos de cluster que los volmenes FAT utilizan va desde los 512 bytes hasta un enorme tamao de 256 KB. Los tamaos de cluster predeterminados de NTFS varan desde 512 bytes hasta 4 KB. La FAT soporta un mximo de 65.536 clusters por volumen, lo que obliga a utilizar tamaos de cluster mayores para direccionar volmenes de disco grandes. Sin embargo, NTFS no tiene esta limitacin de cluster por volumen; as, NTFS puede utilizar tamaos de cluster tan pequeos como 512 bytes o 1 KB y direccionar grandes volmenes de disco. Eleccin del tamao de un cluster. Deber elegir el tamao del cluster segn el tipo y tamao medio de archivo que almacenar en dicho volumen. Supuestamente, el tamao de cluster del volumen es divisible exactamente por el tamao medio del archivo (redondeado al kilobyte ms cercano). Este tamao de cluster ideal minimiza la sobrecarga de transacciones de entrada/salida del disco y el espacio de disco desperdiciado. Por ejemplo, supongamos que se crea un nuevo volumen NTFS que almacenar varios archivos de unos 6 KB de tamao. Se formatea el volumen con un tamao de cluster de 2 KB, porque el archivo medio encajar de manera exacta en tres clusters. Qu pasa si el tamao medio del archivo es de unos 16 KB? En ese caso, un tamao de cluster de 4 KB proporcionar el mejor rendimiento, porque dividir exactamente 16 KB y slo requerir la mitad de asignaciones de cluster que necesitara el mismo archivo si se utilizasen clusters de 2 KB. Por qu no llevar este proceso un poco ms all y utilizar un tamao de cluster de 8 KB o de 16 KB? Estos valores son alternativas vlidas y podran mejorar el rendimiento. Sin embargo, la utilizacin de tamaos de cluster mayores de 4 KB tiene varios efectos colaterales potencialmente negativos. Por ejemplo, cuando se utilizan tamaos de cluster mayores de 4 KB, las utilidades de defragmentacin de disco no pueden defragmentar el volumen, no se puede utilizar la compresin de archivos de NTFS en el volumen y la cantidad de espacio de disco desperdiciado crece porque los archivos de datos de usuario almacenados en el volumen no terminan justamente en los lmites del cluster. El espacio adicional de la MFT Como ncleo de NTFS, la MFT juega un papel importante en la composicin de un volumen NTFS y en su rendimiento. La MFT continuamente hace referencia a archivos mientras el sistema localiza informacin, lee de la informacin y escribe la informacin a disco. As, el rendimiento de la MFT es esencial para el rendimiento del volumen en general. Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
67 Los desarrolladores de NTFS entendieron la importancia del rendimiento de la MFT y tomaron cartas en el asunto para asegurar que la MFT mantenga un alto rendimiento durante todo el tiempo. Primero, NT coloca automticamente la MFT al principio del disco cuando se formatea por vez primera un volumen NTFS. Las pistas ms externas de un disco tienen los ratios ms altos de rotacin y de transferencia de datos, y la mayora de volmenes NTFS corresponden a un disco fsico entero; as, la colocacin de la MTF en el principio del disco minimiza el tiempo que requieren las operaciones de entrada/salida de disco relacionadas con la MFT. Segundo, los desarrolladores de NTFS evitaron la potencial fragmentacin de la MFT mediante la creacin de una zona de bfer especial alrededor de la MFT, que el volumen de NTFS reserva para ser utilizado por la MFT. Por defecto, esta zona de bfer utiliza aproximadamente el 12,5 por ciento del disco. Aunque esta asignacin normalmente minimiza la fragmentacin de la MFT, a veces la zona de bfer no es la adecuada. Fragmentacin de la MFT. Se dan diversas situaciones que pueden causar que se fragmente la MFT. Por ejemplo, cuando el espacio asignado para los datos se llena, el NT empieza a asignar el espacio de la zona MFT para proporcionar espacio de disco adicional para el almacenamiento de archivos de datos de usuario. Como resultado, la MFT puede fragmentarse porque el nico espacio en el que la MFT podr crecer son reas no contiguas de disco. Otra situacin en la que puede haber fragmentacin es cuando la MFT crece hasta un tamao mayor que la ocupacin predeterminada del 12,5 por ciento del disco. Aunque este crecimiento de la MFT es raro, varias circunstancias pueden contribuir a que esto suceda. Primero, la MFT no se reduce ni cuando se borran archivos y directorios del volumen. En vez de eso, la MFT marca los FRSs para reflejar el borrado. Segundo, NTFS almacena archivos muy pequeos con los FRSs de la MFT que se refieren a los archivos. Aunque esta configuracin proporciona un beneficio de rendimiento para estos archivos, puede causar que la MFT crezca excesivamente cuando el volumen contiene muchos de esos archivos. No hay que olvidar la fragmentacin
La MFT no es el nico componente de un volumen NTFS sujeto a fragmentacin. El sistema requiere movimientos de cabezales y discos adicionales para acceder a un archivo almacenado en lugares mltiples no contiguos de un disco. La fragmentacin puede resultar y afectar el rendimiento de forma adversa. Sin embargo, cuando un archivo es contiguo, el sistema puede leerlo secuencialmente sin ningn reposicionamiento de unidad adicional. Mantener de forma diligente un bajo nivel de fragmentacin de archivo en un volumen NTFS es la manera ms importante de mejorar el rendimiento de volumen. Se puede hacer este mantenimiento mediante la ejecucin regular de una utilidad de defragmentacin de disco, que hace que cada archivo del volumen sea contiguo. Adems, estas utilidades pueden defragmentar, el espacio de disco libre en un volumen, lo que tambin es beneficioso para el rendimiento del volumen.
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
68 Directorios y nombres de archivo
Crear rboles de directorio con docenas de niveles y utilizar nombres de archivos enormes disminuye el rendimiento global de los volmenes NTFS. Aunque el rendimiento de NTFS es ms tolerante con la longitud del directorio y con los excesos del nombre de archivo que otros sistemas de archivos, como por ejemplo FAT, recomendamos mantener los directorios con pocos niveles y los nombres de archivo cortos para mantener una mayor rapidez. El sistema puede navegar ms rpido y fcilmente por estructuras de directorio con pocos niveles, y los nombres de archivo largos requieren espacio de almacenamiento adicional y sobrecarga de proceso. Es recomendable mantener los rboles de directorios NTFS con menos de 10 niveles de profundidad, y los nombres de archivo y los nombres de directorio con menos de 30 caracteres. Estos lmites crean una estructura de directorio eficiente que permite al volumen mantener un mayor nivel de rendimiento. Compresin NTFS
La compresin NTFS, que Microsoft introdujo con NT 3.51, es la capacidad de comprimir selectivamente los contenidos de archivos de forma individual, directorios enteros, o rboles de directorio enteros en un volumen NTFS. Por mi experiencia, los volmenes que utilizan compresin NTFS consiguen mejores rendimientos de hasta un 50 por ciento sobre sus homlogos no comprimidos, dependiendo del tipo de informacin almacenada en dichos volmenes. Este rendimiento pareca demasiado bueno para ser cierto hasta lo comprob monitorizandola utilizacin de CPU durante una ejecucin de las mismas pruebas en un volumen NTFS comprimido. La utilizacin de la CPU en la prueba salt de una media del 10 al 18 por ciento en el volumen NTFS no comprimido hasta un increble 30 a 80 por ciento en el volumen NTFS comprimido. Adems, el rendimiento cay significativamente cuando utilic la compresin NTFS en tamaos de volumen mayores (4 GB o ms) y en volmenes basados en software con RAID tolerante a fallos. Se puede utilizar la compresin NTFS para incrementar significativamente el rendimiento de disco en volmenes menores con ficheros que contienen informacin altamente comprimible. Sin embargo, hacer eso causar un incremento significativo en la utilizacin de la CPU. Este efecto podra ser tolerable en sistemas con procesadores extremamente rpidos o con mltiples procesadores instalados. Se puede comprimir un volumen NTFS mediante la ventana de dilogo Propiedades en la ventana del Explorador sobre la unidad o mediante la utilizacin de la utilidad COMPACT en la lnea de comandos. Es recomendable probar esta caracterstica en una mquina que no sea de produccin antes de implementarla en sus equipos en el entorno.
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
69 Anlisis de sistemas de archivos: NTFS vs. FAT32
Sistemas de Archivos Sistema de archivos FAT32: El sistema de archivos FAT32 fue introducido por Microsoft en la versin OSR 2.0 de Windows 95 y fue desde ese momento el sucesor de FAT, que ahora sera el FAT16. FAT32 mejora en muchos aspectos a su antecesor. En cuanto al uso del espacio en el disco duro, FAT32 soporta tamaos de clster ms pequeos que los que soportaba la anterior versin. Hay dos detalles que limitaban a FAT16 en cuanto al desperdicio de espacio en disco. Estos son: - Los clsteres se determinan al formatear el disco. - Todos los archivos de un volumen, independientemente de su tamao real deben acabar cerrados por un clster par. Esto limitaba a FAT16 a que sus archivos aunque solo ocupasen 1Kb, ocupasen un clster entero como mnimo, lo que haca perder espacio en disco. Los clsteres del FAT32 son de mayor tamao por lo que pueden almacenar ms informacin y se pierde menos espacio en disco. Pero a ambos, los supera el NTFS. Pongo ahora unas tablas que representan con datos numricos lo que os acabo de decir:
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
70 Utilizacin de clusters en FAT16: Utilizacin de clusters en FAT16 Rango para el tamao del volumen Tamao del cluster (unidad de asignacin) por omisin De 0 a 15 MB* 4 KB De 16 MB a 31 MB 0,5 KB De 32 MB a 63 MB 1 KB De 64 MB a 127 MB 2 KB De 128 MB a 255 MB 4 KB De 256 MB a 511 MB 8 KB De 512 MB a 1.023 MB 16 KB De 1.024 MB a 2.047 MB 32 KB De 2.048 MB a 4.095 MB 64 KB De 4.096 MB a 8.191 MB 128 KB** 8.192 MB o mayors 256 KB** * Por debajo de los 16 MB, los volmenes FAT emplean un sistema de archivos FAT de 12 bits (FAT12). ** El soporte para particiones de 4 GB o particiones FAT an mayores que utilizan clusters de 128 KB o 256 KB precisa unidades cuyos sectores sean mayores de 512 bytes. Utilizacin de clusters FAT32: Utilizacin de clusters FAT32 Rango para el tamao del volumen Tamao del cluster (unidad de asignacin) por omisin De 512 MB a 8.191 MB* 4 KB De 8.192 MB a 16.383 MB 8 KB De 16.384 MB a 32.767 MB 16 KB 32.768 MB o mayors 32 KB * FAT32 no soporta tamaos de volumen inferiores a los 512 MB. Utilizacin de clusters NTFS: Utilizacin de clusters NTFS Rango para el tamao del volumen Tamao del cluster (unidad de asignacin) por omisin De 0 MB a 512 MB 0,5 KB De 513 MB a 1.024 MB 1 KB De 1.025 MB a 2.048 MB 2 KB 2.049 MB o mayores 4 KB Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
71 Otras ventajas de la nueva versin FAT32 son por ejemplo que puede reasignar el directorio raz a otra ubicacin de disco si la porcin del mismo donde estaba la raz original resulta daada. As mismo tambin puede utilizar una copia de seguridad previamente hecha de su segunda tabla de asignacin en el caso de que la primera copia estuviese tambin daada o que no se pudiese leer. Otro tema importante del FAT32, y ya para terminar, es que esta versin dispone de un registro de inicio que mantiene copias de seguridad de las estructuras de datos ms importantes del volumen. NTFS se instalar en los siguientes casos: - Cuando tengas pensado crear particiones mayores de 8 GB por que NTFS administrar mejor el espacio en disco. Por ejemplo, con Windows Xp con FAT32 podrs hacer particiones de hasta 32Gb mientras que con NTFS podrs llegar a los 16 Tb. o si ajustamos mucho el tamao de los clsteres, hasta los 256 Tb.
FAT32 se instalar en los siguientes casos: - Cuando se quiera que la velocidad de acceso al disco sea mayor. Se dice, comenta, segn tengo ledo que es hasta un 30% ms rpida que NTFS.
- Cuando se necesite un sistema seguro. Windows Xp proporciona ms seguridad en NTFS que en FAT32, por el cifrado de archivos que coment antes.
- Cuando queramos evitar que el sistema trabaje sobre clsteres errneos, marcndolos para su no-utilizacin. Adems NTFS garantiza una mejor recuperacin de errores que en FAT32.
Moraleja: NTFS es mejor en cuanto a calidad de servicios y seguridad, pero FAT32 es ms rpido
ESTUDIO DEL SISTEMA DE ARCHIVOS EXT3 Principales caractersticas del sistema de ficheros ext3.
El sistema de ficheros ext3 es una extensin con journaling del sistema de ficheros ext2. Como ya hemos visto con el journaling se obtiene una enorme reduccin en el tiempo necesario para recuperar un sistema de ficheros despus de una cada, y es por tanto muy recomendable en entornos donde la alta disponibilidad es muy importante, no slo para reducir el tiempo de recuperacin de mquinas independientes sino tambin para permitir que un sistema de ficheros deuna mquina cada sea recuperado en otra Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
72 mquina cuando tenemos un cluster con algn discocompartido. Adems se posibilita que el sistema de ficheros cado de una mquina (por ejemplo unservidor) est disponible cuanto antes para el resto de mquinas a travs de la red (nfs, samba, ftp, http, etc.).
Estructura del Sistema de Archivos EXT
El principal objetivo del ext3 es por tanto la disponibilidad, es decir, cuando se apague incorrectamente la mquina tener el sistema totalmente disponible al momento despus de volver a arrancar sin necesidad de que se tenga que esperar a pasar un "fsck", el cual tarda mucho tiempo. Adems con ext3 se ha aadido el journaling de manera que sea totalmente compatible con los sistemas de ficheros ext2 (es posible migrar sistemas de ficheros ext2 existentes a ext3 y viceversa muy fcilmente). La distribucin Red Hat Linux 7.2 ya incluye ext3 como opcin, y es actualmente el sistema de ficheros oficialmente soportado por dicha empresa (en las nuevas distribuciones es opcional formatear las particiones del disco con el antiguo ext2). El resto de distribuciones tambin lo estn incluyendo (incluso se puede usar ext3 en Debian GNU/Linux 3.0 Woody), por lo que en pocotiempo se espera que el ext3 sustituya al ext2 como sistema de ficheros estndar en Linux. Ext3 en realidad es ext2 con un fichero adicional de registro, es decir, es una capa adicional sobre ext2 que mantiene un fichero de registro log de transacciones. Debido a que est integrado enel ext2 puede que no explote todas las posibilidades de los sistemas de journaling puros, pero se est trabajando es este rea para mejorarlo.
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
73 Ventajas de utilizar ext3. Podemos decir que hay cuatro razones principales para migrar de un sistema de ficheros ext2 a ext3: disponibilidad, integridad de los datos, velocidad y fcil migracin.
Disponibilidad: Despus de un apagado incorrecto de la mquina los sistemas de ficheros ext2 no pueden ser montados de nuevo hasta que su consistencia haya sido chequeada por el programa "fsck". El tiempo que tarda el programa "fsck" est determinado por el tamao del sistema de ficheros, hoy en da muy grandes (decenas de gigabytes), por lo que se tarda mucho tiempo en recuperar el sistema de ficheros. Adems cuantos ms ficheros tengamos en el sistema de ficheros ms se tardar en chequear su consistencia. Chequear sistemas de ficheros de decenas de gigabytes puede llevar varios minutos, esto limita seriamente la disponibilidad.
En contraste el ext3 no requiere un chequeo del disco, incluso despus de un apagado incorrecto del sistema. Esto es debido a que los datos son escritos al disco de tal manera que el sistema de ficheros siempre esta consistente. Slo se realizar un "fsck" en el caso de fallos hardware raramente dados (por ejemplo fallos fsicos del disco duro), y en el caso de que el sistema de ficheros est configurado para que se chequee completamente de forma automtica cada cierto periodo de tiempo o cada cierto nmero de montajes para prevenir posibles fallos. Adems con ext3 se utiliza (si fuese necesario) exactamente el mismo "fsck" que se utiliza con ext2.
El tiempo necesario para recuperar un sistema de ficheros ext3 despus de un apagado incorrecto no depende del tamao del sistema de ficheros ni del nmero de archivos que tenga, slo depende del tamao del "journal" (espacio usado para almacenar la informacin transaccional)utilizado para mantener la consistencia. Con el tamao que se utiliza por defecto para el "journal" (tamao fijado automticamente por la utilizad de creacin del sistema de ficheros "mkfs") se tarda alrededor de un segundo en restaurar un sistema de ficheros inconsistente (dependiendo de la velocidad del hardware).
Integridad de los datos: Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
74
Usando ext3 el sistema de ficheros puede proporcionar garantas ms fuertes respecto a laintegridad de los datos en el caso de un apagado incorrecto del sistema. Pudiendo escoger el tipo ynivel de proteccin que se le da a los datos. Se puede escoger mantener la consistencia de los datospero permitir daos en los datos dentro del sistema de ficheros en el caso de un apagado incorrecto, esto puede dar un pequeo aumento de la velocidad bajo algunas pero no todas las circunstancias. Alternativamente, se puede escoger asegurar que los datos son consistentes con el estado del sistema de ficheros, esto significa que nunca habr "datos basura" de un fichero recientemente escrito despus de una cada del sistema. Esta ultima opcin es la utilizada por defecto.
Velocidad:
A pesar de escribir a veces algn dato ms de una vez, ext3 es en algunos casos incluso ms rpido que el ext2 por que el journaling del ext3 optimiza el movimiento de cabeza del disco duro. Con ext3 se puede escoger entre tres modos de journaling diferentes para optimizar la velocidad, equilibrando esta con una mayor o menor integridad de los datos dependiendo de las necesidades.
Los diferentes modos son: _ data=writeback: limita la garanta de integridad de los datos, permitiendo a los antiguos datos aparecer en ficheros despus de una cada, para un posible pequeo incremento de la velocidad en algunas circunstancias. Este es el modo jouraling por defecto en muchos otros sistemas de ficheros journaling, esencialmente proporciona las garantas ms limitadas de integridad en los datos y simplemente evita el chequeo en el reinicio del sistema. _ data=ordered (modo por defecto): garantiza que los datos son consistentes con el sistema de ficheros. Los ficheros escritos recientemente nunca aparecern con contenidos basura despus de una cada. _ data=journal: requiere un "journal" grande para una velocidad razonable en la mayora de los casos y por lo tanto tarda ms tiempo recuperar el sistema en el caso de un apagado incorrecto, pero es algunas veces es ms rpido para algunas operaciones ya que funciona muy bien si se escriben muchos datos al mismo tiempo (por ejemplo en los spools de correo o servidores NFS sincronizados). No obstante, utilizar el modo "journal" para un uso normal resulta con frecuencia un poco ms lento. Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
75 El modo por defecto (ordered) es el recomendable, pudiendo cambiar el modo en el montaje del sistema de ficheros. Fcil migracin: Las particiones ext3 no tienen una estructura de ficheros diferentes a los de ext2, por lo queno slo se puede pasar de ext2 a ext3, sino que lo opuesto tambin funciona, esto es til sobre todo si en algn caso el registro se corrompe accidentalmente, por ejemplo debido a sectores malos del disco. Es decir, existe total compatibilidad entre ext2 y ext3, se puede convertir un sistema de ficheros ext2 a ext3 y viceversa fcilmente, adems de poder montar un sistema de ficheros ext3 como ext25 (ya que la estructura de formateo del disco es la misma). Es posible por tanto cambiar fcilmente de ext2 a ext3 y beneficiarse de las ventajas de un sistema de ficheros journaling robusto sin necesidad de reformatear el disco. Podemos pasar de un sistema a otro sin necesidad de tener que realizar un tedioso proceso de backup, formateo y restauracin de los datos, con la posibilidad de que se produzca algn error (con los otros sistemas de ficheros con journaling es necesario formatear la particin con su propia utilidad de formateo). El programa "tune2fs" puede aadir el journal a un sistema de ficheros ext2 ya existente. Si el sistema de ficheros estaba ya montado cuando se migraba, el journal ser visible como un fichero "journal" en el directorio raz del sistema de ficheros. Si no estaba montado el journal estar oculto y no aparecer en el sistema de ficheros (as ocurre si se crea durante la instalacin del sistema). El sistema de ficheros ext3 se ha beneficiado de la prolongada historia de mejoras y correccin de errores que tiene el ext2 (del cual a parte su cdigo fuente) y continuar siendo as. Esto significa que ext3 comparte la robustez del ext2, pero tambin las nuevas caractersticas que se han aadido al ext2. Resumiendo, ext3 es totalmente compatible en ambos sentidos con ext2. Se puede migrar un sistema ex2 a ext3 muy fcilmente, se puede montar un sistema ext3 como ext2 sin modificar nada del sistema de ficheros journal y tambin eliminar el journal para volver al sistema ext2 anterior. Otras ventajas importantes de utilizar ext3 son:
1. El ext3 como el ext2 tiene mltiples desarrolladores y organizaciones involucradas en su desarrollo, por lo que su evolucin no depende de una sola persona o empresa. 2. Ext3 proporciona y hace uso de una capa genrica de journaling (Journaling Block Device, JBD) la cual puede ser usada en otros contextos. El ext3 no slo puede hacer "journal" un sistema de ficheros estndar, tambin otros dispositivos soportados por Linux (NVRAM, disk-on-chip, USB flash memory drives, etc.) pueden ser utilizados con ext3. 3. Ext3 tiene una amplia compatibilidad con todas las plataformas, trabaja tanto en arquitecturas de 32 como de 64 bits, y tanto en sistemas little-endian como big- endian. Algunos sistemas operativos (por ejemplo algunos clones y variantes de Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
76 UNIX y BeOS) pueden acceder a ficheros en un sistema de ficheros ext2, estos sistemas tambin lo pueden hacer en un sistema de ficheros ext3. 4. Ext3 no requiere profundos cambios en el corazn del ncleo y no requiere tampoco nuevas llamadas al sistema. Ext3 est integrado actualmente en los kernels Linux Mobile System (LMS) - http://linuxmobile.sf.net responsabilidad de Alan Cox y Linus Torvalds lo incluir muy pronto en su kernel oficial. Seguramente el ext3 ser el sistema de ficheros estndar de Linux en un futuro prximo. 5. Ext3 reserva uno de los i-nodos especiales de ext2 para el registro de journal, pero los datos del mismo pueden estar en cualquier conjunto de bloques, y en cualquier sistema de ficheros. Inclusive se puede compartir el registro de journal entre sistemas distintos.
Conclusiones.
Por todas las razones que hemos visto no slo se puede confiar en el sistema de ficheros ext3, sino que adems es recomendable utilizarlo ya que Red Hat lo ha incluido como sistema de ficheros estndar de su distribucin habiendo realizado todas las pruebas necesarias en mltiples configuraciones diferentes para ver su robustez, con un resultado positivo en todas ellas. Incluso desde hace ms de dos aos el ext3 esta funcionando en grandes servidores (por ejemplo los servidores de rpmfind.net). Actualmente Linux es conocido como un sistema operativo muy estable, la problemtica se genera cuando el hardware no es tan fiables como se deseara o la persona que lo utiliza no lo hace correctamente, ya que en la mayora de los casos, cuando un sistema falla normalmente es debido a un fallo hardware o a un fallo humano. A veces se producen apagados incorrectos de las mquinas, y por tanto es necesario esperar a que se realice un chequeo y recuperacin del disco durante varios (a veces muchos) minutos para poder volver a utilizarla, y adems se corre el peligro de una prdida importante de informacin. Ya se han realizado las primeras pruebas de una instalacin de Linux Mobile System en un USB Flash Memory Drive con sistema de ficheros ext3 con un resultado totalmente satisfactorio
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
77 Unidad IV Mecanismos de Proteccin
4.1 Introduccin 4.2 Dominio de Proteccin 4.3 Matriz de Acceso 4.4 Tabla Global 4.5 Lista de Acceso 4.6 Listas de Capacidades 4.7 Estructuras de Proteccin Dinmica 4.8 Mecanismos de Llave y Cerradura 4.9 Comparacin 4.10 Estrategia Total de Seguridad 4.11 Proteccin por Contrasea
4.1 Introduccin. Conforme los sistemas de computacin se han vuelto ms complejos y sus aplicaciones se han difundido ms, tambin ha crecido la necesidad de proteger su integridad. En un principio, la proteccin se concibi como una aadidura a los sistemas operativos de multiprogramacin para que varios usuarios, en los que no se poda confiar, pudieran compartir con seguridad un mismo espacio lgico, como un directorio de archivos o un mismo espacio fsico, como la memoria. La proteccin se refiere a un mecanismo para controlar el acceso de programas, procesos o usuarios a los recursos definidos por un sistema de computacin. Hay varias razones para proporcionar la proteccin, la ms obvia es la necesidad de evitar una violacin mal intencionada de una restriccin de acceso. La proteccin puede mejorar la seguridad detectando errores latentes en las interfaces entre los subsistemas componentes. Un recurso desprotegido no puede defenderse del uso no autorizado o de un usuario incompetente. Un sistema orientado a la proteccin ofrece un medio para distinguir entre el uso autorizado y el no autorizado. En algunos sistemas, la proteccin se impone mediante un programa llamado monitor de referencias. Cada vez que se intenta un acceso a un recurso que pudiera estar protegido, el sistema pide primero al monitor de referencias que verifique que tal acceso est permitido. El monitor examina entonces sus tablas de poltica y toma una decisin. A continuacin describiremos el entorno en el que opera el monitor de referencias. 4.2 Dominios de proteccin. Un sistema de computadora contiene muchos objetos que deben protegerse. Estos objetos pueden ser hardware (por ejemplo, CPU, segmentos de memoria, unidades de disco o impresoras) o software (por ejemplo, procesos, archivos o bases de datos). Cada objeto tiene un nombre nico con el cual se hace referencia a l, y un conjunto finito de operaciones que los procesos pueden efectuar con l. READ y WRITE son operaciones apropiadas para un archivo. Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
78 Es evidente que se requiere un mecanismo para prohibir a los procesos que accedan a objetos que no estn autorizados para usar. Adems, este mecanismo debe permitir restringir los procesos a un subconjunto de las operaciones permitidas cuando sea necesario. Por ejemplo, el proceso A podra tener derecho a leer, pero no escribir, el archivo F. A fin de analizar los diferentes mecanismos de proteccin, resulta til introducir el concepto de dominio. Un dominio es un conjunto de pares (objeto, derecho). Cada par especifica un objeto y algn subconjunto de las operaciones que se pueden efectuar con l. Un derecho en este contexto se refiere al permiso para efectuar una de las operaciones. En cada instante, cada proceso se ejecuta en algn dominio de proteccin. En otras palabras, existe una coleccin de objetos a los que puede acceder, y para cada objeto tiene ciertos derechos. Los procesos pueden cambiar de un dominio a otro durante su ejecucin. Las reglas para la conmutacin de dominio dependen mucho del sistema del que se trate. Considrese el modelo normal de modo dual (modos usuario y monitor) para la ejecucin de un sistema operativo. Cuando un proceso funcione en modo monitor puede ejecutar instrucciones privilegiadas y as obtener un control total del sistema de computacin. Por otra parte, si se ejecuta en modo usuario, slo puede invocar instrucciones no privilegiadas y, por consiguiente, nicamente puede ejecutarse dentro de su espacio de memoria preestablecido. Estos dos modos protegen al sistema operativo (que se ejecuta en el dominio monitor) de los procesos de usuario (que se ejecutan en el dominio de usuario). En un sistema operativo multiprogramado no bastan dos dominios de proteccin, ya que los usuarios tambin quieren protegerse de los dems; por tanto, se requiere un esquema ms elaborado.
Dominios de Proteccin
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
79 4.3 Matriz de acceso. Una pregunta importante es, cmo hace el sistema para saber cul objeto pertenece a cul dominio? Nuestro modelo de proteccin puede contemplarse abstractamente como una matriz, llamada matriz de acceso.
Conceptualmente, al menos, podemos imaginar una matriz grande cuyas filas son los dominios y cuyas columnas son los objetos. Cada cuadro indica los derechos, en su caso, que el dominio contiene para el objeto. En la siguiente figura se muestra la matriz de la figura anterior. Dada esta matriz y el nmero de dominio actual, el sistema puede saber si se permite cierto tipo de acceso a un objeto dado desde el dominio especificado.
Matriz de Acceso Cuando un proceso se ejecuta en el dominio 1 puede leer el archivo 1 y leer y escribir el archivo 2. Un proceso que se ejecuta en el dominio 2 puede leer los archivos 3, 4 y 5 , escribir en los archivos 4 y 5, puede ejecutar el archivo 4 y por ltimo puede imprimir en la impresora. El proceso que se ejecuta en el dominio 3 puede leer, escribir y ejecutar el archivo 6, adems puede imprimir en las dos impresoras.
4.4 Tabla Global La forma ms sencilla de implantar la Matriz de Acceso es una Tabla Global que consiste en un conjunto de tripletas <dominio, objeto, conjunto-derechos>. Cuando se ejecuta una operacin M para un objeto o dentro del dominio D, se busca en la tabla global la tripleta, si se encuentra, se permite que contine la operacin, de lo contrario se presenta una condicin de excepcin (error). Esta implantacin presenta varias desventajas. Habitualmente la tabla es grande y, por lo tanto, no puede conservarse en memoria principal, por lo que se requiere E/S adicional; con frecuencia se emplean tcnicas de memoria virtual para manipular esta tabla. Adems, es difcil aprovechar ciertas Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
80 agrupaciones de objetos o dominios; por ejemplo, si todos los usuarios pueden leer un objeto, debe contar con una entrada en cada dominio. TABLA GLOBAL
DOMINIOS OBJETOS DERECHOS D1 A1, A3 R D2 A1,A3 r,w,x D3 A2,A3 r,w 4.5 Lista de Acceso En la prctica, el almacenamiento real de la matriz de Acceso rara vez se hace porque es grande y dispersa. La mayora de los dominios no tiene acceso en absoluto a la mayora de los objetos, de manera que el almacenamiento de una Matriz grande vaca se traduce en una prdida de espacio en disco. Sin embargo, dos mtodos que son prcticos sin el almacenamiento de la matriz por renglones o por columnas y despus el almacenamiento slo de los elementos no vacios. Los mtodos son sorprendentemente distintos. La primera tcnica consiste en asociar con cada objeto una lista (ordenada) que contenga todos los dominios que pueden accesar el objeto y que indique cmo hacerlo. A sta lista se le llama lista de acceso. Si sta se implementara en UNIX, la manera ms sencilla de hacerlo seria la de colocar la LA de cada archivo en bloque aparte del disco e incluir el nmero del bloque en el nodo i del archivo. Como solamente se almacenan las entradas no vacas de la matriz, el almacenamiento total que se requiere para todas las LA combinadas es mucho menor de lo que se necesitara para toda la matriz. Para poner un ejemplo de la forma en que funcionan las LA, imaginemos ahora que se utilizaran en UNIX, donde un dominio est especificado por una pareja (uid,gid). En realidad, las LA se utilizaban en el antecesor de UNIX, MULTICS, ms o menos en la misma forma que se describir, de manera que el ejemplo no es hipottico. Ahora supongamos que se tienen cuatro usuarios (o sea, uids) Jan, Els, Jelle y Maaike, quienes pertenecen a los grupos sistema, personal, estudiante y estudiante, respectivamente. Supngase que algunos archivos tienen las siguientes listas de acceso: ArchivoO: (Jan, *, RWX) Archivo 1: (Jan, sistema, RWX) Archivo2: (Jan, *, RW-), (Els, personal, R-), (Maaike, *, R--) Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
81 Archivo3: (*, estudiante, R--) Archivo4: (Jelle, *, ---), (*, estudiante, R--) Cada entrada de LA, entre parntesis, especifica un uid, un gid y los accesos permitidos (Read, Write, eXecute). Un asterisco significa todos los uid o gid. El Archivo 0 puede ser ledo, escrito o ejecutado por cualquier proceso con uid = Jan y cualquier gid. E! Archivo 1 puede ser accesado slo por procesos con uid = Jan y gid = sistema. Un proceso con uid = Jan y gid = personal puede accesar el Archivo 0 pero no el Archivo 1. El Archivo2 puede ser ledo o escrito por procesos con uid = Jan y cualquier gid, por procesos con uid = Els y gid = personal o bien por procesos con uid = Maaike y cualquier gid. El Archivo3 puede ser ledo por cualquier estudiante. El Archivo4 es de especial inters. Este indica que nadie con uid = Jelle de cualquier grupo tiene acceso en absoluto, pero todos los otros estudiantes lo pueden leer. Mediante las LA es posible prohibir el acceso de uid o gid especficos a un objeto, mientras que alguien ms de la misma clase puede tener el acceso permitido. Eso en cuanto a lo que UNIX no hace. Ahora analicemos qu es lo que s hace. Proporciona tres bits, rwx, por archivo para el propietario, el grupo del propietario y Otros. Este esquema vuelve a ser simplemente la LA, pero comprimida a 9 bits. Es una lista asociada con el objeto que indica quin lo puede accesar y cmo. A pesar de que el esquema de UNIX de 9 bits es con claridad menos general que un sistema LA completo, en la prctica es adecuado y su implementacin es mucho ms simple y barata.
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
82 Cada columna de la matriz de acceso se puede implantar como una lista de acceso para un objeto. Evidentemente pueden descartarse las entradas vacas. La lista para cada objeto consiste en pares ordenados <dominio, conjunto de derechos> que define todos los dominios con un conjunto no vaco de derechos de acceso para ese objeto. Esta lista puede extenderse fcilmente para definir una lista, ms un conjunto por omisin de derechos de acceso. Cuando se intenta una operacin de M sobre un objeto Oj en el dominio Di, consultamos el conjunto por omisin. Si se localiza la entrada, permitimos la operacin, si no est, consultamos la lista de acceso del objeto Oj, en busca de una entrada <Dj,Ck> donde M pertenece a Ck.
4.6 Lista de Capacidades En vez de asociar las columnas de la matriz de acceso a los objetos mediante lista de acceso, podemos relacionar cada fila con su dominio. Una lista de capacidades para un dominio es una lista de objetos y las operaciones que se permiten para ellos. Un objeto muchas veces est representado por su direccin o nombre fsico, denominado capacidad. Para ejecutar la operacin M en el objeto O, el proceso ejecuta la operacin M, especificando como parmetro la capacidad (apuntador para el objeto O). Basta la posesin de la capacidad para que se permita el acceso. La lista de capacidades est asociada a un dominio, pero un proceso que se ejecuta que se ejecuta en ese dominio no puede acceder a ella directamente. En cambio, la lista de capacidades es un objeto protegido, mantenido por el sistema operativo y al cual el usuario solo puede tener acceso indirecto. La proteccin basada en capacidades se apoya en que nunca se permite que las capacidades se muevan a un espacio de direcciones accesible directamente por un proceso de usuario (donde podran modificarse). Si todas las capacidades estn seguras, el objeto que protegen est tambin seguro frente al acceso no autorizado. LISTA DE CAPACIDADES
83 Originalmente las capacidades se propusieron como un tipo de apuntador seguro para satisfacer la necesidad de la proteccin de recursos que se previ al madurar los sistemas de computacin multiprogramados. La idea de un apuntador inherentemente protegido (desde el punto de vista del usuario de un sistema) proporciona una base para la proteccin que puede ampliarse hasta el nivel de las aplicaciones. Para ofrecer esa proteccin inherente debemos diferenciar las capacidades de otros tipos de objetos e interpretarlas en una mquina abstracta donde se ejecutan los programas de mayor nivel. Generalmente las capacidades se distinguen de otros datos de una de estas dos maneras: Cada objeto tiene una etiqueta que especifica su tipo como capacidad o dato accesible. Los programas de aplicacin no deben tener acceso directo a las etiquetas; debe usarse Hardware o Firmware para aplicar esta restriccin. Aunque solo se requiere un bit para distinguir entre las capacidades y otros objetos, con frecuencia se emplean ms bits. Esta extensin permite que el hardware etiquete todos los objetos con su tipo. Otra manera consiste en dividir en dos partes el espacio de direcciones asociado a un programa. Una parte es accesible al programa y contiene sus datos e instrucciones normales; la otra parte, que contiene la lista de capacidades, solo es accesible por el Sitema Operativo. Para apoyar esta estrategia es til un espacio segmentado de memoria. 4.8 Mecanismo de Llave y cerradura El esquema de llave cerradura es un punto medio entre listas de acceso y las capacidades. Cada objeto tiene la lista de patrones nicos de bits, llamados cerraduras; as mismo, cada dominio tiene una lista de patrones nicos de bits, llamados llaves. Un proceso que se ejecuta en un dominio solo puede acceder a un objeto si el dominio tiene una llave que entra en una de las cerraduras del objeto. Al igual que las listas de capacidades, la lista de llaves para un dominio debe ser administrada por el sistema Operativo. No se permite que los usuarios examinen o modifiquen directamente la lista de llaves o cerraduras. A1 A2 A4 Imp1 Imp2 Plotter Cinta Lectora D1 R Imp r D2 R r,w,x R D3 R r-w Grafic
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
84 4.9 Comparacin Las lista de acceso corresponden directamente con las necesidades de los usuarios. Cuando el usuario crea un objeto, especifica los dominios que pueden acceder al objeto as como las operaciones permitidas. Sin embargo, como la informacin para un dominio no est localizada, es difcil determinar el conjunto de derechos de acceso para cada uno. Adems, hay que comprobar cada acceso al objeto, lo que requiere una bsqueda en la lista de acceso y puede consumir mucho tiempo en un sistema de gran envergadura con largas listas de acceso. Las listas de capacidades no corresponden directamente con las necesidades de los usuarios: no obstante, son tiles para localizar informacin sobre un proceso en particular. El proceso que intenta el acceso debe presentar una capacidad para ese acceso; luego, el sistema de proteccin slo necesita verificar que la capacidad sea vlida. Sin embargo, la cancelacin de capacidades quiz no sea eficiente. El mecanismo de llaves y cerradura es un punto intermedio entre estos dos esquemas. El mecanismo puede ser efectivo y flexible dependiendo de la longitud de las llaves. Las llaves pueden pasarse libremente de un dominio a otro, y adems, es posible cancelar eficazmente los privilegios de acceso con slo cambiar alguna de las llaves asociadas al objeto. La mayora de los sistemas utilizan una combinacin de listas de acceso y capacidades. Cuando un proceso trata por primera vez de accesar a un objeto, se consulta la lista de acceso. Si se niega el acceso, se produce una condicin de excepcin; de lo contrario, se crea una capacidad y se une al proceso. Las referencias posteriores utilizan la capadidad para demostrar rpidamente que est permitido el acceso; despus del ltimo acceso, se destruye la capacidad. Esta estrategia se emplea en los Sistemas MULTICS y CAL, que usan tanto listas de acceso como de capacidades. Como ejemplo, considere un sistema de archivos donde cada archivo tiene una lista de acceso. Cuando un proceso abre un archivo, se efectua una bsqueda en la estructura del directorio para encontrar el archivo, se comprueba el permiso de acceso y se le asigna memoria intermedia. Toda esta informacin se anota en una nueva entrada de la tabla de archivos asociada al proceso. La operacin devuelve un ndice de la tabla para el nuevo archivo abierto y todas las operaciones sobre el archivo se efectan especificando este ndice. La entrada de la Tabla de Archivos apunta al archivo y su almacenamiento temporal. Cuando se cierra el archivo, se elimina la entrada de la tabla. Como el S.O. mantiene la tabla de archivos, sta no puede ser corrompida por el usuario; por tanto, el usuario solo puede acceder a los archivos que estn abiertos y, puesto que el acceso se verifica al abrir el archivo, se asegura la proteccin. Esta estratega se utiliza en el Sistema UNIX. Observe que an debe verificarse el derecho con cada acceso y que la entrada de la tabla de archivos tiene una capacidad solo para las operaciones permitidas. Si se abre un archivo para lectura, entonces se coloca una capacidad en la entrada de la tabla de archivos se determina la violacin de la proteccin.
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
85 4.10 Estrategia Total de seguridad La proteccin, como la hemos descrito, consiste estrictamente en un problema interno: Cmo proporcionamos acceso controlado a los programas y datos almacenados een un sistema de computacin? La seguridad por otra parte, no slo requiere un adecuado sistema de proteccin, sino tambin considerar el entorno externo donde opera el sistema. La proteccin interna no es util si la consola del operador esta expuesta a personal no autorizado o si los archivos (almacenados, por ejemplo, en cintas o discos) pueden extraerse del sistema de cmputo y transportarse a otro donde no hay proteccin. Estos problemas de seguridad son esencialmente problemas administrativos, no del sistema operativo. En vista de la seguridad de contar con un mecanismo de seguridad que nos garanticen la integridad y seguridad de los datos, programas y equipo de cmputo se debe de tener en cuenta tanto la seguridad externa y seguridad interna. Seguridad externa: se ocupa de proteger el equipo de cmputo contra intrusos y desastre como incendio e inundaciones. Comprende seguridad fsica y seguridad de operacin. Para la seguridad fsica se utilizan mecanismos de deteccin como pueden ser detectores de humo y sensores de calor los cuales pueden proporcionar un aviso oportuno en caso de incendio: los detectores de movimiento pueden determinar si ha entrado un intruso en la instalacin de cmputo.
La seguridad de operacin se compone de las diversas polticas y procesamiento puestos en prctica por los administradores de las instalaciones de cmputo. Aqu se manejan una serie de conceptos importantes los cuales se nmero a continuacin: Autorizacin: la cual determina que acceso se otorga a que entidades, entendindose por entidades caus usuarios y/o programas. Clasificacin: la cual consiste en separar los datos del sistema y los usuarios en clases, a los cuales se les concede diversos derechos de acceso. Seleccin y asignacin de personal: aqu se maneja el concepto de divisin de responsabilidades a las personas se les asigna diferentes conjuntos de deberes, mismos que pueden realizar sin necesidad de conocer la totalidad del sistema, y as los individuos no pueden percibir el panorama completo. Para poner en peligro sistema podra ser necesaria la participacin de varios empleados y ello, reduce considerablemente la probabilidad de violaciones de la seguridad. Es preciso incluir verificaciones y balances en el sistema como ayuda en la deteccin de violaciones de la seguridad: el personal de operacin no debe tener conocimiento de la naturaleza de estos controles, lo cual reduce la posibilidad de esquivarlos.
Teora de Sistemas Operativos Prof. Germn Ros Toledo (Instituto Tecnolgico de Tuxtla Gutirrez)
86 Vigilancia: se ocupa de supervisar el sistema y realizar auditora de el y de verificar la identidad del usuarios. Algunos de los sistemas de verificacin de autenticidad usados hoy en das son muy complejos. Un problema interesante inherente en estos sistemas es la posibilidad de rechazar usuarios legtimos que se encuentra resfriado: un usuario de huellas digitales podra rechazar a un usuario legtimo con una cortadura o quemadura. Supervisin de amenazas: consiste en no permitir el acceso directo al usuario a los datos y/o programas, eso se consigue mediante una serie de rutinas programas integrados en el ncleo del sistema operativo. La rutinas reciben el nombre de programas de supervisin, los cuales sirven de intermediarios entre las solicitudes del usuario y el sistema operativo para la asignacin y acceso de los recursos, es decir, estos programas monitorean constantemente el manejo de la informacin e impiden en un momento dado que algn usuario tenga acceso a los datos y programas. Estos programas pueden permitir o negar el acceso del recurso al usuario. Amplificacin: a veces es preciso conceder a un programa de vigilancia mayores derechos de acceso. As para calcular los ingresos promedios de todos los contribuyentes en una ciudad, el programa de vigilancia requerira tener acceso a los registros individuales de cada contribuyente.