El tema de esta presentación es los conceptos básicos relacionados con Sistemas Operativos. 1 Qué es un sistema operativo Un sistema operativo es un programa que tiene encomendadas una serie de funciones diferentes, cuyo objetivo es simplificar el manejo y la utilización del computador. Las funciones básicas de un sistema operativo se pueden clasificar en: •Gestión de recursos •Ejecución de servicios para los programas •Ejecución de los mandatos de los usuarios 2 Gestión de recursos En un computador pueden existir varios usuarios que ejecutan varios programas, estos programas compiten por los recursos del computador (Memoria, tiempo de CPU, periféricos). El sistema operativo debe garantizar la protección de los programas frente a otros. •Asignación y liberación de recursos: El S.O. debe monitorear para saber cuáles recursos están libres y cuáles están asignados a cada programa. Si se tiene un esquema de prioridades, se deben resolver los conflictos que se pueden presentar. •Protección: El S.O. debe garantizar la confidencialidad de la información, de manera que los programas no interfieran entre sí. 3 Ejecución de servicios para los programas El S.O. ofrece a los programas un conjunto de servicios (llamadas al sistema), que garantiza que los programas se ejecuten en un ambiente protegido. De esta forma se crea una máquina virtual extendida, que simplifica la labor de los programas. Dentro de los servicios más importantes se pueden mencionar: •Ejecución de programas: El sistema operativo proporciona servicios para ejecutar un programa, parar o abortar su ejecución. También ofrece servicios que permiten conocer y modificar las condiciones de ejecución de los programas, además de servicios para la comunicación y sincronización de programas. •Órdenes de E/S: Proporciona servicios de lectura, escritura y modificación del estado de los periféricos. •Operaciones sobre archivos: El S.O. ofrece servicios para la creación, apertura, lectura, escritura, renombrado y borrado de archivos. •Detección y tratamiento de errores: El S.O. es el encargado de detectar las condiciones de error de hardware. Entre los errores se puede mencionar errores de E/S, acceso a memoria, desbordamientos, violación de segmento de memoria, o instrucciones prohibidas. 4 Gestión de usuarios y grupos Todo sistema operativo multiusuario debe ofrecer los servicios básicos de manejo de usuarios y grupos, tales como creación, modificación y eliminación. Además se debe brindar los servicios de autenticación y autorización. •Autenticación: Proceso en el cual un usuario ingresa un nombre y una contraseña, creados previamente en el sistema. El S.O. debe validar que el usuario exista. •Autorización: Nivel de permisos de un usuario autenticado para tener acceso a los servicios que ofrece el sistema operativo, y las restricciones de seguridad frente a otros usuarios. 5 Ejecución de mandatos de usuarios Otra de las funciones de un S.O es proporcionar los medios para que los usuarios puedan ejecutar mandatos, representados en comandos de utilidad. Para ello el S.O. proporciona el Shell, que puede ser definido como una interfaz para ejecutar comandos. Esta interfaz puede ser textual, en forma de terminales (Unix), o gráfica, en la cual se utiliza el teclado y el mouse para invocar los comandos (Windows, MAC). En su forma más simple, el shell es un bucle infinito que espera una orden del usuario, la analiza y en el caso que sea correcta la ejecuta. Una vez que se ha concluido la ejecución de la orden, el shell espera una nueva orden. Los archivos de comandos son una agrupación de los comandos que el usuario introduce en el shell, además de instrucciones de control de flujo para controlar su ejecución. Los archivos de comandos más comunes son los .bat (windows) y los .sh (Unix). 6 Arranque del computador Luego del encendido del computador o de pulsar el botón RESET, se genera una señal que carga en el PC la dirección de inicio del programa de arranque (Iniciador) que se encuentra almacenado en una memoria ROM, que forma parte del mapa de memoria. Iniciador ROM El iniciador ROM tiene las siguientes funciones: •Comprobación del sistema, por medio de un test de hardware •Lectura y almacenamiento en memoria del programa cargador del sistema operativo (Loader). Este programa se encuentra en un periférico, usualmente un disco duro o un diskette o un CDROM. •Ceder el control al cargador del sistema operativo. Cargador del sistema operativo Este programa se encarga de traer a memoria algunos de los componentes del sistema operativo. Luego se pasa a la fase de iniciación, en la que se realizan los siguientes pasos: •Comprobación del sistema: Se completan las pruebas de hardware realizadas por el iniciador ROM, además de realizar una prueba del sistema de archivos •Se establecen las estructuras de información propias del S.O. (Tabla de procesos, tabla de memora y tablas de E/S) •Se carga en memoria el programa del S.O que estará residente. Sistema operativo •Se crean uno o varios procesos de inicio (Login) para permitir el trabajo interactivo por parte de los usuarios, además de otros procesos auxiliares (Servicios, demonios, etc). 7 Componentes y estructura de un sistema operativo Un sistema operativo consta de tres capas: •Núcleo: Parte del sistema operativo que interactúa directamente con el hardware de la máquina. Sus funciones consisten en gestionar los recursos de hardware, tratar las interrupciones de hardware e implementar las funciones básicas de gestión de memoria. •Servicios: Estas facilidades se ofrecen para brindar una capa de abstracción sobre el núcleo. Los principales servicios que ofrece un S.O. se pueden clasificar en: •Gestión de procesos: Creación, planificación y destrucción de procesos •Gestión de memoria: Gestionar la memoria libre y ocupada, realizar la asignación y liberación de memoria. •Gestión de entrada/salida: Maneja los dispositivos periféricos •Gestión de archivos y directorios: Manejo de archivos y directorios, y en general de la administración del almacenamiento secundario. •Seguridad y protección: Permite garantizar la identidad de los usuarios y definir los permisos sobre los recursos del sistema. •Comunicación y sincronización entre procesos: Brinda las primitivas básicas para comunicar y sincronizar procesos. •Intérprete de comandos (Shell): Permite que el usuario interactúe con el sistema operativo, a través de comandos textuales (shell 1), o interfaces gráficas (shell 2). 8 Servicios del sistema operativos Por encima de los servicios básicos del sistema operativo, se encuentran las interfaces para los programas de usuario, representadas por WIN32 y POSIX, para Windows y Unix, respectivamente. Estas interfaces proporcionan un API al que se puede tener acceso a través de un lenguaje de programación de alto nivel, como C. Por ejemplo, la llamanda fopen en POSIX permite abrir un archivo que se encuentre en un disco duro, un diskette, una memoria USB. Los servicios del sistema operativo también se conocen como llamadas al sistema, y proporcionan una interfaz estándar para acceder a cada uno de los servicios sin tener que preocuparse por la complejidad del hardware. 9 Sistemas operativos monolíticos Todos los componentes se integran en un solo programa que contiene todas las rutinas necesarias para su funcionamiento. Una ventaja de este tipo de sistemas es su rapidez, pero su mantenimiento es muy complejo. Sistemas operativos estructurados El S.O. se organiza en capas, donde cada una de ellas posee una interfaz bien definida en la capa superior y sólo utilizan los servicios que les ofrece la capa inferior. Esta aproximación ofrece modularidad y ocultación de la información. Sistemas operativos cliente/servidor Sólo una pequeña parte del S.O. se ejecuta en modo núcleo (micronúcleo), yLa mayor parte de los servicios del sistema operativo se implementa como “servidores”, a los cuales se les pueden realizar solicitudes. Cada servidor puede hacer uso de otros servidores para ejecutar una función. 10 Sistemas operativos monolíticos Los sistemas operativos monolíticos se caracterizan porque todos sus componentes se encuentran integrados en un único programa que se ejecuta en un único espacio de direcciones. De esta forma, todas las funciones que ofrece el sistema operativo se ejecutan en modo núcleo. Los sistemas operativos monolíticos son difíciles de mantener, ya que un cambio se puede propagar de manera impredecible. Por otro lado la adición de nuevas funcionalidades y servicios se ve limitada al conocimiento de la totalidad del sistema operativo. 11 Sistemas operativos estructurados El S.O. se organiza en capas, donde cada una de ellas posee una interfaz bien definida en la capa superior y sólo utilizan los servicios que les ofrece la capa inferior. Esta aproximación ofrece modularidad y ocultación de la información. Un ejemplo de sistemas operativos estructurados es OS/2. 12 Modelo cliente / servidor La mayor parte de los servicios del sistema operativo se implementa como “servidores”, a los cuales se les pueden realizar solicitudes. Cada servidor puede hacer uso de otros servidores para ejecutar una función. El núcleo del sistema sólo contiene las rutinas que interactúan directamente con el Hardware, tales como gestión de interrupciones, gestión básica del procesador, gestión de memoria, y servicios básicos de comunicación entre procesos. Algunos ejemplos de sistemas operativos cliente/servidor son MINIX, Mach, Amoeba y Windows NT. 13 Prehistoria: El hardware utilizaba tubos al vacío, lo cual hacía que no fuera enteramente confiable. Además los primeros computadores ocupaban un espacio muy grande. Algunos ejemplos de estos primeros computadores fueron el ENIAC (Electronic Numerical Integrator Analyzer and Computer), y el EDVAC (Electronic Discrete Variable Automatic Computer). En esta generación no existía un sistema operativo como tal, el usuario debía ingresar los programas por medio de tableros de conmutación y/o tarjetas perforadas. Primera generación: Aparecen los transistores, lo que cambia radicalmente la construcción de los computadores. Los trabajos (programas) se procesaban por lotes (uno detrás de otro), y existía un programa que se encargaba de cargar y ejecutar los demás programas (cargador). Algunos ejemplos de sistemas operativos son FMS (Fortran Monitoring System) e IBYSS de IBM. 14 Segunda generación: Con la aparición de los circuitos integrados se dio una revolución en los computadores y los sistemas operativos. Aparece el concepto de multiprogramación como una alternativa al trabajo por lotes. La multiprogramación permite aprovechar el tiempo muerto de las operaciones de Entrada / Salida para ejecutar otros trabajos (programas). Aparece el concepto de planificador, que es un programa encargado de repartir el uso del procesador entre los trabajos que lo requieren. También aparece el concepto de tiempo compartido, que consiste en permitir que varios usuarios trabajen en forma simultánea, al repartir el tiempo de CPU entre ellos.Borroughs introduce en 1962 el MCP (Master Control Program), que además de permitir multiprogramación utilizaba memoria virtual. Por su parte, en el MIT se desarrollo CTSS, el primer sistema de tiempo compartido. Este sistema se utilizó en el IBM7090 y permitía hasta 32 usuarios interactivos que se conectaban mediante teletipos (terminales brutas). También apareció el OS/360, que operaba sobre los computadores 360 de IBM. El sistema operativo más reconocido de esta generación es MULTICS (desarrollado por el MIT y Bell Labs), que permitía el soporte a cientos de usuarios. Tercera generación: Se caracteriza por la aparición de Sistemas Operativos de propósito general, entre ellos UNIX. Estos sistemas permitían multiprogramación y tiempo compartido. Con UNIX nace el lenguaje C, uno de los más utilizados hasta hoy en día. Cuarta generación: Con la difusión de los computadores personales también evolucionan los sistemas operativos, en aspectos como velocidad de procesamiento, manejo de memoria, soporte para redes y multimedia. Los primeros sistemas que dominaron en esta generación fueron UNIX, MS-DOS y Windows. 15 16 17