Introduccion Sistemas Operativos
Introduccion Sistemas Operativos
Introduccion Sistemas Operativos
Sistemas Operativos
Octubre – 2021
Un sistema operativo es un programa
(software) que…
Operador de tablero
de
conmutación
Operadores de
computadores
Estructura de un sistema de
computación
• Un sistema de computación puede
ser dividido en cuatro componentes:
– Hardware – proporciona los recursos Usuario
básicos de computación 3
Editor de texto
Usuario Usuario
• CPU, memoria, dispositivos de E/S 2 4
Hoja electrónica Bases de
– Sistema operativo Aplicaciones
datos
Árbitr
o
Ilusionist
a
Pegamen
to
¿Qué hace un sistema
operativo?
Roles de un Sistema
Operativo
• Árbitro:
– Asignación de recursos entre usuarios y aplicaciones
– Aislamiento entre usuarios y aplicaciones
– Comunicación entre usuarios y aplicaciones
• Ilusionista
– Cada aplicación tiene la sensación de tener reservada una
máquina completa de forma exclusiva
– Las limitaciones y los detalles físicos se enmascaran
– Proporciona objetos de alto nivel, como los archivos
• Pegamento
– Entorno de ejecución con un conjunto común de servicios
– Los archivos escritos por una aplicación pueden ser leidos
por otra
¿Qué hace un sistema
operativo?
Ejemplo de roles: Sistemas de
archivos
• Árbitro
– Evita que un usuario acceda sin permiso los archivos
de otro
• Ilusionista
– Archivos y directorios
– Los archivos pueden crecer a tamaños (casi)
arbitrarios
– E/S de caracteres o de bloques dependiendo si es en
el disco o en la red
– Detalles del disco, como el tamaño del sector, se
ocultan
• Pegamento
– Comandos de apertura de archivos, impresión de
archivos o lectura de archivos [open(),
¿Qué hace un sistema
operativo?
• Depende del punto de vista:
– del usuario
– del sistema
• Un usuario desea conveniencia, facilidad de uso y buen
desempéño
– NO le interesan los detalles de la utilización de los recursos
• Sin embargo, en sistemas de cómputo compartido, como un
mainframe o un minicomputador, el sistema operativo
debe tener satisfechos todos los usuarios
• Los usuarios de sistemas dedicados, como las estaciones
de trabajo (workstations) tienen recursos dedicados, pero
en muchas ocasiones comparten recursos desde servidores
• Los dispositivos móviles generalmente tienen pocos
recursos, y deben optimizar la usabilidad y la vida de la
batería
• Algunos computadores tienen muy poca o ninguna interfaz
para el usuario, como los computadores embebidos en
dispositivos del hogar o en automóviles. Muchos ejecutan
Definición de Sistema operativo
• NO hay una definición aceptada “universalmente” de un Sistema
que cumple muchos roles.
• El sistema operativo es un asignador de recursos
– Gestiona todos los recursos
– Decide entre solicitudes conflictivas para garantizar el uso eficiente y
equitativo de los recursos
• El sistema operativo es un programa de control
– Controla la ejecución de los programas para prevenir la ocurrencia de
errores y mejorar el uso del computador
• “Todos los componentes que el proveedor integra y agrupa cuando
se ordena un sistema operativo” es una aproximación
– Pero varía bastante
• “Aquel programa que se ejecuta todo el tiempo en el computador”
es el kernel.
– Cualquier otro software es o
• Un programa del sistema (incluido con el Sistema operativo) , o
• Un programa de aplicación.
• Los Sistemas operativos de equipos móviles también incluyen
middleware: frameworks de software que proveen servicios
adicionales a los desarrolladores de aplicaciones como bases de
datos, multimedia, gráficas
GNU/Linux
• Un comentario antes de seguir: Algunos “puristas” amantes
del Sistema operativo Linux, señalan que el nombre
completo del Sistema operativo debe ser GNU/Linux.
– Para las personas del Proyecto GNU, Linux es realmente el kernel
del Sistema operativo. Muchas otras cosas que están por fuera
del kernel vienen del Proyecto GNU de la Free Software
Foundation (https://www.fsf.org/es).
– Por esta razón los “puristas” llaman al Sistema completo
"GNU/Linux" del cual el kernel Linux es un componente esencial.
• Teniendo en cuenta esta aclaración, y a pesar de los
“puristas”, es preciso decir que casi todo el mundo reconoce
la palabra “Linux” como el nombre del Sistema completo.
– La sigla "GNU" del nombre del Proyecto significa "GNU is Not
Unix"
Retos del sistema operativo
• Confiabilidad
– ¿El Sistema realiza las funciones para las que fue
diseñado?
• Disponibilidad
– ¿Que proporción del tiempo está funcionando el sistema
correctamente?
• Mean Time To Failure (MTTF), Mean Time to Repair (MTTR)
• Availability = MTTF / (MTTF + MTTR)
• http://blog.fosketts.net/2011/07/06/defining-failure-mttr-mttf-mtbf/
• Seguridad
– ¿el Sistema puede ser comprometido por un atacante?
• Confidencialidad
– La información solo la puede accede un grupo de usuarios
autorizados
Socket
Retos del sistema operativo
• Portabilidad
– Para los programas:
• Application
programming interface
(API)
• Abstract virtual machine
(AVM)
– Para el sistema
operativo
• Capa de abstracción del
Hardware
Retos del sistema operativo
• Desempeño
– Tiempo de latencia/respuesta
• ¿Cuánto tiempo toma realizar una operación de forma
completa?
– Rendimiento (Throughput)
• ¿Cuántas operaciones pueden ser realizadas por unidad de
tiempo?
– Trabajo adicional (Overhead)
• ¿Cuánto trabajo extra es realizado por el Sistema
operativo?
– Equitatividad (Fairness)
• ¿Qué tan equitativo es el desempeño recibido por los
diferentes usuarios?
– Previsibilidad (Predictability)
• ¿Qué tan consistente es el desempeño a través del tiempo?
Historia abreviada de los sistemas
operativos
Desempeño de los computadores
en el tiempo
Primeros Sistemas Operativos:
computadores muy costosos
• Una aplicación a la vez
– Tenía control complete del hardware
– La librería de Runtime era un sistema operativo
primitivo
– Los usuarios hacían fila para utilizar el
computador
• Sistemas de procesamiento por lotes (Batch
systems)
– Asignaba la CPU mediante una cola de trabajos
(jobs)
– El Sistema operativo podía cargar el siguiente
trabajo (job) mientras ejecutaba el actual
– Los usuarios enviaban los trabajos (jobs) y
esperaban
Sistemas operativos de tiempo
compartido:
computadores y personas muy
costosos
• Multiples usuarios en el computador al
mismo tiempo
– Multiprogramación: ejecutaba multiples
programas al mismo tiempo
– Desempeño interactivo: intentaba completar
rápidamente las tareas de todos
– Como los computadores habían bajado de
precio, era más importante optimizar el tiempo
del usuario, NO el tiempo del computador.
Sistemas operativos actuales:
Los computadores son baratos
• Smartphones
– Los iPhones y las iPads ejecutan dos sistemas
operativos diferentes!
• iOS, y
• Una versión ajustada por Apple del microkernel de la
familia L4 en el coprocesador Enclave seguro
• Sistemas embebidos
• Laptops
• Tablets
• Máquinas virtuales
• Servidores de Data Center
Organización y arquitectura de un
computador
• OPERACIÓN DE UN SISTEMA DE CÓMPUTO
– Consta de una o más CPUs y varias controladoras conectadas a través de un
bus común que permite acceso compartido a la memoria
– Las CPUs y las controladoras pueden operar concurrentemente y deben
competir por el acceso a la memoria.
Monitor
Discos
Teclado
On line
Mouse Impresora
Controladora Controladora Adaptador
CPU
de discos USB Gráfico
Memoria
Componentes de un computador con
un único procesador
CPU (Central Processing Unit)
Scheduling
Control
Driver Driver
Entrada ALU Salida
Memory
Memoria Management
Driver Driver
Networking
Partición
File System Almacenamiento
Red de datos
01 secundario
Volumen
File 01 Partición
System 02
Volumen Storage
01
File 02 Management
System
02
Arquitectura de un computador
• Se puede considerar que la arquitectura de un
computador tiene tres elementos:
1. El conjunto de instrucciones (ISA - Instruction Set
Architecture)
2. La organización (microarquitectura)
3. El hardware (componentes electrónicos)
• Los dos últimos están asociados a la
implementación del computador
Arquitectura de un computador
• ISA: hace referencia al conjunto de instrucciones visibles al
programador.
– Cuando se compila un programa, este es traducido a lenguaje de
máquina. Este lenguaje de máquina es que implementa el ISA.
• El ISA es la frontera entre el software y el hardware
– Un procesador 80x86 tiene un conjunto de instrucciones
diferente a un procesador ARM y los dos tienen un conjunto de
instrucciones diferente a un procesador MIPS.
• Los ISA se diferencian por la forma en que acceden y
direccionan la memoria, los modos de direccionamiento, el
tipo y tamaño de los operandos, las operaciones
soportadas, las instrucciones condicionales soportadas, la
codificación (fija o variable), entre otros.
Arquitectura de un computador
• Microarquitectura (organización): incluye aspectos como el
sistema de memoria, la interconexión de la memoria, el diseño de
la CPU (Central Processing Unit), donde se implementan la
aritmética, la lógica, las instrucciones condicionales y la
transferencia de datos).
– Los procesadores AMD Opteron y el procesador Intel Core i7 que tienen
el mismo conjunto de instrucciones (ISA) -el conjunto de instrucciones
x86- pero tienen diferentes organizaciones
• Hardware: se refiere a los componentes específicos de un
computador, incluyendo el diseño lógico detallado y la tecnología
de integración de los circuitos.
– El procesador Intel Core i7 y el Intel Xeon 7560 son casi idénticos, pero
tienen diferentes velocidades de reloj y diferente sistema de acceso a la
memoria, haciendo que el Xeon 7560 sea mejor para servidores.
Arquitectura de un computador
(Analogía)
ISA
Diferente ISA
Igual ISA
Diferente
Igual ISA, organización
organización similar,
implementación
física diferente
Operación de un sistema de
cómputo
• Los dispositivos de E/S y la CPU pueden operar concurrentemente
• Cada controladora está a cargo de un tipo específico de dispositivos
(unidades de disco, dispositivos de audio, dispositivos de vídeo)
• Cada controladora tiene un buffer local
• Cada tipo de controlador de dispositivo tiene un módulo de software
(device driver) en el Sistema operativo para gestionarlo
• La CPU mueve datos desde/hacia la memoria principal hacia/desde
buffers locales
• Las operaciones de E/S van desde el dispositivo hacia el buffer local de la
controladora
• La controladora del dispositivo informa a la CPU que este ha terminado su
operación mediante una interrupción
Interrupciones
• La ocurrencia de un evento se indica con una interrupción: puede
ser de hardware o de software.
• Las interrupciones deben gestionarse los más rápido que se pueda
• Una interrupción generalmente transfiere el control a una ‘rutina de
servicio de la interrupción’, mediante el vector de interrupciones
(interrupt vector), que contiene las direcciones de todas las rutinas
de servicio
• La arquitectura de interrupciones debe guardar la dirección de la
instrucción interrumpida.
• Un trap o una exception es una interrupción generada por software
causada por un error o por solicitud del usuario
• Un Sistema operativo es un manejador de interrupciones
• El Sistema operativo preserva el estado de la CPU al guardar los
registros y el Contador de programa
• Determina qué tipo de interrupción ha ocurrido
– Sondeo (polling)
– Sistema de interrupción vectorizado
• Segmentos separados de código determina qué acción debe ser
adelantada para cada tipo de interrupción
Diagrama de tiempo de una
interrupción
Ejecutando
proceso del
usuario
CPU
Procesando
interrupción
de E/S
Ocioso
Dispositivo
E/S
(disco) Transfiriendo
datos
Interrupción de Interrupción de
Solicitud E/S transferencia Solicitud E/S transferencia
terminada terminada
Cintas magnéticas
Jerarquía de dispositivos de
almacenamiento
Caching
• Principio de almacenamiento importante, se utiliza en
diferentes niveles dentro de un computador (en el hardware,
en el sistema operativo, en las aplicaciones)
• La información en uso se copia –de manera temporal- desde
un dispositivo de almacenamiento más lento a uno más
rápido
• El dispositivo de almacenmiento más rápido (cache) verifica
primero si la información está ya almacenada
– Si es así, la información se usa directamente desde el cache
(fast)
– Si NO es así, los datos son copiados al cache y se utilizan allí
• La capacidad del dispositivo de cache es menor que la
capacidad del dispositivo del que se está haciendo ‘caching’
– La gestión del caching es un importante problema de diseño
– Tamaño del cache y política de reemplazo
Estructura del Acceso Directo a
Memoria (Direct Memory Access)
• Utilizado para dispositivos de E/S de alta velocidad con
capacidad para transmitir información cerca a la rapidez de
acceso a la memoria
• La controladora del dispositivo transfiere bloques de datos
desde el buffer del dispositivo directamente a la memoria
principal sin intervención de la CPU
• Solo una interrupción es generada por bloque, en lugar de
una interrupción por byte
Cómo trabaja un sistema de cómputo
moderno
Ciclo de
Hilo de ejecución
ejecución Memoria de Instrucciones
cache Datos Instrucciones
CPU (*N) y
datos
Solicitud Interrupciones
Datos
de E/S
DMA
Dispositivo Memoria
(*M)
Arquitectura de un sistema de
cómputo
• La mayoría de Sistemas utiliza[ba]n UN (1) procesador de
propósito general
– La mayoría de sistemas también tienen procesadores de
propósito especial
• Los sistemas multiprocesador han crecido en uso e
importancia
– Conocidos también como sistemas paralelos, sistemas
fuertemente acoplados
– ventajas:
• Incrementan rendimiento
• Economía de escala
• Incrementa la confiabilidad – tolerancia a fallas
• Dos tipos:
– Multiprocesamiento asimétrico – a cada procesador se le asigna
una tarea específica
– Multiprocesamiento simétrico – cada procesador realiza todas las
tareas
Arquitectura de multiprocesamiento
simétrico
CPU0 CPU1 CPU2
registros registros registros
Memoria
Diseño Dual-Core
• Multiple-chip y multicore (múltiple núcleo)
• Los sistemas tienen todos los chips
– El chasis tiene multiples sistemas separados
CPU0 CPU1
registros registros
cache cache
Memoria
Numeración Intel
• Intel utiliza un sistema de numeración que
permite identificar las características básicas y
uso esperado de un microprocesador. Por
ejemplo:
Numeración Intel
• En estos ejemplos de numeración se muestra:
– La marca del procesador (Intel Core),
– El modificador de marca. En este ejemplo es i7. De forma
simple, para una misma generación de procesadores, un
procesador Intel Core i7 tiene un rendimiento superior a un
Core i5, que a su vez es superior a un Core i3.
– El “indicador de generación”. El número 6 -mostrado en el
ejemplo- corresponde a la sexta generación de
procesadores Core con microarquitectura [nombre clave]
Skylake. Los procesadores de esta generación fueron
liberados en el mercado a partir agosto de 2015. Hasta
mediados de 2017, Intel había liberado ocho generaciones
de procesadores Core para equipos de escritorio
Numeración Intel
• Los tres dígitos siguientes corresponden al “número de modelo”.
Por lo general, en la misma serie, ofrece un rendimiento superior
cuanto más grande sea este número. Por ejemplo: un Intel Core
i3-5350 sería superior a un Core i3-5200.
• Finalmente, las letras que acompañan al número de modelo
indican la línea de producto. Por ejemplo:
i. “K”: Equipo de escritorio – Multiplicador desbloqueado para facilitar overclocking
ii. “T”: Equipo de escritorio – Optimizado para reducir consumo de potencia
iii. “HK”: Portátil – Gráficos de alto rendimiento y Multiplicador desbloqueado
iv. “H”: Portátil – Gráficos de alto rendimiento
v. “HQ”: Portátil – Gráficos de alto rendimiento y CPU de cuatro núcleos
vi. “U”: Portátil – Consumo ultra bajo
vii. “Y”: Portátil – Bajo consumo
Características que diferencian los
procesadores Intel
• Diferencias entre Intel Core i3, i5, i7 e i9
– Número de núcleos: Cuantos más núcleos, más eficientemente se
podrán realizar varias tareas a la vez.
– Cantidad de memoria cache: está dentro del procesador. Ésta suele ser
de unos pocos MB de capacidad, y en ella se almacenan datos que el
procesador necesita de manera constante.
– HyperThreading: divide un núcleo físico en dos núcleos lógicos, más
conocidos como threads o hilos. Gracias a ello, un procesador de 2
núcleos funcionará como uno de 4, y uno de 4 funcionará como uno de
8. Curiosamente, son los i3 y los i7 los que tienen esta característica,
mientras que los i5 no tienen HyperThreading. (¿i9 tiene
HyperThreading?)
• Es importante tener en cuenta que un núcleo físico es más potente que uno
virtual. Así, un procesador i5 de 4 núcleos reales va a ser siempre más potente
que un i3 de 2 núcleos físicos y 4 virtuales.
Numeración Intel para identificar los
procesadores
– Frecuencia de procesamiento: La frecuencia de un
procesador es el número de ciclos de reloj que puede
realizar un procesador en un segundo.
• Un chip a 3,5 GHz puede hacer 3.500 millones de ciclos de reloj
por segundo. En algunos casos, la frecuencia en GHz de algunos
procesadores i3 es superior a la de procesadores i5 e i7.
• Esto no quiere decir que el i3 sea más potente, ya que los i5 y los
i7 tienen lo que se conoce como Turbo Boost.
– El Turbo Boost permite que el procesador suba su
frecuencia durante una cantidad determinada de tiempo
en el caso de que sea necesario, funcionando a frecuencias
más bajas cuando esto no sea así.
• Un i3-7300 funciona a 4 GHz, mientras que un i5-7600 alcanza los
3.5 GHz. Sin embargo, gracias al Turbo Boost, el i5-7600 llega a
alcanzar los 4,1 GHz cuando hace falta.
Numeración Intel para identificar los
procesadores
– Potencia de la tarjeta gráfica integrada: Prácticamente
todos los procesadores de Intel incluyen una tarjeta gráfica
en su interior, lo que hace que sus chips sean ideales para
portátiles, al no requerir una tarjeta gráfica dedicada para
funcionar, así como en un ordenador de sobremesa
podemos estar un tiempo sin tarjeta gráfica dedicada por
avería o porque la hayamos vendido a la espera de comprar
una nueva.
– Intel ha homogeneizado las tarjetas gráficas que incluyen
sus procesadores, y encontramos la HD 630 en todos los
procesadores i3, i5 e i7 de ordenador y algunos de
portátiles, mientras que la HD 620 queda relegada a unos
pocos procesadores para portátiles.
Listas con las características de
procesadores/microarquitecturas
• https://en.wikipedia.org/wiki/List_of_Intel_Core_i3_microprocessors
• https://en.wikipedia.org/wiki/List_of_Intel_Core_i5_microprocessors
• https://en.wikipedia.org/wiki/List_of_Intel_Core_i7_microprocessors
• https://en.wikipedia.org/wiki/List_of_Intel_Core_i9_microprocessors
• https://en.wikipedia.org/wiki/List_of_AMD_microprocessors
• https://en.wikipedia.org/wiki/List_of_ARM_microarchitectures
Sistemas en Cluster
• Similar a los sistemas multiprocesador, pero multiples
sistemas trabajan juntos
– Usualmente comparten almacenamiento a través de una
red de área de almacenamiento [storage-area network
(SAN)]
– Proporciona servicios de alta disponibilidad
(high-availability - HA) que sobrevive a las fallas
• Clustering asimétrico tiene una máquina en modo hot-standby
• Clustering simétrico tiene multiples nodos ejecutando
aplicaciones, haciendo monitoreo entre ellos
– Algunos cluster son para computación de alto desempeño
(high-performance computing - HPC)
• Las aplicaciones deben ser escritas para utilizar paralelización
– Algunos tienen un gestor de bloqueo distribuido
(distributed lock manager - DLM) para evitar el conflicto
entre operaciones
Sistemas en Cluster
Computador Computador Computador
SAN
Storage Area Network
Multiprogramación y mulitasking
• Multiprogramación (Sistema por lotes –Batch-) necesario por eficiencia
– Un solo usuario no puede mantener ocupados todo el tiempo la CPU y los
dispositivos de E/S
– La multiprogramación organiza jobs (código + datos) de tal forma que la CPU
siempre tiene ejecutando uno de estos ‘jobs’
– Un subconjunto de jobs se mantiene en la memoria del sistema
– Un ‘job’ es seleccionado y ejecutado mediante el job scheduling (planificación de
trabajos)
– Cuando este tiene que esperar (debido, por ejemplo, a una operación de E/S), el
Sistema operativo Cambia a otro job.
Mapa hash
0 1 . . n
Valor
https://elixir.bootlin.com/linux/latest/source/include/linux/list.h
https://elixir.bootlin.com/linux/latest/source/include/linux/kfifo.h
https://elixir.bootlin.com/linux/latest/source/include/linux/rbtree.h
Numeración de las versiones del kernel
de Linux
• El kernel de Linux ha tenido tres esquemas de numeración
de versiones diferentes
• El primero esquema fue utilizado hasta llegar a la versión
“1.0”.
– La primera versión del kernel fue 0.01, seguido por 0.02, 0.03,
0.10, 0.11, 0.12 (primera versión GPL), 0.95, 0.96, 0.97, 0.98, 0.99
y finalmente 1.0.
• Después de la 1.0 y antes de la versión 2.6, se utilizó un
segundo esquema donde el número tenía la estructura
"A.B.C“.
– El número en la posición A indicaba la versión del kernel,
– B representaba una revisión importante del kernel y
– C una revisión menor.
Numeración de las versiones del kernel
de Linux
• Durante este periodo de tiempo, el número de la
versión se cambiaba sólo cuando había cambios
importantes en el concepto y en la
implementación del kernel:
– en 1994 (versión 1.0) y
– en 1996 (versión 2.0).
• El segundo número (el de la pocición B), cuando
era par indicaba que era una versión estable y
cuando era impar que era una versión de
desarrollo.
Numeración de las versiones del kernel
de Linux
• En 2004, después que la versión 2.6.0 fue liberada,
Linus Torvalds y otros decidieron que un ciclo de
tiempo más corto entre liberaciones sería benéfico.
Por esta razón, durante siete años los dos primeros
números permanecieron en 2.6 y el tercer número era
incrementado con cada nueva liberación (cada dos o
tres meses)
– En ocasiones se adicionaba un cuarto número para mostrar
que algún problema de seguridad o algún error menor se
había solucionado en el kernel.
– En este periodo de tiempo desapareció el sistema
par-impar para indicar si la versión era estable o no.
Numeración de las versiones del kernel
de Linux
• El 29 de Mayo de 2011, Linus Torvalds anunció que la versión del
kernel que siguiera a la liberación 2.6.39 sería la versión 3.0, con el
fin de conmemorar el aniversario número 20 de Linux.
• Para este último esquema se sigue manteniendo la practica
establecida de cambiar el número para cada liberación, pero en el
segundo número (no el tercero como ocurría en 2.6), es decir que
la liberación 3.1 seguiría a la 3.0.
• Un número adicional (que ahora es el tercer número) puede ser
adicionado cuando se necesite indicar solución de errores o de
problemas de seguridad, por ejemplo 3.0.18.
• Después de la version 3.19 el número principal se cambio a 4
• Después de la vesrión 4.21 el número principal se cambió a 5
[Marzo 4 de 2019]
• Última versión estable cuando se revisó esta presentación: 5.14.9
Numeración de las versiones del kernel
de Linux
• Visitar https://www.kernel.org/ para ver la versión
del último kernel estable
Versiones del sistema operativo
Windows
11
Server
2022
https://en.wikipedia.org/wiki/Microsoft_Windows#Timeline_of_releases
https://en.wikipedia.org/wiki/List_of_Microsoft_Windows_versions
Ambientes de computación -
Tradicional
• Máquinas de propóstito general que operan de forma
independiente (stand-alone)
• Aunque en este momento está desdibujado ya que la
mayoría de equipos están interconectados (i.e., Internet)
• Los portales proporcionan accesos web a los sistemas
internos
• Los computadores de red (clientes delgados - thin
clients) hacen las veces de terminales Web
• Los computadores móviles se interconectan mediante redes
inalámbricas
• Las redes y sus components se han vuelto obicuas
(extendido por todas partes) – incluso en las redes de las
casas de familia se utilizan firewalls para proteger los
computadores y la información del hogar de ataques usuales
provenientes de Internet.
Ambientes de computación -
Móviles
• Los smartphones, que pueden llevarse en las manos,
las tablets, etc
• ¿Qué los hace diferentes de un laptop tradicional?
– Características adicionales: GPS, giroscope
– Permiten nuevo tipos de aplicaciones, como realidad
aumentada
– Para conectividad puede utilizar redes IEEE 802.11
(inalámbricas), o la red celular para pasar datos
• Los líderes en este momento Apple iOS y Google
Android
Ambientes de computación–
Distribuido
• Computación distribuida
– Colección de sistemas en red separados, incluso
heterogéneos,
• La red es la estructura (física y lógica) que permite la
comunicación. TCP/IP es la más común
– Local Area Network (LAN)
– Wide Area Network (WAN)
– Metropolitan Area Network (MAN)
– Personal Area Network (PAN)
– Body Area Network (BAN)
– Sistema operativo de Red (Network Operating System)
proporciona las características que dan soporte al Sistema
distribuido a través de la red
• El esquema de comunicación permite a los Sistemas intercambiar
mensajes
• Se puede crear la ilusión de un único sistema
Ambientes de computación–
Cliente/Servidor
• Computación Cliente/Servidor
– Terminales ‘brutas’ (dumb terminals) reemplazadas por
computadores inteligentes (smart PCs)
– Muchos Sistemas ahora son servidores, respondiendo a
solicitudes generadas por los clientes
• El Sistema de cómputo del servidor proporciona una interfaz al cliente
para solicitar servicios (i.e., database)
• El Sistema de archivos del servidor proporciona una interfaz para que
los clients almacenen y recuperen archivos
Ambientes de computación –
P2P
• Otro modelo de Sistema distribuido
• Peer-to-peer (P2P) no distingue entre
clients y servidores
– Todos los nodos son considerados iguales
– Cada nodo puede actuar como cliente,
como servidor o como los dos al mismo
tiempo
– El nodo debe asociarse a la red P2P
• Registra sus servicios con el servicio de
búsqueda (lookup) central, o
• Emite mensajes de solicitud de servicio para
los miembros de la red P2P y responde a
solicitudes mediante algún protocol de
descubrimiento (discovery protocol)
– Ejemplos son servicios de Voice over IP
(VoIP) como Skype, intercambio de
archivos como BitTorrent
Ambientes de computación -
Virtualización
• Permite a los sistemas operativos ejecutar
aplicaciones dentro de otros sistemas operativos
• Emulación utilizada cuando el tipo de CPU origen es
diferente del la CPU objetivo (i.e. PowerPC a Intel x86)
– Generalmente es un método más lento
• Virtualización – El sistema operativo está compilado de
forma nativa para cierta CPU, ejecutando sistemas
operativos ‘invitados’ compilados también de forma
nativa
– Considere VMware ejecutando sistemas con Windows,
cada uno ejecutando aplicaciones, todos sobre nodos
Windows nativos
– VMM (virtual machine Manager) proporciona servicios de
virtualización
Ambientes de computación -
Virtualización
• En otros casos se pueden utilizar laptops y desktops
ejecutando multiples sistemas operativos para
exploración o compatibilidad
– Laptop Apple ejecutando Mac OS X, con Windows como
Sistema operativo invitado
– Desarrollando aplicaciones para diversos Sistemas
operativos sin tener multiples Sistemas en hardware
– Pruebas de aseguramiento de calidad (QA) de aplicaciones
sin tener multiples Sistemas en hardware
– Ejecución y gestión de diversos ambientes de cómputo
dentro de data centers
• VMM puede ejecutarse de forma nativa, en dicho caso
también son el host
– VMware ESXi y Citrix XenServer
Ambientes de computación -
Virtualización
Ambientes de computación–
Computación en la nube
• Entrega computación, almacenamiento, incluso aplicaciones como
servicio a través de la red
• Extensión lógica de la virtualización ya que utiliza la virtualización
como base para sus funcionalidades.
– Amazon EC2 tiene miles de servidores, millones de máquinas virtuales,
petabytes of almacenamiento disponibles en varios sitios en Internet. Se
paga de acuerdo con el uso
• Muchos tipos
– Nube pública – disponible vía Internet para cualquiera que desee pagar
– Nube privada – ejecutada por una compañía para uso interno de la
compañía
– Nube híbrida – incluye components de nube privada y de nube pública
– Software as a Service (SaaS) – una o más aplicaciones disponibles vía
Internet (Office en la nube)
– Platform as a Service (PaaS) – components de software listos uso de
aplicaciones a través de Internet (contenedor de aplicaciones, servidor de
base de datos)
– Infrastructure as a Service (IaaS) – servidores o almacenamiento
disponibles en Internet (i.e., almacenamiento disponible para hacer copias
de respaldo - backup)
Ambientes de computación–
Computación en la nube
• Ambiente de computación en la nube compuesto por Sistemas
operativos tradicionales, más VMMs, más herramientas de gestión
en la nube
– La conectividad a Internet requiere componentes de seguridad como
firewalls
– Balanceadores de carga distribuyen el tráfico a través de múltiples
aplicaciones
Ambientes de computación–
sistemas embebidos en tiempo real
• Sistemas embebidos en tiempo real es la forma
predominante de los computadores
– Varía de forma considerable, son de propósito especial, utilizan
sistemas operativos de propósito limitado, sistemas operativos
de tiempo real
– Su uso se sigue expandiendo (IoT: Internet de las cosas)
• Incluye otros entornos de computación especial
– Algunos tienen sistemas operativos, otros realizan tareas sin un
sistema operativo
• Los sistemas operativos de tiempo real tienen restricciones
de tiempo definidas extrictamente
– El procesamiento debe realizarse dentro de las restriciiones de
tiempo
– La operación se considera correcta solo si se cumplen las
restricciones
Ambientes de computación–
Virtualización basada en
•
contenedores
Containerization – también llamada virtualización basada en
contenedores y aplicación de contenedores – es un método de
virtualización a nivel de sistema operativo para desplegar y ejecutar
aplicaciones distribuidas sin lanzar una VM completa para cada
aplicación.
– Por el contrario, múltiples sistemas aislados, llamados contenedores
(containers), son ejecutados sobre un único host de control y con acceso
a un único kernel.
• Debido a que los contenedores comparten el mismo kernel del
sistema operativo al igual que el host, los contenedores pueden ser
más eficientes que las VMs, que requieren instancias del sistema
operativo separadas.
• Los contenedores tienen los componenets necesarios para ejecutar
el software deseado, tales como archivos, variables y librerías de
entorno.
• El sistema operativo del Host también restringe el acceso del
contenedor a los recursos físicos – como la CPU y la memoria – de
esta forma, un solo contenedor no puede consumir todos los
recursos físicos del del computador.
Ambientes de computación–
Virtualización basada en
contenedores
http://searchservervirtualization.techtarget.com/definition/container-based-virtualization-operating-system-level-virtuali
zation
Ambientes de computación–
Virtualización basada en
•
contenedores
Beneficios de los containers:
– Pueden ser más eficientes que las máquinas virtuales
– Son portables
– Uso eficiente de Memoria, CPU y almacenamiento
– Son consistentes a través del ciclo de vida de las aplicaciones,
facilitando iniciatives como CI (continuous integration) y CD
(Continous delivery)
• Desventajes de los containers:
– Más vulnerable a amenazas de segurida debido a que NO está
aislado del Sistema operativo del host.
– No es flexible en lo relacionado con el sistema operativo:
contenedores creados en un host Linux no pueden ejecutarse en
Windows
– Al tener cientos o miles de contenedores en en un servidor es
difícil hacer monitoreo a cada contenedor (Orquestación)
Sistemas operativos de código
abierto (open-source)
• Sistemas operativos que tienen disponibles el código fuente
antes que solo el código binario con el acceso restringido al
código fuente (closed-source y propietario)
• En contra de la ‘copy protection’ y el movimiento ‘Digital
Rights Management (DRM)’
• Iniciado por la fundación Free Software Foundation (FSF),
que tiene la licencia “copyleft” GNU Public License (GPL)
– http://gnu.org/philosophy/open-source-misses-the-point.html/
• Ejemplos de estos sistemas operativos incluye GNU/Linux y
BSD UNIX (incluyendo el core de Mac OS X), entre otros
• Puede utilizar un VMM como VMware Player (Uso libre en
Windows), Virtualbox (open source y de libre uso en muchas
plataformas - http://www.virtualbox.com)
– Utilizado para ejecutar sistemas operativos para exploración
El estudio de sistemas operativos
• El movimiento open-source permite estudiar los
Sistemas operativos examinado el Código.
– https://en.wikipedia.org/wiki/Comparison_of_open-source
_operating_systems
– https://elixir.bootlin.com/linux/latest/source
• La virtualización permite ejecutar muchos Sistemas
operativos sin tener hardware dedicado.
• Los sistemas operativos open-source facilitan pasar de
estudiante a desarrollador de sistemas operativos.
– Con algo de conocimientos, esfuerzo y una conexión a
Internet, una persona puede crear una nueva distribución
de un sistema operativo.
Referencias
• Silberschatz, A. Galvin P.B. y Gagne, G.
Operating System Concepts. Wiley. 10a
Edición. 2018.
• Anderson, T. & Dahlin, M. Operating Systems:
Principles and Practice Recursive Books. 2
edición. 2014
• Mauerer, W. Professional Linux Kernel
Architecture. Wrox. 1 edition. 2008