diseÑo de sistemas operativosumh2812.edu.umh.es/wp-content/uploads/sites/510/2013/02/introds… ·...
TRANSCRIPT
¿Qué es un computador?
[Hamacher96]: “máquina de cálculo electrónica de alta velocidad que
acepta información digitalizada, la procesa atendiendo a una lista de instrucciones que almacena internamente, y produce la
correspondiente información de salida”. [RAE]: “Máquina electrónica, analógica o digital, dotada de una memoria
de gran capacidad y de métodos de tratamiento de la información, capaz de resolver problemas matemáticos y lógicos mediante la
utilización automática de programas informáticos”.
Arquitectura del computador
¿Que es?
(ISA) Juego de Instrucciones: Diseño del conjunto de instrucciones. Interface del computador. Relación con los compiladores.
Organización de la máquina: Unidades funcionales y su interconexión. Transparente al software. Componentes Hardware
Arquitectura del Computador
Introducción
Funciones de un computador: ! Procesamiento de datos. ! Almacenamiento de datos. ! Transferencias de datos entre el computador y el exterior. ! Control de las anteriores operaciones.
La excesiva generalidad de estas funciones se debe a que la especialización funcional de un computador ocurre cuando se programa y no cuando se diseña.
! Sus principales componentes estructurales son: ! Procesador: controla el funcionamiento del computador y procesa los datos. ! Subsistema de memoria: almacena datos. ! Subsistema de entrada/salida: transfiere datos entre el computador y el entorno
externo. ! Ruta de datos: interconexión entre las diferentes partes.
Estructura del computador
! Monoprocesador ! Multiprocesador ! Multicomputador
UNIDAD DE CONTROL
UN
IDA
D d
e EN
TRA
DA
/SA
LID
A
PERIFÉRICOSRegistros
Contador de programaRegistro de instrucción
Puntero de pila
UNIDADARITMÉTICA
MEMORIAPRINCIPAL
ROM
Estado
Datos
Código
Necesidad SO
Necesidad: ! El manejo del hardware es una tarea muy complicada. ! Es necesario dar al usuario del ordenador un software
que realice y coordine las operaciones de los elementos del sistema eficientemente.
! Además debe presentar una interfaz de fácil manejo y entendimiento. " Surge el Sistema Operativo.
Modelo de programación del computador
• Modelo de programación • Juego de instrucciones (usuario y núcleo)
0
2 -132
2 -116
Mapa dememoria Mapa de
E/SJuego de Instrucciones
0
Registros de datos
Registros de dirección
Puntero de pila de usuarioPuntero de pila de sistemaContador de programa
Registro de estadoModo Traza
Octeto deSistema
Octeto deUsuarioNegativo
Sistema/Usuario
de
Desbordamiento
Máscara
Cero
Extensión
Interrupciones
Acarreo
1514
7
3
13
5
9
11
1
6
10
12
2
4
8
0
T
N
S
I1
V
I2
Z
X
I0
C
08 716 1531D0D1D2D3D4D5D6D7
A0A1A2A3A4A5A6A7A7'
Modelo de programación de usuario y de núcleo
Niveles de ejecución
0
2 -116
Mapa deE/S Juego de
Instrucciones
2 -132
Mapa dememoria
0
Registro de estado
Registro de estado
Octe
to d
eSi
stem
aO
cteto
de
Usu
ario
1514
7
3
13
5
9
11
1
6
10
12
2
4
8
0
T
N
S
I1
V
I2
Z
X
I0
C
D0D1D2D3D4D5D6D7
A0A1A2A3A4A5A6A7A7'
Juego de Instrucciones
2 -131
Mapa dememoria
Modelo de programación de usuario Modelo de programación de núcleo
0
Octe
to d
eU
suar
io
7
3
5
1
6
2
4
0
N
VZ
X
C
D0D1D2D3D4D5D6D7
A0A1A2A3A4A5A6A7
Componentes de un computador
CPU Memoria
Controlador
Bus
HD
Cada unidad de un computador (CPU, memoria, disco duro, monitor, ratón, etc…) necesita un programa de control.
Todas estas partes deben cooperar transparentemente y eficazmente y de forma conveniente a los usuarios
COMO? SISTEMA OPERATIVO
PROGRAMAS
Operating Systems: A Modern Perspective, Chapter 1
El SO como guía
The OS coordinates the sharing and use of all the components in the computer
Evolución de los SO
# Primera generación (1943-1955): # No existe S.O. # El programador realiza todo el trabajo
# Segunda generación (1956-1963): # Programa Monitor,
$ Identifica e interpreta las tarjetas de control $ Realiza el control de trabajos
# Procesamiento de trabajos en lotes.
Evolución de los SO
# Tercera generación (1963-1979): # Perfeccionamiento del sistema de trabajos por lotes # Permiten la multiprogramación # Memoria virtual.
# Cuarta generación (1980- .. ): # Aumento de la seguridad, velocidad de proceso y
prestaciones. # S.O. de red. # S.O. distribuidos.
Evolución de los SO. Evolución 1
Procesamiento en serie (1940-50): " El usuario escribía los programas en código máquina ⇒ controlaba el HW directamente
" El operador era el encargado de insertar los trabajos de cada usuario de forma manual
" Tableros enchifables o tarjetas perforadas " Problemas: planificación y tiempo de preparación
Evolución de los SO. Evolución 1
! No había sistema operativo. ! Las operación con estas máquinas era desde una consola
consistente en unos indicadores luminosos, unos conmutadores, un dispositivo de entrada y una impresora.
! Planificación por parte del programador. ! La preparación incluía cargar un compilador, un programa
fuente, salvar el programa compilado y, por último, cargar y montar.
Evolución – 2. Por lotes (batch)
Procesos por lotes (batch, 50’s): ! Usuario ≠ Operador ! Cintas magnéticas o tarjetas perforadas ! Programas escritos en ensamblador o un lenguaje de
alto nivel (FORTRAN) ! Se basa en el uso de un “monitor” no residente
totalmente, que gestionaba el problema de la planificación
! El tiempo de inicio se reducía para trabajos similares
Evolución – 2. Por lotes (batch)
Monitores: ! Software que controla los programas que
están en funcionamiento. ! Los trabajos se agrupaban por lotes. ! El programa volvía al monitor al terminar su
procesamiento. ! El monitor residente está en la memoria
principal y disponible para su ejecución.
Evolución – 2. Por lotes (batch)
Mapa de memoria:
Monitor
Area de programa
# Protección de memoria: No permite modificar la zona de memoria en la que está el monitor.
Evolución – 2. Por lotes (batch)
! El monitor se encarga de: " Leer e interpretar las tarjetas perforadas " Cargar programas de sistema (compiladores) y de usuario en la
memoria " Comunicarse con los dispositivos E/S (drivers)
! Problema: bajo rendimiento, ya que no se pueden solapar las operaciones E/S con CPU. Había largas esperas entre lotes de trabajo
" La 2ª Generación de ordenadores introduce hardware separado para gestionar la E/S y por tanto aparece la concurrencia , como se gestiona la concurrencia?, aparece la multiprogramacion.
Evolución – 3. Multiprogramados
# Procesos por lotes con multiprogramación: # Idea básica: tener varios procesos en marcha para que el S.O.
cambie a otro proceso cuando el que está en ejecución espere una op. E/S.
# Todos los procesos están en memoria principal, en diferentes estado de ejecución.
# Grado o factor de multiprogramación # Se utiliza para:
$ ¡ Incremento de la utilización de la CPU y recursos ! $ Soportar múltiples usuarios activos (servidor de red) $ Permitir programas interactivos
Evolución – 3. Multiprogramados
! Objetivo: aprovechar los tiempos de espera de un trabajo en la CPU para ejecutar instrucciones de otro trabajo
! Método: mantener los trabajos simultáneamente en memoria y elegir el trabajo a conmutar
! Consecuencias: " Gestión de memoria " Planificación de dispositivos " Gestión de interbloqueos " Control de la concurrencia " Protección
Evolución – 3. Multiprogramados
! Se requiere: ! Gestión de recursos
(memoria,dispositivos E/S) ! Planificación de procesos
! Mapa de memoria:
Sistema Operativo
Proceso 1
Proceso 2
Proceso 3
Multiprogramación
! La E/S es muy lenta en comparación con la CPU.
! Cuando un proceso espera por la E/S (se bloquea), ejecutamos en la CPU instrucciones de otro proceso.
! Los procesos entrelazan su ejecución: concurrencia.
! La CPU y la E/S trabajan en paralelo, se terminan más trabajos en menos tiempo
P1
P2
P3
P4 tiempo
Evolución – 3. Multiprogramados
Multiprogramación:
Proceso utilizando la CPU
4 3 2 1
Evolución de los SO
# Primera generación (1943-1955): # No existe S.O. # El programador realiza todo el trabajo
# Segunda generación (1956-1963): # Programa Monitor,
$ Identifica e interpreta las tarjetas de control $ Realiza el control de trabajos
# Procesamiento de trabajos en lotes.
Evolución de los SO
# Tercera generación (1963-1979): # Perfeccionamiento del sistema de trabajos por lotes # Permiten la multiprogramación # Memoria virtual.
# Cuarta generación (1980- .. ): # Aumento de la seguridad, velocidad de proceso y
prestaciones. # S.O. de red. # S.O. distribuidos.
Parte Principal
Módulo principal: Núcleo o Kernel # El más cercano al hardware # Se carga en memoria al iniciar la
computadora y se mantiene siempre. # Coordina los demás módulos # Funciones:
# Manejo de interrupciones # Asignación de trabajos al procesador # Intercomunicador entre programas.
Nucleo o Kernel
Básicamente ,el sistema operativo se compone de un núcleo o Kernel y un intérprete de comandos denominado Shell.
u su a r io
p r o g r am as
sh e ll
k e rn e l
H a r d w a r e
Núcleo
! Se suele llamar núcleo (kernel) al software del sistema operativo que reside permanentemente en memoria y que atiende las llamadas al sistema.
! El núcleo ofrece una serie de servicios a los procesos de usuario para que estos puedan llevar a cabo su misión.
! Inicia el SO
Hardware
NUCLEO
NUCLEO
Proceso
Proceso
Proceso
Proceso
Introducción
Objetivo de la estructuración:
Buscar una organización interna que facilite la comprensión, incremente la portabilidad, la ejecucion de
las tareas, su mejora y favorezca el mantenimiento
Enfoques en la estructura
A grandes rasgos cabe considerar tres enfoques de diseño:
I. Enfoque monitor monolítico II. Enfoque micronúcleo III. Enfoque por capas
1- SO Monoliticos
! Toda la funcionalidad del SO se incluye en el núcleo o procedimiento principal.
! El SO es un gran programa compuesto por procedimientos. Cualquier procedimiento puede llamar a otro % desde cualquier parte del so se puede llamar a otra directamente.
! El so trabaja en modo supervisor (acceso al hw no restringido) y los programas de aplicación en modo usuario.
1- SO monolítico
Proceso de
usuario
Proceso de
usuario
Proceso de
usuario
Intérprete de la SVC
Petición de E/S
Proceso de la
interrupción
Desbloquear
Dispositivos
Nucleo
Procesos
de usuario SVC
Despertar
Comienzo de la E/S Interrupción
1 - SO Monoliticos
! Ventaja ! Eficiencia (se producen pocos cambios de contexto de
procesos)
! Desventajas: ! Acceso a todas las estructuras de datos del so ! El fallo de un proceso en modo núcleo puede bloquear
el so completo ! Depuración compleja de los problemas ! Extensión del SO compleja
" Ejemplos: MS-DOS y Linux
2- SO micronucleo
El so consta de: ! Un cjto de subsistemas, cada uno de los cuales
implementa un tipo de servicio ! Un micro núcleo que proporciona la mínima
funcionalidad necesaria: " Cada subsistema (servidor) ejecuta un bucle en el
que testea si alguien (cliente) ha solicitado el servicio
" La petición de servicios, la finalización y el envio de resultados se realiza mediante mensajes a través del micro núcleo.
2- SO Micronucleo
Desventajas:
! Poco eficiencia debido a la sobrecarga de las comunicaciones
Ventajas
! Fácil implementación ! Si falla un servidor no se bloquea todo el so
2- Micronúcleo
Proceso de usuario
Proceso de usuario
Proceso de usuario
Proceso de usuario
Proceso gestionador de
dispositivo
Micronúcleo
Proceso de la interrupción
Determinación del proceso que solicitó la E/
S
Dispositivo Lectura de disco
Devolver los datos
Inicio de la E/S
Interrupción
Despertar
3- Diseño por capas
! El diseño por capas lleva asociada una jerarquización que permite disminuir la complejidad observable de un sistema
! Concepto de capa: conjunto de funciones claramente definidas hacia un objetivo común
Entidad N
Capa N
Capa N-1 Entidad N-1 Entidad N-1
Servicios
Ventajas del empleo de capas
! Las estructuras internas y algoritmos de una capa no son visibles a las demás
! El sistema puede evolucionar fácilmente ! Pueden existir realizaciones alternativas ! Algunas capas pueden ser transparentes si
sus servicios no son necesarios ! Cada capa se codifica y prueba de modo
independiente. No se bloquea todo el SO
Estructura de UNIX Bibliotecas
Buffer cache
Control hardware
Subsistema
de archivos
Subsistema
de E/S
Subsistema de
control de procesos
Carácter
Nivel kernel
Nivel hardware
Nivel kernel
Nivel de usuario
HARDWARE
Drivers
Interfaz de llamadas al sistema
Programas de usuario
Trap
Bloque
Manejo de memoria
IPC
Planificador
Estructura de Linux
Validación de argumentos de las llamadas al sistema
Conmutador de sistemas de archivo
Manejador del buffer cache
Bib
liote
cas
del k
erne
l
Manejador de memoria
Manejador de procesos
Manejador de interrupciones
Manejadores de dispositivo
Estructuras de datos compartidas
entre el alto y el bajo nivel
Interfaz de llamadas de alto nivel
HARDWARE
Bajo nivel del núcleo Manejador de traps de llamadas al sistema
Manejador de excepciones
Manejador de procesos de
bajo nivel Cambio
de contexto Tabla de dispatch
Callout de bajo nivel
Manejador de terminales
Pila de red
Interfaz de sockets y streams
Manejador de archivos
Estructuras del núcleo
(alto nivel)
Manejador de callouts
Sist
emas
de
arch
ivo
Alto nivel del núcleo
Modo usuario
DLLs DLLs
Estructura de W2K
API del núcleo
Controlador de servicios
WinLogon
Manejador de sesiones
Replicador
Alertador
RPC
Registrador de eventos
Aplicaciones de usuario
DLLs
POSIX
OS2
Win32
Manejador de E/S
Sistema de archivos
NTDLL.DLL
Manejador de cache
PnP Control de
alimentación
Seguridad Memoria virtual
Procesos e hilos
Win32 GDI
Manejador de objetos
Manejadores de dispositivo Kernel
HAL
HARDWARE
Hilos del sistema
NtosKrnl.exe
Procesos de sistema Servicios Aplicaciones Subsistemas
Introducción
Elementos de un sistema informático ! Hardware ! Software
" software del sistema (Sistema Operativo) " aplicaciones
! Personas (usuarios del sistema) " usuarios " programadores
El Hardware
El hardware contiene elementos:
! Procesamiento, CPU ! Memoria:RAM, disco, cintas,.. ! Dispositivos E/S ! Dispositivos Comunicaciones
Operating Systems: A Modern Perspective, Chapter 1
Perspectives of the Computer
Application Software
System Software
Hardware
(a) Usuario Final
(b) Programador de aplicaciones
© Programador de SO
Application Software
Application Software
System Software
System Software
Hardware Hardware
cut save
print send
malloc() fork()
open() read-disk
track-mouse start-printer
Niveles del Sistema
Aplicaciones de Usuario Interface con el SO
Sistema Operativo Interface con el Hardware
Hardware
Esta conceptualización es importante
Abstracciones
El SO simplifica el uso del hardware construyendo una serie de abstracciones: ! Proceso: es una CPU dedicada a un programa ! Memoria Virtual: simula una RAM infinita ! Archivos: memoria permanente de datos ! Shell: interfaz de usuario programado
El SO ha evolucionado en conjunto con la tecnología
¿Que es un SO?
Es un conjunto de programas cuyas misiones son: ! 1. Gestionar los recursos del sistema informático
(procesadores, memoria, E/S, etc), entre los diferentes procesos que compiten por ellos.
! 2. Ofrecer al usuario una especie de "máquina virtual" o "máquina extendida", más fácil de usar que el hardware subyacente
Definiciones de Sistema Operativo
(Stallings) Un SO es un programa que controla la ejecución de los programas de aplicación y que actúa como interfaz entre el usuario del computador y el hardware del mismo.
(Silberschatz, 1): Un SO es todo aquello que te entrega el vendedor
cuando le pides un Sistema Operativo. (Silberschatz, 2): el SO es el único programa que se está ejecutando
en todo momento en el computador (denominado núcleo o kernel), siendo el resto programas de aplicación.
(Milenkovic): un SO puede ser contemplado como una colección
organizada de extensiones software del hardware, consistente en rutinas de control que hacen funcionar un computador y proporcionan un entorno para la ejecución de los programas.
Definiciones importantes
Sistema operativo: “Conjunto de programas que controla la ejecución de los
programas de aplicación y actúa como interfaz entre el usuario y el hardware (controla y asigna recursos)”
Programas de usuario: Utilizan los servicios proporcionados por el S.O. para
tener acceso a los recursos (ficheros, dispositivos E/S, procesador, memoria, etc.)
Objetivo básico de un SO
“Crear una máquina virtual con la que sea sencillo trabajar”
HW
SO
Funciones
Otros objetivos
! Ejecutar las aplicaciones de los usuarios ! Facilitar la interacción con el computador ! Administrar eficientemente los recursos de la
máquina ! Controlar el funcionamiento del hardware y
ofrecer un modo sencillo de acceso al ordenador.
Funciones básicas de los SO
Abstracciones ! Proceso: es una CPU dedicada a un programa ! Memoria Virtual: simula una RAM infinita ! Archivos: memoria permanente de datos ! Shell: interfaz de usuario programado
¿Cómo implementa el SO estas abstracciones? ! Mediante una serie de módulos repartidos en niveles
Niveles clásicos de un SO
NIVEL 1
Nivel inferior de gestión del procesador Objetivo:
! Compartir la CPU entre procesos (multiprogramacion)
Funciones: ! Sincronización entre procesos ! Conmutación de la CPU ! Gestión de interrupciones
Estados de un proceso
A medida que un proceso se ejecuta, cambia de estado:
" nuevo: recién creado por el S.O. " en ejecución: está en la CPU ejecutando instrucciones " bloqueado: esperando por algún evento (ej. una
operación de E/S) " preparado: esperando a que le asignen un
procesador (CPU) " terminado: no ejecutará más instrucciones
Estados de un proceso
Nuevo
Preparado
Bloqueado
Ejecución
Terminado
Planificador
Interrupción
Fin operacióno ocurre evento
Admitido
Operación E/So espera evento
Llamada sistemao excepción
Niveles clásicos de un SO
NIVEL 2
Nivel superior de gestión de procesos Objetivo:
! Gestión de procesos
Funciones: ! Creación y destrucción de procesos ! Intercambio de mensajes entre procesos ! Detención y arranque de procesos
Creacion de Procesos
Creación de un proceso: ! Desde la línea de órdenes (shell) ! Creados por otros procesos
⇒ estructura árbol
A
B C
D E F
Niveles clásicos de un SO
NIVEL 3
Gestión de memoria Objetivo:
! Repartir la memoria entre procesos
Funciones: ! Asignación y liberación de memoria ! Control violación de acceso
Gestión de memoria principal
& Memoria principal es escasa y cara Responsabilidades del SO:
! conocer qué zonas de memoria están libres y cuáles están ocupadas
! decidir qué procesos hay que cargar cuando haya memoria libre
! reservar y liberar zonas de memoria según se solicite ! memoria virtual: utilizar el almacenamiento secundario como
una extensión de la memoria principal. ! Proteger la zona de memoria asignada a los procesos
Niveles clásicos de un SO
NIVEL 4
Nivel de gestión de dispositivos ! Objetivo:
! Realizar la gestión de las E/S en función de los dispositivos existentes
! Funciones: ! Creación de procesos de E/S ! Asignación y liberación de dispositivos de E/S ! Planificación de la E/S
Gestión Dispositivos
! La E/S es un conjunto de dispositivos muy variados.
! Objetivos del S.O con respecto a las E/S: # proporcionar una interfaz uniforme para el acceso a los
dispositivos (independencia del dispositivo) # proporcionar manejadores (drivers) para los dispositivos
concretos # tratar automáticamente los errores más típicos # para los dispositivos de almacenamiento, utilizar cachés # para los discos, planificar de forma óptima las peticiones
El problema de la E/S
! La E/S era muy lenta en comparación con la CPU.
! Esto provocaba que la CPU quedara ociosa mucho tiempo esperando por la terminación de operaciones de E/S.
! Algunas técnicas para tratar el problema: ! Uso de búferes y spoolers ! DMA ! Multiproceso
Controladores de E/S
! Los dispositivos se conectan al bus de datos a través de controladores de E/S.
! La CPU se comunica con los controladores a través de instrucciones especiales o de direcciones de memoria concretas.
! Cada controlador tiene un búfer local (en el controlador). La CPU envía y recoge datos del búfer.
! En general, el controlador notifica a la CPU la finalización de una operación o la llegada de nuevos datos mediante una interrupción.
Niveles clásicos de un SO
NIVEL 5
Nivel de gestión de la información Objetivo:
! Gestionar el espacio de nombres lógicos y la protección de la información.
Funciones: ! Creación y destrucción de ficheros y directorios ! Apertura y cierre de ficheros ! Lectura y escritura de ficheros ! Protección de acceso
Sistema de archivos
¿Cómo se almacena y cómo presenta la información el SO? ! Un archivo es un conjunto de datos identificado por un
nombre. Los archivos se almacenan en dispositivos de E/S. Un archivo es un concepto de alto nivel que no existe en el hardware. ! Los archivos contienen datos. ! Una carpeta sirve para almacenar archivos y otras carpetas ! Construyéndose así un sistema de archivos en forma de árbol. ! La información de la estructura de carpetas se suele almacenar en
una zona predeterminada.
Sistema de archivos
Funciones del S.O.: ! manipulación de archivos: crear, borrar, leer, escribir... ! manipulación de directorios ! ubicar los archivos y directorios en los dispositivos de
almacenamiento secundario ! automatizar ciertos servicios: copia de seguridad,
versiones, etc.
Shell
Interfaz de usuario (shell)
HARDWARE
Kernel
Otros modulos
SHELL USUARIO
Interfaz Aplicación
SHELL
Shell
Interfaz de usuario:
El modulo que controla la manera de comunicarse el SO con el usuario se denomina interprete de ordenes, entorno o shell.
✔ Funciones:
Traducir las ordenes del usuario en ordenes del SO.
RESUMEN
• Todo el SO se ejecuta en modo supervisor
● Menos robusto
● El SO es ininterrumpible
● Mayor rendimiento
● Empleado en sistemas pequeños
● Difícil de modificar en tiempo de ejecución
● Menos adaptable
● Empleado en sistemas grandes
● Fácil de modificar en tiempo de ejecución
● Menor rendimiento debido a la sobrecarga de comunicaciones
● El SO es interrumpible
● Más robusto
● Sólo el µnúcleo se ejecuta en modo supervisor