diseÑo de sistemas operativosumh2812.edu.umh.es/wp-content/uploads/sites/510/2013/02/introds… ·...

80
DISEÑO DE SISTEMAS OPERATIVOS INTRODUCCIÓN UMH DSO

Upload: others

Post on 08-Jul-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

DISEÑO DE SISTEMAS OPERATIVOS INTRODUCCIÓN UMH DSO

¿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”.

Esquema de funcionamiento de la computadora

Datos Resultados

Instrucciones de máquina

Computadora

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

¿Qué es un SO?

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.

Cada circuito necesita un lenguaje para su programación.

VIDEO Calculadora Programable

Que pasa con los computadores?

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

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)‏

Ejemplo de trabajo por lotes

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

Estructura de los SO

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 Monoliticos

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 a los SO

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

Practicas

!  Empiezan en Octubre "  1 grupo. "  Asistencia obligatoria "  guiadas y entrega de memoria

!  Linux embebido "  Interprete de ordenes "  Llamadas al sistema "  Programación en Lenguaje C (make,gcc)‏

! Trabajos