Sist_Oper

591 views

Published on

  • Be the first to comment

  • Be the first to like this

Sist_Oper

  1. 1. Sistemas Operativos<br />
  2. 2. Sistema Operativo<br />Un Sistema operativo (SO) es un software que actúa de interfaz entre los dispositivos de hardware y los programas usados por el usuario para manejar un computador. Es responsable de gestionar, coordinar las actividades y llevar a cabo el intercambio de los recursos y actúa como estación para las aplicaciones que se ejecutan en la máquina.<br />Uno de los más prominentes ejemplos de sistema operativo, es el núcleo Linux, el cual junto a las herramientas GNU, forman las llamadas distribuciones Linux.<br />Nótese que es un error común muy extendido denominar al conjunto completo de herramientas sistema operativo, pues este, es sólo el núcleo y no necesita de entorno operador para estar operativo y funcional. Este error de precisión, se debe a la modernización de la informática llevada a cabo a finales de los 80, cuando la filosofía de estructura básica de funcionamiento de los grandes computadores se rediseñó a fin de llevarla a los hogares y facilitar su uso, cambiando el concepto de computador multiusuario, (muchos usuarios al mismo tiempo) por un sistema mono usuario (únicamente un usuario al mismo tiempo) más sencillo de gestionar. (Véase AmigaOS, beOS o MacOS como los pionerosde dicha modernización, cuando los Amiga, fueron bautizados con el sobrenombre de Video Toasters por su capacidad para la Edición de vídeo en entorno multitarea round robin, con gestión de miles de colores e interfaces intuitivos para diseño en 3D con programas como Imagine o Scala multimedia, entre muchos otros.)<br />
  3. 3. Introduccion<br />A finales de los 40's el uso de computadoras estaba restringido a aquellas empresas o instituciones que podían pagar su alto precio, y no existían los sistemas operativos. En su lugar, el programador debía tener un conocimiento y contacto profundo con el hardware, y en el infortunado caso de que su programa fallara, debía examinar los valores de los registros y páneles de luces indicadoras del estado de la computadora para determinar la causa del fallo y poder corregir su programa, además 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 ).<br />La importancia de los sistemas operativos nace históricamente desde los 50's, cuando se hizo evidente que el operar una computadora por medio de tableros enchufables en la primera generación y luego por medio del trabajo en lote en la segunda generación se podía mejorar notoriamente, pues el operador realizaba siempre una secuencia de pasos repetitivos, lo cual es una de las características contempladas en la definición de lo que es un programa. Es decir, se comenzó a ver que las tareas mismas del operador podían plasmarse en un programa, el cual a través 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 .<br />
  4. 4. Tipos de Sistemas Operativos<br />1. Sistemas Operativos por su EstructuraSegún [Alcal92], se deben observar dos tipos de requisitos cuando se construye un sistema operativo, los cuales son:Requisitos de usuario: Sistema fácil de usar y de aprender, seguro, rápido y adecuado al uso al que se le quiere destinar.Requisitos del software: Donde se engloban aspectos como el mantenimiento, forma de operación, restricciones de uso, eficiencia, tolerancia frente a los errores y flexibilidad.A continuación se describen las distintas estructuras que presentan los actuales sistemas operativos para satisfacer las necesidades que de ellos se quieren obtener.<br />2.Estructura monolítica.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 (Ver Fig. 2). Las características fundamentales de este tipo de estructura son:Construcción del programa final a base de módulos compilados separadamente que se unen a través del ligador.Buena definición de parámetros de enlace entre las distintas rutinas existentes, que puede provocar mucho acoplamiento.Carecen de protecciones y privilegios al entrar a rutinas que manejan diferentes aspectos de los recursos de la computadora, como memoria, disco, etc.Generalmente están hechos a medida, por lo que son eficientes y rápidos en su ejecución y gestión, pero por lo mismo carecen de flexibilidad para soportar diferentes ambientes de trabajo o tipos de aplicaciones.<br />
  5. 5. 3. Estructura jerárquica.A medida que fueron creciendo las necesidades de los usuarios y se perfeccionaron los sistemas, se hizo necesaria una mayor organización del software, del sistema operativo, donde una parte del sistema contenía subpartes y esto organizado en forma de niveles.<br />Se dividió el sistema operativo en pequeñas partes, de tal forma que cada una de ellas estuviera perfectamente definida y con un claro interface con el resto de elementos.<br />Se constituyó una estructura jerárquica o de niveles en los sistemas operativos, el primero de los cuales fue denominado THE (Technische Hogeschool, Eindhoven), de Dijkstra, que se utilizó con fines didácticos (Ver Fig. 3). Se puede pensar también en estos sistemas como si fueran `multicapa'. Multics y Unix caen en esa categoría.<br />En la estructura anterior se basan prácticamente la mayoría de los sistemas operativos actuales. Otra forma de ver este tipo de sistema es la denominada de anillos concéntricos o "rings" (Ver Fig. 4).En el sistema de anillos, cada uno tiene una apertura, conocida como puerta o trampa (trap), por donde pueden entrar las llamadas de las capas inferiores. De esta forma, las zonas más internas del sistema operativo o núcleo del sistema estarán más protegidas de accesos indeseados desde las capas más externas. Las capas más internas serán, por tanto, más privilegiadas que las externas.<br />
  6. 6. 4. Máquina Virtual.Se trata de un tipo de sistemas operativos que presentan una interface a cada proceso, mostrando una máquina que parece idéntica a la máquina real subyacente. Estos sistemas operativos separan dos conceptos que suelen estar unidos en el resto de sistemas: la multiprogramación y la máquina extendida. El objetivo de los sistemas operativos de máquina virtual es el de integrar distintos sistemas operativos dando la sensación de ser varias máquinas diferentes.<br />El núcleo de estos sistemas operativos se denomina monitor virtual y tiene como misión llevar a cabo la multiprogramación, presentando a los niveles superiores tantas máquinas virtuales como se soliciten. Estas máquinas virtuales no son máquinas extendidas, sino una réplica de la máquina real, de manera que en cada una de ellas se pueda ejecutar un sistema operativo diferente, que será el que ofrezca la máquina extendida al usuario .<br />Cliente-servidor ( Microkernel)El tipo más reciente de sistemas operativos es el denominado Cliente-servidor, que puede ser ejecutado en la mayoría de las computadoras, ya sean grandes o pequeñas.Este sistema sirve para toda clase de aplicaciones por tanto, es de propósito general y cumple con las mismas actividades que los sistemas operativos convencionales.<br />
  7. 7. Núcleos de sistemas operativos<br />Los núcleos (kernels) de los sistemas operativos se pueden ubicar en dos categorías: monolíticos o micro núcleos (microkernels). El primer tipo de núcleo es el más tradicionalmente usado, mientras que los micro núcleos forman parte delas tendencias modernas en el diseño de sistemas operativos.<br />Para comprender mejor qué diferencias existen entre ambas categorías, se necesita revisar algunos conceptos.<br />Trabajos, Procesos y ThreadEstos tres conceptos van definiendo el grado de granularidad en que el sistema operativo trata a las masas de operaciones que se tienen que realizar. Un trabajo se conceptualiza como un conjunto de uno o más procesos. Por ejemplo, si se tiene que hacer el trabajo de correr el inventario, tal vez se subdivida ese trabajo en varios procesos: obtener la lista de artículos, número en existencia, artículos vendidos, artículos extraviados, etc. Un proceso se define como la imagen de un programa en ejecución, es decir, en memoria y usando el CPU. A este nivel de granularidad, un proceso tiene un espacio de direcciones de memoria, una pila, sus registros y su program counter'. Un thread es un trozo o sección de un proceso que tiene sus propios registros, pila y program counter' y puede compartir la memoria con todos aquellos threads que forman parte del mismo proceso.<br />
  8. 8. Los Estándares de POSIX<br />Al momento del auge de los estándares de POSIX desgraciadamente se formó un grupo de fabricantes de computadoras (IBM, DEC y Hewlett-Packard) que lanzaron su propia versión de UNIX llamada OSF/1 (de Open Software Fundation). Lo bueno fue que su versión tenía como objetivo cumplir con todas los estándares del IEEE, además de un sistema de ventanas (el X11), una interfaz amigable para los usuarios (MOTIF) y las definiciones para cómputo distribuido (DCE) y administración distribuida (DME). La idea de ofrecer una interfaz amigable en UNIX no fue original de OSF, ya en la versión 3.5 de SunOS de Sun Microsystems se ofrecía una interfaz amigable y un conjunto de librerías para crear aplicaciones con interfaz gráfica técnicamente eficiente y poderosa llamada SunWindows o SunVIEW. Esta interfaz junto con sus librerías estaban evolucionando desde la versión para máquinas aisladas hacia una versión en red, donde las aplicaciones podían estarse ejecutando en un nodo de la red y los resultados gráficos verlos en otro nodo de la red, pero Sun tardó tanto en liberarlo que le dio tiempo al MIT de lanzar el X11 y ganarle en popularidad.<br />AT&T formó, junto con Sun Microsystems y otras compañias UNIX International y su versión de UNIX, provocando así que ahora se manejen esas dos corrientes principales en UNIX.<br />
  9. 9. El núcleo de UNIX<br />El núcleo de UNIX (kernel) se clasifica como de tipo monolítico, pero en él se pueden encontrar dos partes principales [Tan92]:el núcleo dependiente de la máquina y el núcleo independiente. El núcleo dependiente se encarga de las interrupciones, los manejadores de dispositivos de bajo nivel (lower half) y parte del manejo de la memoria. El núcleo independiente es igual en todas las plataformas e incluye el manejo de llamadas del sistema, la planificación de procesos, el entubamiento, el manejo de sentilde;ales, la paginación e intercambio, el manejo de discos y del sistema de archivos.<br />Los procesos en UNIXEl manejo de procesos en UNIX es por prioridad y round robin. En algunas versiones se maneja también un ajuste dinámico de la prioridad de acuerdo al tiempo que los procesos han esperado y al tiempo que ya han usado el CPU. El sistema provee facilidades para crear 'pipes' entre procesos, contabilizar el uso de CPU por proceso y una pila común para todos los procesos cuando necesitan estarse ejecutando en modo privilegiado (cuando hicieron una llamada al sistema). UNIX permite que un proceso haga una copia de sí mismo por medio de la llamada fork, lo cual es muy útil cuando se realizan trabajos paralelos o concurrentes; también se proveen facilidades para el envío de mensajes entre procesos. Recientemente Sun Microsystems, AT&T, IBM, Hewlett Packard y otros fabricantes de computadoras llegaron a un acuerdo para usar un paquete llamado ToolTalk para crear aplicaciones que usen un mismo método de intercambio de mensajes.<br />
  10. 10. El manejo de entrada/salida en UNIX<br />Derivado de la filosofía de manejar todo como flujo de bytes, los dispositivos son considerados como archivos que se accesan mediante descriptores de archivos cuyos nombres se encuentran generalmente en el directorio '/dev'. Cada proceso en UNIX mantiene una tabla de archivos abiertos (donde el archivo puede ser cualquier dispositivo de entrada/salida). Esa tabla tiene entradas que corresponden a los descriptores, los cuales son números enteros [Deitel93] obtenidos por medio de la llamada a la llamada del sistema 'open'. En la tabla 8.3 se muestran las llamadas más usuales para realizar entrada/salida.<br />Llamada Funciónopen Obtener un descriptor entero.close Terminar las operaciones sobre el archivolseek Posicionar la entrada/salida.read,write Leer o escribir al archivo (dispositivo)ioctl Establecer el modo de trabajo del dispositivo<br />
  11. 11. Caso De Estudio: VMS<br />El sistema operativo VMS (Virtual Memory System) es uno de los más robustos en el mercado, aunque es propietario de la compañia Digital Equipment Corporation. Actualmente con su versión OpenVMS 5.x existe para los procesadores de las máquinas VAX (CISC) y con el Alpha-chip (RISC). Ofrece un amplio conjunto de comandos a través de su intérprete Digital Command Language (DCL), utilidades de red (DECnet), formación de clusters' de computadoras para compartir recursos, correo electrónico y otras facilidades. Es un sistema operativo multiusuario/multitarea monolítico.<br />El manejo de archivos en VMSEl sistema de archivos de VMS es jerárquico aunque la descripción de sus senderos tiene una sintaxis propia. En la figura 9.1 se muestra un ejemplo.Los archivos en VMS se referencían con la sintaxis nombre.tipo;versión', donde 'nombre' es una cadena de caracteres alfanuméricos, 'tipo' es la extensión del archivo y se usa generalmente para describir a qué aplicación pertenece (pas=pascal, for fortran, etc.) y 'versión' es un número entero que el sistema se encarga de asignar de acuerdo al número de veces que el archivo ha sido modificado. Por ejemplo, si se ha editado tres veces el archivo 'lee.pas', seguro que existirán las versiones 'lee.pas;1', 'lee.pas;2' y 'lee.pas;3'. De esta forma el usuario obtiene automáticamente una 'historia' de sus archivos.La protección de los archivos se realiza mediante listas de control de acceso (Access Control Lists). Se pueden establecer protecciones hacia el dueño del archivo, hacia los usuarios privilegiados (system), hacia los usuarios que pertenecen al mismo grupo de trabajo que el dueño y hacia el resto del mundo.<br />
  12. 12. Manejo de procesos en VMS<br />Soporta muchos ambientes de usuario tales como : Tiempo crítico, desarrollo de programas interactivos, batch, ya sea de manera concurrente, independiente o combinado.El calendarizador VAX/VMS realiza calendarización de procesos normales y de tiempo real, basados en la prioridad de los procesos ejecutables en el Balance Set. Un proceso normal es referido a como un proceso de tiempo compartido o proceso background mientras que los procesos en tiempo real se refieren a los de tiempo crítico.<br />En VMS los procesos se manejan por prioridades y de manera apropiativa. Los procesos se clasifican de la prioridad 1 a la 31, siendo las primeras quince prioridades para procesos normales y trabajos en lote, y de la 16 a la 31 para procesos privilegiados y del sistema. Las prioridades no permanecen fijas todo el tiempo sino que se varían de acuerdo a algunos eventos del sistema. Las prioridades de los procesos normales pueden sufrir variaciones de hasta 6 puntos, por ejemplo, cuando un proceso está esperando un dispositivo y éste fue liberado. Un proceso no suelta la unidad central de procesamiento hasta que exista un proceso con mayor prioridad.<br />El proceso residente de mayor prioridad a ser ejecutado siempre se selecciona para su ejecución. Los procesos en tiempo crítico son establecidos por el usuario y no pueden ser alterados por el sistema. La prioridad de los procesos normales puede ser alterada por el sistema para optimizar overlap de computación y otras actividades I/O.<br />
  13. 13. Servicios del Sistema para el Control de Procesos<br />Crear un proceso:<br />El servicio de creado de sistema permite a un proceso crear otro. El proceso creado puede ser un subproceso o un proceso completamente independiente. (se necesitan privilegios para hacer esto).<br />Suspender un proceso:<br />Esto es que le permite a un proceso suspenderse a sí mismo o a otro (también necesita tener privilegios).<br />Reanudar un proceso:<br />Permite a un proceso reanudar a otro si es que este tiene privilegios para hacerlo.<br />Borrar un proceso:<br />Permite que se borre el proceso mismo o a otro si es que es un subproceso, o si no tiene que tener privilegios de borrado.<br />Dar Prioridad:<br />Permite que el proceso mismo se ponga prioridad o a otros, para el calendarizador.<br />
  14. 14. Dar el modo de espera:<br />Permite que el proceso escoja de dos modos: el modo por default es cuando un proceso requiere un recurso y está ocupado y espera a que esté desocupado, y el otro modo es cuando está ocupado el recurso, el proceso no espera y notifica al usuario que el recurso no se encuentra disponible en ese momento en lugar de esperar.<br />Hibernar:<br />Es cuando un proceso se hace inactivo pero está presente en el sistema. Para que el proceso continue necesita de un evento para despertar.<br />Wake:<br />Esto activa a los procesos que están hibernando.<br />Exit:<br />Es cuando se aborta un proceso.<br />Dar nombre al proceso:<br />Este puede dar un nombre al proceso mismo o cambiarlo (el PCB contiene el nombre).<br />
  15. 15. Caso De Estudio: OS/2<br />El sistema operativo OS/2 ha tenido una historia turbulenta en el seno de Microsoft e IBM, creciendo en algún tiempo bajo equipos de trabajo de ambas compañías y prosiguiendo finalmente con la última. Los objetivos para este sistema operativo eran: compatibilidad para ejecutar los programas existentes para DOS en las computadoras 80x86, ofrecer la multitarea, la facilidad de memoria virtual y servicios de red de área local [Alcal92].<br />Manejo de archivos en OS/2Debido al objetivo inicial de mantener compatibilidad con DOS, las versión 1.0 de OS/2 era muy similar a la de éste sistema operativo. Posteriormente en las versiones 2.x mejoró el sistema de archivos con otras facilidades, como ofrecer dos modos de trabajo: el síncrono y el asíncrono. El modo síncrono se realiza a través del llamado a las rutinas DosRead y DosWrite, mientras que el asíncrono se realiza por medio de DosReadAsync y DosWriteAsync. En el caso de que se estén ejecutando varios threads de un proceso, la sincronización de las operaciones sobre archivos se puede realizar a través de semaacute;foros con la llamada a la rutina DosMuxSemWait.<br />
  16. 16. Caso De Estudio: WindowsNT<br />Windows NT es el nuevo sistema operativo de Microsoft. Fue diseñado para tomar ventaja de todo el poder que ofrecen los procesadores más avanzados de Intel, así como algunos de los procesadores RISC. Windows NT es la respuesta de Microsoft a UNIX. NT ofrece los mismos servicios que UNIX, interopera con redes UNIX pero remplaza los comandos criacute;pticos de UNIX, su estructura de archivos ARCANE y la mezcla de GUIs con una simple y estandarizada interfaz para el usuario como lo es Windows. Además, NT tiene las características que originalmente iba a tener el OS/2: un avanzado sistema operativo de 32 bits y compatibilidad con Windows GUI, además de soportar las aplicaciones hechas en DOS pero liberándose de las limitaciones de éste. Las características de diseño que hacen de Windows NT un sistema operativo avanzado son:<br />
  17. 17. Extensibilidad: El código podrá ser alterado (crecer o cambiar) de manera sencilla según cambien las necesidades del mercado.<br />Portabilidad: El código podrá utilizar cualquier procesador sin que esto afecte su desempeño de manera negativa.<br />Confiabilidad y robustez: El sistema deberá auto-protegerse tanto de los malos funcionamientos internos como de los externos. Así mismo se deberá comportar de manera predecible en cualquier momento y las aplicaciones no deberán afectar su funcionamiento en forma negativa.<br />Compatibilidad: El sistema se extendará hacia la tecnología existente pero al mismo tiempo sus API y sus UI serán compatibles con los sistemas ya existentes de Microsoft.<br />Multiprocesamiento y escalabilidad: Las aplicaciones podrán tomar ventaja de cualquier computadora y los usuarios podrán correr las mismas aplicaciones tanto en una computadora de un procesador como en una multiprocesador.<br />Cómputo distribuído: NT será capaz de repartir sus tareas computacionales a otras computadoras en la red para dar a los usuarios más poder que el que tenga cualquier computadora por sí misma en la red. Podrá usar computadoras tanto local como remotamente de manera transparente al usuario (efecto de sinergia en red).<br />Desempeño: El sistema debe responder y ser lo más rápido posible en cada plataforma HW.<br />
  18. 18. Compatibilidad con POSIX: POSIX (Portable Operating System based on UNIX) es un estándar especificado por el gobierno de los EU, el cual deberán de cumplir todos los contratos en el área computacional que sean vendidos a ese gobierno. NT puede proporcionar un ambiente opcional para la ejecución de aplicaciones POSIX.<br />Seguridad certificable por el gobierno de EU: El gobierno de EU estableció niveles de seguridad computacional como guías a cumplir para todas las aplicaciones gubernamentales. El rango de estos niveles va desde la D (menor) hasta la A (mayor), en donde la C y B tienen varios subniveles. NT puede soportar el C2 (el dueño del sistema tiene el derecho de decidir quién tiene permiso de acceso y el sistema operativo puede detectar cuándo los datos son accesados y por quién) pero en futuras versiones puede ser mejorada para alcanzar niveles de seguridad más altos.<br />
  19. 19. Independencia de plataformas<br />El propósito de Windows NT es el de ser un sistema operativo diseñado para correr en distintas plataformas soportando los siguientes procesadores:<br />La familia Intel x86<br />De motorola 680x0<br />El MIPS 400<br />El ALFA de Dec.<br />El HP-PA de Hewlett Packard<br />Los SPARC RISC processors de Sun Microsystems.<br />El RS/6000 de IBM<br />Una futuras versiónes del Powerpc (Apple, IBM y Motorola)<br />La independencia de plataforma está basada en el concepto de el desarrollar un kernel específico para cada uno de los distintos procesadores que sirva de interfaz entre el hardware específico y las llamadas al sistema de NT.<br />
  20. 20. La parte del sistema operativo que gestiona los procesos se llama planificador, y su implementación ha ido creciendo en complejidad a medida que Linux crecía de versión. Actualmente se tienen muchísimos aspectos en cuenta a la hora de gestionar los procesos y se consigue una perfecta ilusión de multitarea, que otros sistemas operativos, no hay que dejar de destacarlo, no acaban de conseguir. Y es que éste es uno de los aspectos en que Linux no ha dejado de mejorar desde su nacimiento.Servidores, demonios, procesos ligeros y procesos núlosVamos a definir una serie de términos con relación al tema que nos ocupa:Servidores: es un proceso que está pendiente de recibir órdenes de trabajo que provienen de otros procesos, que se denominan clientes. Una vez recibida la orden la ejecuta y responde al peticionario con el resultado.Demonios: un demonio es un proceso que se arranca al iniciar el sistema operativo puesto que debe estar siempre activo. No mueren, en muchos casos están en espera de un evento o tienen encomendada una labor determinada que hay que realizar de forma periódica. No suelen realizar su trabajo directamente sino que lanzan otros procesos para ello. Y se ejecutan en background sin estar asociados por tanto a ningún terminal o proceso login.<br />Proceso Ligero: es un programa en ejecución que comparte la imagen de memoria y otras informaciones con otros procesos ligeros. Se trata básicamente de un proceso con varios flujos de ejecución. Desde el punto de vista de la programación cada proceso ligero se define como una función cuya ejecución se puede lanzar en paralelo con otras.<br />Proceso Nulo: se trata de un proceso cuya finalidad es entretener al procesador cuando éste no tiene ninguna otra tarea que hacer (un procesador no para nunca de ejecutar instrucciones, de ahí la necesidad de este proceso).<br />

×