Módulo 2
Estructura del Sistema
Operativo
Estructuras de Sistemas Operativos
Servicios de Sistemas operativos
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áquinas Virtuales
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014
Objectivos
Describir los servicio de un sistema operativo que se
ofrecen a usuarios, procesos y otros sistemas.
Discutir las distintas formas de estructurar un sistema
operativo.
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014
Servicios del Sistema Operativo
Un conjunto de servicios del SO proveen funciones
que son útiles al usuario:
Interfaz de Usuario
Ejecución de Programas
Operaciones de E/S
Manipulación del Sistema de Archivos
Comunicaciones
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014
Una Visión de los Servicios de un Sistema Operativo
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
.
Alocación de Recursos
Contabilidad
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014
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, pueden ser por línea de comandos o gráficas:
Algunas veces implementadas en el kernel, otras como
programas de sistema
A veces múltiples variantes –
shells
En primer lugar espera un comando del usuario y luego
lo ejecuta
–
Algunas veces están embebidos, otras son solo
nombres de programas
»
En este último caso, agregar nuevas características
no requiere modificaciones en la shell.
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014
Interfaz de Usuario del Sistema Operativo - GUI
Solaris – entorno CDE (Common Desktop Environment)
Interfaz de Usuario del Sistema Operativo - GUI
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014
Interfaz de Usuario del Sistema Operativo - Touch
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014
Llamadas al Sistema
Son la interfaz de programación a los servicios provistos por el
SO
Típicamente 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 KMC-JRA © 2014
Relación API – Llamada a Sistema del SO
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
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
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014
Parámetros Pasados vía Tabla
X: parámetros
X
load @X
código para
system call
13
registro
se usan los
parámetros
desde la
tabla X
Sistema operativo
Programa de
usuario
system call 13
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014
Tipos Llamadas a Sistema
Control de procesos
create process, terminate process
end, abort
load, execute
get process attributes, set process attributes
wait for time
wait event, signal event
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014
Tipos Llamadas a Sistema
Administración de archivos
create file, delete file
open, close file
read, write, reposition
get and set file attributes
Administración de dispositivos
request device, release device
read, write, reposition
…
Tipos Llamadas a Sistema
Mantenimiento de Información
get time or date, set time or date
get system data, set system data
…
Comunicaciones
create, delete communication connection
send, receive messages
create and gain access to memory regions (segmentos de memoria)
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014
Ejemplos de Llamadas a Sistema
Sistemas Operativos – Estructura de Sistemas Operativos
KMC-JRA © 2014
20
Ejecución MS-DOS
Inicio Programa ejecutando
memoria
libre
memoria
libre
kernel
proceso
kernel
intérprete
de comandos
intérprete
de
comandos
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014
Múltiples Programas Ejecutando en FreeBSD
proceso D
intérprete
proceso C
memoria libre
proceso B
kernel
Programas de Sistema
Los programas de sistema proveen un medio conveniente para el
desarrollo de programas y ejecución. Pueden ser divididos en:
Manipulación de archivos
Información de estado
Modificación de archivos
Soporte de lenguajes de programación
Carga de programas y ejecución
Comunicaciones
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 KMC-JRA © 2014
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
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
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
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014
Diseño e Implementación de un Sistema Operativo
Importante principio de separación
Política:
¿Qué deberá hacerse?
Mecanismo:
¿Cómo hacerlo?
Los mecanismos determinan como hacer algo, las políticias
deciden que debe hacerse
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 KMC-JRA © 2014
Estructura Simple
MS-DOS – escrito para proveer máxima funcionalidad en
el menor espacio
No está dividido en módulos
Aunque
MS-DOS
tiene
cierta
estructura,
sus
interfaces y niveles de functionalidad no están bien
separados
Capas de la Estructura MS-DOS
programa de
aplicación
programa del sistema
residente
drivers de dispositivos en ROM
BIOS
drivers de dispositivos en
MS-DOS
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014
UNIX
UNIX – está limitado por la funcionalidad del hardware, el
sistema operativo UNIX original tenía una estructura limitada.
El SO UNIX consiste de dos partes separables.
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.
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014
Estructura de UNIX
signals
manejo terminal
sistema I/O caracter
drivers terminal
sistema de archivos
swapping
sistema I/O bloque
drivers disco y cinta
planificación CPU
reemplazo de páginas
demanda de páginas
memoria virtual
interfaz de system-call al kernel
interfaz kernel al hardware
controladores terminal
terminales
controladores disp
discos y cintas
controladores memoria
memoria física
shells y comandos
compiladores e intérpretes
librerías de sistema
USUARIOS
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014
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.
En forma modular, las capas son seleccionadas de manera
que cada una usa funciones (operaciones) y servicios de las
capas inferiores.
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014
Estructura de Sistema Microkernel
Mueve tanto como se pueda al espacio de
usuario
Las comunicaciones tienen lugar entre módulos de usuarios por
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 en 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 KMC-JRA © 2014
Estructura de Sistema Microkernel
Application
Program
File
System
Device
Driver
Interprocess
Communication
memory
managment
CPU
scheduling
messages messagesmicrokernel
hardware
user
mode
kernel
mode
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014
Sistema Microkernel – Minix 3
Sistemas Modulados
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
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014
Sistemas Modulados
Solaris
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014
Sistemas Híbridos
Los sistemas operativos modernos no presentan un modelo puro.
Los modelos híbridos combinan multiples aproximaciones para
alcanzar rendimento, seguridad, usabilidad.
•
Kernels de Linux y Solaris kernels: en el espacio de
direcciones del kernel presentan características monolíticas,
además
modulación
para
la
carga
dinámica
de
funcionalidades.
•
Windows en su mayoría monolítico, además microkernel
para diferentes subsistemas.
•
Apple Mac OS X híbrido, por capas,
Aqua
UI más el ambiente
de programación
Cocoa.
Kernel formado por un microkernel Mach y partes de BSD
Unix, más un kit de E/S y la carga dinámica de módulos
(llamados extensiones del kernel)
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014
Sistemas Híbridos
graphical user interface
Aqua
application environments and services
kernel environment
Java
Cocoa
Quicktime
BSD
Mach
I/O kit
kernel extensions
BSD
Estructura de Mac OS X
Sistemas Híbridos - iOS
SO de Apple móvil para
iPhone
,
iPad
Estructurado sobre Mac OS X, agregando
funcionalidades para móviles.
No ejecuta directamente aplicaciones Mac
OS.
Cocoa Touch Objective-C API para
desarrollo de aplicaciones.
Media services capa para gráficos, audio y
video.
Core services prove cloud computing, bases
de datos.
Core operating system, basado en el kernel
del Mac OS X.
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014
Sistemas Híbridos - Android
Desarrollado para smartphones y tablets por Open Handset
Alliance (mayoría Google).
Similar la pila al IOS.
Basado sobre un kernel Linux kernel con modificaciones
Provee soporte para procesos, memoria, manejadores de
dispositivos. Agrega administración de la energía
Runtime incluye librería para el conjunto del núcleo y la máquina
virtual Dalvik.
Librerías incluyen frameworks para web browser (webkit), base
de datos (SQLite), multimedia, pequeño libc.
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014
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 es usado para contener el código inicial
de boot
Virtualización
¿Qué es virtual?
Dícese de lo que tiene virtud para producir un efecto, aunque no lo
produce de presente. (diccionario).
Que no tiene existencia real sino aparente (diccionario).
¿Porqué virtualizar?
Reduce el costo e incrementa la eficiencia de los existentes
recursos de hardware
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014
Virtualización
Lograr más en menos tiempo
Ejecute varios sistemas operativos en una sola PC
Reduzca el número de PCs físicos que se requieren
Facilitar la migración de aplicaciones
Agilizar la implementación
Pruebe nuevo software y sistemas operativos antes de su
implementación
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014
Virtualización
Acelerar el desarrollo de aplicaciones
Incremente el aseguramiento de calidad al probar en
diferentes
sistemas
operativos
utilizando
máquinas
virtuales
Reduzca el tiempo para salir al mercado con menos
reconfiguración
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014
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
computadora.
Historia y Beneficios de las Máquinas 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 protegidos 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 virtuales, permite a una VM correr dentro de
diferentes plataformas (host) de máquinas virtuales
Sistemas Operativos – Estructura de Sistemas Operativos
KMC-JRA © 2014
47
Máquinas Virtuales
Máquina no virtual
Máquina virtual
procesos
procesos
procesos
procesos
kernel
kernel
kernel
kernel
hardware
implementación de la
máquina virtual
hardware
Interfaz de
programación
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014
Máquinas Virtuales
Ambiente del
invitado
Ambiente
host
Hardware virtualizado
Aplicaciones del invitado
Sistema operativo del invitado
Controladores del invitado
Sistema operativo host
Controladores del host
Hardware del host
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014
Máquinas Virtuales
Características
Misma arquitectura distintos Sistemas Operativos
Diferentes arquitecturas.
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014
Máquinas Virtuales
Clasificación
Tipo 1 – Hypervisors ejecutan directamente sobre el hardware de la
máquina.
Tipo 2 – Hypervisors ejecutan sobre el sistema operativo host que
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014
Máquinas Virtuales
Tipo 1
Tipo 2
Paravirtualización
Una técnica en la cual el Sistema operativo invitado es
modificado para trabajar en cooperación con el VMM
(Virtual
machine
manager)
para
optimizar
el
rendimiento.
Los invitados deben ser modificados para correr en un
hardware paravirtualizado.
Ventaja – Alcanzar mayor eficiencia en el uso de los
recursos y una capa de virtualización de menor
tamaño.
Sistemas Operativos – Estructura de Sistemas Operativos KMC-JRA © 2014