miércoles, 22 de octubre de 2014

Estructura de los Sistemas Operativos

  • Estructura Monolítica o Modular 
Es la estructura de los primeros sistemas operativos constituidos fundamentalmente por un solo programa compuesto de un conjunto de rutinas entrelazadas de tal forma que cada una puede llamar a cualquier otra.
Este tipo de organización es con mucho la más común; bien podría recibir el subtítulo de "el gran embrollo". La estructura consiste en que no existe estructura alguna. El sistema operativo se escribe como una colección de procedimientos, cada uno de los cuales puede llamar a los demás 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, si este último proporciona cierto cálculo útil para el primero. Sin embargo incluso en este tipo de sistemas es posible tener al menos algo de estructura. Los servicios (llamadas al sistema) que proporciona el sistema operativo se solicitan colocando los parámetros en lugares bien definidos, como en los registros o en la pila, para después ejecutar una instrucción especial de trampa de nombre "llamada al núcleo" o "llamada al supervisor".
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 ligador.
- Buena definición de parámetros de enlace entre las distintas rutinas existentes, que puede provocar mucho acoplamiento.
- Carecen de protecciones y privilegios al entrar a rutinas que manejan diferentes aspectos de los recursos de la computadora, como memoria, disco, etc.
- Generalmente están hechos a medida, por lo que son eficientes y rápidos en su ejecución y gestión, pero por lo mismo carecen de flexibilidad para soportar diferentes ambientes de trabajo o tipos de aplicaciones.
Esta organización sugiere una organización básica del sistema operativo:
- un programa principal que llama al procedimiento del servicio solicitado.
- un conjunto de procedimientos de servicio que llevan a cabo las llamadas al sistema. 
- un conjunto de procedimientos utilitarios que ayudan al procedimiento de servicio.
En este modelo, para cada llamada al sistema existe un procedimiento de servicio que se encarga de él. Los procedimientos utilitarios hacen cosas necesarias para varios procedimientos de servicio, por ejemplo buscar los datos de los programas del usuario.
  • Estructura Jerárquica o por Anillos
A medida que fueron creciendo las necesidades de los usuarios y se perfeccionaron los sistemas, se hizo necesaria una mayor organización del software, del sistema operativo, donde una parte del sistema contenía subpartes y esto organizado en forma de niveles.
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 denominado THE (Technische Hogeschool, Eindhoven), de Dijkstra, que se utilizó con fines didácticos. Se puede pensar también en estos sistemas como si fueran `multicapa'.
En la estructura anterior se basan prácticamente la mayoría de los sistemas operativos actuales. Otra forma de ver este tipo de sistema es la denominada de anillos concéntricos o "rings"
En el sistema de anillos, cada uno tiene una apertura, conocida como puerta o trampa (trap), por donde pueden entrar las llamadas de las capas inferiores. De esta forma, las zonas más internas del sistema operativo o núcleo del sistema estarán más protegidas de accesos indeseados desde las capas más externas. Las capas más internas serán, por tanto, más privilegiadas que las externas.
  • Cliente-Servidor (Microkernel)
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 toda clase de aplicaciones por tanto, es de propósito general y cumple con las mismas actividades que los sistemas operativos convencionales.
El núcleo tiene como misión establecer 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 entrada/salida sobre un dispositivo concreto. A su vez, un proceso cliente puede actuar como servidor para otro. Este paradigma ofrece gran flexibilidad en cuanto a los servicios posibles en el sistema final, ya que el núcleo provee solamente funciones básicas de memoria, entrada/salida, archivos y procesos, dejando a los servidores proveer la mayoría que el usuario final o programador puede usar. Estos servidores deben tener mecanismos de seguridad y protección que, a su vez, serán filtrados por el núcleo que controla el hardware.
Otra de las ventajas del modelo cliente-servidor es su capacidad de adaptación para su uso en los sistemas distribuidos. Si un cliente se comunica con un servidor mediante mensajes, el cliente no necesita saber si el mensaje se maneja en forma local, en su máquina, o si se envía por medio de una red a un servidor en una máquina remota. En lo que respecta al cliente, lo mismo ocurre en ambos casos: se envió una solicitud y se recibió una respuesta.

Procesos y Administración del Procesador

  • Proceso
Un proceso puede informalmente entenderse como un programa en ejecución. Formalmente un proceso es "Una unidad de actividad que se caracteriza por la ejecución de una secuencia de instrucciones, un estado actual, y un conjunto de recursos del sistema asociados".
Un proceso es una secuencia de pasos dispuesta con algún tipo de lógica que se enfoca en lograr algún resultado específico. Los procesos son mecanismos de comportamiento que diseñan los hombres para mejorar la productividad de algo, para establecer un orden o eliminar algún tipo de problema. 
  • Estados de los Procesos
Todo proceso en un sistema operativo presenta un estado que indica la situación de la ejecución en que se encuentra. El número de posibles estados varía de un sistema operativo a otro. Un proceso puede más frecuentemente encontrarse en tres estados diferentes:
- En Ejecución:En este estado se encuentra el proceso que está siendo ejecutado por el procesador. El estado del procesador residirá en los registros del procesador.
- Bloqueado:Un proceso bloqueado está esperando a que ocurra un evento y no puede seguir ejecutándose hasta que termine el evento. Una situación típica de proceso bloqueado se produce cuando el proceso solicita una operación E/S (Entrada / Salida). Hasta que no termina esta operación, el proceso queda bloqueado.
- Listo:Un proceso está listo para ejecutar cuando puede entrar en fase de procesamiento. Dado que puede haber varios procesos en este estado, una de las tareas del sistema operativo será seleccionar aquel que debe pasar a ejecución. El módulo del SO que toma esta decisión se denomina planificador.
La transición entre cada uno de los tres estados puede hacerse de la siguiente manera:
- Transición 1: Ocurre cuando el programa que está en ejecución necesita algún elemento, señal o datos para poder continuar ejecutándose.
- Transición 2: Cuando un programa o proceso ha utilizado el tiempo asignado por la CPU (procesador) para su ejecución y tiene que dejar paso al siguiente proceso.
- Transición 3: Cuando el proceso que está listo pasa al estado de ejecución; es decir, cuando al proceso le llega una nueva disposición del tiempo de la CPU para poder ejecutarse.
- Transición 4: Cuando el proceso pasa de estar bloqueado a estar listo, es decir, cuando el proceso recibe una orden o señal que estaba esperando para pasar al estado de listo y posteriormente, tras la transición 3, pasar a ejecución.
  • Operaciones con Procesos
Los sistemas operativos poseen una serie de funciones cuyo objetivo es la manipulación de los procesos, se pueden ejecutar de forma concurrente, porque permite compartir información, aceleración de los cálculos, modularidad y comodidad. En general las operaciones que pueden hacerse en los procesos son las siguientes:
- Crear un Proceso: se producen con la orden de ejecución de programa y suele necesitar varios argumentos tales como: dar un nombre al proceso; insertarlo en la lista de procesos conocidos del sistema o tabla de procesos; determinar la prioridad inicial del proceso; crear el bloqueo de control del proceso; asignar los recursos iniciales al proceso.
- Destruir un Proceso: se trata de la orden de la eliminación del proceso, es decir, se remueve de las tablas o listas del sistema, sus recursos se devuelven al sistema y su bloque de control de proceso se borra.
- Suspender y Reanudar un Proceso: es una operación de alta prioridad que paraliza un proceso para darle prioridad de otro para ser reanudado posteriormente. Suele utilizarse en momentos de mal funcionamiento o sobre carga del sistema. La suspensión dura por lo general solo periodos breves de tiempo. Reanudar solo es tratar de activar un proceso que ha sido suspendido previamente.
- Temporizar la Ejecución de un Proceso: hace que un determinado proceso se ejecute cada cierto tiempo, por etapas o de una sola vez, pero trascurrido un periodo de tiempo fijo.
- Despertar un Proceso: es una forma de desbloquear un proceso que habrá sido bloqueado previamente por temporización o cualquier otra causa.
- Sincronización y Comunicación entre Procesos: en un Sistema Operativo multitarea, sus programas se componen de múltiples partes denominadas hilos, las cuales se ejecutan de forma paralela. Debido a esto, cuando dos o más hilos intentan acceder a la vez a un mismo recurso, el resultado puede ser en el mejor de los casos, impredecible. Por eso surgen los sistemas de sincronización entre procesos. Estos permiten establecer un sincronismo entre dos o más hilos y procesos de una forma consistente y, sobre todo, fiable y predecible.
- Despachar un Proceso: toma el proceso de la lista, la carga en el procesador y empieza la ejecución. El término despachador, está asociado normalmente a las cuestiones de cuando introducir nuevos procesos en el sistema o bien el orden de seguir en la ejecución de estos procesos el orden de seguir en la ejecución de estos procesos.
- Terminación de un Proceso: un proceso acaba cuando termina de ejecutarse su último enunciado y le pide al sistema operativo que lo elimine utilizando la llamada al sistema salir. En ese momento, el proceso podría devolver datos a su proceso padre. El sistema operativo libera todos los recursos del proceso, incluidos memoria física y virtual, archivos abiertos y buffer de entrada y salida.
  • Planificación de Procesos
Conjunto de políticas y mecanismos incorporados al sistema operativo, a través de un módulo denominado planificador, que debe decidir cuál de los procesos en condiciones de ser ejecutado conviene ser despachado primero y qué orden de ejecución debe seguirse. Esto debe realizarse sin perder de vista su principal objetivo que consiste en el máximo aprovechamiento del sistema, lo que implica proveer un buen servicio a los procesos existentes en un momento dado.
  • Bloque de Control del Sistema
Estructura básica para almacenar los datos necesarios para poder ejecutar el sistema operativo:
- Lista de descriptores de procesos.
- Puntero al descriptor del proceso que está haciendo uso del procesador.
- Puntero a la cola de descriptores de procesos que no hacen uso del ordenador, pero están en espera.
- Punteros a colas de procesos que se encuentran en diferentes situaciones.
- Identificadores de las rutinas necesarias para tratar las interrupciones producidas por el hardware, el software o errores indeseados.
- Puntero a la cola de descriptores de recursos
  • Bloque de Control de Proceso
Para llevar a cabo la gestión de un proceso, es necesario que el sistema operativo guarde cierta información necesaria. Para ello, existe un registro especial que se conoce comoel bloque de control del proceso BCP, o PCB en inglés (Process Control Block). El BCP es creado por el Sistema operativo cada vez que aparece un nuevo proceso. Los procesos son conocidos para el sistema operativo y por tanto elegible para competir por los recursos del sistema sólo cuando existe un BCP activo asociado a ellos. Cuando el programa termina, el BCP es eliminado para dejar espacio libre en el registro, y usarlo para almacenar otros BCP. El bloque de control de procesos difiere mucho de un sistema a otros, pero existen contenidos comunes:
- Estado del proceso.
- Contador del programa: Dirección siguiente instrucción a ejecutar.
- Registros de la CPU: Contenidos al final de la última ejecución (contador de programa, puntero a pila, registros de datos, etc.).
- Información planificación CPU: prioridad, apuntadores a las colas, algoritmo usado.
- Información contable y de identificación: Número de proceso, tiempo real y de CPU utilizado.
- Información estado Entradas/Salidas.
  • Planificación del Procesador
En un sistema multiprogramado, la memoria principal contiene varios procesos. Cada proceso alterna entre usar el procesador y esperar que se realice una operación de E/S o que ocurra algún otro suceso. El procesador o los procesadores se mantienen ocupados ejecutando un proceso mientras los demás esperan.

Instituto Universitario de Tecnología de los Llanos.
PNF en Informática. Régimen Nocturno.
Trayecto III. Trimestre III. Sección ‘01’.
Valle de la Pascua, Estado Guárico.

Facilitador:
Moreno, Miguel.

Integrantes: 
Farias, Edward CI: 21.313.546
Fuentes, Katherine CI: 22.615.182
Gota, Carlos CI: 22.615.947
Joa, Daniel CI: 23.567.139

No hay comentarios.:

Publicar un comentario