IntroduccionSO
-
Upload
darioleonz -
Category
Documents
-
view
2.746 -
download
0
description
Transcript of 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.
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?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 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.
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´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.
Evolución de los Sistemas Operativos:
Multiprogramación
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.
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´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
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.
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.
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.
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.
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).
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.
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 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).
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
Interrupciones
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
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
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):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.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 : &
Estructura de Sistemas Operativos
1.Sistemas monolíticos2.Sistemas en niveles3.Máquinas virtuales4.Modelo cliente-servidor
Sistemas monolíticos
Arquitectura básica
Ej: MS-DOS
Procedimiento principal
Procedimientosde servicio
Procedimientosauxiliares
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 hardwareFull virtualización
ParavirtualizacionVirtualización de sistemas operativosVirtualización de aplicaciones
Virtualización
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