Você está na página 1de 35

CAPITULO I

INTRODUCCIN A LOS SISTEMAS OPERATIVOS

Objetivos: Conocer el trmino sistemas operativos. Proporcionar un panorama general de la evolucin conceptual de los sistemas operativos Describir los componentes y estructuras de los sistemas operativos. Comprender la activacin del sistema operativo. Identificar la interfaz de usuario y del programador en un sistema operativo.

Elaborado por: Prof. Giovana Garrido

1.1. Conceptos de Sistema Operativo


En los aos 60 un Sistema Operativo se define como el software que controla el hardware. Esta definicin, sin embargo, se ha ido quedando obsoleta, porque progresivamente hasta hoy una parte de las funciones del Sistema Operativo no estn implementadas en software, sino en microcdigo. Tambin se dice que un SO es un conjunto de programas que por medio de abstracciones ponen el hardware del computador, de modo seguro, a disposicin del usuario. A continuacin se presentan otras definiciones de sistemas operativos dadas por los siguientes autores: H. Deitel: un SO es un programa que acta como interfaz entre el usuario de un computador y el HW del mismo, ofreciendo el entorno necesario para que el usuario pueda ejecutar programas Katzan: conjunto de programas y datos que ayudan a crear otros programas y a controlar su ejecucin Madnik y Donovan: conjunto de programas que gestionan los recursos del sistema, optimizan su uso y resuelven conflictos. (Stallings) Un SO es un programa que controla la ejecucin de los programas de aplicacin y que acta como interfaz entre el usuario del computador y el hardware del computador. (Milenkovic): un SO puede ser contemplado como una coleccin organizada de extensiones software del hardware, consistente en rutinas de control que hacen funcionar un computador y proporcionan un entorno para la ejecucin de los programas. Carretero define SO como un programa que tiene encomendadas una serie de funciones diferentes cuyo objetivo es simplificar el manejo y utilizacin de la computadora, hacindolo seguro y eficiente.

Podemos definir, hoy en da, un Sistema Operativo como un conjunto de programas, implementados tanto en software como en firmware, que hacen accesible el hardware. Este estar accesible significa: hacer el sistema disponible en la forma deseada, hacer que aumente el Rendimiento Total del sistema. Podemos decir que el Rendimiento Total se forma de dos partes: 1. Rendimiento Especfico (Throughput), que es el volumen de trabajo por unidad de tiempo. 2. Tiempo de respuesta (Disponibilidad), que debe ser bueno. Por tanto, el Sistema Operativo en s mismo es un interface entre el hardware del computador y el usuario: es por esto que se suele denominar al Sistema Operativo Gestor de Recursos. Finalmente, tenemos los Programas y Aplicaciones que manejan los programadores: Operador: el encargado de dirigir el Sistema Programador de Sistema: de mantenerlo Administrador de Sistema: de controlarlo En fin, podemos concluir que el Sistema Operativo es un sistema de comunicacin entre dos tipos de recursos, el hardware y el usuario: est formado por software y firmware, y consigue un mayor rendimiento del sistema.

1.1.1 Funciones y caractersticas de los Sistemas Operativos


Funciones
El Sistema Operativo crea el entorno en el que se ejecutan los procesos y para ello ofrece tanto a los procesos como a los usuarios una serie de funciones que varan mucho de unos sistemas a otros. Se pueden agrupar en tres grandes categora: Gestin de los recursos de la computadora: asignacin de recursos, proteccin y contabilidad. Ejecucin de servicios para los programas Ejecucin de los mandatos de los usuarios

Usuarios Programas de usuario Shell Servicios Ncleo Hardware

API Sistema operativo

Todo Sistema Operativo tiene que tener 3 prestaciones fundamentales: 1. Permitir que existan n usuarios trabajando sobre m aplicaciones (simultneamente o no). 2. Adems tiene que tener una serie de facilidades: procesadores de texto, compiladores, ensambladores, montadores... 3. Debe asegurar un flujo continuo de trabajo en forma de tareas batch o interactivas multiacceso. Las funciones de todo Sistema Operativo conforman las distintas partes con que se construye un SO. Las funciones que tiene un Sistema Operativo de propsito general varan mucho de unos a otros, pero las que todos tienen que tener son las siguientes: Multiacceso Gestin de memoria Secuenciamiento de trabajos Control de procesos Intrprete de OSCL Gestin de operaciones de E/S Gestin de dispositivos y ficheros Gestin de interrupciones Planificacin Control de errores y proteccin

Contabilidad del sistema, etc.

Aunque todas estas funciones las podemos resumir en 2 funciones bsicas:

A. Funciones desde el punto de vista del usuario. Van a transformar el hardware en una mquina ms tratable. Provisin de mquina virtual en varios aspectos: 1. En lo referente a la carga y ejecucin de programas Gestin de memoria. Que habr que presentarla en la forma y tamao adecuada a cada programa y usuario, dependiendo de sus necesidades y no de las caractersticas concretas de cada computador. Mecanismos de comunicacin o intercomunicacin entre procesos. Es decir, que deber existir un lenguaje de control que transmita a la mquina las peticiones del usuario: el OSCL. Adems, a ser posible, deber ser fcil y rpido de manejar. Gestin de interrupciones 2. En cuanto a las operaciones de E/S. Se trata de liberar al usuario de programas los mecanismos hardware, presentndole facilidades de E/S sencillas pero igual de potentes. 3. En cuanto al manejo de ficheros y dispositivos. El Sistema Operativo debe: a. Proporcionar acceso fcilmente a la informacin mediante nombres simblicos. b. Mantener la integridad de la informacin. 4. En cuanto a la deteccin y manejo de errores y proteccin. Diferentes equipos hardware proporcionan niveles de proteccin muy diferentes, es el Sistema Operativo el que tendr que incrementar el nivel de proteccin hasta el deseado. B. Funciones internas. Dan soporte a la comparticin de recursos. Motivos de la comparticin de recursos: Es ms barato Hay recursos -como la informacin- que por naturaleza son compartidos Nos permite trabajar usando trabajos ya creados (reutilizacin) Eliminacin de la redundancia de informacin. Problemas que acarrea la comparticin de recursos: Cmo dar soporte a varios accesos y ejecuciones simultneas Dnde ubicar los recursos compartidos y cmo protegerlos Funciones del Sistema Operativo para permitir la comparticin de recursos: 1. Asignacin de recursos Se trata de lograr aumentar la disponibilidad y el uso de los recursos. Hay algunos recursos (UCP, memoria...) que necesitan que el Sistema Operativo tenga algunos programas especiales que se encarguen de asignarlos, liberarlos, conmutarlos... como el Dispatcher quien se encarga de asignar la UCP. Hay otros recursos (los llamados dispositivos) que se asignan gracias a programas generales de asignacin y liberacin. 2. Proteccin Cuanto ms comparticin halla, mayor nivel de proteccin hace falta. Tiene 3 aspectos: a. Controlar la informacin en cuanto a usos y accesos b. Mantener la integridad de la informacin c. Controlar que no halla interferencias no deseadas sobre la informacin por parte de otros programas o usuarios
4

3. System Accounting (contabilidad del sistema) Consiste en llevar un registro del uso del sistema por parte de los distintos usuarios y procesos. Tiene 3 vertientes: a. Facturacin del servicio b. Sacar estadsticas del uso de cada uno de los recursos c. Nos permite hacer un tunning Caractersticas Gestin y reparto del conjunto de recursos Recursos escasos Proteccin para preservar recursos y procesos Cooperacin entre procesos

Cada uno de los administradores de los recursos, bsicamente debe: 1. Mantener actualizado un registro o contabilidad del estado o uso de los recursos. 2. Cumplir (en funcin de la poltica implementada a tal fin) con las demandas, decidiendo quin, cmo, cundo y por cunto tiempo recibe determinado recurso. 3. Asignar dicho recurso a quien lo demande. 4. Recuperar el recurso despus que se ha utilizado. Funcin de Proteccin se dice que el SO implementa como arbitro imparcial: Una Poltica: dado que asigna prioridades (de uso y/o de acceso a los recursos). Una Estrategia: ya que ordena los accesos y los conflictos Una Autoridad pues debe recuperar los recursos otorgados a los procesos y ordenar el uso de los mismos. Una Proteccin: brindando seguridad a los usuarios entre s y preservando la integridad de los recursos. Una Contabilidad: para llevar el control del uso y disponibilidad de los recursos. El S.O. ofrece: Facilidades para crear, manipular y eliminar objetos sobre los que se quiere realizar operaciones, a travs de la Gestin y Conservacin de la Informacin sobre ellos. Un ambiente para la ejecucin de trabajos, mediante la gestin del conjunto de recursos que permiten ejecutar los mismos. Facilidades para compartir el conjunto de recursos entre los usuarios, mediante un planeamiento y ordenamiento de los trabajos. La administracin del sistema consiste en el: Manejo y conservacin de la informacin: ofrece a los usuarios facilidades para crear, recuperar y eliminar objetos sobre los que se quieren realizar operaciones. Manejo del conjunto de recursos: que permiten ejecutar programas: El sistema crea el ambiente necesario para la ejecucin de los trabajos. Planeamiento y ordenacin de trabajos mediante un adecuado manejo y reparto del conjunto de recursos entre los usuarios.

1.2. Evolucin y tendencias de los Sistemas Operativos

En los primeros tiempos de la Informtica slo existe el hardware. De esta forma, cuando surge un problema y se intenta solucionar informticamente, hay que codificar para ello un programa completo con todas las instrucciones en bits: tan slo un montn de 1s y 0s (a esto se le llama sistemas de puerta abierta). Una vez que el problema est codificado se reserva tiempo de computador, y el propio usuario-analista-programador-operador enciende el aparato, carga el programa mediante switches y sigue el desarrollo mediante los indicadores de la consola. Para reservar el tiempo de utilizacin exista un esquema de reparto de tiempos, (dem Horario del Centro de Clculo). Pero este esquema tena 2 problemas: tiempos de no utilizacin de la mquina (me sobra tiempo del que haba reservado) el tiempo reservado se me queda corto.

Como ventaja podemos citar que en el momento en que disponemos de la mquina tambin disponemos de todos los recursos. Pero tambin existen varios inconvenientes, como son: el rendimiento es muy bajo porque los recursos muy caros estn infrautilizados la interaccin es muy complicada (pensar en 1s y 0s es muy difcil)

1.2.1. Tendencias actuales


Podemos resumir las tendencias actuales en cuatro trminos: 1. Se tiende a que la mquina sea lo ms amistosa posible: que el interface presentado por el Sistema Operativo proporcione un acceso y manejo fcil y guiado. Por ejemplo, con mens, ayudas, mensajes, etc. (User Friendly) 2. Se trata de ocultar a los usuarios todas las complejidades o detalles fsicos de los sistemas de forma que el usuario s7lo perciba lo que el Sistema Operativo le muestra. (Mquina Virtual). Si unimos a esto la existencia de las redes, podramos hacer que un trabajo que un usuario de la red mande ejecutar lo haga en otra mquina que el usuario ni siquiera sabe que existe. 3. Se tiende a hacer un uso ms extensivo de los sistemas distribuidos, es decir, sistemas que pueden cooperar con otros y a la vez trabajar de forma totalmente independiente. Esto consiste en que cada proceso haga operaciones locales y tome decisiones locales, pero adems participe en decisiones que afectan a otros sistemas con los que se comunica a travs de una red. El proceso distribuido hace las comunicaciones cada vez ms baratas y las velocidades de transmisin cada vez ms elevadas. 4. Procesos paralelos. Implica que existen varios procesadores trabajando en paralelo. Esto es posible gracias a que cada vez hay una mayor escala de integracin, lo cual se traduce en procesadores y memorias fsicamente pequeas pero con una capacidad de almacenamiento y proceso mucho mayores. Por ello, se logran mquinas masivamente paralelas, en las cuales el control del sistema est repartido entre varios procesadores. Para que todo esto sea viable hace falta desarrollar lenguajes de programacin concurrentes y tambin arquitecturas que nos permitan sacar el mayor provecho posible de la concurrencia. No debemos confundir PROCESO PARALELO con PROCESO DISTRIBUIDO, por ejemplo: si ejecutamos programas distintos en varios procesadores varios procesadores ejecutando un mismo proceso (ejecutndose todos a la vez) varios procesadores ejecutando un mismo proceso (pero no a la vez)

Ejemplos de Sistemas Operativos WINDOWS NT Sistema monousuario multitarea diseado para trabajar con PC y Estaciones de trabajo. Incorpora los ltimos adelantos. UNIX Sistema operativo multiusuario dirigido a todo tipo de computadoras. Siempre en grandes redes. Compatibilidad absoluta. OS/2 Sistemas de oficinas.

Resumen
Todos los sistemas acordes con las 4 tendencias van a ser: ms fiables, ms fciles de mantener y de extender, ms fciles de usar y con un rendimiento mucho mayor. Estas 4 cosas son factibles gracias a: la implantacin en microcdigo (firmware) de muchas de las funciones de los Sistemas Operativos la aplicacin de los avances de la Ingeniera del Software al diseo de los Sistemas Operativos.

1.3 Tipos de Sistemas Operativos


Existen muchos criterios de clasificacin de los Sistemas Operativos, cada uno de los cuales brinda una clasificacin propia. As, existen divisiones basadas en el tipo de memoria, tipo de almacenamiento secundario, tipo de aplicaciones o reas funcionales, accesibilidad, etc.

Segn el punto de vista del usuario


Aqu vamos a tomar como criterio la forma en la que el Sistema Operativo es percibido por el usuario, ya que la forma en la que se percibe est en relacin directa con el uso que se hace de l. De esta manera podemos dividir a los Sistemas Operativos en 5 grupos: Sistemas Monousuario y multiusuario Sistemas de Tiempo Real Sistemas Transaccionales Sistemas "Time Sharing" y Multiprogramados Sistemas Multiprocesador
_

Monousuario

En estos sistemas, la mquina virtual (la presentada por el S.O., es decir, la que ve el usuario) tiene un slo usuario y generalmente est dedicada a una sola funcin (crear ficheros, nombrar ficheros, guardar ficheros, ejecutar programas, etc.). El interface del S.O. constar, entonces, de un gestor de ficheros sencillo, utilidades de E/S y un intrprete de comandos tambin sencillo. Podemos enumerar las caractersticas de estos sistemas como sigue: Caractersticas gestin de ficheros (crear, borrar, guardar...) componer, ejecutar y modificar nuevos programas transferir informacin entre programas y dispositivos de E/S Funciones sistema de gestin de ficheros sencillo

intrprete de OSCL sencillo facilidades para operaciones de E/S

Cualidades facilidad de uso, es decir, proporcionar un buen interface eficacia, dado que el resultado del soporte hardware suele ser limitado facilidad de mantenimiento y de extensin, tanto en cuanto a dispositivos como en cuanto a programas fiabilidad Multiusuario Sistema de consulta de informacin Sistema de gestin de operaciones Sistema de propsito general
_

Sistemas de Tiempo Real

Existen muchos tipos de sistemas de tiempo real, como los sistemas de control de procesos, los de seguimiento de trayectorias, pilotaje de aviones, vigilancia mdica, gestin de centrales telefnicas, control de robots, etc. Todos estos sistemas tienen algo en comn, que es la limitacin de tiempo de proceso informtico: tienen que dar respuestas a unas determinadas entradas en un tiempo mnimo, tienen que responder casi instantneamente (de aqu lo de tiempo real). Caractersticas respuesta en tiempo real, es decir, existe una limitacin del tiempo empleado en el tratamiento informtico interconexin con elementos externos registro de informacin tratamiento de procesos prioritarios (sistemas de riesgo) Funciones regulacin, es decir, la accin sobre elementos externos. Tanto para captar informacin como para actuar sobre el proceso seguridad, es decir, debe haber una reaccin inmediata ante cualquier suceso o evento externo grabacin. Debe llevarse un registro del comportamiento del sistema controlado Cualidades fiabilidad disponibilidad, es decir, debe garantizarse la seguridad de los dispositivos controlados cumpliendo las restricciones de tiempo dadas debe incluir servicios mnimos en caso de anormalidades Un ejemplo de este tipo de sistemas es cualquier sistema de control, como ste: donde vemos otra de las caractersticas de los sistemas en tiempo real, la conexin con elementos externos. Los procesos que existen son cclicos: Regulacin - Control y, simultneamente, grabacin o registro de la informacin. Adems, debe existir otro tratamiento de proceso prioritario. El esquema general de estos sistemas se puede representar como: Sistemas Transaccionales Ejemplos de estos sistemas son: reservas de plazas en lneas areas, gestin de cuentas bancarias, consulta de documentos, etc.
8

Funciones gestionar un gran volumen de informacin (por ello, la Base de Datos suele estar presente siempre) existencia de un gran nmero de puntos de acceso, a veces, geogrficamente dispersos ejecutar operaciones predefinidas de forma interactiva existencia de un gran nmero de transacciones desarrollndose en forma paralela (concurrencia) Cualidades fiabilidad y seguridad. Deben existir unas reglas de integridad que aseguren la coherencia de la informacin compartida disponibilidad, es decir, que haya una tolerancia a fallos y un tiempo de respuesta adecuado Sistemas "Time Sharing" y Multiprogramados Caractersticas concurrencia, es decir, existen n procesos ejecutndose a la vez, lo cual implica que el S.O. deber conmutar los recursos entre los distintos procesos debe dar servicio a m usuarios simultneamente Se plantean una serie de problemas en los sistemas monousuarios y transaccionales: hay que dar servicio a cada usuario de forma que ste crea que tiene una mquina individual servicios de comparticin de datos y comunicacin Funciones definir la mquina virtual a asignar a cada usuario facilitar el uso compartido y la asignacin de recursos fsicos gestionar la informacin compartida gestionar la comunicacin entre usuarios y programas Cualidades Tienen que tener todas las cualidades tanto de los monousuario como de los transaccionales, destacando: un buen interface, es decir, ser fcilmente accesibles para proporcionar numerosos servicios deben ser fciles de extender y adaptar deben ser eficaces, con el fin de lograr un rendimiento total adecuado fiabilidad y seguridad disponibilidad Sistemas Multiprocesador Se caracterizan por la existencia de n procesadores, en los cuales se podrn ejecutar instrucciones en paralelo, instrucciones que en su ejecucin compartirn a veces memoria y/o perifricos. Lgicamente, con cada procesador podr existir un sistema de los vistos anteriormente. Por tanto, las funciones del interface en este caso sern todas las funciones vistas en cada uno de los sistemas anteriores, adems de la funcin de gestin de los n procesadores. Funciones gestin de los n procesadores, es decir, asignacin, conmutacin... y esto sobre todo en los sistemas fuertemente acoplados 7

gestin de las comunicaciones, o gestin teleinformtica. Sobre todo cuando los procesadores estn geogrficamente dispersos (son los llamados sistemas distribuidos)

Cualidades Todas las anteriores, con especial nfasis a la fiabilidad (para asegurar que la informacin fluya de manera adecuada y sin problemas)

1.4

Arranque de la Computadora

El arranque de una computadora tiene dos fases: la fase de arranque de hardware y la fase de arranque del sistema operativo. La siguiente figura muestra las actividades ms importantes.
Test del hardware Bajo el control del iniciador ROM Carga en memoria del cargado del SO

Bajo el control del cargador (boot) del SO

Carga en memoria componentes del SO

Inicializacin bajo el control de la parte residente del SO

Test del sistema de archivos Creacin de estructuras de datos internas Completa la carga del SO residente Creacin de procesos login

Arranque hardware

Software de E/S (BIOS)

Programa en ROM 1. Comprobacin del sistema que sirve para detectar sus caractersticas (ejem. Cantidad de memoria principal) 2. Fase de lectura y almacenamiento en memoria del programa cargador del SO 3. Da control a este programa bifurcando a la direccin de memoria en la que lo ha almacenado. Para tener flexibilidad se hace que el programa iniciador ROM sea independiente del SO

Programa de arranque Seal elctrica Iniciador ROM

Reset

10

Ubicacin del sistema operativo

Iniciador ROM extrae Conversacin: sobre ubicacin, direccin de arranque y tamao del cargador del SO

Memoria Principal

enva

SO

Programa Cargador SO

Arranque del sistema operativo


El programa cargador del SO tiene por misin traer a memoria principal alguno de los componentes del SO. Una vez cargados estos componentes, se pasa a la fase de iniciacin, que incluye las siguientes operaciones: Comprobacin del sistema: Se completa pruebas de hardware iniciadas por ROM y comprueba si el sistema de archivo tiene un estado coherente. Se establecen las estructuras de informacin propias del SO, tales como tablas de procesos, de memoria y las de E/S. Se carga en memoria principal aquella parte del SO que ha de estar siempre en memoria, parte que se denomina SO residente. Se crea un proceso de inicio o login por cada terminal definido en el sistema, as como una serie de procesos auxiliares y de demonios.

Programa cargador (Identificador)

Disco

Sistema operativo

1.5 Estructura de Sistemas Operativos


11

Es decir, cmo est construido el Sistema Operativo para que lleve a cabo sus objetivos. Podemos dividirlos en: Sistemas Monolticos Sistemas Operativos por niveles o por capas Sistemas Operativos de Mquina Virtual Sistemas Cliente-Servidor

1.5.1 Monolticos
Es la estructura de los primeros sistemas operativos constituidos fundamentalmente por un solo programa compuesto de un conjunto de rutinas entrelazadas de tal forma que cada una puede llamar a cualquier otra. 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 enlace. 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. En estos casos el Sistema Operativo est formado por un conjunto de rutinas que se compilan por separado, se llaman entre si y se montan juntas para formar un todo: el Sistema Operativo. De ah que no tengan una estructura definida. Cada rutina tiene un interface con las dems, es decir, cuando una rutina llama a otra la primera le pasa una serie de parmetros y, cuando la rutina llamada finaliza su tarea, devuelve unos resultados a la rutina madre. En estos sistemas todas las rutinas se pueden llamar entre si. Esto implica que no hay ocultamiento de informacin, es decir, cada rutina conoce -y puede usar-, por ejemplo, las estructuras de datos de las dems. Cuando estamos ejecutando un programa de usuario y hace falta un servicio del Sistema Operativo, los pasos que se siguen son los siguientes: 1. Se hace una llamada al SO, es decir, se ejecuta un extracdigo (Supervisor Call o SVC) 2. El SO toma el control, es decir, se pasa a modo supervisor 3. El SO averigua el servicio requerido y direcciona a la rutina que da servicio a esa peticin 4. La rutina inicia el servicio, siempre y cuando le hayan pasado los parmetros necesarios 5. La rutina anterior puede llamar, a su vez, a otra rutina que sirva la peticin, sobre todo en aquellos servicios que llevan mucho tiempo 6. Cuando se completa el servicio requerido se devuelve el control al proceso, es decir, se pasa a modo usuario En resumen, tenemos: en primer lugar, una rutina principal o SV que, mediante una combinacin de hardware y software y gracias a una tabla, direcciona a las rutinas de servicio necesarias para dar respuesta a las distintas peticiones rutinas de servicio (una por cada proceso)
12

Nota:

rutinas de ayuda o de utilidad y rutinas de servicio

No es un sistema definido, no tiene estructuras definidas. La modularidad consiste en dividir el S.O. en partes ms pequeas por lo que al final tendremos un Sistema Operativo dividido en mdulos. Cada mdulo tendr su propio interface con el fin de conectarse a los dems. Los distintos mdulos se disean de manera que halla ocultamiento de informacin: se sabe lo que hace cada mdulo pero no cmo lo hace, ni qu estructuras de datos maneja. Al variar un mdulo no varan ni sus interfaces ni tampoco el resto de los mdulos. Gracias a la modularidad tenemos mdulos fciles de extender o cambiar.

1.5.2 Sistemas Operativos por niveles o por capas (jerrquicos)


A medida que fueron creciendo las necesidades de los usuarios y se perfeccionaron los sistemas, se hizo necesaria una mayor organizacin del software, del sistema operativo, donde una parte del sistema contena subpartes y esto organizado en forma de niveles. Se dividi el sistema operativo en pequeas partes (funciones relacionadas) que forman un nivel o capa, de tal forma que cada una de ellas estuviera perfectamente definida y con un claro interface con el resto de elementos. Estas funciones se implementan en mdulos, cada uno con sus interfaces y sus estructuras de datos bien definidas. Luego, los distintos mdulos se agrupan en las distintas capas o niveles. Funciones = mdulos + niveles En cada nivel se pueden utilizar las funciones implementadas en l y las de los niveles inferiores, sin importarnos cmo estn implementados (a esto se le llama ocultamiento de informacin extendido porque se realiza entre mdulos y niveles). Cada nivel proporciona una serie de objetos y primitivas necesarias para su manejo. El problema se plantea a la hora de establecer los distintos niveles del Sistema Operativo. La divisin ms comn es la siguiente: Descripcin de los niveles: 1. Ncleo. Es el que acta directamente sobre el hardware. Los objetivos que manipula son los procesos y sus entornos de ejecucin: entornos necesarios para que se ejecute el proceso. 2. E/S Bsica. Maneja todos los espacios de almacenamiento como si fueran lineales, teniendo en cuenta, adems, que estos espacios de almacenamiento son fragmentos del espacio total o bloques. 3. Gestin de memoria. Maneja agrupaciones de espacios. En este nivel los espacios lineales del nivel anterior se agrupan lgicamente dependiendo de una serie de parmetros. 4. Sistema de ficheros. Es el encargado del manejo de ficheros, directorios y dispositivos. 5. Intrprete de comandos. Gracias a las facilidades que nos ofrecen los niveles inferiores podemos aceptar comandos, o analizarlos y ejecutarlos. Este nivel es el que proporciona el interface para la interrelacin con el usuario. Se constituy una estructura jerrquica o de niveles en los sistemas operativos, el primero de los cuales fue denominado THE (Technische Hogeschool, Eindhoven), de Dijkstra, que se utiliz con fines didcticos (Ver Fig. 2). Se puede pensar tambin en estos sistemas como si fueran `multicapa'. Multics y Unix caen en esa categora.

13

Capa 5: Programas de usuario Capa 4: Gestin de la E/S Capa 3: Controlador de la consola Capa 2: Gestin de memoria Capa 1: Planificacin de la CPU y multiprogramacin Capa 0: hardware

En la estructura anterior se basan prcticamente la mayora de los sistemas operativos actuales. Otra forma de ver este tipo de sistema es la denominada de anillos concntricos o "rings". En el sistema de anillos, cada uno tiene una apertura, conocida como puerta o trampa (trap), por donde pueden entrar las llamadas de las capas inferiores. De esta forma, las zonas 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. Ejemplo - Hacer un DIR de un directorio (DOS). 1. El Intrprete de Comandos asimila el comando para proceder a su ejecucin. 2. Le pasa el control Sistema de Ficheros, quien se encargar de buscar el lugar donde se encuentra lo que queremos visualizar. 3. Hay que invocar al nivel de E/S Bsica para llevar a memoria lo que queremos visualizar. Adems, este mismo nivel se encarga de localizarlo en el disco. 4. Se le pasa el control al Ncleo ya que ste es el nico que puede acceder al hardware. 5. Cuando los distintos niveles acaban sus tareas devuelven el control al nivel desde el cual han sido invocados, hasta que la orden de usuario haya sido completada.

1.5.3 Sistemas Operativos de Mquina Virtual


Se trata de un tipo de sistemas operativos que presentan una interface a cada proceso, mostrando una mquina que parece idntica a la mquina real subyacente. Estos sistemas operativos separan dos conceptos que suelen estar unidos en el resto de sistemas: la multiprogramacin y la mquina extendida. El objetivo de los sistemas operativos de mquina virtual es el de integrar distintos sistemas operativos dando la sensacin de ser varias mquinas diferentes. El ncleo de estos sistemas operativos 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. El Sistema Operativo tiene 2 funciones fundamentales: 1. Crear una mquina tratable, es decir, adaptada a las necesidades de cada usuario (mquina virtual) 2. Hacer posible la comparticin de recursos, es decir, soportar la multiprogramacin En estos sistemas se mantiene por separado el software que implementa cada una de estas funciones. Partiendo de un nico hardware a compartir se simula la existencia de
14

varias mquinas idnticas a la real. Para que esto sea posible hace falta un nuevo elemento en el Sistema Operativo, es el llamado monitor de mquina virtual. ste hace dos cosas: 1. Simula tantas mquinas virtuales idnticas a la real como haga falta 2. Gestiona los recursos de la mquina real Para que esto se traduzca en una mquina tratable por el usuario sobre cada mquina virtual se ejecuta un Sistema Operativo independiente, que se encarga de la segunda funcin del Sistema Operativo (hacer posible la comparticin de recursos). Esto lo hace a partir del hardware del que dispone. Un ej., puede ser el siguiente: donde el usuario introduce un comando que el intrprete de comandos del Sistema Operativo que maneja interpreta y genera la peticin correspondiente a la mquina virtual. Las llamadas que se hacen a la mquina virtual las captura el monitor de mquina virtual que, como parte de su simulacin, se las pasar al hardware real. En el caso de que varios usuarios traten de acceder a los mismos recursos ser el monitor de mquina virtual el que gestione la comparticin de los mismos (el monitor de mquina virtual gestiona las esperas, sincronizaciones, prioridades... y ordena las peticiones para que la mquina real las atienda de una en una). A. Virtualizacin Un concepto realmente interesante, que ha experimentado un notable desarrollo en los ltimos aos, y que parece que por fin est encontrando sus caminos productivos y no solo experimentales. Si leemos algunos anlisis de carga de servidores, millones en todo el mundo, podemos encontrarnos con estadsticas interesantes de como, y de forma general, tan solo aprovechamos entre un 20-30% de la capacidad de proceso de estos servidores. Es decir, a cualquier servidor a nivel global le sobran el 70% de sus recursos. Si a esto unimos la proliferacin de servidores, dada la reduccin de precio que han sufrido, nos encontramos con un parque infrautilizado y con dificultades de mantenimiento La virtualizacin es un trmino que se refiere a la abstraccin de los recursos de una computadora llamada Hypervisor o VMM (Virtual Machine Monitor) que crea una capa de la abstraccin entre el hardware de la maquina fsica (host) y el sistema operativo de la maquina virtual (virtual machine, guest). El VMM maneja los recursos de las maquinas fsicas subyacentes (designadas por el computador central) de una manera que el usuario pueda crear varias maquinas virtuales presentando a cada una de ellas una interfaz del hardware que sea compatible con el sistema operativo elegido. Esta capa de software (VMM) maneja, gestiona y arbitra los cuatro recursos principales de una computadora (CPU, Memoria, Red, Almacenamiento) y as podr repartir dinmicamente dichos recursos entre todas las maquinas virtuales definidas en el computador central. En este trabajo cuando se habla de Virtualizacin, nos referimos a la Virtualizacin de plataformas, que consiste en la abstraccin del hardware para virtualizar un computador o sistema operativo en una mquina virtual (virtual machine, VM). La Virtualizacin tiene una larga historia, que comienza en los entornos de mainframe" en la dcada de 1960, surgiendo como necesidad de ofrecer aislamiento entre usuarios. En ese momento se propuso la Virtualizacin de sistemas operativos, y en la dcada de 1970 era ya una tecnologa ampliamente usada. El reciente inters que ha vuelto a poner de moda esta tecnologa se origin al tener un nico tipo de servidores caros y necesitar de algn modo compartir los recursos

15

entre varias aplicaciones. Esto propicio la idea de agrupar procesos que pertenecen al mismo usuario en su propio entorno virtual. La tecnologa de Virtualizacin para arquitecturas i386 recientemente desarrollada Ofrece nuevas formas de utilizar la tecnologa informtica al permitir Acceso de forma lgica, en lugar de fsica, a datos, capacidad de cmputo, Almacenamiento y otros recursos. Numerosas organizaciones estn adoptando la tecnologa de Virtualizacin Como medio para ofrecer servicios elsticos, agrupar la carga de servidores, y Mejorar el ratio de utilizacin de los servidores. De esta manera se reducen los Costes de hardware y mantenimiento, lo que conlleva adems un recorte del Consumo de energa, necesidad de refrigeracin, y contaminacin. En la actualidad asistimos a su eclosin gracias al fuerte descenso del coste total de propiedad (TCO) atribuible a tecnologas va hardware como Intel VT, AMD-V Pacifica, NPIV y va software VMWare , XEN, Microsoft Hyper-V, VirtualIron.

Hipervisor. Hypervisor o Virtual Machine Monitor (VMM) es una tecnologa que est compuesta por una capa de software que permite utilizar, al mismo tiempo, diferentes sistemas operativos o maquinas virtuales (sin modificar o modificados en el caso de paravirtualizacin) en una misma computadora central. Es decir es la parte principal de una mquina virtual que se encarga de manejar los recursos del sistema principal exportndolos a la mquina virtual El VMM (Virtual Machine Monitor) crea una capa de la abstraccin entre el hardware de la maquina fsica (host) y el sistema operativo de la maquina virtual (virtual machine, guest), de tal forma que maneja los recursos de las maquinas fsicas subyacentes (designadas por el computador central) de una manera que el usuario pueda crear varias maquinas virtuales presentando a cada una de ellas una interfaz del hardware que sea compatible con el sistema operativo elegido. Esta capa de software (VMM) maneja, gestiona y arbitra los cuatro recursos principales de una computadora (CPU, Memoria, Red, Almacenamiento) y as podr repartir dinmicamente dichos recursos entre todas las maquinas virtuales definidas en el computador central. En la actualidad todos los fabricantes tanto de Software como de Hardware estn trabajando para mejorar, ayudar al Hypervisor (VMM) y asi poder llegar a una virtualizacin completa, fiable y robusta. Como hemos comentado en el apartado de Virtualizacin existen varios Tipos de Hypervisor:

Type II: Tipo Hosted - Hardware / Sistema Operativo / Hypervisor VMM / Maquina Virtual: Este tipo de hypervisor necesita un Sistema Operativo completo para poder ejecutarse

Type I: Tipo Non-Hosted / Binary translation - Hardware / Hypervisor VMM / Maquina Virtual Este tipo de hypervisor opera como una capa intermedia entre el hardware y los sistemas operativos invitados (Maquinas Virtuales, guest).

16

Todas las traducciones binarias (binary translation) de CPU, Memoria, Red, Almacenamiento las hace la capa VMM

Paravirtualizacin: Tipo Non-Hosted / Hardware assist (Intel VT, AMD-V) Hardware / Hypervisor VMM / Maquina Virtual Nativa o Modificada

Este tipo de hypervisor opera como una capa intermedia entre el hardware y los sistemas operativos invitados (Maquinas Virtuales, guest). Todas las traducciones binarias (binary translation) Red, Almacenamiento las hace la capa VMM y las traducciones binarias de CPU, Memoria la hace mediante el hardware (hardware assist).

Fullvirtualizacin: Full Hardware assist (Futuro de la virtualizacin Intel VT, AMD-V, NPIV..) - Hardware / Hypervisor VMM / Maquina Virtual Nativa o Modificada

B. Mquina Virtual

Una mquina virtual es un contenedor de software perfectamente aislado que puede ejecutar sus propios sistemas operativos y aplicaciones como si fuera un ordenador fsico. Una mquina virtual se comporta exactamente igual que lo hace un ordenador fsico. En otras palabras, uuna mquina virtual es una aplicacin que simula el funcionamiento de una mquina real sobre la que se pueden instalar sistemas operativos, aplicaciones, navegar de forma segura, imprimir desde alguna aplicacin, usar los dispositivos USB, etc. El sistema operativo no puede establecer una diferencia entre una mquina virtual y una mquina fsica, ni tampoco lo pueden hacer las aplicaciones u otros ordenadores de una red. Incluso la propia mquina virtual considera que es un ordenador real. Sin embargo, una mquina virtual se compone exclusivamente de software y no contiene ninguna clase de componente de hardware. El resultado de ello es que las mquinas virtuales ofrecen una serie de ventajas con respecto al hardware fsico. Ventajas de las Mquinas Virtuales Compatibilidad Al igual que un ordenador fsico, una mquina virtual aloja su propio sistema operativo y aplicaciones guest, y dispone de los mismos componentes (placa base, tarjeta VGA, controlador de tarjeta de red, etc.). El resultado de ello es que las mquinas virtuales son totalmente compatibles con la totalidad de
17

sistemas operativos x86, aplicaciones y controladores de dispositivos estndar, de modo de se puede utilizar una mquina virtual para ejecutar el mismo software que se puede ejecutar en un ordenador x86 fsico. Aislamiento Aunque las mquinas virtuales pueden compartir los recursos fsicos de un nico ordenador, permanecen completamente aisladas unas de otras, como si se tratara de mquinas independientes. Si, por ejemplo, hay cuatro mquinas virtuales en un nico servidor fsico y falla una de ellas, las otras tres siguen estando disponibles. El aislamiento es un factor importante que explica por qu la disponibilidad y proteccin de las aplicaciones que se ejecutan en un entorno virtual es muy superior a las aplicaciones que se ejecutan en un sistema tradicional no virtualizado. Encapsulamiento Una mquina virtual es bsicamente un contenedor de software que ata o encapsula un conjunto completo de recursos de hardware virtuales, as como un sistema operativo y todas sus aplicaciones, dentro de un paquete de software. El encapsulamiento hace a las mquinas virtuales extraordinariamente portables y fciles de gestionar. Por ejemplo, puede mover y copiar una mquina virtual de un lugar a otro como lo hara con cualquier otro archivo de software, o guardar una mquina virtual en cualquier medio de almacenamiento de datos estndar, desde una memoria USB de tamao de bolsillo hasta las redes de rea de almacenamiento (SAN) de una empresa. Independencia del Hardware Las mquinas virtuales son completamente independientes de su hardware fsico subyacente. Por ejemplo, se puede configurar una mquina virtual con componentes virtuales (CPU, tarjeta de red, controlador SCSI, pongamos por caso) que difieren totalmente de los componentes fsicos presentes en el hardware subyacente. Las mquinas virtuales del mismo servidor fsico pueden incluso ejecutar distintos tipos de sistema operativo (Windows, Linux, etc.). Si se combina con las propiedades de encapsulamiento y compatibilidad, la independencia del hardware proporciona la libertad para mover una mquina virtual de un tipo de ordenador x86 a otro sin necesidad de efectuar ningn cambio en los controladores de dispositivo, en el sistema operativo o en las aplicaciones. La independencia del hardware tambin significa que se puede ejecutar una mezcla heterognea de sistemas operativos y aplicaciones en un nico ordenador fsico.

18

Podemos encontrar dos tipos de Mquinas Virtuales: Mquinas Virtuales de Sistema, En este tipo de mquinas virtuales podemos trabajar distintos Sistemas Operativos, cada uno con sus caractersticas de Hardware independientes. Mquinas Virtuales de proceso, Este tipo de mquina virtual corre con un proceso en especfico y se detiene cuando el proceso termina, todo ello sobre el Sistema Operativo, por ejemplo con la plataforma .Net que corre la mquina Virtual Common Language Runtime.

1.5.4 Sistemas 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. Actualmente se est trabajando en una versin de UNIX que contempla en su diseo este paradigma.

19

En estos sistemas cada funcin del Sistema Operativo se implementa como un programa independiente y se intenta ejecutar al mismo nivel que los programas de usuario. El problema es que muchos de estos programas no pueden ejecutarse a nivel de usuario porque actan directamente sobre el hardware y esas funciones son competencia del ncleo de los Sistemas Operativos Cliente-Servidor. Las partes del Sistema Operativo que se ejecutan a nivel de usuario se denominan servidores. Estos programas tienen exactamente las mismas capacidades que un programa de usuario y por tanto no tienen acceso directo al hardware. Cuando un programa de usuario (denominado cliente) quiere un servicio del Sistema Operativo lanza un mensaje al servidor correspondiente, pero siempre a un servidor de su mismo nivel. El ncleo desempea 2 funciones: 1. Soporta los mensajes a travs de los cuales se comunican los clientes y servidores 2. Manipula al hardware para responder a peticiones cuando se lo piden los servidores. Cuando se quiere acceder a un servicio, toda la toma de decisiones (decidir si el que ha pedido el servicio tiene privilegios, a quin dar el servicio en primer lugar si ha habido dos solicitudes al mismo tiempo...), es decir, la poltica del sistema, reside en el servidor del servicio. Entonces, el ncleo -que tiene los mecanismos necesarios para manipular el hardware- ser el que realice el servicio, es decir, la mecnica del sistema reside en el ncleo y est soportado por el hardware. Ventajas de estos sistemas 1. Siempre y cuando los servidores estn bien delimitados es posible eliminar un servidor si ste no se utiliza 2. Siempre es posible sustituir un servidor por otro que haga lo mismo 3. Si falla un servidor el sistema sigue funcionando (pero con alguna funcin menos) 4. Estos sistemas se puede adaptar muy fcilmente a los sistemas distribuidos. Un Sistema Operativo Distribuido es aquel en el que el Sistema Operativo no est en una sola mquina sino que est repartido entre varias. En este caso, el hardware que manipula el ncleo es ms complejo que antes pero est manipulacin es transparente tanto para el usuario como para los servidores. Cuando una mquina hace exclusivamente la funcin de un servidor a lo largo del tiempo se dice que es un servidor dedicado, aunque hay otras mquinas que pueden ser alternativamente clientes o servidores.

1.6. Componentes de un Sistema Operativo


El SO est formado por una serie de componentes especializados en determinadas funciones. Cada SO estructura estos componentes de forma distinta. En esta seccin describiremos primero los distintos componentes que conforman un SO, para continuar con las diversas estructuras.

Usuarios Programas de usuario Win 32 Shell 1 Shell 2 POSIX Varias API

Gestin de Seguridad Comunicac. Gestin de Gestin de Gestin de y archivos y y procesos memoria la E/S directorios proteccin sincroniz.

Sistema operativo

Ncleo Hardware

20

Se deben observar dos tipos de requisitos cuando se construye un sistema operativo, 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.

1.6.1. Componentes
Podemos agrupar los componentes de un sistema en dos principales, el componente gestor y el soporte. 1. Componente Gestor Es el responsable de regular toda la actividad del sistema, y por tanto comprender las funciones necesarias para controlar el ambiente de trabajo de todo el Sistema. Podemos agrupar las funciones que comprende el Componente Gestor en tres grupos: a. Gestor de Trabajos Llamamos JOB (trabajo) a la unidad mnima de trabajo que se puede presentar al sistema para su ejecucin. El Gestor de Trabajos se encargar de preparar los jobs para su ejecucin, asignndoles los recursos que necesiten (indicados mediante el OSCL). Estos son: ficheros, volmenes, prioridad, programas a ejecutar, puesto en la cola de trabajos, etc. El ambiente de ejecucin que se prepara podemos decir que es un ente esttico. b. Gestor de Tareas Cuando el trabajo es aceptado por el sistema, se cargar en memoria el programa correspondiente al primer paso de trabajo que lo compone. A partir de este momento, el programa crea una entidad externa que se conoce como proceso (tambin tarea, actividad, etc.) que es un ente dinmico. El Gestor de Tareas se encarga de gestionar estos procesos, y para ello les asignar aquellos recursos que necesiten, excepto los de E/S, que no se le han asignado todava (ya que no podan reservarse); es decir, las necesidades que surgen durante la ejecucin del programa, como memoria suplementaria, tiempo de CPU, recuperacin tras ciertos errores, etc. c. Gestor de Datos Es el que se encarga de supervisar, dinmicamente, todas las operaciones de Entrada/Salida. As, se encargar de: Asignacin de memoria auxiliar Control de rutinas y actividades de E/S, incluyendo los interfaces de usuario Manejo de los mtodos de acceso o programas de canal
21

Gestin de buffers Recuperacin tras errores en E/S etc. 2. Componente Soporte

Es el responsable de que las funciones que componen el componente gestor se ejecuten normalmente. Por tanto, incluye las funciones necesarias para mantener y soportar tanto los programas y datos de los usuarios como los del propio Sistema Operativo, proporcionando una serie de facilidades. Las funciones que incluye se pueden dividir en cuatro grupos: a. Ayudas para el mantenimiento de los programas de aplicacin Comprender todas las rutinas que ayudan al usuario en la gestin de sus programas de aplicacin: gestin de bibliotecas, ayudas para la construccin de los programas objeto y ejecutable, utilidades para poder modificar instrucciones, tanto en memoria principal como en auxiliar, etc. b. Compiladores e Intrpretes Facilitan el tratamiento del grupo de programas de Alto Nivel; son programas producto que nos proporciona generalmente el fabricante de la mquina, y que no incluyen slo el traductor en s mismo, sino tambin un conjunto de rutinas objeto para las fases de ejecucin, y un conjunto de rutinas fuente para la fase de compilacin. c. Utilidades y Cargador Facilitan las tareas rutinarias, como mover, copiar, borrar, clasificar ficheros, etc. d. Soporte de Gestin Es como un System Accounting, pero ampliado. O sea, es un sistema, rutinas estadsticas, utilidades de gestin de memoria principal y secundaria especiales, rutinas check-point/restart, etc. Incluye tambin todas las rutinas necesarias para poner a punto el sistema (para ver si es el deseado)10 .

1.6.2 Servicios de los Sistemas Operativos


El sistema brindar un entorno de ejecucin de programas donde se dispondr de un conjunto de servicios que sern accesibles mediante una interface bien definida. Los servicios bsicos que debe brindar un sistema operativo son: Ejecucin de programas Operaciones de E/S Manipulacin de archivos Comunicacin entre procesos Manipulacin de errores (excepciones) Adems, se especifican otros servicios importantes tales como: Procesos Un concepto central en todos los sistemas operativos. Un proceso es bsicamente, un programa en ejecucin Consta del programa ejecutable, sus datos y su pila, contador y otros registros, adems de toda la informacin necesaria para ejecutar un programa.

22

Es parte de las llamadas al sistema de control, que son fundamentales para la creacin y finalizacin de procesos. Ejemplo, interprete de comandos. Archivos Otra categora de las llamadas al sistema. Son unas de las funciones principales del sistema operativo es ocultar las peculiaridades de los discos, y dems dispositivos de E/S. Es evidente la necesidad de las llamadas al sistema en la creacin, eliminacin, lectura y escritura de archivos. Adems, tambin involucra, el espacio para almacenar los archivos (directorios), archivos especiales. Una de las ltimas caractersticas es aquella que se refiere tanto a los procesos como a los archivos: los tubos. Un tubo es una especie de seudoarchivo que se puede utilizar para conectar dos procesos. Shell Es el intrprete de comandos en Unix (Linux), el cual sin ser parte del sistema operativo, hace un uso extenso de muchas de las caractersticas del sistema. Tambin suministra una interfaz a travs del cual el usuario puede dialogar en forma interactiva con la computadora. El shell recibe los mandatos u rdenes del usuario, los interpreta y, si puede los ejecuta. Ejemplo, uso de comando date de Unix. Kernel El Kernel o Ejecutivo es el ncleo del sistema operativo. ste est permanente en memoria una vez que el equipo inicia sus funciones normales. Es responsable por tareas como: Traslado del control de un programa a otro control y programacin de dispositivos perifricos Manejo de interrupciones y condiciones de error Comunicacin entre procesos Cronogramacin de tareas Manejo de la memoria Manejo de archivos

1.6.3 Sistemas Operativos por Servicios


Esta clasificacin es la ms comnmente usada y conocida desde el punto de vista del usuario final. Monousuarios Los sistemas operativos monousuarios son aquellos que soportan a un usuario a la vez, sin importar el nmero de procesadores que tenga la computadora o el nmero de procesos o tareas que el usuario pueda ejecutar en un mismo instante de tiempo. Las computadoras personales tpicamente se han clasificado en este rengln. Multiusuarios Los sistemas operativos multiusuarios son capaces de dar servicio a ms de un usuario a la vez, ya sea por medio de varias terminales conectadas a la computadora o por medio de sesiones remotas en una red de comunicaciones. No importa el

23

nmero de procesadores en la mquina ni el nmero de procesos que cada usuario puede ejecutar simultneamente. Monotareas Los sistemas monotarea son aquellos que slo permiten una tarea a la vez por usuario. Puede darse el caso de un sistema multiusuario y monotarea, en el cual se admiten varios usuarios al mismo tiempo pero cada uno de ellos puede estar haciendo solo una tarea a la vez. Multitareas Un sistema operativo multitarea es aqul que le permite al usuario estar realizando varias labores al mismo tiempo. Por ejemplo, puede estar editando el cdigo fuente de un programa durante su depuracin mientras compila otro programa, a la vez que est recibiendo correo electrnico en un proceso en background. Es comn encontrar en ellos interfaces grficas orientadas al uso de mens y el ratn, lo cual permite un rpido intercambio entre las tareas para el usuario, mejorando su productividad. Uniproceso Un sistema operativo uniproceso es aqul que es capaz de manejar solamente un procesador de la computadora, de manera que si la computadora tuviese ms de uno le sera intil. El ejemplo ms tpico de este tipo de sistemas es el DOS y MacOS. Multiproceso Un sistema operativo multiproceso se refiere al nmero de procesadores del sistema, que es ms de uno y ste es capaz de usarlos todos para distribuir su carga de trabajo. Generalmente estos sistemas trabajan de dos formas: simtrica o asimtricamente. Cuando se trabaja de manera asimtrica, el sistema operativo selecciona a uno de los procesadores el cual jugar el papel de procesador maestro y servir como pivote para distribuir la carga a los dems procesadores, que reciben el nombre de esclavos. Cuando se trabaja de manera simtrica, los procesos o partes de ellos (threads) son enviados indistintamente a cualquiera de los procesadores disponibles, teniendo, tericamente, una mejor distribucin y equilibrio en la carga de trabajo bajo este esquema. Se dice que un thread es la parte activa en memoria y corriendo de un proceso, lo cual puede consistir de un rea de memoria, un conjunto de registros con valores especficos, la pila y otros valores de contexto. Us aspecto importante a considerar en estos sistemas es la forma de crear aplicaciones para aprovechar los varios procesadores. Existen aplicaciones que fueron hechas para correr en sistemas monoproceso que no toman ninguna ventaja a menos que el sistema operativo o el compilador detecte secciones de cdigo paralelizable, los cuales son ejecutados al mismo tiempo en procesadores diferentes. Por otro lado, el programador puede modificar sus algoritmos y aprovechar por s mismo esta facilidad, pero esta ltima opcin las ms de las veces es costosa en horas hombre y muy tediosa, obligando al programador a ocupar tanto o ms tiempo a la paralelizacin que a elaborar el algoritmo inicial.

1.6.4. Acceso a los servicios del Sistema Operativo


Existen dos formas bsicas de prestacin de servicios por parte del sistema: 1. Llamadas al sistema (conocido tambin como servicios) Sirven para obtener los servicios de ms bajo nivel y constituyen el interface entre los programas en ejecucin y el Sistema Operativo. Los programas del usuario se comunican con el sistema operativo y le solicitan servicio mediante las llamadas al sistema. A cada una de estas llamadas le
24

corresponde un procedimiento de la biblioteca que pueden llamar los programas del usuario en forma de interfaz de programacin o API (Application Programming Interface). Este procedimiento pone los parmetros de la llamada al sistema en un lugar especfico, como pueden ser los registros de la mquina, para despus ejecutar una instruccin. Trap (un tipo de llamada de procedimiento protegido) para iniciar el sistema operativo. La finalidad del procedimiento de biblioteca es ocultar los detalles de la instruccin Trap y hacer que las llamadas al sistema parezcan llamadas comunes a un procedimiento. Ejemplo de una llamada Read desde un programa en C, Count = read(file, buffer, nbytes); Claro est, el tipo de llamadas al sistema vara de un sistema operativo a otro. Generalmente estas funciones del Sistema Operativo estn implementadas en ensamblador o en algn otro lenguaje que permita la manipulacin del hardware. Las llamadas al sistema en un programa de usuario, o son una instruccin especial o estn encubiertas en llamadas a funciones de librera. Cuando se realiza una de estas llamadas se tiene que especificar la operacin que se quiere realizar, y para ello ser necesario pasarle todos los parmetros esenciales. Podemos hacerlo de tres formas: a. Dejar el valor de dichos parmetros en los registros del sistema. Puesto que el sistema tiene acceso a los registros puede leerlos de ah. b. Guardar el valor de los parmetros en memoria y meter en los registros la direccin donde se guardan dichos parmetros. c. Utilizar la pila de ejecucin del propio Sistema Operativo, aunque hay mquinas en las que el sistema de proteccin no permite esto. Principales llamadas del sistema. Existen 5 grupos: Control de procesos y trabajos. Estas llamadas permiten la terminacin de un programa, tanto de manera normal como de manera anormal. En los sistemas generalmente se trabaja con lo que se denominan niveles de error. Por ejemplo, podemos detectar -y tratar- un cierto tipo de error que no produce un break del programa pero que puede servir para controlar su ejecucin. Nos permiten generar nuevos procesos a partir de un proceso en ejecucin, es decir, hacer que un proceso cree otro. Adems, el proceso padre y el hijo deben sincronizarse mediante llamadas que permitan generar esperas tanto en el padre como en el hijo. Tambin hay otras llamadas que nos permiten leer y modificar los atributos de un proceso (prioridad de proceso, tamao de memoria...). Manipulacin de ficheros. Nos deben permitir abrir, cerrar, escribir, leer, posicionarse en ellos, crear, destruir... En caso de que el sistema disponga de una jerarqua de directorios, se aplicarn las mismas llamadas al directorio que sirven para leer y modificar atributos de ficheros y directorios. Gestin de dispositivos. Las llamadas al sistema para manejar dispositivos son las mismas que para manejar ficheros, aadiendo las necesarias para solicitar y liberar el uso de dicho dispositivo. Mantenimiento de la informacin. Son aquellas que sirven para transferir informacin de carcter general desde el sistema hasta el programa de usuario, por ejemplo, obtener la fecha y la hora del sistema, la versin y nombre del sistema operativo, algn parmetro de su funcionamiento, cunto tamao libre de memoria hay... Llamadas para las comunicaciones. Para realizar el paso de mensajes ser necesario abrir y aceptar una conexin, poder leer y escribir los mensajes y, cuando se ha terminado, cerrar esa conexin.
25

La otra forma de comunicarse es por medio de reas de memoria compartidas (igual que el buzn de casa). Necesitar dos llamadas: una que me permita acceder al rea compartida y la otra para indicar que he acabado.
Capas del Sistema Operativo (Clasificacin genrica). .-

Capa 13 Capa 12 Capa 11 Capa 10 Capa 9 Capa 8 Capa 7 Capa 6 Capa 5 Capa 4 Capa 3 Capa 2 Capa 1

SHELL Procesos de usuarios. Directorio Dispositivos Sistemas de archivos. Comunicaciones Memoria virtual. Almacenamiento secundario. Procesos primitivos Interrupciones Procedimientos Conjunto de instrucciones Circuitos electrnicos

Capa 1.- Circuitos electrnicos. Objetos tratados son registros, celdas de memoria, puertas lgicas. Capa 2.- Conjunto de instrucciones del procesador. Las operaciones de este nivel son las permitidas por el conjunto de instrucciones del lenguaje mquina. Capa 3.- Aade concepto de procedimiento o subrutina. Operaciones de llamada y retorno. Capa 4.- Introduce interrupciones, las cuales hacen que procesador salve el contexto actual e invoque rutina de tratamiento de interrupcin. --- Las cuatros primeras capas anteriormente citadas no pertenecen al SO sino al hardware de la mquina. ---

Capa 5.- Se introduce nocin de proceso como programa en ejecucin. Entre requisitos fundamentales de un SO que ofrezca soporte para varios procesos incluye capacidad de suspender y reanudar un proceso (Exige guardar cambios de contexto Capa 4). Si un proceso necesita cooperacin ser necesario un sistema de sincronizacin. (Tcnica sencilla Semforo). Capa 6.- Dispositivos de almacenamiento secundario del computador. Se incluyen procesos para la planificacin de estos dispositivos. Capa 7.- Crea un espacio de direcciones lgicas para procesos. Organiza el espacio de direcciones virtuales en bloques que se pueden mover entre memoria principal y secundaria. 3 esquemas. Paginacin de longitud fija. Segmentacin de longitud variable. Las dos anteriores.

Capa 8.- comunicacin de informacin y mensajes entre procesos (Nivel 5 proporciona mecanismos de sealizacin). Una de las herramientas ms potentes Tubo Canal lgico para flujo de datos entre procesos. Capa 9.- Da soporte a almacenamiento a largo plazo de archivos con nombre. Los datos de almacenamiento secundario se contemplan en trminos de entidades abstractas de longitud variable en contraste con el enfoque a hardware del Nivel 6. Capa 10.- Acceso a dispositivos externos. Capa 11.- Mantienen asociacin entre identificadores externos de recursos y objetos del sistema Estos se mantiene en un directorio. Las entradas no incluyen solo lo anterior sino tambin otras caractersticas. Capa 12.- Servicio completo de soporte a proceso. Se da soporte para la gestin ordenada de toda la informacin asociada a la gestin de proceso. Esto incluye, espacio de direcciones virtuales, lista de objetos y procesos con los que puede interactuar y sus restricciones, los parmetros pasados al proceso. Capa 13.- Interface de usuario con sistema operativo.

26

2. Mediante Programas del sistema Constituyen una interfaz entre el usuario y el sistema operativo. Incluyen llamadas al sistema y proporcionan la funcionalidad bsica para resolver problemas comunes de los usuarios. Adems, permiten crear un entorno adecuado para el desarrollo y la ejecucin de los programas de usuario. En resumidas cuentas, es lo que usuario ve del Sistema Operativo. Son el mtodo ms usado en los Sistemas Operativos modernos, de hecho, los Sistemas Operativos modernos se suelen suministrar en dos partes: - el supervisor o ncleo - un amplio conjunto de programas de usuario A modo de resumen, son la otra forma de acceder a los servicios del sistema y permiten crear un entorno adecuado para el desarrollo y la ejecucin de los programas de usuario. La idea que un usuario tiene de un sistema es la que le dan los propios programas del sistema. Disear estos programas -esta interface- es una tarea muy difcil. Pueden darse dos circunstancias: el sistema operativo es muy bueno pero interface psimo (UNIX) el sistema operativo es malo pero con un interface muy bueno (WINDOWS95) aunque un mismo Sistema Operativo puede tener varios interfaces distintos (XWINDOWS en UNIX). Los programas del sistema se pueden dividir en varias categoras: Manipulacin de archivos. Estos programas crean, eliminan, copian, renombran, imprimen, vuelcan, muestran y en general manipulan archivos y directorios. Informacin de estado. Algunos programas simplemente solicitan al sistema fecha, hora, espacio de memoria o disco disponible, nmero de usuarios o informacin de estado similar. A esta informacin se le da formato y se imprime en la terminal u otro dispositivo o en un archivo. Modificacin de archivos. Puede haber varios editores de texto para crear y modificar el contenido de archivos almacenados en cinta o disco. Apoyo a lenguajes de programacin. Con frecuencia, con el sistema operativo se ofrecen compiladores, ensambladores e intrpretes para los lenguajes de programacin habituales (como FORTRAN, COBOL, Pascal, BASIC, C, LISP, etc.). Carga y ejecucin de programas. Una vez ensamblado o compilado el programa, se debe cargar en la memoria para ejecutarlo. El sistema puede ofrecer cargadores absolutos, cargadores relocalizables, editores de enlace y cargadores de superposicin. Tambin se necesitan los sistemas de depuracin para lenguajes de alto nivel o de mquina. Comunicaciones. Estos programas proporcionan el mecanismo para crear conexiones virtuales entre procesos, usuarios y diferentes sistemas de computacin; permiten a los usuarios enviar mensajes a las pantallas de los dems, enviar mensajes ms grandes en forma de correo electrnico o transferir archivos de una mquina a otra, e incluso conectarse en forma remota a otros computadores. Programas de aplicacin. La mayora de los sistemas operativos se entregan con programas tiles para solucionar problemas comunes, o para efectuar operaciones comunes. Estos programas incluyen compiladores de compiladores, formadores de texto, paquetes generadores de grficos, sistemas de bases de datos, hojas de clculo, paquetes de anlisis estadstico, juegos, etctera. El programa del sistema ms importante es el intrprete de comandos, que se puede implementar de dos formas distintas.

27

1. Incluir, dentro del intrprete de comandos, el cdigo correspondiente a cada comando. Su ejecucin es muy rpida pero el tamao del intrprete crece de forma desmesurada. Adems es poco flexible porque cada vez que queremos que reconozca un nuevo comando necesitamos hacer las modificaciones en el cdigo fuente, volverlo a compilar y enlazar. 2. Implementar cada comando como un programa del sistema. En este caso el intrprete de comandos no ejecuta el comando, lo nico que hace es usar ese comando para buscar un programa del sistema que se llame igual. Y cuando se encuentre, el programa ser cargado en memoria y ejecutado. Ventajas (con respecto a la primera forma de implementacin): Es reducido su tamao Su tamao no depende del nmero de comandos que reconozca Es flexible (para aadir un nuevo comando basta aadir al sistema un nuevo programa llamado igual que el nuevo comando a reconocer y cuyo cdigo sea el correspondiente a la funcin realizada por ese comando). Inconvenientes: Es ms lento Los parmetros tienen que fluir del intrprete de comandos al programa del sistema, por tanto, hay que ofrecer mecanismos para transmitir esta informacin. En cualquiera de los dos casos, deben establecerse a priori unas reglas de diseo para que los usuarios sepan cmo llamar a los comandos y pasarles los parmetros adecuadamente.

Caractersticas
1. Fiabilidad y seguridad, que quiere decir que el sistema operativo est libre de error y pueda responder ante cualquier evento. 2. Determinismo e indeterminismo. Un sistema operativo tiene que ser determinista en el sentido de que los mismos programas con los mismos datos tiene que dar los mismos resultados, pero tambin tiene que ser no determinista en relacin a que debe responder a cualquier suceso imprevisto. 3. Flexibilidad y generalidad. Debe adaptarse a las distintas necesidades del usuario y debe ser portable, es decir, debe poder funcionar sobre distintas plataformas. 4. Facilidad de uso. Debe ser fcil de acceder y de usar, es decir, User Friendly. 5. Seguridad e integridad. Tanto datos como programas deben estar protegidos de cualquier intento de acceso no permitido y posibles corrupciones. 6. Visibilidad u opacidad. El sistema operativo debe dejar ver el usuario slo lo que necesita y en la forma ms adecuada. 7. Eficiencia y disponibilidad. El sistema operativo tiene que ser rpido, funcionar bien y proporcionar el mayor nmero de funciones posibles. Estas caractersticas se miden con parmetros como: el tiempo de respuesta el tiempo entre tareas los tiempos muertos de UCP el uso de recursos el throughtput ... 8. Mantenibilidad y extensibilidad. Dos ideas:

28

a. El sistema operativo debe ser fcil de mantener y ampliar b. El sistema operativo debe estar programado de forma modular 9. El tamao del sistema operativo. No debe ser excesivo y no debe afectar a la productividad del sistema (consumiendo pocos recursos).

1.6.4 Sistemas Operativos por la Forma de Ofrecer sus Servicios


Esta clasificacin tambin se refiere a una visin externa, que en este caso se refiere a la del usuario, el cmo accesa los servicios. Bajo esta clasificacin se pueden detectar dos tipos principales: sistemas operativos de red y sistemas operativos distribuidos.

Sistemas Operativos de Red Los sistemas operativos de red se definen como aquellos que tiene la capacidad de interactuar con sistemas operativos en otras computadoras por medio de un medio de transmisin con el objeto de intercambiar informacin, transferir archivos, ejecutar comandos remotos y un sin fin de otras actividades. El punto crucial de estos sistemas es que el usuario debe saber la sintaxis de un conjunto de comandos o llamadas al sistema para ejecutar estas operaciones, adems de la ubicacin de los recursos que desee accesar. Por ejemplo, si un usuario en la computadora hidalgo necesita el archivo matriz.pas que se localiza en el directorio /software/codigo en la computadora fisc99 bajo el sistema operativo UNIX, dicho usuario podra copiarlo a travs de la red con los comandos siguientes: hidalgo% hidalgo% rcp fisc99:/software/codigo/matriz.pas . hidalgo% En este caso, el comando rcp que significa "remote copy" trae el archivo indicado de la computadora fisc99 y lo coloca en el directorio donde se ejecut el mencionado comando. Lo importante es hacer ver que el usuario puede accesar y compartir muchos recursos.

Sistemas Operativos Distribuidos Los sistemas operativos distribuidos abarcan los servicios de los de red, logrando integrar recursos (impresoras, unidades de respaldo, memoria, procesos, unidades centrales de proceso) en una sola mquina virtual que el usuario accesa en forma transparente. Es decir, ahora el usuario ya no necesita saber la ubicacin de los recursos, sino que los conoce por nombre y simplemente los usa como si todos ellos fuesen locales a su lugar de trabajo habitual. Todo lo anterior es el marco terico de lo que se deseara tener como sistema operativo distribuido, pero en la realidad no se ha conseguido crear uno del todo, por la complejidad que suponen: distribuir los procesos en las varias unidades de procesamiento, reintegrar sub-resultados, resolver problemas de concurrencia y paralelismo, recuperarse de fallas de algunos recursos distribuidos y consolidar la proteccin y seguridad entre los diferentes componentes del sistema y los usuarios. Por ejemplo, el control de los cajeros automticos en diferentes estados de la repblica. Ah no es posible ni eficiente mantener un control centralizado, es ms, no existe capacidad de cmputo y de entrada/salida para dar servicio a los millones de operaciones por minuto. En el segundo caso, supngase que se tienen en una gran empresa varios grupos de trabajo, cada uno necesita almacenar grandes cantidades de informacin en disco duro con una alta confiabilidad y disponibilidad. La solucin puede ser que para cada grupo de trabajo se asigne una particin de disco duro en servidores diferentes, de manera que si uno de los servidores falla, no se deje dar el servicio a todos, sino slo a unos cuantos y, ms an, se podra tener un sistema con discos en espejo ( mirror ) a travs de la red, de manera que si un servidor se cae, el servidor en espejo contina trabajando y el
29

usuario ni cuenta se da de estas fallas, es decir, obtiene acceso a recursos en forma transparente. Ventajas de los Sistemas Distribuidos En general, los sistemas distribuidos (no solamente los sistemas operativos) exhiben algunas ventajas sobre los sistemas centralizados que se describen enseguida. Economa: El cociente precio/desempeo de la suma del poder de los procesadores separados contra el poder de uno solo centralizado es mejor cuando estn distribuidos. Velocidad: Relacionado con el punto anterior, la velocidad sumada es muy superior. Confiabilidad: Si una sola mquina falla, el sistema total sigue funcionando. Crecimiento: El poder total del sistema puede irse incrementando al aadir pequeos sistemas, lo cual es mucho ms difcil en un sistema centralizado y caro. Distribucin: Algunas aplicaciones requieren de por s una distribucin fsica. Por otro lado, los sistemas distribuidos tambin exhiben algunas ventajas sobre sistemas aislados. Estas ventajas son: Compartir datos: Un sistema distribuido permite compartir datos ms fcilmente que los sistemas aislados, que tendran que duplicarlos en cada nodo para lograrlo. Compartir dispositivos: Un sistema distribuido permite accesar dispositivos desde cualquier nodo en forma transparente, lo cual es imposible con los sistemas aislados. El sistema distribuido logra un efecto sinergtico. Comunicaciones: La comunicacin persona a persona es factible en los sistemas distribuidos, en los sistemas aislados no. _ Flexibilidad: La distribucin de las cargas de trabajo es factible en el sistema distribuido, se puede incrementar el poder de cmputo.

Desventajas de los Sistemas Distribuidos As como los sistemas distribuidos exhiben grandes ventajas, tambin se pueden identificar algunas desventajas, algunas de ellas tan serias que han frenado la produccin comercial de sistemas operativos en la actualidad. El problema ms importante en la creacin de sistemas distribuidos es el software: los problemas de comparticin de datos y recursos es tan complejo que los mecanismos de solucin generan mucha sobrecarga al sistema hacindolo ineficiente. El verificar, por ejemplo, quines tienen acceso a algunos recursos y quines no, el aplicar los mecanismos de proteccin y registro de permisos consume demasiados recursos. En general, las soluciones presentes para estos problemas estn an en paales. Otros problemas de los sistemas operativos distribuidos surgen debido a la concurrencia y al paralelismo. Tradicionalmente las aplicaciones son creadas para computadoras que ejecutan secuencialmente, de manera que el identificar secciones de cdigo `paralelizable' es un trabajo arduo, pero necesario para dividir un proceso grande en sub-procesos y enviarlos a diferentes unidades de procesamiento para lograr la distribucin. Con la concurrencia se deben implantar mecanismos para evitar las condiciones de competencia, las postergaciones indefinidas, el ocupar un recurso y estar esperando otro, las condiciones de espera circulares y , finalmente, los "abrazos mortales" (deadlocks). Estos problemas de por s se presentan en los sistemas operativos multiusuarios o multitareas, y su tratamiento en los sistemas distribuidos es an ms complejo, y por lo tanto, necesitar de algoritmos ms complejos con la inherente sobrecarga esperada.

30

Por otro lado, en el tema de sistemas distribuidos existen varios conceptos importantes referentes al hardware que no se ven en este trabajo: multicomputadoras, multiprocesadores, sistemas acoplados dbil y fuertemente, etc.

1.7 Activacin del Sistema Operativo


El trabajo del SO puede provenir de las siguientes fuentes: Llamadas al sistema emitidas por los programas Interrupciones producidas por los perifricos Condiciones de excepcin o error del hardware

En todos estos casos se deja de ejecutar el proceso en ejecucin y se entra a ejecutar el SO. Los mecanismos para romper la secuencia de ejecucin son dos: las instrucciones de bifurcacin (no invoca al SO, puesto que el proceso ejecuta a nivel de usuario y el SO es a nivel de ncleo y en espacio de direcciones distintos; significa que los servicios del SO no se pueden solicitar mediante llamadas a procedimientos o funciones) y las interrupciones. Por lo tanto la activacin del SO solo se realiza mediante el mecanismo de interrupciones (instruccin TRAP). La figura siguiente muestra todos los pasos involucrados en una llamada al SO, indicando el cdigo que interviene en cada uno de ellos.
Compuesta de: Inicialmente prepara los parmetros del servicio de acuerdo con la forma en que los espera el SO Instruccin TRAP que realiza el paso al SO Finalmente, recupera los parmetros de contestacin del SO, para devolverles al programa que lo llam

Biblioteca del Sistema

Llamada a una Funcin

Solicitud de servicio al SO

SO

1.8 Interfaces en un Sistema Operativo


Estn: A. Las interfaces del programador, es la que recupera los servicios y llamadas al sistema que los usuarios pueden utilizar directamente des sus programas. En la actualidad hay dos interfaces: POSIX y los servicios de Win32. POSIX POSIX (Portable Operating System Interface for UNIX- Computer Enviroment). Es un conjunto de normas definidas por el Instituto de Ingenieros Elctricos y Electrnicos (IEEE) con el fin de crear interfaces que permitan la portabilidad del software (distintos entornos UNIX) entre diferentes sistemas operativos abiertos o sistemas abiertos.
31

La norma se ha implementado no slo en muchas versiones de UNIX, sino tambin en otros sistemas operativos como Windows NT, VMS, etc. Se trata de un conjunto de 23 normas, identificadas como IEEE 1003.0 a IEEE 1003.22, o tambin POSIX.0 a POSIX.22, de las cuales el subsistema POSIX soporta la POSIX.1 (conocido tambin como P1003.1), que define un conjunto de llamadas al sistema en lenguaje C. El subsistema sirve las llamadas interactuando con el Executive. Se encarga tambin de definir aspectos especficos del s.o. UNIX, como pueden ser las relaciones jerrquicas entre procesos padres e hijos (las cuales no existen en el subsistema Win32, por ejemplo, y que por consiguiente no aparecen implementadas directamente en el Executive). Entre las reas cubiertas por los estndares POSIX estn las llamadas al sistema, bibliotecas, herramientas, interfaces, verificacin y prueba, caractersticas en tiempo real y seguridad. Otro estndar importante es el P1003.2 (POSIX.2) que versa sobre shells y utilidades. El POSIX 1003.2 cubre los mtodos de prueba sobre el cumplimiento de los estndares POSIX; el estndar POSIX 1003.4 cubre las extensiones sobre tiempo real. Existen ms de 20 estndares diferentes que han sido desarrollados o estn en vas de desarrollo. Linux cumple en gran medida el estndar POSIX. Linux funciona perfectamente en combinacin con los sistemas operativos convencionales de Microsoft, Novell y Apple, abriendo al mismo tiempo las puertas al mundo de Internet. Linux es un sistema operativo de 32-bits incorporado para seguir la especificacin POSIX, una familia de estndares que define cualquier aplicacin que interacta con un sistema operativo. POSIX define una biblioteca que contiene una serie de funciones de manejo, a alto nivel, de directorios, de forma que no se requiere conocer la estructura fsica de los mismos. WIN32 En realidad, Win32 significa "Windows 32 bits". En otras palabras, hace referencia a todas las plataformas de 32 bits del sistema operativo Windows: Windows NT, Windows 95, Windows 98, Windows CE. Es el ms importante, ya que atiende no slo a las aplicaciones nativas de Windows NT, sino que para aquellos programas no Win32, reconoce su tipo y los lanza hacia el subsistema correspondiente. En el caso de que la aplicacin sea MS-DOS o Windows de 16 bits (Windows 3.11 e inferiores), lo que hace es crear un nuevo subsistema protegido. As, la aplicacin DOS o Win16 se ejecutara en el contexto de un proceso llamado VDM (Virtual DOS Machine, mquina virtual DOS), que no es ms que un simulador de un computador funcionando bajo MS-DOS. Las llamadas al API Win16 seran correspondidas con las homnimas en API Win32. Microsoft llama a esto WOW (Windows On Win32). El subsistema soporta una buena parte del API Win32. As, se encarga de todo lo relacionado con la interfaz grfica con el usuario (GUI), controlando las entradas del usuario y salidas de la aplicacin. Por ejemplo, un buen nmero de funciones de las bibliotecas USER32 y GDI32 son atendidas por Win32, ayudndose del Executive cuando es necesario. Win32 permite la comunicacin entre la pantalla y el teclado, as como varios de los procesos grficos y bibliotecas propias de windows.

32

B. Interfaz del usuario del SO, utilizado por el usuario al momento que interacta con el SO para poder llevar a cabo operaciones tales como ejecutar un programa, borrar archivo, sin necesidad de escribir un programa que realice dicha operacin utilizando los servicios del SO. Hay dos tipos de interfaz de usuario: alfanumrica (comandos) y la grfica (GUI, Graphical User Interface).

1.9 Diseo e Implementacin de Sistemas Operativos


Caractersticas de Diseo Se debe tener fundamentalmente en cuenta los siguientes puntos: 1. Conocer el procesador en profundidad, (Hardware). 2. Conocer ampliamente el Set de instrucciones del procesador. 3. Conocer profundamente tcnicas algortmicas. 4. Definir las caractersticas que deben incorporarse en el diseo. Adems los objetivos de diseo de un Sistema Operativo deben cumplir los siguientes requerimientos: Simple. 1. Portable. 2. Estructurado (modular). 3. Confiable. 4. Soporte de mltiples usuarios o procesos. 5. Soporte de red o procesamiento distribuido. 6. Etc. Caractersticas de un sistema operativo En general, se puede decir que un Sistema Operativo tiene las siguientes caractersticas: Conveniencia: Un Sistema Operativo hace ms conveniente el uso de una computadora. Eficiencia: Un Sistema Operativo permite que los recursos de la computadora se usen de la manera ms eficiente posible. Habilidad para evolucionar: Un Sistema Operativo deber construirse de manera que permita el desarrollo, prueba o introduccin efectiva de nuevas funciones del sistema sin interferir con el servicio del mismo. Encargado de administrar el hardware: El Sistema Operativo 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 Sistema Operativo 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 Sistema Operativo 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 Sistema Operativo debe hacerle fcil al usuario el acceso y manejo de los dispositivos de Entrada / Salida de la computadora. Tcnicas de recuperacin de errores: El sistema operativo debe proveer las rutinas necesarias para protegerse, y poder recuperarse de los errores (ya sean de hardware, o de software), con el menor perjuicio para los usuarios.

33

Evita que otros usuarios interfieran: El Sistema Operativo evita que los usuarios se bloqueen entre ellos, informndoles si esa aplicacin est siendo ocupada por otro usuario. Generacin de estadsticas: Para poder cobrarle a los diferentes usuarios del centro de costos la parte proporcional que les corresponde del gasto generado por el mantenimiento del mismo. Permite que se pueda compartir: tanto el hardware como los datos de los usuarios y entre los usuarios.

Requisitos Funcionales Los procesos son creados en respuesta a peticiones explcitas o implcitas de los usuarios. El sistema operativo proporciona varias funciones supervisoras y de control para una gestin de procesos. La administracin de memoria que es esencial para la asignacin de los procesos cuando lo soliciten. El almacenamiento de los datos a largo plazo, incluidos los programas y datos. Los entornos multiusuarios y de multiprogramacin imponen algunos requisitos funcionales adicionales para la manipulacin y almacenamiento de archivos. A los sistemas multiusuarios tambin deben proporcionar formas ms elaboradas de proteccin y mecanismos de seguridad. Los sistemas distribuidos deben proporcionar facilidades para denominacin global y acceso a recursos.

Implementacin El sistema operativo gestiona la operacin de un sistema informtico y proporciona un nmero posiblemente grande de servicios accesibles al usuario como gestor de trfico, lleva la cuenta y proporciona el entorno de trabajo para la ejecucin de programas. El sistema operativo asigna y reclama recursos en respuesta a peticiones explcitas y sobre la base del estado del sistema. Las decisiones de gestin de recursos son gobernadas por polticas resultantes de los objetivos de diseo, tales como la conveniencia de los usuarios y la eficiencia de la operacin. Uno de los principales problemas que encuentran los diseadores es cmo gestionar esta complejidad de funciones con sus mltiples niveles de detalle y seguir proporcionando un producto razonable, fiable y fcil de mantener. La interactividad de los mdulos es otro de los factores de implementacin a considerar. Estos facilitan el encapsulado de los datos, en donde los objetos son manipulados exclusivamente por medio de un conjunto de operaciones significativas proporcionadas para el tipo de objeto en cuestin. La ocultacin de la informacin es otro de los factores a considerar, en la cual se crea una jerarqua de niveles de abstraccin de modo que en cada nivel los detalles de operacin de los niveles inferiores puedan ser ignorados. Estos niveles son: Nivel 1: Ncleo (procesos, semforos) Nivel 2: E/S bsica (bloque de datos) Nivel 3: Administracin de memoria (segmentos, pginas) Nivel 4: Sistema de archivos (archivos, dispositivos) Nivel 5: Intrprete del lenguaje de rdenes (datos del entorno)

34

Referencias An Introduction to Virtualization. http://www.kernelthread.com/publications/virtualization/ The Reincarnation of Virtual Machines. http://queue.acm.org/detail.cfm?id=1017000

35

Você também pode gostar