Download Lección 1 - Arcos

Document related concepts

Sistema operativo wikipedia , lookup

Transcript
Grupo ARCOS
Universidad Carlos III de Madrid
Lección 1
Introducción
Diseño de Sistemas Operativos
Grado en Ingeniería Informática
Lecturas recomendadas
Base
Recomendada
Carretero 2007:
1.
1.
Tanenbaum 2006:
1.
Cap. 2
1.
Stallings 2005:
2.
1.
Parte uno. Transfondo.
Silberschatz 2006:
3.
1.
2
Cap.1
Cap.1
ARCOS @ UC3M
Alejandro Calderón Mateos
A recordar…
1.
Estudiar la teoría asociada.
Estudiar el material asociado a la bibliografía:
las transparencias solo no son suficiente.
Crear cuestiones con sus respuestas y justificación.
2.
Repasar lo visto en clase.
Realizar el cuaderno de prácticas progresivamente.
3.
Ejercitar las competencias.
Realizar las prácticas progresivamente.
Realizar todos los ejercicios posibles.
3
ARCOS @ UC3M
Alejandro Calderón Mateos
Contenidos
Qué es un sistema operativo.
1.
1.
Cómo es por fuera.
2.
1.
Ejecutables y bibliotecas
Cómo es por dentro.
3.
1.
4
Principales funciones, características y objetivos
Ejecución asíncrona
ARCOS @ UC3M
Alejandro Calderón Mateos
Contenidos
Qué es un sistema operativo.
1.
1.
Cómo es por fuera.
2.
1.
Ejecutables y bibliotecas
Cómo es por dentro.
3.
1.
5
Principales funciones, características y objetivos
Ejecución asíncrona
ARCOS @ UC3M
Alejandro Calderón Mateos
Definición de sistema operativo
Sistema operativo: software destinado a permitir la
comunicación del usuario con un ordenador y gestionar sus
recursos de manera cómoda y eficiente.
usuario
Sistema Operativo
Hardware
6
ARCOS @ UC3M
Alejandro Calderón Mateos
Definición de sistema operativo
Sistema operativo: software destinado a permitir la
comunicación del usuario con un ordenador y gestionar sus
recursos de manera cómoda y eficiente.
usuario
Software de aplicación
Software de sistema
Sistema Operativo
Hardware
7
ARCOS @ UC3M
Alejandro Calderón Mateos
Contenidos
Qué es un sistema operativo.
1.
1.
Cómo es por fuera.
2.
1.
Ejecutables y bibliotecas
Cómo es por dentro.
3.
1.
8
Principales funciones, características y objetivos
Ejecución asíncrona
ARCOS @ UC3M
Alejandro Calderón Mateos
Funciones del sistema operativo
Usuario
Sistema operativo
Interfaz del usuario.
Gestor de recursos:
CPU, memoria, etc.
Máquina extendida:
Servicios, interfaz del programador, etc.
Hardware
9
ARCOS @ UC3M
Alejandro Calderón Mateos
Funciones del sistema operativo
Usuario
Sistema operativo
Interfaz del usuario.
Gestor de recursos:
CPU, memoria, etc.
Máquina extendida:
Servicios, interfaz del programador, etc.
Hardware
10
ARCOS @ UC3M
Alejandro Calderón Mateos
Abstracciones fundamentales
Procesos
Procesos, tabla de procesos, árbol de procesos
Imagen básica, planificación, señales
Identificación de usuario y grupo
Intérprete de mandatos (shell)
A
nuevo
finalizado
preparado
B
funcionando
bloqueado
D
E
C
F
Árbol de procesos
11
https://www.microsoft.com/resources/sharedsource/windowsacademic/curriculumresourcekit.mspx
ARCOS @ UC3M
Alejandro Calderón Mateos
Abstracciones fundamentales
Archivos
Archivos y directorios
Directorio raíz
Ruta, directorio de trabajo y raíz
Protección
Descriptor de archivo
Archivos especiales:
tmp
etc
usr
mia
pit
Dispositivos E/S
E/S de bloque y de caracteres
Pipes
Estándares entrada/salida/error
12
https://www.microsoft.com/resources/sharedsource/windowsacademic/curriculumresourcekit.mspx
ARCOS @ UC3M
Alejandro Calderón Mateos
Funciones del sistema operativo
Usuario
Sistema operativo
Interfaz del usuario.
Gestor de recursos:
CPU, memoria, etc.
Máquina extendida:
Servicios, interfaz del programador, etc.
Hardware
13
ARCOS @ UC3M
Alejandro Calderón Mateos
Áreas de gestión
Gestión de Procesamiento
Planificación
Prioridades, multiusuario
Gestión de Memoria y Almacenamiento
Reparto de memoria entre procesos, con protección y compartición
Persistencia y etiquetación (ej. Sistema de Archivos)
con una visión lógica unificada para usuarios y programas
que sea independiente del medio físico
Gestión de Dispositivos
Encubriendo las dependencias de hardware
Gestión de accesos concurrentes
14
ARCOS @ UC3M
Alejandro Calderón Mateos
Funciones del sistema operativo
Usuario
Sistema operativo
Interfaz del usuario.
Gestor de recursos:
CPU, memoria, etc.
Máquina extendida:
Servicios, interfaz del programador, etc.
Hardware
15
ARCOS @ UC3M
Alejandro Calderón Mateos
Interfaz del usuario
Interfaz del programador:
Mediante llamadas al sistema.
ret = close (filedesc) ;
Interfaz de usuario:
Mediante línea de mandatos o CLI
Interfaz gráfica o GUI
16
http://www.guidebookgallery.org/screenshots/commandprompt
http://www.guidebookgallery.org/screenshots/full
ARCOS @ UC3M
Alejandro Calderón Mateos
Funciones del sistema operativo
resumen
Usuario
Sistema operativo
Interfaz del usuario.
Gestor de recursos:
CPU, memoria, etc.
Máquina extendida:
Servicios, interfaz del programador, etc.
Hardware
17
ARCOS @ UC3M
Alejandro Calderón Mateos
Un detalle más sobre máquina extendida…
Usuario
Sistema operativo
Interfaz del usuario.
Gestor de recursos:
CPU, memoria, etc.
Máquina extendida:
Servicios, interfaz del programador, etc.
Hardware
18
ARCOS @ UC3M
Alejandro Calderón Mateos
Máquinas virtuales
Apl.
Apl.
S.O.
S.O.
…
Hipervisor (VMM)
Hardware
Mgmt
El sistema operativo virtualiza ciertos elementos
del hardware; ¿Por qué no virtualizar todo?
IBM ha usado esta idea en sus mainframes desde
principio de la década de los 70.
Un hipervisor virtualiza todo el ordenador, de
manera que permite que múltiples sistemas
operativos (o copias del mismo) ejecuten a la vez.
La virtualización:
[I] supone cierta sobrecarga
[V] ofrece un aislamiento excelente entre sistemas y
la flexibilidad en la reserva de recursos lo que
mejora el coste, especialmente en «granjas»
19
http://www-128.ibm.com/developerworks/library/l-linuxvirt/index.html
ARCOS @ UC3M
Alejandro Calderón Mateos
Máquinas virtuales
HW. emulation
Distinto Hardware
Mismo Hardware y…
20
http://www-128.ibm.com/developerworks/library/l-linuxvirt/index.html
ARCOS @ UC3M
Alejandro Calderón Mateos
Máquinas virtuales
HW. emulation
Distinto Hardware
… distinto S.O. y…
Mismo Hardware y…
… mismo S.O.
21
http://www-128.ibm.com/developerworks/library/l-linuxvirt/index.html
Containers
ARCOS @ UC3M
Alejandro Calderón Mateos
Máquinas virtuales
HW. emulation
Distinto Hardware
… no colaboran
con el hipervisor
Full virtualization
… distinto S.O. y…
Mismo Hardware y…
… colaboran
con el hipervisor
… mismo S.O.
22
http://www-128.ibm.com/developerworks/library/l-linuxvirt/index.html
Para-virtualization
Containers
ARCOS @ UC3M
Alejandro Calderón Mateos
Contenidos
Qué es un sistema operativo.
1.
1.
Cómo es por fuera.
2.
1.
Ejecutables y bibliotecas
Cómo es por dentro.
3.
1.
23
Principales funciones, características y objetivos
Ejecución asíncrona
ARCOS @ UC3M
Alejandro Calderón Mateos
Principales características
Versátil
Portabilidad
Adaptativo
Multidisciplinar
Complejo
Delicado
24
ARCOS @ UC3M
Alejandro Calderón Mateos
Versatilidad
Supercomputador
Unix, Linux, …
Mainframe
OS/360, z/OS, …
Miniordenadores y PC
Unix, MacOs, Windows, …
Empotrados
VxWorks, QNX, LynxOS,
Android, iOS,
Windows Embedded, …
25
ARCOS @ UC3M
Alejandro Calderón Mateos
Principales características:
1) Versátil
Mismo equipo, diferentes SSOO: IBM PC
Linux
DR-DOS
…
IBM PC
Mismo SO, diferentes equipos: Unix
Portabilidad
Unix
CRAY-Y/MP
26
IBM PC
…
ARCOS @ UC3M
Alejandro Calderón Mateos
Principales características:
2) Continuos cambios para adaptarse
A las nuevas demandas de los usuarios:
Reconocimiento de voz, entrada multitáctil, etc.
A la evolución o nuevo tipo de hardware:
Controladores para todo tipo de nuevos dispositivos
Sistemas multicore, virtualización, etc.
A integrar soluciones de distintos entornos:
Procesamiento por lotes, multiprogramación, tiempo compartido, etc.
Multiusuario, trabajo colaborativo, etc.
Sistemas distribuidos, servicios en red, etc.
27
ARCOS @ UC3M
Alejandro Calderón Mateos
Hw
Resumen de la evolución
S.O.
Primera generación (años 50)
Monitor hardware.
Segunda generación (años 60)
Procesamiento por lotes.
Tercera generación (años 70)
Multiprogramación, tiempo compartido y multiusuario.
Cuarta generación (años 80 – actualidad)
Sistemas distribuidos.
Interfaz gráfica, reconocimiento de voz, etc.
Virtualización.
28
ARCOS @ UC3M
Alejandro Calderón Mateos
Primera generación (1945-1955)
Hw
monitor hardware
S.O.
Tubos de vacío.
ENIAC, UNIVAC, …
Grandes, lentos y caros.
Complicación para programar
y depurar.
Monitor hardware.
Asistente para el diagnóstico.
29
ARCOS @ UC3M
Alejandro Calderón Mateos
Segunda generación (1955-1965)
Hw
procesamiento por lotes
S.O.
Transistores.
IBM 7090, IBM1620, …
Más pequeños, rápidos y fiables.
Ligeras mejoras en su
programación.
Procesamiento por lotes.
Ejecución de trabajos uno detrás de otro.
Enlace de rutinas de librerías a programas.
Gestión de archivos, dispositivos de E/S y almacenamiento secundario.
Aparición de OS/360
30
ARCOS @ UC3M
Alejandro Calderón Mateos
Tercera generación (1965-1980)
Hw
multiprogramación, multitarea y multiusuario
S.O.
Circuitos integrados.
PDP-8, …
Más pequeños, rápidos y fiables.
Fortran, C, Pascal, Basic, etc.
Multiprogramación.
Gestión de recursos compartidos solapando esperas en CPU.
Tiempo compartido y multiusuario.
Compartición de recursos y multiplexación del uso de la CPU.
Aparición de Multics, Unix, CP/M, etc.
31
ARCOS @ UC3M
Alejandro Calderón Mateos
Cuarta generación (1980-)
Hw
distribuidos, con interfaz gráfica, etc.
S.O.
El microprocesador.
IBM-PC, …
Ordenadores personales.
C++, etc.
Distribuidos (de tiempo real)
Conexión a Internet,
aplicaciones de trabajo distribuido
Interfaz gráfica.
System 5, Windows 1.0, etc.
32
ARCOS @ UC3M
Alejandro Calderón Mateos
Cuarta generación (2005-)
Hw
virtualización, multiprocesamiento, etc.
S.O.
Los system-on-chip y multicores.
Tables, smartphones, …
Era post-PC.
.net, java, python, php, etc.
Virtualización.
Cloud computing, legacy computing, desktop móvil, etc.
Nuevas formas de interacción.
Reconocimiento del habla, entrada multitáctil, etc..
Pantallas 3D, holografías, etc.
33
ARCOS @ UC3M
Alejandro Calderón Mateos
Evolución de los sistemas operativos
55
IOCS
IBSYS
60
CTSS
65 DOS/360
OS/360
70
75
MULTICS
CP/CM5
DOS/VDSE MVS/370
RT-11
UNIXV.7
VM/370
80
85
SYSTEM III
VS
MVS/XA
SYSTEM V.4
95
VM/ESA
AIX/370
LINUX AIX/ESA
CP/M
VMS 1.0
4.1BSD XENIX
MS-DOS 1.0
SUN OS
4.2BSD
AIX POSIX
MACH
VM/XA SYSTEM V
90
VS/ESA MVS/ES
RSX-11M
UNIX
TSO
OSF/1
4.3BSD
SOLARIS 2
4.4BSD
00
DR/DOS
OS/2
WIN 3.0
VMS 5.4
WIN 3.1
WIN NT
WIN 9X
VMS 7.3 WIN 2000
LINUX 2.6
03
34
SOLARIS 10
https://www.microsoft.com/resources/sharedsource/windowsacademic/curriculumresourcekit.mspx
WIN XP
WIN Server 2003
ARCOS @ UC3M
Alejandro Calderón Mateos
Principales características:
3) Software multidisciplinar
Software multidisciplinar:
Integra trabajos de diferentes áreas:
Interfaces de usuario, software de sistema, inteligencia artificial, seguridad,
Ingeniería Software, etc.
35
http://work-at-home-data-entry.com/wp-content/uploads/2014/10/Work-from-home-team-group-of-workers-icon.png
ARCOS @ UC3M
Alejandro Calderón Mateos
Principales características:
4) Software complejo
Software complejo:
Muchas líneas de código.
Muchos equipos de trabajo.
36
ARCOS @ UC3M
Alejandro Calderón Mateos
Principales características:
4) Software complejo
Software complejo:
Muchas líneas de código.
Muchos equipos de trabajo.
37
https://www.openhub.net/p/linux
ARCOS @ UC3M
Alejandro Calderón Mateos
Principales características:
4) Software complejo
Software complejo:
Muchas líneas de código.
Muchos equipos de trabajo.
38
http://www.zdnet.co.uk/reviews/desktop-os/2010/11/20/a-quarter-century-of-windows-40090900/5/#top
ARCOS @ UC3M
Alejandro Calderón Mateos
Principales características:
4) Software complejo
Software complejo:
Muchas líneas de código.
Muchos equipos de trabajo.
39
http://www.zdnet.co.uk/reviews/desktop-os/2010/11/20/a-quarter-century-of-windows-40090900/5/#top
ARCOS @ UC3M
Alejandro Calderón Mateos
Principales características:
4) Software complejo
Software complejo:
Muchas líneas de código.
Muchos equipos de trabajo.
40
http://osdelivers.blackducksoftware.com/2015/05/05/driving-into-the-future-of-automotive-technology-at-genivi-annual-members-meeting/
http://www.alexmarchant.com/writing/healthcare-dot-gov-lines-of-code-comparison/
ARCOS @ UC3M
Alejandro Calderón Mateos
Principales características:
5) Software delicado
Software delicado:
Un fallo en un driver (software controlador de un dispositivo) puede
bloquear todo el sistema.
Trata datos de distintas aplicaciones de distintos usuarios que
no deben ser perdidos o trasladados a manos incorrectas.
41
ARCOS @ UC3M
Alejandro Calderón Mateos
Principales características:
5) Software delicado
Software delicado:
Un fallo en un driver (software controlador de un dispositivo) puede
bloquear todo el sistema.
Trata datos de distintas aplicaciones de distintos usuarios que
no deben ser perdidos o trasladados a manos incorrectas.
42
http://www.mayerdan.com/ruby/2012/11/11/bugs-per-line-of-code-ratio/
ARCOS @ UC3M
Alejandro Calderón Mateos
Principales características:
5) Software delicado
Software delicado:
Un fallo en un driver (software controlador de un dispositivo) puede
bloquear todo el sistema.
Trata datos de distintas aplicaciones de distintos usuarios que
no deben ser perdidos o trasladados a manos incorrectas.
43
http://www.mayerdan.com/ruby/2012/11/11/bugs-per-line-of-code-ratio/
ARCOS @ UC3M
Alejandro Calderón Mateos
Principales características
resumen
Versátil
Portabilidad
Adaptativo
Multidisciplinar
Complejo
Delicado
44
ARCOS @ UC3M
Alejandro Calderón Mateos
Contenidos
Qué es un sistema operativo.
1.
1.
Cómo es por fuera.
2.
1.
Ejecutables y bibliotecas
Cómo es por dentro.
3.
1.
45
Principales funciones, características y objetivos
Ejecución asíncrona
ARCOS @ UC3M
Alejandro Calderón Mateos
Objetivos en el diseño
de un sistema operativo
Rendimiento: eficiencia y velocidad
Sistema Operativo
Hardware
Baja sobrecarga,
uso adecuado de los recursos
Estabilidad: robustez y resistencia
Tiempo de funcionamiento, degradación aceptable, fiabilidad e integridad
Capacidad: prestaciones, flexibilidad y compatibilidad
Seguridad y protección
Protección entre usuarios
Sistema seguro para ‘los malos’
Portabilidad
Claridad
Extensibilidad
46
http://www.cc.gatech.edu/~pwh/
ARCOS @ UC3M
Alejandro Calderón Mateos
Contenidos
Qué es un sistema operativo.
1.
1.
Cómo es por fuera.
2.
1.
Ejecutables y bibliotecas
Cómo es por dentro.
3.
1.
47
Características principales
Ejecución asíncrona
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejecutables (1/1)
G. dispositivos de E/S
D#15
48
D#10
Los primeros kernels tenían que:
Incluir código para
todos los posibles dispositivos.
Cada cierto tiempo se recompilaba para
añadir los nuevos dispositivos.
Se distribuía como
un conjunto de ejecutables.
http://www.cc.gatech.edu/~pwh/
ARCOS @ UC3M
Alejandro Calderón Mateos
Módulos (1/2)
G. dispositivos de E/S
D#10
Los módulos inicialmente se desarrollaron
para permitir la inclusión condicional de
controladores de dispositivos (drivers)
Los módulos ofrecen añadir dinámicamente
código de un driver pre-compilado.
Se distribuyen como bibliotecas dinámicas
para el kernel (.so/.dll).
El módulo puede descargarse cuando el
dispositivo deje de usarse.
D#15
49
http://www.cc.gatech.edu/~pwh/
ARCOS @ UC3M
Alejandro Calderón Mateos
Módulos (2/2)
App
App
La gran mayoría de sistemas operativos modernos
tienen un kernel que permite el uso de módulos:
Linux, Solaris, BSD, Windows, etc.
Kernel
Los módulos se utilizan no solo para los drivers
de los dispositivos, actualmente también se
utilizan para añadir otro tipos de funcionalidad:
El kernel de Linux lo utiliza extensivamente para
sistemas de ficheros, protocolos de red, llamadas al
sistema, etc.
F#18
50
http://www.cc.gatech.edu/~pwh/
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejemplo de módulos
Windows 2000
Replicator
Alerter
Event Log
Session Mgr
WinLogon
Procesos
de sistema
Win32
POSIX
OS/2
Servicios
Aplicacs.
Usuario
Interface DLL
Subsystem DLL
Subsistemas
de entorno
Ntdll.dll
Usuario
Kernel
System Service Dispatcher
Sistema
E/S
Monitor
Seguridad
Procesos/
Threads
Servicios
de objetos
Memoria
Mgmt
Win32
GDI
Gestión de Objectos
Sistemas
ficheros
Drivers
Kernel
Exec.
RTL
Hardware Abstraction Layer (HAL)
51
ARCOS @ UC3M
Alejandro Calderón Mateos
Contenidos
Qué es un sistema operativo.
1.
1.
Cómo es por fuera.
2.
1.
Ejecutables y bibliotecas
Cómo es por dentro.
3.
1.
52
Características principales
Ejecución asíncrona
ARCOS @ UC3M
Alejandro Calderón Mateos
Generación y ejecución de programas
Módulo
fuente A
Aplicación
Conjunto de módulos en
lenguaje de alto nivel
Fases:
Compilación
Montaje
Enlazado dinámico
Ejecución
Módulo
fuente B
Compilador
Módulo
objeto A
Módulo
objeto B
Bibliotecas
estáticas
Montador
Ejecutable A
Bibliotecas
dinámicas
Cargador
Proceso 1
53
ARCOS @ UC3M
Alejandro Calderón Mateos
Generación y ejecución de programas
Módulo
fuente A
Aplicación
Compilador
#include <stdio.h>
Conjunto de módulos en
Módulo
void
decir_hola(
void )
lenguaje de alto nivel
objeto A
{
Fases:
Compilación
Montaje
Enlazado dinámico
Ejecución
Módulo
fuente B
Módulo
objeto B
Bibliotecas
estáticas
printf("Hola mundo...\n") ;
}
Montador
Ejecutable A
Bibliotecas
dinámicas
Cargador
Proceso 1
54
ARCOS @ UC3M
Alejandro Calderón Mateos
Generación y ejecución de programas
Módulo
fuente A
Aplicación
Conjunto de módulos en
lenguaje de alto nivel
Fases:
Compilación
Montaje
Enlazado dinámico
Ejecución
Módulo
fuente B
Compilador
extern void decir_hola( void ) ;
Módulo
objeto A
Módulo
int main
(int argc, char
*argv[])
Bibliotecas
objeto B
estáticas
{
decir_hola() ;
return
0;
Montador
}
Ejecutable A
Bibliotecas
dinámicas
Cargador
Proceso 1
55
ARCOS @ UC3M
Alejandro Calderón Mateos
Generación y ejecución de programas
Módulo
fuente A
Aplicación
Conjunto de módulos en
lenguaje de alto nivel
Fases:
Compilación
Montaje
Enlazado dinámico
Ejecución
Módulo
fuente B
Compilador
gcc –Wall –g –c a.c –o a.o
Módulo
objeto A
Módulo
objeto B
Bibliotecas
estáticas
Montador
Ejecutable A
Bibliotecas
dinámicas
Cargador
Proceso 1
56
ARCOS @ UC3M
Alejandro Calderón Mateos
Generación y ejecución de programas
Módulo
fuente A
Aplicación
Compilación
Montaje
Enlazado dinámico
Ejecución
Compilador
gcc –Wall –g –c b.c –o b.o
Conjunto de módulos en
lenguaje de alto nivel
Fases:
Módulo
fuente B
Módulo
objeto A
Módulo
objeto B
Bibliotecas
estáticas
Montador
Ejecutable A
Bibliotecas
dinámicas
Cargador
Proceso 1
57
ARCOS @ UC3M
Alejandro Calderón Mateos
Generación y ejecución de programas
Módulo
fuente A
Aplicación
Conjunto de módulos en
lenguaje de alto nivel
Módulo
fuente B
Compilador
Módulo
objeto A
Fases:
Compilación
Montaje
gcc –Wall –g –o a.exe a.o b.o -lc
Enlazado dinámico
Ejecución
Módulo
objeto B
Bibliotecas
estáticas
Montador
Ejecutable A
Bibliotecas
dinámicas
Cargador
Proceso 1
58
ARCOS @ UC3M
Alejandro Calderón Mateos
Generación y ejecución de programas
Módulo
fuente A
Aplicación
Conjunto de módulos en
lenguaje de alto nivel
Módulo
fuente B
Compilador
Módulo
objeto A
Fases:
Módulo
objeto B
Bibliotecas
estáticas
Montador
Compilación
Montaje
Enlazado dinámico
Ejecución
Ejecutable A
Bibliotecas
dinámicas
Cargador
./a.exe
59
Proceso 1
ARCOS @ UC3M
Alejandro Calderón Mateos
Bibliotecas de objetos
Módulo
fuente A
Aplicación
Conjunto de módulos en
lenguaje de alto nivel
Fases:
Compilación
Montaje
Enlazado dinámico
Ejecución
Módulo
fuente B
Compilador
Módulo
objeto A
Módulo
objeto B
Bibliotecas
estáticas
Montador
Ejecutable A
Bibliotecas
dinámicas
Cargador
Proceso 1
60
ARCOS @ UC3M
Alejandro Calderón Mateos
Bibliotecas de objetos
Biblioteca
Colección de módulos objetos relacionados
Biblioteca
Módulo
objeto X
Módulo
objeto Y
…
Biblioteca estática
Carga y montaje en tiempo de compilación
Biblioteca dinámica
Carga y montaje en tiempo de ejecución
Se indica al montar qué biblioteca usar, carga y montaje posterior
61
ARCOS @ UC3M
Alejandro Calderón Mateos
b.c
Bibliotecas de objetos
#include <stdio.h>
void decir ( char * str )
{
printf("%s",str) ;
}
Biblioteca
Colección de módulos objetos relacionados
a.c
Biblioteca
Módulo
objeto X
extern void decir ( char * str ) ;
Módulo
…
objeto Y void decir_hola( void )
{
decir("Hola mundo...\n") ;
}
main.c
extern
void decir_hola(
void ) ;
Biblioteca
estática
Carga
y montaje
en
int main
(int argc,
char *argv[])
{
decir_hola() ;
return 0 ;
}
Carga y montaje en
tiempo de compilación
Biblioteca dinámica
tiempo de ejecución
Se indica al montar qué biblioteca usar, carga y montaje posterior
62
ARCOS @ UC3M
Alejandro Calderón Mateos
Bibliotecas de objetos
Biblioteca
Colección de módulos objetos relacionados
Módulo
objeto X
Biblioteca gcc –Wall –g –o a.o –c a.c
gcc –Wall –g –o b.o –c b.c
Módulo
…
ar rcs libestatica.a
a.o b.o
objeto Y
gcc -Wall -g -o main.exe main.c -lestatica -L./
./main.exe
Biblioteca estática
Carga y montaje en tiempo de compilación
Biblioteca dinámica
Carga y montaje en tiempo de ejecución
Se indica al montar qué biblioteca usar, carga y montaje posterior
63
ARCOS @ UC3M
Alejandro Calderón Mateos
Bibliotecas de objetos
Biblioteca
Colección de módulos objetos relacionados
Biblioteca
Módulo
objeto X
Módulo
objeto Y
…
gcc –Wall –g –fPIC –o a.o –c a.c
gcc –Wall –g –fPIC –o b.o –c b.c
gcc -shared -Wl,-soname,libdinamica.so \
-o libdinamica.so.1.0 a.o b.o
ln –s libdinamica.so.1.0 libdinamica.so
Biblioteca estática
gcc –Wall –g –o main.exe main.c –I. –L. –ldinamica
Carga y montaje env
en LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.
tiempo de compilación
./main.exe
Biblioteca dinámica
Carga y montaje en tiempo de ejecución
Se indica al montar qué biblioteca usar, carga y montaje posterior
64
ARCOS @ UC3M
Alejandro Calderón Mateos
Bibliotecas de objetos
Biblioteca
Colección de módulos objetos relacionados
Biblioteca
Módulo
objeto X
Módulo
objeto Y
…
gcc –Wall –g –fPIC –o a.o –c a.c
gcc –Wall –g –fPIC –o b.o –c b.c
gcc -shared -Wl,-soname,libdinamica.so \
-o libdinamica.so.1.0 a.o b.o
ln –s libdinamica.so.1.0 libdinamica.so
Biblioteca estática
gcc –Wall –g –o main.exe main.c –I. –L. –ldinamica –Wl,-rpath=$(pwd)
Carga y montaje ./main.exe
en tiempo de compilación
Biblioteca dinámica
Carga y montaje en tiempo de ejecución
Se indica al montar qué biblioteca usar, carga y montaje posterior
65
ARCOS @ UC3M
Alejandro Calderón Mateos
Generación y ejecución de programas
resumen
Módulo
fuente A
Código:
Globales
Locales y parámetros
Dinámicas
Código
Módulo
fuente B
Compilador
Módulo
objeto A
Módulo
objeto B
Bibliotecas
estáticas
Montador
Compilación:
Compilación
Montaje
Enlazado dinámico
Ejecución
Ejecutable A
Bibliotecas
dinámicas
Cargador
Proceso 1
66
ARCOS @ UC3M
Alejandro Calderón Mateos
Contenidos
Qué es un sistema operativo.
1.
1.
Cómo es por fuera.
2.
1.
Ejecutables y bibliotecas
Cómo es por dentro.
3.
1.
67
Características principales
Ejecución asíncrona
ARCOS @ UC3M
Alejandro Calderón Mateos
Estructura del sistema operativo
Usuarios
Aplicaciones
Shell
Interfaz de usuario
API
Servicios
Interfaz de programador
Kernel
Gestor de recursos.
Sistema
Operativo
Máquina extendida.
Hardware
68
ARCOS @ UC3M
Alejandro Calderón Mateos
Estructura del Sistema Operativo
Monolítico (macrokernel)
App
Sistema monolítico.
No estructurado.
Desde cualquier punto del
código se puede acceder a
cualquier variable o función de
otra parte del núcleo (kernel)
[I] muy difícil de mantener,
muy sensible a errores
App
Modo Usuario
Modo Kernel
Servicios del sistema
Procedimientos y
estructuras del
sistema operativo
Hardware
69
ARCOS @ UC3M
Alejandro Calderón Mateos
Estructura del Sistema Operativo
En subsistemas
Sistema monolítico, compuesto
de subsistemas lógicos que
ofrecen interfaces bien definidas
como puntos de entrada.
Se agrupan procedimientos y
estructuras de datos
relacionadas.
App
App
Modo Usuario
Modo Kernel
Servicios del sistema
…
Subsistema 1
Ejemplo:
Linux
70
Hardware
ARCOS @ UC3M
Alejandro Calderón Mateos
Estructura del Sistema Operativo
Por capas
Binario monolítico aunque
codificado estructurado de forma
lógica en capas.
Cada capa proporciona acceso
únicamente a la interfaz de
niveles inferiores.
Ejemplo:
THE (Dijkstra)
Multics, que añadió a la noción de
capa la idea de anillos de privilegios
71
App
App
Modo Usuario
Modo Kernel
Servicios del sistema
G. dispositivos de E/S
Planificación e IPC
Gestión de memoria
Hardware
ARCOS @ UC3M
Alejandro Calderón Mateos
Estructura del Sistema Operativo
Microkernel
Además de estructurado,
los principales componentes
se ejecutan como procesos
servidores, fuera del kernel.
El microkernel tiene:
Planificación y gestión de procesos.
Gestión de memoria virtual básica.
Comunicación entre procesos básica.
App
Cliente
Servidor
de memoria
Servidor
de procesos
Servidor
de red
Servidor
de ficheros
Servidor
Pantallas
Modo Usuario
Modo Kernel
petición
Microkernel
respuesta
Ejemplo:
Match, QNX, Minix, L4, etc.
72
Hardware
ARCOS @ UC3M
Alejandro Calderón Mateos
Estructura del Sistema Operativo
Windows 2000 (visión simplificada)
Subsistemas de entorno
Procesos del
Sistema y
Servicios
Aplicaciones
Usuario
OS/2
Win32
POSIX
DLLs de SubsitemaL
Ntdll.dll
Usuario
Kernel
Ejecutivo
Drivers
Kernel
Win32
User/GDI
Hardware Abstraction Layer (HAL)
73
http://technet.microsoft.com/en-us/library/cc750820.aspx
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejemplo de estructura de subsistemas
Linux (versión simplificada)
Shell
Usuario
Servicios
Kernel
Núcleo
74
ARCOS @ UC3M
Alejandro Calderón Mateos
SS.OO. Reales
Linux (versión ‘menos’ simplificada)
75
http://www.makelinux.net/kernel_map.shtml
ARCOS @ UC3M
Alejandro Calderón Mateos
Contenidos
Qué es un sistema operativo.
1.
1.
Cómo es por fuera.
2.
1.
Ejecutables y bibliotecas
Cómo es por dentro.
3.
1.
76
Características principales
Ejecución asíncrona
ARCOS @ UC3M
Alejandro Calderón Mateos
Estructura del sistema operativo
Usuarios
Aplicaciones
Shell
Interfaz de usuario
API
Servicios
Interfaz de programador
Kernel
Gestor de recursos.
Sistema
Operativo
Máquina extendida.
Hardware
77
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejecución asíncrona
ejecución (general)
--------------------------------------------------------------------------------------
78
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejecución asíncrona
ejecución (general)
Al llegar un evento (ex)
se ejecuta el manejador
asociado (hx)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
79
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejecución asíncrona
ejecución (general)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
80
Al finalizar el manejador, se
continúa la ejecución por
donde fue interrumpida
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejecución asíncrona
código (general)
int main ( … )
{
…
On (event1, handler1) ;
…
}
81
1) Asociar el manejador
(handler1) al evento
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejecución asíncrona
código (general)
void handler1 ( … )
{
}
2) Codificar la función
manejador que tratará el evento
…
int main ( … )
{
…
On (event1, handler1) ;
…
}
82
1) Asociar el manejador
(handler1) al evento
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejecución asíncrona
código (general)
int global1;
…
void handler1 ( … )
{
}
3) Para comunicar funciones,
se usa variables globales
2) Codificar la función
manejador que tratará el evento
…
int main ( … )
{
…
On (event1, handler1) ;
…
}
83
1) Asociar el manejador
(handler1) al evento
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejemplo de ejecución asíncrona
Señales
signal.h
#include<stdio.h>
#include<signal.h>
#include<unistd.h>
void sig_handler (int signo)
{
if (signo == SIGINT)
printf("received SIGINT\n");
}
int main(void)
{
if (signal(SIGINT, sig_handler) == SIG_ERR)
printf("\ncan't catch SIGINT\n");
sleep(60); // simula un proceso largo.
return 0;
}
84
http://www.thegeekstuff.com/2012/03/catch-signals-sample-c-code/
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejecución asíncrona
ejemplo simplificado
Pi
App.
• char buffer[1024];
…
• read(fd,buffer)
•
S.O.
HW.
CPU
85
Disco
RAM
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejecución asíncrona
ejemplo simplificado
Pi
• char buffer[1024];
…
App.
• read(fd,buffer)
•
ll. sistema
• Pedir bloque
• Ejecutar Pi +1
S.O.
HW.
CPU
86
Disco
RAM
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejecución asíncrona
ejemplo simplificado
Pi
• char buffer[1024];
Pi +1
• int x;
…
App.
…
• for (x=0; x<900; x++);
• read(fd,buffer)
•
•
ll. sistema
• Pedir bloque
• Ejecutar Pi +1
S.O.
HW.
CPU
87
Disco
RAM
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejecución asíncrona
ejemplo simplificado
Pi
• char buffer[1024];
Pi +1
• int x;
…
App.
…
• for (x=0; x<900; x++);
• read(fd,buffer)
•
•
ll. sistema
• Pedir bloque
• Ejecutar Pi +1
S.O.
HW.
CPU
88
Disco
RAM
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejecución asíncrona
ejemplo simplificado
Pi
• char buffer[1024];
Pi +1
• int x;
…
App.
…
• for (x=0; x<900; x++);
• read(fd,buffer)
•
•
ll. sistema
S.O.
• Pedir bloque
• Ejecutar Pi +1 • Copiar a RAM
• Pi listo
• Continuar Pi +1
int. hw
HW.
CPU
89
Disco
RAM
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejecución asíncrona
ejemplo simplificado
Pi
• char buffer[1024];
Pi +1
• int x;
…
App.
…
• for (x=0; x<900; x++);
• read(fd,buffer)
•
•
ll. sistema
S.O.
• Pedir bloque
• Ejecutar Pi +1 • Copiar a RAM
• Pi listo
• Continuar Pi +1
int. hw
HW.
CPU
90
Disco
RAM
ARCOS @ UC3M
Alejandro Calderón Mateos
Estructura base del sistema operativo
código (general)
int global1;
…
ll. sistema
void handler1 ( … ) { xxx }
void handler2 ( … ) { xxx }
i.h. 1
…
Red
i.h. 2
Disco
…
91
void handler3 ( … ) {
• Copiar a RAM
• Pu listo
• Continuar Pv
App 1
}
int main ( … )
{
…
On (event1, handler1) ;
On (event2, handler2) ;
On (event3, handler3) ;
…
}
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejecución asíncrona
soporte hardware
Pi
App.
• char buffer[1024];
…
• read(fd,buffer)
•
• Copiar a RAM
• Pu listo
• Continuar Pv
S.O.
• Dato a RAM
• Px listo
• Continuar Py
int. hw
int. hw
HW.
CPU
92
Disco
RAM
X
ARCOS @ UC3M
Alejandro Calderón Mateos
Interrupciones hardware
repaso (1/4)
IDT
Periférico i
PIC
IRQ
Int. i descriptor
INT
vector
...
CPU
Bus Datos
do_IRQ(i)
IRQi_interrupt()
...
Cada periférico (capaz de generar una petición de interrupción) dispone de una línea
denominada IRQ (Interrupt ReQuest)
Puede haber múltiples dispositivos en una línea, se precisa muestreo para conocer el peticionario
Todas las líneas se conectan a un PIC (Programmable Interrupt Controller)
Actualmente se usa un APIC (Advanced Programmable Interrupt Controller)
El PIC se conecta a la CPU por una línea de aviso de interrupción pendiente (INT)
El PIC y la CPU también están conectados por el bus de datos
93
Understanding the Linux kernel (2nd edition)
ARCOS @ UC3M
Alejandro Calderón Mateos
Interrupciones hardware
repaso (2/4)
IDT
Periférico i
PIC
IRQ
Int. i descriptor
INT
vector
...
CPU
Bus Datos
do_IRQ(i)
IRQi_interrupt()
...
El PIC monitoriza las líneas de IRQ esperando la llegada de una señal
Si llega una señal entonces:
Asocia al IRQ del periférico un valor que guarda en un registro del PIC (llamado vector)
Avisa a la CPU a través de la línea de interrupción pendiente (INT)
La CPU lee del registro (como puerto de E/S o como dirección de memoria) el vector
La CPU escribe en el registro de control del PIC que ya leyó el vector
El PIC desactiva la línea de interrupción pendiente. borra el vector y vuelve a monitorizar…
94
Understanding the Linux kernel (2nd edition)
ARCOS @ UC3M
Alejandro Calderón Mateos
Interrupciones hardware
repaso (3/4)
IDT
Periférico i
PIC
IRQ
Int. i descriptor
INT
vector
...
CPU
Bus Datos
do_IRQ(i)
IRQi_interrupt()
...
El PIC puede permitir deshabilitar selectivamente las IRQ
El PIC deja de avisar a la CPU de la petición de una IRQ hasta que se habiliten: no se pierden.
Deshabilitar a nivel de CPU (mask/unmask) es diferente: ignora la INT
El PIC puede permitir tener niveles de prioridad de interrupción
Se asocia a cada IRQ con una prioridad
Si hay varias IRQ, el PIC ‘atiende’ primero las de mayor prioridad (resto: deshabilitado temporalmente)
Si el PIC no tiene niveles de prioridad, se pueden simular por software en el sistema operativo
95
Understanding the Linux kernel (2nd edition)
ARCOS @ UC3M
Alejandro Calderón Mateos
Interrupciones hardware
repaso (4/4)
IDT
Periférico i
PIC
IRQ
Int. i descriptor
INT
...
vector
CPU
Bus Datos
do_IRQ(i)
IRQi_interrupt()
...
La CPU detecta la petición de INT
Acepta la interrupción: copia el vector por el bus de datos y ACK al PIC
Busca en la Interrupt Descriptor Table (IDT) la rutina de tratamiento asociada
Guarda el estado del procesador en pila, pasa a modo privilegiado y ejecuta la RTI
Puede que varias RTI (do_IRQ) compartan una misma interrupción (uso de enumeración)
Puede que varias interrupciones compartan una rutina genérica común a ellas
Recupera el estado de pila, y ejecuta RETI (paso a modo previo y vuelta a lo interrumpido)
96
ARCOS @ UC3M
Alejandro Calderón Mateos
Llamada al sistema
soporte hardware
Pi
• char buffer[1024];
…
App.
• read(fd,buffer)
•
ll. sistema
• Pedir bloque
• Ejecutar Pi +1
S.O.
HW.
CPU
97
Disco
RAM
ARCOS @ UC3M
Alejandro Calderón Mateos
Llamada al sistema
IDT
Int. i descriptor
INT
CPU
Bus Datos
do_IRQ(i)
IRQi_interrupt()
...
Existe una instrucción en ensamblador que genera una interrupción por software
La CPU detecta la petición de INT
Busca en la Interrupt Descriptor Table (IDT) la rutina de tratamiento asociada
Guarda el estado del procesador en pila, pasa a modo privilegiado y ejecuta la RTI
Puede que varias RTI (do_IRQ) compartan una misma interrupción (uso de enumeración)
Puede que varias interrupciones compartan una rutina genérica común a ellas
Recupera el estado de pila, y ejecuta RETI (paso a modo previo y vuelta a lo interrumpido)
98
ARCOS @ UC3M
Alejandro Calderón Mateos
Lección 1
Introducción
Grupo ARCOS
Diseño de Sistemas Operativos
Grado en Ingeniería Informática
Universidad Carlos III de Madrid