E s p e c if i c a c i ó n d e R e q u e r i m ie n t o s d e S o f t w a r e d e SIGIAM
Sistemas Operativos II
UNIVERSIDAD NACIONAL DE JOSE C.
PAZ
Departamento de Industria e Innovación
Tecnológica
Contenido
Introducción a los Sistemas Operativos ... 3
1.1. Sistemas Operativos. Conceptos. Funciones. Objetivos. ... 3
1.2. Requisitos para el diseño de Sistemas Operativos ... 5
1.3. Estructura de los Sistemas Operativos ... 5
1.4. Llamadas al Sistema Operativo ... 9
1.5. Tipos de Sistemas Operativos. Sistemas de Multiprocesamiento. Sistemas de Tiempo Compartido. Sistemas Distribuidos. Sistemas de Tiempo Real ... 11
Sistema Operativo de multiprogramación ... 12
Sistema de tiempo compartido ... 13
3
Introducción a los Sistemas Operativos
1.1. Sistemas Operativos. Conceptos. Funciones. Objetivos.
Sistema Operativo
Es un programa que actúa como intermediario entre el usuario y el hardware de una computadora y su propósito es proporcionar un entorno en el cual el usuario pueda ejecutar programas.
Es un conjunto de programas que controlan las operaciones del sistema y administran los recursos de dichos sistemas de computación.
Es una parte importante de cualquier sistema de computación. Un sistema de computación se divide en cuatro componentes:
Sistema de Computación (Componentes)
Los componentes de un sistema de computación son su hardware, software y datos.
El SO., Proporciona los medios para usar adecuadamente estos recursos durante el funcionamiento del sistema, no lleva a cabo ninguna función útil por sí mismo, solo proporciona un entorno dentro del cual otros programas pueden realizar trabajo útil.
Se puede ver al sistema como un asignador de recursos. Un sistema de computación tiene muchos recursos (hardware y software) que puede requerirse para resolver un problema.
El sistema operativo actúa como el administrador de estos recursos y los asigna a usuarios y programas concretos según la necesidad de las tareas de los usuarios.
Puede surgir conflictos entre las solicitudes, el SO debe decidir a qué solicitudes se les asignaran para que el sistema de computación pueda funcionar de manera eficiente y justa.
Un punto de vista distinto de un SO se centra en la necesidad de controlar los diversos dispositivos de E/S y programas de usuarios.
Un SO es un programa de control y como tal controla la ejecución de los programas de los usuarios para prevenir errores y el uso inadecuado del computador. Se ocupa especialmente del funcionamiento y control de los dispositivos de E/S.
En términos generales no hay una definición de sistema operativo completamente adecuada. Los SO existen porque son una manera razonable de solucionar el problema de crear un sistema de computación utilizable.
Hardware: (CPU, Memoria, Dispositivos de E/S), Proporciona los recursos de computación básicos.
Sistema Operativo: Controla y coordina el uso del hardware entre los diversos programas de aplicación de los distintos usuarios.
Programas de Aplicación: (Compilador, Ensamblador, editor de texto) define la forma en que estos recursos se emplean para resolver los problemas de computación de los usuarios.
Objetivos
Están relacionados con tres aspectos importantes:
La eficiencia: Relacionado con el manejo de los recursos del sistema de modo que pueda ser aprovechado de forma eficiente.
La comodidad: se Refiere al hecho de permitir que el computador sea fácil y cómodo de utilizar.
La capacidad de Evolución: Se refiere al hecho que debe construirse, de manera tal que permita el desarrollo efectivo de nuevas funciones.
El objetivo principal de un Sistema Operativo es la comodidad para el usuario. Los SO existen porque se supone que es más fácil trabajar con uno de ellos que sin él. Esta situación es particularmente clara si se observa los SO para las pequeñas computadores personales
El objetivo secundario de un sistema operativo es la utilización eficiente del sistema de computación. Este propósito tiene importancia especial en los grandes sistemas multiusuarios compartidos; estos suelen ser muy costosos, por lo que es deseable hacerlo lo más eficiente posible.
En ocasiones resulta contradictorio alcanzar los objetivos de comodidad y eficiencia.
Funciones
Servicio del Sistema Operativo
Un SO proporciona un entorno para la ejecución de programas por lo cual lo primero que hay que decir al diseñar un SO es su finalidad y el tiempo de proceso que se quiere realizar a través de él (procesamiento por lotes, tiempo compartido, tiempo real, etc.).
Para ello es preciso tener en cuenta las necesidades que se pueden plantear. Por supuesto que los servicios específicos que se ofrecen para atender estas necesidades varían de un SO a otro, pero pueden identificarse varias clases comunes.
Requisitos del usuario
El sistema debe ser fácil de usar y de aprender, seguro, rápido y adecuado al uso que se le quiere destinar. Desde este punto de vista los servicios del SO son:
Ejecución de Programas: El sistema debe ser capaz de cargar en memoria un programa y ejecutarlo, y terminar su ejecución ya sea normalmente o anormalmente.
Operaciones de E y S: Ya que un programa de usuario no puede ejecutar directamente operaciones de E y S, (tratar un archivo, enviar los resultados a un dispositivo, rebobinar la cinta, borrar la pantalla). El SO debe ofrecer alguna forma de llevarlo a cabo.
Manipulación de sistemas de Archivos: Los programas necesitan leer y escribir archivos así como crearlo y eliminarlo basándose en su nombre.
Comunicaciones: Un proceso intercambia información con otro, esto puede realizarse en dos formas. Entre procesos que se ejecutan en la misma computadora.
Entre procesos que se ejecutan en sistemas de computación diferentes, unidos por una red.
La comunicación puede efectuarse a través de memoria compartida o por la técnica menor usual de pasos y desastres en el cual el SO mueve paquetes de información entre procesos.
5
1.2. Requisitos para el diseño de Sistemas Operativos
Se engloban aspectos como el almacenamiento, forma de operación, restricciones de uso, eficiencia, tolerancia contra los errores y flexibilidad.
Desde este punto de vista los servicios del SO son:
Asignación de Recursos: Cuando varios usuarios o trabajos se ejecutan en un mismo tiempo, se debe asignar recursos a cada uno de ellos. El SO se encarga de esto por lo cual existen líneas para:
Determinar cómo utilizar de mejor manera la CPU (tomar en consideración su velocidad, los trabajos que deben ejecutarse, el número de registros disponibles, etc.).
Asignar una unidad de cinta a un trabajo (localizar una unidad de cinta libre, colocar una marca en una tabla interna para registrar al nuevo usuario).
Contabilidad: Consiste en llevar a cabo un control de cuales usuarios utilizan cuantos recursos de la computadora y de qué tipo. Estas anotaciones pueden tener fines contables o simplemente para recopilar estadísticas de uso.
Protección: Cuando varios trabajos independientes se ejecutan al mismo tiempo, no deberá ser posible que un trabajo interfiera con los demás ni con el SO. La protección implica realizar la validez de todos los parámetros que se pasan en las llamadas al sistema y asegurar que todo el acceso a los recursos del sistema esté controlado. También es importante la seguridad del sistema respecto a personas ajenas (llaves de acceso o contraseñas).
1.3. Estructura de los Sistemas Operativos
La estructura del sistema debe ser modula, dividida en módulos, con cada módulo con interfaces entre sí y debe ser tan simple como sea posible. Para los SO, modernos la estructura consta de 13 niveles.
Es una estructura jerárquica que separa sus funciones de acuerdo a su complejidad, a su escala característica de tiempo y su nivel de abstracción. Cada nivel lleva a cabo un determinado subconjunto de funciones requeridas por el SO y a su vez cada nivel ofrece servicios al nivel superior:
Nivel 1 - Circuitos electrónicos: Actúa sobre lo registros, sobre las celdas de memoria y las puertas lógicas. Las operaciones que se llevan a cabo son la de borrar, transferir, activar y complementar.
Nivel 2 – Conjunto de instrucciones del coprocesador: Actúa sobre la pila, sobre el intérprete de microprograma. Las operaciones que se pueden llevar a cabo son bifurcar, sumar, restar, cargar depositar.
Nivel 3 – Procedimientos y Subrutinas: Actúa sobre los procedimientos y las pilas de llamadas. Las operaciones que se llevan a cabo son marcar la pila, llamar, retornar.
Nivel 4 – Interrupciones: Actúa sobre los programas que se encargan del tratamiento de las interrupciones. Las operaciones que se llevan a cabo son invocar, enmascarar, intentar.
Nivel 5 – Procesos Primitivos: Actúa sobre los procesos negativos, semáforos y cola de procesos listos, operaciones suspender, reanudar, esperar, señalizar.
Nivel 6 – Almacenamiento Secundario Local: Actúa sobre los bloques de datos y canales positivos consta de operaciones tales como leer, escribir, asignar.
Nivel 7 – Memoria virtual: Actúa sobre los segmentos y las páginas, se realizan operaciones de lectura, escritura, carga, reemplazo.
Nivel 8 – Comunicaciones: Actúa sobre los tubos (pipes), que son los canales lógicos para el flujo de datos entre los procesos. Las operaciones son crear, destruir, abrir, cerrar, leer, describir.
Nivel 9 – Sistema de Archivo: Actúa sobre los archivos y las operaciones son las mismas realizadas sobre el Nivel 8.
Nivel 11 – Directorio: Actúa sobre los directorios. Las operaciones son crear, destruir, conectar, buscar, listar.
Nivel 12 –Procesos de Usuario: Actúa sobre el entorno de programación del usuario, las operaciones son las sentencias de un lenguaje de Shell.
(STALLING: DETALLES)
Nota: Otras estructuras son los sistemas monolíticos, los sistemas con capacidad, el sistema como máquina virtual y el modulo cliente servidor.
Tipos de Estructuras de los Sistemas Operativos
Un sistema tan básico y complejo como un SO debe construirse con cuidado para que funcione correctamente, pueda modificarse con facilidad.
Existen distintas estructuras que presentan los actuales SO para satisfacer las necesidades que de ellos se quiera obtener.
Entre las estructuras se pueden mencionar: Estructura monolítica.
Estructura jerárquica o por capas. Máquina virtual.
Cliente Servidor.
Estructura monolítica
Es la estructura de los primeros SO, constituidos fundamentalmente por un solo programa compuesto de un conjunto de rutinas entrelazadas de tal forma que cada una de ellas pueda llamar a cualquiera de las otras.
En términos de ocultamiento de la información es prácticamente nulo ya que cuando precede eventos es visible a los demás.
Sin embargo es posible tener al menos algo de estructura. Los servicios (llamadas al sistema), que proporciona el SO se solicitan colocando los parámetros en lugares bien definidos, en los registros o en la pila, para después ejecutar una instrucción especial conocida como llamada al Kernel (núcleo) o llamada al supervisor.
Esta instrucción cambia la máquina de modo usuario al modo supervisor o núcleo y transfiere el control al SO.
El SO examina los parámetros de la llamada para determinar cuál llamada al sistema se ejecuta. Posteriormente el SO analiza una tabla que contiene en sus entradas un apuntador al procedimiento que realiza la llamada al sistema. Esta operación identifica el procedimiento de servicio al cual se llama. Por último la llamada al sistema termina y el control regresa al programa del usuario.
Las características fundamentales de este tipo de estructura son:
Construcciones de programa final, basándose en módulos compilados separadamente que se unen a través de editor de enlaces.
Buena definición de parámetros de enlace entre las distintas rutinas existentes. Carecen de protección y privilegios.
Generalmente están hechos a medida por lo que son eficientes y rápidos en su ejecución.
Estructura Jerárquica o por Capas
A medida que fueron creciendo las necesidades de los usuarios y se perfeccionaron los sistemas se hizo necesario una mayor organización del software del SO (donde una parte del sistema contenía subpartes y estos organizado en forma de niveles). Se dividió el SO en pequeñas partes de tal forma que cada una de ellas estuviera perfectamente definida con una clara interfaz con resto de los elementos.
7
La capa 0, se encargaba de multiprogramación básica de la CPU. La capa 1, Administra la memoria
La capa 2, manejaba la comunicación entre cada proceso.
La capa 3, se encargaba de administración de los dispositivos de E/S.
En la Capa 4, se encontraban los programas de usuarios y el proceso del operador del sistema estaba en la capa 5. En la estructura de THE, se basan prácticamente la mayoría de los sistemas operativos actuales.
Otra forma de ver este tipo de sistema es la denominada estructura de anillos concéntricos o Rings
Las técnicas de Spool (Simultaneus Peripheral Operation On_line), permite que la salida de un programa se escriba en un buffer, posteriormente es llevada a un disco magnético es espera de poder ser enviada a una impresora o cualquier otro periférico de salida que en ese momento pueda estar ocupado.
En el sistema Linux, cada anillo tiene una apertura conocida como puerta o trampa por donde pueden entrar las llamadas de las capas inferiores. De esta forma las zonas más internas del SO 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 lo tanto, más privilegiadas que las externas.
Estructura de Máquina Virtual
Se trata de un tipo de SO que presenta una interfaz a cada proceso mostrando una máquina que parece idéntica a la maquina real subyacente.
Estos sistemas separan los conceptos que suelen estar unidos en el resto de los sistemas: la multiprogramación y la maquina extendida o virtual (con requisitos adicionales).
Nivel 5 Usuario u Operador
Nivel 4 Archivo (Programas de Usuario) Nivel 3 Administrador de Entrada y Salida Nivel 2 Comunicación Operador / Proceso Nivel 1 Administración de Memoria
Nivel 0 Gestión de CPU (Reparto de Procesador y multiprogramación) Nivel -1 Hardware
Gestión de Información
Gestión de Memoria
Gestión de E/S
Gestión
de CPU Aplicación de
Spool
El objetivo de los SO de máquina virtual es el de integrar distintos SO, dando la sensación de ser varias máquinas diferentes.
El núcleo de estos SO se denomina motor virtual y tiene como misión llevar a cabo la multiprogramación, presentando a los niveles superiores tantas máquinas virtuales como se necesiten.
Esta máquinas virtuales no son máquinas extendidas, sino un réplica de la maquina real, de manera que en cada uno de ellas, puedan ejecutar un sistema operativo diferente, que será el que ofrezca la maquina extendida al usuario.
Al separar por completo las funciones de multiprogramación y de suministro de maquina extendida, cada uno delos componentes puede ser mucho más sencillo, flexible y fácil de mantener.
CP = Organiza la maquina real. Es un SO de máquina virtual. HV = Hardware virtual. Sobre esto se instalan cada SO.
Estructura Cliente Servidor (MicroKernel)
El tipo más reciente de SO es el denominado Cliente Servidor, que puede ser ejecutado en la mayoría de las computadora, ya sean grandes o pequeñas.
Este sistema sirve para todo, por lo tanto es de propósito general y se basa en lo mismo que el resto de los SO convencionales. Suele suministrar mecanismos adecuados para la gestión de procesos, memoria y comunicación entre procesos.
El núcleo establece la comunicación entre los clientes y los servidores. Los procesos pueden ser tantos servidores como clientes. Por ejemplo: un programa de aplicación normal es un cliente que llama al servidor correspondiente para acceder a un archivo o realizar una operación de E/S, sobre un dispositivo concreto. A su vez un proceso cliente puede activar como servidor para otro.
En este modelo:
Lo único que el Kernel hace es manejar la comunicación entre los clientes y los servidores. Al dividir el SO en partes, cada una de las cuales solo se encarga de una faceta del sistema, como el servicio de archivos, de procesos, de terminales o de memoria, cada parte puede ser pequeña y manejable.
Además, dado que todos los servidores se ejecutan como procesos en modo usuario, y no en modo kernel, no tiene acceso directo al hardware. Por lo tanto, si se activa un error en el servidor de archivos, es posible que el servidor de archivos se caiga, pero normalmente esto no hará que se caiga toda la máquina.
Estructura de Maquina Virtual
Proceso
Cliente
Servidor de
Procesos
Servidor de
Terminales
Servidor de
Archivos
Servidor de
Memoria
9
Otra ventaja del modelo es su adaptabilidad para usarse en sistemas distribuidos.
Si un cliente se comunica con un servidor enviándole mensajes, el cliente no necesita saber si el mensaje será atendido localmente en su propia maquina o si se envió a través de la red a un servidor en una maquina remota. En lo que al cliente concierne, sucede lo mismo en ambos casos: se envía la solicitud y se obtiene una respuesta.
Algunas funciones del SO (como cargar comandos en los registros de los dispositivos de E/S físicos) son difíciles, si no imposibles, de efectuar desde programas del espacio de usuarios. Hay dos formas de resolver este problema. Una consiste en hacer que algunos procesos de servidor críticos (pro Ej. Controladores de dispositivos de E/S) se ejecuten realmente en modo kernel, con acceso completo a todo el hardware, pero que se comuniquen con los demás procesos empleado el mecanismo de mensaje normal.
La otra solución consiste en incorporar una cantidad mínima de mecanismos en el Kernel pero dejar las decisiones de política a los servidores en el espacio de usuarios.
1.4. Llamadas al Sistema Operativo
Constituyen la interfaz entre un programa en ejecución y el SO. Pueden efectuarse de varias maneras dependiendo del computador que se use. El tipo y la cantidad exacta de información varían de acuerdo con el SO y la llamada concreta.
Tras la llamada sucede lo siguiente:
El SO, toma el control (es decir el hardware para el control del SO).
El SO, guárdale estado del proceso interrumpido. En muchos sistemas esta información se guarda en el bloque de control de proceso correspondiente.
El SO, analiza la interrupción y transfiere el control a la rutina apropiada para atenderla. La rutina del manejador de interrupciones procesa la interrupción.
Se reestablecen en estado del proceso interrumpido (o del siguiente proceso). Se ejecuta el proceso interrumpido (o el siguiente proceso).
Existen seis clases de interrupciones:
Interrupciones SVC (supervisor call, llamadas al servidor). Interrupciones de E/S.
Interrupciones externas. Interrupciones de reinicio.
Interrupciones de verificación del programa. Interrupciones de verificación de la máquina.
En general las llamadas al SO necesitan pasar algún tipo de información para la correcta ejecución del proceso a través de parámetros. Para pasar parámetros se utilizan tres métodos:
Por medio de registros.
Almacenamiento en bloques o tablas de memoria. Almacenamiento en la pila.
A cada una de las llamadas le corresponde un procedimiento de la biblioteca que pueden llamar os programas. Este procedimiento pone lo parámetros de la llamada al sistema en un lugar específico para después ejecutar una instrucción
Mensaje De un cliente a un servidor Cliente
Kernel
Servidor de Archivos
Kernel
Servidor de Procesos
Kernel
Servidor de Terminales
Kernel
Maquina 1 Maquina 2 Maquina 3 Maquina 4
TRAP (un tipo de llamada a procedimiento protegido), para iniciar el SO. La finalidad del procedimiento de biblioteca es ocultar los detallas de la instrucción TRAP y hacer que las llamadas al sistema procesen llamadas comunes a un subprograma.
Las llamadas al SO pueden agruparse por el tipo de llamadas o por la acción que realizan.
Por el tipo de llamadas
Terminación normal: Se realiza la devolución del control al usuario cuyo proceso ha terminado a través del intérprete, de comandos.
Terminación Anormal: Cuando aparece un error en la ejecución de un programa este se da por terminado devolviendo el control al intérprete de comandos que indicará tal situación de error al usuario.
Petición de estado: Se procesa la petición solicitada y se devuelve el control al programa que lo solicito.
Peticiones de recursos: Los programas solicitan recursos durante su ejecución que serán obtenidos de inmediato, o se entrara a un estado de espera hasta que puedan ser atendidas.
Peticiones de E/S: De igual forma que la anterior los programas solicitaran un dispositivo de E/S y serán atendidos de inmediato o tras un pequeño periodo de espera.
Por la acción que realizan
a) Control de Proceso y Trabajos
Un programa en ejecución necesita ser capaz de terminar su ejecución ya sea normalmente o anormalmente, en cualquier caso el SO debe ser capaz de transferir el control al intérprete de esos datos para que lea el siguiente mandato.
Un proceso o trabajo que ejecute un programa puede desear cargar y ejecutar otro programa. Esto permite al intérprete de mandatos ejecutar un programa siguiendo directamente las indicaciones de por ejemplo un mandato de usuarios, pulsar el botón de un ratón. Donde se devolverá el control cuando termina el programa que se ha cargado.
Si el control regresa al programa existe cuando termina el nuevo programa, debemos guardar el contenido de la memoria del programa existente creando así un mecanismo para que un programa llame a otro. Si ambos programas continúan concurrentemente se habrá creado un nuevo trabajo o proceso multiprogramado.
Si se crea un nuevo trabajo o proceso, debemos ser capaces de controlar su ejecución y su finalización.
b) Manipulación de Archivos (Directorios.)
En primer lugar necesitamos poder crear y eliminar archivos. Ambas llamadas al sistema requieren el nombre del archivo y quizás algunos de sus atributos. Una vez creado, es necesario abrir el archivo para poder utilizarlo (leer, escribir o buscar un registro). Por último, se debe cerrar el archivo, indicando que ya no lo vamos a utilizar.
Ya se para archivos o directorios hay que determinarlos valore de varios atributos de ser necesario reasignarlos, para esta función se requieren dos llamadas al sistema: Obtener atributos de archivos y establecer atributos de archivos.
c) Manipulación de Dispositivos
Durante su ejecución, un programa puede necesitar recursos adicionales para proceder. (Estos recursos pueden ser: más memoria, unidades de cinta, acceso a archivo, etc.). Si los recursos están disponibles se pueden otorgar devolviendo el control al programa del usuario, de otra manera el programa tendrá que esperar a que estén disponibles suficientes recursos.
Si hay varios usuarios, primero tenemos que solicitar el dispositivo, para asegurar que tenemos su uso exclusivo y al terminar de usarlo debemos liberarlo. Estas funciones son similares a las llamadas al sistema abrir o cerrar para archivos. Una vez que hemos solicitado y si se nos ha asignado el dispositivo, podemos leer, escribir y posiblemente posicionar el dispositivo, lo mismo que con archivos. La semejanza entre los dispositivos de E/S y los archivos es tan grande que muchos sistemas operativos los combinan en una estructura de archivo / dispositivo. Entre otras llamadas están:
11
Obtener atributos, establecer atributos. Unir o separar dispositivos lógicamente.
d) Mantenimiento de la Información
Hay muchas llamadas al sistema que existen con la única utilidad de transferir información entre el programa de usuario y el SO. Por ejemplo: llamada al sistema para consultar la hora y la fecha, establecer la hora y fecha, etc. Otras llamadas pueden devolver información acerca del sistema como puede ser el número de usuario, el número de versión del sistema operativo, la cantidad de espacio libre en memoria o en disco, etc.
El SO conserva información de sus trabajos y procesos, empleando para ello las llamadas, obtener atributos de proceso y establecer atributos de procesos.
e) Comunicaciones
Existen dos modelos comunes de comunicación:
Modelo de paso de Mensajes
Es útil cuando hay que intercambiar pequeñas cantidades de datos entre computadoras. En este modelo, la información se intercambia a través de un medio de comunicación entre procesos que ofrece el SO.
Para poder establecer comunicación se debe:
Abrir una conexión y conocer el nombre del otro comunicador. Obtener identificación del anfitrión.
Obtener identificación del proceso.
Los identificadores se transmiten a las llamadas abrir y cerrar de propósito general que proporciona el sistema de archivo, o a las llamadas específicas al sistema abrir conexión y cerrar conexión.
El proceso receptor generalmente tiene que otorgar su permiso para que se lleve a cabo la comunicación con una llamada aceptar conexión
Esperar conexión, llamada para despertar a los receptores al efectuarse la conexión.
El cliente y el servidor intercambian mensajes mediante llamadas al sistema, leer mensajes y escribir mensajes.
Modelo de memoria compartida
Permite la máxima velocidad y conveniencia en la comunicación ya que realiza a la velocidad de la memoria. En este modelo los procesos utilizan llamadas al sistema para correspondencia de manera con el fin de obtener acceso a las regiones de memoria que pertenecen a otros procesos. Para esto es necesario que dos o más procesos puedan intercambiar información leyendo y escribiendo datos en estas áreas compartidas. Los procesos son también responsables de asegurar que no estén escribiendo simultáneamente en la misma posición de memoria.
1.5. Tipos de Sistemas Operativos. Sistemas de Multiprocesamiento. Sistemas de Tiempo
Compartido. Sistemas Distribuidos. Sistemas de Tiempo Real
Tipos de Sistemas Operativos
1) Sistema Operativo por Lote
El procesamiento por lotes (es la actualización de archivos secuenciales), precisa generalmente que el programa, los datos y las ordenes adecuadas al sistema sean remitidas todas juntas en forma de trabajo.
Los programas que no requieren interacción y los programas que tienen largos tiempos de ejecución pueden estar bien servidos por un SO de lote (Ej.: programas de nóminas, de predicción de tiempo, de análisis estadístico, de grandes cálculos científicos, etc.).
La planificación en sistemas de lote es muy sencilla. Los trabajos son típicamente procesos en orden de llegada, es decir de modo primero en llegar, primero en ejecutarse. Abecés se emplean otras ordenaciones tales como la de primero el trabajo más corto.
La gestión de memoria es muy sencilla. La memoria suele dividirse en dos áreas, una está permanentemente ocupada por la parte residente del SO y la otra es utilizada para cargar programas transitorios durante su ejecución. Cuando un programa transitorio termina se carga un nuevo programa en el mismo área de memoria.
En cuanto a la gestión de E y S, muchos SO por lote y serie utilizan el sencillo método de E y S controlada por programas.
La falta de competencia por los dispositivos de E y S hace que su asignación y des-asignación sea trivial.
En la gestión de archivos, estos sistemas suelen proporcionar formas sencillas de gestión. Se requiere poca protección y ningún control de concurrencia para tal acceso.
Sistema Operativo de multiprogramación
Se distingue por su capacidad para soportar la ejecución concurrente de dos o más procesos activos.
La multitarea se implementa generalmente manteniendo el código y los datos de varios procesos simultáneamente en memoria y multiplexando el procesador y los dispositivos de E y S entre ellos.
El termino multiprogramación designa a un SO que además de soportar multitarea proporciona formas sofisticadas de protección de memoria y fuerza el control de la concurrencia cuando los procesos acceden a dispositivos de E y S, y archivos compartidos.
Los SO de multiprogramación soportan generalmente múltiples usuarios en cuyo también se les denomina sistema multiusuario. Los SO multiusuarios proporcionan facilidades para mantenimiento de entorno de usuario individuales, requieren validación de usuario para seguridad de protección y proporcionan contabilidad de uso de los recurso por usuario. La operación multitarea es uno de los mecanismos que un SO multiprogramado emplea para gestionar la totalidad de los recursos del sistema informal incluyendo el procesador, la memoria y los dispositivos de E y S.
Los SO multiacceso permiten acceso simultaneo a un sistema informático desde dos o más terminales. En general la operación multiacceso no implica necesariamente multiprogramación.
Los SO de multiprocesamiento o multiprocesadores gestionan la operación de sistemas informáticos que incorporan varios procesadores. Estos son sistemas multitarea por definición, ya que soportan la ejecución de múltiples tareas (procesos), sobre diferentes procesadores. Dependiendo de la implementación de multitarea puede o no estar permitida en los procesadores individuales.
En general los sistemas de multiprogramación se caracterizan por una multitud de programas activos simultáneamente que compiten por los recursos del sistema.
13
Sistema de tiempo compartido
Son sistemas multiprogramados multiusuario, tienen como objetivo proporcionar en buen tiempo de respuesta, de Terminal. Dando la ilusión a cada usuario de disponer de una máquina para sí mismo, estos sistemas intentan con frecuencia lograr una compartición equitativa de los recursos comunes.
La mayoría de los sistemas de tiempo compartido utilizan una planificación por reparto (circular), del tiempo.
Planificación de Procesador: la gestión de memoria en sistemas de tiempo compartido proporciona aislamiento, protección a los programas residentes en memoria. La gestión de E y S debe ser suficientemente sofisticada para tratar con múltiples usuarios y dispositivos.
En cuanto a la gestión de archivo se debe proporcionar protección y control de acceso, dada la posibilidad de concurrencia.
Sistemas de Tiempo real:
Este tipo de sistema se utiliza en entornos en donde deban ser aceptados y procesados un gran número de sucesos, la mayoría externos al sistema informático en breve tiempo o dentro de cierto plazo.
Un objetivo importante es proporcionar rápidos tiempos de respuesta a sucesos y satisfacer así los plazos de planificación. La operación multitarea se consigue planificando los procesos para ser ejecutados independientemente unos de otros. Cada proceso tiene asignado un cierto nivel de prioridad que se corresponde con la importancia relativa del suceso al que sirve. Normalmente el procesador es asignado al proceso de máxima prioridad.
La gestión de memoria es comparativamente menor exigente que en otros tipos de sistemas de multiprogramación debido a que muchos procesos residen permanentemente en memoria con el fin de lograr tiempo de respuesta rápido.
La gestión de dispositivos críticos en tiempo, es una de las características principales de estos sistemas. Además de proporcionar formas sofisticadas de gestión de interrupciones para permitir a los procesos de área no conectarse a vectores de interrupción y prestar servicio a los sucesos directamente.
La gestión de archivos se encuentra generalmente solo en las instalaciones más grandes del sistema de tiempo real. Cuando aparece la gestión de archivos de los sistemas de tiempo real, debe satisfacer en gran medida las mismas exigencias que en los sistemas de tiempo compartido y otros sistemas de multiprogramación. El objetivo principal de la gestión de archivos, generalmente la velocidad de accesos antes que la utilización eficiente del almacenamiento.
Multiprocesamiento
Surge a raíz del gran volumen de información que no puede ser tratado por un solo procesador. Uno de los problemas actuales ha sido la aparición de aplicaciones que manejaban gran cantidad de información que un solo procesador no es capaz de procesarla en un tiempo requerido. Es el caso de los sistemas expertos, donde el volumen de datos es extremadamente grande y se necesitan tiempos de respuesta extremadamente pequeños. Además los algoritmos que manejaban estos datos son complicados y necesitan muchas operaciones para la obtención de los resultados.
Las computadoras convencionales no satisfacían estos requerimiento es por ello que se descompone los algoritmos en subalgoritmos, cada uno tratado por un procesador, los procesadores trabajan en forma paralela y al final juntan los datos para obtener el resultado final.
Se utiliza en una sola maquina varios procesadores que trabajan conjuntamente distribuyendo sus cálculos y compartiendo la información.
Existen dos esquemas para la construcción de sistemas de multiprocesamiento:
Sistema Fuertemente Acoplado: Los sistema comparten la memoria principal y un reloj. La comunicación se lleva a cabo a través de la memoria.
Sistemas débilmente acoplados: Son los sistemas distribuidos. Cada una cuneta con su propia memoria.
Sistemas Distribuidos
memoria local. Los Procesadores se comunican a través de distintas líneas de comunicación, como canales de alta velocidad o líneas telefónicas.
Los procesadores pueden variar en cuanto a tamaño y función. Pueden incluir pequeños microprocesadores, estaciones de trabajo, minicomputadores, y grandes sistemas de computación de propósito general.
Para referirse a estos procesadores se usan varios nombres, como instalaciones, nodos, computadores, etc.
Razones para construir sistemas Distribuidos.
Compartimiento de Recursos: Si varias instalaciones están conectadas entre sí, entonces un usuario puede utilizar en una instalación los recursos disponibles en otra. Como Archivos, información, hardware en instalaciones remotas.
Aceleración de Cálculos: Si un cálculo puede subdividirse en varias subcalculos que se ejecuten concurrentemente. Un sistema distribuido permitirá distribuir los cálculos entre diversas instalaciones y ejecutarlos concurrentemente (Se denomina compartimiento de carga). Si una instalación esta sobrecargada con trabajo, algunos de ellos pueden pasarse a otras instalaciones con poca carga.
Confiabilidad: si falla una instalación de un sistema distribuido, las restantes puede potencialmente continuar operando. En general si hay suficiente redundancia en el sistema (tanto hardware como datos), el sistema puede continuar su operación.
Comunicación: cuando varias instalaciones están conectadas entre sí por una red de comunicaciones, los procesos en las distintas instalaciones tiene la oportunidad de intercambiar información (transferencia de archivos o comunicarse entre ellos pro medio de correo electrónico)
Diseño e Implementación de Sistemas
El primer problema que presenta el diseño de un SO, es definir sus objetivos y especificaciones. En el nivel más alto, el diseño del SO estará afectado por la selección del Hardware y el tipo de procesamiento que se implementará en el sistema: por lotes, de tiempo compartido, monousuario, multiusuario, distribuido, de tiempo real o de propósito general.
Más complicado es especificar los requisitos. Estos pueden dividirse en dos grupos básicos: Requisitos de Usuario y Requisitos de sistema.
Usuario: Los usuarios desean ciertas propiedades obvias en un sistema. Debe ser cómodo, fácil de aprender y de usar, confiable, seguro y rápido.
Sistema: El sistema Operativo debe ser fácil de diseñar, Implantar y mantener, además debe ser flexible, confiable, libre de errores y eficiente.
Esta Especificaciones (del usurario y del sistema) no son muy útiles para el diseño del sistema, son vagos y no existe una solución general, un acuerdo general, sobre cómo alcanzar estos objetivos.
La especificación y el diseño de un Sistema Operativo son tareas sumamente creativas, y aunque ningún libro basta para solucionar el problema, se han puesto algunos principios generales. El área general que trata estos principios es la Ingeniería del Software. Los campos sobre los cuales se debe tener especial atención a la hora de diseñar un sistema operativo son:
Los procesos
La Gestión de Memoria
La seguridad y protección de la información La planificación y gestión de los recursos Estructuras del sistema.
Mecanismos y Políticas
Un principio muy importante es la separación de la política y el mecanismo. Los mecanismos determinan como realizar algo. Las políticas deciden que se hará. Por ejemplo un mecanismo para asegurar la protección de la CPU es la construcción de temporizador. En cambio la decisión de a que intervalo de tiempo se ajustará el temporizador para un usuario en particular es una decisión de política.
15
Las decisiones políticas son importantes para todos los problemas de asignación y de planificación de recursos. Siempre que es necesario decidir si se debe o no asignar un recurso, hay que tomar una decisión Política. Si la pregunta es “como” y no “que”, entonces lo que debe determinarse es el mecanismo.
Implantación
Una vez que se ha diseñado un SO, hay que implantarlo. Los sistemas operativos casi siempre se han escrito en lenguaje ensamblador, pero ahora pueden escribir en lenguajes de alto nivel (Ej.: ANSIC).
Las ventajas de emplear un lenguaje de alto nivel, o por lo menor una implantación de sistemas, para construir SO son las mismas que las de usar el lenguaje para programas de aplicación: el código se puede escribir más rápido, es más compacto y bastante fácil de comprender y depurar.
Las principales desventajas que se argumentan son una reducción en la velocidad y un aumento en los requisitos de almacenamiento. Por último, es más fácil transportar (llevar a otro hardware) un sistema si está escrito en un lenguaje de alto nivel.
Es probable que las mejoras en el rendimiento provengan de mejores estructuras de datos y algoritmos y no de un código más limpio, aunque los SO son sistemas muy grandes, sola una pequeña porción del código es decisiva para conseguir una gran productividad: la administración de memoria y el planificador de la CPU son quizás las rutinas más críticas. Después de escribir el sistema y mientras funciona correctamente, se pueden identificar las rutinas que provocan cuellos de botellas y sustituirlas con sus equivalentes en lenguaje ensamblador.
Funciones. El SO lleva acabo 2 funciones:
El Sistema Operativo como una Maquina Extendida: La arquitectura a nivel del lenguaje de máquina de la mayoría de las computadoras es primitivo y difícil de programar, el programador no desea inmiscuirse en este tipo de programación. En lugar de ello, desearía una abstracción sencilla y de alto nivel con la cual trabajar.
El programa que oculta la verdad acerca del hardware al programador y presenta una agradable y sencilla visión es el sistema operativo. Además el sistema operativo también oculta varios asuntos poco agradables relacionados con las interrupciones, cronometro, control de memoria y características de bajo nivel. En cada caso, la abstracción que presenta al usuario del SO es mucho más simple y fácil de utilizar que l hardware subyacente.
La función del SO es presentar al usuario el equivalente a una maquina extendida o máquina virtual que sea más fácil de programar que el hardware subyacente.
El Sistema Operativo como administrador de recursos: La labor del SO es la de proporcionar una asignación ordenada y controlada de los procesos, memorias y dispositivos de E/S para los varios programas que compiten por ellos.
Si una computadora tiene varios usuarios, es evidente que necesite del control y protección de la memoria, los dispositivos de E/S y demás recursos. Esta necesidad surge del hecho de que los usuarios deben compartir costosos recursos, también se requiere a menudo compartir la información entre aquellos usuarios que trabajan juntos. Este punto de vista del SO sostiene que su principal tarea es la de llevar un registro de la utilización de los recursos, dar paso a las solicitudes de recursos, llevar la cuenta del uso y mediar entre las solicitudes en conflicto de los distintos programas y usuarios
Interrupciones. Las interrupciones más comunes son las siguientes:
Interrupción de programa: generada por alguna condición que se produce como resultado de la ejecución de una instrucción como el desbordamiento aritmético, división por cero o una referencia de una zona de memoria fuera del espacio permitido del usuario.
Interrupciones de reloj: Generada por un reloj interno del procesador esto permite al SO llevar a cabo cierta funciones con regularidad.
Interrupciones de E/S: generadas por un controlador de E/S, para indicar que una operación ha terminado normalmente o para indicar diversas condiciones de error por fallo del hardware generada por fallas tales como corte de energía o un error de paridad de la memoria.
Ante la presencia de una interrupción el gestor de interrupción lleva a cabo ciertas operaciones y luego salta a una rutina que se ocupa del tipo de interrupciones que se ha producido.
Tipo de sistemas Operativos (conceptos de la clase)
Multiprogramación: se refiere a la gestión de varios procesos dentro de un sistema nano procesado.
Multiproceso: Es la gestión de varios procesos dentro de un sistema multiprocesador.
Puntos clave para el diseño e implementación de los SO
Los campos sobre los cuales se debe tener especial atención a la hora de diseñar un SO, son: Los procesos.
La gestión de memoria.
La seguridad y protección de la información. La planificación y gestión de los recursos.