Sistemas operativos. Introducción

Informática. Subsistema físico. Subsistema lógico. Generación de computadoras. Clasificación. Procesadores. Ciclo de instrucción. Gestión de archivos. Almacenamiento secundario. Gestión y administración de procesos

  • Enviado por: Sergio
  • Idioma: castellano
  • País: España España
  • 25 páginas
publicidad

Sistemas Operativos I

Tema I: Introducción a los Sistemas Operativos

Informática

Sistema Informático

Subsistema físico (hardware)

Procesador (UCP o CPU)

Memoria Principal

Memoria secundaria (discos)

Periféricos

Subsistema lógico

Programas del sistema: control

Programas de servicio: utilidad

Recursos lógicos

Software

Software de usuario

Programas de aplicación

Datos a procesar

Informática: Conjunto de conocimientos científicos y técnicos que hacen posible el tratamiento informático de la información.

Información: Conjunto de elementos capaces de expresar un conocimiento.

Sistema informático: Conjunto de elementos físicos y lógicos capaces de procesar información y controlar eficazmente los recursos disponibles.

Recurso: Actividad o capacidad de un componente físico o un programa.

Programa: Conjunto de instrucciones u órdenes escritas en un lenguaje de programación destinadas a obtener un fin.

1.1 - Subsistema Físico.

Procesador

Realiza las funciones de control de los componentes del ordenador y el proceso de datos. Tiene incorporado un juego de instrucciones propias que determinan las operaciones que puede realizar (es finito y no se puede modificar); estas instrucciones componen el llamado lenguaje máquina propio de cada procesador (es único para cada modelo).

Está formado por la unidad Aritmético-lógica (realiza los cálculos), la unidad de Control (controla la transferencia de datos entre las partes del procesador y el ordenador), el Contador de programa (lleva la cuenta del nº de las órdenes de un programa y la posición actual de su ejecución), los Registros temporales de datos y los componentes para la entrada y la salida de datos.

Memoria Principal (RAM)

Es un lugar para el almacenamiento de datos y está formado por “celdas” o “posiciones de memoria”, en cada cual se puede almacenar una unidad de información (1 palabra = 1 byte = 8 bits); cada celda tiene una dirección única que permite acceder a ella y a sus datos. La memoria principal es usada por el procesador para obtener y almacenar datos y programas.

Es una memoria volátil y, al apagar el ordenador, se pierden todos los datos almacenados en ella que no hayan sido guardados en la memoria secundaria.

Memoria secundaria

Son todos los soportes permanentes para almacenar la información (hdd, fdd, cd-rom, etc.), no es volátil y para poder usar los datos almacenados en ella es necesario transferirlos antes a la memoria principal. Esta memoria es más lenta, pues sus tiempos de acceso (en milisegundos) son mayores que los de la memoria principal (en nanosegundos), pues la principal no tiene piezas móviles.

Periféricos

Son todos los dispositivos externos al ordenador de entrada (teclado, ratón, escáner, etc.) y de salida (monitor, impresora, plotter, etc.) de datos, o de ambas, como los discos extraibles o removibles (memoria secundaria).

1.2 - Subsistema Lógico.

Sistema operativo

Es el conjunto de programas relacionados que gestionan los recursos del sistema informático, controlan el tráfico de información y comunican al usuario con el hardware (hacen de interfaz).

Interfaz: Medio físico o lógico que pone en comunicación a dos elementos.

Su misión es la gestión del hardware y de la información almacenada y procesada por él.

Programas de servicio (utilidades)

Proporcionan un apoyo para la gestión de una computadora (gestión de archivos, diagnósticos, etc.); los más sencillos suelen ir acompañando al Sistema Operativo (comandos) pero los más avanzados van por separado y no tienen nada que ver con él.

Software del usuario

Programas de aplicación, independientes, de todo tipo (procesadores de textos, filtros y programas para gráficos, programas de comunicaciones avanzadas, etc.).

Lenguajes de Programación

Sirven para programar todo tipo de software. Los hay de bajo nivel, próximos al lenguaje máquina (ensamblador) y de alto nivel, más cercanos al lenguaje humano (Pascal, C, Basic, etc. y todas sus variaciones).

Para utilizarlos es necesario el empleo de un programa que se encargue de transformar el lenguaje de alto nivel en lenguaje máquina, son los programas traductores.

Traductores

- Intérpretes: Al ejecutar un programa escrito en un lenguaje de alto nivel, van traduciendo y ejecutando las instrucciones una a una.

- Compiladores: Traducen los programas de alto nivel a lenguaje máquina de una sola vez, guardando los resultados para que al ejecutarlo posteriormente no sea necesaria la traducción.

Al conjunto de instrucciones de un programa escritas en lenguajes de alto nivel se le llama código fuente, y a las mismas sentencias ya traducidas a lenguaje máquina, código objeto.

Firmware

Memoria fija. Programas almacenados en memoria ROM que es grabada por los fabricantes y que luego se incorpora al hardware.

Bit: Unidad básica de Información (Binary digit).

Byte: Combinación o agrupación de 8 bits (hay 256 posibilidades distintas).

2 - EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS

2.1 - 1ª Generación de Computadoras (1945-55).

Fueron desarrollados tras la II Guerra Mundial en los principales centros de investigación de los Estados Unidos.

Usaban válvulas de bombilla y ocupaban habitaciones enteras; no usaban sistemas operativos ni lenguajes de programación.

Los programadores-operadores sólo sabían manejar y programar su propia máquina, ya que todas eran distintas. La forma de trabajo era el proceso en serie o lineal (cada usuario reservaba un turno de la duración que estimase necesaria y al terminar el tiempo, habiendo terminado su trabajo o no debía recoger y ceder su puesto al siguiente).

2.2 - 2ª Generación de Computadoras (1955-65).

Estaban basados en transistores, que son más fiables y duraderos que las válvulas, y comienzan a comercializarse a grandes instituciones.

Aparecen los primeros sistemas operativos y lenguajes de programación y la forma de trabajo pasó a realizarse por lotes (batch: Los usuarios pedían un turno y después eran agrupados según sus necesidades de Software para poder realizar seguidos todos los trabajos que requerían un compilador o un lenguaje determinado de forma que no se perdía el tiempo cargando un software distinto para cada usuario).

El operador sigue estando especializado sólo en su máquina, pero para evitar tener que estar constantemente pendiente de la actividad de la computadora (posibles fallos, fin del programa en ejecución, etc.) se creó el primer sistema operativo que se encargaba de gestionar la CPU, el llamado monitor.

Para poder manejar el Monitor se creó el lenguaje JCL (job control lenguaje); pero este sistema op. no era fiable debido a que, si no se tenía especial cuidado al crear los programas que el ordenador iba a ejecutar, estos podían invadir el espacio de memoria reservado y utilizado por el Monitor, lo que causaba un fallo del sistema y la interrupción de todos los procesos; para evitar estas invasiones se creó la Protección de memoria, que establecía ”el borde de la memoria”, el cual no permitía ser rebasado por los programas de aplicación.

Cuando los programas necesitaban hacer uso de los periféricos (impresoras, unidades de cinta, etc.), cada uno debía incluir en su código las instrucciones necesarias para poder usarlos, lo que dificultaba la programación y ocupaba más espacio; por lo que se decidió incorporar al Monitor un módulo de control para cada uno de esos dispositivos, de manera que, cuando un programa necesitase usarlos, transfería los datos al Monitor, que se encargaba de enviarlos adecuadamente el periférico.

El proceso Online (leer datos de entrada, procesarlos, guardar datos de salida y repetir de nuevo al acabar) fue sustituido por el proceso Offline, en el que las fichas de datos se leían previamente y se almacenaban en cintas (más rápidas que leer directamente las fichas), después eran leídas y procesadas de manera más rápida y la salida se grababa también en cintas para su posterior (y más lenta) impresión.

Para acelerar los procesos de lectura y escritura de las cintas y aumentar el rendimiento se empezó a hacer uso de los búfers de memoria intermedia, pero se usaban muy poco por ser muy caros; éstos eran gestionados por el Monitor.

2.3 - 3ª Generación de Computadoras (1965-80).

Aparecen los circuitos integrados a gran escala (LSI: large scale integred), abaratando considerablemente los costes. Los LSI admitían entre 30.000 y 100.000 transistores o componentes en un solo chip.

Aparecen también en el mercado los primeros discos magnéticos y los ordenadores de ámbito general, compatibles con diversas tareas (anteriormente se fabricaba un ordenador distinto para cada problema o necesidad), para lo que se crearon grandes y complejos sistemas operativos que incluían la nueva técnica de Multiprogramación o Multitarea, la cual permite que, mientras un programa lleva a cabo la lenta entrada/salida de datos, el uso del procesador es cedido a otro programa que esté en espera para aprovechar al máximo el tiempo de computación, de manera que había varios programas en memoria simultáneamente.

Para solucionar el problema de la lentitud de los periféricos se desarrolló el spooling, consistente en almacenar los datos de salida en memoria o en archivos, liberando así el procesador, hasta que el dispositivo de salida pueda admitirlos (listas de espera o colas de impresión, etc.).

Los nuevos sist. op. incluían métodos de planificación gestión de discos y memoria, y de procesos.

Junto a la Multiprogramación se desarrolló el sistema de Tiempo Compartido, que permitía que varios usuarios accediesen a una misma CPU a través de terminales externas, cediendo el uso del procesador a los distintos usuarios alternativamente de forma tan rápida que pareciese estar dedicado exclusivamente a un solo usuario.

2.4 - 4ª Generación de Computadoras (1980-9...).

Aparecen los Microprocesadores gracias a la integración a muy alta escala (VLSI), que permitía incluir de 300.000 a varios millones de componentes en los chips.

Se inicia la era del PC, que debido a la gran reducción de precios se ha conseguido introducir en millones de casas particulares; los PCs incluyeron los primeros sist. op. “fáciles” de utilizar.

También aparecen los NOS (Net Operating System) para posibilitar que varios ordenadores puedan conectarse en red y entenderse entre ellos sin necesidad de usar un software de red (más caro) ajeno al sist. op.

Aparecen los Sistemas Operativos Distribuidos en los que varios ordenadores interconectados entre sí operan para obtener un mismo fin.

3 - CLASIFICACIÓN DE LOS SISTEMAS OPERATIVOS

3.1 - Según la Gestión del Procesador.

Monoprogramados

No admiten la ejecución de varios programas de usuario a la vez. Al ejecutar un programa, éste se carga en memoria y cuando acaba, se elimina de ella y se carga uno nuevo.

Multiprogramados

Son los más extendidos (unix, os/2, windows NT, etc.) y posibilitan la ejecución concurrente de varios programas. Su programación lleva asociado el Acceso Multiusuario. Pueden ser de dos tipos:

- Multitarea Cooperativa: Es gestionada por las propias aplicaciones de usuario, que deciden o permiten la ejecución de otros programas (Windows 3.1x); tiene la desventaja de que si un programa acapara los recursos y se queda colgado, no devuelve el control a los demás o al sistema: se cuelga todo el sistema.

- Multitarea Apropiativa: La multitarea es gestionada por el propio sistema operativo y es éste el que decide qué programas acceden a los recursos y cómo lo hacen; en éste, si un programa se cuelga, el S.o. lo cancela y recupera sus recursos (Linux -unix- , windows NT, etc.).

Multiprocesador

Se utilizan en grandes computadoras que admiten más de un procesador. Son multitarea, pero en vez de repartir el procesador entre los programas, reparte los programas entre los procesadores.

3.2 - Según el Número de Usuarios.

Monousuario

Su finalidad no es optimizar la velocidad de respuesta del sistema; pueden ser Mono- o Multiprogramados y no suelen tener protección de la información ni contra su uso por usuarios no autorizados (Ms-Dos).

Multiusuario

Se basan en la Multiprogramación y aceptan varios usuarios distintos con diferentes niveles de acceso a los datos (total, parcial, sólo lectura o ninguno); pueden proteger la información u el uso indebido (unix, windows NT).

3.3 - Según la interactividad.

De procesamiento por lotes (batch)

Se utilizan cuando el usuario no necesita interactuar con el S.o., ya que el programa, los datos y las órdenes de control se enlazan formando un bloque o lote (batch) que se ejecuta sin la intervención del usuario.

El objetivo es agrupar estos grupos en grupos de trabajo más grandes que requieran los mismos recursos de Hardware y Software para evitar perder tiempo cambiándolos entre la ejecución de un programa y otro.

La gestión de memoria es muy sencilla, y la divide en dos partes: una para la sección residente del sistema operativo y otra para el programa a ejecutar. No es necesario incluir procedimientos de protección de memoria para evitar que los programas se solapen debido a que se usa el procesamiento lineal, en el que se carga sólo un programa, se ejecuta, se descarga, se carga y ejecuta el siguiente, y así hasta que se termina el trabajo.

De tiempo compartido

Son multitarea y multiusuario. Dan un buen tiempo de respuesta haciendo creer a los usuarios que se les dedica el tiempo de proceso exclusivamente a ellos gracias a que se asignan tiempos de ejecución alternos muy cortos para cada usuario.

El usuario puede interactuar con los programas y compartir recursos; y al existir en memoria varios programas simultáneamente se requiere la planificación de la gestión y protección de memoria, de la gestión de dispositivos de entrada/salida optimizando sus recursos y de la protección de acceso a archivos; para ello se utiliza el buffering, el spooling y la memoria virtual.

De tiempo real

Son multiprogramados e interactivos. Deben proporcionar unos tiempos de respuesta muy breves, para lo que usan un sistema de clasificación y asignación de tareas mediante su ordenación por niveles de prioridad. Todos los programas en ejecución están constantemente en la memoria.

3.4 - Según el tipo de aplicación (el uso que se les va a dar).

De propósito general

Son la mayoría de los S.o. comerciales, que sirven para un gran número de entornos, ya sean mono- o multiusuarios, de tiempo real o compartido, batch o multitarea, etc.

De propósito exclusivo

Son diseñados exclusivamente para realizar una sola función. No se suelen comercializar y están hechos a medida para la tarea que realizan y aceptan muy pocas aplicaciones. Se han dado casos en los que un S.o. exclusivo se ha llegado a comercializar y convertir en S.o. de propósito general.

3.5 - Otras clasificaciones.

Sistemas Operativos combinados

No pertenecen a ninguna de las clasificaciones anteriores, sino que combinan partes y características de todas ellas.

Sistemas Operativos distribuidos

Posibilitan que distintos sistemas informáticos autónomos interconectados entre si sean capaces de cooperar para realizar una misma tarea, permitiendo una compartición global de los recursos y acceso remoto a ellos, así como la distribución de tareas.

4 - FUNCIONES Y OBJETIVOS DE LOS SISTEMAS OPERATIVOS.

Un S.o. es un conjunto de programas que controla y gestiona la ejecución de los programas, haciendo de interfaz de usuario.

Sus funciones principales son:

- Facilitar al usuario una interfaz cómoda.

- Aprovechar los recursos del sistema eficazmente.

- Tener capacidad de evolución (ampliar las prestaciones).

4.1 - Prestaciones de un sistema informático.

Prestaciones

Gestión de recursos

Gestión de programas

Carga

Ejecución

Terminación

Gestión de ficheros

Creación

Catalogación (directorios)

Manipulación (edición, copia, etc.)

Atribución (atributos)

Eliminación

Gestión de recursos

Solicitud

Asignación

Liberación

Gestión de información

Gestión de usuarios, datos, errores, etc.

Comunicación usuario - ordenador

Intérprete de comandos

traductores

Compiladores

Intérpretes

Enlazadores

Informes del sistema (estadísticas sobre utilización y estado del sistema)

Programas de utilidad

4.2 - Características o Rutinas de un Sistema Operativo.

Rutinas de un Sistema Operativo

Gestión de interrupciones

Software

Hardware

Gestión de recursos

Del Procesador

De la Memoria

De Dispositivos E/S

De Procesos

Del intérprete de comandos

Órdenes internas

Órdenes externas

Otras rutinas

Métodos de acceso

Métodos de protección

Métodos de asignación de espacio

Sistema de catalogación

4.3 - Rutinas para la gestión de Interrupciones

Señal que se genera para avisar al procesador de la ocurrencia de un suceso. Cada interrupción tiene unas rutinas asociadas que se ejecutan al producirse la interrupción (función o rutina de tratamiento o servicio de la interrupción - RSI). Estas rutinas se encuentran en la memoria y para distinguir unas de otras se usa el vector de interrupciones, que se encuentra en la base de la memoria y se encarga de indicar al procesador la dirección de memoria en la que se encuentra la RSI correspondiente a cada interrupción.

Cuando ocurre una interrupción se detiene el programa en ejecución, se guarda su información de estado, se consulta y ejecuta la RSI correspondiente y, si es posible, se continúa la ejecución del programa en la posición o estado guardado anteriormente.

De Software

Son las realizadas desde el interior de un programa de forma intencionada, por lo que este se detiene voluntariamente. A este procedimiento se le denomina llamada al sistema.

El procesador trabaja en dos modos, el modo usuario (sólo se pueden ejecutar unas instrucciones concretas y se tiene un acceso restringido a la memoria) y el modo núcleo, supervisor o monitor (se puede ejecutar cualquier instrucción sin restricciones y se tiene acceso libre a la memoria); el modo nucleo es el usado por el S.o. para ejecutar la mayoría de sus instrucciones, pero el resto del tiempo está en modo usuario. Cuando un programa de usuario necesita realizar operaciones en modo núcleo, éste hace una llamada al sistema para ceder el control al procesador, el cual ejecuta las instrucciones que el programa necesita, las cuales han sido previamente grabadas en la RSI correspondiente a su interrupción.

De Hardware

Están provocadas por el Hardware enviando a través de la línea correspondiente (del bus) una señal al procesador para que esta sea atendida. Las interrupciones del Hardware también se llaman IRQ, y los PCs actuales (del Intel 80286 en adelante) poseen 16 (del 0 al 15), aunque los primeros sólo tenían 8.

4.4 - Rutinas para la gestión de recursos

Hay una serie de recursos de la computadora que son fijos y siempre existirán independientemente del modelo. Para gestionar estos recursos se encuentran en el S.o. una serie de rutinas que se pueden dividir en los siguientes grupos:

- Del procesador: El S.o. necesita una serie de rutinas que indiquen al procesador cómo debe actuar respecto a las instrucciones de los programas; así como otras rutinas que le indiquen qué trabajos deben ser procesados estableciendo un orden de ejecución si existe una lista de espera. Hay que tener en cuenta por lo tanto la prioridad asignada a cada programa.

- De la memoria: Se encargan de situar a los programas en el lugar oportuno de la memoria; deben existir rutinas que prevengan la invasión por un programa nuevo de las posiciones de memoria ocupadas por un programa anterior.

- De dispositivos de Entrada/Salida: El conjunto de instrucciones que gestiona los recursos de E/S se llama iocs (input/output control system). Se hace sencilla la administración de los recursos E/S y se consigue una reducción en los programas de usuario.

- De procesos: Un proceso es un programa en ejecución, los cuales se pueden ejecutar concurrentemente, de manera que den la apariencia de que varios programas se ejecutan al mismo tiempo (concurrentemente <> uno tras otro).

4.5 - Rutinas para el Intérprete de órdenes (comandos)

El procesador de comandos pone en comunicación al usuario con el S.o., y su función será interpretar las órdenes introducidas por el usuario o contenidas en un archivo batch (*.bat) y procesarlas.

Es habitual que los intérpretes de comandos tengan un conjunto de rutinas llamadas órdenes internas, que facilitan el uso frecuente de las mismas (Ej.: copy).

Otras rutinas se llaman órdenes externas porque es necesario que cada una esté contenida en un archivo ejecutable (externo al I.C.).

4.6 - Otras rutinas (organización de la información)

Su función es la gestión de la información, la cual se organiza en archivos. Estas rutinas deben proporcionar el método para acceder a la información, así como rutinas que protejan el archivo.

Estas rutinas deben proporcionar métodos para asignar un espacio en el disco donde se pueda almacenar un archivo.

También deben permitir un sistema de catalogación de archivos mediante el uso de directorios.

5 - ESTRUCTURA DE LOS SS.OO.

Los SS.oo. deben de tener una serie de módulos que se encarguen de gestionar los diferentes elementos que intervienen en el funcionamiento de la computadora. Estos módulos son:

- Gestor de procesos: Tiene que ocuparse de la creación y eliminación de procesos (del S.o. y del usuario), gestión de los recursos que necesitan los procesos. Indica o gestiona el tiempo de proceso y proporciona mecanismos para la sincronización y comunicación entre procesos.

- Gestor de la memoria principal: En los S.o. monoprogramados se encarga de dividir la memoria en dos partes, la reservada al S.o. (en la parte baja de la memoria) y la correspondiente a los programas de usuario.

En los S.o. multiprogramados la zona para los programas de usuario debe ser dividida en porciones, una para cada programa o proceso, de forma que no se solapen unos a otros. Este gestor lleva el control de las zonas de memoria que están libres y las ocupadas, de forma que pueda saber si se pueden introducir nuevos procesos en los huecos libres y de cuanto espacio disponen.

- Gestor de la memoria secundaria: Esta memoria se compone principalmente de los discos o unidades de almacenamiento, cuya gestión se debe adaptar a la diferencia de velocidad entre el procesador y estos dispositivos. Esta gestor se encarga de organizar y gestionar la lista de espera en la cual se van acumulando las distintas peticiones de acceso a los discos por parte del procesador y los programas.

- Gestor de E/S: El S.o. debe proporcionar mecanismos para comunicarse, directa o indirectamente, con los dispositivos de E/S.

- Gestor de ficheros: Proporciona los servicios necesarios para poder trabajar con los archivos. Cuando un programa quiera acceder a un archivo no será necesario que el programador incorpore al programa las rutinas de acceso a los archivos, pues están ya incluidas en el S.o. Cuando varios programas quieren acceder simultáneamente al mismo dato del mismo archivo estas rutinas se encargarán de gestionar este acceso. Este gestor debe permitir la creación y eliminación de archivos y directorios, la catalogación de archivos y la manipulación de los archivos y su contenido.

- Sistemas de protección: Son mecanismos destinados a que el usuario o los programas no puedan interferir o modificar el funcionamiento normal del sistema, a que los procesos no se interfieran o que no se de el caso de que varios intenten escribir simultáneamente en el mismo registro del mismo archivo (aunque sí pueden leerlo), a la protección de acceso a archivos, y a impedir o permitir que determinados usuarios utilicen el sistema, ya sea con acceso total o restringido.

6 - CICLO DE INSTRUCCIÓN

Un programa consta de una serie de instrucciones y para que el programa se ejecute se deben cargar primero en la memoria principal, de donde son leídas por el procesador.

El proceso de ejecución de cada instrucción del programa se lleva a cabo en dos pasos:

- Leer la instrucción correspondiente de la memoria.

- Ejecutar la instrucción.

La ejecución de un programa completo se lleva a cabo repitiendo este proceso por cada instrucción que tenga el programa.

La ejecución de cada una de las instrucciones de un programa puede constar de varias operaciones consecutivas. A esta forma de procesamiento de la ejecución se le llama ciclo de instrucción:

Inicio del ciclo

Leer la instrucción siguiente

Ejecutar la instrucción

Si existen más instrucciones volver a Leer

Si no, terminar la ejecución

6.1 - Ejecución de una instrucción

Un registro del procesador es una pequeña memoria dentro del procesador donde se almacena la información necesaria para la ejecución de cada instrucción y que sólo contiene una instrucción al mismo tiempo.

En un procesador hay tres tipos de registro: el contador de programa (pc), el registro de instrucción (ir) y el acumulador (ac).

El contador de programa lleva el registro de la dirección de memoria donde se encuentra la instrucción que se debe ejecutar a continuación, por lo que durante el proceso de lectura indicará al procesador dónde está la instrucción que debe transferir al ir para su ejecución. Después se ejecuta la instrucción y el resultado se almacena en el ac, hasta que alguna de las órdenes indique que éste debe ser movido a la memoria principal para su almacenamiento o uso posterior.

Las instrucciones se clasifican en:

- Instrucción-procesador-memoria: Transfieren datos entre el procesador y la memoria.

- Instrucción-procesador-disp. de E/S: Transfieren información entre el procesador y los dispositivos de E/S.

- Instrucciones de tratamiento de datos: Operaciones lógicas.

- Instrucciones de control: Alteran el contenido del pc, de manera que cambian el orden de ejecución del programa.

La ejecución de una instrucción puede incluir una combinación de varias de estas instrucciones básicas, como por ejemplo una de acceso a la memoria para leer datos y otra lógica para operar con ellos.

Durante el ciclo de instrucción la CPU lee en el pc la dirección de memoria donde se encuentra la siguiente orden a procesar, va a la memoria principal y transfiere el contenido de la dirección donde se encuentra la instrucción al ir, incrementando a continuación el contador de programa para que la próxima vez que se acceda a él indique la posición de la instrucción siguiente. Posteriormente se ejecuta la instrucción y se repite el proceso.

Las instrucciones están formadas por 16 bits, de los cuales los 4 primeros indican el tipo de operación a realizar y los restantes especifican la dirección de memoria donde se encuentran o a donde se deben dirigir los datos a procesar.

6.2 - Relación entre el Ciclo de Instrucción y las Interrupciones.

Al producirse una interrupción se ejecuta la RSI correspondiente deteniendo el/los programa/s en ejecución y después, si es posible, se vuelven a cargar los programas anteriores y se continúa su ejecución.

Un programa de usuario no debe incluir instrucciones relacionadas con la gestión de interrupciones, ya que podría interferir con el S.o., que es el encargado de gestionarlas.

Para soportar el uso de las interrupciones es necesario añadir el ciclo de interrupción dentro del ciclo de instrucción, en el cual el procesador se encarga de verificar si se ha producido alguna interrupción cuando termina de ejecutar cada instrucción. Al hacerlo, si no hay ninguna interrupción pendiente, se continúa la ejecución del programa; si hay alguna, el procesador interrumpe el programa y ejecuta la RSI correspondiente.

En los dispositivos de E/S se pueden realizar transferencias de información directamente de la memoria a dichos dispositivos, lo cual, debido a la diferencia de velocidades entre el procesador y dichos dispositivos, es muy útil para no mantener al procesador inactivo durante estos procesos. Para ello se utilizan las interrupciones, ya que cuando el dispositivo ha finalizado su trabajo, utiliza una interrupción para indicar al procesador que se encuentra disponible.

Después el procesador, al terminar de ejecutar una instrucción, verifica la existencia de interrupciones activas y envía al dispositivo que las ha activado una señal para indicar que la solicitud de interrupción ha sido atendida.

Al iniciarse el procesamiento de una RSI, el procesador almacena la información necesaria relacionada con el/los programa/s activo/s para, si es posible, continuar con su ejecución más tarde; para ello se salva el pc y la palabra de estado en el llamado PSW (registro del procesador que almacena información se control: si se ejecuta en modo núcleo/usuario, etc.), el cual se almacena en la pila interna de la memoria principal; a continuación el procesador carga en el pc la dirección de memoria donde está almacenada la primera instrucción de la RSI correspondiente. En el caso de que haya varias rutinas para el tratamiento de una interrupción, el procesador deberá preguntar al dispositivo que ha generado la interrupción cuál de ellas es la que se debe ejecutar; para evitar esto, el dispositivo suele enviar junto a la interrupción un código que indica al procesador cual es la RSI adecuada. Una vez cargada la RSI, comienza un nuevo ciclo de instrucción para procesarla.

Una RSI puede contener instrucciones de acceso a otros dispositivos, los cuales pueden, a su vez, generar nuevas interrupciones, lo que hace que se repita este proceso.

Una vez terminada la ejecución de todas las RSI, se restaura el programa anterior de la pila junto con su PSW y, si es posible, se continúa su ejecución.

interrupciones múltiples

Se puede dar el caso de que se produzca una interrupción nueva mientras se está ejecutando una RSI, lo cual se puede tratar de dos formas:

- Deshabilitar las interrupciones durante la ejecución de una RSI y habilitarlas al terminar, de manera que todas la interrupciones que se generen durante la ejecución se vayan acumulando para ser atendidas al terminar de procesar la actual. Es el llamado tratamiento secuencial.

- Definir prioridades para la gestión de interrupciones para permitir la ejecución de varias interrupciones atendiendo a su prioridad de manera que las RSI que se estuvieran ejecutando anteriormente se almacenan en la pila interna como un programa normal, para continuar su ejecución más tarde.

7 - PROTECCIÓN DE LA INFORMACIÓN Y DEL SISTEMA INFORMÁTICO

Los S.o. deben dar soporte a mecanismos de protección y seguridad en torno a estos problemas:

7.1 - Control de acceso a los sistemas informáticos

Se utiliza para regular el acceso de los usuarios al sistema de modo que sus derechos de acceso sean totales, parciales o nulos. También se debe gestionar el acceso al sistema por parte de los procesos, ya que si no, si el usuario no puede acceder directamente a una parte del sistema, si podría crear un programa que accediera en su lugar.

7.2 - protección del sistema informático:

Protección de procesos E/S

Si un programa intenta acceder a un dispositivo E/S puede que el Hardware no lo detecte, produciéndose un error; pero si el acceso se produce a través del S.o., éste podrá controlar y detectar los errores, permitiendo el acceso sólo cuando éste se produzca libre de errores.

Para llevar a cabo estas operaciones el S.o. incluye una serie de instrucciones que deben ser ejecutadas en modo núcleo, por lo que si el procesador está en modo usuario se deberá generar una interrupción de Software para cambiar de modo: Cuando un programa solicita el acceso a un recurso, el S.o. se hace cargo de la solicitud, comprueba el estado del procesador y si no está en modo núcleo genera una interrupción.

Cuando se inicia el ordenador y se carga el S.o. en memoria, éste se ejecuta en modo núcleo, pero al comenzar a ejecutar programas, éste cambia a modo usuario.

Protección de la memoria

En un sistema multitarea se reservan porciones de memoria para cada programa en ejecución, ya sean del S.o. o del usuario. Podría suceder que un programa generase una instrucción de uso de una porción de la memoria que estuviese asignada o siendo usada por otro programa, lo que podría generar errores del Sistema, o incluso bloquearlo; debido a ello se protege el acceso a la memoria.

En sistemas monoprogramados hay sólo una zona reservada para el S.o. y el resto es para el uso del programa de usuario, ya que sólo se puede usar uno al mismo tiempo, y para realizar esto se almacena en un registro el valor de la memoria a partir del cual comienza la zona del sistema, de forma que se bloquean o modifican todas las direcciones inferiores a ese valor que generen los programas de usuario.

En los sistemas multiprogramados cada programa tiene asignado un rango de direcciones a las que puede acceder, limitado por dos registros, que almacenan, como en el caso anterior, las direcciones de memoria límites para ese programa.

Protección de la CPU

Un problema importante a tener en cuenta es que el programa en ejecución inicie un bucle sin fin, de forma que acapare todo el procesador, por lo que se debe asignar a cada programa un tiempo de ejecución, haciendo que cuando se agote el tiempo asignado a un programa se genere una interrupción que detiene la ejecución del programa dando paso al siguiente.

7.3 - Protección de la información

Política de la no compartición

Cada proceso tendrá el control exclusivo sobre los recursos que le han sido asignados.

Política de compartición de programas o archivos

Puede suceder que varios programas intenten el acceso simultáneo a un archivo, para lo que se puede cargar una copia del archivo en memoria para cada programa, solucionando el problema de la lectura, aunque esto no sea viable con muchos y muy grandes archivos. Para solucionar el problema de la escritura se puede asignar el derecho de escritura a uno sólo de los programas que lo soliciten.

Política de diseminación de la información

Creando clases de accesos y mediante permisos se permitirá el acceso de los usuarios o procesos a las clases de información.

Tema 2: Gestión de archivos.

1 - INTRODUCCIÓN

1.1 - Conceptos relacionados.

Al hablar de ficheros o archivos se suelen utilizar los siguientes términos:

- Campo: Es el elemento básico de información en un archivo. Puede almacenar un dato de un tipo concreto y tendrá una longitud determinada.

Existen campos de longitud fija, que almacenan un número constante de caracteres, y de longitud variable, en los que el final del dato está indicado con un carácter especial.

- Registro: Existen dos tipos: lógicos, que son conjuntos de campos que están relacionados y pueden ser de longitud fija o variable, y físicos o bloques, que son la unidad mínima de información que se puede transferir entre la memoria y un dispositivo y suelen ser los sectores de un disco.

El registro lógico se suele definir dentro de los programas, mientras que el físico suele ser un condicionante Hardware, aunque a veces se puede modificar mediante el Software.

En un registro físico se suelen almacenar varios registros lógicos; a esta operación se le llama bloqueo o empaquetamiento, de manera que el factor de bloqueo determina el nº de registros lógicos que serán colocados en uno físico. No todos los dispositivos admiten el empaquetamiento.

- Archivo: Es una colección de información relacionada que suele estar formada por un conjunto de registros y que puede ser tratada de forma independiente.

- Base de Datos: Es un conjunto o colección de información relacionada que, en lugar de en un archivo se encuentra distribuida en varios. En ella habrá algunos campos que relacionen los registros de los diferentes archivos.

1.2 - Organización de los discos.

Un disco es un soporte magnético usado para almacenar información, sobre todo la contenida en la memoria principal antes de apagar el ordenador.

Un disquete normal está formado por dos caras, cada una de las cuales tiene círculos concéntricos equidistantes llamados pistas, que a su vez se dividen en porciones llamadas sectores. Un sector es la unidad mínima de transferencia de información entre el disco y la memoria. Las caras, las pistas y los sectores se numeran empezando por el “0”. Una dirección de disquete se representa indicando el nº de cara, el nº de pista y el nº de sector.

Para los discos duros se usan los términos cabeza o head en lugar de cara y cilindro en lugar de pista; porque no todas las caras de un disco duro (con varios platos) pueden ser útiles, sino sólo las que tienen un cabezal de lectura/escritura, y porque todas las pistas con el mismo número de cada cara y cada plato del disco forman la figura de un cilindro, con el número correspondiente a dichas pistas (`cilindro 0' = todas las `pista 0' del disco). La dirección de acceso en un HDD (Hard Disk Device) se indica mediante el nº de cabeza, el nº de cilindro y el nº de sector.

En un HDD todas las cabezas se mueven simultáneamente y los platos (salvo cuando, si así se indica, estén inactivos durante mucho tiempo) están en constante movimiento, también simultáneo. En los disquetes el disco magnético sólo gira cuando se está accediendo a él.

El tamaño de todos los sectores de un disco es el mismo, pero varía de un disco a otro. Al referirse a las características de un disco duro se habla de nº de caras útiles o cabezas, nº de pistas o cilindros, nº de sectores/pista y tamaño del sector. Capacidad HDD = (nº cabezas) · (nº cilindros) · (nº sectores) · (tamaño-sector)

Cuando se quiere acceder a un sector determinado del disco se puede hacer referencia a la dirección mencionada anteriormente o mediante el nº relativo del sector, mediante el cual todos los sectores de un disco están numerados consecutivamente, empezando por la cabeza 0, cilindro 0 y continuando primero con las demás cabezas del mismo cilindro para a continuación pasar a los demás cilindros, numerándolos de igual forma.

Nº relativo = nº sector + (nº sectores/pista · (nº cabeza + (nº cilindro · nº pistas/cilindro)))

Los sectores de los discos duros suelen numerarse dentro de la misma pista siguiendo un factor de intercalación, que indica el nº de sectores que deben pasar por la cabeza lectora para encontrar el sector siguiente (el número de sectores que separan dos sectores en orden “consecutivo”) y que viene incluido en todos los discos duros y se asigna mediante el formateo físico (no el de “format”) que viene ya hecho de fábrica; Ej: 1:x, donde x indica el nº de sectores de separación.

Tiempos implicados en el acceso a los discos:

El tiempo de acceso a la información es el transcurrido desde que el S.o. notifica la dirección de acceso hasta que el dato está disponible para su uso por el sistema.

El S.o. notifica al disco el nº relativo del sector al que se quiere acceder, por lo que éste debe calcular la posición real del sector en el disco antes de comenzar su búsqueda.

El tiempo de acceso se obtienen al sumar el tiempo de posicionamiento (tiempo que tardan las cabezas en situarse sobre el cilindro especificado), el tiempo de latencia (tiempo que tarda el sector seleccionado en girar hasta situarse bajo la cabeza de lectura, y como este tiempo es variable se toma como referencia la mitad del periodo de giro del disco) y el tiempo de transferencia (tiempo que tarda la información contenida en el sector en ser transferida a la memoria principal). En el caso de que se quiera acceder a varios sectores consecutivos, el tiempo de acceso sólo acumula un tiempo de latencia, pero si estos sectores no son consecutivos y/o están en diferentes pistas, se añade un tiempo de latencia y/o posicionamiento por cada sector no consecutivo.

1.3 - Gestor del sistema de archivos.

El sistema de archivos está formado por una serie de estructuras que van a facilitar la organización de información en un soporte. Puede haber varias estructuras:

- Información del soporte: Guarda la información importante respecto al dispositivo de soporte.

- Directorio Raíz: Almacena archivos y subdirectorios.

- Tablas de asignación de archivos: Guardan un registro del uso del espacio de almacenamiento:

Ms-Dos fat

Os-Dos hpfs

Windows NT ntfs

Windows 9x vfat

CD-Rom cdfs

Tablas de espacio libre: Guarda un registro del espacio libre (Ej. Minix : Unix upsam).

El gestor del sistema de archivos es un programa encargado de gestionar la información contenida en un soporte, de gestionar las estructuras para el control de la información y de gestionar la información almacenada en dichas estructuras.

Principales objetivos de un sistema gestión de archivos:

- Dar servicio al usuario y los programas para almacenar información en los soportes y poder acceder y manipular esa información.

- Optimizar los tiempos de acceso a la información y los de respuesta.

- Ofrecer rutinas de acceso a los diferentes dispositivos.

- Mantener la seguridad en el sistema: para que los datos sigan siendo válidos y sin modificaciones, para que no se corrompan y para que no se pierda la información.

- Dar soporte a múltiples usuarios para que puedan realizar operaciones sobre el mismo soporte y/o archivo.

1.4 - Arquitectura de los gestores del sistema de archivos.

Hoja de figuras del tema 2. figura 2.1

Métodos de acceso

Al crear un programa hay que decidir la forma en la que se va a organizar la información en los archivos, la cual va a determinar los métodos que se podrán usar para acceder a ella. Estos métodos proporcionan una interfaz estándar entre las aplicaciones, los sistemas de archivos y el mismo soporte o archivo.

E/S Lógica

Esta estructura permite que los programas puedan acceder a los registros lógicos del archivo.

Hay SS.oo. que proporcionan los mecanismos de acceso (el mvs). En el Unix, Ms-Dos, Windows NT, etc. es el programador el que debe indicar dentro de su programa la forma de acceder a la información; esta se realizará a través de funciones y procedimientos aportados por los lenguajes de programación mediante bibliotecas (*.lib, *.dll), que constituyen la E/S lógica.

Supervisor básico de E/S

Planifica cuando se va a acceder a un archivo y selecciona los Búfers que se van a utilizar en el proceso.

Sistema básico de archivos

Almacena los registros lógicos o físicos en Búfers, consulta cual es el formato de los bloques físicos del soporte y transforma la información de los Búfers en registros físicos (empaquetamiento).

Gestores de dispositivos

Son programas que acceden a los dispositivos y los manejan y gestionan. Utilizan registros físicos; reciben bloques de registros físicos del sistema básico de archivos durante la escritura para transferirlos al soporte o recibe secuencias de Bits en la lectura de datos, transformándolos en registros físicos para pasarlo al s.b. de archivos. Para realizar estas operaciones de acceso a los dispositivos se usarán o activarán sus elementos mecánicos.

Estos gestores son los llamados drivers o controladores de dispositivos que, a veces, son proporcionados por el S.o., pero cuando van apareciendo nuevos soportes de Hardware es necesario actualizar los controladores del sistema mediante la instalación de otros nuevos que suelen estar incluidos en el Hardware.

Ejemplo: Proceso para acceder a un registro de un disco.

- Mediante los métodos de acceso y la E/S lógica el programa decide cual es el registro lógico que desea recibir, comunicándoselo al s.b. de archivos.

- El s.b. de archivos consulta el formato de los bloques físicos del soporte donde se va a leer la información requerida y calcula el registro físico donde se encuentra dicha información.

- Los controladores de dispositivos usan los mecanismos físicos oportunos para realizar la lectura del registro físico y la información obtenida es entregada al s.b. de archivos.

- Este último pregunta al supervisor básico en qué búfers se debe almacenar la información obtenida, que indica al s.b. de archivos los que debe utilizar, el cual pasa los datos a dichos búfers.

- El supervisor básico decide cuando podrá el programa acceder a los datos ya almacenados en los búfers que ha indicado, el cual, mediante los métodos de E/S lógica los transforma en registros lógicos con los que poder trabajar.

2 - ORGANIZACIÓN DE UN ARCHIVO

Indica la forma en la que están almacenados los registros dentro de un archivo y de ella dependen los métodos por los que se podrá acceder a la información.

Los mecanismos de acceso a los registros pueden ser proporcionados por el S.o.; si no, ha y que programarlos, ya que el S.o. no impone ni gestiona ningún tipo de organización o acceso a archivos.

2.1 - Pilas.

Es la forma más simple para organizar la información. Este método suele venir incorporado en el S.o. por su simplicidad, y en él el S.o. calcula el espacio necesario para almacenar la información y lo reserva en el soporte de destino. La información se va almacenando en el orden en el que llega sin una mejor ordenación posterior, de manera que se va formando un montículo. La longitud de los registros puede ser fija o variable y la búsqueda de información debe ser exhaustiva (hay que recorrer todo el archivo hasta llegar al registro deseado).

2.2 - Secuencial.

Es la más común y los registros pueden ser de longitud fija o variable, aunque suele ser fija. Es frecuente que uno de los campos del registro (si son de longitud fija) se use para identificar un registro, al que se llama campo clave, mediante el que se ordenan los registros dentro del archivo.

Se suele usar en aplicaciones que manejan grandes cantidades de datos.

Para modificar un archivo, al estar ordenado por el campo clave, es necesario leerlo entero, modificarlo, reordenarlo y volverlo a grabar ya ordenado.

Esta organización es válida tanto para cintas como para discos, pero si no se van a procesar todos los registros tiene un rendimiento muy bajo.

Hay variaciones de esta organización; una de ellas consiste en ir almacenando los nuevos registros en un archivo de pila separado del principal, por lo que periódicamente es necesario mezclar ambos archivos y reordenar el principal para actualizarlo o generarlo (la primara vez que se introducen datos).

2.3 - Secuencial indexada.

Frente a las organizaciones anteriores, esta destaca por el menor tiempo de acceso. Para llevarla a cabo se usan al menos tres archivos (figura 2.4): Un archivo de datos (que almacena los registros de forma secuencial), un archivo índice (para acceder rápidamente a las proximidades del archivo deseado) y un archivo de desbordamiento (overflow, que usa organización en pila y al cual se van agregando los nuevos registros).

Para grabar un registro, éste se almacena al final del archivo de desbordamiento y se enlaza mediante punteros con el registro cuya clave es la inmediatamente anterior (ya esté en este archivo o en el de datos).

Para leer un registro se busca en la tabla de índices la clave especificada y si ésta no se encuentra, accede al registro del archivo principal cuya clave, según el índice, es la inmediatamente anterior, y se empieza a buscar exhaustivamente a partir de ella; si el registro sigue sin aparecer, y mediante el puntero del registro inmediatamente anterior del archivo principal, se dirige la búsqueda al archivo de desbordamiento y se busca de nuevo exhaustivamente; si en este último archivo tampoco se encuentra se produce un mensaje de error indicando que el registro solicitado no existe.

Cada cierto tiempo es necesario mezclar y reordenar los archivos para que los registros del archivo auxiliar pasen a estar correctamente ubicados en el principal; todas estas modificaciones en el archivo principal deben ser actualizadas en el archivo índice.

Para poder acceder a los datos de los archivos basándose en diferentes tipos de información se usan varios campos claves para cada archivo, cada uno de los cuales tiene su propio archivo de índices en el que se recogen todos los registros del archivo principal, estando ordenados según el campo clave que corresponda. Todos estos archivos deben ser regenerados cada vez que se fusiona el archivo principal y el de desbordamiento.

3 - DIRECTORIOS DE archivos

Para la organización de los archivos se usan unas estructuras que permitan catalogar los archivos agrupándolos según algún tipo de condición, las cuales suelen recibir el nombre de directorios (carpetas, bibliotecas, etc.). Cada S.o. recoge una información concreta en los directorios; esta información se indica en la tabla 2.2 (página 6 de las figuras del tema 2).

Un directorio podrá tener uno o varios subdirectorios que a su vez también podrán tener uno o varios subdirectorios y así sucesivamente, todos dependiendo del directorio raíz.

El Gestor de archivos permite acceder a los directorios organizándolos según varios métodos mediante las Estructuras de los sistemas de archivos:

Organización a 1 nivel

Sólo existe un directorio, el raíz, por lo que todos los archivos se encuentran en él y dependen directamente de él al no existir subdirectorios. Este método tiene dos inconvenientes:

- Para acceder a un archivo hay que recorrer todo el directorio para encontrarlo.

- No se pueden almacenar dos archivos con el mismo nombre.

Organización a 2 niveles

Cada usuario dispone de un subdirectorio propio, en el que puede almacenar sus archivos, bajo el directorio raíz, que es común (El S.o. usaba este método admitiendo hasta 30 usuarios). Para dar de alta a un usuario se crea un subdirectorio y para darlo de baja, se borra.

Los inconvenientes son que un usuario sólo puede acceder a su directorio, guardando allí también sus aplicaciones, lo que ocupa mucho espacio de disco si se tienen muchas aplicaciones comunes a los usuarios; esto se puede solucionar guardando las aplicaciones comunes en un subdirectorio aparte y dando permisos de acceso a los usuarios para que puedan acceder también a ese directorio.

Organización de Árbol o Multinivel

Permite gestionar más de 2 niveles de anidamiento de subdirectorios como el Unix o el Ms-Dos.

Organización de Grafo Acíclico

La estructura de árbol no permite la compartición de archivos o directorios: la posibilidad de acceder a éstos desde distintos directorios. El sistema de gráfico acíclico si permite la compartición de elementos (figura 2.8 - Pag. 4 de las figuras del tema 2).

Si varias personas necesitan trabajar con un mismo archivo, en vez de tener que situarse en el directorio donde éste se encuentra, se pueden establecer vínculos con el directorio actual o personal de cada usuario de manera que parezca que el archivo está almacenado al mismo tiempo en todos los directorios vinculados.

Organización de Grafo General o Cíclico

Desde un directorio se puede acceder a otro directorio, desde el cual se puede acceder al original (fig. 2.9-Pag 4). Si se elimina el directorio original no se pierden necesariamente los datos contenidos en él porque puede que aún se conserve un enlace a dichos datos en otro directorio de la unidad.

Se consigue un nivel de compartición muy bueno, ya que varios usuarios pueden acceder a un mismo área de datos. También es posible restringir el acceso y la operatividad de cada usuario.

Los enlaces entre directorios se pueden hacer desde y hasta cualquier directorio (y nivel) del volumen.

Los inconvenientes son:

- Un directorio puede contener por error un enlace consigo mismo, ya sea directo o indirecto.

- Al hacer una copia de seguridad se crearía un bucle infinito porque los directorios enlazados cíclicamente aparecen como subdirectorios el uno del otro, de forma que el programa reconocería `infinitos' subdirectorios a copiar.

- Autoreferencia aislante:

Son bucles que se producen debido a la organización cíclica (un directorio accede a sí mismo). Para evitarlo existe la llamada recogida de residuos: Los programas, al acceder a los directorios, van marcando por donde han pasado, de forma que si vuelven al mismo lugar debido a un bucle, continúan por la siguiente rama de directorios sin procesar.

4 - MECANISMOS DE PROTECCIÓN. COMPARTICIÓN DE FICHEROS

Determinan si un usuario o programa van a poder acceder a un objeto o fichero.

4.1 - Tipos de protección:

Nominación

Un usuario puede acceder a todos los objetos de los que conozca su nombre y ruta de acceso (los no autorizados no pueden saber la ruta).

Contraseñas o palabras clave

Cada objeto tiene asociada una contraseña que bloquea el acceso al mismo. Pero si existen muchos objetos se acumulan demasiadas contraseñas distintas, lo cual se puede solucionar agrupando a los usuarios y a los archivos a los que tiene acceso en un directorio, al que se le asigna una única clave.

Listas de acceso (ACL)

Cada archivo tiene asociada un alista con los nombres de los usuarios que pueden acceder a él y los permisos con los que estos acceden (lectura, escritura, modificación, cambio de permisos, etc.).

Al igual que con las contraseñas, para evitar una gran cantidad de ACLs de gran tamaño, se agrupa a los usuarios en grupos, de manera que el las ACLs sólo se incluyen los nombres de los grupos que tienen acceso en lugar del de todos los usuarios; también se pueden agrupar los objetos en subdirectorios con una única ACL.

Para determinar los permisos que tiene cada usuario, al principio de cada objeto hay 3 bloques de bits que especifican, cada uno, los permisos que poseen `el propietario', `otros usuarios del mismo grupo que el propietario' y `el resto de los usuarios' respectivamente. Un ejemplo pueden ser los permisos R (lectura), W (escritura) y X (ejecución), y los bloques de permisos `RWX'/`R- -'/`- - -' (`propietario'/`grupo'/`otros').

4.2 - Derechos de acceso:

Determinan las acciones permitidas sobre un objeto (Ver Pag. 7/8 de las figuras del tema 2).

5 - AGRUPACIÓN DE REGISTROS

Cada vez que se accede a un dispositivo o soporte de almacenamiento secundario se lee o escribe una cantidad fija de información llamada registro o bloque físico o bloque, que está formado por una serie de sectores consecutivos (cuyo número es el mismo para todos los bloques de dicho volumen, pero distinto par cada volumen).

Los programas de usuario manejan la información agrupándola en registros lógicos. Al grabar información en un soporte se deben agrupar los registros lógicos dentro de registros físicos (empaquetamiento), llamando factor de bloqueo al nº de registros lógicos que caben en uno físico.

Al leer la información de un soporte se lee el bloque (físico) completo, que posteriormente se transforma en registros lógicos.

Cuanto mayor sea el tamaño de los bloques del soporte, más rápido se realizarán las operaciones de lectura y escritura.

5.1 - Agrupación de registros lógicos en físicos.

Existen cuatro métodos de empaquetamiento; los tres primeros están en la página 5 de las figuras del tema 2:

Bloques de longitud variable por tramos

Los registros lógicos son de longitud variable y se agrupan uno al continuación del otro sin dejar espacios sin utilizar. Si un registro lógico no cabe en el bloque en el que está siendo almacenado, se divide en segmentos que quepan en el mismo sin dejar espacios sin utilizar y se almacenan en bloques libres consecutivos; después se utilizan punteros para enlazar el final de cada fragmento con el bloque donde se encuentra el principio del siguiente.

Bloques de longitud variable sin tramos

Los registros (lógicos) también son de longitud variable y se agrupan tantos como quepan en cada bloque, pero sin fragmentarlos, de forma que si un registro no cabe completamente al final de un bloque, ese espacio queda sin usar y el registro se escribe en el siguiente bloque libre.

Bloques fijos sin tramos

La longitud de los registros es siempre la misma, por lo que el factor de bloqueo es constante para todos los bloques del soporte. Los registros que no caben en un bloque no se dividen, sino que se escriben en el siguiente bloque libre.

Bloques fijos con tramos

Los registros son todos iguales, pero cuando no caben en un bloque se fragmentan y se continúan escribiendo en el siguiente bloque libre.

Los registros lógicos que están agrupados dentro de un mismo bloque o registro físico (Clúster) deben pertenecer a un mismo archivo: si al principio de un bloque vacío se graban los últimos bytes de un archivo, el resto del bloque quedará sin utilizar sea cual sea su tamaño. Debido a esto, si los bloques son muy grandes se desperdiciará mucho espacio de almacenamiento; a este desperdicio se le llama fragmentación interna. Un soporte con bloques de tamaño aprox. de 3 Kb se considera que tiene un buen rendimiento respecto al aprovechamiento de espacio.

6 - Gestión del almacenamiento secunadrio

El subsistema de gestión de archivos del S.o. será el responsable de la asignación de espacio de disco a los archivos y de la gestión y control del espacio libre disponible.

6.1 - Control de espacio disponible

Se lleva a cabo mediante las `listas de espacio libre' o las `tablas de asignación de disco (no de archivos)'. Cuando se graba un archivo al disco el S.o. consulta estas tablas para saber dónde hay espacio libre para guardarlo.

A veces estas `listas' no pueden recibir ese nombre debido a su estructura; las hay de diferentes tipos:

Mapas de Bits

Se utiliza un vector o Array cuyos componentes son bits que equivalen, por orden, a cada uno de los clústers del soporte respectivamente. De esta manera, cuando el bit está a 0, indica que el cluster equivalente a dicho bit está libre, y por lo tanto cuando está a 1, es que el bloque está ocupado. Este método es sencillo de implementar y muy útil si la lista se mantiene siempre en la memoria y se va grabando con frecuencia para evitar posibles pérdidas de datos. Este es el método utilizado por el S.o. minix.

Listas enlazadas de Bloques

Esto no es una lista, sino que es un `registro' que almacena la posición del primer bloque libre, y este a su vez tiene almacenada la posición del siguiente bloque libre y así sucesivamente; de forma que para saber dónde se encuentra el espacio libre el S.o. debe ir recorriendo bloque por bloque hasta llegar al final.

También existen muchas variaciones, por ejemplo: en los bloques libres se almacenan punteros a varios bloques libres, en vez de sólo a uno, y esto se repite sucesivamente en forma de árbol; etc.

Listas indexadas

Consiste en mantener una lista de entradas cuyo contenido serán punteros que señalen a grupos de bloques libres consecutivos, indicando también el nº de bloques libres que constituyen el grupo. Ejemplo: Los elementos de la lista son `XXXX-Y', donde `XXXX' es el puntero que indica el primer bloque libre del grupo e `Y' indica el nº de bloques que forman el grupo; existen variaciones respecto a lo que indica `Y', ya que puede decir: el nº total de bloques libres consecutivos, el nº de bloques libres consecutivos a partir del indicado por el puntero, etc.

6.2 - Métodos para la asignación de espacio a archivos

Continua o Contigua

Se tiene que estimar con antelación cuanto espacio ocupará el archivo en el disco ya que se grabará como una sola unidad (todos los bloques que ocupa son consecutivos, por lo que el archivo no se fragmenta).

El problema es que es difícil saber cuando ocupará el archivo, y además el archivo puede aumentar luego de tamaño al añadirle más datos. Si se requiere más espacio y no hay bloques libres a continuación se puede mostrar un mensaje de error indicando que no hay más espacio par almacenar el archivo; pero este error también puede ser gestionado por el S.o. reubicándolo en el primer hueco libre en el que quepa.

Para seleccionar el hueco libre que se va asignar para almacenar un archivo se puede usar uno de estos métodos:

- Primer ajuste: Se busca el primer espacio libre donde quepa el archivo comenzando por el principio de la tabla de espacio libre. Con este método suelen quedar espacios muy pequeños sin usar, pero se considera un método rápido.

- Siguiente ajuste: (o también `ajuste más cercano') Es similar al anterior sólo que la búsqueda comienza en la parte de la tabla de espacio libre en la que terminó la búsqueda anterior.

- Mejor ajuste: El archivo se colocará en el hueco más pequeño que se encuentre en el soporte donde quepa el archivo. Para usar esta método es interesante y muy útil mantener la tabla de espacio libre ordenada según el tamaño de los grupos de bloques libres. Con este método se dejan espacios libres aún más pequeños que con los métodos anteriores y el acceso es más lento.

- Peor ajuste: Al revés que el anterior, ya que el archivo se almacena en el mayor hueco posible, haciendo que desaparezcan los huecos libres de gran tamaño e imposibilitando el almacenamiento posterior de archivos de gran tamaño.

Con la asignación contigua proliferan pequeños huecos libres en los que no se suelen poder almacenar archivos debido a que éstos suelen necesitar más bloques contiguos; a este desperdicio de espacio se le llama fragmentación externa, la cual se puede solucionar mediante la compactación o defragmentación de archivos, que consiste en reubicar estos moviéndolos hacia el principio de la unidad, de forma que se ocupen los pequeños grupos de bloques libres entre los archivos y se liberen la misma cantidad de bloques al final de la unidad; de esta manera todo el espacio libre forma un solo grupo de bloques al final de la unidad en el que se pueden aprovechar todos estos bloques.

Encadenada o enlazada

En este método los archivos no se tienen que almacenar en bloques contiguos, por lo que no es necesario buscar un espacio libre suficiente para que quepa todo el archivo y se pueden aprovechar todos los bloques libres del soporte (evitando la fragmentación externa) por muy pequeños que sean los grupos de bloques libres.

Este método consiste en que en la entrada del directorio donde se encuentra ubicado el archivo existe un puntero que señala al primer bloque del archivo y, en éste, hay otro puntero que señala al siguiente bloque del archivo y así sucesivamente hasta el final del archivo; de esta manera todos los bloques que forman un archivo quedan `encadenados' o `enlazados' entre sí.

Los inconvenientes que tiene este método de almacenamiento es que si uno de los sectores intermedios del archivo se daña, se pierde el puntero que hay almacenado en éste, de forma que al leer el archivo se puede llegar hasta él pero no se puede continuar hasta el final del archivo ya que la cadena se interrumpe. Para evitar esto se hace uso de la lista doblemente enlazada, en la que la entrada de directorio contiene dos punteros que apuntan respectivamente al primer y al último bloque que forma el archivo, al igual que cada bloque del archivo, que contiene un puntero al bloque anterior y posterior a él; de manera que si un sector intermedio resulta dañado, se comienza a leer el archivo desde el principio y, cuando se llega al sector dañado, se continúa la lectura comenzando desde el final y hasta llegar de nuevo al sector dañado (sin embargo si dos o más sectores de un archivo resultan dañados, sólo se podrá recuperar la información que se encuentre antes del primer bloque dañado y después de último bloque dañado).

Este método no permite el acceso directo a los bloques intermedios del archivo, ya que hay que comenzar desde uno de los extremos y seguir la cadena de bloques para saber cual es la ubicación del bloque al que se desea acceder.

Asociación indexada

Este método permite el acceso directo a los bloques intermedios del archivo basándose en el uso de un puntero en la entrada del directorio que señala hacia un bloque índice que contiene más punteros a los bloques de datos del archivo. Si el bloque es pequeño (tamaño físico) se puede recorrer rápidamente desperdiciando menos espacio que si el bloque es grande (evitando fragmentación interna).

- Índices multinivel: Si el bloque índice es demasiado pequeño, el último de sus punteros se usa para apuntar a un segundo bloque de índices como el anterior y así sucesivamente (`índices encadenados'). También una variante de este método es que el primer bloque índice no apunta a bloques de datos, sino a bloques índice secundarios que sí apuntan a bloques de datos del archivo (`índices “indexados” ').

- Índices combinados: Este es el sistema usado por el S.o. UNIX, en el cual en la entrada de directorio se almacena solamente el nombre del archivo y un puntero que apunta a una estructura de datos que contiene toda la información del archivo (atributos, propietario, derechos, etc.) así como una lista de punteros llamada nodo-i que se usa de la siguiente manera (UNIX usa índices de 256 punteros, como aquí):

- Hay `X' punteros que apuntan a bloques de datos (acceso rápido a archivos pequeños).

- El puntero nº `X+1' señala a un grupo índice cuyos punteros apuntan a otros 256 bloques de datos (acceso `rápido' a archivos medianos).

- El puntero nº `X+2' señala a otro bloque índice que apunta a otros 256 bloques índice, los cuales apuntan a 256 bloques de datos (en total 65536 bloques de datos, para almacenar archivos grandes).

- El puntero nº `X+3' es igual que el anterior pero el último nivel de punteros apunta a 256 índices más cada uno y estos a 256 bloques de datos (16,7 millones de bloques de datos, para archivos muy grandes).

Este método puede incluir más o menos punteros por bloque y más o menos niveles de indexación; UNIX sólo usa los tres niveles de indexación con 256 punteros, que le permite gestionar archivos que ocupan hasta 17*106 bloques (aprox. 48 Gb = 52·109 bytes, usando bloques de 3 Kb).

Tema 3: Gestión y administración de procesos.

1 - Procesos.

Un proceso es, básicamente, un programa en ejecución. Más exactamente un proceso está formado por un programa en ejecución, los datos asociados a dicho programa y un contexto de ejecución del programa o proceso, que incluye información necesaria para su ejecución.

La imagen de un proceso está formada por un programa en ejecución, datos para las variable del programa, la porción necesaria para almacenar los programas necesarios y sus datos, y una serie de atributos para que el S.o. controle el proceso llamado PCB (Process Control Block)

PCB:

Contiene la siguiente información (dependiendo de cada S.o.):

- Pid: Identificador de proceso; es un nº único que se le asigna a un proceso al iniciar su ejecución.

- Uid: Identificador del propietario/usuario del proceso.

- Ppid: Identificador del proceso padre del proceso actual; a partir de un proceso se pueden crear varios: esto sirve para, al cerrar un proceso, volver al proceso anterior/padre.

- Datos contenidos en los Registros del Procesador: Punteros y resultados intermedios de un proceso que el procesador almacena para poder operar con ellos.

- Pila: Hay una o varias, que sirven para llevar el control de las llamadas a procedimientos.

- Información de Planificación: Estado del proceso, su prioridad, el tiempo de cpu que tiene asignado, y la parte de ese tiempo que haya consumido o el tiempo que lleva esperando a que se le conceda el uso de la cpu, etc.

- Privilegios: Derechos de los que goza el proceso para acceder a los recursos, etc.

El S.o. se encarga de la gestión de los procesos en la que, según éste haya sido diseñado, pueden intervenir cuatro de sus componentes:

- Planificador a Largo plazo o de Alto nivel: Determina que procesos son admitidos por el sistema. Se ejecuta cada mucho tiempo, por lo que su velocidad de ejecución no es un factor determinante en el rendimiento del sistema.

- Planificador a Corto plazo o de Bajo nivel: Determina cuál es el proceso que se va a ejecutar a continuación. Es muy importante que su ejecución sea rápida puesto que se está ejecutando continuamente.

- Planificador a Medio plazo o nivel Intermedio: A veces resulta necesario liberar espacio n la memoria principal para la ejecución de un proceso, por lo que alguno de los procesos en memoria que estén inactivos o en espera pueden ser descargados de la memoria principal y almacenados en la memoria secundaria (habitualmente un disco), dejando libre el espacio de memoria que ocupaban, para poder ser cargados de nuevo en memoria cuando dicho espacio ya no sea necesario y esté libre, para poder continuar con su ejecución; la función de este planificador es seleccionar el o los procesos que deben ser trasladados a la memoria secundaria para liberar la cantidad de memoria requerida por el sistema. A este proceso se le llama swapping o suspensión temporal del proceso.

- Dispatcher: También llamado despachador o expendedor; se encarga de ceder el control de la cpu al proceso que haya sido designado para ello por el planificador a corto plazo; también se encarga de restaurar los registros del procesador que requiera su ejecución, así como el resto del pcb de dicho proceso. Este módulo del S.o. es también el encargado de cambiar el modo de trabajo del procesador (núcleo o usuario) y de acceder a la dirección de memoria donde se encuentra la siguiente instrucción del proceso a ejecutar y trasladar ésta dirección al registro pc del procesador.

2 - Procesos e hilos (threads).

Tradicionalmente el término proceso englobaba la unidad de propiedad de recursos (recursos que necesita usar el proceso) y la unidad de planificación (información que se necesita para poder ejecutar un proceso: prioridad, tiempo de ejecución, etc.).

Con la incorporación del término hilo o thread se hace distinción entre las dos unidades anteriores: proceso (unidad de propiedad de recursos) e hilo (unidad de planificación).

Cada hilo tendrá un estado de ejecución, un contexto de procesador (que se grabará cuando no se esté ejecutando), una pila (para controlar las llamadas a procedimientos) e información de control para el acceso a la memoria.

Mediante el uso de los hilos se pretende aumentar el rendimiento ya que el tiempo que se tarda en cambiar de un hilo a otro es menor del que se tarda en cambiar de un proceso a otro, y un hilo se puede crear y eliminar en menos tiempo que un proceso.

Los hilos de un mismo proceso comparten recursos (direcciones de memoria, archivos, etc.) ya que al poseer el proceso la unidad de propiedad de recursos, implica que cuando un hilo necesite usar algún recurso, el uso del mismo se le concederá a su proceso padre, el cual se lo cederá los hilos correspondientes. Al compartir los hilos de un proceso la memoria asignada al proceso, éstos se pueden comunicar entre sí sin necesidad de usar el núcleo del sistema, ya que cuando uno de ellos se ejecuta puede dejar un mensaje para otro hilo en una sección de la memoria que comparten, de modo que cuando se ejecuta el otro hilo, éste sólo tiene que leer ese mensaje almacenado en la memoria.

En un sistema multiproceso o multiprocesador se pueden ejecutar simultáneamente varios hilos de un mismo proceso, uno en cada procesador, lo que aumenta considerablemente el rendimiento del sistema y la velocidad de ejecución del proceso.

Como la unidad de planificación está contenida en el hilo, la mayor parte de la información sobre el estado de la ejecución se almacena a nivel de hilos.

Hay algunos eventos que repercuten en la ejecución de un proceso, mientras que otros afectan sólo a algunos hilos en concreto.

2.1 - Creación de un proceso.

Cuando se crea un proceso y el planificador a largo plazo lo acepta, se crea el pcb de dicho proceso y se reserva el espacio de memoria que éste va a usar para su ejecución.

Las razones por las que se puede crear un proceso están en la s Figuras del Tema 3, figura 3.1 (pag. 1).

2.2 - Terminación de un proceso.

Ver las Figuras del Tema 3, figura 3.1 (pag. 1).

3 - Estados de un proceso.

Al listado de instrucciones de un programa que se ejecutan en secuencia se le llama traza de un proceso. En un determinado momento cada uno de los procesos activos en un sistema se encontrarán en un determinado estado. Cuando se cambia el estado de un proceso se cambia el estado de sus hilos.

3.1 - Modelo de 2 estados.

En este modelo los procesos tienen dos estados posibles: `ejecución' y `no ejecución'. Cuando se crea un proceso, éste se crea en el estado de no ejecución hasta que el proceso que se está ejecutando actualmente pase a estado de `no ejecución', entonces el nuevo proceso o el siguiente designado por el planificador a corto plazo podrá pasar a estado de ejecución y comenzar a ejecutarse.

Antes de pasar un proceso al estado de `no ejecución' se debe guardar toda la información relacionada con su ejecución (pcb) en una cola para su posterior ejecución cuando le vuelva a legar el turno.

A la operación de pasar del estado de `no ejecución' al de `ejecución' se le llama `expedir', `despachar' o `cursar', y a la operación contraria, `pausa' o `detener'.

La cola de espera se suele implementar mediante los pcb's enlazándolos mediante punteros.

Pueden existir varias colas de espera y en un sistema multiprocesador se pueden tener varios procesos en estado de ejecución.

3.2 - Modelo de 7 estados.

La relación de los estados y su definición está en las Figuras del Tema 3, figura 3.5 (pag. 3).

Las distintas transiciones entre estados y sus descripciones están en las Figuras 3.5 (pag. 3) y 3.7 (pags. 4,5 y 6).

3.3 - Modelo de 5 estados.

Este modelo es igual que el modelo de 7 estados con la excepción de los dos estados `suspendidos', lo que supone que los SS.oo. que lo usen no podrán hacer volcados de procesos al disco para liberar memoria principal.

4 - Control de procesos.

4.1 - Modos de ejecución.

El procesador tiene dos estados: el modo núcleo (también `supervisor' o `privilegiado') en el cual se tiene el control total del sistema y en el cual trabaja el S.o. y se ejecutan todas sus tareas, y el modo usuario que es en el que trabajan el resto de los programas y en el que se tiene un acceso restringido a los recursos.

En el registro de la `palabra de estado' del procesador (pwd) uno de los bits que contiene es el que informa al de cual es el modo en el que se encuentra el procesador.

4.2 - Creación de procesos.

Los procesos son creados por el S.o. siguiendo estos pasos:

1 - Se asigna un identificador único al proceso, el cual se almacena una tabla donde están registrados todos los procesos activos.

2 - Se reserva la memoria requerida por el proceso y se asigna al mismo.

3 - Se crea e inicia el pcb.

4 - Se establecen los enlaces adecuados (si el S.o. mantiene una tabla de planificación).

Planteamientos en cuanto a la ejecución del S.o.

- Enfoque Tradicional: Se ejecuta el S.o. fuera de cualquier proceso, en modo privilegiado, de forma separada del resto de procesos (de usuario).

Para el proceso de usuario que se interrumpa se tendrá que saber el contexto del proceso.

El S.o. tendrá su propia región de memoria.

- Ejecutar un conjunto de rutinas del S.o. dentro de un proceso de usuario: De esta manera puede proceder que haya varias imágenes de una misma rutina del S.o. en la memoria si hay varios procesos que llaman a la misma rutina, se carga en la memoria varias veces para poder ejecutarla en cada proceso.

- El S.o. se implementa como un conjunto de procesos: Con este planteamiento las funciones del S.o. que se ejecutan formarán cada una un proceso, aunque pueda haber una parte del núcleo que se ejecute fuera.

4.3 - Cambio de Proceso y cambio de Contexto.

Un proceso puede ser interrumpido de manera que el S.o. pondrá a otro proceso en estado de ejecución. A esto se le llama cambio de proceso, el cual implica un cambio en el contexto.

Interrupción

Salvar el contexto del programa que se esté ejecutando.

Se asigna al contador de programa la dirección de memoria de la siguiente instrucción a ejecutar, que será la de la rsi correspondiente.

Se almacena el contexto del programa con la información necesaria para poder continuar el proceso interrumpido. Este conjunto de información se guarda en el pcb.

Puede suceder que cuando se produce una interrupción se produzca un cambio de proceso o no. Si no se cambia el proceso sí puede cambiar el contexto. (Cambio de proceso cambio de contexto).

Clasificación de interrupciones

- Interrupción de reloj: A un proceso se la asigna una cantidad de tiempo de ejecución, cuando éste transcurre se genera una interrupción de reloj, de manera que se detiene el proceso para que pueda ser ejecutado otro.

- Interrupción de E/S: Cuando finaliza una operación de Entrada/Salida se genera una interrupción de E/S para informar de que se ha terminado ese proceso. De esta manera los procesos que estaban bloqueados en espera de dicha operación de E/S se preparan para continuar su ejecución.

- Fallo de página: Se produce cuando un proceso intenta acceder a un dato que no se encuentra en la memoria principal. Esta interrupción permite que el dato pase de la memoria secundaria a la principal (Entrada de datos).

- Tipo: Interrupción generada por una condición de error. P.ej., cuando se accede a un archivo al que está prohibido el acceso. El S.o. mide la gravedad del error y actúa en consecuencia.

- Llamada al supervisor: Cuando se quiere ejecutar una función del S.o. de manera que el proceso que genera la llamada quede bloqueado, a la espera.

Pasos involucrados en el cambio de un proceso

1. Salvar el contexto del proceso que actualmente se está ejecutando.

2. Cambiar el estado del proceso, que se encontrará en estado de ejecución, al estado que corresponda.

3. Colocar el PCB del proceso en la cola de espera adecuada.

4. Seleccionar otro proceso para su ejecución.

5. Cambiar al de ejecución el estado del proceso seleccionado, cambio que se registra en el PCB del proceso.

6. Retirar de la cola de espera el PCB del proceso que va a ser ejecutado.

7. Actualizar las estructuras de datos que intervengan en la gestión de la memoria.

8. Restaurar el contexto del proceso que se va a ejecutar al estado en el que se encontraba cuando se interrumpió su ejecución.

5 - Tipos de planificación.

Figura 3.9, página 6 de las figuras del Tema 3 (corto, medio y a largo plazo).

5.1 - Criterios de planificación.

El objetivo principal de la planificación a corto plazo es repartir el tiempo del procesador da manera que se optimice el rendimiento del sistema o de algunos de sus puntos.

Los criterios de planificación indican el pto. Del sistema observado para aumentar su rendimiento (Figura 3.10, páginas 7 y 8 de las figuras del Tema 3).

Los criterios de planificación son dependientes unos de otros.

6 - algoritmos de planificación.

Hay algoritmos apropiativos y no apropiativos.

No Apropiativos

Cuando un proceso se está ejecutando, éste continúa en ejecución hasta que termine o se bloquee en espera de una operación de E/S o por la solicitud de un servicio del S.o. Se les llama algoritmos expulsores.

Apropiativos

Cuando un algoritmo se está ejecutando, éste puede ser interrumpido para que se procese otro. El proceso interrumpido pasa a la cola de espera. Se les llama algoritmos no expulsores.

Esta política apropiativa de estos algoritmos permite optimizar el rendimiento y algunos de los criterios anteriores.

Están basados en el tiempo de retorno: el proceso se carga en memoria hasta que se acaba de ejecutar.

6.1 - Planificación por prioridades.

Cada proceso tendrá asignada una prioridad. El planificador seleccionará para su ejecución a los procesos con prioridad mayor.

De igual manera que puede haber varias colas de procesos listos, puede haber varias colas de procesos bloqueados (cola de espera por nivel de prioridad).

Cuando se crea un proceso, pasa a la cola de espera de listos.

6.2 - FIFO o FCFS, y LIFO.

First_In-First_Out o First_Come-First_Served. Es una cola de espera en la que los procesos se van acumulando al final según van llegando, mientras que el proceso más antiguo es el primero en salir de ella para su ejecución: Se va atendiendo a los primeros por orden de llegada mientras los nuevos van esperando al final de la cola.

Last_In-First_Out. Es una pila de espera que funciona al revés que el FIFO, ya que los procesos se van acumulando según llegan pero el que se selecciona para su ejecución es siempre el último que ha llegado, de manera que si llegan a la cola demasiados procesos nuevos, el primero que llegó no se puede volver a ejecutar hasta que no se hayan terminado de ejecutar los procesos posteriores.

6.3 - Turno rotatorio o Round Robind (rr).

Es un sistema apropiativo. Cada proceso recibe una fracción de tiempo de procesamiento o quanto para su ejecución, de manera que cuando se está ejecutando y excede el tiempo que se le ha concedido, se genera una interrupción de reloj, mediante la cual la ejecución del proceso se detiene y se coloca al proceso al final de la cola de procesos `listos' para su posterior ejecución, seleccionándose a continuación un nuevo proceso de la cola para su ejecución.

Si un proceso finaliza su ejecución antes de que termine el tiempo que se le ha asignado, éste cede el control, seleccionándose un nuevo proceso de la cola para su ejecución.

Con el RoundRobind, cuando un proceso inicia una operación de E/S, éste es penalizado respecto de los procesos que no realizan E/S.

Virtual Round Robind (vrr).

Este sistema va a permitir solucionar el problema del RoundRobind en relación al favorecimiento que éste realiza con los procesos orientados a la CPU frente a los procesos orientados a las operaciones de E/S.

El vrr utiliza una cola auxiliar de espera que incluye aquellos procesos que no hayan consumido completamente el quanto que tenían asignados al verse detenidos por una operación de E/S. Esta cola tiene prioridad respecto a la principal y a los procesos almacenados en ella se les asigna temporalmente (hasta que se ejecuten de nuevo) un nuevo quanto, que es el tiempo del quanto principal que no llegaron a consumir antes de ser bloqueados (el 2º quanto es el quanto principal menos el tiempo del mismo que ya haya sido consumido por el proceso).

De esta manera la secuencia que se sigue tras interrumpir un proceso por cualquiera de las tres razones (agotar el tiempo, fin del proceso o bloqueo por E/S) es:

- Interrupción del proceso.

- Suspensión (1ª cola de espera) o bloqueo(cola auxiliar) del proceso (si no ha finalizado).

- Seleccionar un proceso para su ejecución de la cola auxiliar.

- Si no hay procesos en la cola auxiliar o aún están bloqueados, seleccionar un proceso de la cola principal.

6.4 - Algoritmos del planificador a corto plazo.

Ti: Tiempo (instante) de llega de un proceso.

Ts: Tiempo de ejecución o de servicio de un proceso.

Tf: Instante de finalización de un proceso.

Tq: Tiempo que un proceso está en el sistema (tiempo de retorno). Tq = Tf - Ti.

Tq/Ts: Retardo relativo de tiempo de un proceso (tiempo de retorno normalizado).

Primero el proceso más breve (SPN ó SJF - ShortestProcessNext ó ShortestJobFirst).

Este es un planificador no apropiativo. El proceso con tiempo de ejecución más corto es el que se selecciona para ser ejecutado. Los inconvenientes son que hay que saber a priori cuánto tiempo se va a estar ejecutando un proceso y que los procesos muy largos pueden sufrir inanición, ya que siempre habrá un proceso más corto esperando para ser ejecutado.

No es un método interesante para sistemas de tiempo compartido.

Menor tiempo restante (SRT - ShortestRemainingTime).

Este procedimiento es apropiativo. Cuando llega un nuevo proceso, éste planificador se activa y comprueba a que proceso le queda menor tiempo de ejecución (de los de la cola de espera, el nuevo y el que está en ejecución), asignándole la ejecución al más corto (que puede ser el que ya está en ejecución, por lo que no hay cambios de proceso y el nuevo pasa a la cola de espera).

Mayor índice de respuesta (HRRN - HigherResponseRateNext).

Funciona de manera parecida a los dos anteriores, pero intentando corregirlos, siendo el índice de respuesta el tiempo de espera + el tiempo de servicio /tiempo de servicio (RR= (Te+Ts)/ Ts).

Este algoritmo tiende a favorecer a los procesos cortos y a los que llevan más tiempo en espera.

Colas multinivel.

En cada cola se puede usar un algoritmo de selección distinto. Existe además un planificador que decide cuál es la cola de la que se debe seleccionar el siguiente proceso, el cual suele ser apropiativo y de prioridad fija.

Colas multinivel con Realimentación (FB - Feedback).

En los modelos SPN, SRT y HRRN es necesario conocer el tiempo de servicio de los procesos y para ello se puede consultar el tiempo real que ya han consumido.

Este planificador es apropiativo y se compone de varias colas de espera, cada una de las cuales tendrá una prioridad asignada (la 1ª es la más alta y la última la más baja).

Cuando llega un proceso nuevo, este se coloca en la 1ª cola y, tras ser ejecutado, en lugar de volver a la cola en la que estaba se almacena el la siguiente cola (con menor prioridad), repitiéndose este proceso si fuera necesario hasta que llega a la última cola, en la que permanece, por muchas veces que se ejecute, hasta que el proceso finalice.

Este método favorece a los procesos nuevos y a los cortos.

En todas las colas se suele usar un algoritmo FIFO para seleccionar el proceso siguiente, excepto en la última cola, en la que se suele usar un FIFO o un RoundRobind.

7 - Tiempo de respuesta.

Se distinguen dos tiempos de respuesta; cuando se utiliza simplemente el término “tiempo de respuesta” se hace referencia al tiempo de respuesta del sistema.

Tiempo de respuesta del sistema.

Es el tiempo que tarda el sistema en responder a una solicitud. Ésta solicitud pide al sistema que realice una determinada tarea. En sistemas interactivos es el usuario quien realiza la solicitud y entonces se puede decir que es el tiempo que transcurre desde que el usuario indica la instrucción hasta que comienza la visualización de resultados.

Tiempo de respuesta del usuario.

Intervalo de tiempo transcurrido desde que el usuario recibe una respuesta a una solicitud y comienza a escribir una nueva solicitud. También se llama tiempo para pensar.

8 - evaulación de algoritmos.

La evaluación de los algoritmos permitirá seleccionar el que más se adapte a las necesidades. Formas de comparación de algoritmos:

Analítica:

Se prueba una algoritmo concreto con una carga de trabajo. Este método tiene que producir un número o una fórmula que indicará las prestaciones del algoritmo para esa carga. No suele ser muy viable este método ya que en un entorno real hay factores adicionales o externos al algoritmo que pueden influir en los resultados (por ejemplo si el algoritmo se apoya en el disco y éste está muy fragmentado, el acceso a disco será más lento, influyendo en los resultados).

Simulación:

Se hace un programa que simule el comportamiento del sistema. Por ejemplo en el sistema se utiliza un reloj y según la frecuencia de los pulsos producidos por dicho reloj se ejecutan los procesos. En éste método se simula mediante software el comportamiento del reloj. En general por éste método se simulan los principales componentes del sistema mediante estructuras y se prueba el algoritmo con el sistema simulado. Las simulaciones suelen ser caras y necesitan normalmente mucho tiempo de ordenador.

implementación:

Consiste en crear y codificar el algoritmo y probarlo. Se trata pues del algoritmo real utilizado también en una situación también real. Según los resultados que se vayan consiguiendo se irá modificando el algoritmo. Es el método más fiable pero no suele ser bien recibido. Imagine un usuario al cual le instalan un sistema en el cual se están realizando innovaciones o correcciones constantemente. El usuario será reacio a los cambios ya que le supondrá un esfuerzo de aprendizaje cada vez que se realice una modificación.

SISTEMAS OPERATIVOS I - upsam (1999-2000) - EM12

Primer Cuatrimestre

24

25