Sistemas Operativos Daniel Rojas U
UTN
Qué es un sistema operativo
• Es un programa que administra el hardware de una computadora.
• También sirve de base para que las aplicaciones interactúen entre el usuario y el hardware.
• Algunos sistemas operativos están diseñados para ser convenientes o eficientes. Algunos buscan alguna combinación de ambos.
Sistema Operativo
Vista de Usuario• La vista del usuario hacia un sistema operativo
depende de la interfaz que se use.
• La mayoría de usuarios acceden a la computadora mediante el monitor, teclado y mouse.
• En este caso el sistema operativo está diseñado para facilidad de uso y los requerimientos de un único usuario.
Vista de Usuario• En otros casos el usuario se conecta a una terminal
conectada a una Mainframe.
• Múltiples usuarios acceden la Mainframe utilizando diferentes terminales.
• En estos casos el sistema operativo está diseñado para compartir recursos.
• Lo más importante es que se compartan y aprovechen los recursos.
Vista del Sistema• Desde el punto de vista de la computadora el sistema
operativo es el programa más cercano al hardware.
• Se puede considerar al sistema operativo como un administrador de recursos.
• Se encarga de resolver conflictos y manejar las solicitudes de recursos.
• Estas tareas se vuelven vitales cuando se trabaja en sistemas multiusuarios.
Vista del Sistema
• También se considera al sistema operativo un programa de control.
• Debido a que controla dispositivos de E/S y programas del usuario.
Definiendo un sistema operativo
• Un sistema operativo cubre muchos roles y funciones.
• El sistema operativo es el encargado de hacer fácil de usar a una computadora.
• La meta fundamental de una computadora es ejecutar programas de usuarios y ayudar al usuario a resolver problemas.
Definiendo un sistema operativo
• Debido a que utilizar el hardware por si solo es muy difícil, se desarrollan aplicaciones de usuarios.
• Estas aplicaciones requieren de ciertas operaciones comunes: dispositivios E/S.
• Estas operaciones comunes y el manejo de recursos se agrupan en un sistema operativo.
Definiendo un sistema operativo
• Otra definición aceptada es: El programa que siempre está corriendo en una computadora.
• Normalmente está compuesto por:
• Kernel
• Programas del Sistema
Organización de un sistema de Computadoras
• Un sistema computacional se puede definir como uno o más CPUS y un grupo de dispositivos conectados a través de un bús común que provee acceso a memoria compartida.
• Cada controlador se encarga de un tipo de dispositivo.
• El CPU y los controladores pueden funcionar en paralelo compitiendo por los ciclos de procesador.
Organización de un sistema de Computadoras
Organización de un sistema de Computadoras
• Cuando se inicia una computadora el primer programa que arranca es el bootstrap.
• Este está guardado en una memoria ROM o EEPROM.
• Inicializa todos los aspectos del sistema operativo.
• Ubica el kernel y lo carga en memoria.
Organización de un sistema de Computadoras
• Una vez que el kernel está cargado y ejecutándose puede comenzar a proveer servicios a los usuarios.
• También se inician ciertos servicios de acompañamiento al kernel, conocidos como procesos del sistema.
• Una vez que el sistema se inicia completamente comienza a esperar que algo ocurra.
Organización de un sistema de Computadoras
• La ocurrencia de un evento se señala con una interrupción.
• La interrupción puede venir del software o hardware.
• El hardware puede hacer una interrupción enviando una señal al CPU a través del bus del sistema.
• El software puede hacer una llamada al sistema para avisar sobre una interrupción.
Organización de un sistema de Computadoras
• Cuando la CPU es interrumpida deja de hacer lo que está haciendo y pasa el control a alguna parte que maneje la interrupción.
• Posteriormente retorno a su operación normal.
Estructura de almacenamiento
• El CPU puede cargar instrucciones únicamente de la memoria.
• Normalmente cargan los programas desde la RAM o ROM.
• Todos los tipos de memoria proveen arreglos de bytes.
• Cada byte posee su propia dirección.
Estructura de almacenamiento
• Idealmente todos los programas deberían de estar en la memoria principal (RAM o ROM) permanentemente.
• Sin embargo no es posible por:
• El tamaño reducido de esta memoria.
• Esta memoria es volátil.
Estructura de almacenamiento
• Existen otros medios de almacenamiento conocidos como medios secundarios.
• Normalmente se utilizan discos magnéticos.
Estructura de almacenamiento
Estructura E/S• Un sistema computacional contiene un gran
número de dispositivos de Entrada y Salida.
• Cada dispositivo debe de tener un controlador que lo administre.
• Los controladores normalmente poseen un buffer y algunos registros especiales.
• En muchos casos es necesario instalar un driver para el que periférico funcione.
Estructura E/S• Para iniciar una operación de E/S, el driver carga los
registros en el controlador.
• El controlador examina estos registros y toma la decisión de que acción tomar (leer carácter del teclado).
• El controlador comienza a transferir datos del dispositivo a su buffer local.
• Una vez finalizado avisa al driver mediante una interrupción.
Arquitectura de un sistema computacional
Sistemas de 1 procesador
• Son sistemas que tienen un único procesador para realizar todas las tareas.
• Pueden tener algunos otros de propósito específico (disco, teclado, vídeo...) pero con funcionalidades limitadas.
Sistemas Multiprocesador
• Estos sistemas tienen dos o más procesadores en constante comunicación.
• Comparten el bus, la memoria, el reloj y los periféricos.
• Inicialmente aparecieron en servidores y fueron migrando paulatinamente hacia las computadoras de escritorio.
Sistemas Multiprocesador
• Tienen 3 ventajas importantes:
• Se incrementa la productividad.
• Economías de escala.
• Se aumenta la confiabilidad.
Sistemas en Cluster• Son sistemas que unen varios CPUs.
• Estos sistemas se diferencian de los multiprocesadores debido a que son más de un sistema unidos.
• Normalmente estos sistemas comparten el almacenamiento y se interconectan a través de una LAN.
Sistemas en Cluster
• Estos sistemas proveen alta disponibilidad.
• El sistema continúa funcionando aunque uno de sus nodos falle.
Sistemas en Cluster
• Se pueden dividir en dos tipos:
• Simétricos: Todos los nodos funcionan al mismo tiempo.
• Asimétricos: Un nodo funciona mientras el otro monitorea esperando un fallo para entrar a funcionar.
Sistemas en Cluster
Sistemas en Cluster
Estructura de un Sistema Operativo
• Uno de los aspectos más importantes de un sistema operativo es la característica de multiprograma.
• Un solo programa no puede mantener ocupado el CPU y los dispositivos totalmente.
• Multiprograma aumenta la utilización del CPU organizando los pendientes, de tal forma que siempre haya algo que ejecutar.
Estructura de un Sistema Operativo
• El sistema operativo toma un trabajo y comienza a ejecutarlo.
• Puede ser que tenga que esperar por alguna subtarea, lectura E/S por ejemplo.
• En ese momento se cambia a otra tarea.
• En un sistema que no fuera multiprograma se quedaría esperando y gastando el tiempo.
Estructura de un Sistema Operativo
• Un concepto importante es el tiempo compartido.
• El CPU cambia de tarea de forma periódica, debido a que el cambio es tan rápido el usuario no se da cuenta.
• Esto permite que el usuario interactúe con varios programas a la vez.
• Inclusive permite que sistemas multiusuario se manipulen de forma simultánea.
Estructura de un Sistema Operativo
• Otro concepto importante es la programación de los trabajos.
• El sistema tiene que ser capaz de seleccionar cuales tareas mantener en memoria y cuales en el disco duro.
Operaciones de un sistema operativo
• Los sistemas operativos se manejan a través de interrupciones.
• En caso de que no hayan tareas por ejecutar ni ningún pendiente en E/S el sistema se queda esperando.
• También pueden darse traps. Son excepciones de software cuando ocurre un error.
Operaciones de un sistema operativo
• Es importante aislar los errores de los diferentes programas.
• Debido a que se comparten muchos recursos el aislamiento es muy importante.
Modos de operación
• Existen dos modos de operación en un sistema operativo.
• Cuando se ejecuta código de sistema operativo o código de usuario.
• El sistema operativo provee soporte de hardware para determinar en que modo se encuentra.
Modos de operación
Modos de operación
• El sistema operativo requiere realizar transiciones de modo usuario a modo kernel para llevar a cabo ciertas tareas.
• El sistema inicia en modo kernel.
• Posteriormente se mueve a modo usuario para ejecutar los programas.
Modos de operación
• Estos modos son importantes para proteger al kernel del usuario y viceversa.
• Existen ciertas instrucciones conocidas como instrucciones privilegiadas que solo se pueden ejecutar en modo kernel.
Timer• Es importante que el sistema operativo mantenga
control sobre el procesador.
• No sería correcto que una tarea se mantuviera eternamente en el procesador.
• El timer interrumpe una tarea en un tiempo determinado.
• Puede ser periódico o variable.
Manejo de Procesos
• A los programas en ejecución se les conoce como procesos.
• Un proceso necesita de ciertos recursos: CPU, Memoria, Archivos, Dispositivios E/S...
• Los procesos son parte vital de los sistemas operativos
Manejo de Procesos• Programar procesos
• Crear y borrar procesos de usuario y de sistema
• Suspender y resumir procesos
• Proveer mecanismos para la sincronía de procesos
• Proveer mecanismos para la comunicación de procesos
Manejo de memoria
• El sistema operativo debe de tener en cuenta cuales partes de la memoria están siendo usadas y por quién
• Decidir cuales procesos mover a la memoria
• Administar el espacio en la memoria como sea necesario