IntroduccionSO

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.

description

Introducción a Sistemas Operativos - Universidad Catolica Andrés Bello

Transcript of IntroduccionSO

Page 1: IntroduccionSO

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.

Page 2: IntroduccionSO

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.

Page 3: IntroduccionSO

Evolución de los Sistemas Operativos

Primero:

Qué es un sistema operativo?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.

Page 4: IntroduccionSO

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.

Page 5: IntroduccionSO

Evolución de los Sistemas Operativos:

Como ocurría el batchSistemas 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.

Page 6: IntroduccionSO

Evolución de los Sistemas Operativos:

Como ocurría el batch

Page 7: IntroduccionSO

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

Page 8: IntroduccionSO

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.

Page 9: IntroduccionSO

Evolución de los Sistemas Operativos:

60´s60´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.

Page 10: IntroduccionSO

Evolución de los Sistemas Operativos:

Multiprogramación

Page 11: IntroduccionSO

Evolución de los Sistemas Operativos:

Tiempo compartidoGrandes 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.

Page 12: IntroduccionSO

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.

Page 13: IntroduccionSO

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.

Page 14: IntroduccionSO

Evolución de los sistemas operativos: Los sistemas

operativos de los 60´s60´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

Page 15: IntroduccionSO

Evolución de los Sistemas Operativos: 70´s70´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.

Page 16: IntroduccionSO

Evolución de los Sistemas Operativos: 80´s80´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.

Page 17: IntroduccionSO

Evolución de los Sistemas Operativos: 80´s80´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.

Page 18: IntroduccionSO

Evolución de los Sistemas Operativos: 90´s90´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.

Page 19: IntroduccionSO

Evolución de los Sistemas Operativos: 90´s90´s

GNU/LINUX: Funciona en base a un núcleo monolítico (figura izquierda) en vez de micronúcleo (Figura derecha).

Page 20: IntroduccionSO

Evolución de los Sistemas Operativos: 90´s90´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.

Page 21: IntroduccionSO

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.

Page 22: IntroduccionSO

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.

Page 23: IntroduccionSO

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í.

Page 24: IntroduccionSO

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.

Page 25: IntroduccionSO

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.

Page 26: IntroduccionSO

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.

Page 27: IntroduccionSO

Arquitectura de un computador y apoyo del hardware al SO

[wikipedia]

Page 28: IntroduccionSO

Interrupciones

Interrupción es una señal recibida por el Interrupción es una señal recibida por el procesador indicando que se debe interrumpir la procesador indicando que se debe interrumpir la

tarea actual y pasar a ejecutar algún código.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).

Page 29: IntroduccionSO

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

Page 30: IntroduccionSO

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

Page 31: IntroduccionSO

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

Interrupciones

Page 32: IntroduccionSO

Llamadas al sistema

Es un mecanismo empleado por un aplicativo Es un mecanismo empleado por un aplicativo para realizar una solicitud al equipo.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

Page 33: IntroduccionSO

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

Page 34: IntroduccionSO

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.

Page 35: IntroduccionSO

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.

Page 36: IntroduccionSO

Interfaz del Programador

API (Application Programming Interface):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.

Page 37: IntroduccionSO

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

Page 38: IntroduccionSO

Intérprete de comandos

1. No es parte del S.O2. Constituye la interfaz entre el S.O y el usuario3. Un shell se arranca por cada usuario que entra en el

sistema4. Por cada orden, el shell crea un proceso hijo5. Redirección de E/S y pipes: date > fichero sort < f1 > f2 cat f1 f2 f3 | sort > f4

1. Procesos en backgroung : &

Page 39: IntroduccionSO

Estructura de Sistemas Operativos

1.Sistemas monolíticos2.Sistemas en niveles3.Máquinas virtuales4.Modelo cliente-servidor

Page 40: IntroduccionSO

Sistemas monolíticos

Arquitectura básica

Ej: MS-DOS

Procedimiento principal

Procedimientosde servicio

Procedimientosauxiliares

Page 41: IntroduccionSO

Sistemas en Niveles

Jerarquía de niveles S.O. The (Dijkstra 1968)

Page 42: IntroduccionSO

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.

Page 43: IntroduccionSO

Virtualización

Particionamiento de hardwareFull virtualización

Page 44: IntroduccionSO

ParavirtualizacionVirtualización de sistemas operativosVirtualización de aplicaciones

Virtualización

Page 45: IntroduccionSO

Virtualización de recursos

Lo que se trata es de utilizar varios recursos para simular un recurso mas potente, el mejor ejemplo CLUSTERS

Page 46: IntroduccionSO

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

Page 47: IntroduccionSO

Modelo Cliente-Servidor

Es sencilla la adaptación a sistemas distribuidos