Академический Документы
Профессиональный Документы
Культура Документы
1 Definición y Concepto
2 Funciones y Características
3 Evolución Histórica
4 Clasificación
6 Núcleo
¿Qué es un Sistema Operativo?
Acercar el sistema computacional al usuario
facilitando su uso.
Usar el hardware de una manera eficiente
La mejor forma de entender un S.O. Es
entender como se construye.
También ayuda a su comprensión el tener una
visión histórica de su desarrollo
Estructura de un Sistema Computacional
El S. O. Es una de las componentes más importantes
de un sistema computacional.
Un Sistema Computacional es una plataforma sobre la
cual se construyen los llamados Sistemas de
Información, factor clave de competitividad en
cualquier organización.
Un Sistema Computacional está compuesto de:
hardware, s.o., aplicaciones
Componentes del sistema de cómputacional
Aplicaciones
Programas de Sistemas
Sistema Operativo
Hardware
Hardware - Proveé los componentes básicos de cómputo (CPU,
memoria, dispositivos de E/S).
Sistema Operativo - Controla y coordina el uso del hardware entre
los varios programas de aplicación para los diferentes usuarios.
Programas de sistemas- Compiladores, Assembler, Editores,
herramientas de Monitoreo y Mantención
Aplicaciones - Bases de datos, Juegos, Navegadores, etc.
Observaciones
No existe una definición precisa de un S.O.
Los S.O. Existen porque existe la necesidad de
resolver problemas usando sistemas
computacionales
Tampoco existe una definición única sobre qué
contiene y qué no contiene un S.O.
Una definición práctica es que un S.O. es el
código qué siempre se ejecuta y acompaña la
ejecución de las aplicaciones
Componentes del Sistema Operativo
Manejador de recursos - administra y aloja
los recursos.
Programa de control - controla la ejecución
de los programas de usuarios y las
operaciones de los dispositivos de
entrada/salida.
Kernel - el programa que corre en todo
momento (todo lo demas es programa de
aplicación).
Por que necesitamos al Sistema Operativo
La introducción de la tecnología de discos entrega una
solución: en vez de leer del disco y escribir a la impresora, la
CPU interactúa directamente con el disco.
Si la CPU necesita leer una tarjeta, lee desde un área del
disco. En forma similar cuando necesita imprimir una línea, la
escribe en el disco
Esta forma de procesamiento se denomina Spooling
(Simultaneous peripheral operation on-line)
Observaciones
El Spooling traslada la entrada y salida de un job con los cálculos
(CPU) de otro job.
Tiene un efecto directo e importante en el desempeño ya que
mantienen a la CPU y los dispositivos trabajando a su máxima
velocidad
Evolución Historica de los Sistemas Operativos
Impresora
Cinta
Lector
Impresora
Disco
Procesador Central
Memoria CPU
Canal1 Canal2 Canal3
Evolución Historica de los Sistemas Operativos
Monitor Residente
Tratamiento de
Interrupciones
Controladores de
Dispositivos MONITOR
RESIDENTE
Secuenciador de Jobs
Intérprete del Lenguaje
de control
Límite
Area de programa
de usuario
Evolución Historica de los Sistemas Operativos
Evolución (3): década 1960_1970
Sistemas de Multiprogramación.
Monitor residente comienza a llamarse Sistema Operativo.
Asignación de tiempo de ejecución por ráfagas de CPU. Una
ráfaga es un período de tiempo de uso de CPU y limitado por
tiempos de espera.
Este debe decidir qué jobs hace avanzar, tratando de
maximizar el rendimiento del computador. Esto se conoce
como job scheduling.
Se introducen los primeros esquemas de administración de
memoria con particiones y espacio de direcciones lógicos.
Ventajas: CPU se mantiene mayor tiempo ocupado.
Desventajas:
Ausencia de protección entre jobs (en primeras versiones).
Hardware y S.O. Son más complejos.
Ejemplos: IBM Systen/360, OS/370.
Sistemas Multiprogramados
El Spooling mantiene una estructura de datos con todos los jobs
listos para ser ejecutados en un área de disco.
Esta estructura permite seleccionar cualquier job del conjunto. Con
esta estructura es posible mejorar la utilización de la CPU.
La selección de un job para su ejecución de un conjunto Se
denomina itineración de job
La itineración de jobs permite la mutiprogramación.
La multiprogramación aumenta la utilización de la CPU al
organizar los jobs de manera tal que la CPU siempre tenga algún
job que ejecutar.
Para esto se mantienen los jobs en memoria principal. El S.O.
Selecciona un job, lo ejecuta y cuando el job debe esperar por
E/S, se selecciona otro job
Evolución Historica de los Sistemas Operativos
Monoprogramación
Ráfaga
de CPU
corriendo espere corriendo
Exit
Ready Running
(Listo) (Corriendo)
Wake-up
(despierta) Bloqueado
Waiting (Read, Write, etc.)
(Esperando)
Evolución Historica de los Sistemas Operativos
*nextPCB
Registros CPU
PC
Información
administración
de memoria
Información
administración
de E/S
Núcleos monolíticos. Todas las funciones y servicios del sistema operativo están dentro del núcleo.
Evolución (5)
Computadores Personales.
Aparece el microprocesador.
Sistema Monousuario.
OS/2, Windows.
Problema: Dificultad para compartir recursos.
Evolución Historica de los Sistemas Operativos
1980’s. Redes
Ventajas:
Compartición de recursos
Incremento en la velocidad de cómputo
compartición de carga
Confiabilidad
Comunicación
Evolución Historica de los Sistemas Operativos
Ventajas:
Incremento de Rendimiento (throughput)
Economica
Incremento en la confiabilidad
Evolución Historica de los Sistemas Operativos
1990`s-2000.
Ejemplos:
– Sistemas de Control Industrial
– Monitoreo médico
– Control de encendido de motores
– Sistemas de defensa
• El procesamiento se debe hacer con restricciones de tiempo. En caso contrario se producen
fallas
Funciones del sistema operativo
• Gestor de recursos (cpu, memoria, ...)
– Asignación y recuperación de recursos
– Protección de los usuarios
– Contabilidad/monitorización
• Máquina extendida (servicios)
– Ejecución de programas (procesos)
– Órdenes de E/S
– Operaciones sobre archivos
– Detección y tratamiento de errores
• Interfaz de usuario
– Shell
Niveles del sistema operativo
Por su Estructura Interna:
Por la forma en que ofrecen sus servicios:
Por la forma en que ofrecen sus servicios:
SO de Red: Son aquellos sistemas que mantienen dos o mas
computadoras unidades a través de algún medio de comunicación
(físico o no), con el fin de poder compartir los distintos recursos y
la información del sistema
SO Distribuidos: Colección de sistemas autónomos capaces de
comunicación y cooperación mediante interconexiones hardware y
software.
Proporcionan abstracción de maquina virtual a los usuarios.
Permiten distribuir trabajos, tareas o procesos entre un conjunto
de procesadores, el cual pueden encontrarse en un equipo o en
distintos equipos.
Clasificación de los Sistemas Operativos
Sistemas Operativos por Servicios:
Por el numero de Usuarios:
Monousuarios: Sistemas que atienden a una única tarea de usuario.
Multiusuarios: Se emplean en redes y cumplen simultáneamente las
necesidades de dos o mas usuarios, que comparten unos mismos recursos
Por el numero de Tareas:
Monotareas: Solo pueden manejar un proceso en cada momento, es decir
ejecutan las tareas una a una.
Multitareas: Pueden procesar varias tareas al mismo tiempo.
Por el Numero de Procesadores:
Uniproceso: Se mantiene un solo procesador
Multiproceso: Pueden manejar varios procesadores a la vez,
compartiendo la misma memoria y reloj
• Simétricos: Una CPU principal retiene el control global de la
computadora, así como la de los procesadores.
• Asimétricos : No existe una CPU controladora única. Cada
procesador tiene asignado una tarea especifica.
Estructura del sistema operativo
En función de esta estructura se pueden agrupar los SO en dos grandes
grupos: monolíticos y estructurados.
Sistemas operativos monolíticos
● No tiene una estructura clara y bien definida.
● Todos sus componentes se encuentran integrados en un único programa (el SO)
que se ejecuta en un único espacio de direcciones.
● Todas las funciones que ofrece el SO se ejecuta en un modo núcleo.
● Estos SO han surgido, normalmente, de SO sencillos y pequeños a los que se les
ha ido añadiendo un número mayor de funcionalidades.
● Esto les ha hecho evolucionar y crece hasta convertirlos en programas grandes y
complejos formados por muchas funciones situadas todas ellas en un mismo nivel.
Ejemplos claros de este tipo de sistemas son MS-DOS y UNIX
● El problema que plantean este tipo de SO radica en lo complicado que es
modificarlo para añadir nuevas funcionalidades y servicios. Añadir una nueva
característica implica la modificación de un gran programa, compuesto por miles de
líneas de código fuente y funciones
Estructura del sistema operativo
Estructura simple
Monousuarios con funcionalidad básica (e.g.
computadores personales antiguos)
No existen protecciones ni multiprogramación
Cualquier falla de programación hace caer al
sistema
Actividad asincrónica se maneja a través
derutinas activadas por interrupción (difícil
programar)
MS-DOS – escrito para proveer la mayor
funcionalidad en el menor espacio
No tiene módulos
Aunque MS-DOS tiene algo de estructura, sus
interfaces y niveles de funcionalidad no están
bien separados
Estructura del sistema operativo
UNIX – limitado por funcionalidad
del hardware, el SO UNIX original
tenía una estructura limitada, con
dos partes separadas
Programas del sistema
El kernel
Todo abajo de la interfaz
de llamadas al sistema y
arriba del hardware
Provee: sistema de
archivos, CPU scheduling,
manejo de memoria y otras
operaciones del SO. Un
gran número de funciones
para una capa.
Estructura del sistema operativo
Sistemas operativos estructurados
Cuando se quiere dotar de estructura a un SO, normalmente
se recurre a dos tipos de soluciones: sistemas por capas y
sistemas cliente- Servidor.
Sistemas por capas
En un sistema por capas, el SO se organiza como una
jerarquía de capas, donde cada capa ofrece una interfaz
clara y bien definida a la capa superior y solamente
utiliza los servicios que le ofrece la capa inferior.
La principal ventaja que ofrece este tipo de estructuras
es la modularidad y la ocultación de la información.
Una capa no necesita conocer como se ha implementado
la capa sobre la que se construye, únicamente necesita
conocer la interfaz que ofrece. Esto facilita enormemente
la depuración y verificación del sistema, puesto que las
capas se pueden ir construyendo y depurando por
separado.
Estructura del sistema operativo
5 El operador
3 Control de entrada/salida
Sistemas Operativo THE
2 Comunicación operador-proceso
OS/2
Estructura del sistema operativo
Modelo cliente-servidor o micronúcleo
En este tipo de modelo, el enfoque consiste en implementar la
mayor parte de los servicios y funciones del SO en procesos de
usuario, dejando solo una pequeña parte ejecutando en modo
núcleo. A esta parte se le denomina micronúcleo y a los procesos
que ejecutan el resto de funciones se les denomina servidores.
No hay una definición clara de las funciones que debe llevar a
cabo un micronúcleo. La mayoría incluyen la gestión de
interrupciones, gestión básica de procesos y de memoria y
servicios básicos de comunicación entre procesos. Para
solicitar un servicio en este tipo de sistemas, como por ejemplo
crear un proceso, el proceso de usuario (proceso denominado
cliente) solicita el servicio al servidor del SO correspondiente, en
este caso al servidor de procesos. A su vez, el proceso servidor
puede requerir los servicios de otros servidores, como es el caso
del servidor de memoria. En este caso, el servidor de procesos se
convierte en cliente del servidor de memoria.
Estructura del sistema operativo
Modelo cliente-servidor o micronúcleo continuacion…
Beneficios:
Más fácil de extender un microkernel
Más fácil portar el SO a otras arquitecturas
Más confiable (menos código se ejecuta en modo kernel)
Más seguro
Problemas:
Sobrecarga de comunicación entre los espacios de usuario y
kernel
Ejemplos: windows NT, mac OS
Estructura del sistema operativo
Windows NT
Estructura de Mac OS X
Estructura del sistema operativo
Estructura del sistema operativo
Estructura del sistema operativo
Módulos
La mayoría de los SO modernos implementan módulos de
kernel
Enfoque orientado a objetos
Cada componente base está separado
Cada uno habla con los otros a través de interfaces
comunes
Cada uno puede cargarse (al kernel) conforme se necesita
En general, similar a las capas, pero más flexible
Estructura del sistema operativo
Enfoque modular en Solaris
Estructura del sistema operativo
Máquinas virtuales
Una máquina virtual lleva el enfoque de capas a su conclusión lógica.
Trata el hardware y el kernel del SO como si fueran hardware ambos
Una máquina virtual ofrece una interfaz idéntica para cualquier hardware
que esté abajo
El sistema operativo crea la ilusión de múltiples procesos, cada uno
ejecutando en su propio procesador con su propia memoria (virtual)
Los recursos de la computadora física se comparten para crear las
máquinas virtuales
CPU scheduling produce la ilusión de que los usuarios tienen su
propio procesador
Colas (spooling) y el sistema de archivos pueden ofrecer lectores
de tarjetas e impresoras virtuales
Una terminal de usuario en un sistema de tiempo compartido, sirve
como la máquina virtual de la consola del operador
Estructura del sistema operativo
Máquinas virtuales cont...
El concepto de máquinas virtuales provee protección
completa de los recursos del sistema, ya que cada
máquina virtual está aislada de las demás. Sin
embargo, por el aislamiento no pueden compartir
recursos directamente.
Una máquina virtual es un excelente vehículo para
hacer investigación en SO. El desarrollo se lleva a
cabo en la máquina virtual, sin afectar la operación
normal del sistema.
El concepto de máquina virtual es difícil de
implementar debido al gran esfuerzo de proveer un
duplicado exacto de la máquina.
Estructura del sistema operativo
Ejemplos de maquinas Virtuales
IBM VM: ofrecía a cada usuario su propia máquina virtual no
multiprogramada; las m.v. se planificaban con tiempo
compartido.
Java: los programas compilados en Java corren sobre una
máquina virtual (JVM).
VMware: capaz de ejecutar al mismo tiempo varias
sesiones windows, Linux, Mac OS X, etc. sobre plataforma
PC o Mac.
Nachos: S.O. que se ejecuta en una máquina virtual MIPS,
cuyo emulador corre sobre Unix.
Estructura del sistema operativo
Ejemplo Maquina Virtual
Ambiente de desarrollo Java
Estructura del sistema operativo
Sistemas Operativos basados en JAVA
JavaOS: proyecto abandonado por SUN
(reemplavado por las API de JME).
Jnode.– Máquina Virtual y Sistema Operativo http://
www.jnode.org/
Jx.– Kernel mas AWT
http://www4.informatik.uni-erlangen.de/Projects/JX/
Estructura del sistema operativo
jnode
Estructura del sistema operativo
JX
Estructura del sistema operativo
El sistema operativo JX
Núcleo del sistema operativo
Proporciona la funcionalidad básica del SO
Es la parte más dependiente del hw de todo el SO
Suele permanecer en el almacenamiento primario
porque su código se ejecuta muy frecuentemente
proporciona una serie de servicios a las capas
superiores del sistema. Procesos usuario
Proceso S.O.
NUCLEO
| Hardware
Núcleo del sistema operativo
Funciones básicas del núcleo
Proporcionar el entorno adecuado para la existencia
de procesos
Tratamiento de interrupciones
Conmutación del procesador entre procesos
(soporte al diagrama de estados)
Mecanismos básicos de comunicación y
sincronización entre procesos
Carga inicial y activación de la configuración del
sistema
Núcleo del sistema operativo
Tratamiento de interrupciones:
El núcleo transforma las interrupciones en eventos de más
alto nivel (p. ej. mensajes)
El núcleo determina qué proceso espera una interrupción y
el envía un mensaje
Cuando el hardware detecta una interrupción, el control se
transfiere a este módulo,
el cual analiza el carácter de la interrupción y toma las
acciones apropiadas:
Transferir el control a otro módulo del S. O.
Iniciar otro programa
Continuar la ejecución del programa interrumpido
Núcleo del sistema operativo
Conmutación de CPU entre procesos
Los procesos de usuario pasan por varios estados
durante su tiempo de vida en el sistema
El núcleo proporciona los mecanismos de conmutación
de la CPU entre procesos
El núcleo transfiere el control al programa que el
planificador ha determinado para que sea el próximo en
ejecutarse.
La comunicación entre programas se logra manteniendo
una cola de mensajes en espera para cada uno de los
programas activos.
El núcleo recibe los mensajes y los va almacenando en la
cola apropiada al destino en cuestión, para distribuirlos
cuando el programa destino se active.
Núcleo del sistema operativo
Núcleo del sistema operativo
Comunicación y sincronización entre procesos
El núcleo proporciona mecanismos para que los
procesos puedan intercambiar información y
sincronizarse
Mecanismos:
Señales
Semáforos
Mensajes
RPCs (remote procedure calls)