Sei sulla pagina 1di 30

Estructura del sistema

operativo
Contenidos (T2 y T3)

 Introducción
 Diseño por capas
 Ventajas del empleo de capas

 Niveles clásicos de un SO
 Núcleo de un SO
 Funciones básicas del núcleo

 Enfoques de diseño:
 Comparativa

 Estructura de UNIX clásico


 Estructura de Mach
 Estructura de Linux
 El núcleo de Linux

 Estructura de W2K
 Llamadas al sistema
 APIs de llamadas al sistema

 Realización

Estructura del sistema operativo


Introducción
 Objetivo de la estructuración:
 Buscar una organización interna que facilite la
comprensión, incremente la portabilidad,
extensión y favorezca el mantenimiento
 ¿Cómo abordar un programa de hasta 30 – 35
millones de líneas de código?

Estructura del sistema operativo


Diseño por capas (i)

Intérprete
de órdenes Aplicaciones

S.O.

Hardware

 Interfaces del SO que debe conocer el diseñador:


 Interfaz hardware:


Interrupciones, repertorio de instrucciones,
traducción de direcciones de la MMU, punto de
entrada para cargar el SO
 Interfaz usuario y programas

API (Application Program Interface)
Estructura del sistema operativo
Diseño por capas (ii)
 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

Servicios
Capa N-1 Entidad Entidad
N-1 N-1

Estructura del sistema operativo


Diseño por capas (iii)
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. Lo
único que hay que mantener son las interfaces
 Pueden existir realizaciones alternativas llevadas
a cabo por diferentes grupos de trabajo
 Algunas capas pueden ser transparentes si sus
servicios no son necesarios
 Cada capa se codifica y prueba de modo
independiente, para luego hacer las pruebas de
integración y de conjunto
 Esto es muy importante en el desarrollo del
software
Estructura del sistema operativo
Niveles clásicos de un SO (i)

Usuario y aplicaciones

N5: Gestión de la información


N4: Gestión de los dispositivos
N3: Gestión de procesos
N2: Gestión de memoria
N1: Gestión del procesador

Hardware

Estructura del sistema operativo


Niveles clásicos de un SO (ii)

NIVEL 1
Nivel inferior de gestión del procesador

 Objetivo:
 Compartir la CPU entre procesos
 Funciones:
 Sincronización entre procesos
 Conmutación de la CPU
 Gestión de interrupciones
 Arranque inicial

Estructura del sistema operativo


Niveles clásicos de un SO (iii)

NIVEL 2
Gestión de memoria

 Objetivo:
 Repartir la memoria entre procesos
 Funciones:
 Asignación y liberación de memoria
 Control violación de acceso

Estructura del sistema operativo


Niveles clásicos de un SO (iv)

NIVEL 3
Nivel superior de gestión de procesos

 Objetivo:
 Gestión de procesos de alto nivel
 Funciones:
 Creación y destrucción de procesos
 Intercambio de mensajes entre procesos
 Detención y arranque de procesos

Estructura del sistema operativo 1


Niveles clásicos de un SO (v)

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

Estructura del sistema operativo 1


Niveles clásicos de un SO (vi)

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 archivos y directorios
 Apertura y cierre de archivos
 Lectura y escritura de archivos
 Protección de acceso

Estructura del sistema operativo 1


Núcleo del sistema operativo (i)
 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
Otros niveles

Núcleo

HW

Estructura del sistema operativo 1


Núcleo del sistema operativo (ii)
Funciones básicas del núcleo
 Proporcionar el entorno adecuado para la
existencia de procesos
 Funciones:
 Tratamiento de interrupciones
 Conmutación del procesador entre procesos
(soporte al diagrama de estados)
 Mecanismos básicos de comunicación y
sincronización entre hilos y procesos
 Carga inicial y activación de la configuración del
sistema

EDSO 
Estructura del sistema operativo 1
Núcleo del sistema operativo (iii)
Funciones básicas del núcleo
 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 le envía un mensaje

Estructura del sistema operativo 1


Núcleo del sistema operativo (iv)
Funciones básicas del núcleo
 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

Ejecución
Dormir
Asignar Revocar

Espera Listo
Despertar

Estructura del sistema operativo 1


Núcleo del sistema operativo (v)
Funciones básicas del núcleo
 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)
 Ejemplo:

NFS (Sistema de ficheros en red) construido a partir
de RPCs

Estructura del sistema operativo 1


Enfoques de diseño (i)
 Enfoques de diseño:
 Monitor monolítico
 Micronúcleo
 Monitor monolítico
 Toda la funcionalidad del SO se incluye se incluye
en el núcleo
 Ejemplos: MS-DOS, Linux
 Micronúcleo
 Parte de los sevicios del SO la llevan a cabo los
procesos de sistema, que se sirven de la
funcionalidad mínima proporcionada por un
micronúcleo
 Ejemplos: Mach, L4, Chorus

Estructura del sistema operativo 1


Enfoques de diseño (ii)
Comparativa
Monitor monolítico Micronúcleo
 Todo el SO se ejecuta en  Sólo el µnúcleo se ejecuta

modo supervisor en modo supervisor


 Menos robusto  Más robusto

 El SO es ininterrumpible  El SO es interrumpible

 Mayor rendimiento  Menor rendimiento debido

a la sobrecarga de
comunicaciones
 Difícil de modificar en
tiempo de ejecución  Fácil de modificar en
 Menos adaptable tiempo de ejecución
 Más adaptable

Estructura del sistema operativo 1


Estructura de UNIX clásico
Programas de Biblioteca
usuario s
Trap
Nivel de
usuario
Nivel Interfaz de llamadas al
kernel sistema

Subsistema de Subsiste Subsiste


control de procesos ma ma
de de E/S
Manejo de memoria archivos Buffer
IPC cache
Carácter Bloque
Planificador
Drivers

Control hardware
Nivel
kernel
Nivel
hardware Hardware

Estructura del sistema operativo 2


Estructura de Mach

Servidor Servidor
Servidor Servidor
Programas de de
de de
de usuario proces memori
archivos gráficos
os a
Nivel de usuario
Nivel kernel

Manejadores de
Manejo de hilos
dispositivos

Nivel kernel
Nivel hardware
Hardware

Estructura del sistema operativo 2


Estructura de Linux (i)
Interfaz de llamadas de alto nivel Modo usuario
Validación de argumentos de las llamadas al sistema Alto nivel
Conmutador de sistemas de archivo del núcleo

Bibliotecas del kernel


Manejador Interfaz de Manejador
de archivos sockets y
streams de callouts

Sistemas

archivo
Manejador Manejador Estructuras

de
de de del núcleo
Manejador
procesos terminalesPila de red (alto nivel)
de
memoria Manejador del
buffer de cache Est. datos
compartidas
Manejadores de dispositivo entre nivel
alto y bajo
Manejador de interrupciones Manejador Cambio Bajo nivel
Tabla Callout de
Manejador traps de llamadas al sist. procesos de de del núcleo
dispatch bajo nivel
Manejador de excepciones bajo nivel contexto

Hardware
Estructura de Linux (ii)
El núcleo de Linux
 Comunicación entre  Facilidades básicas
procesos  Manejo del reloj y

 Señales temporizador
 Tuberías  Manejo del estado

 Sockets (TCP/IP) de los procesos


 Manejo de
 Manejadores (drivers)
 Modo carácter descriptores
 Semáforos
 Modo bloque
 Gestión de memoria
 Sistema de archivos
 Memoria virtual
 Archivos,
 Trasiego
directorios
 Bloqueo de  Memoria

archivos compartida
Estructura del sistema operativo 2
Estructura de W2K
Procesos de sistema Servicios Aplicaciones Subsistemas
WinLogon Replicador POSIX
Controlador Alertador
servicios RPC Aplicaciones OS2
Manejador DLLs
Registrador de usuario
DLLs Win32
NtosKrnl.exe de sesiones de eventos DLLs

Hilos del
sistema NTDLL.DLL

API del núcleo


Manejador Manejador PnP SeguridadMemoria Procesos Win32
de E/S de caché Control de virtual e hilos GDI
alimentación
Sistema
de archivos Manejador de objetos
Manejadores de dispositivo Kernel
HAL
Hardware
Estructura del sistema operativo 2
Llamadas al sistema (i)
 Interfaz de llamadas al sistema
 Funciones de biblioteca compartidas por todos

los procesos que se ejecutan en la máquina

Intérprete
de órdenes Aplicaciones

Interfaz de llamadas al
sistema
S.O.

Hardware

Estructura del sistema operativo 2


Llamadas al sistema (ii)
 Llamadas al sistema
 Mecanismo controlado de acceso por parte de los
procesos a los recursos del S.O.
 Funcionalidad básica:
 Comunicación y sincronización de procesos
 Ejecución de programas
 Manejo de operaciones de E/S
 Manipulación del sistema de archivos
 Detección y control de errores en tiempo de ejecución
 Asignación no conflictiva de recursos
 Protección en el empleo de recursos
 Contabilidad de los recursos empleados

Estructura del sistema operativo 2


Llamadas al sistema (iii)
APIs de llamadas al sistema
 Las llamadas al sistema están definidas a nivel
de ensamblador
 Código no portable (depende de la arquitectura)
 Incómodo de programar
 Existen APIs (Application Program Interface) para
mejorar la portabilidad y facilitar la codificación
 El API es un “envoltorio” para realizar llamadas al
sistema desde un lenguaje de alto nivel (portable
y cómodo)
 API estándar: POSIX (Portable Operating System
Unix)
 Ejemplo de llamada de interfaz POSIX para abrir
un fichero:
int open( char* archivo, int modo);
Estructura del sistema operativo 2
Llamadas al sistema (iv)
APIs de llamadas al sistema
 Manipulación de archivos:
int open (const char *pathname, int flags, mode_t mode);
int close (int fd)
int creat (const char *pathname, mode_t mode)
int unlink (const char *pathname);
ssize_t read (int fd, void *buf, size_t count);
ssize_t write (int fd, const void *buf, size_t count);
off_t lseek (int fildes, off_t offset, int whence);
int rename (const char *oldpath, const char *newpath);

Estructura del sistema operativo 2


Llamadas al sistema (v)
Realización
 Método:
 A través de una instrucción máquina específica, el
hw la trata como una interrupción sw
 Al ejecutarse esta instrucción toma el control el
S.O.
Modo supervisor
Carga vector interrupción
switch N {
P1
case 0:
...
... case 1:
syscall N

...
... case N:
...
}

Estructura del sistema operativo 2


Llamadas al sistema (vi)
Realización
 Su implementación depende de la arquitectura
del ordenador
 IBM 360: instrucción SVC
 MIPS: instrucción syscall
 i386: int # (DOS: 21h, Linux: 80h, W2k: 2Eh)
 Paso de parámetros:
 En registros internos del procesador
 En zona de memoria cuya dirección se pasa en
registros
 En la pila

Estructura del sistema operativo 3

Potrebbero piacerti anche