Download introduccion a los sistemas operativos
Document related concepts
Transcript
UNIVERSIDAD SALESIANA DE BOLIVIA INGENIERIA DE SISTEMA DOSSIER MATERIA : SISTEMAS OPERATIVOS PARALELO : SEPTIMO “A” DOCENTE : Lic. IRENE VEDIA DAZA 1 CAPITULO 1. INTRODUCCION A LOS SISTEMAS OPERATIVOS 1. INTRODUCCION Una computadora sin el software es en esencia una masa metálica sin utilidad, con el software una computadora puede almacenar, procesar y recuperar información. El software para computadora puede clasificarse en general en dos clases: los programas de sistema que controlan las operaciones de la computadora y los programas de aplicación, los cuales resuelven problemas para los usuarios. El programa fundamental en todos los sistemas de computación es el Sistema Operativo. Un sistema de computación se puede dividir a grandes rasgos en cuatro componentes: - Hardware Proporciona los recursos de computación básicos ellos son: la CPU, la memoria y los dispositivos de E/S. - Los programas de sistema ( Sistema Operativo) Controla y coordina el uso del hardware entre los diversos programas de aplicación de los diferentes usuarios. - Los programas de aplicación definen la forma en que dichos recursos se utilizan para resolver los problemas de computación de los usuarios. Aquí están los compiladores, sistema de base de datos, juegos y programa de negocios. Es decir todos aquellos programas que son escritos por el usuario para resolver problemas particulares. Los usuarios pueden ser personas, máquinas u otros computadores, ellos tratan de resolver diferentes problemas. - Algunas definiciones de Sistema Operativo son: - “ Un sistema operativo se puede comparar con un gobierno. Los componentes de un sistema de computador son su hardware, software y datos. El sistema operativo nos da los medios para aprovechar adecuadamente estos recursos durante el funcionamiento del sistema del computador. Al igual que un gobierno el SO no desempeña ninguna función útil por si solo; lo que hace es crear un entorno dentro del que otros programas pueden hacer un trabajo útil.” - Un sistema operativo es el que controla todos los recursos de la computadora y proporciona una base sobre la cual puede escribirse los programas de aplicación. - “Un sistema operativo es un conjunto de programas que ordenadamente relacionadas entre sí, contribuyen a que la computadora lleve correctamente su trabajo”. - Un sistema operativo es un conjunto de programas que controlan el funcionamiento de la computadora. 2 2. HISTORIA DE LA EVOLUCION DE LOS SISTEMAS OPERATIVOS La evolución de los sistemas operativos ha sido una consecuencia de los avances producidos en el hardware de las computadoras, desde las primeras que se construyeron, hasta la gran variedad de ellas que existen hoy en día; por esta razón, hablaremos de cuatro niveles de sistemas operativos. La primera computadora digital real, diseñada por el matemático Ingles Charles Babbage, no tenia sistema operativo. El primer nivel, constituido por los sistemas operativos básicos, que surgieron en los años cincuenta con las primeras computadoras, donde todo el trabajo consistía en controlar y secuenciar la ejecución de los programas y sus datos, que en aquella época estaban sustentados en tarjetas perforadas. Apareció la denominada secuencia automática de trabajos consistente en intercalar entre las tarjetas de un programa y otro, una serie de tarjetas de control con instrucciones o comandos del lenguaje de control de trabajos (JCL- Job Control Language). El programa que controlaba el secuenciamiento de los trabajos se denominó monitor y constituyo el primer sistema operativo. El segundo nivel estuvo en la década de los sesenta y su ayuda a la programación y a la gestión de los trabajos fue más decisiva, proporcionando nuevos métodos de trabajo con el fin de aumentar el rendimiento de utilización del procesador. Una vez resuelto el problema de la automatización en la ejecución de los trabajos, aún quedaba mucho tiempo en el que el procesador se encontraba ocioso, con la siguiente perdida económica. Esta situación se debía fundamentalmente a la diferencia de velocidad entre el procesador y los dispositivos de entra / salida, cuyo funcionamiento era principalmente mecánico. Para minimizar el tiempo de espera surgieron métodos como el on-line y off-line que consisten en conectar directamente los dispositivos lentos a la computadora (on-line) o hacerlo a través de dispositivos más rápidos off-line. Proceso On-line Lectora de tarjetas Computadora Impresora Proceso Off-line Lectora de Tarjetas Unidades de Computadora Unidades de Impresora cinta cinta Con el tiempo aparecieron dispositivos de E/S más veloces que se utilizaron para resolver el problema existente, aunque también aumento la velocidad y capacidad del proceso del procesador. Aparecieron las cintas magnéticas, cuya velocidad era mayor que la de las lectoras de tarjetas, pero el acceso para escribir directamente en ellas era complicado. Por ello, se impuso una técnica consistente en perforar los programas en tarjetas, que eran leídas por una lectora de tarjetas y grabadas en una cinta magnética directamente. Esta cinta se pasaba a la computadora en bloque para la ejecución de los programas, grabándose los 3 resultados en la nueva cinta. Por último, la cinta de resultados se volcaba sobre la impresora. Las acciones de copiado de tarjetas a cinta y de cinta a impresora, al ser lentas y separarse del control de la computadora, permitían a ésta realizar otros trabajos distintos. Este tratamiento se conoce como Off-line. Otras técnicas para mejorar el rendimiento que ha venido utilizando los sistemas operativos de este nivel son las denominadas buffering y spooling. Buffering En el caso anterior, el proceso de carga de la cinta a la computadora es relativamente lento con respecto a la velocidad interna de proceso; además se consume un tiempo adicional debido al protocolo o conversación que se establece entre el procesador y la unidad de cinta. Una forma de mejorar el tiempo que se pierde en los proceso de carga de las cintas es utilizar una memoria intermedia, también denominada buffer, donde la cinta va grabando datos hasta que se llena, volcándose éstos en la memoria de una vez, y mientras el procesador realiza operaciones con los datos recibidos, en paralelo se vuelve a cargar el buffer. A esta forma de trabajo se denomina buffering. Spooling Con la aparición de discos magnéticos como dispositivo de almacenamiento masivo de información con acceso directo desapareció el problema que representaban las cintas magnéticas, ya que solo podían ser escritas después de ser leídas por completo, requiriendo además un tratamiento secuencial desde su principio hasta su final, mientras que los discos pueden ser leídos y escritos simultáneamente y en cualquier punto de su superficie. La técnica de SPOOL (Simultaneous Peripheral Operation On-Line) permite que la salida de un programa se escriba en un buffer y posteriormente sea llevada a un disco magnético en espera de poder ser enviada a una impresora o cualquier otro periférico de salida que en ese momento pueda estar ocupado. De esta forma el procesador puede estar ejecutando un trabajo mientras se imprimen. El tercer nivel de sistemas operativos apareció en la década de los setenta. Para mejorar aún mas el rendimiento en los sistemas informáticos se utiliza el concepto de multiprogramación consistente en la ejecución, en un mismo procesador, de varios programas a la vez. Para ello existen modalidades de proceso por lote (batch), el tiempo compartido (sharing) y el tiempo real (real time) en el que, a través de políticas de asignación, se ejecutan varios programas intercalando la ejecución de sus instrucciones en el procesador. El proceso batch consiste en ir solicitando la ejecución de procesos que no precisan conversión con le usuario (no conversacionales) y estas peticiones van situándose en una cola, siendo el sistema operativo el que da entrada a un conjunto de ellos para su ejecución. 4 Los procesos actuales son en su mayoría interactivos o conversacionales y necesitan un determinado dialogo con el usuario. Por ello aparece el tiempo compartido, consistente en un conjunto de terminales que están continuamente solicitando atención del procesador, siendo el sistema operativo quien va intercalando dicha atención entre los distintos usuarios. Por último, el tiempo real es la posibilidad que tienen determinados procesos en un sistema multiprogramado de obtener respuestas del procesador en un tiempo muy pequeño. Ejemplo los sistema de reserva de vuelos. El cuarto nivel es el constituido por las últimas innovaciones en los sistemas operativos aparecidas todas aquellas a partir de la década de los ochenta. En primer lugar indicaremos que no se trata, en estos casos, de aumentar el rendimiento en la utilización del procesador, sino de aumentar la seguridad, la velocidad de proceso y las prestaciones que pueden ofrecerse al usuario. Existen sistemas operativos que controlan lo que se denomina proceso distribuido, consistente en la conexión en paralelo de varias computadoras compartiendo memoria, buses y terminales con el fin de ganar seguridad en el servicio, debido a que el sistema operativo va repartiendo el trabajo solicitado entre las distintas computadoras e incluso ante el fallo o caída de una de ellas no se interrumpe el servicio por parte del resto. Para aumentar la velocidad de proceso, existe el multiproceso consistente en computadoras que poseen mas de un procesador, con lo que el sistema operativo controla el reparto de trabajo entre los distintos procesadores, aumentando el número de instrucciones que la máquina puede ejecutar por unidad de tiempo. ESTRUCTURA DE LOS SISTEMAS OPERATIVOS Para diseñar un sistema operativo lo primero que hay que decidir es su finalidad y el tipo de procesos que se quiere realizar a través de él (proceso por lotes, tiempo compartido, multiprocesos, etc.). Para ello es preciso tener en cuenta las necesidades que pueden plantearse: Requisitos de usuario: Sistema fácil de usar y de aprender, seguro, rápido y adecuado al uso a que se le quiere destinar. Requisitos del software: Donde se engloban aspectos como el mantenimiento, forma de operación, restricciones de uso, eficiencia, tolerancia frente a los errores y flexibilidad. La estructura de los sistemas operativos hace referencia a la parte interna de un sistema operativo. Existen diferentes estructuras de sistema operativo cuatro de estas estructuras han sido probadas en la práctica, estos son: Estructura monolítica Estructura Jerárquica (por Capas) Máquina virtual Modelo cliente-Servidor 5 1. Estructura Monolítica Es la estructura de los primeros sistemas operativos constituidos fundamentalmente por un solo programa compuesto de un conjunto de rutinas o procedimientos, donde cada uno de los cuales puede llamar a los demás procedimientos, cada vez que así lo requiera. Cuando se usa esta técnica, cada procedimiento del sistema tiene una interfaz bien definida en términos de parámetros y resultados y cada uno de ellos es libre de llamar a cualquier otro. Por ejemplo en la figura. (1) Cuando el programa del usuario es atraído hacia el núcleo, el sistema operativo examina los parámetros de llamada para determinar cual de ellas (#de servicio) se desea realizar. (2) A continuación el sistema operativo analiza una tabla que contiene en la entrada k un apuntador al procedimiento que realiza la k-ésima llamada al sistema. (3) Esta operación identifica el procedimiento de servicio al cuál se llama. (4) Finalmente la llamada al sistema termina y el control regresa al programa del usuario. Las características fundamentales de este tipo de estructura son: - Construcción del programa final a base de módulos compilados separadamente que se unen a través del editor de enlace. Buena definición de parámetros de enlace entre las distintas rutinas existentes. Carecen de protecciones y privilegios. Generalmente están hechos a medida, por lo que son eficientes y rápidos en su ejecución y gestión. 2. Estructura jerárquica A medida que fueron creciendo las necesidades de los usuarios y se perfeccionaron los sistemas, se hizo necesaria una mayor organización del software. Se dividió el sistema operativo en pequeñas partes, de tal forma que cada una de ellas estuviera perfectamente definida y con un claro interface con el resto de elementos. Se constituyó una estructura jerárquica o de niveles en los sistemas operativos, el primero de los cuales fue el denominado THE (Technische Hogeschool, Eindhoven), de Dijkstra, que se utilizó con fines didácticos. Nivel 5 - Usuario Nivel 4 - Archivos Nivel 3 - Entrada / salida Nivel 2 - Comunicaciones Nivel 1 - Memoria Nivel 0 - Gestión CPU 3. Maquina Virtual La máquina virtual se trata de un tipo de sistemas operativos en el que son copias exactas del hardware simple con su modo núcleo(kernel)/usuario, E/S, interrupciones y todo lo demás que posee la máquina real. 6 Como cada máquina virtual es idéntica al hardware real, la máquina virtual puede ejecutar cualquier sistema operativo, que se ejecuta en forma directa sobre el hardware. Estos sistemas operativos separan dos conceptos que suelen estar unidos en el resto de sistemas. - La multiprogramación La máquina extendida 4. Modelo cliente-servidor El tipo más reciente de sistemas operativos es el denominado Cliente-Servidor, que puede ser ejecutado en la mayoría de las computadoras, ya sean grandes o pequeñas. Este sistema sirve para todo; por tanto, es de propósito general y se basa en lo mismo que el resto de sistemas operativos convencionales: el núcleo y los proceso, presentando grandes diferencias en cuanto a la forma de distribuir lo trabajos entre sus distintas partes. Suele suministrar mecanismos adecuados para la gestión de: - Procesos Memoria Comunicación entre procesos. El núcleo tiene como misión establecer o controlar la comunicación entre los clientes y los servidores. Los procesos pueden ser tanto servidores como clientes. Por ejemplo, un programa de aplicación normal es un cliente que llama al servidor correspondiente para acceder a un archivo o realizar una operación de E/S sobre un dispositivo concreto. A su vez, un proceso cliente puede actuar como servidor para otro. 7 CAPITULO 2 PROCESOS 1. INTRODUCCION Actualmente las computadoras pueden realizar varias tareas al mismo tiempo. Es decir, mientras ejecuta el programa de un usuario, una computadora puede asimismo estar leyendo un disco e imprimiendo en una impresora. En un sistema de multiprogramación, la unidad central de procesamiento (CPU) ejecuta varios procesos a la vez, ejecutando cada uno de los procesos en decenas o cientos de milisegundos (aunque realmente la CPU ejecuta en cierto instante un solo proceso). En cualquier instante de tiempo la CPU está ejecutando solo un programa, por eso en el curso de un segundo puede trabajar en varios programas, con lo que se da al usuario la ilusión de paralelismo. Algunas veces las personas hablan de pseudo paralelismo para referirse a estos cambios que la CPU realiza entre programas, a fin de compararlo con el verdadero paralelismo del hardware de la operación de esta unidad mientras corren uno o más dispositivos de entrada o salida. 2. CONCEPTO Uno de los conceptos más importantes que gira en torno a un sistema operativo es el de proceso. Este concepto surgió por primera vez con la multiprogramación, donde se puede ejecutar más de un programa simultáneamente con el fin de aprovechar al máximo los recursos de la computadora. Un proceso es un programa en ejecución junto con el entorno asociado (registros, variables, etc.) El corazón de un sistema operativo es el núcleo, un programa de control que reacciona ante cualquier interrupción de eventos externos y que da servicio a los procesos, creándolos, terminadolos y respondiendo a cualquier petición de servicio por parte de los mismos. 3. MODELO DE PROCESOS En este modelo todo el software ejecutable inclusive el sistema operativo se organiza en varios procesos secuenciales. En este modelo la CPU alterna los procesos; es decir el conjunto de procesos en ejcución la CPU alterna entre un proceso y otro rápidamente, a esta forma de alternar se denomina multiprogramación. Por ejemplo, se tiene una computadora que multiprograma cuatro programas en memoria, donde se van procesando, cada proceso tiene su propio flujo de control (es 8 decir su contador de programas) y se ejecuta en forma independiente (solo uno de ellos se encuentra en ejecución). La diferencia entre un programa (conjunto de instrucciones) y un proceso (instrucciones ejecutándose) es obvio, pero crucial para entender el funcionamiento de los sistemas operativos. Hacemos hincapié en que un programa por si solo no es un proceso; un programa es una entidad pasiva, como contenido de un archivo guardado en disco, mientras que un proceso es una entidad activa, con el contador de programa especificando la siguiente instrucción que se ejecutará y un conjunto de recursos asociados. Estado de los procesos. Los estados de los procesos son internos del sistema operativo y transparentes al usuario. Para éste, su proceso estará siempre en ejecución independientemente del estado en que se encuentre internamente en el sistema. Un proceso puede tomar básicamente tres estados: 1. Ejecución. Estado en el que se encuentra un proceso cuando tiene el control del procesador, es decir, utiliza la CPU en el instante dado. 2. Listo. Aquellos procesos que están dispuestos para ser ejecutados, pero no están en ejecución por alguna causa (interrupción, haber entrado en la estando otro proceso en ejecución, etc.). 3. Bloqueado. Son los procesos que no pueden ejecutarse de momento por necesitar algún recurso no disponible (generalmente recursos de entrada/salida). 4. COMUNICACIÓN ENTRE PROCESOS Frecuentemente los procesos requieren una comunicación entre ellos, por ejemplo: en un entubamiento donde la salida del primer proceso debe transferir al segundo, y este al tercero y así sucesivamente. Existe la comunicación entre procesos de preferencia en una forma estructurada sin utilizar interrupciones. 4.1 Condiciones de competencia La condición de competencia ocurre cuando dos o más procesos accesan a un recurso compartido sin control, de manera que el resultado combinado de este acceso depende del orden de llegada. En algunos sistemas operativos los procesos que trabajan juntos comparten con frecuencia un espacio común para almacenamiento, en el que cada uno puede leer o escribir dentro del espacio compartido; este puede encontrarse en la memoria principal o ser un archivo compartido. 9 Las condiciones de competencia se manifiestan cuando dos o mas procesos leen o escriben en ciertos datos compartidos y el resultado final depende de quien ejecuta y en que momento. Por ejemplo cuando dos procesos desean tener aaceso a la memoria compartida al mismo tiempo, el proceso B comienza a utilizar una de las variables compartidas, antes que el proceso A termine con ella. La clave para evitar problemas de condiciones de competencia y situaciones relacionadas con la memoria compartida, archivo compartidos y cualquier otra cosa compartida, es determinar una forma de prohibir que más de algún proceso lea o escriba en los datos compartidos a la vez. 4.2. Sección Crítica Se denomina sección critica a todas aquellas áreas compartidas, como memoria compartida, archivos compartidos y cualquier otra cosa compartida, es decir, existe sección crítica donde hay un recurso compartido. 4.3. Exclusión Mutua Es un mecanismo que permite que una secuencia de instrucciones, donde participan variables compartidos, sean ejecutados por un solo proceso sin ser alterados por las actividades de otros procesos. Dicho de otra manera, la exclusión mutua asegura de que si un proceso está utilizando una variable o archivo compartido, es que los otros procesos no puedan hacer lo mismo. Para tener una solución adecuada al problema de la Exclusión mutua se necesitan que cumplan cuatro condiciones: 1. Nunca dos procesos pueden encontrase simultáneamente dentro de sus secciones criticas. 2. No se hacen suposiciones acerca de las velocidades relativas de los procesos o del número de CPU. 3. Ningún proceso suspendido fuera de la sección critica debe bloquear a otros procesos. 4. Nunca un proceso debe querer entrar en forma arbitraria en su sección critica. Existen varios métodos para lograr la exclusión mutua, entre ellas tenemos: 5. PLANIFICACIÓN DEL PROCESADOR El mecanismo más común que poseen los sistemas operativos actuales para realizar la gestión del procesador se conoce con el nombre de planificación, cuyo objetivo principal es el de dar un buen servicio a todos los procesos que existan en un momento dado en el sistema. La planificación del procesador que es una parte del sistema operativo, es el que decide que proceso conviene ejecutar primero, es decir, se refiere a la manera de decidir cuánto tiempo de ejecución y cuando se le asignan a cada proceso del sistema. Obviamente, si el sistema es monousuario y monotarea no hay mucho que decidir, pero en el resto de los sistemas esto es crucial para el buen funcionamiento del sistema. 10 5.1. Niveles de planificación En los sistemas de planificación generalmente se identifican tres niveles: el alto, el medio y el bajo. El nivel alto decide que trabajos (conjunto de procesos) son candidatos a convertirse en procesos compitiendo por los recursos del sistema. El nivel intermedio decide que procesos se suspenden o reanudan para lograr ciertas metas de rendimiento. El nivel bajo es el que decide que proceso, de los que ya están listos (y que en algún momento pasó por los otros dos planificadores) es al que le toca ahora estar ejecutándose en la unidad central de procesamiento. En adelante se revisaran principalmente los planificadores de bajo nivel porque son los que finalmente eligen al proceso en ejecución. 5.3. Objetivos de la planificación Las politicas de planificación intentan cubrir los siguientes objetivos: Justicia o Imparcialidad Maximizar la Producción Minimizar el Tiempo de Respuesta. Evitar el aplazamiento indefinido El sistema debe ser predecible. 5.4. Criterios de planificación Los criterios que se deben tener en cuenta a la hora de elegir o diseñar un algoritmo de planificación son los siguientes: Tiempo de respuesta. Tiempo de servicio. Tiempo de ejecución. Tiempo de procesador. Tiempo de espera. Eficiencia. Rendimiento. 5.5 Medidas Para estudiar el comportamiento de las distintas políticas de planificación, definiremos dos medidas relacionadas entre sí que nos indiquen como estamos tratando un proceso concreto. Consideremos : Tiempo de servicio (T): T = tf - ti 11 Tiempo de espera (E): E=T–t t: El tiempo que un proceso P necesita estar en ejecución para llevar a cabo su trabajo. ti : Instante en que el usuario da la orden de ejecución del proceso. tf : Instante en que el proceso termina su ejecución. 5.6 Políticas de planificación Las politicas de planificación se agrupan en: Planificación apropiativa Planificación no apropiativa 5.7. ALGORITMOS DE PLANIFICACIÓN 5.7.1. Primero en llegar, primero en ser servido (FCFS) En esta política de planificación FCFS (First Come, First Served), el procesador ejecuta cada proceso hasta que termina; por tanto, los procesos que entran en cola de procesos preparados permanecerán encolados en el orden en que lleguen hasta que les toque su ejecución. Este método se conoce también como “primero en entrar, primero en salir” (First Input, First Output - FIFO). 5.7.2. Round- Robin (RR) Esta política, cuya traducción podría ser asignación cíclica o planificación en rueda, es una mejora de la FCFS. Trata de ser más justa en cuanto a la respuesta tanto de los procesos cortos como de los largos. 5.7.3. El siguiente proceso, el más corto (SJN) El método SJN (Shortest Job Next) es una política de planificación no apropiativa que trata de cubrir los mismos objetivos que la RR. Esta política toma de la cola de procesos preparados el que necesite menos tiempo de ejecución para realizar su trabajo. Para ello debe saber el tiempo de procesador que necesita cada proceso, lo cual es tarea nada fácil, pero posible a través de diversos métodos como puede ser la información suministrada por el propio usuario o por el propio programa. 5.7.4. Próximo proceso, el de tiempo restante más corto (SRT) La política SRT (shortest Remaining Time) es una mezcla de los dos métodos anteriores y trata de obtener las ventajas de ambos. Para ello esta técnica cambia el proceso que 12 esta en ejecución cuando se ejcuta un proceso (paso del planificador de largo plazo al de corto plazo), Con una exigencia de tiempo de ejecución total menor que el que está ejecutando en el procesador. El valor del tiempo de respuesta medio de los procesos largos mejora con respecto a SJN. El tiempo de Espera E es bastante corto para la mayoria de los procesos. SRT consigue una buena eficiencia, ya que logra que la lista de procesos preparados sea lo ma´s corta posible. 5.7.5. Prioridad En esta política se asocia a cada proceso una prioridad, de manera que el procesador se asigna al proceso de mayor prioridad. Las prioridades pueden ser definidas interna o externamente. En el primer caso, el sistema operativo se basa en una serie de informaciones medibles para el cálculo y asignación de dichas prioridades (tiempo necesitado de procesador, necesidad de memoria, etc. 13 CAPITULO 3 ADMINISTRACIÓN DE ENTRADA/SALIDA 1. INTRODUCCIÓN El control de las operaciones de entrada/salida (E/S) es otra de las misiones que debe realizar un sistema operativo para facilitar el uso de los distintos dispositivos que forman parte de un sistema informático. En primer lugar, analizaremos algunos de los principios del hardware y después del software de E/S en general. 2. PRINCIPIO DEL HARDWARE DE E/S Distintas personas analizan de varias maneras de Hardware de E/S. Los ingenieros electricistas lo conciben en términos de chips, cables, fuentes de poder, motores y demás componentes físicos que conforman el hardware. Los programadores observan la interfaz que se presenta al software (los comandos que el hardware acepta, las funciones que lleva a cabo y los errores que se pueden informar). En este caso, nos concierne la programación de los dispositivos de E/S no el diseño, construcción o mantenimiento de ellos; así nuestro interés estará restringido a la forma de programar el hardware y no a su funcionamiento interno. Sin embargo es frecuente que la programación de muchos dispositivos de E/S este íntimamente ligada con su operación interna. Dispositivos de E/S Los dispositivos hardware de la computadora cuya misión es la de intercambiar datos con el procesador y la memoria principal en un sentido, en otro o en ambos, comúnmente denominados periféricos, no son fáciles ni cómodos de utilizar directamente por los procesos. Por otro lado, los procesos no necesitan conocer las peculiaridades ni características de dichos dispositivos, sino únicamente intercambiar datos con ellos. Por tanto, estos detalles deben ser ocultados para que de este modo las operaciones de E/S sean independientes del tipo o modelo del dispositivo. A lo largo de la historia de las computadoras se han desarrollado muchos tipos de dispositivos que podemos reunir en tres grandes grupos: Dispositivos de almacenamiento, entre estos podemos nombrar a algunos como ser los discos, cintas magnéticas, tambores magnéticos y otros. Los Discos son los dispositivos para almacenamiento secundario más comunes. Aceptan y recuperan datos a alta velocidad. Los datos son transferidos entre el disco y la memoria en bloques. Los discos pueden ser fijos y removibles. Los primeros no se pueden cambiar, mientras que los segundos pueden ser intercambiados, con lo que se consigue un mayor volumen de almacenamiento. Terminales, se denominan al conjunto formado por un teclado y una pantalla conectados a la computadora para introducir datos a través del primero y recibirlos a través de la segunda. Comunicaciones, las líneas de comunicación son dispositivos cuya misión es la de conectar entre sí computadoras y éstas con sus terminales cuando la distancia es grande. Suelen llevar consigo elementos: 14 - Físicos, como pude ser la propia línea, y los adaptadores a la línea denominados módem. Lógicos como pueden ser el protocolo de comunicación y el método de control y detección de errores que se utilice. A su vez, los dispositivos se pueden clasificar, atendiendo al tipo de información que manejan y cómo lo hacen, en los siguientes grupos: Dispositivos de bloque. Es aquel que almacena la información en bloques de tamaño fijo, cada uno con su propia dirección. Los tamaños comunes de los bloques van desde 128 bytes hasta 1024 bytes. Su característica principal es que se puede leer o escribir en un bloque de forma independiente de los demás (por ejemplo los discos). Dispositivos de carácter. Son dispositivos que envían o reciben un flujo o cadena de caracteres, sin sujetarse a una estructura de bloques, es decir, a ninguna estructura prefijada. No se puede utilizar direcciones ni pueden realizar operaciones de búsqueda. Como ejemplo de estos dispositivos son las terminales, impresoras de línea, tarjetas perforadas, interfaces de una red, ratones y muchos otros dispositivos no parecidos a los discos son dispositivos de carácter. Este esquema de clasificación no es perfecto. Algunos dispositivos no se ajustan a él. Por ejemplo, los relojes no tienen direcciones por medio de bloques tampoco generan o aceptan flujos de caracteres. Lo único que hacen es provocar interrupciones a intervalos bien definidos. 3. INTERFAZ PROCESADOR – PERIFERICO ( Interfaz. Elemento compartido entre dos partes para que interactuen o se comuniquen entre sí. Se pueden considerar como las reglas existentes para establecer dicha comunicación.) La velocidad y la complejidad de los periféricos determinan cómo deben ser conectados al procesador. Estudiaremos tres tipos de conexión: 3.1. Registros Los dispositivos se pueden conectar al procesador por los registros de los dispositivos que pueden ser accedidos directamente en una zona determinada de la memoria o, indirectamente, por medio de instrucciones hardware que devuelven el estado del mismo. Estos registros tienen cuatro misiones: - Transferir el estado del dispositivo (status). - Transferir instrucciones al dispositivo. - Transferir datos desde el dispositivo. - Transferir datos al dispositivo. 15 Ahora bien, el procesador sólo puede dar comienzo a las operaciones de E/S sin poder controlar su terminación, pero para ver cuándo se ha completado una operación se pueden emplear dos métodos: Polling. Consiste en leer constantemente el registro de status del dispositivo. Tiene el inconveniente de ocupar el procesador un tiempo no deseado. Interrupciones. El procesador continúa con otros trabajos y sólo cuando el dispositivo concluye la operación llama la atención del procesador, interrumpiéndole para que trate dicha situación y realice las acciones que considere necesarias, es decir, sirva la interrupción. 3.2. Controladores Los dispositivos complejos (discos…) no se conectan directamente al procesador, sino que lo hacen a través de un controlador que contiene el estado del dispositivo (status), controla el mismo y chequea los datos transferidos. El controlador es el que acepta las órdenes del procesador y se comunica con él a través de registros como se tratara de un dispositivo. El controlador, también llamado unidad de control, puede manejar varios dispositivos del mismo tipo. 3.3. Canales Normalmente los controladores se conectan al procesador a través de un canal o procesador de E/S (IOP_ Input Output Porocessor). El propósito de un canal es conseguir que los dispositivos sean tratados como virtuales o transparentes. Los canales son manejados por comandos y cuando terminan la operación devuelven el status correspondiente e interrumpen al procesador. Los canales pueden ser de varios tipos: - Selectores. Pueden manejar varios dispositivos, pero sólo pueden transferir datos de uno en uno. Multiplexores. Manejan varios dispositivos y pueden y transferir datos simultáneamente. (Canal es el medio Físico para la transferencia de información) 4. SOFTWARE DE CONTROL DE E/S (DRIVER) Se define driver como “el software formado por un conjunto de rutinas y tablas que, formando parte del núcleo del sistema operativo, ejecutan y controlan todas las operaciones de E/S sobre cualquier periférico conectado a la computadora, siendo particulares para cada dispositivo”. 16 Un driver no es un proceso o tarea independiente gestionado por el sistema operativo, sino un conjunto de tablas en las que aloja la información que caracteriza a cada periférico conectado a la computadora, y una serie de rutinas que controlan toda la gestión de los mismos y las informaciones que fluyen en un sentido en otro. Se encuentran permanentemente alojados en memoria principal y requieren una elevada rapidez de ejecución sin formar parte del proceso de usuario que los utilice. Proceso de usuario Sent. Primitivas de E/S DRIVER Periférico El tratamiento por el núcleo de un sistema operativo de toda la información de E/S desde, o a un periférico, se puede dividir en dos niveles para su estudio: Tratamiento independiente del periférico Esta formado por el conjunto de rutinas que procesan información sin atender a las características propias del periférico. Las funciones básicas del software independiente del dispositivo es llevar a cabo las funciones de E/S comunes a todos los dispositivos, además de proporcionar una interfaz uniforme del software a nivel de usuario. Tratamiento dependiente del periférico Es el conjunto de rutinas que el núcleo del sistema operativo ofrece para controlar el propio dispositivo periférico. El proceso de gestión de operaciones de E/S se encuentra representado por la siguiente figura: Proceso de usuario Software independiente de los dispositivos Despachador de E/S Manejador de interrupciones HARDWARE 17 4.1. Funciones de un driver Entre las funciones que realiza un driver podemos citar las siguientes: Definir las características del periférico al resto del sistema operativo Inicializar los registros asociados al periférico en el momento del arranque del sistema operativo. Habilitar o deshabilitar el dispositivo para un proceso. Procesar todas las operaciones de E/S solicitadas por un proceso. Cancelar toda la operación de E/S en el momento que sea necesario por cualquier motivo. Procesar todas las interrupciones hardware generadas por el propio periférico. Tratar los errores y estado del dispositivo haciendo la correspondiente comunicación al usuario. 4.2. Rutinas de un driver Son los puntos de entrada al driver y pueden ser llamadas directamente por el núcleo del sistema operativo o por una interrupción hardware del dispositivo periférico. En general, en un driver podemos encontrar las siguientes rutinas: Inicialización. Es llamada por el núcleo del sistema operativo en la inicialización del sistema la rutina se encarga de inicializar el dispositivo incluyendo la información correspondiente en los registros de estado y operación del mismo. Atención de peticiones de E/S. Esta rutina atiende todas las peticiones de los procesos de usuario para realizar operaciones de E/S. Gestión de interrupciones. Es la rutina que maneja todas las interrupciones del dispositivo. Toma el control cuando el dispositivo periférico origina una interrupción en el procesador. Cancelación de operaciones de E/S. Es una rutina que da por finalizadas las operaciones de E/S sobre el dispositivo cuando se produzca alguna circunstancia que le obligue a ello. Otras. Existen otras rutinas menos importantes, como puede ser: el time-out que controla el tiempo de proceso de la operación y el Power –fail que actúa en el arranque y reanudarse el proceso después de un corte de alimentación del sistema. 4.3. Estructura de datos de un driver Las rutinas de un driver para dar un correcto servicio a las peticiones de E/S necesitan para cada dispositivo una serie de datos que se encuentran en estructura de datos en forma de tabla. Las cuales son similares a los siguientes: 18 Bloque de control del driver (BCD) Es la representación del driver desde el punto de vista del sistema operativo. Contiene aquellos parámetros que son susceptibles de ser variados dinámicamente y aquellos que definen el tipo de dispositivo que puede ser atendido por el driver. Los datos que suelen contener son: Dirección del siguiente BCD. Nombre del driver. Dirección del comienzo de los bloques de control de unidades (BCU) que controle el driver. Número de unidades a servir. Dirección de comienzo de la rutina de inicialización del driver. Estado del driver (On/Off line…) Dirección de comienzo de la cola de bloques de E/S (BES). Dirección del BES que esta siendo servido. Variables particulares del driver. Bloque de control de la unidad (BCU) Cada dispositivo físico se relaciona desde el punto de vista del sistema operativo como una unidad dentro del tipo al que le corresponda y es definido e identificado por el sistema operativo por medio de su BCU. Dirección del siguiente BCU del driver. Numero de unidad Estado de la unidad. Numero del vector de interrupción asociado. Dirección de la rutina de gestión de la interrupción. Dirección del puerto de E/S. Dirección del BCD al que pertenece. Dirección del PBC del proceso que tiene reservada esta unidad. Dirección del comienzo de la cola de bloques de E/S (BES). Dirección del BES que esta siendo servido. Características de la unidad. Paquete de petición de E/S (PES) Cuando un proceso de usuario intenta hacer una operación de E/S, el sistema operativo crea un paquete asociado a dicho proceso y a dicha petición para ser tratado por el driver. Este paquete se coloca en una cola prioritaria para ser atendido por el driver al que va dirigido. Los datos que normalmente contiene son: Dirección del siguiente PES en la cola. Prioridad de la petición de E/S. Proceso que ha lanzado la petición. Dirección donde devolver el resultado de la petición. 19 5. Función a realizar (entrada o salida) Identificador del dispositivo. Identificador de la unidad. Dirección de la lista de parámetros de entrada de la llamada al sistema operativo. INTERRUPCIONES VECTORIZADAS Los sistemas operativos realizan diversidad de operaciones y están preparados para aceptar interrupciones que provienen de los dispositivos periféricos. Para poder reconocer qué dispositivo ha sido el causante de una interrupción y poder darle el tratamiento adecuado, el sistema operativo destina parte de su memoria (la más baja) para almacenar las direcciones de los ya mencionados manejadores de interrupciones asociados a cada dispositivo. Cada palabra almacenada que contiene la dirección de un manejador de interrupción se conoce con el nombre de vector de interrupciones. Por tanto, el vector de interrupción es un número que nos indica la palabra que contiene la dirección de una rutina que debe tratar una interrupción. 20 CAPITULO 5 ADMINISTRACIÓN DE ARCHIVOS 1. INTRODUCCIÓN La parte más visible de un sistema operativo es el sistema de archivo. La mayoría de los programas leen o escriben cuando menos un archivo y los usuarios siempre tienen conocimiento de la existencia de archivos y sus propiedades. Para muchas personas, la comodidad y la utilidad del sistema operativo dependen principalmente de la interfaz, estructura y contabilidad del sistema de archivos. El sistema de archivos consta de dos partes distintas: una colección de archivos, cada uno de los cuales contiene datos relacionados, y una estructura de directorios, que organiza todos los archivos del sistema y proporciona información sobre ellos. En este capítulo consideraremos los diversos aspectos de los archivos y las distintas estructuras de directorios. También describiremos formas de manejar la protección de los archivos, que es necesaria en un entorno en el que múltiples usuarios tienen acceso a los archivos. 2. ARCHIVOS 2.1. Definiciones de Archivos Es una colección de datos Es un conjunto de datos relacionados lógicamente Es una colección de información relacionada Los computadores pueden guardar información en varios medios de almacenamiento distintos, Como discos magnéticos, cintas magnéticas y discos ópticos. Con objeto de facilitar el uso del sistema de computación, el sistema operativo proporciona una vista lógica uniforma del almacenamiento de información. El sistema operativo abstrae de la estructura física para crear una estructura lógica: el archivo. Es a través del sistema operativo que los archivos se almacenan en dispositivos físicos, y por lo tanto, un subsistema de el se encarga de la administración. 2.2. Atributos de los Archivos Un archivo tiene un nombre, para comodidad de sus usuarios, y usamos ese nombre para hacer referencia al archivo. El nombre suele ser una cadena de caracteres, como “ejemplo.c”. Algunos sistemas distinguen entre las letras mayúsculas y minúsculas en los nombres, mientras que en otros las consideran equivalentes. Un archivo tiene otros atributos que varían de un sistema operativo a otro, pero que generalmente son: Nombre: El nombre simbólico del archivo es la única información que se mantiene en forma comprensible para seres humanos. Tipo: Esta información se necesita en sistemas que reconocen distintos tipos. Ubicación: Esta información es un puntero a un dispositivo y la posición del archivo en ese dispositivo. 21 Tamaño: Este atributo incluye el tamaño actual del archivo y tal vez el tamaño máximo permitido. Protección: La información de control de acceso determina quién puede leer, escribir, ejecutar, etc., el archivo. Hora, fecha e identificación del usuario: Esta información podría mantenerse para la creación, la ultima modificación y el último uso. Estos datos pueden ser útiles para protección, seguridad y control de su uso. 2.3. Tipos de Archivos Los archivos representan datos y programas. Los archivos de datos pueden ser numéricos, alfabéticos, binarios. Un archivo es una secuencia de bits, bytes, líneas, registros, de acuerdo a lo que necesita el usuario creador de ese archivo. Existe, entonces, diferentes tipos de archivo: Text file: Source file: Object file Executable file: 2.4. Subsistema de archivos El subsistema de archivos o sistema de gestión de archivos es el sistema de software que proporciona a los usuarios y aplicaciones los servicios relativos al uso de archivos. Sus objetivos son: Cumplir con la gestión de datos y solicitudes del usuario. Garantizar la integridad del contenido de los archivos Dar soporte de E/S para los distintos dispositivos Brindar un conjunto de rutinas standard de interfaces de E/s. Optimizar el rendimiento tanto a nivel de productividad como de tiempo de respuesta. METODOS DE ACCESO Una vez creado un archivo estando su información almacenada en el soporte correspondiente, se quiere utilizar su información, para esto, independientemente de cómo haya sido almacenada la información en el soporte físico, se podrá acceder a ella según un esquema lógico secuencial, directo o bien casi directo. El subsistema de archivos del sistema operativo define que formas de acceso lógico permite y que métodos de acceso soporta. Un método de acceso es un conjunto de rutinas y tablas que posibilitan acceder a la información de los archivos según un esquema lógico determinado. Algunos sistemas ofrecen un solo método de acceso a sus usuarios. Otros, por el contrario, permiten utilizar varios y será el usuario el que decida cual usar. 22 Acceso secuencial El método de acceso más sencillo es el acceso secuencial. La información del archivo se procesa en orden, del primero al último y de uno en uno. El efecto es como si el archivo, para el usuario, estuviera organizado por registros consecutivos que solo permiten llegar a uno cualquiera de ellos pasando previamente por los anteriores. Las rutinas del método de acceso secuencial mantendrán un apuntador al siguiente registro lógico a acceder. Una operación de lectura o escritura, lee o escribe el registro y avanza el apuntador al siguiente. Es un método muy utilizado por su simplicidad, especialmente en archivos con poca información. Acceso directo Este método permite el acceso directo a cualquier parte del archivo, es decir, no es necesario pasar por la información anterior para acceder a un determinado registro. Solo puede existir este tipo de acceso en aquellos soportes que por su naturaleza lo permitan. Es el caso de los discos, mientras las cintas no pueden tener este tipo de acceso. Un archivo se compone de registros lógicos de longitud fija que permiten a los programas leer y escribir registros rápidamente sin ningún orden específico. El método de acceso directo de los archivos se basa en el modelo de discos, ya que estos permiten el acceso aleatorio a cualquier bloque de archivo. Para este método, el archivo se visualiza como una secuencia numerada de bloques o registros. Un archivo de acceso directo permite leer o escribir bloques arbitrarios. Así, podríamos leer el bloque 14, luego el 53 y luego escribir el bloque 7. No hay restricciones sobre el orden de lectura o escritura de un archivo. Los archivos de acceso directo son muy útiles para obtener acceso inmediato a grandes cantidades de información. Las bases de datos suelen ser de este tipo. Acceso directo indexado En este caso se construye un índice o tabla de las relaciones entre las claves y sus bloques físicos para cada archivo. La localización de un registro se realizara accediendo primero a ese índice y con la dirección del bloque correspondiente a la clave solicitada, se alcanzará el bloque adecuado. Para archivos grandes se puede utilizar un índice maestro o índice de índices. El maestro apunta al índice secundario que contiene la clave y este directamente al bloque físico. Estos índices se crearan durante la carga del archivo. 23 DIRECTORIOS Son a su vez archivos de estructura especial, cuyos registros contienen la descripción de los archivos existentes en el sistema. Mediante estos directorios, el subsistema podrá localizar rápidamente un archivo solicitado y conocer sus características (organización, tamaño, fecha, etc.) Desde el punto de vista lógico, un directorio es una tabla de símbolos que refleja los archivos existentes. Cada sistema organiza esta información a su manera: algunos construyen una cabecera (header del archivo) y la separan del directorio, quedando información primaria en el directorio para localización del archivo y el resto en el header. Otros estructuran el directorio como una simple lista, con una entrada por archivo, como si fuera un archivo secuencial donde el nombre de cada archivo es la clave. La estructura de dicha tabla podrá ser más o menos compleja dependiendo de los distintos sistemas operativos, pero en cualquier caso deberán permitir la realización de las siguientes operaciones básicas: 24