Está en la página 1de 32

Arquitectura de Sistemas

Historia de los sistemas operativos

Gustavo Romero López

Actualizado: 21 de febrero de 2018

Arquitectura y Tecnologı́a de Computadores


Índice

1. Definición

2. Historia

3. Estructura

4. Ejemplos

5. Comparativa

2
Lecturas recomendadas

Jean Bacon Operating Systems (2, 26)

Abraham Silberschatz Fundamentos de Sistemas Operativos (2)

William Stallings Sistemas Operativos (2)

Andrew Tanuenbaum Sistemas Operativos Modernos (1,12)

3
Motivación

} La arquitectura de un SO marca de forma vital su funcionamiento.


} Cada posible elección tendrá consecuencias ineludibles.
} Ejemplo: el compromiso velocidad/espacio:
int bit_count ( int byte ) {
int count = 0;
for ( int i = 0; i < 8; i ++)
if (( byte >> i ) & 1)
++ count ;
return count ;
}
---------------------------------------------------------------------------

# define bit_count ( b ) (( b > >0) &1) + (( b > >1) &1) + (( b > >2) &1) + (( b > >3) &1) +
(( b > >4) &1) + (( b > >5) &1) + (( b > >6) &1) + (( b > >7) &1) ;
---------------------------------------------------------------------------

# define bit_count ( b ) b &1 + b &2 + b &4 + b &8 + b &16 + b &32 + b &64 + b &128;
---------------------------------------------------------------------------

char bits [256] = {0 , 1 , 1 , 2 , 1 , 2 , 2 , 3 , 1 , 2 , 2 , 3 , 2 , 3 , 3 , 4 , 1 ,


2 ,..};
---------------------------------------------------------------------------

unsigned popcount ( unsigned elem ) {


unsigned count ; 4
asm (" popcnt %1, %0":"= r "( count ) :" r "( elem ) ) ;
¿Qué es un sistema operativo?

} ¿Todos los programas que vienen con el ordenador al


comprarlo? =⇒ no.
} ¿Todo lo que viene en el CD/DVD del creador del SO? =⇒
no.
} Los programas que nos permiten utilizar el ordenador (... con
suerte eficientemente) =⇒ si.
◦ Interfaz con el ordenador:
◦ desarrollo de programas
◦ ejecución de programas
◦ acceso a dispositivos de E/S
◦ acceso al sistema de ficheros
◦ protección y seguridad
◦ detección y respuesta a errores
◦ contabilidad
◦ Gestor de recursos.
5
Historia

} Primera generación (1945-55)


} Segunda generación (1955-65)
} Tercera generación (1965-80)
} Cuarta generación (1980-hoy)

6
Primera generación (1945-55)

} Utilidad: máquinas de cálculo.


} Tecnologı́a: dispositivos mecánicos ⇒ tubos de
vacio y paneles.
} Método de programación: cables ⇒
interruptores y tarjetas perforadas.
} Diseño/construcción/operación/programación/-
mantenimiento: genios como Aiken, von
Newman o Mauchley.

7
Segunda generación (1955-65)

} Utilidad: cálculo cientı́fico e ingenierı́a.


} Tecnologı́a: la invención del transistor redujo su tamaño y
precio y los popularizó ⇒ mainframes/IBM 1401/7094.
} Método de programación: ensamblador y lenguajes de alto
nivel (FORTRAN) sobre tarjetas perforadas.
} Paso de procesamiento secuencial a procesamiento por lotes.
} Ejemplos: FMS y IBSYS.

8
Tercera generación (1965-80)

} 2 usos principales:
◦ cálculo cientı́fico e
ingenierı́a.
◦ procesamiento de
carácteres.
} Circuito integrado ⇒
+barato ⇒ +popular ⇒
IBM 360, GE-645, DEC
PDP-1.
} Logros destacables:
◦ multiprogramación.
◦ spooling.
◦ tiempo compartido.
} Ejemplos: OS/360, CTSS,
MULTICS, UNIX.
9
Cuarta generación (1980-hoy)

} (V)LSI ⇒ ++barato ⇒ } Ejemplos: UNIX, CP/M,


++popular ⇒ IBM PC. MS-DOS, Linux, MacOS,
} µP: 8080, Z80, 8086, 286, Windows 1..10.
386, 486, Pentium, Core 2,
Athlon, Alpha, Ultrasparc.
} Logros destacables:
◦ GUI.
◦ SO de red.
◦ SMP.
◦ SO distribuidos.

10
Clasificación de SO según su estructura

} Clasificación:
◦ Estructura simple:
◦ monolı́ticos
◦ capas
◦ modulares
◦ Estructura cliente/servidor:
◦ micronúcleo
◦ exonúcleo
◦ Máquina virtual.
◦ Hı́bridos.
} Tendencias:
◦ Núcleos extensibles.
◦ Multiservidores sobre un micronúcleo.
◦ Núcleos hı́bridos.

11
Monolı́tico

} El SO completo se ejecuta programas de 103 lı́neas


en modo protegido. que uno de 106 .
} Nula protección entre los
componentes.
} Ventajas:
◦ Economı́a de cambios de
contexto ⇒ +eficiente.
} Inconvenientes:
◦ Falta de protección ⇒
-fiabilidad
(controladores).
◦ Manejo de la
complejidad: Es más
sencillo escribir 103
12
Capas/Niveles

} El SO completo se ejecuta } ¿Cómo subdividir?


en modo protegido.
} Escasa protección entre los
componentes.
} Ventajas:
◦ Economı́a de cambios de
contexto ⇒ +eficiente.
◦ Menor complejidad.
} Inconvenientes:
◦ Falta de protección ⇒
-fiabilidad
(controladores).
◦ Menos flexible que
monolı́tico.

13
Modular

} El SO completo se ejecuta } ¿Qué colocar en el núcleo y


en modo protegido. qué en módulos?
} Escasa protección entre los
componentes.
} Ventajas:
◦ Economı́a de cambios de
contexto ⇒ +eficiente.
◦ Menor complejidad.
} Inconvenientes:
◦ Falta de protección ⇒
-fiabilidad
(controladores).
◦ Menos flexible que
monolı́tico.

14
Micronúcleo

} Una mı́nima parte del SO


se ejecuta en modo
protegido.
} Ventajas:
◦ Perfecta protección entre
componentes ⇒
+fiabilidad.
◦ Manejo de la
complejidad.
◦ Facilidad de
programación.
} Inconvenientes:
◦ Sobrecarga en las
comunicaciones ⇒
-eficiencia.
15
Exonúcleo

} Apenas existe SO, sólo un ◦ Pobre reutilización de


gestor de recursos. código.
} Dejamos que el software
acceda directamente al
hardware.
} Ventajas:
◦ Perfecta protección entre
componentes ⇒
+fiabilidad.
◦ Acceso directo al
hardware ⇒ máxima
eficiencia
} Inconvenientes:

16
Máquina virtual

} N copias virtuales de la } Inconvenientes:


máquina real:
◦ La simulación del
◦ Software: Bochs, Qemu,
hardware real puede ser
VMWare, Xen.
costosa ⇒ poco
◦ Hardware: VMWawe,
eficiente
Xen.
} IBM VM/370 (1972).
} Ventajas:
◦ Perfecta protección entre
componentes ⇒
+fiabilidad.
◦ Mejor aprovechamiento
del hardware.
◦ Máxima reutilización de
código.
17
Hı́drida

} Mezcla más frecuente: micronúcleo + monolı́tico.


} Ventaja: =⇒ ganamos velocidad respecto a micronúcleo.
} Inconveniente: =⇒ perdemos protección entre componentes.

18
MS-DOS

19
Windows 2000

20
Linux

21
Mach

22
MacOS X

23
QNX

24
Coste estructural: monolı́tico

} 1 llamada al sistema: compartir información.


◦ entrada al núcleo.
◦ cambio al espacio de
direcciones del núcleo.
◦ recuperar el espacio de
direcciones original.
◦ salida del núcleo.
} 1 llamada a
procedimiento: llamada
y retorno en el interior del
espacio de direcciones del
núcleo y pudiendo

25
Coste estructural: micronúcleo
} 4 llamadas al sistema:
◦ entrada al micronúcleo.
◦ cambio al espacio de direcciones del micronúcleo.
◦ transferencia del mensaje.
◦ recuperar el espacio de direcciones original.
◦ salida del micronúcleo.

26
Coste estructural: multiservidor

27
El desastre de los 100 µs (micronúcleos de 1a generación)

28
Sobrecarga por comunicación entre procesos

29
L4Linux

30
Coste estructural: cambio de contexto

} Linux 2.4.21: 13200 ciclos/5.4µs en un Pentium 4 a 2.4GHz


} L4 (Liedtke, Achieved IPC performance):

31
¿Te aburres?

} Barrelfish
} PikeOS
} L4 ⇒ seL4
} Singularity ⇒ Midori

32

También podría gustarte