Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Informática II Una introducción a los sistemas operativos… Departamento de Ingeniería Electrónica Universidad Tecnológica Nacional Facultad Regional Haedo Autor: LAROSA, F. S. Autor: LAROSA, F. S. Estructura de un sistema informático Primera generación: Tubos de vacío y tableros 1945-1955 Las computadoras eran grandes estructuras que funcionaban en las Universidades. Tenían decenas de miles de tubos de vacío aunque en promedio eran mucho más lentas que las computadoras personales más baratas que se venden en la actualidad. Un solo grupo de personas diseñaba, construía, programaba y mantenía cada máquina. Los programas se hacían en lenguaje de máquina absoluto cambiando el cableado de los circuitos para controlar las funciones básicas de la máquina. No existían los sistemas operativos. Los circuitos de válvulas de vacío eran poco confiables Autor: LAROSA, F. S. Estructura de un sistema informático Primera generación: Tubos de vacío y tableros 1945-1955 Algunos ejemplos ENIAC(<1945): Utilizada por el equipo de Presper Eckert y William Mauchley en la Universidad de Pennsylvania para el Laboratorio de Investigación Balística del Ejército de los Estados Unidos de América. Colossus (<1944): Diseñada originalmente por Tommy Flowers para romper la encriptación de las comunicaciones alemanas durante la Segunda Guerra (máquina Lorenz). Estaba instalada en la instalación militar de Bletchley Park (codename Boniface). Algunas fotos de la ENIAC… Algunas fotos de la ENIAC… Algunas fotos de la ENIAC… Algunas fotos de la ENIAC… Algunas fotos de la ENIAC… Algunas fotos de la ENIAC… Algunas fotos de la ENIAC… Algunas fotos de la ENIAC… Algunas fotos de la ENIAC… Algunas fotos de la ENIAC… Autor: LAROSA, F. S. Estructura de un sistema informático Segunda Generación: Transistores y sistemas por lotes Con el advenimiento del transistor las computadoras se volvieron lo bastante fiables como para fabricarse y venderse a clientes comerciales. Estos mainframes se alojaban en salas de cómputo especiales con aire acondicionado manejados por operadores profesionales. Sólo las grandes corporaciones, dependencias de gobierno o universidades importantes podían pagar los varios millones de dólares que costaban. Para ejecutar un programa, el programador escribía primero el mismo en papel (FORTRAN o ensamblador) y luego lo perforaba en tarjetas. Después los llevaba el mazo de tarjetas perforadas al cuarto de entrada, lo entregaba y tomaba café hasta que le entregaban las salidas. 1955-1965 Autor: LAROSA, F. S. Estructura de un sistema informático Segunda Generación: Transistores y sistemas por lotes Sistemas de procesamiento por lotes La compilación y ejecución de los programas llevaba mucho tiempo puesto que requería de intercambiar tarjetas, por ejemplo, para compilar un programa en FORTRAN. Por ello se crea el sistema de procesamiento por lotes. La idea básica era juntar una bandeja llena de trabajos en el cuarto de entrada y luego pasarlos a una cinta magnética empleando una computadora más pequeña. Luego de reunir un lote de trabajos, la cinta se rebobinaba y se llevaba al cuarto de máquinas donde se montaba en una unidad de cinta. El operador cargaba un programa especial que ejecutaba los programas secuencialmente y grababa las salidas en una cinta. 1955-1965 Autor: LAROSA, F. S. Estructura de un sistema informático Tercera generación: Circuitos integrados y multiprogramación A principio de la década de 1960 los fabricantes de computadoras tenían dos líneas de productos diferentes e incompatibles por completo. Por un lado estaban las computadoras científicas a gran escala que se utilizaban para cálculos numéricos en ciencias e ingeniería. Por otro lado estaban las computadoras comerciales orientadas a caracterres que los bancos y compañías de seguridad usaban para almacenar información e imprimir. IBM lanza el Sistema/360 que propone unificar las líneas de computadoras de IBM en una misma familia. La misma disponía del sistema operativo propietario OS/360 que pone por primera vez en la historia a los sistemas operativos en el centro de la escena. El Sistema/360 es la primera computadora en usar circuitos integrados en lugar de componentes discretos lo cual la hace mucho más asequible en precio y más confiable. 1965-1980 Autor: LAROSA, F. S. Estructura de un sistema informático Tercera generación: Circuitos integrados y multiprogramación Comienza la multiprogramación. Antiguamente cuando se hacía una pausa para realizar una operación de E/S la CPU permanecía ociosa. En aplicaciones de cálculo numérico las pausas no eran una cuestión de peso, mientras que si lo eran en computadoras comerciales donde podía llegar a desperdiciarse casi un 80% del tiempo. Es por eso que se comenzó a segmentar la memoria en diferentes secciones dedicadas a diferentes aplicaciones. Así, al realizarse una pausa en una de ellas la CPU podía continuar ejecutando otras tareas. Comienza el tiempo compartido. Se ajustan las grandes computadoras para permitir que cada usuario tuviese una terminal en línea que les permitiese hacer uso de la misma. El sistema operativo de la computadora debía estar preparado para ejecutar selectivamente los requerimientos de los usuarios. 1965-1980 Autor: LAROSA, F. S. Estructura de un sistema informático Tercera generación: Circuitos integrados y multiprogramación Nace el sistema MULTICS. Los diseñadores de este sistema decidieron emprender el desarrollo de un “servicio de computadora”, una máquina que atendiera a cientos de usuarios simultáneos en tiempo compartido. Se basaron en el sistema de distribución de la red eléctrica en que cada usuario se conecta a la red y toma de ella una cantidad de energía dentro de límites razonables. El concepto de un servidor potente el cual recibe requerimientos de una multiplicidad de máquinas más sencillas (tontas) pierde impulso, aunque en la actualidad se ha avanzado en sistemas con este espíritu. Uno de los científicos de Bell Labs que había trabajado en el proyecto MULTICS, Ken Thompson, se puso a escribir una versión austera del sistema MULTICS que se convertiría en la base del sistema operativo UNIX. 1965-1980 Autor: LAROSA, F. S. Estructura de un sistema informático Cuarta generación: Computadoras personales Con el desarrollo de los circuitos integrados a gran escala (LSI: Large Scale of Integration) se hacen posibles, al menos en teoría, las computadoras personales. A principios de la década de 1980, IBM diseñó la PC y buscó software para que se ejecutara en ella. El personal de IBM se puso en contacto con Bill Gates para usar bajo licencia su intérprete de BASIC y también le consultó acerca de un sistema operativo para su nueva computadora. Bill Gates se percató de que un fabricante de computadoras local, Seattle Computer Products, tenía un sistema operativo apropiado, el DOS (Disk Operating System). Gates se ofreció a comprar el sistema operativo y ofreció a IBM un paquete DOS/BASIC que IBM aceptó. Gates contrató a Tim Paterson, creador del sistema DOS en su nueva empresa, Microsoft para que escribiera algunas modificaciones al software original. Para la época fue extremadamente novedoso como política de negocios vender el software para que fuera vendido preinstalado. MS-DOS (el nombre comercial del sistema DOS) pronto dominó el mercado de computadoras personales y luego se le fueron agregando funciones más avanzadas. 1980 a la actualidad Autor: LAROSA, F. S. Estructura de un sistema informático Cuarta generación: Computadoras personales, GUI Doug Engelbart (Standford Reserach Institute) inventó la primera GUI (Graphical User Interface) provista de ventanas, íconos, menús y ratón. Los investigadoresde Xerox adoptaron esta línea que luego abandonaron. Steve Jobs, uno de los jóvenes que inventaron la computadora Apple en la cochera de su casa se decide construir una computadora con GUI, la Lisa, que fue un fracaso como proyecto comercial. El segundo intento de Jobs, la Apple Macintosh fue un enorme éxito, no sólo porque era más económica, sino porque era amigable para el usuario (user-friendly) lo cual implicaba “que estaba orientada a personas que no sólo no tenían conocimientos de computación sino que además no tenía ninguna intención de aprender”. 1980 a la actualidad Autor: LAROSA, F. S. Estructura de un sistema informático Cuarta generación: Computadoras personales Microsoft pensó mucho en el éxito comercial de la Apple Macintosh cuando lanzó su sistema operativo Windows 3.1 que no era un sistema operativo nuevo, sino mas bien, una GUI que se ejecutaba encima de MS-DOS. Otro sistema operativo de Microsoft es el Windows NT (New Technology) que fue internamente reescrito desde cero para funcionar completamente en 32 bits. Otro contendiente en el mundo de las computadoras es UNIX (y sus derivados) que es sobre todo fuerte en el mundo de los servidores de red, En computadoras personales LINUX se está convirtiendo en una alternativa popular a Windows sobre todo en el círculo de los estudiantes y los usuarios avanzados. 1980 a la actualidad Autor: LAROSA, F. S. Sistemas Operativos ¿Qué es un sistema operativo? Autor: LAROSA, F. S. Sistemas Operativos Dos concepciones Hardware Sistema Operativo Aplicaciones El sistema operativo como MÁQUINA EXTENDIDA El sistema operativo como ADMINISTRADOR DE RECURSOS Las definiciones de Tanenbaum Autor: LAROSA, F. S. Sistemas Operativos Sistema operativo = MAQUINA EXTENDIDA PROBLEMA La arquitectura (conjunto de instrucciones básicas, organización de memoria, buses, set de dispositivos de entrada/salida) es complicada de programar. El programador no quiere meterse en los detalles de la programación, antes bien quiere que se le presente una abstracción simple de alto nivel. Para ello el sistema provee al programador con un set de funciones (llamadas al sistema) que le ofrecen la perspectiva de una máquina extendida o máquina virtual que es más fácil de programar que el hardware subyacente. Autor: LAROSA, F. S. Sistemas Operativos Sistema operativo = ADMINISTRADOR DE RECURSOS PROBLEMA Un equipo informático es un sistema complejo que consta de procesador/es, memoria, discos, dispositivos E/S y un conjunto de aplicaciones que buscan hacer uso de los recursos. Lo anterior implica una multiplexación (división) en: •Tiempo: El sistema operativo asigna un recurso por turnos a los programas que lo demandan. Ejemplo: CPU, impresora. •Espacio: El sistema operativo asigna parte del recurso a las aplicaciones. Ejemplo: Memoria, espacio en disco. Autor: LAROSA, F. S. Sistemas Operativos Conceptos de sistemas operativos Algunos de los conceptos fundamentales de todos los sistemas operativos son: •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Un proceso es básicamente un programa en ejecución. Cada proceso tiene asociado su propio espacio de direcciones (una lista de posiciones de memoria desde algún mínimo hasta algún máximo que el proceso puede leer y escribir). El espacio de direcciones contiene el código del programa ejecutable, sus datos y su pila. Cada proceso consta además de un conjunto de registros: Autor: LAROSA, F. S. Sistemas Operativos Procesos TSS Segment (Registro de estado de tarea) Extraído del manual Intel 3 A “System Programming Guide” Página 7-5 •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema El conjunto de los registros de la CPU constituye una “imagen” de la máquina que permite recuperar el estado de la CPU cuando se reanuda el proceso. Un programa que forma parte del kernel del sistema operativo llamado “scheduler” (planificador, calendarizador) divide el tiempo de uso del procesador en pequeñas porciones (slices=rodajas) y asigna estas porciones a los programas que se están ejecutando. Autor: LAROSA, F. S. Sistemas Operativos Procesos Programa A Programa B Programa C … Programa Z El programa A se ejecuta por un tiempo determinado Una vez concluído el tiempo el sistema operativo guarda el contexto del proceso El sistema operativo carga el contexto del proceso B y lo reanuda Programa A Programa B •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Por ejemplo, en LINUX, la lista de procesos consta de una lista doblemente enlazada que contiene todos los descriptores de procesos: Autor: LAROSA, F. S. Sistemas Operativos Procesos Los procesos pueden estar activos o no. Por ejemplo, si un proceso está esperando el ingreso de información por teclado para continuar hasta que no la recibe queda en un estado particular (TASK_INTERRUPTIBLE) y se saca de la lista de procesos activos. Cuando recibe la información, el sistema operativo le reasigna el estado activo (TASK_RUNNING) y lo devuelve a la lista de procesos activos. •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Autor: LAROSA, F. S. Sistemas Operativos Procesos Contenido de un descriptor de proceso Extraído de “Understanding the Linux Kernel” •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Autor: LAROSA, F. S. Sistemas Operativos Procesos Jerarquía de procesos Extraído de “Understanding the Linux Kernel” Los procesos se agrupan en una serie de jerarquías. Por ejemplo, un usuario ejecuta un comando en el ‘shell’ para llevar a cabo determinada acción. El shell crea un nuevo proceso el que a la vez puede o no generar nuevos procesos. Cuando un proceso genera a otro éste último recibe el nombre de ‘proceso padre’ y aquel el de ‘proceso hijo’. •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Autor: LAROSA, F. S. Sistemas Operativos Procesos: Ejemplo (Servidor Concurrente) En base al modelo cliente-servidor una determinada funcionalidad (manejo de correo electrónico, multimedia, compartir archivos, etc.) se presenta como una aplicación distribuída que particiona la carga de trabajo a realizar entre aplicaciones que proveen servicios (server/servidor) y aplicaciones que los solicitan (clients/clientes). •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Inicialización Espera requerimientos de conexión por parte de los clientes Inicialización Intenta conectar con el servidor Una vez establecida la conexión el servidor genera un proceso hijo para que atienda al cliente. Proceso hijo Una vez llevada a cabo la conexión el cliente intercambiará información con el proceso hijo del servidor. Autor: LAROSA, F. S. Sistemas Operativos Procesos Tabla de Señales Funciones de manejo de Señales Extraído de “Understanding the Linux Kernel” Los procesos se comunican mediante señales lo que permite sincronizar los procesos, manejar errores y articular la comunicación de los mismos entre sí. Algunas de las funciones son: •Procesos •Manejo de bloqueos •Administración de memoria •Administraciónde dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Autor: LAROSA, F. S. Sistemas Operativos Manejo de bloqueos Otra de las funciones de un sistema operativo es la de sincronizar el acceso a los recursos (memoria, hardware de entrada/salida, etc.) de forma razonable de manera tal que los procesos involucrados en estas operaciones no entren en conflicto. Por ejemplo, supongamos que dos procesos quieren grabar una imagen de un DVD. •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Pide el control de la grabadora DVD. El SO se lo concede. Proceso I Accede al archivo de imagen del DVD. El SO le concede el acceso al archivo. Proceso II Intenta acceder al archivo de imagen de DVD. El SO lo bloquea porque se encuentra en uso por otro proceso. Proceso I Intenta acceder a la grabadora de DVD. El SO lo bloquea porque se encuentra en uso por otro proceso. Proceso II Autor: LAROSA, F. S. Sistemas Operativos Administración de memoria Toda computadora tiene una memoria principal donde se alojan las aplicaciones y el kernel del sistema operativo. Antiguamente, los sistemas operativos sólo podían ejecutar una aplicación a la vez (monotarea). Una vez terminada, se desalojaba de memoria y se podia alojar una nueva en su lugar. Actualmente, los sistemas operativos pueden manejar la convivencia de varias aplicaciones “ejecutándose al mismo tiempo”. Para ello, el sistema operativo debe ubicar a cada uno en un segmento diferente del espacio de direcciones (mapa de memoria). •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Mapa de memoria Proceso A El proceso A se ejecuta por un lapso de tiempo determinado Se cierra el proceso A y la memoria ocupada por el mismo es liberada Mapa de memoria Se ejecuta el proceso B quien pasa a ocupar una fracción de la memoria disponible Mapa de memoria Proceso B Mapa de memoria Proceso A Proceso B Autor: LAROSA, F. S. Sistemas Operativos Administración de memoria Incluso es posible ejecutar programas que ocupan una cantidad de memoria mayor a la disponible en el sistema. Para ello, el sistema operativo utiliza un ‘manejador (handler) de memoria virtual”. El programa reside parte en memoria de sistema y parte en memoria de disco. A medida que el programa se va ejecutando el sistema operativo carga las páginas de memoria disponibles en disco en la memoria de sistema. •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema DISCO El programa se ejecuta cargando la primera de sus páginas en memoria Página ‘1’ (disponible en memoria) Página ‘2’ (no presente en memoria) (EXCEPCION) Cuando se quiere ejecutar la segunda página el SO nota que no está presente en memoria y libra una excepción que es manejada por su handler de memoria virtual El handler copia la página del disco rígido a la memoria y termina. El programa continúa su operación normalmente como si nada hubiese pasado. En WINDOWS es un archivo: 386SPART.PAR en Windows 3.1 WIN386.SWP en Windows 3.11, 95 y 98 pagefile.sys en Windows NT y sucesores En LINUX generalmente se utiliza una partición para tal fin Autor: LAROSA, F. S. Sistemas Operativos Administración de dispositivos E/S Todo sistema operativo cuenta con un subsistema de entrada/salida que se encarga de administrar sus dispositivos de entrada/salida. Debe enviar comandos a los dispositivos, atrapar interrupciones y manejar errores, además de proporcionar una interfaz sencilla y fácil de usar entre los dispositivos y el resto del sistema. Para ello cuenta con dos tipos de programas diseñados para manejar los dispositivos (‘drivers’): •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Independiente del dispositivo. Ejemplo: drivers genéricos para mouse, teclado, etc. Genéricos Provistos para el fabricante para un dispositivo en particular. Específicos Autor: LAROSA, F. S. Sistemas Operativos Administración de dispositivos E/S El hardware presenta diferentes “rostros” de acuerdo al especialista que se desempeñe en su utilización: •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Hardware Diseñador de aplicaciones Es una abstracción a la cual se accede por medio de un conjunto de llamadas al sistema (librería de llamadas). Hardware Diseñador de drivers Es una caja negra, fuente de interrupciones, acepta y recibe comandos. Hardware Diseñador de hardware Conjunto de dispositivos electrónicos, conductores, fuentes de alimentación, blindaje, etc. Autor: LAROSA, F. S. Sistemas Operativos Tipos de dispositivos •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Esquema del kernel de LINUX (Extraído de “Linux Device Drivers”) Autor: LAROSA, F. S. Sistemas Operativos Tipos de dispositivos •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Char device (Dispositivo de carácter) •Puede ser accedido como un flujo (stream)de bytes. •Las llamadas al sistema deben ser al menos: open, close, read y write. •Algunos ejemplos son: la consola de texto (/dev/console) y los puertos seriales (/dev/ttySO) •Se accede a ellos como como nodos en el sistema de archivos (/dev/tty, /dev/lp0). Block device (Dispositivos de bloques) •Puede ser accedido mediante operaciones de E/S que transfieren uno o mas bloques (usualmente 512 bytes o una potencia de dos mayor). •Se accede a ellos como nodos en el sistema de archivos (directorio /dev). •Pueden hostear un sistema de archivos (filesystem) Network device (Dispositivos de red) •Se acceden mediante una interfaz (sockets TCP y UDP). •No están mapeados como nodos en el sistema de archivos. Los dispositivos se pueden clasificar de muchas maneras. Presentaremos la forma en que los clasifica el sistema operativo LINUX. Autor: LAROSA, F. S. Sistemas Operativos Acceso a los dispositivos •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema A fines de comunicarse con los dispositivos se utilizan uno o más registros que pueden estar ubicados en: Mapa de Memoria Mapa de Puertos E/S Mapa de Memoria Mapa de Memoria Mapa de Puertos E/S Mapa de Puertos E/S Espacios separados de memoria y E/S Espacios conjuntos de memoria y E/S Híbrido Mapa de Puertos E/S Autor: LAROSA, F. S. Sistemas Operativos Acceso a los dispositivos •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Para el caso de un mapa de puertos y memoria separados (arquitectura Intel) se procede de la siguiente manera: CPU Memoria Dispositivo de E/S (1) Dispositivo de E/S (2) Bus de datos Bus de direcciones /M-IO La CPU coloca la dirección de memoria a la que necesita acceder en el bus de direcciones La memoria pone el dato a leer en el bus de datos. /R-W CASO 1: La CPU quiere leer un dato de la memoria. Las lineas de control se configuran para leer(/R-M=0) la memoria (/M-IO=0). Esta línea de control se usa para indicar sise quiere: -Leer(/R-W=0) -Escribir (/R-W=1) Esta línea de control se usa para indicar si se quiere: -Acceder a memoria (/M-IO=0) - Acceder a puertos (/M-IO=1) Autor: LAROSA, F. S. Sistemas Operativos Acceso a los dispositivos •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Para el caso de un mapa de puertos y memoria separados (arquitectura Intel) se procede de la siguiente manera: CPU Memoria Dispositivo de E/S (1) Dispositivo de E/S (2) Bus de datos Bus de direcciones /M- IO La CPU coloca la dirección del mapa de puertos a la que necesita acceder en el bus de direcciones El dispositivo 1 se da por aludido al encontrar que la dirección indicada le pertenece y lleva a cabo la acción descrita en el comando.. /R-W CASO 2: La CPU quiere enviar un comando a un dispositivo. Las lineas de control se configuran para escribir(/R-M=1) en el mapa de puertos (/M-IO=1). Autor: LAROSA, F. S. Sistemas Operativos Acceso a los dispositivos •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema CPU Memoria E/S CPU Memoria E/S Bus de baja velocidad Bus de alta velocidad Este puerto permite a los dispositivos de E/S tener acceso a la memoria Tanto las direcciones de memoria como de E/S se colocan en este bus Arquitectura de un solo bus Arquitectura de un bus de memoria dual Autor: LAROSA, F. S. Sistemas Operativos Acceso a los dispositivos •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Autor: LAROSA, F. S. Sistemas Operativos Interrupciones/Excepciones •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema CPU Controladora de Interrupciones Bus Disco Teclado Timer Impresora Puerto serie Puerto paralelo 1) El dispositivo llama la atención del procesador enviando un pedido de interrupción a la controladora de interrupciones. 2) La controladora evalúa la interrupción tomando en cuenta su prioridad , si está habilitada, si el procesador está atendiendo una interrupción actualmente, etc. Y envía un pedido de interrupción al procesador 3) La CPU atiende (o no) la interrupción y lee el bus de datos, en el cual la controladora le indica cual es la fuente de la interrupción. 4) El sistema operativo detiene momentáneamente su ejecución y en base a la fuente de interrupción busca en una tabla (vector de interrupciones) el comienzo de la rutina de atención para la interrupción específica. Autor: LAROSA, F. S. Sistemas Operativos DMA (Direct Memory Access) •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema CPU Controladora de disco Memoria Principal 1)La controladora de disco lee el bloque de datos byte por byte y lo almacena en un buffer interno previo calcular la suma de verificación del mismo. 2) Una vez llenado el buffer, la controladora produce una pedido de interrupción a la CPU. 3) La CPU lee los datos del buffer de la controladora de disco mediante un conjunto de operaciones sucesivas de lectura. 4) La CPU escribe los datos tomados del disco en la memoria mediante una sucesión de operaciones de escritura. Autor: LAROSA, F. S. Sistemas Operativos DMA (Direct Memory Access) •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema CPU Controladora de disco Memoria Principal 1)La CPU configura la controladora DMA indicándole la dirección a partir de la cual quiere transferir, la cantidad de bloques y a dónde quiere hacerlo. Controladora DMA 2)La controladora DMA inicia un pedido de lectura a la controladora de disco (idéntico al que haría el procesador). 3)Se transfiere el dato (byte o palabra) desde la controladora de disco hacia la memoria 4) La controladora de disco acusa recibo a la controladora DMA de que la transferencia se ha completado. 5) El proceso se repite hasta que se ha transferido la cantidad de datos indicada. 6) La controladora DMA interrumpe a la CPU para indicarle que la transferencia ha sido completada. Autor: LAROSA, F. S. Sistemas Operativos Sistema de archivos Todos los sistemas operativos poseen algún tipo de mecanismo para ocultar las peculiaridades de los discos y otros dispositivos de E/S para proveerle a las aplicaciones un modelo claro (en la jerga “una abstracción”) bajo la forma de una estructura de archivos y directorios. Además el sistema operativo debe proveer una serie de llamadas para abrir, guardar, crear, eliminar y cerrar los archivos. La forma más común de organizar los archivos es mediante una estructura de árbol de directorios. •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Autor: LAROSA, F. S. Sistemas Operativos Sistema de archivos Todo archivo o directorio puede referenciarse mediante una ruta (en la jerga “path”) a partir del tope de la jerarquía (directorio raíz). •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Referida al directorio raíz. Ejemplo: \Facu\clase1.pps Ruta absoluta Referida al directorio de trabajo del proceso. Ejemplo: clase1.pps (‘Facu’ es el directorio de trabajo) Ruta relativa \ Facu Pepe.txt Clase1.pps Mis cosas Pincha_campe on2009.mov Kill bill 1.avi Ejemplo de estructura rudimentaria de archivos Autor: LAROSA, F. S. Sistemas Operativos Sistema de archivos Tanto en UNIX como en WINDOWS el sistema operativo toma a los archivos como una sucesión de bytes. El significado del archivo se interpreta a nivel de usuario por la aplicación encargada de operar sobre ese tipo de archivo en particular. •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Archivo 0xFE 0x1E 0xF3 0x21 0x47 0x7A 0xF9 byte Autor: LAROSA, F. S. Sistemas Operativos Sistema de archivos Todo sistema de archivos asigna a cada archivo un conjunto de atributos… •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Autor: LAROSA, F. S. Sistemas de archivos Algo de discos rígidos… Es un dispositivo que consta de varios platos de metal que giran a 5400, 7200 0 10800 rpm. Un brazo mecánico pivotea sobre los platos desde una esquina (de forma similar al brazo de un reproductor de discos de vinilo). La información se graba en una serie de discos concéntricos cambiando a voluntad la orientación magnética del material que sirve para diferenciar los unos de los ceros. A (Pista): Una de las circunferencias que conforman la estructura del disco. B (Sector): Cada uno de los sectores circulares de cada disco. C (Sector de una pista): Cada una de las intersecciones entre un sector y una pista. Conforma la mínima unidad accesible físicamente. D (Clúster): El conjunto de uno o más sectores de pista que conforman la mínima unidad accesible lógicamente. Cilindro: Conjunto que comprende todas las pistas alineadas verticalmente. •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell•Llamadas al sistema Autor: LAROSA, F. S. Sistemas Operativos Sistema de archivos: Implementaciones •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Asignación contigua (I) A A A A A B B B Se van a grabar los archivos: A (5 bloques) B (3 bloques) Disco de ejemplo de 10 sectores Ahora se quiere grabar el archivo C (6 bloques)… ¿Cómo procederemos? Ahora se quiere grabar el archivo C (6 bloques) … ¿Cómo procederemos? Primero borramos el archivo A: Luego debemos reordenar (desfragmentar el disco): Ahora podemos grabar el archivo: Autor: LAROSA, F. S. Sistemas Operativos Sistema de archivos: Implementaciones •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Asignación contigua (II) A A A A A B B B B B B B B B B B B C C C C C C Ventajas Las operaciones de lectura y escritura son sumamente rápidas y sencillas por estar los archivos guardados de forma contigua en el disco. Desventajas El sistema de archivos se fragmenta rápidamente y existe la necesidad de defragmentarlo para poder almacenar los nuevos archivos. Usos: Unidad de CD, DVD, cinta magnética. Autor: LAROSA, F. S. Sistemas Operativos Sistema de archivos: Implementaciones •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Asignación contigua (III) Autor: LAROSA, F. S. Sistemas Operativos Sistema de archivos: Implementaciones •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Tabla de memoria (I) 0 1 2 3 4 5 6 7 8 9 B1 A0 A1 B0 A2 B2 A3 A4 B3 Disco de ejemplo de 10 sectores En este caso se tiene una tabla en memoria que permite «rastrear» los archivos: Sector Siguiente sector 0 6 1 2 2 5 3 0 4 - 5 7 6 9 7 8 8 -1 9 -1 Entrada al archivo A Entrada al archivo B Tabla en memoria Autor: LAROSA, F. S. Sistemas Operativos Sistema de archivos: Implementaciones •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Tabla de memoria (II) Ventajas Al tener información de como se encadenan los archivos directamente enla memoria la búsqueda se puede hacer rápidamente. Desventajas La fragmentación tiende a ser alta. El tamaño de la tabla en la memoria tiende a aumentar conforme aumenta el tamaño del disco por lo que se vuelve impráctico para discos grandes. Ejemplos: FAT 12, FAT 16, FAT 32 Autor: LAROSA, F. S. Sistemas Operativos Sistema de archivos: Implementaciones •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Tabla de memoria (III) Ejemplo: Disco de 30 Mb Disco de 250Gb Tamaño del sector 512 bytes 512 bytes Cantidad sectores 62.500 488.281.250 Tamaño variable 16 bits 32 bits Tamaño de tabla en memoria ≈125kB 1,95GB Autor: LAROSA, F. S. Sistemas Operativos Sistema de archivos: Implementaciones •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema i-nodos (I) En este caso, por cada archivo se tiene una estructura como sigue: 0 1 2 3 4 5 6 7 8 9 B1 A0 A1 B0 A2 B2 A3 A4 B3 i-nodo de A Atributos de A 1 2 4 7 8 i-nodo de B Atributos de B 3 0 6 9 Autor: LAROSA, F. S. Sistemas Operativos Sistema de archivos: Implementaciones •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema i-nodos (II) Ventajas Al abrir un archivo sólo se mantiene el i-nodo de ese archivo en memoria, así, la cantidad de memoria ocupada no depende del tamaño de la unidad (como en el caso de FAT) sino de la cantidad de archivos abiertos. Ejemplos: Sistemas de archivos típicos de UNIX/LINUX como ext3 y ext4. Autor: LAROSA, F. S. Sistemas Operativos Seguridad Todos los sistemas de computación comprenden una cierta cantidad de datos (correo electrónico, documentos personales o de negocios, diseños, etc.) o aplicaciones que sólo deben ser accedidos por ciertos usuarios. El sistema operativo es el encargado de controlar la seguridad del sistema a fines de regular el acceso a los archivos. •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Autor: LAROSA, F. S. Sistemas Operativos Seguridad Por ejemplo, los sistemas tipo UNIX utilizan un código de nueve bits divididos en tres campos para llevar a cabo esta política de protección. •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema •Flag directorio • ‘ – ‘ : Archivo normal • ‘ d ‘ : Directorio •Usuario dueño •Grupo de usuarios del dueño •Resto de los usuarios Estas últimas tres categorias comparten: •‘ r ‘: Leer (Read) el archivo •‘ w ‘: Escribir (Write) el archivo •‘ x ‘: Ejecutar (eXecute) el archivo (en caso que sea un directorio implica permiso de búsqueda) Flag directorio Usuario dueño Grupo de usuarios del dueño Resto de los usuarios Autor: LAROSA, F. S. Sistemas Operativos Shell El sistema operativo es el código base que ejecuta las llamadas al sistema. Muchas veces se toman aplicaciones como compiladores, linkers, utilidades (desfragmentador, firewalls, etc.) o intérpretes de comandos (shells) como partes del sistema operativo aunque no lo sean. La razón de esta confusión es que este tipo de utilidades están fuertemente ligadas al sistema operativo. Un shell es un programa que hace uso de muchas de las funciones del sistema operativo y constituye (salvo que se use una GUI) la principal puerta de comunicación entre el usuario y el sistema operativo. Generalmente, el shell brinda un indicador de comandos (“prompt”) que indica al usuario que el shell se encuentra a sus órdenes. •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Autor: LAROSA, F. S. Sistemas Operativos Shell •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema PROMPT Proceso “bash” Proceso “cmd.exe” Autor: LAROSA, F. S. Sistemas Operativos Shell Una vez mostrado el prompt (“indicador de comandos”) el usuario puede ingresar un comando. Generalmente, un comando implica el inicio de un nuevo proceso que se abre como proceso hijo del intérprete de comandos •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Ejemplo de comando ejecutado como proceso hijo del bash Autor: LAROSA, F. S. Sistemas Operativos Llamadas al sistema La interfaz entre el sistema operativo y las aplicaciones (programas de usuario) está definida por un conjunto de llamadas al sistema ofrecidas por el sistema operativo. Estas varían de un sistema operativo a otro aún cuando en términos generales son conceptualmente similares. Para ilustrar el concepto comenzaremos con las llamadas al sistema de UNIX y en particular al estándar POSIX del IEEE. El estándar POSIX resume todas las llamadas al sistema mínima que debe soportar un sistema operativo tipo UNIX paraser compatible con dicho estándar. •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Autor: LAROSA, F. S. Sistemas Operativos Llamadas al sistema (POSIX) Procesos •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Llamada Descripción pid=fork() Crea un proceso hijo s=execve(name,argv,environp) Reemplaza un proceso por otro a partir de un archivo ejecutable exit(status) Termina un proceso en ejecución y devuelve “status” pid=waitpid(pid,…) Espera a un proceso hijo para que termine Autor: LAROSA, F. S. Sistemas Operativos Llamadas al sistema (POSIX) Archivos •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Llamada Descripción Fd=open(file,…) Abrir un archivo para lectura, escritura o ambas. S=close(fd) Cerrar un archivo abierto N=read(fd,buffer,nbytes) Leer datos desde un archivo a un buffer (en memoria) N=write(fd,buffer,nbytes) Escribir datos desde un buffer (en memoria) a un archivo Position=lseek(fd,offset,whence) Mover la ventana de lectura dentro de un archivo S=stat(name,&buf) Obtener información del estado de un archivo Autor: LAROSA, F. S. Sistemas Operativos Llamadas al sistema () •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Llamada Descripción S=mkdir(name,mode) Crear un nuevo directorio S=rmdir(name) Borrar un directorio vacio S=link(name1,name2) Crear una nueva entrada (name1) que apunta a name2 S=unlink(name) Borrar una entrada de directorio S=mount(special,name,flag) Montar un sistema de archivos S=unmount(special) Desmontar un sistema de archivos Autor: LAROSA, F. S. Sistemas Operativos Llamadas al sistema •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Llamada Descripción S=chdir(dirname) Cambia el directorio de trabajo S=chmod(name,mode) Cambia los bits de protección de un archivo S=kill(pid,signal) Envía una señal a un proceso Seconds=time(&seconds) Entrega los segundos que han pasado desde el comienzo del día 1 de Enero de 1970 Autor: LAROSA, F. S. Sistemas Operativos Llamadas al sistema Cualquier computadora que tenga una sola CPU sólo puede ejecutar una instrucción a la vez. Si un proceso se está ejecutando actualmente en el espacio de direcciones del usuario y necesita acceder a un servicio del sistema como leer datos de un archivo, abrir un socket para iniciar una conexión con un servidor, etc. El procesador tendrá que ejecutar una instrucción TRAP (excepción) para transferir el control al sistema operativo. Éste determinará lo que quiere el proceso invocador al examinar los parámetros y a continuación ejecutará la llamada al sistema y devolverá (o no) el control a la instrucción que seguía a la llamada al sistema. En muchos aspectos, ejecutar una llamada es similar a ejecutar una función salvo que las llamadas al sistema entran en el kernel y las funciones no. •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Autor: LAROSA, F. S. Sistemas Operativos Llamadas al sistema Veamos un ejemplo: •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema fd Cantidad de bytes ‘nbytes’ Memoria buf puntero1 puntero2 puntero3 … punteron Autor: LAROSA, F. S. Sistemas Operativos Llamadas al sistema •Procesos •Manejo de bloqueos •Administración de memoria •Administración de dispositivos E/S •Archivos •Seguridad •Shell •Llamadas al sistema Espacio de usuario Espacio de kernel Espacio de memoria del proceso en ejecución … read(fd,buffer,nbytes) … Pila del proceso en ejecución fd buffer nbytes 1) La aplicación llega a la función ‘read’ 2) La aplicación mete en la pila los parámetros de la función ‘read’ Función ‘read’ 3) La función mete el código de la llamada en un registro especial 4) La función pasa a modo kernel Código que atiende las llamadas al sistema 5) El código que atiende las llamadas al sistema determina por el código introducido que es la llamada ‘read’ 6) Mediante una tabla de punteros se determina cual es el programa manejador (‘handler’) adecuado para llevar a cabo la operación de lectura. Tabla de punteros 7) El manejador ejecuta la operación para el que fue escrito. Código del ‘handler’ 8) El control podría devolverse al procedimiento de biblioteca en el espacio de usuario. 9) Retorno a la aplicación Autor: LAROSA, F. S. Sistemas Operativos El futuro… “640K is more memory than anyone will ever need” Bill Gates Autor: LAROSA, F. S. Sistemas Operativos El futuro… Virtualización El futuro de los servidores (y probablemente de las computadoras de oficina) se basará cada vez más en un esquema de sistemas operativos virtualizados: Windows 7 LINUX I LINUX II Hypervisor MV Hardware Sistema informático Autor: LAROSA, F. S. Sistemas Operativos El futuro… Operación multinúcleo Con procesadores hasta de ocho cores (en la actualidad en el mercado) los sistemas operativos se están quedando atrás en el aprovechamiento de este tipo de recursos de hardware… Muchos sistemas operativos y aplicaciones no aprovechan todas las capacidades de los múltiples cores (por no decir de las palabras de 64 bits)… Autor: LAROSA, F. S. Sistemas Operativos El futuro… Espacios de direcciones de memoria extensos A medida que la cantidad de memoria de sistema («RAM») crece sin parar los paradigmas de programación cambiarán. El uso de memoria virtual se volverá cada vez más obsoleto hasta desaparecer y se incrementarán las dificultades para manejar y paginar cantidades de memoria crecientes. Autor: LAROSA, F. S. Sistemas Operativos El futuro… Redes A medida que los límites entre «afuera» y «adentro» en una computadora se van difuminando (se borran las diferencias entre datos almacenados local y remotamente) las aplicaciones deberán integrar ambos tipos de datos para ocultar estas «inconveniencias» al usuario. Muchos intentan imponer el paradigma de la «cloud computing» en el cual un sistema de computación se concibe inmerso en una nube de la cual forman parte millones de otros equipos… … un tema controvertido en cuanto a la seguridad. Autor: LAROSA, F. S. Sistemas Operativos El futuro… Multimedia y archivos extensos A medida que los archivos que nos rodean (especialmente bajo el influjo de las aplicaciones multimedia) crecen en tamaño se necesitarán nuevos sistemas de archivos capaces de manejarlos mejor y más eficientemente.
Compartir