TRABAJO PRÁCTICO Nº 2 1. INTRODUCCION A LOS SISTEMAS OPERATIVOS. Una computadora moderna consta de uno o más procesadores, una memoria principal, discos, impresoras, un teclado, un ratón, una pantalla o monitor, interfaces de red y otros dispositivos de entrada/salida. En general es un sistema complejo. Las computadoras están equipadas con una capa de software llamada sistema operativo, cuyo trabajo es proporcionar a los programas de usuario un modelo de computadora mejor, más simple y pulcro, así como encargarse de la administración de todos los recursos antes mencionados. Los sistemas operativos son el tema de este libro. La mayoría de los lectores habrán tenido cierta experiencia con un sistema operativo como Windows o Linux, pero las apariencias pueden ser engañosas. El programa con el que los usuarios generalmente interactúan se denomina shell, cuando está basado en texto, y GUI (Graphical User Interface; Interfaz gráfica de usuario) cuando utiliza elementos gráficos o iconos. En realidad no forma parte del sistema operativo, aunque lo utiliza para llevar a cabo su trabajo. En la parte inferior del gráfico se muestra el hardware, que consiste en circuitos integrados (chips), tarjetas, discos, un teclado, un monitor y objetos físicos similares. Por encima del hardware se encuentra el software. La mayoría de las computadoras tienen dos modos de operación: modo kernel y modo usuario. El sistema operativo es la pieza fundamental del software y se ejecuta en modo kernel. En este modo, el sistema operativo tiene acceso completo a todo el hardware y puede ejecutar cualquier instrucción que la máquina sea capaz de ejecutar. El resto del software se ejecuta en modo usuario, En particular, las instrucciones que afectan el control de la máquina o que se encargan de la E/S (entrada/salida) están prohibidas para los programas en modo usuario. Interfaz de usuario: Shell o GIU El programa de interfaz de usuario, shell o GUI, es el nivel más bajo del software en modo usuario y permite la ejecución de otros programas, como un navegador Web, lector de correo electrónico o reproductor de música. Estos programas también utilizan en forma intensiva el sistema operativo. 1
Una distinción importante entre el sistema operativo y el software que se ejecuta en modo usuario es que, si a un usuario no le gusta, por ejemplo, su lector de correo electrónico, es libre de conseguir otro o incluso escribir el propio si así lo desea; sin embargo, no es libre de escribir su propio manejador de interrupciones de reloj, que forma parte del sistema operativo y está protegido por el hardware contra cualquier intento de modificación por parte de los usuarios. Interrupciones Una Interrupción (también conocida como interrupción hardware) es una señal recibida por el Microprocesador de una computadora, indicando que debe "interrumpir" el curso de lo que se está en ejecución actual y pasar a ejecutar código específico para tratar esta situación. Las interrupciones surgen de las necesidades que tienen los dispositivos periféricos de enviar información al microprocesador de una computadora. La primera técnica que se empleó fue que el propio microprocesador se encargara de sondear (polling) el dispositivo cada cierto tiempo para averiguar si tenía pendiente alguna comunicación para él. Este método presentaba el inconveniente de ser muy ineficiente, ya que el microprocesador constantemente consumía tiempo en realizar todas las instrucciones de sondeo. El mecanismo de interrupciones fue la solución que permitió al microprocesador desentenderse de esta problemática, y delegar en el dispositivo la responsabilidad de comunicarse con el microprocesador cuando lo necesitaba. El microprocesador, en este caso, no sondea a ningún dispositivo, sino que queda a la espera de que estos le avisen (lo "interrumpan") cuando tengan algo que comunicarle (ya sea un evento, una transferencia de información, una condición de error, etc.). Cada dispositivo que desea comunicarse con el microprocesador por interrupciones debe tener asignada una línea única capaz de avisar a éste de que le requiere para una operación. Esta línea es la llamada IRQ ("Interrupt ReQuest", petición de interrupción). Las IRQ son líneas que llegan al controlador de interrupciones, un componente hardware dedicado a gestión de las interrupciones, y que puede estar integrado en el microprocesador principal o ser un circuito separado conectado al microprocesador principal. El controlador de interrupciones debe ser capaz de habilitar o inhibir líneas de interrupción, y establecer prioridades entre las distintas interrupciones habilitadas. Cuando varias líneas de petición de interrupción se activan a la vez, el controlador de interrupciones utilizará estas prioridades para escoger la interrupción sobre la que informará al microprocesador. la 2
Las rutinas de interrupción generalmente toman un pequeño tiempo de ejecución y la mayoría no pueden ser interrumpidas cuando se están atendiendo, porque al entrar en ellas se almacena el estado de los registros en una pila y si se interrumpen muchas veces, la pila se puede desbordar. Una PC tradicionalmente contaba en su placa madre de un controlador de interrupciones. Este dispositivo electrónico dispone de hasta 16 líneas IRQ, numeradas desde el 00 hasta el 15. En las nuevas placas madre este circuito está integrado junto con el resto del chipset y permite hasta 24 interrupciones. 2. Tipos de Sistemas Operativos Antes de abordar los tipos de SO es necesario tener en claro que es el núcleo del SO (Kernel) Todas las operaciones en las que participan procesos son controladas por la parte del sistema operativo denominada núcleo (core o kernel, en inglés). El núcleo normalmente representa sólo una pequeña parte del sistema operativo, pero es tal vez el código que más se utiliza. Por esta razón, el núcleo reside por lo regular en la memoria principal (RAM), mientras que otras partes del sistema operativo son cargadas en la memoria principal sólo cuando se necesitan. Funciones El núcleo de un sistema operativo normalmente contiene el código necesario para realizar las siguientes funciones: Manejo de interrupciones. Creación y destrucción de procesos. Cambio de estado de los procesos. Suspensión y reanudación de procesos. Sincronización de procesos. Comunicación entre procesos. Manipulación de los bloques de control de procesos. Apoyo para las actividades de entrada/salida. Apoyo para asignación y liberación de memoria. Apoyo para el sistema de archivos. 2.1 Sistemas Operativos por estructura Estructura monolítica. Un sistema operativo con núcleo monolítico concentra todas las funcionalidades posibles (planificación, sistema de archivos, redes, controladores de dispositivos, gestión de memoria, etc) dentro de un gran programa. El mismo puede tener un tamaño considerable, y deberá ser recompilado por completo al añadir una nueva funcionalidad. Todos los componentes funcionales del núcleo tienen acceso a todas sus estructuras de datos internas y a sus rutinas. Un error en una rutina puede propagarse a todo el núcleo. Como ejemplo de sistema operativo de núcleo monolítico están UNIX, Linux y FreeBSD. 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. 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. Se constituyó una estructura jerárquica o de niveles en los sistemas operativos, el primero de los cuales fue denominado THE (Technische Hogeschool, Eindhoven), que se utilizó con fines didácticos. 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. 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. Máquina Virtual. 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. 4
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. El núcleo tiene como misión establecer la comunicación entre los clientes y los servidores. Los procesos pueden ser tanto servidores como clientes. 2.2 Sistemas Operativos por servicios. Esta clasificación es la más comúnmente usada y conocida desde el punto de vista del usuario final. Esta clasificación se comprende fácilmente con el cuadro sinóptico que a continuación se muestra: Monousuarios Los sistemas operativos monousuarios son aquéllos que soportan a un usuario a la vez, sin importar el número de procesadores que tenga la computadora o el número de procesos o tareas que el usuario pueda ejecutar en un mismo instante de tiempo. Las computadoras personales típicamente se han clasificado en este renglón. Multiusuarios Los sistemas operativos multiusuarios son capaces de dar servicio a más 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 número de procesadores en la máquina ni el número de procesos que cada usuario puede ejecutar simultáneamente. Monotareas Los sistemas monotarea son aquellos que sólo 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 aquél que le permite al usuario estar realizando varias labores al mismo tiempo. Por ejemplo, puede estar editando el código fuente de un programa durante su depuración mientras compila otro programa, a la vez que está recibiendo correo electrónico. Es común encontrar en ellos interfaces gráficas orientadas al uso de menús y el ratón, lo cual permite un rápido intercambio entre las tareas para el usuario, mejorando su productividad. 5
Uniproceso Un sistema operativo uniproceso es aquél que es capaz de manejar solamente un procesador de la computadora, de manera que si la computadora tuviese más de uno le sería inútil. El ejemplo más típico de este tipo de sistemas es el DOS y MacOS. Multiproceso Un sistema operativo multiproceso se refiere al número de procesadores del sistema, que es más de uno y éste es capaz de usarlos todos para distribuir su carga de trabajo. Generalmente estos sistemas trabajan de dos formas: simétrica o asimétricamente. Cuando se trabaja de manera asimétrica, 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 demás procesadores, que reciben el nombre de esclavos. Cuando se trabaja de manera simétrica, los procesos o partes de ellos (threads) son enviados indistintamente a cualquiera de los procesadores disponibles, teniendo, teóricamente, una mejor distribución y equilibrio en la carga de trabajo bajo este esquema. 2.3. Sistemas operativos por la forma de ofrecer sus servicios. Esta clasificación también se refiere a una visión externa, que en este caso se refiere a la del usuario, el cómo accesa los servicios. Bajo esta clasificación 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 a través de un medio de transmisión, con el objeto de intercambiar información, 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, además de la ubicación de los recursos que desee accesar. 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 máquina virtual que el usuario accesa en forma transparente. Es decir, ahora el usuario ya no necesita saber la ubicación 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. 6
Trabajo práctico N 3 Introducción a los Sistemas Operativos. Actividad Teórica 1: 1. Diferencias entre Shell y GUI? 2. Qué significa Tener acceso en modo kernel? 3. Qué es lo que debe tener asignado un dispositivo para poder comunicarse con el procesador? 4. Qué significa IRQ y que función cumple? 5. Qué es una interrupción de hardware? 6. En qué consiste el método Polling? 7. Qué función tiene el Controlador de interrupciones? Con que dispositivo está relacionado? 8. Investigue, mencione y describa muy brevemente tres de los mejores escritorios para Linux. 9. Que características tienen los sistemas operativos monolíticos y con estructura jerárquica. 10.Explique cómo se clasifican los sistemas operativos por servicios. 11.Explique qué diferencias existen entre un sistema operativo de red y un sistema distribuido. Mencione que ventajas y desventajas tienen cada uno. Actividades prácticas 1. Ingrese al Administrador de Dispositivos e investigue que número de IRQ le fue asignado al Mouse, al teclado y al adaptador de video. 2. Cambiar el nombre del equipo y el grupo de trabajo. 3. Investigue en la PC del laboratorio: a. Versión del Sistema Operativo b. Marca, tipo y velocidad del Procesador. c. Tipo y tamaño de la memoria RAM. d. Tamaño del disco rígido. 7