Sistemas Operativos Apuntes Unidad I

67
UNIDAD I INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS Sin el software, una computadora no es más que una masa metálica sin utilidad. Con el software, una computadora puede almacenar, procesar y recuperar información, encontrar errores de ortografía en manuscritos, e intervenir en muchas otras valiosas actividades para ganar el sustento. El software para computadoras puede clasificarse en general en dos clases: los programas de sistema que controlan la operación de la computadora en si y los programas de aplicación, los cuales resuelven problemas para sus usuarios. El programa fundamental de todos los programas de sistema es el sistema operativo (SO), que controla todos los recursos de la computadora y proporciona la base sobre la cual pueden escribirse los programas de aplicación. 1.1 Definición y concepto. Existen diversos conceptos del significado de un sistema operativo, a continuación se citan algunas definiciones. 1. Un S.O puede ser contemplado como una colección organizada de extensiones del hardware, consistente en rutinas de control que hacen funcionar un computador y proporcionan un entorno para la ejecución de los programas. 1 1 MILAN MILEKOVIC, Sistemas Operativos conceptos y diseño segunda edición, Pág. 3. 1

description

Sistemas operativos apuntes

Transcript of Sistemas Operativos Apuntes Unidad I

UNIDAD I: INTRODUCCION A LOS SISTEMAS OPERATIVOS

UNIDAD IINTRODUCCIN A LOS SISTEMAS OPERATIVOS

Sin el software, una computadora no es ms que una masa metlica sin utilidad. Con el software, una computadora puede almacenar, procesar y recuperar informacin, encontrar errores de ortografa en manuscritos, e intervenir en muchas otras valiosas actividades para ganar el sustento. El software para computadoras puede clasificarse en general en dos clases: los programas de sistema que controlan la operacin de la computadora en si y los programas de aplicacin, los cuales resuelven problemas para sus usuarios. El programa fundamental de todos los programas de sistema es el sistema operativo (SO), que controla todos los recursos de la computadora y proporciona la base sobre la cual pueden escribirse los programas de aplicacin.1.1 Definicin y concepto.

Existen diversos conceptos del significado de un sistema operativo, a continuacin se citan algunas definiciones.1. Un S.O puede ser contemplado como una coleccin organizada de extensiones del hardware, consistente en rutinas de control que hacen funcionar un computador y proporcionan un entorno para la ejecucin de los programas.

2. Un S.O es un conjunto de programas o software, destinado a permitir la comunicacin entre el usuario y la maquina de forma cmoda y eficiente; se encarga de gestionar los recursos del ordenador, esto incluye la gestin del hardware desde los niveles mas bsicos. 3. Se puede imaginar un S.O como los programas, instalados en el software o el firmware, que hacen utilizable el hardware.

4. Un S.O es un programa que acta como intermediario entre el usuario y el hardware de un computador y su propsito es proporcionar un entorno en el cual el usuario pueda ejecutar programas.

5. Un S.O es el software encargado de ejercer el control y coordinar el uso del hardware entre diferentes programas de aplicacin y los diferentes usuarios. Es un administrador de los recursos de hardware del sistema.En una definicin informal, es un sistema que consiste en ofrecer una distribucin ordenada y controlada de los procesadores, memorias y dispositivos de E/S entre los diversos programas que compiten por ellos.

A pesar de que todos nosotros usamos sistemas operativos casi a diario, es difcil definir qu es un sistema operativo. En parte, esto se debe a que los S.O realizan dos funciones diferentes: proveer una mquina virtual, es decir, un ambiente en el cual el usuario pueda ejecutar programas de manera conveniente, protegindolo de los detalles y complejidades del hardware.

administrar eficientemente los recursos del computador.Objetivos de los sistemas operativos: El objetivo principal de un S.O: Lograr que el Sistema de computacin se use de manera cmoda.

El objetivo secundario es que el hardware del computador se emplee de manera eficiente.

Un Sistema Operativo es una parte importante de cualquier sistema de computacin puede dividirse en (hardware, S.O, los programas de aplicacin y los usuarios).

El hardware (Unidad Central de Procesamiento (UCP), memoria y dispositivos de entrada/salida (E/S)) proporciona los recursos de computacin bsicos. Los programas de aplicacin (compiladores, sistemas de bases de datos, juegos de vdeo y programas para negocios) definen la forma en que estos recursos se emplean para resolver los problemas de computacin de los usuarios.1.2 Funciones y caractersticas.Funciones de los sistemas operativos.

Una de las principales funciones del S. O. es ocultar toda esta complejidad y brindar al programador un conjunto ms conveniente de instrucciones para trabajar. Aceptar todos los trabajos y conservarlos hasta su finalizacin. Interpretacin de comandos: Interpreta los comandos que permiten al usuario comunicarse con el ordenador. Control de recursos: Coordina y manipula el hardware de la computadora, como la memoria, las impresoras, las unidades de disco, el teclado o el Mouse. Manejo de dispositivos de E/S: Organiza los archivos en diversos dispositivos de almacenamiento, como discos flexibles, discos duros, discos compactos o cintas magnticas. Manejo de errores: Gestiona los errores de hardware y la prdida de datos Secuencia de tareas: El S.O debe administrar la manera en que se reparten los procesos. Definir el orden. (Quien va primero y quien despus). Proteccin: Evitar que las acciones de un usuario afecten el trabajo que esta realizando otro usuario. Multiacceso: Un usuario se puede conectar a otra mquina sin tener que estar cerca de ella. Contabilidad de recursos: establece el costo que se le cobra a un usuario por utilizar determinados recursos.El S.O crea un entorno para la ejecucin de cada proceso, adems de ofrecer ciertos servicios a los programas y a sus usuarios.

Los servicios especficos que ofrece cada S.O. suelen ser diferentes, dependiendo del sector al que estn destinados, aunque algunas clases de ellos son comunes: las operaciones de E/S, la manipulacin del sistema de archivos, la deteccin de errores, etc. Estas funciones tienen el propsito, en su mayora, de favorecer la tarea del programador, haciendo ms fcil su trabajo. Lo que realmente nos est dando el S.O. es una capa de abstraccin del hardware particular sobre el que corre. Por si no ha quedado claro el porqu de estas facilidades, pongamos un ejemplo: Un programador de bases de datos que trabaje con dos mquinas distintas en HW se encontrar con el problema de que tiene que saber manipular los archivos tanto en una como en otra plataforma. Si el S.O. cumple bien el objetivo de abstraccin, un mismo programa puede funcionar sobre dos mquinas de arquitectura diferente con el mismo sistema operativo, sin que haga falta modificar el cdigo del programa.

Adems de estas funciones, el S.O. tiene otro conjunto destinado al funcionamiento eficiente de la mquina: asignacin de recursos, gestin de procesos.Prcticamente, estos dos grandes grupos de funciones determinan todo lo que hace un S.O., por un lado, las que facilitan la vida al programador y, por otro, las que hacen que stas ltimas se ejecuten en un medio con consistencia. De nada servira que el sistema permitiese abrir 5 archivos simultneamente si es incapaz de dejar algo de memoria para la ejecucin del programa que los ha abierto.

Veamos ahora algunos de estos tipos de llamadas al sistema, o servicios que ofrece el sistema:

Para la gestin de procesos: Dentro de este tipo nos encontramos todas aquellas llamadas necesarias para la ejecucin de programas, as como la eficiente distribucin de recursos entre stos.

Para el acceso a dispositivos de E/S: Como hemos dicho antes, el S.O. debe abstraer el funcionamiento del hardware al programador. Para ello, el sistema nos provee de ciertas funciones genricas para su acceso.

Para la deteccin de errores y respuesta: A pesar de ser mquinas, en los sistemas se pueden producir multitud de errores, tanto de SW como de HW, algunos de ellos pueden ser: Acceso a zonas prohibidas de memoria (SW) Imposibilidad de asignar los recursos solicitados por una aplicacin (SW) Fallo de algn dispositivo de almacenamiento (HW)

En todos los casos el sistema ha de ser capaz de responder con xito a estos sucesos, o en su defecto, evitar la prdida de datos. Alguno de estos problemas, como la imposibilidad de asignar recursos solicitados por una aplicacin han causado muchos quebraderos de cabeza a los programadores y se han llegado a escribir captulos enteros sobre las posibles soluciones.

Para la contabilidad del sistema: Si bien este tipo de funciones no las encontramos en todos los S.O., son bastante comunes en aquellos que tienen la particularidad de ser multiusuario.

Los S. O. son, en primer lugar, administradores de recursos, siendo el recurso primario el hardware del sistema (ver Fig. 1).Funciones especficas de los S.O.. Comunicacin con el usuario.

Control y gestin de elementos fsicos.

Utilizacin de varios usuarios.

Ejecucin de varios programas.

Compilacin de la informacin.

Compilacin de los perifricos.

Comunicacin entre sistemas.

Fig. 1.1 Principales recursos.Caractersticas de los sistemas operativos.

En general, se puede decir que un S.O tiene las siguientes caractersticas:

Conveniencia. Un S.O hace ms conveniente el uso de una computadora. Eficiencia. Un S.O permite que los recursos de la computadora se usen de la manera ms eficiente posible. Habilidad para evolucionar. Un S.O deber construirse de manera que permita el desarrollo, prueba o introduccin efectiva de nuevas funciones del sistema sin interferir con el servicio. Encargado de administrar el hardware. El S.O se encarga de manejar de una mejor manera los recursos de la computadora en cuanto a hardware se refiere, esto es, asignar a cada proceso una parte del procesador para poder compartir los recursos. Relacionar dispositivos (gestionar a travs del kernel). El S.O se debe encargar de comunicar a los dispositivos perifricos, cuando el usuario as lo requiera. Organizar datos para acceso rpido y seguro. Manejar las comunicaciones en red. El S.O permite al usuario manejar con alta facilidad todo lo referente a la instalacin y uso de las redes de computadoras. Procesamiento por bytes de flujo a travs del bus de datos. Facilitar las entradas y salidas. Un S.O debe hacerle fcil al usuario el acceso y manejo de los dispositivos de Entrada

Administracin de tareas: Monotarea: Si solamente puede ejecutar un programa (aparte de los procesos del propio S.O.) en un momento dado. Una vez que empieza a funcionar un programa, continuar hacindolo hasta su finalizacin o interrupcin. Multitarea: Si es capaz de ejecutar varios programas al mismo tiempo. Este tipo de S.O. normalmente asigna los recursos disponibles (CPU, memoria, perifricos) de forma alternativa a los programas que los solicitan, de manera que el usuario percibe que todos funcionan a la vez.

Administracin de usuarios:

Monousuario: Si slo permite ejecutar los programas de un usuario al mismo tiempo. Multiusuario: Si permite que varios usuarios ejecuten simultneamente sus programas, accediendo a la vez a los recursos del ordenador. Normalmente estos S.O. utilizan mtodos de proteccin de datos, de manera que un programa no pueda usar o cambiar los datos de otro usuario.

Manejo de recursos:

Centralizado: Si permite utilizar los recursos de un solo ordenador. Distribuido: Si permite utilizar los recursos (memoria, CPU, disco, perifricos) de ms de un ordenador al mismo tiempo.

Los principales recursos administrados por los S. O. son:

Procesadores. Almacenamiento. Dispositivos de e / s. Datos.

Los S. O. son una interfaz con:

Operadores. Programadores de aplicaciones. Programadores de sistemas (administradores del S. O.). Programas. Hardware. Usuarios.

El S. O. debe presentar al usuario el equivalente de una mquina extendida o mquina virtual que sea ms fcil de programar que el hardware subyacente.

Un S.O es en s mismo, un programa de computadora. Sin embargo, es un programa muy especial, quiz el ms complejo e importante en una computadora. El S.O despierta a la computadora y hace que reconozca a la CPU, la memoria, el teclado, el sistema de vdeo y las unidades de disco. Adems, proporciona la facilidad para que los usuarios se comuniquen con la computadora y sirve de plataforma a partir de la cual se corran programas de aplicacin.

Cuando enciendes una computadora, lo primero que sta hace es llevar a cabo un autodiagnstico llamado auto prueba de encendido (Power On Self Test, POST). Durante la POST, la computadora identifica su memoria, sus discos, su teclado, su sistema de vdeo y cualquier otro dispositivo conectado a ella. Lo siguiente que la computadora hace es buscar un S.O para arrancar (boot). Una vez que la computadora ha puesto en marcha su S.O, mantiene al menos parte de ste en su memoria en todo momento. Mientras la computadora est encendida, el S.O tiene 4 tareas principales: Proporcionar ya sea una interfaz de lnea de comando o una interfaz grfica al usuario, para que este ltimo se pueda comunicar con la computadora. Interfaz de lnea de comando: t introduces palabras y smbolos desde el teclado de la computadora, ejemplo, el MS-DOS. Interfaz grfica del Usuario (GUI), seleccionas las acciones mediante el uso de un Mouse para pulsar sobre figuras llamadas iconos o seleccionar opciones de los mens. Administrar los dispositivos de hardware en la computadora. Cuando corren los programas, necesitan utilizar la memoria, el monitor, las unidades de disco, los puertos de Entrada/Salida (impresoras, mdems, etc.). El S.O sirve de intermediario entre los programas y el hardware. Administrar y mantener los sistemas de archivo de disco. Los S.O agrupan la informacin dentro de compartimientos lgicos para almacenarlos en el disco. Estos grupos de informacin son llamados archivos. Los archivos pueden contener instrucciones de programas o informacin creada por el usuario. El S.O mantiene una lista de los archivos en un disco, y nos proporciona las herramientas necesarias para organizar y manipular estos archivos. Apoyar a otros programas. Otra de las funciones importantes del S.O es proporcionar servicios a otros programas. Estos servicios son similares a aquellos que el S.O proporciona directamente a los usuarios. Por ejemplo, listar los archivos, grabarlos a disco, eliminar archivos, revisar espacio disponible, etc.

Cuando los programadores escriben programas de computadora, incluyen en sus programas instrucciones que solicitan los servicios del S.O. Estas instrucciones son conocidas como "llamadas del sistema".1.3 Evolucin histrica.

Los S.O. han estado relacionados histricamente con la arquitectura de las computadoras en las cuales se ejecutan, razn por la cual su historia se puede analizar segn las siguientes generaciones CON sus principales caractersticas.

A finales de los aos 40, con la aparicin de la primera generacin de computadores, se realizaba lo que se llama el proceso en serie. Por aquel entonces no existan los sistemas operativos, y los programadores deban interactuar con el hardware del computador sin ayuda externa. Esto haca que el tiempo de preparacin para realizar una tarea fuera excesivo. Adems para poderse utilizar el computador deba hacerse por turnos. Para ello se rellenaba un formulario de reserva en el que se indicaba el tiempo que el programador necesitaba para realizar su trabajo. Hay que tener en cuenta que por aquel entonces los computadores eran mquinas muy costosas y que eran esto haca que estuvieran muy solicitadas y que slo pudieran utilizarse en periodos breves de tiempo.

A finales de los 40's el uso de computadoras estaba restringido a aquellas empresas o instituciones que podan pagar su alto precio, y no existan los sistemas operativos. En su lugar, el programador deba tener un conocimiento y contacto profundo con el hardware, y en el infortunado caso de que su programa fallara, deba examinar los valores de los registros y paneles de luces indicadoras del estado de la computadora para determinar la causa del fallo y poder corregir su programa, adems de enfrentarse nuevamente a los procedimientos de apartar tiempo del sistema y poner a punto los compiladores, ligadores, etc; para volver a correr su programa, es decir, enfrentaba el problema del procesamiento serial ( serial processing ).

Fig. 1.2 Ciclo de programacin primero generacin de computadoras.

La importancia de los sistemas operativos nace histricamente desde los 50's, cuando se hizo evidente que el operar una computadora por medio de tableros enchufables en la primera generacin y luego por medio del trabajo en lote en la segunda generacin se poda mejorar notoriamente, pues el operador realizaba siempre una secuencia de pasos repetitivos, lo cual es una de las caractersticas contempladas en la definicin de lo que es un programa. Es decir, se comenz a ver que las tareas mismas del operador podan plasmarse en un programa, el cual a travs del tiempo y por su enorme complejidad se le llam "Sistema Operativo". As, tenemos entre los primeros sistemas operativos al Fortran Monitor System ( FMS ) e IBSYS.

El CP/M (Control Program for Microcomputers), desarrollado por Gary Kildall fue el primer sistema operativo que poda ejecutarse en PCs de diferentes fabricantes. Cuenta una ancdota que ejecutivos de IBM fueron a visitar a Kildall para ofrecerle un acuerdo para poner el CP/M en la IBM PC, pero Kildall al parecer estaba ocupado en una sesin de vuelo, y no los pudo atender. Resultado: IBM lleg a un acuerdo con un joven llamado Bill Gates para que desarrollara un sistema operativo, nombrado como MS-DOS. Para muchos de los que hoy nos encontramos trabajando con una computadora, el sistema operativo D.O.S (Disk Operating System) fue el primero que nos toc utilizar. De la misma manera, fue tambin el comienzo para Bill Gates y su empresa Microsoft. En sus principios fue desarrollado junto con la empresa IBM, pero diferencias entre las partes hicieron que no fuera un lanzamiento en conjunto. Por el contrario, cada una de las empresas present "su" sistema operativo: PC-DOS (IBM) y MS-DOS (Microsoft). Un tercer competidor para estos sistemas operativos fue el DR-D.O.S. de la empresa Digital Research que inclua comandos ms detallados y de mayor funcionalidad, pero que con el tiempo, y gracias a las campaas publicitarias de Microsoft fue quedando relegado a un segundo lugar compartido con el PC-DOS de IBM. Luego de unos aos DR-D.O.S. fue adquirido por Novell que present una nueva versin conocida como Novell D.O.S. que realmente casi no tuvo cabida en el mercado, aunque era muy buena. D.O.S. era simplemente una pantalla de texto con una lnea de comandos que nos indicaba en qu directorio nos encontrbamos como nico dato orientativo. Uno tena que saber que cosas haba que escribir para que la mquina "hiciera algo". No haba menes contextuales, ni pantallas grficas que nos guiaran. Careca por completo de algn nivel intuitivo. D.O.S. todava hoy utiliza antiguos comandos CP/M tales como DIR, REN y TYPE que aun hoy funcionan bajo la mquina virtual D.O.S. de Windows. Las versiones que lo hicieron famoso en el mundo entero fueron la 3.0 y la 3.3, mientras que la ms utilizada en Argentina fue la 5.0, que introdujo muchos cambios a sus antecesoras. La versin 4.0 de D.O.S. estuvo plagada de errores, por lo cual casi no se uso (los usuarios se mantuvieron con la versin 3.30). La ltima versin del producto como tal fue la 6.22, ya que luego apareci Windows 95 que en su corazn inclua la versin 7.0, posteriormente Windows 98, Windows xp y actualmente Windows vista incorpora una nueva interfaz llamada Aero la cual incorpora caractersticas como la semi-transparencia de las ventanas, lo que permite ver lo que hay detrs de ellas.

1.4 Clasificacin Debido a la evolucin de los S.O fue necesario realizar una clasificacin; considerando las diferencias existentes entre sus componentes los podemos clasificar en: por lotes. multiprogramacin. multiusuario. de tiempo compartido. de tiempo real.

Sistemas operativos por lotesEl procesamiento por lotes precisa generalmente que el programa, los datos y las rdenes adecuadas al sistema sean remitidos todos juntos en forma de trabajo. Los S.O por lotes permiten poca o ninguna iteracin entre los usuarios y los programas en ejecucin. El procesamiento por lotes tiene un mayor potencial de utilizacin de recursos que el procesamiento serie simple en sistemas informticos que dan servicio ha mltiples usuarios. Debido a las dilaciones de los tiempos de retorno y a la depuracin fuera de lnea, el procesamiento por lotes no es muy conveniente para desarrollo de programas.

Los programas que no requieren interaccin y los programas que tienen largos tiempos de ejecucin pueden estar bien servidos por un S.O de lotes. Ejemplos de tales programas incluyen los programas de nomina de prediccin de tiempo, de anlisis estadsticos y de grandes clculos cientficos. El procesamiento serie combinado con archivos de ordenes de lotes suele encontrarse en muchos computadoras personales. La planificacin de sistemas de lotes es muy sencilla. Los trabajos son tpicamente procesados en orden de llegada, es decir, en modo primero en llegar, primero en ejecutarse.

La gestin de memoria en sistema de lotes es tambin muy sencilla. La memoria se suele dividir en dos reas. Una de ellas esta permanente ocupada por la parte residente del sistema operativo, y la otra es utilizada para cargar programas transitorios durante su ejecucin. Cuando un programa transitorio termina, se carga un nuevo programa en la misma rea de memoria.Puesto que en cada momento hay como mximo un programa en ejecucin los sistemas de lotes no requieren ninguna gestin de dispositivos crtica en el tiempo. Por esta razn, muchos sistemas .operativos por lotes y serie utilizan el sencillo mtodo E/S.

Los S.O por lotes requieren que la informacin est reunida en bloque o "lote" (el programa, los datos, y las instrucciones). Los trabajos son procesados en el orden de admisin, segn el modelo de "primero en llegar primero en ser atendido". En estos sistemas la memoria se divide en dos zonas. Una de ellas es ocupada por el S.O, y la otra se usa para cargar programas transitorios para su ejecucin. Cuando termina la ejecucin de un programa se carga un nuevo programa en la misma zona de memoria.Sistemas operativos multiprogramacin

A una instancia de un programa en ejecucin se le denomina proceso o tarea. Un S.O multitarea se distingue por su capacidad de soportar la ejecucin concurrente de dos o ms procesos activos. La multitarea se implementa generalmente manteniendo el cdigo y los datos de varios procesos simultneamente en memoria multiplexando el procesador y los dispositivos de E/S entre ellos. La multitarea suele asociarse con soporte de hardware y software para la proteccin de memoria con el fin de evitar que procesos errneos corrompan el espacio de direcciones y el comportamiento de otros procesos residentes.El termino multiprogramacin designa a un S.O que, adems de soportar multitarea, proporciona formas sofisticadas de proteccin de memoria y fuerza el control de la concurrencia cuando los procesos acceden a dispositivos de E/S y archivos compartidos. Los sistemas operativos de multiprogramacin soportan generalmente mltiples usuarios, en cuyo caso tambin se les denomina sistemas multiusuarios. Los S.O multiusuarios proporcionan facilidades para mantenimiento de entornos de usuarios individuales, requieren validacin de usuario para seguridad de proteccin y proporcionan contabilidad de uso de los recursos por usuario. En general, la multiprogramacin implica multitarea, pero la multitarea no implica multiprogramacin. En efecto la operacin multitarea es uno de los mecanismos que un S.O multiprogramado emplea para gestionar la totalidad de los recursos del sistema informtico, incluyendo el procesador, la memoria y los dispositivos de entrada y salida. La operacin multitarea sin soporte multiusuario puede hallarse en el S.O de algunas computadoras personales avanzados y en sistemas operativos de tiempo real.

Los S.O multiacceso permiten acceso simultneo a un sistema informtico desde dos o ms terminales. En general, la operacin multiacceso no implica necesariamente multiprogramacin. Un ejemplo es el proporcionado por algunos sistemas dedicados para procesamiento de transacciones, tales como los sistemas de reserva reas que soportan centenares de terminales activos bajo control de un nico programa. Los sistemas de multiprogramacin son capaces de soportar dos o ms procesos concurrentes mltiples, permiten que residan al mismo tiempo en la memoria primaria las instrucciones y los datos procedentes de dos o ms procesos. Estos sistemas implican la operacin de multiproceso, para el manejo de la informacin. Se caracterizan principalmente por un gran nmero de programas activos simultneamente que compiten por los recursos del sistema, como el procesador, la memoria, y los "dispositivos de E/S". Estos sistemas monitorean el estado de todos los programas activos y recursos del sistema. Sistemas operativos multiusuario

Los S.O multiusuario permiten acceder simultneamente a un sistema de computadoras a travs de dos o ms terminales. Este tipo de sistema operativo es fundamental en el manejo de redes de computadoras actualmente.

Sistemas operativos de tiempo compartidoUn S.O de tiempo compartido permite a los diversos usuarios compartir el mismo tiempo del computador. Puesto que es un sistema de tiempo compartido cada accin o mandato suele ser breve, solo se requiere un corto tiempo de ucp para cada usuario. Como el sistema pasa rpidamente de un usuario al siguiente, cada una de ellos tiene la impresin de que cuenta con su propio computador, cuando en realidad todos comparten uno solo.En 1960 se expuso el concepto de tiempo compartido, pero como los sistemas de este tipo eran ms difciles y costosos de construir (por los numerosos dispositivos de E/S que necesitan), no fueron comunes sino a principios de los aos 60. Al crecer la popularidad del tiempo compartido, los cientficos han tratado de combinar los sistemas por lotes y de tiempo compartido en uno solo. Diversos sistemas de computacin diseados inicialmente como sistemas por lotes se han modificado para crear un subsistema de tiempo compartido. Por ejemplo el sistema por lotes OS/360 de IBM, se modifico para permitir la opcin de tiempo compartido (TSO, Time-Sharing Option). As mismo varios sistemas de tiempo compartido han aadido un subsistema por lotes. Hoy en da la mayora de los sistemas ofrecen tanto el procesamiento por lotes como el tiempo compartido, an que su diseo clsico se inclina hacia uno u otro tipo.Los S.O de tiempo compartido son complejos y ofrecen algn mecanismo para la ejecucin concurrente. Adems, como en la multiprogramacin, hay que conservar simultneamente varios programas en la memoria, lo que requiere algn tipo de administracin de memoria, proteccin y planificacin de la cpu. Para lograr un tiempo de respuesta razonable hay que intercambiar los trabajos entre la memoria principal y el disco que ahora funciona como almacenamiento de respaldo para la memoria principal. Por lo tanto, tambin es necesario proporcionar administracin del disco. Los sistemas de tiempo compartido deben ofrecer, adems un sistema de archivo en lnea y proteccin. La multiprogramacin y el tiempo compartido son los aspectos centrales de los sistemas operativos modernos. Los S.O de tiempo compartido tratan de proporcionar un reparto equitativo de los recursos comunes para dar la impresin a los usuarios de que poseen una computadora independiente. En estos sistemas el administrador de memoria proporciona aislamiento y proteccin de los programas, ya que generalmente no tienen necesidad de comunicarse entre ellos. El control de E/S se encarga de proporcionar o retirar la asignacin a los dispositivos de forma que se preserve la integridad del sistema y se proporcione servicio a todos los usuarios. El administrador de archivos proporciona proteccin y control en el acceso de la informacin, dada la posibilidad de concurrencia y conflictos al tratar de acceder a los archivos. Sistemas operativos de tiempo real

Estos sistemas tienen como objetivo proporcionar tiempos ms rpidos de respuesta, procesar la informacin sin tiempos muertos. En estos sistemas el administrador de memoria es relativamente menos solicitado debido a que muchos procesos residen permanentemente en memoria. El administrador de archivos se encuentra normalmente en grandes sistemas de tiempo real y su objetivo principal es manejar la velocidad de acceso, ms que la utilizacin eficaz del almacenamiento secundario.1.5 Estructura (niveles o estratos de diseo).Se deben observar dos tipos de requisitos cuando se construye un S.O, los cuales son:

Requisitos de usuario: Sistema fcil de usar y de aprender, seguro, rpido y adecuado al uso al que se le quiere destinar. Requisitos del software: Donde se engloban aspectos como el mantenimiento, forma de operacin, restricciones de uso, eficiencia, tolerancia frente a los errores y flexibilidad.

A continuacin se describen las distintas estructuras que presentan los S.O. para satisfacer las necesidades que de ellos se quieren obtener.

Estructura monoltica.

Es la estructura de los primeros S.O constituidos fundamentalmente por un solo programa compuesto de un conjunto de rutinas entrelazadas de tal forma que cada una puede llamar a cualquier otra (Ver Fig. 1.8). Este tipo de organizacin es, con diferencia, la ms comn. El sistema operativo se escribe como una coleccin de procedimientos, cada uno de los cuales puede llamar a los dems cada vez que as lo requiera. Cuando se usa esta tcnica, cada procedimiento del sistema tiene una interfaz bien definida en trminos de parmetros y resultados, y cada uno de ellos es libre de llamar a cualquier otro, si ste ltimo proporciona un clculo til para el primero.

Para construir el programa objeto real del sistema operativo siguiendo este punto de vista, se compilan de forma individual los procedimientos, o los ficheros que contienen los procedimientos, y despus se enlazan en un slo fichero objeto con el enlazador. En trminos de ocultacin de la informacin, sta es prcticamente nula: cada procedimiento es visible a los dems (en contraste con una estructura con mdulos o paquetes, en la que la mayora de la informacin es local a un mdulo, y donde slo los datos sealados de forma expresa pueden ser llamados desde el exterior del mdulo).

Los servicios (mediante llamadas al sistema) que proporciona el sistema operativo se solicitan colocando los parmetros en lugares bien definidos, como los registros o la pila, para despus ejecutar una instruccin especial de trampa, a veces referida como llamada al ncleo o llamada al supervisor. Esta instruccin cambia la mquina del modo usuario al modo ncleo (tambin conocido como modo supervisor), y transfiere el control al sistema operativo, lo que se muestra en el evento (1) de la figura 1.8.

El sistema operativo examina entonces los parmetros de la llamada para determinar cual de ellas se desea realizar, como se muestra en (2) de la figura 1.8. A continuacin, el sistema operativo analiza una tabla que contiene en la entrada k un apuntador al procedimiento que implementa la k-sima llamada al sistema. Esta operacin, que se muestra en (3) de la figura 1.8, identifica el procedimiento de servicio, al cual se llama. Por ltimo, la llamada al sistema termina y el control vuelve al programa del usuario.

Esta organizacin sugiere una estructura bsica del sistema operativo:

Un programa principal que llama al procedimiento del servicio solicitado.

Un conjunto de procedimientos de servicio que lleva a cabo las llamadas al sistema.

Un conjunto de procedimientos de utilidades que ayudan a los procedimientos de servicio.

En este modelo, para cada llamada al sistema existe un procedimiento de servicio que se encarga de ella. Los procedimientos de utilidad hacen cosas necesarias para varios procedimientos de servicio, como por ejemplo, buscar los datos del programa del usuario. Esta divisin de los procedimientos en tres capas se muestra en la figura 1.9.

Las caractersticas fundamentales de este tipo de estructura son:

Construccin del programa final a base de mdulos compilados separadamente que se unen a travs del ligador. Buena definicin de parmetros 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 estn hechos a medida, por lo que son eficientes y rpidos en su ejecucin y gestin, pero por lo mismo carecen de flexibilidad para soportar diferentes ambientes de trabajo o tipos de aplicaciones. Fig. 1.2 estructura monoltica.

Modelo cliente-servidor

Una tendencia de los sistema operativos modernos es la de trasladar el cdigo a capas superiores, y eliminar la mayor parte posible del sistema operativo para mantener un ncleo mnimo. El punto de vista usual es el implantar la mayora de las funciones del sistema operativo como procesos de usuario. Para solicitar un servicio, como la lectura de un bloque de cierto fichero, un proceso de usuario (denominado en este caso proceso cliente) enva la solicitud a un proceso servidor, que realiza el trabajo y devuelve la respuesta.

En este modelo, que se muestra en la figura 5.3, lo nico que hace el ncleo es controlar la comunicacin entre los clientes y los servidores. Al separar el sistema operativo en partes, cada una de ellas controla una faceta del sistema, como el servicio a ficheros, servicio a procesos, servicio a terminales o servicio a la memoria; cada parte es pequea y controlable. Adems, puesto que todos los servidores se ejecutan como procesos en modo usuario, y no en modo ncleo, no tienen acceso directo al hardware. En consecuencia, si hay un error en el servidor de ficheros ste puede fallar, pero esto no afectar en general a toda la mquina.

Otra de las ventajas del modelo cliente-servidor es su capacidad de adaptacin para su uso en sistemas distribuidos (vase la figura 5.4). Si un cliente se comunica con un servidor mediante mensajes, el cliente no necesita saber si el mensaje se gestiona de forma local, en su mquina, o si se enva por medio de una red a un servidor en una mquina remota. En lo que respecta al cliente, lo mismo ocurre en ambos casos: se envi una solicitud y se recibi una respuesta.

La idea anterior de un ncleo que slo controla el transporte de mensajes de clientes a servidores, y viceversa, no es totalmente real. Algunas funciones del sistema operativo (como la introduccin de rdenes en los registros fsicos de los controladores de E/S) son difciles, si no es que imposible de realizar, a partir de programas de usuario. Existen dos formas de afrontar este problema. Una es hacer que algunos procesos de servidores crticos (por ejemplo, los gestores de los dispositivos de E/S) se ejecuten en realidad en modo ncleo, con acceso total al hardware, pero de forma que se comuniquen con los dems procesos mediante el mecanismo normal de mensajes.

La otra forma es construir una cantidad mnima de mecanismos dentro del ncleo, pero manteniendo las decisiones de poltica relativos a los usuarios dentro del espacio de los usuarios. Por ejemplo, el ncleo podra reconocer que cierto mensaje enviado a una direccin especial indica que se tome el contenido de ese mensaje y se cargue en los registros del controlador de algn disco, para iniciar la lectura del disco. En este ejemplo, el ncleo ni siquiera inspeccionara los bytes del mensaje para ver si son vlidos o tienen algn sentido; slo los copiara ciegamente en los registros del controlador del disco. Es evidente que debe utilizarse cierto esquema para limitar tales mensajes slo a los procesos autorizados. La separacin entre mecanismos y poltica es un concepto importante, aparece una y otra vez en diversos contextos de los sistemas operativos.

Estructura jerrquica.

A medida que fueron creciendo las necesidades de los usuarios y se perfeccionaron los sistemas, se hizo necesaria una mayor organizacin del software del S.O., donde una parte del sistema contena subpartes y esto organizado en forma de niveles.

Se dividi el S.O en pequeas partes, de tal forma que cada una de ellas estuviera perfectamente definida y con un claro interface con el resto de elementos, constituyendo una estructura jerrquica o de niveles en los S.O, el primero de los cuales fue denominado THE (Technische Hogeschool, Eindhoven), de Dijkstra, que se utiliz con fines didcticos (tabla. 1). Se puede pensar tambin en estos sistemas como si fueran `multicapa. Multics y Unix caen en esa categora.5 Operador

4 Programas del Usuario

3 Control de Entrada Salida

2 Comunicaciones Operador Proceso

1 Administracin de la Memoria y del Disco

0 - Asignacin del Procesador y Multiprogramacin

Tabla 1: Estructura del S.O. en capas "THE".

Descripcin de capas:

Capa 0: Trabaja con la asignacin del procesador. Alterna entre los procesos cuando ocurren las interrupciones o expiran los cronmetros. Proporciona la multiprogramacin bsica.

Capa 1: Administra la memoria. Asegura que las pginas (porciones de memoria) requeridas de los procesos lleguen a memoria cuando fueran necesarias. Capa 2: Administra la comunicacin entre cada proceso y la consola del operador. Por sobre esta capa, cada proceso tiene su propia consola de operador.

Capa 3: Controla los dispositivos de e / s y almacena en buffers los flujos de informacin entre ellos. Por sobre la capa 3 cada proceso puede trabajar con dispositivos abstractos de e / s en vez de con dispositivos reales.

Capa 4: Aloja los programas del usuario. Los programas. del usuario no tienen que preocuparse por el proceso, memoria, consola o control de e / s. Capa 5: Localiza el proceso operador del sistema.

Una generalizacin mas avanzada del concepto de capas se presento con Multics (MIT, Bell Labs y General Electric): Multics: multiplexed information and computing service. Presenta una estructura en anillos concntricos, siendo los interiores los privilegiados.

Un procedimiento de un anillo exterior, para llamar a un procedimiento de un anillo interior, debe hacer el equivalente a una llamada al sistema.

En la estructura anterior se basan prcticamente la mayora de los S.O actuales. Otra forma de ver este tipo de sistema es la denominada de anillos concntricos o "rings" (Ver Fig. 1.3). Fig. 1.3 organizacin jerrquica anillos.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 ms internas del sistema operativo o ncleo del sistema estarn ms protegidas de accesos indeseados desde las capas ms externas. Las capas ms internas sern, por tanto, ms privilegiadas que las externas.

(Simultaneous Peripheral Operation On Line: operacin simultnea de perifricos en lneaMquina Virtual.

Se trata de un tipo de S.O que presentan una interface a cada proceso, mostrando una mquina que parece idntica a la mquina real subyacente. Estos S.O separan dos conceptos que suelen estar unidos en el resto de sistemas: la multiprogramacin y la mquina extendida. El objetivo de los S.O de mquina virtual es el de integrar distintos sistemas operativos dando la sensacin de ser varias mquinas diferentes.

Se separan totalmente las funciones de multiprogramacin y de mquina extendida. Existe un elemento central llamado monitor de la mquina virtual que:

Se ejecuta en el hardware. Realiza la multiprogramacin. Proporciona varias mquinas virtuales a la capa superior.

Las mquinas virtuales instrumentan copias exactas del hardware simple, con su modo ncleo/usuario, E/S, interrupciones y todo lo dems que posee una mquina real.

Pueden ejecutar cualquier S.O. que se ejecute en forma directa sobre el hardware.

Las distintas mquinas virtuales pueden ejecutar distintos S.O. y en general as lo hacen. Soportan perifricos virtuales.

Ejemplo de S.O. representativo de esta estructura: VM/370 de IBM (Ver Fig. 1.4): Fig. 1.4 La estructura de VM/370 con CMS.

Las m. v. generalmente utilizaran, entre otros, el S. O. CMS: Conversational Monitor System. Cuando un programa CMS ejecuta una llamada al sistema:

La llamada es atrapada por el S. O. en su propia m. v.; no pasa directamente al VM/370. CMS proporciona las instrucciones de e / s en hardware para la lectura del disco virtual o lo necesario para efectuar la llamada. VM/370 atrapa estas instrucciones de e / s y las ejecuta sobre el hardware verdadero. Fig. 1.5 maquina virtual

El ncleo de estos S.O se denomina monitor virtual y tiene como misin llevar a cabo la multiprogramacin, presentando a los niveles superiores tantas mquinas virtuales como se soliciten. Estas mquinas virtuales no son mquinas extendidas, sino una rplica de la mquina real, de manera que en cada una de ellas se pueda ejecutar un sistema operativo diferente, que ser el que ofrezca la mquina extendida al usuario (Ver Fig. 1.5).

Cliente-servidor ( Microkernel)

El tipo ms reciente de sistemas operativos es el denominado Cliente-servidor, que puede ser ejecutado en la mayora de las computadoras, ya sean grandes o pequeas.

Este sistema sirve para toda clase de aplicaciones por tanto, es de propsito general y cumple con las mismas actividades que los sistemas operativos convencionales.

El ncleo tiene como misin establecer la comunicacin entre los clientes y los servidores. Los procesos pueden ser tanto servidores como clientes. Por ejemplo, un programa de aplicacin normal es un cliente que llama al servidor correspondiente para acceder a un archivo o realizar una operacin 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 ncleo provee solamente funciones muy bsicas de memoria, entrada/salida, archivos y procesos, dejando a los servidores proveer la mayora que el usuario final o programador puede usar. Estos servidores deben tener mecanismos de seguridad y proteccin que, a su vez, sern filtrados por el ncleo que controla el hardware. Una tendencia en los S.O. modernos es la de explotar la idea de mover el cdigo a capas superiores y mantener un ncleo mnimo.Para solicitar un servicio (por ejemplo: lectura de un bloque de cierto archivo) segn el modelo cliente/servidor: (Ver Fig. 1.6)1. El proceso del usuario (proceso cliente) enva la solicitud a un proceso servidor: 2. Realiza el trabajo y regresa la respuesta.3. El ncleo controla la comunicacin entre los clientes y los servidores.

Fig. 1.6 Para solicitar un servicio (por ejemplo: lectura de un bloque de cierto archivo) segn el modelo cliente/servidor:

Se fracciona el S.O. en partes, cada una controlando una faceta:

Servicio a archivos, a procesos, a terminales, a memoria, etc., cada parte pequea y ms fcilmente controlable.

Los servidores se ejecutan como procesos en modo usuario:

No tienen acceso directo al hardware. Se aslan y acotan ms fcilmente los problemas.

Se adapta para su uso en los sistemas distribuidos:

Si un cliente se comunica con un servidor mediante mensajes:

No necesita saber si el mensaje se atiende localmente o mediante un servidor remoto, situado en otra mquina conectada. Enva una solicitud y obtiene una respuesta.

Algunas funciones del S.O., por ejemplo el cargado de comandos en los registros fsicos del dispositivo de E/S, presentan problemas especiales y distintas soluciones:

Ejecucin en modo ncleo, con acceso total al hardware y comunicacin con los dems procesos mediante el mecanismo normal de mensajes. Construccin de un mnimo de mecanismos dentro del ncleo manteniendo las decisiones de poltica relativas a los usuarios dentro del espacio del usuario.

1.6 Todas las operaciones en las que participan procesos son controladas por la parte del sistema operativo denominada ncleo. El ncleo normalmente representa solo una pequea parte de lo que por lo general se piensa que es todo el sistema operativo, pero es tal vez el cdigo que mas se utiliza. Por esta razn, el ncleo reside por lo regular en la memoria principal, mientras que otras partes del sistema operativo son cargadas en la memoria principal solo cuando se necesitan.

Una de las funciones ms importantes incluidas en el ncleo es el procesamiento de las interrupciones. En los grandes sistemas multiusuarios se dirige al procesador un flujo continuo de interrupciones, por lo cual es necesario dar una respuesta rpida a tales interrupciones para aprovechar bien los recursos del sistema y proporcionar tiempos de respuesta aceptables a los usuarios interactivos.

El ncleo inhabilita las interrupciones cuando atiende una interrupcin y las habilita nuevamente una vez que ha completado el proceso de la interrupcin. Cuando se da un flujo continuo de interrupciones por un periodo largo; esto puede ocasionar un elevado tiempo de respuesta a las interrupciones. Por ello, los ncleos se disean para realizar el mnimo posible de procesamiento en cada interrupcin y dejar que el resto lo realice el proceso apropiado del sistema, que puede operar mientras el ncleo se habilita para atender otras interrupciones. Esto significa que las interrupciones permanezcan habilitadas un porcentaje mucho mayor del tiempo y que el sistema responde mejor.Funciones de ncleo.

El ncleo de un S.O normalmente contiene el cdigo necesario para realizar las siguientes funciones. al menos cinco Manejo de interrupciones Creacin y destruccin de procesos. Cambio de estado de los procesos. Despacho Suspensin y reanudacin de procesos. Sincronizacin de procesos. Comunicaron entre procesos. Manipulacin de los bloques de control de procesos. Apoyo para las actividades de entrada/salida. Apoyo para asignacin y liberacin de memoria. Apoyo para el sistema de archivos Apoyo para el mecanismo de llamada y retorno de un procesamiento.En informtica, el kernel (tambin conocido como ncleo) es la parte fundamental de un sistema operativo. Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora o en forma ms bsica, es el encargado de gestionar recursos, a travs de servicios de llamada al sistema. Como hay muchos programas y el acceso al hardware es limitado, el ncleo tambin se encarga de decidir qu programa podr hacer uso de un dispositivo de hardware y durante cuanto tiempo, lo que se conoce como multiplexado. Acceder al hardware directamente puede ser realmente complejo, por lo que los ncleos suelen implementar una serie de abstracciones del hardware. Esto permite esconder la complejidad, y proporciona una interfaz limpia y uniforme al hardware subyacente, lo que facilita su uso para el programador.

Hay cuatro grandes tipos de ncleos:

Los ncleos monolticos facilitan abstracciones del hardware subyacente realmente potentes y variadas. Los microncleos (o microkernel) proporcionan un pequeo conjunto de abstracciones simples del hardware, y usan las aplicaciones llamadas servidores para ofrecer mayor funcionalidad.

Los hbridos (microncleos modificados) son muy parecidos a los microncleos puros, excepto porque incluyen cdigo adicional en el espacio de ncleo para que se ejecute ms rpidamente. Los exoncleos no facilitan ninguna abstraccin, pero permiten el uso de bibliotecas que proporcionan mayor funcionalidad gracias al acceso directo o casi directo al hardware.

Microncleos

El enfoque microncleo consiste en definir una abstraccin muy simple sobre el hardware, con un conjunto de primitivas o llamadas al sistema que implementan servicios del sistema operativo mnimos, como la gestin de hilos, el espacio de direccionamiento y la comunicacin entre procesos.

El objetivo principal es la separacin de la implementacin de los servicios bsicos y de la poltica de funcionamiento del sistema. Por ejemplo, el proceso de bloqueo de E/S se puede implementar con un servidor en espacio de usuario ejecutndose encima del microncleo. Estos servidores de usuario, usados para gestionar las partes de alto nivel del sistema, son muy modulares y simplifican la estructura y diseo del ncleo. Si falla uno de estos servidores, no se colgar el sistema entero, y se podr reiniciar este mdulo independientemente del resto.

Algunos ejemplos de microncleos:

AIX La familia de microncleos L4 El microncleo Mach, usado en GNU Hurd y en Mac OS X Minix MorphOS QNX RadiOS VSTa

Ncleos monolticos en contraposicin a microncleos

Frecuentemente se prefieren los ncleos monolticos frente a los microncleos debido al menor nivel de complejidad que comporta el tratar con todo el cdigo de control del sistema en un solo espacio de direccionamiento. Por ejemplo, XNU, el ncleo de Mac OS X, est basado en el ncleo Mach 3.0 y en FreeBSD, en el mismo espacio de direccionamiento para disminuir la latencia que comporta el diseo de microncleo convencional.

A principios de los aos 1990, los ncleos monolticos se consideraban obsoletos. El diseo de Linux como un ncleo monoltico en lugar de como un microncleo fue el tema de una famosa disputa entre Linus Torvalds y Andrew Tanenbaum. Los argumentos de ambas partes en esta discusin presentan algunas motivaciones interesantes.

Los ncleos monolticos suelen ser ms fciles de disear correctamente, y por lo tanto pueden crecer ms rpidamente que un sistema basado en microncleo, pero hay casos de xito en ambos bandos. Los microncleos suelen usarse en robtica embebida o computadoras mdicas, ya que la mayora de los componentes del sistema operativo residen en su propio espacio de memoria privado y protegido. Esto no sera posible con los ncleos monolticos, ni siquiera con los modernos que permiten cargar mdulos.

Aunque Mach es el microncleo generalista ms conocido, se han desarrollado otros microncleos con propsitos ms especficos. L3 fue creado para demostrar que los microncleos no son necesariamente lentos. La familia de microncleos L4 es la descendiente de L3, y una de sus ltimas implementaciones, llamada Pistachio, permite ejecutar Linux simultneamente con otros procesos, en espacios de direccionamiento separados.

QNX es un sistema operativo que ha estado disponible desde principios de los aos 1980, y tiene un diseo de microncleo muy minimalista. Este sistema ha conseguido llegar a las metas del paradigma del microncleo con mucho ms xito que Mach. Se usa en situaciones en que no se puede permitir que haya fallos de software, lo que incluye desde brazos robticos en naves espaciales, hasta mquinas que pulen cristal donde un pequeo error podra costar centenas de miles de euros.

Mucha gente cree que como Mach bsicamente fall en el intento de resolver el conjunto de problemas que los microncleos intentaban subsanar, toda la tecnologa de microncleos es intil. Los partidarios de Mach afirman que sta es una actitud estrecha de miras que ha llegado a ser lo suficientemente popular para que mucha gente la acepte como verdad.

Ncleos hbridos (microncleos modificados)

Los ncleos hbridos fundamentalmente son microncleos que tienen algo de cdigo no esencial en espacio de ncleo para que ste se ejecute ms rpido de lo que lo hara si estuviera en espacio de usuario. ste fue un compromiso que muchos desarrolladores de los primeros sistemas operativos con arquitectura basada en microncleo adoptaron antes que se demostrara que los microncleos pueden tener muy buen rendimiento. La mayora de sistemas operativos modernos pertenecen a esta categora, siendo el ms popular Microsoft Windows. XNU, el ncleo de Mac OS X, tambin es un microncleo modificado, debido a la inclusin de cdigo del ncleo de FreeBSD en el ncleo basado en Mach. DragonFly BSD es el primer sistema BSD que adopta una arquitectura de ncleo hbrido sin basarse en Mach.

Algunos ejemplos de ncleos hbridos:

Microsoft Windows NT, usado en todos los sistemas que usan el cdigo base de Windows NT XNU (usado en Mac OS X) DragonFly BSD ReactOS

Hay gente que confunde el trmino ncleo hbrido con los ncleos monolticos que pueden cargar mdulos despus del arranque, lo que es un error. Hbrido implica que el ncleo en cuestin usa conceptos de arquitectura o mecanismos tanto del diseo monoltico como del microncleo, especficamente el paso de mensajes y la migracin de cdigo no esencial hacia el espacio de usuario, pero manteniendo cierto cdigo no esencial en el propio ncleo por razones de rendimiento.

Exoncleos

Los exoncleos, tambin conocidos como sistemas operativos verticalmente estructurados, representan una aproximacin radicalmente nueva al diseo de S.O.La idea subyacente es permitir que el desarrollador tome todas las decisiones relativas al rendimiento del hardware. Los exoncleos son extremadamente pequeos, ya que limitan expresamente su funcionalidad a la proteccin y el multiplexado de los recursos. Se llaman asi porque toda la funcionalidad deja de estar residente en memoria y pasa a estar fuera, en librerias dinmicas.

Los diseos de ncleos clsicos (tanto el monoltico como el microncleo) abstraen el hardware, escondiendo los recursos bajo una capa de abstraccin del hardware, o detrs de los controladores de dispositivo. En los sistemas clsicos, si se asigna memoria fsica, nadie puede estar seguro de cul es su localizacin real, por ejemplo.

La finalidad de un exoncleo es permitir a una aplicacin que solicite una regin especfica de la memoria, un bloque de disco concreto, etc., y simplemente asegurarse que los recursos pedidos estn disponibles, y que el programa tiene derecho a acceder a ellos.

Debido a que el exoncleo slo proporciona una interfaz al hardware de muy bajo nivel, careciendo de todas las funcionalidades de alto nivel de otros S.O, ste es complementado por una biblioteca de sistema operativo. Esta biblioteca se comunica con el exoncleo subyacente, y facilita a los programadores de aplicaciones las funcionalidades que son comunes en otros S.O.

Algunas de las implicaciones tericas de un sistema exoncleo son que es posible tener distintos tipos de sistemas operativos (p.e. Windows, Unix) ejecutndose en un solo exoncleo, y que los desarrolladores pueden elegir prescindir de o incrementar funcionalidades por motivos de rendimiento.

Actualmente, los diseos exoncleo estn fundamentalmente en fase de estudio y no se usan en ningn sistema popular. Un concepto de S.O es Nemesis, creado por la Universidad de Cambridge, la Universidad de Glasgow, Citrix Systems y el Instituto Sueco de Informtica. El MIT tambin ha diseado algunos sistemas basados en exoncleos.1.6.1 Interrupciones (FLIH).En el esquema de interrupciones de las procesadores a gran escala de IBM, el S.O incluye rutinas denominados manejadores de interrupciones de primer nivel (first level interript handlers, FLIH) para procesar las diferentes clases de interrupciones. Por tanto, hay seis manejadores de interrupciones de primer nivel: FLIH de SVC, FLIH de E/S, FLIH externo, FLIH de reinicio, FLIH de verificacin del programa y FLIH de verificacin de la maquina. Cuando ocurre una interrupcin, el S.O guarda el estado de proceso interrumpido y transfiere el control al manejador de interrupciones de primer nivel apropiado. Esto se logra mediante una tcnica llamada cambio de contexto. Los manejadores de interrupciones de primer nivel deben distinguir entre interrupciones de la misma clase; el procesamiento de estas interrupciones es realizado entonces por alguno de los manejadores de interrupciones de segundo nivel.

Aunque algunos autores utilizan criterios distintos, nosotros veremos las siguientes:

Un usuario realiza una llamada al sistema, concretamente una instruccin trampa (a veces, a las llamadas al sistema se les llaman interrupciones software). En un proceso de usuario se da una condicin de error (por ejemplo una divisin entre cero). Esta condicin puede tratarse como una "interrupcin interna" generada por el procesador y ser gestionada en primera instancia por una rutina de interrupcin. A estas condiciones de error algunas veces se les llama excepciones. Se intenta ejecutar una instruccin reservada estando en modo usuario. Ello puede considerarse como un tipo particular de error. Un controlador de un dispositivo de E/S genera una interrupcin para indicar el fin de la E/S.

La ocurrencia de cualquiera de estas circunstancias, incluida las interrupciones, provoca el cambio automtico del procesador de modo usuario a modo supervisor.

El controlador de interrupciones de primer nivel -FLIH, del ingls First-Level Interrupt Handler- es la parte del sistema operativo responsable de proporcionar la respuesta adecuada a las seales procedentes tanto del exterior de la CPU (interrupciones de un controlador) como de dentro del procesador (excepciones y llamadas al sistema). La misin del FLIH es doble: a) Determinar el origen de las interrupciones.

b) Iniciar el servicio de las mismas.Ya hemos visto que era el mecanismo de interrupcin del ordenador el responsable de salvar al menos el valor del contador de programa del proceso interrumpido. Hay que asegurar tambin que se salven lo otros registros que vaya a emplear el FLIH y que estuviesen siendo utilizados por el proceso interrumpido. Si esto no lo realiza el mecanismo de interrupcin, debe ser la primera operacin que realice el FLIH. Como que ste es un programa relativamente sencillo, definido adems sobre una zona dedicada de memoria, el conjunto de registros afectados no ser muy grande, posiblemente slo un acumulador. Ser desde luego considerablemente menor que la informacin de estado del procesador del proceso interrumpido, que no hace falta que se guarde en su totalidad, ya que puede reemprenderse dicho proceso tan pronto como se haya atendido la interrupcin.

Una estrategia alternativa a la de salvar el valor de los registros, adoptada por ejemplo por algunos ordenadores de la serie PDP-11, es la de disponer de un conjunto suplementario de registros para ser utilizados slo en modo supervisor. El FLIH puede entonces usar estos registros y deja los del proceso interrumpido intacto.

La determinacin del origen de la interrupcin puede llevarse a cabo ms o menos fcilmente dependiendo del hardware de que se disponga. En el caso ms elemental, en el que todas las interrupciones transfieren el control del programa a la misma posicin de memoria, debe realizarse la identificacin a travs de una secuencia de consultas de los status (estados) de todas las posibles fuentes de interrupcin. Esta secuencia se conoce frecuentemente con el nombre de cadena de saltos.En algunos ordenadores (por ejemplo el PDP-11), la cadena de saltos se hace innecesaria gracias a la utilizacin de un hardware capaz de distinguir las diferentes fuentes de interrupcin y transferir el control del programa a una posicin de memoria distinta para cada una de ellas. Ello reduce el tiempo empleado en reconocer una interrupcin a costa de utilizar un conjunto adicional de posiciones de memoria. Una solucin de compromiso que aparece en varios ordenadores, es la de disponer de un nmero reducido de posiciones de memoria de interrupcin, cada una de las cuales est compartida por un grupo de dispositivos. De esta forma, la primera etapa del reconocimiento de la interrupcin la realiza el hardware, siendo suficiente para completar la identificacin, una pequea cadena de saltos asociada a cada una de las posiciones de memoria. La diferenciacin entre interrupciones generadas por un controlador, excepciones y llamadas al sistema se lleva a cabo muy a menudo de esta forma. El mecanismo de interrupcin puede facilitar la identificacin guardando informacin acerca de la interrupcin en alguna posicin prefijada de memoria.

Normalmente se inhiben las interrupciones del procesador central cuando se cambia de modo usuario a modo supervisor. Con ello se asegura que el valor de los registros almacenados al entrar en el FLIH no pueda alterarse debido a una interrupcin posterior que se d antes de salir del FLIH. Una interrupcin que ocurra mientras el mecanismo de interrupcin est inhibido, queda pendiente hasta que este mecanismo sea reactivado al volver al modo usuario. Este sistema no es vlido en situaciones en las que algn dispositivo necesite una respuesta mucho ms rpida que otros, si, por ejemplo, no se quiere que se pierda informacin. En tales casos es conveniente introducir la nocin de prioridad entre las distintas fuentes de interrupcin, permitiendo que una rutina de interrupcin sea a su vez interrumpida por una solicitud de servicio de un dispositivo de ms alta prioridad.

Algunos ordenadores permiten hacer todo esto desautorizando de forma selectiva algunas interrupciones dentro del FLIH; cuando ste sirve una interrupcin, inhibe todas las otras que tengan igual o menor prioridad. Hay que tener la precaucin, evidentemente, de guardar los registros de programa del proceso interrumpido en posiciones distintas de memoria, segn sea el nivel de prioridad de la interrupcin recibida.

Tambin es posible que el hardware de interrupcin pueda distinguir por s mismo los diferentes niveles de interrupcin, y transfiera el control del programa y guarde el contenido de los registros en posiciones distintas de memoria segn cada nivel. Una interrupcin de una determinada prioridad inhibe automticamente las otras de niveles iguales o inferiores.

La segunda misin del FLIH es la de iniciar el servicio de un interrupcin a travs de la llamada a una rutina de servicio apropiada al tipo de seal recibida. Hay que destacar el hecho de que debido a la circunstancia de que las rutinas de interrupcin se ejecutan en modo supervisor, con las otras interrupciones total o parcialmente inhibidas, es conveniente que dichas rutinas sean lo ms cortas posible. En general van a llevar a cabo una accin mnima, como por ejemplo transferir un carcter de un dispositivo de entrada a un buffer, dejando a cargo de un proceso que se ejecuta con las interrupciones permitidas la tarea de emprender la accin adecuada al carcter recibido.

Es importante destacar la circunstancia de que el que se d una interrupcin puede que altere el estado de un proceso. As, por ejemplo, un proceso que haya puesto en marcha una transferencia con un dispositivo, mientras dure la misma, ser bloqueado; aunque pasar a ser listo al recibir la interrupcin que seale el final de la transferencia en curso. Algunas llamadas al sistema, como una solicitud de E/S, provocarn que el proceso en curso no pueda proseguir. En todos los casos, el cambio de status lo realiza la rutina de interrupcin al modificar el campo correspondiente al estado del proceso en el PBC del proceso.

Una consecuencia de este cambio de status es que el proceso que se estaba ejecutando antes de darse la interrupcin puede que no sea el ms adecuado para ejecutarse despus de la misma. Puede darse el caso, por ejemplo, de que la interrupcin vuelva ejecutable un proceso que tenga mayor prioridad que el proceso en curso. En el tema siguiente vamos a discutir la cuestin de cundo conmutar la CPU entre procesos, as como la de decidir el proceso que debe ocupar la CPU.1.6.2 Despachador (Scheduler).Es el primer punto de entrada al subsistema de ejecucin de servicios. Recibe las solicitudes, les asigna prioridades en forma dinmica y las ordena para que sean procesadas segn dicha prioridad. La asignacin de prioridades la realiza segn ciertas polticas configurables por el Administrador, que obtiene del SystemCatalog.Las polticas son configurables de forma dinmica por el Administrador, el mismo no tiene ms que implementar la Interfase y definir en el archivo de configuracin del componente cuales son las polticas a usar y en que ssembly se encuentran.

La cola de pedidos en espera es en realidad una doble cola, la cual divide en pedidos de Alta prioridad y de Baja prioridad, contando con un agente (Hebra en paralelo) encargada de incrementar la prioridad de los pedidos de la cola de Baja prioridad y en caso de superar cierto valor, el pedido ser transferido a la cola de Alta Prioridad (Ver Fig. 1.7)

Fig. 1.7 Sistema de Colas del Despachador.

Mantiene en memoria una copia de la informacin almacenada en la base local, para optimizar el acceso a dicha informacin.1.6.3 Primitivas de comunicacin (IPC).

Los procesos en UNIX no comparten memoria, ni siquiera los padres con sus hijos. Por tanto, hay que establecer algn mecanismo en caso de que se quiera comunicar informacin entre procesos concurrentes. El sistema operativo UNIX define tres clases de herramientas de comunicacin entre procesos (IPC): los semforos, la memoria compartida y los mensajes.

El tipo de llamadas al sistema para estos IPCs es anlogo al de los semforos: existen sendas funciones shmget y msgget para crear o enlazarse a un segmento de memoria compartida o a una cola de mensajes, respectivamente. Para alterar propiedades de estos IPCs, incluyendo su borrado, estn las funciones shmctl y msgctl.

Para enviar o recibir mensajes, se utilizan las funciones msgsnd y msgrcv.

En este apartado se describirn brevemente algunas llamadas al sistema disponibles para el uso de las IPCs dentro de la programacin en C.

Semforos

Qu es un semforo para el UNIX? Formalmente es muy similar a la definicin clsica de Dijkstra, en el sentido de que es una variable entera con operaciones atmicas de inicializacin, incremento y decremento con bloqueo.

El UNIX define tres operaciones fundamentales sobre semforos:

semget Crea o toma el control de un semforo semctl Operaciones de lectura y escritura del estado del semforo. Destruccin del semforo semop Operaciones de incremento o decremento con bloqueo

Como el lenguaje C no tiene un tipo "semforo" predefinido, si queremos usar semforos tenemos que crearlos mediante una llamada al sistema (semget). Esta llamada permite crear un conjunto de semforos, en lugar de uno solo. Las operaciones se realizan atmicamente sobre todo el conjunto; esto evita interbloqueos y oscuras programaciones en muchos casos, pero para esta prctica es ms bien un engorro.

Al crear un semforo se nos devuelve un nmero identificador, que va a funcionar casi igual que los identificadores de fichero de las llamadas open, creat, etc. La funcin semget nos permite adems "abrir" un semforo que ya est creado. As, por ejemplo, si un proceso crea un semforo, otros procesos pueden sincronizarse con aqul (con ciertas restricciones) disponiendo del semforo con semget.

Para darle un valor inicial a un semforo, se utiliza la funcin semctl.

El UNIX no ofrece las funciones clsicas P y V o equivalentes, sino que dispone de una funcin general llamada semop que permite realizar una gama de operaciones que incluyen las P y V.

semctl tambin se emplea para destruir un semforo.

Llamadas al sistema para semforos

Esta es una descripcin resumida de las tres llamadas al sistema para operar con semforos (semget, semctl y semop). Para una informacin ms completa y fidedigna, dirjanse al manual de llamadas al sistema (seccin 2).

Para el correcto uso de todas estas funciones, han de incluir el fichero cabecera

Las tres funciones devuelven -1 si algo ha ido mal y en tal caso la variable errno informa del tipo de error.

Apertura o creacin de un semforo

Sintaxis:

int semget ( key_t key, int nsems, int semflg );

semget devuelve el identificador del semforo correspondiente a la clave key. Puede ser un semforo ya existente, o bien semget crea uno nuevo si se da alguno de estos casos:

a) key vale IPC_PRIVATE. Este valor especial obliga a semget a crear un nuevo y nico identificador, nunca devuelto por ulteriores llamadas a semget hasta que sea liberado con semctl.

b) key no est asociada a ningn semforo existente, y se cumple que (semflg & IPC_CREAT) es cierto.

A un semforo puede accederse siempre que se tengan los permisos adecuados.

Si se crea un nuevo semforo, el parmetro nsems indica cuntos semforos contiene el conjunto creado; los 9 bits inferiores de semflg contienen los permisos estilo UNIX de acceso al semforo (usuario, grupo, otros).

semflg es una mscara que puede contener IPC_CREAT, que ya hemos visto, o IPC_EXCL, que hace crear el semforo, pero fracasando si ya exista.

Ejemplo:

int semid = semget ( IPC_PRIVATE, 1, IPC_CREAT | 0744 );

Operaciones de control sobre semforos

Sintaxis:

int semctl ( int semid, int semnum, int cmd... );

Esta es una funcin compleja (y de interfaz poco elegante) para realizar ciertas operaciones con semforos. semid es un identificador de semforo (devuelto previamente por semget) y semnum, el semforo del conjunto sobre el que quieren trabajar. cmd es la operacin aplicada; a continuacin puede aparecer un parmetro opcional segn la operacin definida por cmd.

Las operaciones que les interesan a ustedes son

GETVAL semctl retorna el valor actual del semforo

SETVAL se modifica el valor del semforo (un cuarto parmetro entero da el nuevo valor)

IPC_RMID destruye el semforo

Ejemplos:

valor = semctl (semid,semnum,GETVAL);

semctl (semid,semnum,SETVAL,nuevo_valor);

Operaciones sobre semforos

Sintaxis:

int semop ( int semid, struct sembuf* sops, unsigned nsops );

Esta funcin realiza atmicamente un conjunto de operaciones sobre semforos, pudiendo bloquear al proceso llamador. semid es el identificador del semforo y sops es un apuntador a un vector de operaciones. nsops indica el nmero de operaciones solicitadas.

La estructura sembuf tiene estos campos:

struct sembuf {

unsigned short sem_num;// nmero del semforo dentro del conjunto

short

sem_op;// clase de operacin

// segn sea >0, = |semop|

semval -= |semop|

si semop>0

semval += semop

si semop==0

si semval = 0

SKIP

si semval != 0

si (semflag & IPC_NOWAIT)!=0

la funcin semop() retorna

si no

bloquearse hasta que semval == 0

Resumiendo un poco, si el campo semop de una operacin es positivo, se incrementa el valor del semforo. Asimismo, si semop es negativo, se decrementa el valor del semforo si el resultado no es negativo. En caso contrario el proceso espera a que se d esa circunstancia. Es decir, semop==1 produce una operacin V y semop==-1, una operacin P.

Ejemplos de uso

Para ilustrar de forma concreta el empleo de semforos bajo UNIX, les mostramos unos ejemplos de subrutinas en C que les pueden servir como modelos para elaborar sus rutinas de sincronizacin en las prcticas de la asignatura.

En concreto, son unas funciones que implementan las operaciones P y V de un semforo clsico (inicializacin, incremento y decremento con posible bloqueo del proceso llamador). As definidas, o con pocas modificaciones, les pueden servir como la interfaz para uso de semforos en sus aplicaciones.

#include /* para key_t */

/* Crea un semforo con un valor inicial, dada una clave */

/* Devuelve el identificador (vlido o no) del semforo */

int crea_sem ( key_t clave, int valor_inicial );

/* Operaciones P y V sobre un semforo */

void sem_P ( int semid );

void sem_V ( int semid );

/***********************************/

/******** IMPLEMENTACIN *******/

/***********************************/

#include

#include

#define PERMISOS 0644

/* crea_sem: abre o crea un semforo */

int crea_sem ( key_t clave, int valor_inicial )

{

int semid = semget(

/* Abre o crea un semforo... */

clave,

/* con una cierta clave */

1,

/* con un solo elemento */

IPC_CREAT|PERMISOS/* lo crea (IPC_CREAT) con

unos PERMISOS */

);

if ( semid==-1 ) return -1;

/* Da el valor inicial al semforo */

semctl ( semid, 0, SETVAL, valor_inicial );

return semid;

}

/* abre_sem: Abrir un semforo que otro proceso ya cre */

int abre_sem (key_t clave)

{

return semget(clave,1,0);

}

/* Operaciones P y V */

void sem_P ( int semid )/* Operacin P */

{

struct sembuf op_P [] =

{

0, -1, 0/* Decrementa semval o bloquea si cero */

};

semop ( semid, op_P, 1 );

}

void sem_V ( int semid )/* Operacin V */

{

struct sembuf op_V [] =

{

0, 1, 0

/* Incrementa en 1 el semforo */

};

semop ( semid, op_V, 1 );}

Carencia total de S. O.

Completo acceso al lenguaje de mquina

Generacin Cero (dcada de 1940):

Carencia de S. O.

En los aos cincuenta comienzan como transicin entre trabajos, haciendo la misma ms simple.

Primera generacin (1945-1955): bulbos y conexiones:

En los aos sesenta aparecen los S. O. para sistemas compartidos con:

Multiprogramacin: varios programas de usuarios se encuentran al mismo tiempo en el almacenamiento principal, cambiando el procesador rpidamente de un trabajo a otro.

Multiprocesamiento: varios procesadores se utilizan en un mismo sistema para incrementar el poder de procesamiento.

Posteriormente aparece la independencia de dispositivo:

El programa del usuario especifica las caractersticas de los dispositivos que requieren los archivos.

El S. O. asigna los dispositivos correspondientes segn los requerimientos y las disponibilidades.

Segunda generacin (1955-1965): transistores y sistemas de procesamiento por lotes (batch):

Difusin de la multiprogramacin:

Particin de la memoria en porciones, con trabajos distintos en cada una de ellas.

Aprovechamiento del tiempo de espera consecuencia de operaciones de e/s, para utilizar la CPU para otros procesos.

Proteccin por hardware del contenido de cada particin de memoria.

Aparicin de tcnicas de spooling:

Simultaneous Peripheral Operation On Line: operacin simultnea y en lnea de perifricos.

Almacenamiento de trabajos de entrada y de salida en dispositivos transitorios rpidos (discos), para disminuir el impacto de los perifricos mas lentos.

Son sistemas de modos mltiples, es decir que deben soportar sistemas de propsitos generales; son grandes y complejos pero muy poderosos.

Interponen una capa de software entre el usuario y el hardware.

Aparecen los lenguajes de control de trabajos, necesarios para especificar el trabajo y los recursos requeridos.

Soportan timesharing (tiempo compartido), variante de la multiprogramacin con usuarios conectados mediante terminales en lnea, permitiendo la operacin en modo interactivo o conversacional.

Aparecen los sistemas de tiempo real, que requieren tiempos de respuesta muy exigentes, especialmente para usos industriales o militares.

Tercera generacin (1965-1980): circuitos integrados y multiprogramacin:

Aparicin de software amigable con el usuario, destinado a usuarios no profesionales y con una interfase grfica muy desarrollada.

Desarrollo de sistemas operativos de red y sistemas operativos distribuidos.

Sistemas operativos de red:

Los usuarios estn conscientes de la existencia de varias computadoras conectadas.

Cada mquina ejecuta su propio S. O. local.

Son similares a los S. O. de un solo procesador pero con el agregado de:

Controlador de interfaz de la red y su software de bajo nivel.

Software para conexin y acceso a archivos remotos, etc.

Sistemas operativos distribuidos:

Aparece ante los usuarios como un S. O. de un solo procesador, an cuando de soporte a varios procesadores.

Los usuarios no son conscientes del lugar donde se ejecutan sus programas o donde se encuentran sus archivos, ya que lo debe administrar el S. O. automticamente.

Deben permitir que un programa se ejecute mediante varios procesadores a la vez, maximizando el paralelismo.

Aparicin de emuladores de terminal para el acceso a equipos remotos desde computadoras personales (PC).

Gran nfasis en la seguridad, en especial por el desarrollo de los sistemas de comunicaciones de datos.

El S. O. crea un ambiente de trabajo segn el concepto de mquina virtual, que lo asla del funcionamiento interno de la mquina.

Proliferacin de sistemas de bases de datos, accesibles mediante redes de comunicacin.

Cuarta generacin (1980-1990): computadoras personales.

Generacin

MILAN MILEKOVIC, Sistemas Operativos conceptos y diseo segunda edicin, Pg. 3.

http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO0.htm#IG

H. M. Deitel, Sistemas Operativos, unix- os/2- ms-dos- macintosh- vm- mvs- sistemas abiertos, Pg. 3.

A. Silberschatz, J. Peterson, P. Galvin, Sistemas Operativos conceptos fundamentales, Pg. 3

A. Silberschatz, J. Peterson, P. Galvn, Sistemas Operativos conceptos fundamentales, Pg. 22.

H. M. Deitel, Sistemas Operativos, unix- os/2- ms-dos- macintosh- vm- mvs- sistemas abiertos, Pg. 63

14