Download Módulo 2

Document related concepts

Proceso de arranque en Linux wikipedia , lookup

Sistema operativo wikipedia , lookup

Núcleo (informática) wikipedia , lookup

Anillo (seguridad informática) wikipedia , lookup

Sistema operativo móvil wikipedia , lookup

Transcript
Estructuras de Sistemas Operativos
Servicios de Sistemas operativos
Estructura del Sistema
Operativo
Interfaz de Usuario del Sistema Operativo
Llamadas a Sistema
Tipos de Llamadas a Sistema
Programas de Sistemas
Diseño e Implementación de un Sistema Operativo
Estructura de un Sistema Operativo
Módulo 2
Máquinas Virtuales
Depuración de un Sistema Operativo
Generación de un Sistema Operativo
Boot del Sistema
Sistemas Operativos – Estructura de Sistemas Operativos
JRA © 2009
Objectivos
Describir los servicio de un sistema operativo que
Servicios del Sistema Operativo
Un conjunto de servicios del SO proveen funciones que son útiles al
usuario:
se ofrecen a usuarios, procesos y otros sistemas.
Discutir las distintas formas de estructurar un
sistema operativo.
Varían
operativos, personalizados y como se inician.
Sistemas Operativos – Estructura de Sistemas Operativos
Una Visión de los Servicios de un Sistema Operativo
entre Command-Line (CLI), Graphics User Interface (GUI),
Batch
Explicar como son instalados los sistemas
JRA © 2009
Interfaz de Usuario – Casi todos los SOs tienen una interfaz de usuario
(UI)
Ejecución de Programas- El sistema debe poder cargar un programa en
memoria y ejecutarlo, terminarlo en forma normal o anormal (indicando
el error).
Operaciones de E/S - Un programa ejecutando puede requerir E/S, las
cuales pueden involucrar un archivo o un dispositivo de E/S.
Manipulación del Sistema de Archivos - El sistema de archivos es de
particular interés. Obviamente el programa necesita leer y escribir
archivos y directorios, crearlos y borrarlos, borrarlos, listar información
de archivos y la administración de permisos.
Sistemas Operativos – Estructura de Sistemas Operativos
JRA © 2009
Servicios del Sistema Operativo (Cont)
Un conjunto de servicios de SO provee funciones que son útiles al
usuario (Cont):
Comunicaciones – Los procesos pueden intercambiar información, en
la red
Las
comunicaciones pueden ser vía memoria compartida o por
medio de pasaje de mensajes (los paquetes son movidos por el SO)
Detección de errores – Los SOs necesitan estar constantemente al
margen de errores.
Pueden
ocurrir en la CPU y hardware de memoria, en dispositivos
de E/S, en programas de usuario
Para
cada tipo de error el SO toma la operación apropiada para
asegurar una computación correcta y consistente
Las
facilidades de depuración pueden mejorar las habilidades del
usuario y programador para hacer eficiente el uso del sistema.
JRA © 2009
Sistemas Operativos – Estructura de Sistemas Operativos
JRA © 2009
Sistemas Operativos – Estructura de Sistemas Operativos
Servicios del Sistema Operativo (Cont)
Otro conjunto de funciones del SO existen para asegurar una
Servicios del Sistema Operativo (Cont)
Otro conjunto de funciones del SO existen para asegurar una
operación eficiente del propio sistema vía recursos
compartidos.
operación eficiente del propio sistema vía recursos
compartidos.
Alocación de Recursos – Cuando corren
concurrentemente múltiples usuarios o múltiples tareas los
recursos deben ser alocados a cada uno de ellos.
Muchos
tipos de recursos - Algunos (tales como ciclos
de CPU, memoria principal y almacenaje de archivos )
pueden tener código especial de alocación, otros (como
dispositivos de E/S) pueden tener código general de
requerimiento y liberación.
Protección y seguridad – Los propietarios de la
información almacenada en sistema de computadoras
multiusuarios o de red pueden querer controlar el uso de
esa información, los cprocesos concurrentes no deben
interferir uno con otro.
Protección
implica asegurar que todos los accesos a
recursos del sistema están controlados.
Seguridad del sistema frente a los de afuera requiere
autenticación, extensión para defender los dispositivos
externos de E/S de intentos de accesos no válidos.
Contabilidad – Lleva la pista como, cuanto y que clases de
recursos de computadora usan los usuarios.
Si
un sistema debe ser protegido y seguro, deben ser
tomadas precauciones pues una cadena es tan fuerte
como el más débil de los eslabones.
Sistemas Operativos – Estructura de Sistemas Operativos
JRA © 2009
Interfaz de Usuario del Sistema Operativo - CLI
La interfaz de líneas de comando (Command Line Interface - CLI)
o intérprete de comando permite entrar comandos en forma
directa
Interfaz de Usuario Gráfica del Sistema Operativo - GUI
Interfaz desktop “amigable”
Algunas
veces implementadas en el kernel, otras como
programas de sistema
A
primer lugar espera un comando del usuario y luego
lo ejecuta
En este último caso, agregar nuevas
características no requiere modificaciones en la
shell.
Sistemas Operativos – Estructura de Sistemas Operativos
JRA © 2009
Intérprete de Comando Bourne Shell
JRA © 2009
Usualmente mouse, teclado y monitor
Los Iconos representan archivos, programas, acciones, etc
Varios botones del mouse sobre objetos en la interfaz causa varias
acciones (proveen información, opciones, ejecuta funciones, abre
directorios (conocidos como carpetas o folder)
Inventada por Xerox PARC
Casi todos los sistemas incluyen interfaces CLI y GUI
Algunas veces están embebidos, otras son solo
nombres de programas
»
JRA © 2009
veces múltiples variantes – shells
En
–
Sistemas Operativos – Estructura de Sistemas Operativos
JRA © 2009
Sistemas Operativos – Estructura de Sistemas Operativos
Microsoft Windows es GUI con una CLI que es una shell de “comando”
Apple Mac OS X como interfaz GUI “Aqua” soportada por un kernel
UNIX por debajo y sus shells disponibles.
Solaris es CLI con una interfaz GUI opcional (Java Desktop, KDE)
Sistemas Operativos – Estructura de Sistemas Operativos
La GUI Mac OS X
JRA © 2009
Sistemas Operativos – Estructura de Sistemas Operativos
Llamadas al Sistema
Son la interfaz de programación a los servicios provistos por el SO
Ejemplo de Llamada a Sistema
Llamada a sistema para copiar el contenido de un archivo a otro.
Tipicamente escritas en lenguajes de alto nivel (C o C++)
Mayoritariamente accedidas por programas vía Application
Program Interface (API) más que por el uso llamadas a sistema
directas
Las tres API más comunes son Win32 para Windows, POSIX API
para sistemas POSIX (incluyendo virtualmente todas las versiones
de UNIX, Linux, y Mac OS X), y Java API para la máquina virtual
Java (JVM)
Sistemas Operativos – Estructura de Sistemas Operativos
JRA © 2009
Ejemplo de una API Standard
Considere la función ReadFile() en la Win32 API—una función para leer de un
archivo
Sistemas Operativos – Estructura de Sistemas Operativos
JRA © 2009
Implementación de Llamadas a Sistema
Tipicamente se asocia un número con cada llamada al sistema
La interfaz de las llamadas a sistema mantiene una tabla indexada de
acuerdo con estos números
La interfaz de las llamadas a sistema invoca la llamada a sistema entendida
en el kernel del SO y retorna el estado de la llamada a sistema y retorna
algún valor
El llamador no necesita conocer nada acerca de como está implementada
la llamada a sistema
JRA © 2009
Solo necesita invocar la API y entender lo que hará el SO como
resultado de la llamada
La mayoría de los detalles de la interfaz del SO están escondidos para
el programador por la API
Una descripción de los f the parámetros pasados a ReadFile()
HANDLE file—el archivo a ser leído
LPVOID buffer—un buffer donde el dato será leído y previamente escrito
DWORD bytesToRead— el número de bytes a ser leídos en el buffer
LPDWORD bytesRead— el número de bytes leídos durante la última lectura
LPOVERLAPPED ovl—indica si es usada una E/S solapada
Sistemas Operativos – Estructura de Sistemas Operativos
Manejada
por librerías run-time (conjunto de funciones construídas
en librerías incluídas con el compilador)
JRA © 2009
Relación API – Llamada a Sistema del SO
Sistemas Operativos – Estructura de Sistemas Operativos
Ejemplo de Librería Standard C
Un programa C invocando la llamada de librería printf(), la cual llama
a la llamada a sistema write()
JRA © 2009
Sistemas Operativos – Estructura de Sistemas Operativos
JRA © 2009
Sistemas Operativos – Estructura de Sistemas Operativos
Parámetros Pasados vía Tabla
Pasaje de Parámetros en Llamadas a Sistema
Frecuentemente es requerida más información que simplemente identificar
la llamada a sistema deseada.
El tipo exacto y la cantidad de información varía de acuerdo al SO la
llamada
X
X: parámetros
Se usan tres métodos para pasar parámetros al SO
El más simple: pasar los parámetros en registros
En algunos casos, puede haber más parámetros que registros
Parámetros almacenados en un bloque, o tabla, en memoria, y la
dirección del bloque pasada como parámetro en un registro.
Es así en Linux y Solaris
Parámetros ubicados , o pushed, en un stack por el programa y popped
del stack por el SO.
Lo métodos por bloque y stack no limitan el número de parámetros a
ser pasados
registro
se usan los
parámetros
desde la
tabla X
load @X
system call 13
Programa de
usuario
JRA © 2009
Sistemas Operativos – Estructura de Sistemas Operativos
JRA © 2009
Tipos Llamadas a Sistema



código para
system call
13
Sistema operativo
Sistemas Operativos – Estructura de Sistemas Operativos
Examples of Windows and Unix System Calls
Control de procesos
Blue box from page 51
Administración de archivos
Administración de dispositivos
Mantenimiento de Información
Comunicaciones
Protección
JRA © 2009
Sistemas Operativos – Estructura de Sistemas Operativos
JRA © 2009
Ejecución MS-DOS
Inicio
Sistemas Operativos – Estructura de Sistemas Operativos
Múltiples Programas Ejecutando en FreeBSD
Programa ejecutando
proceso D
memoria
libre
memoria libre
memoria
libre
proceso C
proceso
intérprete
intérprete
de
comandos
intérprete
de comandos
kernel
kernel
proceso B
kernel
JRA © 2009
Sistemas Operativos – Estructura de Sistemas Operativos
23
JRA © 2009
Sistemas Operativos – Estructura de Sistemas Operativos
Programas de Sistema
Los programas de sistema proveen un medio conveniente para el
Programas de Sistema
Proveen un medio conveniente para el desarrollo de programas y su
ejecución
desarrollo de programas y ejecución. Pueden ser divididos en:
Manipulación de archivos
Información de estado
Administración de archivos - Crea, borran, copian, renombran, imprimen,
Modificación de archivos
Soporte de lenguajes de programación
vuelcos, listan, y generallmente manipulan archivos y directorios
Información de estado
Carga de programas y ejecución
Comunicaciones
Algunos requieren del sistema información - fecha, hora, cantidad de
memoria disponible, espacio de disco, número de usuarios
Otros proveen detalles de rendimiento, bitácoras e información de
depuración
Tipicamente estos programas dan forma e imprimen salidas a
terminales o a otros dispositivos de salida.
Algunos sistemas implementan un registro - usado para almacenar y
recuperar información de configuración
Programas de aplicación
La visión que tienen la mayoría de los usuarios del sistema
operativo está dada por los programas de sistema y no por las
llamadas a sistema (system calls).
Sistemas Operativos – Estructura de Sistemas Operativos
JRA © 2009
Diseño e Implementación de un Sistema Operativo
El diseño e implementación de SO no está estructurado pero hay
algunos enfoques han resultado exitosos
Editores de texto crean y modifican archivos
Comandos especiales para buscar contenidos de archivos o realizar
transformaciones de texto
Soporte de lenguajes de programación - Compiladores, ensambladores,
depuradores e intérpretes
Carga y ejecución de programas – Cargadores absolutos, cargadores
reubicables, editores de enlace, y cargadores de overlay, sistemas
depuradores para lenguajes máquina y alto nivel
Sistemas Operativos – Estructura de Sistemas Operativos
JRA © 2009
Programas de Sistema (cont)
Modificación de archivos
La estructura interna de los diferentes SOs puede variar
ampliamente
Se comienza por definir los objetivos y las especificaciones
Afectado por la elección del hardware, tipo de sistema
Objetivos de los Usuarios y los objetivos del Sistema
Comunicaciones – Proveen el mecanismo para crear conexiones virtuales
Objetivos de los Usuarios – El SO debe ser conveniente para su
uso, fácil de aprender, confiable, seguro y rápido
Objetivos del Sistema – El SO debería ser fácil de diseñar,
implementar y mantener, también flexible, confiable, libre de
errores y eficiente
entre procesos, usuarios y sistemas de cómputo
Permite a los usuarios enviar mensajes, navegar páginas web, enviar
mensajes de correo electrónico, conectarse remotamente, transferir
archivos de una máquina a otra.
Sistemas Operativos – Estructura de Sistemas Operativos
JRA © 2009
Algunos de ellos son simples interfaces a llamadas a sistema, otros son
considerablemente más complejos
Sistemas Operativos – Estructura de Sistemas Operativos
JRA © 2009
Estructura Simple
Diseño e Implementación de un Sistema Operativo
Importante principio de separación
MS-DOS – escrito para proveer máxima funcionalidad en el menor
espacio
Política: ¿Qué deberá hacerse?
Mecanismo: ¿Cómo hacerlo?
Los mecanismos determinan como hacer algo, las políticias deciden
que debe hacerse
JRA © 2009
No está dividido en módulos
Aunque MS-DOS tiene cierta estructura, sus interfaces y niveles
de functionalidad no están bien separados
La separación de política de mecanismo es un principio muy
importante, permite máxima flexibilidad si las decisiones
políticas son cambiadas más tarde
Sistemas Operativos – Estructura de Sistemas Operativos
JRA © 2009
Sistemas Operativos – Estructura de Sistemas Operativos
Capas de la Estructura MS-DOS
Enfoque por Capas
El sistema operativo está dividido en un número de capas
(niveles), cada una construída sobre el tope de otra. La capa
inferior (nivel 0), es el hardware; la mas alta (capa N) es la
interfaz de usuario.
programa de
aplicación
En forma modular, las capas son seleccionadas de manera que
cada una usa funciones (operaciones) y servicios de las capas
inferiores.
programa del sistema
residente
drivers de dispositivos en
MS-DOS
drivers de dispositivos en ROM
BIOS
JRA © 2009
Sistemas Operativos – Estructura de Sistemas Operativos
UNIX
Estructura de UNIX
UNIX – está limitado por la funcionalidad del hardware, el sistema
USUARIOS
operativo UNIX original tenía una estructura limitada.
El SO UNIX consiste de dos partes separables.
shells y comandos
compiladores e intérpretes
librerías de sistema
interfaz de system-call al kernel
signals
manejo terminal
sistema I/O caracter
drivers terminal
sistema de archivos
swapping
sistema I/O bloque
drivers disco y cinta
32
Sistemas Operativos – Estructura de Sistemas Operativos
JRA © 2009
Programas de sistema
El kernel
Consiste
de todo lo que esta debajo de la interfaz de los
system calls y encima del hardware
Contiene el sistema de archivos, la planificación de CPU,
manejo de memoria, y otras funciones del sistema operativo;
un gran número de funciones en un solo nivel.
planificación CPU
reemplazo de páginas
demanda de páginas
memoria virtual
interfaz kernel al hardware
controladores terminal
terminales
JRA © 2009
controladores disp
discos y cintas
controladores memoria
memoria física
Sistemas Operativos – Estructura de Sistemas Operativos
Sistema Operativo por Capas
34
Sistemas Operativos – Estructura de Sistemas Operativos
JRA © 2009
Sistema Operativo por Capas
Capa
M
nuevas
operaciones
operacion
es ocultas
Capa
M-1
operaciones
existentes
JRA © 2009
Sistemas Operativos – Estructura de Sistemas Operativos
JRA © 2009
Sistemas Operativos – Estructura de Sistemas Operativos
36
Estructura de Sistema Microkernel
Estructura de Mac OS X
Mueve tanto como se pueda al espacio de usuario
Las comunicaciones tienen lugar entre módulos de usuarios por
Ambiente de aplicaciones
y servicios comunes
medio de pasajes de mensajes
Beneficios:
Más fácil de extender
Más fácil de portar el SO a nuevas arquitecturas
Mas confiable (menos código corre el el modo kernel)
Más seguro
Detrimentos:
Sobrecarga de rendimiento en la comunicación del espacio de
usuario al espacio de kernel
Sistemas Operativos – Estructura de Sistemas Operativos
JRA © 2009
JRA © 2009
Módulos
Sistemas Operativos – Estructura de Sistemas Operativos
Enfoque Modular en Solaris
Los más modernos SOs implementan el kernel en módulos
Usa un enfoque orientado a objetos
Cada componente del núcleo está separado
Los protocolos de comunicación entre ellos son sobre interfaces
conocidas
Cada uno es cargado en la medida que sea necesitado dentro
del kernel
En resumen, similar a capas pero más flexible
Sistemas Operativos – Estructura de Sistemas Operativos
JRA © 2009
Máquinas Virtuales
Una máquina virtual lleva la propuesta por capas a su conclusión
lógica. Trata el hardware y el kernel del sistema operativo como
si fuera todo hardware.
Una máquina virtual provee una interfaz idéntica al hardware
primitivo subyacente.
El sistema operativo crea la ilusión de múltiples procesos, cada
uno ejecutando en su propio procesador con su propia memoria
(virtual).
Cada invitado es provisto con una copia (virtual) de la
JRA © 2009
Historia y Beneficios de las Máqunas Virtuales
Aparecieron comercialmente en las mainframes de IBM en 1972
Fundamentalmente, múltiples ambientes de ejecución (diferentes
Sos) pueden compartir el mismo hardware
Están protejidos uno de otro
Puede permitirse, en forma controlada, compartir archivos
Conmuta uno con otro sistemas físicos vía red
Util para desarrollo, testing
“Open Virtual Machine Format”, un formato standard de máquinas
computadora
JRA © 2009
Sistemas Operativos – Estructura de Sistemas Operativos
virtuales, permite a una VM correr dentro de diferentes plataformas
(host) de máquinas virtuales
Sistemas Operativos – Estructura de Sistemas Operativos
JRA © 2009
Sistemas Operativos – Estructura de Sistemas Operativos
Modelos de Sistema
Para-virtualización
Presenta invitados con un sistema similar pero no idéntico hardware
Máquina virtual
Máquina no virtual
Los invitados deben ser modificados para correr en un hardware
paravirtualizado
Los invitados pueden ser un SO, o en el caso de Solaris 10 las
procesos
aplicaciones corren en containers
procesos
procesos
procesos
Interfaz de
programación
kernel
hardware
JRA © 2009
kerne
l
kernel
kernel
implementación de la
máquina virtual
hardware
Sistemas Operativos – Estructura de Sistemas Operativos
43
Sistemas Operativos – Estructura de Sistemas Operativos
JRA © 2009
Solaris 10 con Dos Containers
JRA © 2009
Sistemas Operativos – Estructura de Sistemas Operativos
Arquitectura de VMware
Sistemas Operativos – Estructura de Sistemas Operativos
JRA © 2009
La Máquina Virtual Java
Depuración del Sistema Operativo
Depuración (debbuging) es encontrar y reparar errores, o bugs
Los SOs generan archivos de log files conteniendo información de error
Fallas de una aplicación puede generarar un vuelco de memoria (core
dump)
Fallas en el SO puede generar un archivo con el vuelco del kernel (crash
dump) conteniendo la memoria del kernel
Más allá de las caídas, la sintonía del rendimiento puede optimizar el
rendimiento del sistema.
La ley de Kernighan: “Depurar es dos veces más duro que escribir el código
en primer lugar. Por lo tanto, si escribe el código tan habilmente como sea
posible, usted es, por definición, no lo suficiente astuto como para
depurarlo.”
La herramienta Dtrace en Solaris, FreeBSD, Mac OS X permite depuración
“en vivo” sobre sistemas de producción
JRA © 2009
Sistemas Operativos – Estructura de Sistemas Operativos
JRA © 2009
Dispara pruebas cuando se ejecuta el código, capturando el estado de
los datos y enviandolos a los consumidores de esas pruebas
Sistemas Operativos – Estructura de Sistemas Operativos
Generación de Sistemas (SYSGEN)
Dtrace en Solaris 10 siguiendo un System Call
Los sistemas operativos son diseñados para ejecutar en
algunas clases de máquinas; el sistema debe ser configurado
para cada sitio de computación específico.
El programa SYSGEN obtiene información concerniente a la
configuración específica del hardware.
Booting – inicio de la computadora por carga del kernel.
Programa Bootstrap – código almacenado en ROM que localiza
el kernel, lo carga en la memoria e inicia su ejecución.
Sistemas Operativos – Estructura de Sistemas Operativos
JRA © 2009
JRA © 2009
Sistemas Operativos – Estructura de Sistemas Operativos
Boot del Sistema
El SO debe poner disponible al hardware, entonces el hardware
puede iniciarlo
Pequeñas piezas de código – bootstrap loader, localiza el
kernel, lo carga en memoria, y lo pone en marcha
A veces es un proceso en dos pasos donde el boot block en
una locación fija carga el bootstrap loader
Cuando se le da energía y se inicializa el sistema, comienza la
ejecución a partir de una dirección fija de memoria
Firmware
JRA © 2009
es usado para contener el código inicial de boot
Sistemas Operativos – Estructura de Sistemas Operativos
Fin del Módulo 2
Módulo 2
50