Sistemas Operativos
Departamento de Ciencias e Ingeniería de la Computación
(16-5949)
Mg. Jorge Raúl Ardenghi [email protected]
Sistemas Operativos – Introducción JRA © 2009
Este curso está dedicado a la memoria de la:
Profesora Magister en Ciencias de la Computación:
Iris Perla Señas
Quién nos incitó a una mejor transmisión del conocimiento hacia los alumnos y también fue un puntal más en la creación del Departamento de Ciencias e Ingeniería de la Computación.
Una buena compañera y amiga que nunca olvidaremos.
Sistemas Operativos – Introducción JRA © 2009
Objetivos del Curso de Sistemas Operativos
El curso desarrolla los conocimientos de Sistemas Operativos desde una visión conceptual y estructural. Se presentan todos los mecanismos de interacción entre sus partes sin particularizar en algún sistema operativo en especial.
Se discuten tópicos como: servicios de sistemas operativos, sistemas de archivos, planificación de CPU, manejo de memoria memoria virtual, planificación de discos, interbloqueos, procesos y programación concurrente, protección, sistemas distribuidos, etc.
Se presentan algunos ejemplos de estos conceptos en las familias UNIX, Windows XP, Windows Vista, Windows 7, Solaris, etc a lo largo del desarrollo de los módulos, mostrando los matices de implementación entre estos sistemas.
El curso requiere conocimientos de arquitectura y organización de computadores y estructura de datos.
Sistemas Operativos – Introducción JRA © 2009
Programa Sintético
1.0 Introducción.
2.0 Estructuras de Sistemas de Cómputo.
3.0 Estructuras de Sistemas Operativos.
4.0 Procesos.
5.0 Planificación de Procesos.
6.0 Sincronización de Procesos.
7.0 Interbloqueos.
8.0 Manejo de Memoria.
9.0 Memoria Virtual.
10.0 Sistema de Archivos: Interfaces e implementación.
11.0. Manejo de Almacenamiento Secundario.
12.0 Seguridad y Protección.
Bibliografía de Sistemas Operativos
Silberschatz, A., Gagne G., y Galvin, P.B.; "Operating System Concepts", Addison-Wesley, 1998, 5ta Edición; 2001, 6ta Edición. 2005, 7ma Edición. 2009, 8va Edición
Silberschatz, A., Galvin, P.B. y Gagne, G.; "Applied Operating System Concepts", 1stEdition, Addison-Wesley, 2000.
Brinch Hansen, "Operating System Principles", Prentice Hall, 1973
Shaw,A. y Bic,L; "The Logical Design of Operating Systems", Prentice Hall, 1988, 2da Edición
Krakowiak,S.; "Principles of Operating Systemas", The MIT Press,1988
Deitel,H.M.; "Sistemas Operativos", Addison-Wesley, 1993, 2da.
Edición. (o su versión en inglés)
Tanenbaum, A., Woodhull, A. S.; "Operating Systemas: Design and Implementation", Prentice Hall, 1st edition.,1987 (o su version en español); 2ndedition.Prentice Hall, 1997; 3rdedition, 2006.
Bibliografía de Sistemas Operativos (Cont.)
Tanenbaum, A.; "Modern Operating Systems", Addison-Wesley, 1992.(1ra Parte). 2ndEdition, Prentice Hall, 2001. 3rdEdition 2008.
Dhamdhere, D. M. “Sistemas Operativos: Un Enfoque basado en Conceptos” , 2da Edición, Mc Graw Hill, 2006.
Maekawa, M. y otros; "Operating Systems: Advanced Concepts", The Benjamin /Cummings Pub. 1987.
Nutt, G.; "Centralized and Distributed Operating Systems", Prentice Hall, 1992.
Nutt, G.; "Operating Systems: A Modern Perspective", Addison- Wesley, 1997.
Milenkovic,M. "Sistemas Operativos: Conceptos y Diseño", Mc Graw Hill, 1994. (o su versión en inglés)
Stallings, W. "Operating Systems: Internals and Design Principles", Prentice Hall, 3rd Edition, 1998; 4thEdition, 2001; 5th Edition, 2005. 6thEdition, 2009
Sistemas Operativos – Introducción JRA © 2009
(Cont.)
Presentación mas descriptiva orientada a aspectos técnicos:
Madnick y Donovan, "Sistemas Operativos", 1974 Tanenbaum,A.; "Operating Systemas: Design and
Implementation", Prentice Hall, 1997 (o su versión en español) Tanenbaum, A., Woodhull, A. S.; "Operating Systemas: Design and Implementation", 2ndedition.Prentice Hall, 1997.
Bach,M.J.; "The Design of the UNIX Operating System", Prentice Hall, 1987
McKusick et ál; "The Design and Implementation of the 4.4BSD Operating System",Addison-Wesley,1996.
Vahalia, U.; "UNIX Internals: The New Frontiers", Prentice Hall, 1996.
Pate, S.D.; "UNIX Internals: A Practical Approach", Addison- Wesley, 1996
Sistemas Operativos – Introducción JRA © 2009
Bibliografía de Sistemas Operativos (Cont.)
Revistas Técnicas
“Operating System Review" SIG del ACM.
"Computing Surveys" de ACM.
"Transaction on Computer Systems" de ACM.
"Transaction on Software Engineering" del IEEE.
"Transaction on Computers" del IEEE.
"Computer Magazine" del IEEE.
"Software Magazine" del IEEE.
Sistemas Operativos – Introducción JRA © 2009
Módulo 1:
Introducción Sistemas Operativos Sistemas Operativos
Sistemas Operativos – Introducción JRA © 2009
Introducción
¿Qué hace un Sistema Operativo?
Organización del Sistema de Cómputo Arquitectura del Sistema de Cómputo Estructura del Sistema Operativo Operaciones del Sistema Operativo Administración de Procesos Administración de Memoria Administración del Almacenamiento Protección y Seguridad
Sistemas Distribuidos Sistemas de Propósito Especial Ambientes de Computación
Introducción
¿Qué es un sistema operativo?
Un programa que actúa como un intermediario entre un usuario de una computadora y el hardware de la computadora.
Objetivos de Sistema Operativo:
Ejecutar los programas de usuario y permitir la solución de problemas del usuario mas facilmente.
Conveniencia de uso del sistema de la computadora.
Uso del hardware de la computadora de manera eficiente.
Introducción
Componentes del Sistema de Cómputo 1.Hardware – provee los recursos básicos de
computación (CPU, memoria, dispositivos de E/S).
2. Sistema Operativo – controla y coordina el uso del hardware entre varios programas de aplicación para varios usuarios.
3. Programas de Aplicación – define el modo en el cual los recursos del sistema son usados para resolver los problemas de computación de los usuarios
(compiladores, sistemas de bases de datos, videojuegos, web, programas administrativos, etc).
4.Usuarios (gente, máquinas, otras computadoras).
Sistemas Operativos – Introducción JRA © 2009
Introducción
Compilador Ensamblador Editor Sistema de
Base de Datos Programas de Sistema y de
Aplicación
Hardware Sistema Operativo
Usuario n Usuario
3 Usuario
1
Usuario 2
Sistemas Operativos – Introducción JRA © 2009
Introducción
Hardware Sistema Operativo
Librerías Utilitarios Interfaz
Vista Abstracta de los Componentes del Sistema
Sistemas Operativos – Introducción JRA © 2009
Introducción
Definiciones de Sistemas Operativos
Alocador de recursos
administra todos los recursos.decide sobre requerimientos conflictivos para asegurar eficiencia y uso imparcial de recursos
Programa de Control
controla ejecución de los programas para prevenir errores y el uso impropio de la computadora.
Sistemas Operativos – Introducción JRA © 2009
Introducción
Definiciones de Sistemas Operativos (cont)
No existe una definición universalmente aceptada.
“La cosaque un vendedor entrega cuando uno ordena un sistema operativo” resulta una buena aproximación
“El programa que ejecuta todo el tiempo en la computadora” es el kernel o núcleo. Todo lo demás es un programa de sistema (viene junto con el sistema operativo) o un programa de aplicación.
Introducción
Inicio de la Computadora
El programa de bootstrap es cargado en el encendido o reboot
Tipicamente almacenado en ROM o EEPROM, generalmente conocido como firmware
Inicializa todos los aspectos del sistema
Carga el kernel del sistema operativo y comienza la ejecución
Introducción
Organización del Sistema de Cómputo
Operación del Sistema de Cómputo
Una o más CPUs, se provee acceso a la memoria compartida por dispositivos de control conectados a un canal común.
La ejecución concurrente de CPUs y dispositivos compiten por ciclos de memoria.
Sistemas Operativos – Introducción JRA © 2009
Organización del Sistema de Cómputo
discos
teclado impresora
Controlador disco
Adaptador gráfico Controlador
USB
memoria
Sistemas Operativos – Introducción JRA © 2009
Operación del Sistema de Cómputo
Los dispositivos de E/S y la CPU pueden ejecutar concurrentemente.
Cada controlador de dispositivos está encargado de un tipo particular de dispositivo.
Cada controlador de dispositivos tiene un buffer local.
La CPU mueve datos desde/hacia la memoria principal a/desde los buffers locales.
La E/S es desde el dispositivo al buffer local del contro- lador.
El controlador de dispositivo informa a la CPU que ha finalizado su operación por medio de una interrupción.
Sistemas Operativos – Introducción JRA © 2009
Funcionamiento de las Interrupciones
Una interrupcióntransfiere el control a la rutina de servicio de la misma, generalmente por medio del vector de
interrupción, que contiene las direcciones de todas las rutinas de servicio.
La arquitectura de la interrupción debe salvar la dirección de la instrucción interrumpida.
Las interrupciones entrantes son deshabilitadas mientras otra interrupción está siendo procesada para prevenir una pérdida de interrupción.
Un trapes una interrupción generada por el software causada por un error o por un requerimiento de usuario.
Un sistema operativo es manejado por las interrupciones.
Introducción
Sistemas Operativos – Introducción JRA © 2009
Introducción
Manejo de InterrupcionesEl sistema operativo preserva el estado de la CPU almacenando los registros y el contador de programa.
Determina que tipo de interrupción ha occurrido:
polling
Sistema de interrupción vectoreado
Segmentos de código separados determinan que tipo de acción deberían llevarse a cabo para cada tipo de interrupción.
Introducción
Ocioso transfiriendo
proc ejec
proc de int de E/S CPU
Dispositivo E/S
Req E/S transferencia Req E/S
hecha transferencia
hecha
Línea de tiempo de Interrupción para un proceso simple realizando una salida
Introducción Estructura de E/S Forma Sincrónica
Luego que la E/S comienza, el control retorna al programa del usuario solo cuando la E/S se haya completado.
una instrucción de espera mantiene ociosa la CPU hasta la próxima interrupción.
lazo de espera (contención para el acceso a memoria).
A lo sumo una E/S requerida es atendida a la vez, no hay procesamiento simultáneo de E/S.
Sistemas Operativos – Introducción JRA © 2009
Inroducción Estructura de E/S (Cont.)
Forma Asincrónica
Luego que la E/S comienza, el control retorna al programa del usuario sin esperar que la E/S se haya completado.
Llamada al Sistema – requiere al SO que permita al usuario esperar por la terminación de la E/S.
Tabla de estado de los dispositivos: contiene una entrada por cada dispositivo de E/S indicando su tipo, dirección, y estado.
El SO pone un índice en la tabla de dispositivos de E/S para determinar el estado del dispositivo y modificar la entrada a la tabla para incluir la interrupción.
Sistemas Operativos – Introducción JRA © 2009
Introducción
Dos Métodos de E/SSincrónico
proc que requiere espera
driver de disp
manejador de int Hardware transf de datos
proc que requiere
driver de disp
manejador de int Hardware transf de datos
tiempo tiempo
⌠
⌡
kernel kernel
⌠
⌡
usuario usuario
Asincrónico
Sistemas Operativos – Introducción JRA © 2009
Introducción
disp: lect tarjetas 1 status: ociosa
disp: impresora 3 status: ocupada
disp: unidad disco 3 status: ocupada disp: unidad disco 1 status: ociosa disp: unidad disco 2 status: ociosa
req para imp direc: 38769 long: 1245
req para unidad
de disco 3 arch: xxx oper: lect dir:43098 Long: 20000
req para unidad
de disco 3 arch: yyy oper: esc dir: 05678 Long: 500
Tabla de estado de dispositivos
Sistemas Operativos – Introducción JRA © 2009
Introducción
Usado por dispositivos de E/S de alta velocidad para transmitir información a velocidades similares a la de la memoria.
El controlador de dispositivos transfiere bloques de datos desde el buffer de almacenamiento directamente a la memoria principal sin la intervención de la CPU.
Solo una interrupción es generada por bloque, y no una por byte.
Disp E/S
CPU Memoria
Instrucciones de E/S
Estructura de Acceso Directo a Memoria (DMA)
Introducción
Estructura de almacenaje
Memoria principal– único medio de almacenaje que la CPU puede acceder directamente.
Almacenaje Secundario – extensión de la memoria principal que provee una gran capacidad de almacenaje no volátil.
Discos Magnéticos –
La superficie del disco está logicamente dividida en tracks (pistas), los cuales están subdivididas en sectores.
El controlador de disco determina la interacción lógica entre el dispositivo y la computadora.
Introducción
Mecanismo del Movimiento de Cabezas en el Disco
Sistemas Operativos – Introducción JRA © 2009
Jerarquía de almacenaje
Los sistemas de almacenaje está organizado en jerarquía.
Velocidad
Costo
Volatilidad
Caching – información copiada en un sistema de almacenaje rápido; la memoria principal puede verse como el último cache para el almacenaje secundario.
Sistemas Operativos – Introducción JRA © 2009
Jerarquía de Dispositivos de Almacenaje
registros cache
memoria principal disco electrónico
disco magnético
disco óptico
cinta magnética
Sistemas Operativos – Introducción JRA © 2009
Introducción
Caching
Principio importante que es llevado a cabo por varios niveles en una computadora (en hardware, sistema operativo, software)
La información en uso copiada desde un almacenaje lento a uno más rápido temporariamente.
El almacenaje más rápido (cache) es verificado primero para determinar si la información está alli:
Si está, es usada directamente del cache (rápido)
Si no, el dato es copiado al cache y usado allí.
Sistemas Operativos – Introducción JRA © 2009
Introducción Caching (Cont.)
El caché es más pequeño que el almacenaje de donde se ha traído la información:
La administración del cache es un problema importante de diseño.
El tamaño del cache y la política de reemplazo.
Introducción
Rendimiento de varios niveles de almacenamiento
Movimiento entre niveles de la jerarquía de almacenaje puede ser explícito o implícito.
Introducción
Migración de un entero A de disco a registro
Ambientes multitarea deben ser cuidadosos en el uso de los valores más recientes, no importa donde está almacenado en la jerarquía de almacenaje
Disco
magnético Memoria
principal Registro
hardware Caché
Sistemas Operativos – Introducción JRA © 2009
Introducción
Migración de un entero A de disco a registro (cont.)
Los ambientes multiprocesador deben ofrecer coherencia de caché en hardware tal que todas las CPUs tienen el más reciente valor en sus cachés.
En los ambientes distribuidos la situación es más compleja:
Existen varias copias de datos.
Existen varias soluciones que no son motivo de este curso.
Sistemas Operativos – Introducción JRA © 2009
Introducción
Estructura del Sistema Operativo
LaMultiprogramación es necesaria para lograr eficiencia:Un simple usuario no puede mantener la CPU y los dispositivos de E/S ocupados todas las veces.
La multiprogramación organiza las tareas (código y datos) de tal manera que la CPU siempre tiene uno ejecutando.
Un subconjunto del total de tareas en el sistema se mantienen en memoria.
Una tarea es selecionada y ejecuta vía una planificación de tareas.
Cuando tiene que esperar (p.e. E/S), el sistema operativo conmuta a otra tarea.
Sistemas Operativos – Introducción JRA © 2009
Introducción
Estructura del Sistema Operativo
ElTiempo Compartido (multitarea) es una extensión lógica en la cual la CPU conmuta tareas tan frecuentemente que los usuarios pueden interactuar con cada tarea mientras está ejecutando, creando la computación interactiva.
Eltiempo de respuesta debería ser < 1 second
Cada usuario tiene al menos un programa ejecutando en memoria proceso
Si hay varias tareas listas para ejecutar al mismo tiempo
planificación de CPU.
Si un proceso no entra en memoria, el swapping lo mueve fuera y hacia dentro de la memoriamoves para ejecutar.
La Memoria Virtual permite la ejecución de procesos no completos en la memoria.
Sistemas Operativos – Introducción JRA © 2009
Introducción
Distribución de la memoria en un sistema multiprogramado
Sistema Operativo job 1 job 2 job 3 job 4 0
512 k
Introducción
Operaciones del Sistema Operativo
Las interrupciones son manejadas por el hardware
El error o requerimiento de software crea una
excepcióno trap
Division por cero, requiere por un servicio del sistema operativo
Otros problemas de procesos incluyen lazos infinitos, procesos que se modifican unos con otros o el sistema operativo.
Introducción
Operaciones del Sistema Operativo
La operación en modo dual permite al sistema operativo protegerse a si mismo y otros compionentes del sistema
Modo usuario y modo kernel
El bit de modo es provisto por el hardware
Provee la habilidad para distinguir cuando el sistema está ejecutando código de usuario o código kernel.
Algunas instrucciones son privilegiadas, sólo se ejecutan en modo kernel.
La llamada a sistema cambia el modo a kernel, el retorno de la llamada reinicia al modo usuario.
Sistemas Operativos – Introducción JRA © 2009
Transición del modo usuario al modo kernel
Timer para prevenir lazos infinitos / alto consumo de recursos por procesos
Produce un interrupción luego de un período específico.
El SO decrementa un contador.
Cuando el contador llega a cero genera una interrupción.
Se inicia antes que el proceso planificado gane el control o termina el programa que excede el tiempo fijado.
Sistemas Operativos – Introducción JRA © 2009
Transición del modo usuario al modo kernel (cont)
Sistemas Operativos – Introducción JRA © 2009
Introducción
Administración de Procesos
Un proceso es un programa en ejecución. Es una unidad de trabajo dentro del sistema. Un
programa es una entidad pasiva, el proceso es una entidad activa.
El proceso necesita recursos para realizar su tarea.
CPU, memoria, E/S, archivos
Initialización de datos
La terminación de procesos require reclamar los recursos reusables.
Sistemas Operativos – Introducción JRA © 2009
Introducción
Administración de Procesos (cont.)
Los procesos de hilo simple tienen un contador de programa especificando la locación de la próxima instrucción a ejecutar.
El proceso ejecuta instrucciones
secuencialmente, una por vez hasta terminar.
Procesos multihilados tienen un contador de programa por hilo.
Tipicamente un sistema tiene muchos procesos, algún usuario, algún SO ejecutando
concurrentemente en una o más CPUs.
Concurrencia por multiplexado de CPUs entre procesos / hilos.
Introducción
Actividades de la Administración de Procesos
El sistema operativo es responsable por las siguientes actividades en conexión con la administración de procesos.
Creación y eliminación de procesos.
Suspensión y reactivación de procesos.
Provisión de mecanismos para:
sincronización de procesos
comunicación de procesos
manejo de interbloqueos
Introducción Administración de Memoria
Todos los datos antes y después del procesamiento.
Todas las instrucciones en memoria para ejecutar.
Determina que hay en memoria cuando es necesario optimizar la utilización de CPU y el tiempo de respuesta a los
Actividades de la administración de memoria:
Lleva control de que partes de la memoria están siendo usadas y por quien.
Decide que procesos cargar cuando hay espacio de memoria disponible.
Ocupa y desocupa espacio de memoria cuando necesite.
Sistemas Operativos – Introducción JRA © 2009
Introducción
Administración del almacenaje
El SO provee una visión lógica y uniforme del almacenaje de información
Hace abstracción de las propiedades físicas a una unidad lógica de almacenaje –archivo.
Cada medio es controlado por un dispositivo (p.e. disco, cinta, etc)
Propiedades variables incluyen velocidad de acceso, capacidad, método de acceso (secuencial o al azar)
Sistemas Operativos – Introducción JRA © 2009
Introducción
Administración del almacenaje (cont.)
Administración del Sistema de Archivos
Los archivos, usualmente están organizados en directorios
El control de acceso en la mayoría de los sistemas determina quien puede acceder a que
Las actividades del SO incluyen:
Creación y destrucción de archivos y directorios.
Soporte de primitivas para el manejo de archivos y directorios.
Mapeo de archivos sobre el almacenaje secundario.
Respaldo sobre medios de almacenajes estables .
Sistemas Operativos – Introducción JRA © 2009
Introducción
Administración de Almacenaje Secundario
Los discos son usados para almacenar datos que no entran en memoria principal o para datos que tienen que ser guardados un largo período de tiempo.
Su administración es de vital importancia.
La velocidad de operación de la computadora dependen del subsistema de discos y sus algoritmos.
Sistemas Operativos – Introducción JRA © 2009
Introducción
Administración de Almacenaje Secundario
Las actividades del SO:
Administración del espacio libre
Alocación del almacenaje
Planificación del disco (no hoy en día ….)
Algunos tipos de almacenajes no necesitan ser rápidos:
Almacenaje terciario como el óptico y las cintas magnéticas
Pero aún así deben ser administrados.
Varian entre WORM (write-once, read-many-times) y RW (read-write)
Introducción Subsistema de E/S
Uno de los propósitos del SO es esconder las peculiaridades de los dispositivos de hardware de los usuarios.
Los subsistemas de E/S son responsables de:
Administración de memoria de las E/S incluyendo el buffering(almacena datos temporariamente mientras están siendo transferidos), caching(almacena partes de datos en almacenamiento rápido por rendimiento), spooling(el solapado de la salida de un job con la entrada a otros)
Interfaz general de drivers de dispositivos.
Drivers específicos para dispositivos de hardware
Introducción Protección y Seguridad
Protección – mecanismo para controlar el
acceso de procesos o usuarios a recursos definido por el SO
Seguridad– defensa del sistema contra ataques
internos y externos
Amplio rango, incluyendo DoS, worms, virus, robo de identidad, robo de servicios
Sistemas Operativos – Introducción JRA © 2009
Protección y Seguridad (cont.)
Los Sistemas generalmente primero distinguen entre usuarios para determinar quien puede que:
Identidad de usuarios (ID de usuarios, IDs de
seguridad) incluye nombre y número asociado, uno por usuario
El ID de usuario se asocian con todos los archivos, procesos de ese usuario para determinar el control de acceso
Identificador de grupo (ID de grupo) permite definir a un conjunto de usuarios controlar el manejo, también asociado con cada proceso, archivo
Escalamiento de privilegios permite al usuario cambiar a un ID efectivo con más derechos
Sistemas Operativos – Introducción JRA © 2009
Ambientes de Computación
Computadora Tradicional
Borrosa en el tiempo
Ambiente de oficina
PCs conectadas a una red, terminales conectados mainframe o minicomputadoras proveyendo procesamiento en lotes y tiempo compartido
Ahora portales permitiendo conexión en red y sistemas remotos acceder a los mismos recursos.
Redes hogareñas
Usados como sistemas simples, luego modems
Ahora firewalls y redes
Sistemas Operativos – Introducción JRA © 2009
Introducción
Ambientes de Computación (Cont.)
Computación Cliente-Servidor
Terminales “bobos” suplantados por PCs
Muchos sistemas, ahora servidores, responden a requerimientos generados por los clientes
El servidor provee una interfaz al cliente que requiere el servicio (p.e. base de datos)
El servidor de archivos provee una interfaz para que clientes almacenen y recuperen archivos
cliente cliente cliente cliente
servido r
red
Sistemas Operativos – Introducción JRA © 2009
Introducción
Computación Peer-to-Peer (P2P)
Otro modelo de sistema distribuido
P2P no distingue entre clientes y servidores
Todos los nodos son considerados peers
Cada uno puede actuar como cliente, servidor o ambos
El Nodo debe agregarse a la red P2P
Registra su servicio con un servicio central de búsqueda sobre la red o
Requerir por un broadcast un servicio y responder a los requerimientos por servicio via protocolo de descubrimiento.
Ejemplos incluyen Napster y Gnutella
Introducción
Computación basada en la Web
La Web se ha convertido ubicua
Las PCs son los dispositivos que prevalecen
La mayoría de los dispositivos están en red para tener acceso a la web
Nueva categoría de dispositivos para manejar el tráfico de la web entre servidores similares: balanceadores de carga.
El uso de SOs como Windows 95, lado del cliente, han evolucionado hacia Linux y Windows XP, Vista y Windows 7 los cuales pueden ser clientes y servidores