Vous êtes sur la page 1sur 47

Introducción a los Sistemas

Operativos
Agenda:

1. Funciones y objetivos de los SOs. Evolución de los


SOs.
2. Multiprogramación, multiprocesamiento,
ambientes monousuario, multiusuario y multitarea,
paralelismo lógico y real, reentrancia.
Arquitectura general de un computador y apoyo
hardware al SO.
Interrupciones: las interrupciones y el ciclo de
instrucción, tratamiento de interrupciones.
Comunicación con el SO: llamadas al sistema, interfaz
del programador, Posix y Win32, el intérprete de
comandos.
Estructura del SO.
Tipos de SOs.
Funciones y objetivos de los
Sistemas Operativos

 Hacer mas fácil interactuar con el hardware.


 Permitir mejorar y “simplificar” el uso de los
recursos de una computadora o de un equipo.
 La ejecución de diversos aplicativos desde un
sistema.
 Administración de los recursos para que
sean usados por el “nivel de usuario”.
 Permitir la comunicación efectiva
mediante instrucciones, aplicativos, entre
personas y maquina.
Evolución de los Sistemas
Operativos
Primero:

Qué es un sistema operativo?

Una definición podría ser:

Un sistema operativo es un conjunto de


programas que permiten la administración de
recursos en una computadora, así como la
interacción de manera mas sencilla entre el
usuario y la computadora. Se inicia cuando
encendemos la computadora.
Evolución de los sistemas
operativos:
Sistemas Operativos por lotes
Finales década 50, IBM 709 (Usaba tubos al vacio).
Muchos autores atribuyen los comienzos de los
sistemas operativos a sistemas operativos por lotes
(batch operating systems). Hoy día muchos sistemas
operativos aún lo usan, por no decir todos.
Evolución de los Sistemas
Operativos:
Como ocurría el batch
Sistemas Operativos por lotes:

 Monitor residente (Resident monitor).


 El usuario coloca los trabajos en el monitor.
 El operador hace un lote para el trabajo.
 El Monitor controla la secuencia de los
trabajos del lote.
 Cuando un trabajo finaliza, el controlador
(Monitor) esta listo para el próximo trabajo.
 El monitor programa los trabajos.

De forma similar podemos encontrar hoy la


ejecución de archivos tipo batch.
Evolución de los Sistemas
Operativos:
Como ocurría el batch
Evolución de los Sistemas
Operativos:
Mas del batch

Procesamientos por lotes:

Se colocaban todos los programas uno tras otro


para que fueran ejecutados al terminar el
anterior.

Almacenamiento temporal:

Se hacia simultáneamente la carga del trabajo


y la salida de otro trabajo, se usaba una técnica
que se conoce como spooling (hoy aún usada).
Evolución de los sistemas
operativos:
IBM 701 (1940-1955 apx)

IBM 701 año 1954 sin sistemas operativos


operada por usuarios, 15 minutos para un
calculo de los cuales 10 min era configurando el
equipo.
Evolución de los Sistemas
Operativos:
60´s

Multiprogramación:

El sistema ejecuta varias operaciones al


mismo tiempo. De esta manera:
Cuando el programa esta interactuando
con dispositivos de E/S el sistema atiende
otro programa y así sucesivamente, por
supuesto es necesario contar con algún
medio de almacenamiento.
Evolución de los Sistemas
Operativos:
Multiprogramación
Evolución de los Sistemas
Operativos:
Tiempo compartido
Grandes cantidades de memoria para la época, el
recién descubierto disco duro, permitieron la
evolución de la multiprogramación y el
surgimiento del “tiempo compartido” (time
sharing).

1960- Sistemas operativos “tiempo compartido”


(time sharing), El sistema mientras interactúa
con un dispositivo de E/S cede el CPU a otro
programa (ídem a multiprogramación) la
diferencia radica en que cuando un aplicativo
alcanza un tiempo de ejecución se detiene para
cederle el procesamiento a otro aplicativo.
Evolución de los Sistemas
Operativos:
Tiempo real

El sistema operativo dedica el tiempo


completo a la ejecución de algún aplicativo.
Muchas veces relacionados a ejecuciones
externas en el computador. Sino se respeta
el tiempo para ejecución se asume que
fallo la operación.
Evolución de los Sistemas
Operativos: Multiprocesadores
Es tal cual como su nombre lo indica:

Puede suceder que por tener mas de un


procesador dos programas se ejecuten
simultáneamente. Se resuelve usando:

Arquitectura NUMA: Cada procesador tiene


control único sobre memoria.
Arquitectura SMP: Todos los procesadores
comparten toda la memoria y para ellos se usa un
pequeño cache sobre cada procesador donde
apuntara las direcciones de memoria que cada
procesador este usando.
Evolución de los sistemas
operativos: Los sistemas
operativos de los 60´s
1. Atlas Supervisor de Atlas Computer
concurrencia en el manejo de sus
procesos.
2. OS/360 de IBM.
3. Unix de los laboratorios Bell de AT&T
Evolución de los Sistemas
Operativos: 70´s

Para esta década surge el lenguaje C con la intención


principal de re-escribir Unix.

MVS (Multiple Virtual Storage): Usado para los


mainframes de IBM, permitía ejecución de múltiples
tareas, incluyo el uso de la memoria virtual, permitiendo
que cada programa tuviera su propio espacio reservado
en memoria.
CP/M (Control Program/Monitor): Desarrollado
para las computadoras personales de la época, era
portable ya que estaba sobre discos de 8”. Estaba
compuesto de dos subsistemas un interprete de
comandos y traductor para el BIOS.
Evolución de los Sistemas
Operativos: 80´s

Con la creación de los circuitos LSI-


Integración de chips que incluían miles de
transistores por milímetros cuadrados; surgen
los sistemas operativos tales como:

MS-DOS (Microsoft Disk Operating


System): Surgido de la modificación de un
sistema de nombre QDOS comprado por Billy
Gates por 50.000$, dicho sistema estaba hecho
para los equipos INTEL 8086, Este sistema
evolucionó hasta la versión 7.1 para luego
formar parte de Windows.
Evolución de los Sistemas
Operativos: 80´s

Apple Macintosh: Se lanzó oficialmente


en 1984 y se tildo de juguete por ser
orientado a interfaz grafica de usuario
(GUI). Tiene características sobre su System
7, tales como multitarea, interfaz
totalmente grafica, memoria virtual.
Evolución de los Sistemas
Operativos: 90´s

GNU/LINUX: Aparece el núcleo de Linux,


creado por Linus Torvalds, sistema basado en
Unix, buena parte de sus manejo es por línea
de comandos, hoy día dispone de ambientes
gráficos como KDE/GNOME, admite
multitarea real, memoria virtual, bibliotecas
compartidas, carga por demanda.
Evolución de los Sistemas
Operativos: 90´s

GNU/LINUX: Funciona en base a un


núcleo monolítico (figura izquierda) en vez
de micronúcleo (Figura derecha).
Evolución de los Sistemas
Operativos: 90´s

Microsoft Windows: Surgió en 1985,


algunos dicen que hasta el surgimiento de
windows 95 era una extensión de MS-DOS.
Sistema operativo mas famoso a nivel global,
multitarea, memoria virtual, interfaz grafica,
son algunas de sus características principales.
Algunos Conceptos

1. Multiprogramación: Alternancia del procesador


con E/S.
2. Multiprocesamiento: Multiprocesamiento
simetrico, no comparten la memoria, SMP
comparten la memoria por BUS.
3. Ambiente Monousuario: Sistema que puede
ser usado por un solo usuario, ejemplo
Windows (Versiones iniciales).
4. Multiusuario: Contrario al anterior.
5. Multitarea: Permite que se puedan ejecutar
varias tareas simultáneamente.
Algunos Conceptos

1. Paralelismo: la idea de paralelismo tiene que


ver con aplicar multiples porcesadores a un
solo problema. Problemas como información
procesadas por satelites, Análisis del cuerpo
humano, etc. Los supercomputadores hoy día
solo alacanzan poco billones de operaciones
por segundo, un ejemplo tiene que ver con los
ciclos de reloj de ejecución del procesador , ej:
200MHZ, (200 millones de ciclos por segundo),
no implica que se ejecuten 200 millones de
instrucciones porque las instrucciones no
demoran un ciclo.
Algunos Conceptos

1. Paralelismo: un periférico electrónico tiene


una velocidad máxima de 10^12 operaciones
por segundo. Tardan más en viajar de un
dispositivo a otro. Esto puede ser resuelto por
el paralelismo.
Dependiendo del flujo de datos, los
computadores se pueden dividir en:
SISD: Simple flujo de instrucciones, simple
flujo de datos: Memoria y Procesador actúan
uno a uno, la mayoría de equipos funcionan
así.
Algunos Conceptos

1. Paralelismo MISD: Múltiple flujo de


instrucciones, simple flujo de datos: N
procesadores comparten la memoria, N flujo
de instrucciones un solo flujo de datos.
2. Paralelismo SIMD: Simple flujo de
instrucciones, múltiple flujo de datos: N
procesadores con sus memorias, el flujo de
instrucciones esta centralizado, todos reciben
la misma instrucción y la ejecutan y algunos
quedaran desocupados hasta la próxima
instrucción.
Algunos Conceptos

1. Paralelismo MIMD: Múltiple flujo de instrucciones,


múltiple flujo de datos, N procesadores, con N
flujo de datos, la idea es ir resolviendo
subproblemas del subproblema principal, operan
asincrónicamente, computadores con memoria
común son multiprocesadores, computadores
interconectados para compartir el flujo de datos
son multicomputadores.
De otra manera el paralelismo se ha tratado de
evolucionar desde el punto de vista de la
programación. Una de las técnicas mas famosas
para resolver este inconveniente es Software
Pipeline.
Algunos Conceptos

1. Reentrancia: Es básicamente la ejecución de


un programa por múltiples instancias,
ejemplo: Kernel de Unix/Linux son reentrantes
ósea varios procesos en modo kernel se
pueden ejecutar a la vez. Si un kernel es
reentrante y ocurre una interrupción este
detiene el proceso.
Un kernel reentrante permite que se empiece
a ejecutar otro proceso si hay una
interrupción, una excepción o la alternancia
entre procesos y la E/S.
Arquitectura de un computador y
apoyo del hardware al SO

[wikipedia]
Interrupciones

Interrupción es una señal recibida por el


procesador indicando que se debe interrumpir la
tarea actual y pasar a ejecutar algún código.

Inicialmente se ejecutaba una técnica de nombre polling


que consistía en sondear del lado del procesador a los
periféricos.
Actualmente las interrupciones están dadas por un
dispositivo que regula las interrupciones, en muchas
oportunidades esto era por un circuito en la placa base
conocido como contador de interrupciones 8259 (intel),
ahora este se denomina chipset (circuito integrado
auxiliar).
Interrupciones

Los chipset hoy en día suelen estar formados


por 2 circuitos auxiliares de nombres:

1. NorthBridge (Puente norte), que controla RAM,


PCI express, AGP y la comunicación con:
2. SouthBridge (Puente sur), que controla toda la
comunicación con el resto de dispositivos.

Básicamente ellos controlan las interrupciones.


Interrupciones

Procesamiento del IRQ (Interrupt ReQuest):

1. Terminar la ejecución de una instrucción.


2. Salva el valor de contador de programa, en la
pila, de manera que en la CPU, al terminar el
proceso, pueda continuar.
3. La CPU va a la dirección donde está almacenada
la rutina de interrupción (ISR), y ejecuta la
rutina que tiene como objetivo atender el
dispositivo que generó la interrupción.
4. Regresa al paso 2.
Interrupciones

Las interrupciones manejadas por software


se conocen como TRAPS o excepciones.

1. En windows, podriamos buscarlos en:


C:\Archivos de programs\archivos
comunes\microsoftshared/MSINFO

1. En Linux, more /proc/interrupts


Llamadas al sistema

Es un mecanismo empleado por un aplicativo


para realizar una solicitud al equipo.

Las llamadas al sistema usan instrucciones


especiales del CPU que causan que el procesador
transfiera el control a un código privilegiado.
Cuando las llamadas al sistema son invocadas, la
ejecución del aplicativo que llamo se ve
interrumpida y almacenada y sus datos son
guardados, hasta que se ejecuta en modo
privilegiado y regresa a la ejecución del
aplicativo
Llamadas al sistema

 A cada llamada al sistema le


corresponde un procedimiento que el
programa de usuario puede llamar.
 El procedimiento se encarga de iniciar la
llamada al sistema (mediante un TRAP).
 Son distintas en cada sistema.
 ej: count = read (file, buffer, nbytes).
Llamadas al sistema
Librerías

Las  llamadas  al  sistema  en  los 


sistemas  *nix  son  las  que 
efectúan  casi  todas  las  tareas  de 
manejo  de  programas  sobre  todo 
en  espacio  kernel,  en  la  figura 
contigua,  ejemplo  tipico  de 
librerias  comunicandose  entre  el 
kernel  y  aplicaciones  en  espacio 
usuario.
Llamadas al sistema

En sistemas del tipo POSIX, hay algunas llamadas


comunes: open, close, write, fork, etc.

Hoy día los sistemas operativos tienen cientas.

Para las ejecuciones básicamente lo que ocurre es


que una llamada al sistema principal generalmente
hace otras llamadas a sistema mas pequeñas estas
se comunican con el procesador mediante la
interrupción 0x80 (linux en casi todos los casos),
esta se ejecuta y verifica si hay errores, si hay los
refleja, sino muestra la salida correcta.
Interfaz del Programador

API (Application Programming Interface):

Es un conjunto de funciones,
procedimientos, métodos o clases que un
sistema operativo, una librería o servicio
proveen peticiones de soporte para
programas de computadoras.
POSIX Y WIN32

POSIX (Portable Operating System


Interface, Unix):
“Familia de estándares de llamadas al sistema operativo
definidos por la IEEE, que persiguen generalizar las
interfaces de los sistemas operativos para que una
misma aplicación pueda ser ejecutada en distintas
plataformas”.
[Wikipedia]

Win32: Es el API de windows PODRÍA ser definido como


estándar algunas veces se conoce como WinApi, este
estándar se debe seguir cuando quiero desarrollar algún
aplicativo para Windows. Kernel32.dll, user32.dll
Intérprete de comandos

1. No es parte del S.O


2. Constituye la interfaz entre el S.O y el usuario
3. Un shell se arranca por cada usuario que entra en el
sistema
4. Por cada orden, el shell crea un proceso hijo
5. Redirección de E/S y pipes:
 date > fichero
 sort < f1 > f2
 cat f1 f2 f3 | sort > f4
1. Procesos en backgroung : &
Estructura de Sistemas
Operativos

1.Sistemas monolíticos
2.Sistemas en niveles
3.Máquinas virtuales
4.Modelo cliente-servidor
Sistemas monolíticos

 Arquitectura básica

Procedimiento principal

Procedimientos
de servicio

Procedimientos
auxiliares

 Ej: MS-DOS
Sistemas en Niveles

 Jerarquía de niveles
 S.O. The (Dijkstra 1968)
Virtualización

Se refiere a poder crear


objetos virtuales de objetos
reales, hoy día el concepto
es bastante explotado por
parte de fabricantes como
INTEL o AMD, basicamente
podemos definir dos tipos
de virtualización:

 Virtualización de
plataforma.
Virtualización de
recursos.
Virtualización

Particionamiento de hardware
Full virtualización
Virtualización

Paravirtualizacion
Virtualización de sistemas operativos
Virtualización de aplicaciones
Virtualización de recursos

Lo que se trata es de utilizar varios recursos para simular


un recurso mas potente, el mejor ejemplo CLUSTERS
Virtualización de recursos

1. Tipo Beowulf: Alto rendimiento

2. Tipo HA: Alta disponiblidad

3. Tipo SSI: Balanceo de cargas

4. Grid: Alto rendimiento mucho


tiempo
Modelo Cliente-Servidor

Es sencilla la adaptación a sistemas distribuidos