unidad i sistemas

36
Sistemas Operativos Unidad 1 Introducción a los Sistemas Operativos 1.1 Definición y concepto Sin el software, una computadora solo es una masa metálica sin utilidad. Con el software, una computadora puede almacenar, procesar y recuperar información, encontrar errores de ortografía en manuscritos, tener aventuras e intervienen muchas otras valiosas actividades para ganar el sustento. El software de computadoras puede clasificarse en general en 2 clases: los programas de sistemas que controlan las operación de la computadora en sí y los programas de aplicación, los cuales resuelven los problemas de los usuarios. El programa fundamental de todos los programas es el sistema operativo (SO), que controla todos los recursos de la computadora y proporciona los recursos por los cual pueden escribirse los programas de aplicación. Se puede definir de la siguiente manera: Programa informático que se inicia al encender el ordenador para coordinar su funcionamiento y permitir la comunicación eficaz de la máquina con el usuario. Como concepto mas general podríamos decir que: Un Sistema Operativo es un conjunto de programas que controlan los programas de los usuarios

Upload: hernan-torres-mata

Post on 07-Dec-2015

243 views

Category:

Documents


0 download

DESCRIPTION

información operativos unidad 1

TRANSCRIPT

Sistemas Operativos

Unidad 1 Introducción a los Sistemas Operativos

1.1 Definición y concepto

Sin el software, una computadora solo es una masa metálica sin utilidad. Con el software, una computadora puede almacenar, procesar y recuperar información, encontrar errores de ortografía en manuscritos, tener aventuras e intervienen muchas otras  valiosas actividades  para ganar el sustento. El software de computadoras puede clasificarse en general en 2 clases: los programas de sistemas que controlan las operación de la computadora en sí  y los programas de aplicación, los cuales resuelven los problemas de los usuarios.

 El programa fundamental de todos los programas es el sistema operativo (SO), que controla todos  los recursos de la computadora y proporciona los recursos por los cual pueden escribirse los programas de aplicación.

Se puede definir de la siguiente manera: 

Programa informático que se inicia al encender el ordenador para coordinar su funcionamiento y permitir la comunicación eficaz de la máquina con el usuario.

Como concepto mas general podríamos decir que:  

Un Sistema Operativo es un conjunto de programas que controlan los programas de los usuarios (cargándolos, ejecutándolos, etc.) y los dispositivos de entrada/salida (repartiéndolos entre varios usuarios), y que tiene por objeto facilitar el uso de la computadora y conseguir que ésta se utilice eficientemente.

Dicho de otra forma, un sistema Operativo es un conjunto de programas que controlan permanentemente todos los recursos del sistema y que tienen por objeto minimizar el tiempo de respuesta de la computadora y maximizar su rendimiento. Así, el sistema operativo hace asignaciones en memoria, controla las operaciones de E/S, maneja errores, coordina la comunicación entre el usuario y el sistema, etc.

1.2 Funciones y características

FUNCIONES

Los sistemas operativos, en su condición de capa software que posibilitan y simplifica el manejo de la computadora, desempeñan una serie de funciones básicas esenciales para la gestión del equipo. Entre las más destacables, cada una ejercida por un componente interno (módulo en núcleos monolíticos y servidor en micronúcleos), podemos reseñar las siguientes:

Proporcionar más comodidad en el uso de un computador. Gestionar de manera eficiente los recursos del equipo, ejecutando servicios para los procesos (programas) Brindar una interfaz al usuario, ejecutando instrucciones (comandos). Permitir que los cambios debidos al desarrollo del propio SO se puedan realizar sin interferir con los

servicios que ya se prestaban (evolutividad). Un sistema operativo desempeña 5 funciones básicas en la operación de un sistema informático: suministro de interfaz al usuario, administración de recursos, administración de archivos, administración de tareas y servicio de soporte y utilidades.

 1. Interfaces del usuario

 Es la parte del sistema operativo que permite comunicarse con él, de tal manera que se puedan cargar programas, acceder archivos y realizar otras tareas. Existen tres tipos básicos de interfaces: las que se basan en comandos, las que utilizan menús y las interfaces gráficas de usuario.

     2. Administración de recursos

 Sirven para administrar los recursos de hardware y de redes de un sistema informático, como la CPU, memoria, dispositivos de almacenamiento secundario y periféricos de entrada y de salida.

     3. Administración de archivos

Un sistema de información contiene programas de administración de archivos que controlan la creación, borrado y acceso de archivos de datos y de programas. También implica mantener el registro de la ubicación física de los archivos en los discos magnéticos y en otros dispositivos de almacenamiento secundarios.

     4. Administración de tareas

 Los programas de administración de tareas de un sistema operativo administran la realización de las tareas informáticas de los usuarios finales. Los programas controlan que áreas tiene acceso al CPU y por cuánto tiempo.

Las funciones de administración de tareas pueden distribuir una parte específica del tiempo del CPU para una tarea en particular, e interrumpir al CPU en cualquier momento para sustituirla con una tarea de mayor prioridad.

     5. Servicio de soporte

 Los servicios de soporte de cada sistema operativo dependerán de la implementación particular de éste con la que estemos trabajando. Entre las más conocidas se pueden destacar las implementaciones de Unix, desarrolladas por diferentes empresas de software, los sistemas operativos de Apple Inc., como Mac OS X para las computadoras de Apple Inc., los sistemas operativos de Microsoft, y las implementaciones de software libre, como GNU/Linux o BSD producidas por empresas, universidades, administraciones públicas, organizaciones sin fines de lucro y/o comunidades de desarrollo.

Estos servicios de soporte suelen consistir en: Actualización de versiones.  Mejoras de seguridad. Inclusión de alguna nueva utilidad (un nuevo entorno gráfico, un asistente para administrar alguna

determinada función, ...). Controladores para manejar nuevos periféricos (este servicio debe coordinarse a veces con el fabricante

del hardware). Corrección de errores de software. Otros.

No todas las utilidades de administración o servicios forman parte del sistema operativo, además de éste, hay otros tipos importantes de software de administración de sistemas, como los sistemas de administración de base de datos o los programas de administración de redes. El soporte de estos productos deberá proporcionarlo el fabricante correspondiente (que no tiene porque ser el mismo que el del sistema operativo).

Tareas que realiza un sistema operativo

Realizar el interfaz sistema-usuario. Compartir los recursos de Hardware entre los usuarios. Permitir a los usuarios compartir sus datos entre ellos. Prevenir que las actividades de un usuario no interfieran en las de los demás usuarios. Calendarizar los recursos de los usuarios. Facilitar el acceso a los dispositivos de E/S. Recuperarse de fallas o errores. Llevar el control sobre el uso de los recursos, entre otras. 

Un sistema operativo está formado por varios programas que en conjunto presentan al usuario una vista integrada del sistema, los componentes principales de un sistema operativo son los siguientes módulos:

Manejo de procesos.  Manejo de E/S.  Manejo de Memoria.  Manejo del Sistema de Archivos.

El sistema operativo indica a la computadora la manera de utilizar otros programas de software y administra todo el hardware, tanto el interno como el externo, que está instalado en la computadora. Los sistemas operativos pueden ser basados en caracteres o gráficos. Un sistema operativo basado en caracteres, tal como MS-DOS, le permite escribir comandos en un indicador para controlar la computadora. Un interfaz gráfico del usuario, o GUI, le permite enviar comandos a la computadora al hacer clic en iconos o al seleccionar elementos en los menús. Windows 95 cuenta con un GUI. 

La mayoría de los sistemas operativos pueden manejar programas de 16 ó 32 bits, o ambos. Microsoft Windows 3.x ejecuta únicamente los programas de 16 bits; Windows 95 de Microsoft puede ejecutar ambos programas de 16 ó 32 bits.

CARACTERÍSTICAS

En general puede decirse que un sistema operativo tiene las siguientes características:

1. Convenicencia: Un sistema operativo hace mas conveniente el uso de la  computadora2. Eficiencia: Un sistema operativo permite que los recursos de una computadora se usen de la manera mas

eficiente posible.3. Habilidad para evolucionar:  Un sistema operativo deberá construirse de manera que permita el

desarrolla, prueba o introducción efectiva de nuevas funciones del sistema sin interferir con el servicio.4. Encargado de administrar el hardware: El sistema operativo de encarga de administrar de una mejor

manera los recursos de una computadora en cuanto a hardware se refiere, esto es, asignar a cada proceso una parte del procesador para compartir los recursos.

5. Relacionar los dispositivos(gestionar atravéz del kernel): El sistema operativo debe de encargar de comunicar a los dispositivos cuando el usuario asi lo requiera.

6. Organizar datos para acceso rápido y seguro.7. Manejar comunicación en red: El sistema operativo permite al usuario manejar con alta facilidad todo

lo referente a la instalación  y el uso de las redes de los ordenadores.8. Procesamiento por bytes de flujo a travez del bus de datos.9. Facilitar las entradas y salidas: Un sistema operativo debe hacerle fácil al usuario el acceso y manejo

de los dispositivos de entrada/salida de la computadora.10. Técnicas de recuperación de errores.11. Evita que otros usuarios interfieran. El Sistema Operativo evita que los usuarios se bloqueen entre

ellos, informándoles si esa aplicación esta siendo ocupada por otro usuario.12. Generación de estadísticas13. Permite que se puedan compartir el hardware y los datos entre los usuarios.

1.3 Evolución histórica.

Para tratar de comprender los requisitos de un Sistema Operativo y el significado de las principales características de un Sistema Operativo contemporáneo, es útil considerar como han ido evolucionando éstos con el tiempo.Existen diferentes enfoques o versiones de como han ido evolucionando los Sistemas OperativosLa primera de estas versiones podría ser esta:En los 40's, se introducen los programas bit a bit, por medio de interruptores mecánicos y después se introdujo el lenguaje máquina que trabajaba por tarjetas perforadas.Con las primeras computadoras, desde finales de los años 40 hasta la mitad de los años 50, el programador interactuaba de manera directa con el hardware de la computadora, no existía realmente un Sistema Operativo; las primeras computadoras utilizaban bulbos, la entrada de datos y los programas se realizaban a través del lenguaje  máquina (bits) o a través de interruptores.Durante los años 50's y 60's.- A principio de los 50's, la compañía General's Motors implanto el primer sistema operativo para su IBM 170. Empiezan a surgir las tarjetas perforadas las cuales permiten que los usuarios (que en ese tiempo eran programadores, diseñadores, capturistas, etc.), se encarguen de modificar sus programas. Establecían o apartaban tiempo, metían o introducían sus programas, corregían y depuraban sus programas en su tiempo. A esto se le llamaba trabajo en serie. Todo esto se traducía en pérdida de tiempo y tiempos de programas excesivos.

En los años 60's y 70's se genera el circuito integrado, se organizan los trabajos y se generan los procesos Batch (por lotes), lo cual consiste en determinar los trabajos comunes y realizarlos todos juntos de una sola vez. En esta época surgen las unidades de cinta y el cargador de programas, el cual se considera como el primer tipo de Sistema Operativo.En los 80's, inició el auge de la internet en los Estados Unidos de América. A finales de los años 80's comienza el gran auge y evolución de los Sistemas Operativos. Se descubre el concepto de multiprogramación que consiste en tener cargados en memoria a varios trabajos al mismo tiempo, tema principal de los Sistemas Operativos actuales.Los 90's y el futuro, entramos a la era de la computación distribuida y del multiprocesamiento a través de múltiples redes de computadoras, aprovechando el ciclo del procesador.Se tendrá una configuración dinámica con un reconocimiento inmediato de dispositivos y software que se añada o elimine de las redes a través de procesos de registro y localizadores.La conectividad se facilita gracias a estándares y protocolos de sistemas abiertos por organizaciones como la Org. Intern. de normas, fundación de software abierto, todo estará mas controlado por los protocolos de comu nicación OSI y por la red de servicios digital ISDN.Se ha desarrollado otra version, la cual se ha hecho en base a etapas o generaciones: 

1a. Etapa (1945-1955): Bulbos y conexiones. 

Despues de los infructuosos esfuerzos de Babbage, hubo poco progreso en la construccion de las computadoras digitales, hasta la Segunda Guerra Mundial. A mitad de la decada de los 40's, Howard Aiken (Harvard), John Von Newman (Instituto de Estudios Avanzados, Princeton), J. Prespe R. Eckert y Williams Mauchley (Universidad de Pennsylvania), asi como Conrad Zuse (Alemania), entre otros lograron construir maquinas de calculo mediante bulbos. Estas maquinas eran enormes y llenaban cuartos completos con decenas de miles de bulbos, pero eran mucho mas lentas que la computadora casera mas economica en nuestros dias. Toda la programacion se llevaba a cabo en lenguaje de maquina absoluto y con frecuencia se utilizaban conexiones para controlar las funciones basicas de la maquina. Los lenguajes de programacion eran desconocidos (incluso el lenguaje ensamblador). No se oia de los Sistemas Operativos el modo usual de operacion consistia en que el programador reservaba cierto periodo en una hoja de reservacion pegada a la pared, iba al cuarto de la maquina, insertaba su conexion a la computadora y pasaba unas horas esperando que ninguno de los 20,000 o mas bulbos se quemara durante la ejecucion. La inmensa mayoria de los problemas eran calculos numericos directos, por ejemplo, el calculo de valores para tablas de senos y cosenos. A principio de la decada de los 50's la rutina mejoro un poco con la introduccion de las tarjetas perforadas. Fue entonces posible escribir los programas y leerlas en vez de insertar conexiones, por lo demas el proceso era el mismo.     2a. Etapa. (1955-1965): Transistores y Sistemas de Procesamiento por lotes.

La introducción del transistor a mediados de los años 50's modifico en forma radical el panorama. Las

computadoras se volvieron confiables de forma que podian fabricarse y venderse a clientes, con la esperanza de que ellas continuaran funcionando lo suficiente como para realizar un trabajo en forma. Dado el alto costo del equipo, no debe sorprender el hecho de que las personas buscaron en forma por demas rapidas vias para reducir el tiempo invertido. La solucion que, por lo general se adopto, fue la del sistema de procesamiento por lotes. 

    3ra Etapa (1965-1980): Circuitos integrados y multiprogramacion

     La 360 de IBM fue la primera linea principal de computadoras que utilizo los circuitos integrados, lo que proporciono una gran ventaja en el precio y desempeño con respecto a las maquinas de la segunda generacion, construidas a partir de transistores individuales. Se trabajo con un sistema operativo enorme y extraordinariamente complejo. A pesar de su enorme tamaño y sus problemas el sistema operativo de la linea IBM 360 y los sistemas operativos similares de esta generacion producidos por otros fabricantes de computadoras realmente pudieron satisfacer, en forma razonable a la mayoria de sus clientes. Tambien popularizaron varias tecnicas fundamentales, ausentes de los sistemas operativos de la segunda generacion, de las cuales la mas importante era la de multiprogramacion.

Otra caracteristica era la capacidad de leer trabajos de las tarjetas al disco, tan pronto como llegara al cuarto de computo. Asi, siempre que concluyera un trabajo el sistema operativo podia cargar un nuevo trabajo del disco en la particion que quedara desocupada y ejecutarlo. 

    4ta Etapa (1980-Actualidad): Computadoras personales

Un interesante desarrollo que comenzo a llevarse a cabo a mediados de la decada de los ochenta ha sido el crecimiento de las redes de computadoras personales, con sistemas operativos de red y sistemas operativos distribuidos.En los sistemas operativos de red, los usuarios estan conscientes de la existencia de varias computadoras y pueden conectarse con maquinas remotas y copiar archivos de una maquina a otra. Cada maquina ejecuta su propio sistema operativo local y tiene su propio usuario. 

Por el contrario, un sistema operativo distribuido es aquel que aparece ante sus usuarios como un sistema tradicional de un solo procesador, aun cuando esta compuesto por varios procesadores. En un sistema distribuido verdadero, los usuarios no deben ser conscientes del lugar donde su programa se ejecute o de lugar donde se encuentren sus archivos; eso debe ser manejado en forma automatica y eficaz por el sistema operativo.

A continuación se presenta  de manera individual los inicios de los principales sistemas operativos.

Los comienzos de DOS, los comienzos de la informática

 Bajo el concepto de 'la vida empieza con un disco duro', Tim Paterson define la informática en un período en el que la única manera de obtener un ordenador era comprar los componentes y ensamblarlos uno mismo.Tim Paterson, principal artífice del que sería uno de los sistemas operativos más conocidos del mercado, con varios cursos universitarios a sus espaldas y un poco de práctica en el mercado de distribución, empezó a diseñar sus propias estrategias sobre lo que tenía delante de los ojos: los periféricos.  'Rod Brock me contrató en junio de 1978 por 50 dólares al día y, tras unas semanas trabajando en el departamento de consultoría, me convertí en empleado de Seattle Computer'. Durante su época de estudiante, Paterson había mostrado mucho interés por  los sistemas operativos, al igual que por las soluciones de hardware y compiladores. Sin embargo, gradualmente, la desilusión se iba incrementando.'Todo lo que nos hacían estudiar era demasiado teórico y no lo que yo necesitaba'.En Seattle Computer, Tim Paterson trabajó en varios proyectos, como rediseñar memorias S-100. No obstante, las cosas empezaron a cambiar cuando 'la promesa de la programación' acudió a un seminario sobre el chip 8086 de Intel en julio de 1978.'Me gané el respeto de Rod Brock e hice algunas sugerencias. Le di unas cuantas vueltas al procesador 8086 mientras Brock me dio carta blanca. De hecho, el primer diseño de la placa 8086 se terminó a finales de enero pero nosotros teníamos ya el prototipo en mayo de 1979. Creamos tres placas, aunque sin ningún vínculo que las relacionara. Existían ambos factores, tanto errores de presentación como de diseño, pero conseguimos que dos prototipos funcionaran'.Por su parte, Seattle Computer se planteaba ya por aquellos años la idea de crear su propio ordenador aunque las estrategias de negocio al respecto nunca llegaban.  Una vez el prototipo 8085 estuvo funcionando, Seattle se acercó a Digital  Research para comprobar si podía lograr que CP/M trabajara con él. Junto a esto, Microsoft, que se había trasladado a Seattle en enero de 1979, quería observar si algunos de sus programas funcionaban. Y, a finales de mayo de 1979, Paterson se incorporó a Microsoft para trabajar con Bob O'Rear. 'Microsoft ya había desarrollado buenas herramientas, como un ensamblador  para usar con el PDP-10. Había unos cuantos virus pero básicamente la placa trabajaba correctamente junto con las soluciones que se habían desarrollado recientemente'. En la Conferencia National Computer celebrada en Nueva York en el año 1979, Seattle Computer fue invitado por Microsoft y Lifeboat. Estas mostraron Basic-86, entonces el único software diseñado para el 8086. Mientras, Seattle Computer empezaba a comercializar el producto con su placa en noviembre, inicialmente preparado para desarrolladores de software.En abril de 1980, Paterson empezó a trabajar por primera vez en un sistema operativo. 'Necesitábamos una solución en Seattle Computer para nuestros propios ordenadores y yo quería construir una, así que nos decidimos de lleno.Además, siempre quise escribir mi propio sistema operativo. Nunca me gustó CP/M y, de hecho, pensaba que yo podía hacerlo mucho mejor'. 

LA GESTACIÓN

Como resultado, en la primavera de 1980, Paterson empezó a trabajar en lo que se convertiría en MS-DOS. En julio, ya se había terminado cerca del 50 por ciento del sistema conocido como QDOS 0.10 aunquerápidamente se presentó QDOS 0.11. 'El primer paso fue escribir lo que CP/M-80 podía realizar. El segundo fue diseñar un sistema de archivos rápido y eficiente'. Una de las diferencias más significativas entre CP/M-86 y MS-DOS, cuando ya se hizo realidad, fue el sistema de gestión de archivos. CP/M generalmente ofrece una ventana de no más de 16 ó 32K; sin embargo, con MS-DOS, hay más capacidad.De hecho, Paterson creó'P el módulo de gestión de archivos de QDOS empleando el mismo método que en Basic-86. 'Todo programador sabe que se van a necesitar ciertas funcionalidades antes o después, razón por la que yo construyo herramientas en las que se basa el próximo sustrato'. A finales de agosto de 1980, QDOS 0.11 trabajaba y se comercializaba bastante bien.Paterson trabajó duro para incluir todas las características propias de un sistema operativo completo. 'Sin embargo, me quedé horrorizado cuando oí que IBM lo estaba utilizando y que no lo había tirado por la ventana'. En diciembre de 1980, Paterson y compañía presentaron 86-DOS, 0.33, que representaba mejoras significativas sobre QDOS. '86-DOS reflejaba todo lo que habíamos aprendido hasta entonces. El ensamblador, originalmente escrito en el Z-80, se hizo más rápido. También hicimos algunos cambios en las denominaciones del sistema'. Así, a finales de 1980, Seattle Computer vendió     86-DOS a OEMs (integradores) y a otras compañías como Microsoft. En otro sentido, a principios de 1981, el ordenador personal de IBM todavía no se había anunciado, aunque ciertos rumores planeaban sobre el producto del Gigante Azul. 'Todos nosotros sospechábamos que IBM y Microsoft habían llegado a algún tipo de acuerdo pero no estábamos seguros'.En abril del mismo año, mientras Paterson se centraba en algunos cambios internos del 86-DOS, como modificar las llamadas del sistema o incluir gestión de errores para discos duros, Paterson decidió abandonar Seattle Computer. En mayo, se fue a trabajar a Microsoft a tiempo completo en la versión PC-DOS de 86-DOS. 'Trabajé en Microsoft durante 11 meses. En mayo, junio y julio me volqué sobre ciertos aspectos que nunca había terminado, estaba remodelando PC-DOS'. Este fue el comienzo de una vorágine de 11 meses. Casi a diario, Paterson se entrevistaba con la plantilla de Boca Ratón para conseguir la aprobación de IBM e, instantáneamente, la compañía respondía con críticas, modificaciones y problemas.A pesar de todo, Paterson terminó PC-DOS en julio, un mes antes de que el ordenador fuera anunciado oficialmente a nivel mundial. En ese momento, 86-DOS se había convertido en MS-DOS. 'Microsoft quería tenerlo en su poder, de manera que las dos firmas, Microsoft y Seattle Computer, llegaron a un acuerdo dado que esta segunda empresa no tenía la cuota de mercado de Microsoft.Consecuentemente, el 27 de julio de 1981, el sistema operativo se convirtió en propiedad de Microsoft. Sin embargo, creo que las dos empresas tuvieron un final feliz: la alianza se cerró pocas semanas antes de que el ordenador se anunciara. Es decir, Microsoft fue de confianza'

Unix como base de sistemas operativos

En 1969, algo maravilloso sucedió en el mundo de la informática: nació UNIX. En principio como un trabajo solitario de Ken Thompson, de Bell Labs, y luego en conjunto con Dennis Ritchie (quien junto a Brian Kerningan desarrollaron el lenguaje de programación C) y otros miembros del Bell Labs que se fueron incorporando. Ritchie ya tenia experiencia dado que había trabajado en otro proyecto llamado MULTICS, el cual fue de gran influencia sobre el nuevo SO, como por ejemplo en la organización básica del sistema de archivos, la idea de un intérprete de comando (el shell) como un proceso de usuario, etc. La primera versión de UNIX estaba hecha íntegramente en ensamblador. Esto se cambió con la versión posterior, que fue escrita en lenguaje C lo que lo hizo sumamente portable; así mismo también se le agrego una característica por demás de importante, la multiprogramación. Esto y la entrega de licencias gratuitas con fines educativos extendieron su uso, desarrollo y la investigación en las universidades. El uso de UNIX se fue ampliando a medida que se le fueron adicionando herramientas de software y entornos de programación, apoyo a protocolos de red Internet (TCP/IP), mejoras en el editor de texto (Vi), compiladores de C, PASCAL y LISP, mejora en el control de congestionamiento de redes y el rendimiento de TCP/IP. Al crecer la popularidad de UNIX, se a transportado a distintas plataformas de hardware (PC, MAC, ALPHA) y se han creado una gran cantidad de SO's UNIX y parecidos a UNIX (XENIX de Microsoft, AIX de IBM, SOLARIS de SunSoft).Las características principales de este SO es que se diseñó como un sistema de tiempo compartido. Esto quiere decir que varios usuarios estarán usando el sistema al mismo tiempo, sin notar la presencia de los demás en su ámbito de trabajo, lo que logra el SO asignándole un tiempo de atención para el CPU a cada usuario.La interfaz estándar con el usuario (el shell) puede ser cambiada si se quiere. La mayoría del código fuente original está disponible por lo que los usuarios podrán ajustar el SO a sus requerimientos específicos. Es multitarea, es decir que permite que se puedan ejecutar varios procesos al mismo tiempo compartiendo el uso de la CPU.Soporta el procesamiento en tiempo real (ejecución de procesos en intervalos de tiempo especificados sin retardo), el cual se utiliza en aplicaciones de robótica y base de datos.Los sistemas UNIX son esenciales para la Internet.Los sistemas de archivos con árboles multiniveles permiten que el SO trate tanto a directorios y archivos como simples secuencias de bytes.Posee distintos niveles de seguridad: password's de ingreso y permisos de archivos y directorios.Un proceso puede fácilmente generar otro, también es posible el manejo de procesos en determinado tiempo. Puede planearse la utilización de la CPU.El kernel y biblioteca del SO están preparados para que el SO pueda extenderse y crecer, lo que permitió a UNIX mantenerse siempre a la cabeza de los SO's estando permanentemente actualizado. Macintosh, el primero con interfaz gráfica de usuario

El sistema operativo Macintosh está directamente relacionado con la familia de ordenadores de Apple, laprimera del mercado que no era compatible con IBM.Fue el primer ordenador que popularizó la interfaz gráfica de usuario (GUI) que, junto con su hardware, se hizo famoso en el mundo de la informática por su facilidad de uso.

Otra de las características de Macintosh es que fue en sus tiempos, y sigue siendo, la serie de ordenadores personales no compatibles con IBM. Es decir los Macintosh, o Mac, sólo ejecutan aplicaciones Mac, aunque pueden acceder a Windows a través de emuladores como SoftWindows, que les permiten ejecutar aplicaciones de Windows y de Dos. Hacer funcionar el Mac como una máquina Mac/Windows nunca ha sido muy popular y en el mercado de la informática ha habido, hay y siempre habrá, un enfrentamiento entre ambos sistemas.El primer ordenador Macintosh, lanzado al mercado en 1984, contaba únicamente con una disquetera una memoria de 128K y una pantalla monocromo que formaban un único bloque. Mantenido durante cierto número de años, los sucesivos diseños se centraron en suavizar las curvas en sus modelos Classic y separar los monitores de las CPUs. A principios de los años 90, Apple vuelve a sus raíces y lanza la línea iMac y posteriormente el G4 Cube, regresando a los diseños compactos.Los primeros modelos contaban con una familia de CPUs de 32bits 680x0 de Motorola. En 1994 Apple presentó en el mercado los PowerMacs, que utilizaban Chips  PowerPC de alto rendimiento  diseñados por Apple, Motorola e IBM. De esta forma, los PowerMac ejecutaban aplicaciones nativas PowerPC y emulaban las tradicionales aplicaciones de los Mac 680x0. A lo largo de los años, los chips PowerPC han sufrido sustanciales incrementos en su rendimiento.Lanzado al mercado en 1999, el chip G4 permitía que Macintosh ejecutara 1.000 millones de operaciones en coma flotante por segundo, lo que suponía una máquina extremadamente rápida para las aplicaciones basadas en gráficos e imágenes tales como Photoshop. Uno de los principales logros de Macintosh fue que popularizó las interfaces gráficas de usuario (GUI) y simuló escritorios en las pantallas de los ordenadores. Fue el primer sistema que permitía ejecutar archivos arrastrándolos desde una carpeta a una aplicación directamente, lo que atrajo, desde el momento de su lanzamiento, a las personas no muy habituadas a los ordenadores. Y sigue siendo una de las razones, su facilidad de uso, por lo que en Estados Unidos los Macintosh son ampliamente utilizados en colegios.La interfaz gráfica de usuario fue realmente desarrollada por Xerox, que lo introdujo en su estación de trabajo Star en 1981. Apple se apropió de Star y, consecuentemente, otros copiaron a Mac, trasladando la interfaz gráfica de usuario al sistema operativo Windows y Unix.LisaDesk: lanzado en enero de 1983 para el ordenador lisa de Apple. En enero de 1985, lisa 2.10 se incluyó en MacWorks y su nombre pasó a ser Macintosh XL. System 1 (1.0 y 1.1): lanzadas respectivamente en enero y mayo de 1984, ambas versiones procedían directamente de LisaDesk y, aunque ofrecía menos funcionalidad, era

más estable. Ciertas funciones de LisaDesk fueron incluidas en posteriores versiones de Mac OS, incluyendo Mac OS X. System 2 (1.2 a 2.1): aunque se integraban nuevas funciones, el principal objetivo del sistema fue permitir una mejor gestión con el fin de compensar la ausencia de disco duro de los primeros modelos de Macintosh. System 3 (2.2 a 3.3): este sistema acompañó, en 1986, a los nuevos modelos de Macintosh. Contaba con más funciones y más potencia, permitiendo la integración del nuevo formato de archivos HFS, nuevas funcionalidades de comunicaciones, y soportaba impresoras láser. System 4 y 5 (4.0 a 5.1): acompañaron a los primeros modelos de Macintosh con monitores a color, y permitían la transición entre sistemas de tarea única a sistemas multitarea cooperativa con la primera generación de Mutifinder, que hacía posible la gestión de varias aplicaciones de forma simultánea. System 6 (6.0 a 6.0.8): se mejoraron los sistemas multitarea cooperativos con una segunda generación de Multifinder. Fue lanzado en versiones muy especializadas conforme a modelos que estaban equipados para necesidades específicas, particularmente para aplicaciones gráficas. System 7 (7.0 a 7.6.1): se completaba la integración de procesamiento de multitarea cooperativo dentro del sistema. Este sistema gradualmente integraba funcionalidades referidas a las aplicaciones multimedia e Internet. Ciertas versiones tenían problemas de estabilidad. Mac OS8 (7.7 a 8.6). Este sistema fue el primero que ofrecía una completa integración de aplicaciones multimedia e Internet, y mejoraban las funcionalidades y la estabilidad. Además, este sistema marcó el fin del soporte a las viejas arquitecturas 680x0. Mac OS 9 (8.7 a 9.2.2): primer sistema multiusuario, este sistema permitía la transición hacia el nuevos sistema Unix basado en Mac OS X. Este sistema marcó el final del soporte de los procedimientos de multitareas cooperativos y el soporte de la primera y segunda generación de arquitecturas PowerPC. Mac OS X (Rhapsody DR1 a 10.2.4): nueva generación de sistema con base Unix, multiprocesamiento simétrico, multitareas y protección de memoria.Lanzada inicialmente en una versión Server para profesionales, fue mejorado gradualmente para ofrecer, en un segundo momento, una versión para consumidores. Actualidad de los Sistemas Operativos

La actualidad de los Sistemas Operativos, la acaparan mayoritariamente “los tres grandes”, Windows, Unix y Mac Os, en sus respectivas versiones actuales.Paralelamente, estamos ante la evolución de los microprocesadores pasando de 32 a 64 bits, aumentando con ello el rendimiento y capacidad, ya existen sistemas operativos desarrollados específicamente para máquinas de 64 bits, tales como distribuciones de Linux y la versión de Windows XP para 64 bits.Se podría decir que el futuro es de los “dobles”, junto a los procesadores de 64 bits han aparecido los Microprocesadores de doble núcleo, en un primer momento “virtual” y ahora implementando físicamente dos núcleos en un mismo chip.La aplicación principal del doble núcleo es la división de tareas y por tanto mayor rapidez al realizarlas (“Divide y vencerás”)

1.4 Clasificación

Con el paso del tiempo, los Sistemas Operativos fueron clasificándose de diferentes maneras, dependiendo del uso o de la aplicación que se les daba. A continuación se mostrarán diversos tipos de Sistemas Operativos que existen en la actualidad, con algunas de sus características:

Sistemas Operativos por lotes.

Los Sistemas Operativos por lotes, procesan una gran cantidad de trabajos con poca o ninguna interacción entre los usuarios y los programas en ejecución. Se reúnen todos los trabajos comunes para realizarlos al mismo tiempo, evitando la espera de dos o más trabajos como sucede en el procesamiento en serie. Estos sistemas son de los más tradicionales y antiguos, y fueron introducidos alrededor de 1956 para aumentar la capacidad de procesamiento de los programas.

Cuando estos sistemas son bien planeados, pueden tener un tiempo de ejecución muy alto, porque el procesador es mejor utilizado y los Sistemas Operativos pueden ser simples, debido a la secuenciabilidad de la ejecución de los trabajos.

Algunos ejemplos de Sistemas Operativos por lotes exitosos son el SCOPE, del DC6600, el cual está orientado a procesamiento científico pesado, y el EXEC II para el UNIVAC 1107, orientado a procesamiento académico.

Algunas otras características con que cuentan los Sistemas Operativos por lotes son:

Requiere que el programa, datos y órdenes al sistema sean remitidos todos juntos en forma de lote. Permiten poca o ninguna interacción usuario/programa en ejecución. Mayor potencial de utilización de recursos que procesamiento serial simple en sistemas multiusuarios. No conveniente para desarrollo de programas por bajo tiempo de retorno y depuración fuera de línea. Conveniente para programas de largos tiempos de ejecución (ej, análisis estadísticos, nóminas de

personal, etc.) Se encuentra en muchos computadores personales combinados con procesamiento serial. Planificación del procesador sencilla, típicamente procesados en orden de llegada. Planificación de memoria sencilla,  generalmente se divide en dos: parte residente del S.O. y programas

transitorios. No requieren gestión crítica de dispositivos en el tiempo. Suelen proporcionar gestión sencilla de manejo de archivos: se requiere poca protección y ningún control

de concurrencia para el acceso.

Figura. Trabajos más comunes que realiza el Sistema Operativo por lotes.

  Sistemas Operativos de tiempo real.

Los Sistemas Operativos de tiempo real son aquelos en los cuales no tiene importancia el usuario, sino los procesos. Por lo general, están subutilizados sus recursos con la finalidad de prestar atención a los procesos en el momento que lo requieran. se utilizan en entornos donde son procesados un gran número de sucesos o eventos.

Muchos Sistemas Operativos de tiempo real son construidos para aplicaciones muy específicas como control de tráfico aéreo, bolsas de valores, control de refinerías, control de laminadores. También en el ramo automovilístico y de la electrónica de consumo, las aplicaciones de tiempo real están creciendo muy rápidamente. Otros campos de aplicación de los Sistemas Operativos de tiempo real son los siguientes:

Control de trenes. Telecomunicaciones. Sistemas de fabricación integrada. Producción y distribución de energía eléctrica. Control de edificios. Sistemas multimedia.

Algunos ejemplos de Sistemas Operativos de tiempo real son: VxWorks, Solaris, Lyns OS y Spectra. Los Sistemas Operativos de tiempo real, cuentan con las siguientes características:

Se dan en entornos en donde deben ser aceptados y procesados gran cantidad de sucesos, la mayoría externos al sisterma computacional, en breve tiempo o dentro de ciertos plazos.

Se utlizan en control industrial, conmutación telefónica, control de vuelo, simulaciones en tiempo real., aplicaciones militares, etc.

Objetivo es proporcionar rápidos tiempos de respuesta. Procesa ráfagas de miles de interrupciones por segundo sin perder un solo suceso. Proceso se activa tras ocurrencia de suceso, mediante interrupción. Proceso de mayor  prioridad expropia recursos. Por tanto generalmente se utliza planificación expropiativa basada en prioridades. Gestión de memoria menos exigente que tiempo compartido, usualmente procesos son residentes

permanentes en memoria. Población de procesos estática en gran medida. Poco movimiento de programas entre almacenamiento secundario y memoria. Gestión de archivos se orienta  más a velocidad de acceso que a utlización eficiente del recurso.

Sistemas Operativos de multiprogramación (o Sistemas Operativos de multitarea).

Se distinguen por sus habilidades para poder soportar la ejecución de dos o más trabajosactivos (que se están ejecutado) al mismo tiempo. Esto trae como resultado que la Unidad Central de Procesamiento (UCP) siempre tenga alguna tarea que ejecutar, aprovechando al máximo su utilización.

Su objetivo es tener a varias tareas en la memoria principal, de manera que cada uno está usando el procesador, o un procesador distinto, es decir, involucra máquinas con más de una UCP.

Sistemas Operativos como UNIX, Windows 95, Windows, Windows NT, MAC-OS, OS/2, soportan la multitarea.

Las características de un Sistema Operativo de multiprogramación o multitarea son las siguientes:

Mejora productividad del sistema y utilización de recursos. Multiplexa recursos entre varios programas. Generalmente soportan múltiples usuarios (multiusuarios). Proporcionan facilidades para mantener el entorno de usuarios inndividuales. Requieren validación de usuario para seguridad y protección. Proporcionan contabilidad del uso de los recursos por parte de los usuarios. Multitarea sin soprte multiusuario se encuentra en algunos computadores personales o en sistemas de

tiempo real. Sistemas multiprocesadores son sistemas multitareas por definición  ya que  soportan la ejecución

simultánea de múltiples tareas sobre diferentes procesadores. En general, los sistemas de multiprogramación se caracterizan por tener múltiples programas activos

compitiendo por los recursos del sistema: procesador, memoria, dispositivos periféricos.

Sistemas Operativos de tiempo compartido. Permiten la simulación de que el sistema y sus recursos son todos para cada usuarios. El usuario hace una

petición a la computadora, esta la procesa tan pronto como le es posible, y la respuesta aparecerá en la terminal del usuario.

Los principales recursos del sistema, el procesador, la memoria, dispositivos de E/S, son continuamente utilizados entre los diversos usuarios, dando a cada usuario la ilusión de que tiene el sistema dedicado para sí mismo. Esto trae como consecuencia una gran carga de trabajo al Sistema Operativo, principalmente en la administración de memoria principal y secundaria.

Ejemplos de Sistemas Operativos de tiempo compartido son Multics, OS/360 y DEC-10.

Características de los Sistemas Operativos de tiempo compartido:

Populares representantes de sistemas multiprogramados multiusuario, ej: sistemas de diseño asistido por computador, procesamiento de texto, etc.

Dan la ilusión de que cada usuario tiene una máquina para  sí. Mayoría utilizan algoritmo de reparto circular. Programas se ejcutan con prioridad rotatoria que se incrementa con la espera y disminuye después de

concedido el servicio. Evitan monopolización del sistema asignando tiempos de procesador (time slot). Gestión de memoria proporciona protección a programas residentes. Gestión de archivo  debe proporcionar protección y control de acceso debido a que  pueden existir

múltiples usuarios accesando un mismo archivos.

Sistemas Operativos distribuidos.

Permiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores. Puede ser que este conjunto de procesadores esté en un equipo o en diferentes, en este caso es trasparente para el usuario. Existen dos esquemas básicos de éstos. Un sistema fuertemente acoplado esa es aquel que comparte la memoria y un reloj global, cuyos tiempos de acceso son similares para todos los procesadores. En un sistema débilmente acoplado los procesadores no comparten ni memoria ni reloj, ya que cada uno cuenta con su memoria local.

Los sistemas distribuidos deben de ser muy confiables, ya que si un componente del sistema se compone otro componente debe de ser capaz de reemplazarlo.

Entre los diferentes Sistemas Operativos distribuidos que existen tenemos los siguientes: Sprite, Solaris-MC, Mach, Chorus, Spring, Amoeba, Taos, etc.

Caracteristicas de los Sistemas Operativos distribuidos:

Colección de sistemas autónomos capaces de comunicación y cooperación mediante interconexiones hardware y software .

Gobierna operación de un S.C. y proporciona abstracción de máquina virtual a los usuarios. Objetivo clave es la transparencia. Generalmente proporcionan medios para la compartición global de recursos. Servicios añadidos: denominación global, sistemas de archivos distribuidos, facilidades para distribución

de cálculos (a través de comunicación de procesos internodos, llamadas a procedimientos remotos, etc.).

Sistemas Operativos de red

Son aquellos sistemas que mantienen a dos o más computadoras unidas através de algún medio de comunicación (fisico o no), con el objetivo primordial de poder compartir los diferentes recursos y la información del sistema.

El primer Sistema Operativo de red estaba enfocado a equipos con un procesador Motorola 68000, pasando posteriormente a procesadores Intel como Novell Netware.

Los Sistemas Operativos de red mas ampliamente usados son: Novell Netware, Personal Netware, LAN Manager, Windows NT Server, UNIX, LANtastic.

Figura. Se muestra un Sistema Operativo en red.

Sistemas Operativos paralelos.

En estos tipos de sistemas operativos se pretende que cuando existan dos o más procesos que compitan por algún recurso se puedan realizar o ejecutar al mismo tiempo.

En UNIX existe también la posibilidad de ejecutar programas sin tener que atenderlos en forma interactiva, simulando paralelismo (es decir, atender de manera concurrente varios procesos de un mismo usuario). Así, en lugar de esperar a que el proceso termine de ejecutarse (como lo haría normalmente), regresa a atender al usuario inmediatamente después de haber creado el proceso.

Ejemplos de estos tipos de Sistemas Operativos están: Alpha, PVM, la serie AIX, que es utilizado en los sistemas RS/6000 de IBM

1.5 Estructura: niveles o estratos de diseño

Internamente los sistemas operativos estructuralmente de se clasifican según como se hayan organizado internamente en su diseño, por esto la clasificación más común de los S.O. son:

 Sistemas monolíticos

En estos sistemas operativos se escriben como un conjunto de procedimientos, cada uno de los cuales puede llamar a cualquiera de los otros siempre que lo necesite. Cuando se emplea esta técnica, cada procedimiento del sistema tiene una interfaz bien definida en términos de parámetros y resultados, y cada una tiene la libertad de llamar a cualquiera otra, si la última ofrece algún cálculo útil que la primera necesite.

CARACTERÍSTICAS

Construcción de programa final a base de módulos compilados separadamente que se une a través del editor de enlaces. 

Buena definición de parámetros de enlace entre la rutinas existentes. Carecen de protección y privilegios al entrar y manejan diferentes aspectos de la computadora. Generalmente están hechos a la medida. Por ejemplo los cajeros automáticos donde sólo tienen que cumplir una determinada función siguiendo

una serie de procesos ya determinados.

Para construir el programa objeto real del sistema operativo cuando se usa este método, se compilan todos los procedimientos individuales a archivos que contienen los procedimientos y después se combinan todos en un solo archivo objeto con el enlazador.

En términos de ocultamiento de información, esencialmente no existe ninguno; todo procedimiento es visible para todos (al contrario de una estructura que contiene módulos o paquetes, en los cuales mucha información es local a un módulo y sólo pueden llamar puntos de registro designados oficialmente del exterior del módulo)

Esta organización sugiere una estructura básica del sistema operativo:

1.- Un programa central que invoque el procedimiento de servicio solicitado (Shell o Kernel)2.- Un conjunto de procedimientos de servicios que realice las llamadas al sistema.3.- Un conjunto de procedimientos de uso general que ayude a los procedimientos de servicio

 Sistemas en estratos

Estos sistemas operativos se organizan como una jerarquía de estratos, cada uno construido arriba del que está debajo de él. El primer sistema construido en esta forma fuel el sistema THE que se fabricó en Technische Hogeschool Eindhoven de Holanda por E. W Dijkstra (1968) y sus alumnos. El sistema THE era un sistema de lote para una computadora alemana, la Electrológica X8, que tenía 32K de palabras de 27 bits ( los bits eran costosos en aquellos días)

CARACTERÍSTICAS.

Las zonas mas intensas o nucleo están mas protegidas de posibles accesos indeseados desde las capas mas externas.

Tienes un contacto mas próximo con el hardware. Núcleo mínimo, mas seguro y ágil.

En esta estructura se basan prácticamente la mayoría de los SO actuales. Otra forma de ver este tipo de sistema es la denominación de anillos concéntricos o “RINGS”

 EJEMPLOSMultics y Unix

El sistema tenía 6 estratos, estos se muestran en la siguiente:

El estrato 0 trabajaba con la distribución del procesador, cambiando entre procesos cuando ocurrían interrupciones o los relojes expiraban. Sobre el estrato 0, el sistema constaba de procesos secuenciales, cada uno de los cuales podía programarse sin tener que preocuparse por el hecho de que múltiples procesos estuvieran corriendo en un solo procesador. 

En otras palabras, el estarto 0 ofrecía la multiprogramación básica de la CPU.

El estrato 1 realizaba el manejo de memoria. Este distribuía espacio para procesos contenidos en la memoria central y en un tambor de 512K palabras que se usaba para contener partes de procesos (páginas) para las cuales no había espacio en la memoria central. Sobre el estrato 1, los procesos no tenía que preocuparse de si estaban en la memoria o en el tambor; el software del estrato 1 se hacía cargo de asegurar que las páginas se trajeran a la memoria siempre que se necesitaran.

El estrato 2 manejaba la comunicación entre cada proceso y la consola de operador.

El estrato 3 se hacía cargo de manejar los dispositivos de E/S y de separar la información en flujo que entraba y salí de ellos. Sobre el estrato 3 cada proceso podía trabajar con dispositivos de E/S abstractos con propiedades agradables, en vez de dispositivos reales con muchas peculiaridades

El estrato 4 era donde se encontraban los programas de los usuarios. No tenían que preocuparse por el manejo de los procesos, memoria, consola o E/S. El proceso operador del sistema se localizaba en el estrato 5

Estructura por microkernel

Las funciones centrales de un SO son controladas por el núcleo (kernel) mientras que la interfaz del usuario es controlada por el entorno (shell). Por ejemplo, la parte más importante del DOS es un programa con el nombre "COMMAND.COM" Este programa tiene dos partes. El kernel, que se mantiene en memoria en todo momento, contiene el código máquina de bajo nivel para manejar la administración de hardware para otros programas que necesitan estos servicios, y para la segunda parte del COMMAND.COM el shell, el cual es el interprete de comandos.

Las funciones de bajo nivel del SO y las funciones de interpretación de comandos están separadas, de tal forma que puedes mantener el kernel DOS corriendo, pero utilizar una interfaz de usuario diferente. Esto es exactamente lo que sucede cuando cargas Microsoft Windows, el cual toma el lugar del shell, reemplazando la interfaz de línea de comandos con una interfaz gráfica del usuario. Existen muchos "shells" diferentes en el mercado, ejemplo: NDOS (Norton DOS), XTG, PCTOOLS, o inclusive el mismo SO MS-DOS a partir de la versión 5.0 incluyó un Shell llamado DOS SHELL.

Estructura cliente – servidor

Una tendencia de los sistemas operativos modernos es la de explotar la idea de mover el código a capas superiores y eliminar la mayor parte posible del sistema operativo para mantener un núcleo mínimo. El punto de vista usual es el de implantar la mayoría de las funciones del sistema operativo en los procesos del usuario. Para solicitar un servicio, como la lectura de un bloque de cierto archivo, un proceso del usuario (denominado proceso cliente) envía la solicitud a un proceso servidor, que realiza entonces el trabajo y regresa la respuesta. En este modelo, que se muestra en la figura 4, lo único que hace el núcleo es controlar la comunicación entre los clientes y los servidores. Al separar el sistema operativo en partes, cada una de ellas controla una faceta del sistema, como el servicio a archivos, servicios a procesos, servicio a terminales o servicio a la memoria, cada parte es pequeña y controlable. Además como todos los servidores se ejecutan como procesos en modo usuario y no en modo núcleo, no tienen acceso directo al hardware. En consecuencia si hay un error en el servidor de archivos, éste puede fallar, pero esto no afectará en general a toda la máquina.

Otra de las ventajas del modelo cliente-servidor es su capacidad de adaptación para su uso en los sistemas distribuidos

Si un cliente se comunica con un servidor mediante mensajes, el cliente no necesita saber si el mensaje se maneja en forma local, en su máquina, o si se envía por medio de una red a un servidor en una máquina remota. En lo que respecta al cliente, lo mismo ocurre en ambos casos: se envió una solicitud y se recibió una respuesta

CARACTERÍSTICAS

Coordina, permite el trabajo entre iguales.Cliente; inicia las solicitudes o peticiones (maestro) Espera y recibe respuesta del servidorSe puede conectar a varios servidores a la vez . Servidor: Esclavo, espera las solicitudes del cliente Aceptan conexiones desde un gran numero de clientes.

EJEMPLOS

Sistema operativo Novell NetWare 1983, plataforma mas fiable para ofrecer acceso seguro. Windows 2000 Cualquiera de este puede compartir sus recursos con otro Windows 2000 Windows xp

1.6 Núcleo

El núcleo del sistema operativo es el nivel más interno del sistema operativo. Actúa de interfaz entre el hardware básico y el resto del sistema operativo. Su finalidad es constituir un entorno adecuado en el que se puedan desarrollar los distintos procesos.

Las funciones básicas del núcleo de un sistema operativo son:

Manipulación de las interrupciones Creación/Destrucción de procesos Cambios de estados de procesos Planificación de los procesadores Suspensión/Reanudación de procesos Sincronización de procesos Comunicación entre procesos

Manipulación de bloques de control de procesos Soporte de las actividades de entrada/salida Soporte de la asignación/liberación del almacenamiento Soporte del sistema de archivos Soporte de un mecanismo de llamada/regreso al procedimiento Soporte de ciertas funciones contables del sistema

Características del núcleo: Se encuentra residente en Memoria Principal Tienden a ser ininterrumpibles Se ejecutan con el máximo privilegio

El núcleo es la parte más dependiente del hardware. Normalmente se escribe en ensamblador, pero existen otros lenguajes para diseño de sistemas operativos: BCPL (Basic Compiled Programming Language), BLISS (Basic Language for Implementing Systems), C, Pascal Concurrente, PL/2, ...

1.6.1 Gestión de interrupciones FLIH (First Level Interruption Handler).

Una interrupción es una respuesta a un suceso asíncrono o excepcional que automáticamente reserva el estado actual de la CPU para permitir su continuación posterior y provoca una transferencia automática a una rutina específica.

Básicamente, existen seis clases de interrupciones:

1. Interrupciones SVC (SuperVisor Call, llamadas al supervisor). Son iniciadas por un proceso en ejecución para solicitar una operación de E/S.2. Interrupciones de E/S. Son iniciadas por el hardware de E/S. Indican a la CPU el cambio de estado de un canal o dispositivo. Se producen cuando finaliza una operación de E/S o cuando un dispositivo pasa a estado de listo.3. Interrupciones externas. Son causadas por diversos sucesos, incluyendo la expiración del cuantum de reloj, la pulsación de la tecla de interrupción del teclado, …4. Interrupciones de reinicio. Ocurren cuando se pulsa el botón de reinicio de la consola (Reset).5. Interrupciones de verificación del programa. Son causadas por varios tipos de errores experimentados al ejecutar un proceso, como una operación de división por cero, formato de datos erróneo, ejecución de una operación inválida, intento de acceder a una posición de memoria fuera de los límites (violación de memoria).6. Interrupciones de verificación de la máquina. Son ocasionadas por el mal funcionamiento de la máquina.

La gestión de interrupciones la realiza el manipulador (controlador) de interrupciones o FLIH

El manipulador de interrupciones es la parte del sistema operativo responsable de proporcionar la respuesta adecuada a las señales procedentes tanto del exterior como del interior del sistema (interrupciones externas e internas).Funcionamiento del FLIH:

1. Inhibir las interrupciones (si no lo hace el hardware).

2. Guardar la información no salvada por el hardware. Dos posibles formas:o Salvar los registros que se usen en el tratamiento de la interrupción.o Usar un conjunto de registros suplementarios sólo usados en modo supervisor para procesar el servicio de

la interrupción con lo que no se necesitan salvar los registros afectados del programa.

3. Identificar la causa de la interrupción (depende del hardware). Podemos distinguir varios casos:o Con todas las interrupciones se transfiere el control a la misma posición de memoria (caso más

sencillo).o El hardware de interrupción es capaz de distinguir las diferentes fuentes de interrupción y transferir el

control del programa a una posición de memoria distinta para cada una de ellas, con lo que se reduce el tiempo de identificación de la interrupción.

o Agrupar las interrupciones por tipos. El hardware es capaz de distinguir las interrupciones según su tipo y transferir el control a posiciones de memoria distintas.

Consideraciones en el tratamiento de las interrupciones: Inhibición de las interrupciones: Si durante el procesamiento de una interrupción ocurre otra, ésta

queda pendiente hasta que el mecanismo de interrupción se reactive. Es decir, cuando se inhiben las interrupciones, la CPU no puede atender a otra sin interrupciones hasta que se reactive el mecanismo de interrupción.

Prioridades entre las distintas fuentes de interrupción: Una rutina de interrupción puede ser interrumpida por otra fuente de interrupción de más alta prioridad (caso en que un periférico requiera una respuesta mucho más rápida que otro).

Una interrupción puede alterar el estado de los procesos.

1.6.2 Despachador (Scheduler). Gestión de procesos. Planificación

Los programas del núcleo actúan sobre estructuras de datos que constituyen la representación física de todos los procesos del sistema (tablas de control). En las tablas de control están representadas todas las estructuras de datos del sistema (memoria, E/S, ficheros y procesos).Para poder mantener un entorno adecuado en el que puedan coexistir los procesos, se debe de trabajar sobre algún tipo de estructura de datos. Cada proceso se representa mediante un descriptor de proceso o bloque de control de proceso (PCB) que estará formado por toda aquella información que puede variar de un proceso a otro. Es decir, contendrá:

El estado del proceso: preparado, en ejecución, bloqueado. Entorno volátil: Formado por toda la información que hay que guardar cuando se pierde el control del

procesador, como puede ser el Contador de Programa (CP), los registros acumuladores, el registro de estado.

Otra información: Identificador del proceso (índice o número), nombre, fecha de creación del proceso.

Cada vez que un proceso debe liberar la CPU, se debe guardar la información de estado (entorno volátil) para poder continuar correctamente más adelante. El “cambio de contexto” consiste en retirar el control de la CPU al proceso actual y asignárselo a otro proceso.

El encargado de asignar los procesadores a los distintos procesos será el despachador (dispatcher).

Funcionamiento del dispatcher:

1. Decidir si se cambia el proceso actual. Se plantea la siguiente pregunta: ¿Es el proceso en curso el más apropiado para seguir ejecutándose en el procesador?

2. Decidir qué proceso en estado preparado es el siguiente al que se le asigna el procesador. Existen dos formas:

o Que el propio dispatcher incorpore el algoritmo que determina el proceso a ejecutarse.o Que se elija directamente el primer proceso de la cola de procesos preparados.

En este caso, existirá otro módulo que se encargará de mantener la cola de procesos preparados en un determinado orden. Este módulo se ejecutará antes de que se realice un cambio de contexto.

3. Salvar la información el proceso que se estaba ejecutando (entorno volátil) en el descriptor del proceso (si no se realizó durante el tratamiento de la interrupción).

4. Cargar el entorno volátil del proceso elegido.

5. Pasar el control de la CPU a dicho proceso elegido.

Intervención del dispatcher

El dispatcher actuará cuando:1. Un proceso no quiera seguir ejecutándose (por ejemplo, cuando finaliza o cuando realiza una operación wait sin éxito)2. Un proceso inicia una operación y el S.O. determina que no puede seguir ejecutándose (por ejemplo, cuando un proceso inicia una operación de E/S).3. Un proceso agota su cuantum de tiempo.4. Un suceso cambia el estado de un proceso bloqueado, pasándolo a preparado. En este caso, el despachador entrará en funcionamiento para asegurarse de que se ejecutará el de mayor prioridad.Todos estos sucesos causan modificaciones que afectan a los parámetros globales como la prioridad de los procesos o el número de procesos en el sistema.

Relación entre el FLIH y el despachador:

Planificación de procesos

La planificación estudia el problema de cuándo asignar los procesadores y a qué procesos asignárselos. La planificación la realiza el planificador o scheduler. La idea es planificar todos los procesos que se encuentran en la cola de procesos preparados(procesos ejecutables).

Niveles de planificación

Existen dos schedulers de CPU principales: el scheduler a corto plazo y el scheduler a largo plazo.

Scheduler a largo plazo: determina qué trabajos se admiten en el sistema para su procesamiento. Inicialmente, los procesos son eenlistados en un dispositivo de almacenamiento masivo (normalmente, un disco) para que posteriormente el scheduler a corto plazo los pueda seleccionar y consigan iniciar su ejecución.

Scheduler a corto plazo (scheduler de la CPU): determina qué proceso debe ser ejecutado en cada instante de tiempo o, dicho de otra forma, el scheduler a corto plazo determinará el proceso que seleccionará el dispatcher para asignarle el control de la CPU.

La diferencia principal entre estos schedulers es la frecuencia de su ejecución. Mientras que el scheduler a corto plazo se ejecuta muy continuamente (cuando se realiza un cambio de contexto, que ocurre con frecuencia del orden de milisegundos), el scheduler a largo plazo se ejecuta menos frecuentemente (pueden pasar minutos entre las llegadas de trabajos al sistema). El scheduler a largo plazo controla el grado de multiprogramación (número de procesos en memoria).

1.6.3 Primitivas de comunicación (IPC).

La IPC ofrece un mecanismo que permite a los procesos comunicarse y sincronizar sus acciones. La mejor forma de proveer la comunicación entre procesos es mediante un sistema de mensajes.La función de un sistema de mensaje es permitir a los procesos comunicarse entre sí sin tener que recurrir a variables compartidas.

Un recurso IPC ofrece por los menos 2 operaciones: enviar (mensaje) (send) y recibir (mensaje) (receive).Sea P y Q dos procesos que requieren comunicarse deberán enviarse mensajes; para ello debe existir un enlace de comunicación entre ellos. Este enlace puede implementarse de diversas maneras.Los métodos para implementar lógicamente un enlace y las operaciones de enviar / recibir son:

·         Comunicación directa o indirecta·         Uso de buffer automático o explícito·         Envío por copia o envío por referencia·         Mensajes de tamaño fijo o variables

Comunicación directa:Aquí cada proceso que desee comunicarse debe nombrar explícitamente el destinatario o el remitente de la comunicación.Comunicación indirecta:Aquí los mensajes se envían a, y se reciben de, buzones (también llamados PUERTOS). Un buzón puede considerarse en lo abstracto como un objeto en el que los procesos pueden colocar mensajes y del cual se pueden sacar mensajes. Cada buzón tiene una identificación única. Aquí dos proceso se pueden comunicarse sólo si comparten un buzón.