Sie sind auf Seite 1von 8

Ortiz, H.J. (2005). Sistemas Operativos Modernos.

Medellín, Colombia: Sello Editorial Universidad


de Medellín.

1.1 Clasificación y Estructuras genéricas de los Sistemas Operativas vigentes

Sistemas Operativos Por Sus Estructura

1. Estructura Monolítica: La construcción del programa final es a base de


módulos compilados separadamente y que se unen a graves de un ligador.
Carecen de protecciones y privilegios al manejar recursos como memoria y
disco duro.

2. Estructura Jerárquica: El sistema operativo contiene subpartes y esto


organizado en forma de niveles o capaz.

3. Máquina Virtual: Presenta una interfaz a cada proceso, mostrando una


máquina que parece idéntica a la maquina real subyacente. Se reparan los
conceptos que suele estar unidos en el resto del sistema: La
multiprogramación y la maquina extendida.

4. Cliente-Servidor (MicroKernel): Es el más reciente y predominante, sirve


para toda clase de aplicaciones y el propósito de este es de tipo general
cumpliendo así con las mismas actividades de los otros sistemas operativos.
Su núcleo (core) esta designado a establecer comunicación entre los clientes
y servidores. Los procesos pueden ser tanto servidores como cliente a su
vez el cliente actual como servidor para otro proceso.

Sistemas Operativos Por Servicios

1. Monousuarios : Soportan un usuario a la vez sin importar los procesadores


que tengan la computadora o los procesos y tareas que el usuario puede
realizar al mismo tiempo. Ejemplo: las PC.

2. Multiusuario: Ofrece servicio a más de un usuario a la vez ya sea por medio


de terminales o secciones remotas en una red. No importa la cantidad de
procesadores que tenga la maquina ni la cantidad de procesos que se
realicen a la misma vez.

3. Monotareas: Permite una tarea a la vez por usuario. Aunque hallar más de
un usuario a la misma vez solo permitirá una tarea por usuario.

4. Multitareas: Permite al usuario realizar varias tareas a la misma vez.

5. Uniproseso: Maneja solamente un procesador de la computadora. Si tuviera


más de uno sería inútil. Ejemplo: Dos y MacOS

Ortiz, H.J. (2005). Sistemas Operativos Modernos. Medellín, Colombia: Sello Editorial
Universidad de Medellín; 22/Noviembre/016 (Consultado el 38/Agosto/2018); Disponible
en; https://sites.google.com/site/isctecvilla/home
Ortiz, H.J. (2005). Sistemas Operativos Modernos. Medellín, Colombia: Sello Editorial Universidad
de Medellín.

6. Multiproceso: Puede manejar más de un procesador distribuyendo la carga


asimétrica y simétrica.

Sistemas Operativos Por La Forma Que Ofrecen Sus Servicios

1. Sistema Operativo De Red: Interactúan con otras computadoras a través de


un medio transmisión que intercambia información, transfiere archivo,
ejecutar comandos remotos y otras tareas.

2. Sistemas Operativos Distribuidos: Incluyen los servicios que ofrece los


sistemas operativos de red incluyen ó añade recursos (impresoras, unidades
de respaldo, memoria, procesos y unidad central de proceso) adicionales en
una sola máquina virtual que el usuario accesa de forma transparente.

1.2. Procesos y Multiprogramación

Concepto y estados de un proceso.

En un sistema multiprogramado o de tiempo compartido, un proceso es la imagen en memoria de u


junto con la información relacionada con el estado de su ejecución. Un programa es una entidad
lista de instrucciones; un proceso es una entidad activa, que –empleando al programa– define la a
tendrá el sistema. En contraposición con proceso, en un sistema por lotes se habla de tareas. Una ta
mucha menos estructura, típicamente basta con guardar la información relacionada con la contab
recursos empleados. Una tarea no es interrumpida en el transcurso de su ejecución. Ahora bien, es
no es completamente objetiva —y se pueden encontrar muchos textos que emplean indistintamen
nomenclatura.

Si bien el sistema brinda la ilusión de que muchos procesos se están ejecutando al mismo tiem
parte de ellos típicamente está esperando para continuar su ejecución —en un momento deter
puede estar ejecutando sus instrucciones un número de procesos igual o menor al número de p
que tenga el sistema.

Estados de un proceso

Un proceso, a lo largo de su vida, alterna entre diferentes estados de ejecución. Éstos son:

Nuevo. Se solicitó al sistema operativo la creación de un proceso, y sus recursos y estructuras


creadas.

Listo Está listo para iniciar o continuar su ejecución pero el sistema no le ha asignado un procesa

Ortiz, H.J. (2005). Sistemas Operativos Modernos. Medellín, Colombia: Sello Editorial
Universidad de Medellín; 22/Noviembre/016 (Consultado el 38/Agosto/2018); Disponible
en; https://sites.google.com/site/isctecvilla/home
Ortiz, H.J. (2005). Sistemas Operativos Modernos. Medellín, Colombia: Sello Editorial Universidad
de Medellín.

En ejecución. El proceso está siendo ejecutado en este momento. Sus instrucciones están siendo
en algún procesador.

Bloqueado. En espera de algún evento para poder continuar su ejecución (aun si hubiera un
disponible, no podría avanzar).

Zombie. El proceso ha finalizado su ejecución, pero el sistema operativo debe realizar ciertas ope
limpieza para poder eliminarlo de la lista.

Terminado. El proceso terminó de ejecutarse; sus estructuras están a la espera de ser limpiadas p
operativo.

1.3. Virtualización

Introducción
La virtualización no es un concepto nuevo. Sin embargo, tras largos años de estar
relegado a un segundo plano, en la actualidad se torna fundamental en referencia
a los sistemas operativos, particularmente en papel de servidores. Este tema se
abordará de momento desde un punto de vista más bien descriptivo, y
posteriormente se profundizará en algunos de sus asepectos.
En primer término, es importante aclarar que el concepto de virtualización no se
refiere a una única tecnología o metodología, es un término que agrupa a muy
distintas tecnologías que hay –de diversas formas– desde hace décadas. Cada
una de ellas tiene su lugar, con diferentes usos y propósitos, algunos de los cuales
se usan de forma transparente para el usuario promedio.
Del mismo modo, aunque se abordarán diversas tecnologías que pueden
clasificarse como virtualización, la línea divisoria entre cada una de ellas no
siempre es clara. Una implementación específica puede caer en más de una
categoría, o puede ir migrando naturalmente de un tipo hacia otro.
En escala general, virtualizar consiste en proveer algo que no está ahí, aunque
parezca estarlo. Más específicamente, presentar a un sistema elementos que se
comporten de la misma forma que un componente físico (hardware), sin que exista
en realidad —un acto de ilusionismo o de magia, en el cual se busca presentar el
elemento de forma tan convincente que la ilusión se mantenga tanto como sea
posible.
La naturaleza de dichos elementos, y el cómo se implementan, dependen del tipo
de virtualización.

Para casi todos los casos que se presentan, se emplearán los siguientes términos:

Anfitrión El hardware o sistema real, que ofrece el mecanismo de virtualización.


En inglés se le denomina host.
Ortiz, H.J. (2005). Sistemas Operativos Modernos. Medellín, Colombia: Sello Editorial
Universidad de Medellín; 22/Noviembre/016 (Consultado el 38/Agosto/2018); Disponible
en; https://sites.google.com/site/isctecvilla/home
Ortiz, H.J. (2005). Sistemas Operativos Modernos. Medellín, Colombia: Sello Editorial Universidad
de Medellín.

Huésped El sistema o las aplicaciones que se ejecutan en el entorno virtualizado.


En inglés se les denomina guest.

Emulación
La técnica de virtualización más sencilla, y que hace más tiempo tienen las
computadoras personales, es la emulación. Emular consiste en implementar en
software algo que se presente como el hardware de un sistema de cómputo
completo, típicamente de una arquitectura hardware distinta a la del anfitrión (la
arquitectura nativa).2 El emulador puede ser visto (de una forma tremendamente
simplificada) como una lista de equivalencias, de cada una de las instrucciones
en la arquitectura huésped a la arquitectura del sistema anfitrión.

Vale la pena recalcar que una emulación no se limita con traducir del lenguaje y
la estructura de un procesador a otro para que una computadora pueda ser
utilizada, requiere de una serie de chips de apoyo, desde los controladores de
cada uno de los buses hasta los periféricos básicos (teclado, video). Casi todas
las emulaciones incluirán un paso más allá: los periféricos mismos (discos,
interfaces de red, puertos). Todo esto tiene que ser implementado por el emulador.

Resulta obvio que emular un sistema completo es altamente ineficiente. Los


sistemas huéspedes resultantes típicamente tendrán un rendimiento cientos o
miles de veces menor al del anfitrión.

Ahora bien, ¿qué pasa cuando hay dos arquitecturas de cómputo que emplean el
mismo procesador? Este caso fue relativamente común en la década de los
ochenta y noventa; si bien en general las computadoras de 8 bits no tenían el
poder de cómputo necesario para implementar la emulación de arquitecturas
similares, al aparecer tres líneas de computadoras basadas en el CPU Motorola
68000 (Apple Macintosh, Atari ST y Commodore Amiga), diferenciadas
principalmente por sus chipsets, aparecieron emuladores que permitían ejecutar
programas de una línea en la otra, prácticamente a la misma velocidad que en el
sistema nativo.

Hoy en día, la emulación se emplea para hacer desarrollos cruzados, más que
para emplear software ya escrito y compilado. La mayor parte de la emulación
tradicional se emplea para el desarrollo de software. Hoy en día, la mayor parte
de las computadoras vendidas son sistemas embebidos o dispositivos móviles,
que hacen imposible (o, por lo menos, muy difícil) desarrollar software
directamente en ellos. Los programadores desarrollan en equipos de escritorio,
ejecutan entornos de prueba en emuladores del equipo destino. A pesar del costo
computacional de realizar la emulación, la diferencia de velocidad entre los equipo
de escritorio de gama alta y los embebidos permiten que frecuentemente la

Ortiz, H.J. (2005). Sistemas Operativos Modernos. Medellín, Colombia: Sello Editorial
Universidad de Medellín; 22/Noviembre/016 (Consultado el 38/Agosto/2018); Disponible
en; https://sites.google.com/site/isctecvilla/home
Ortiz, H.J. (2005). Sistemas Operativos Modernos. Medellín, Colombia: Sello Editorial Universidad
de Medellín.

velocidad del emulador sea muy similar –incluso superior– a la del hardware
emulado.

Virtualización asistida por hardware

Actualmente se usa la virtualización como una herramienta para la consolidación


de servicios, de gran ayuda para los administradores de sistemas. Este uso se
refiere principalmente a lo que se presentará en este apartado, así como en las
secciones B.4 (Para virtualización) y B.5 (Contenedores). Y si bien este zumbido
de la virtualización se ha producido mayormente a partir del 2006-2007, no se
trata de tecnologías o ideas novedosas — pueden encontrarse ejemplos desde
finales de los sesenta. Hasta hace algunos años, sin embargo, se mantenía dentro
del ámbito de los servidores en gran escala, fuera del alcance de la mayor parte
de los usuarios. Es necesario estudiar la génesis de esta herramienta, para poder
comprender mejor cómo opera y se implementa.

entonces novedosa idea de que una organización podía adquirir un modelo


sencillo y, si sus necesidades se ajustaban al modelo de cómputo, podrían migrar
fácilmente hacia otros más poderosos, dado que tendrían compatibilidad binaria.

Uno de los modelos de esta familia fue la S-360-67, con la característica distintiva
de ser la única de la serie 360 en ofrecer una unidad de manejo de memoria
(MMU), con lo cual permitía la reubicación de programas en memoria. Esto, sin
embargo, creaba un problema: el software desarrollado para los equipos más
pequeños de la familia estaba creado bajo un paradigma de usuario único, y si
bien podría ser ejecutado en este modelo, eso llevaría a un desperdicio de
recursos (dado que el modelo 67 tenía todo lo necesario para operar en modo
multitarea).

La respuesta de IBM fue muy ingeniosa: desarrollar un sistema operativo mínimo,


CP (Control Program, Programa de Control) con el único propósito de crear y
gestionar máquinas virtuales en del hardware S/360-67, dentro de cada una de
las cuales pudiera ejecutarse sin requerir modificaciones un sistema operativo
estándar de la serie 360. Entre los varios sistemas operativos disponibles para la
S/360, el que más frecuentemente se utilizó fue el *cms*, 5 un sistema sencillo,
interactivo y monousuario. La combinación CP/CMS proporcionaba un sistema
operativo multiusuario, con plena protección entre procesos, y con compatibilidad
con los modelos más modestos de la serie 360.

Aún después de la vida útil de la serie 360 original, IBM mantuvo compatibilidad
con este modelo hacia la serie 370, e incluso hoy, 50 años más tarde, se
Ortiz, H.J. (2005). Sistemas Operativos Modernos. Medellín, Colombia: Sello Editorial
Universidad de Medellín; 22/Noviembre/016 (Consultado el 38/Agosto/2018); Disponible
en; https://sites.google.com/site/isctecvilla/home
Ortiz, H.J. (2005). Sistemas Operativos Modernos. Medellín, Colombia: Sello Editorial Universidad
de Medellín.

encuentra aún como z/VM z/VM en la línea de Sistemas z. Vale la pena mencionar
que tanto CP como CMS fueron distribuidos desde el principio de forma
consistente con lo que en la actualidad se conoce como software libre: IBM los
distribuía en fuentes, con permiso de modificación y redistribución, y sus
diferentes usuarios fueron enviando las mejoras que realizaban de vuelta a IBM,
de modo que hoy incorpora el trabajo de 50 años de desarrolladores.

Para virtualización

La para virtualización, o virtualización asistida por el sistema operativo, parte de


un planteamiento distinto: en vez de engañar al sistema operativo para que
funcione sobre un sistema que parece real pero no lo es, la para virtualización
busca hacerlo con pleno conocimiento y cooperación por parte de los sistemas
huéspedes. Esto es, la para virtualización consiste en alojar sistemas operativos
huésped que, a sabiendas de que están ejecutando en hardware virtualizado, no
hacen llamadas directas a hardware sino que las traducen a llamadas al sistema
operativo anfitrión.

Vale la pena reiterar en este punto: los sistemas operativos huésped bajo un
entorno para virtualizado saben que no están ejecutando sobre hardware real, por
lo que en vez de enviar las instrucciones que controlen al hardware, envían
llamadas al sistema a su hipervisor. Hasta cierto punto, el proceso de adecuación
de un sistema para que permita ser para virtualizado puede ser equivalente a
adecuar al sistema operativo para que ejecute en una arquitectura nueva muy
parecida a la del hardware real, sí, pero con diferencias fundamentales en
aspectos profundos.

Para virtualización y software libre

Y si bien ya se explicó en la sección anterior que la virtualización puede ayudar a


presentar un sistema idealizado que reduzca la inestabilidad en un sistema
operativo, al hablar de para virtualización este beneficio naturalmente crece: los
controladores de hardware sencillos y bien comprendidos que se usaban para
gestionar los dispositivos emulados se convierten casi en simples pasarelas de
llamadas al sistema, brindando además de una sobrecarga mínima, aun mayor
estabilidad por simplicidad del código.

La para virtualización resulta muy atractiva, presentando muy obvias ventajas.


Pero a pesar de que es posible emplearla en cualquier arquitectura hardware,
algunas veces no lo es.

Como se mencionó anteriormente, incorporar dentro de un sistema operativo el


soporte para una arquitectura de para virtualización es casi equivalente a
traducirlo a una nueva arquitectura hardware. Para que los autores de un entorno
que implemente para virtualización logren que un sistema operativo nuevo pueda

Ortiz, H.J. (2005). Sistemas Operativos Modernos. Medellín, Colombia: Sello Editorial
Universidad de Medellín; 22/Noviembre/016 (Consultado el 38/Agosto/2018); Disponible
en; https://sites.google.com/site/isctecvilla/home
Ortiz, H.J. (2005). Sistemas Operativos Modernos. Medellín, Colombia: Sello Editorial Universidad
de Medellín.

ser ejecutado en su arquitectura, deben poder manipular y modificar su código


fuente: de otra manera, ¿cómo se le podría adecuar para que supiera
desenvolverse en un entorno no nativo?

Paravirtualización de dispositivos

El proyecto de gestión de virtualización y para virtualización Xen nació como un


proyecto académico de la Universidad de Cambridge, presentando su versión 1.x
mediante un artículo (Barham y col. 2003). Este artículo presenta su experiencia
para virtualizando a una versión entonces actual de Linux y de Windows. Sin
embargo, Xen sólo pudo ser empleado por muchos años como plataforma de para
virtualización de Linux porque, dado que la adaptación de Windows se realizó bajo
los términos del Academic Licensing Program, que permitía a los investigadores
acceso y modificación al código fuente, pero no su redistribución —la versión para
virtualizable de Windows XP fue desarrollada, pero no puede distribuirse fuera de
los participantes de dicho programa de licenciamiento.

En tanto, el trabajo necesario para lograr la para virtualización de un sistema


operativo libre, como Linux, FreeBSD u otros, puede ser libremente redistribuido.
No sólo eso, sino que el esfuerzo de realizar la adaptación pudo compartirse entre
desarrolladores de todo el mundo, dado que esta entonces novedosa tecnología
resultaba de gran interes.

Las ideas derivadas de la para virtualización pueden emplearse también bajo


entornos basados en virtualización plena: si el sistema operativo está estructurado
de una forma modular (sin que esto necesariamente signifique que es un sistema
microkernel, sino que permita la carga dinámica de controladores o drivers para
el hardware, como prácticamente la totalidad de sistemas disponibles
comercialmente hoy en día), no hace falta modificar al sistema operativo completo
para gozar de los beneficios de la para virtualización en algunas áreas.

De esta manera, si bien es posible ejecutar un sistema operativo sin


modificaciones que espera ser ejecutado en hardware real, los dispositivos que
típicamente generan más actividad de entrada y salida pueden ser atendidos
por drivers para virtuales. Por supuesto, varios aspectos que son parte del núcleo
duro del sistema, como la administración de memoria o el manejo de
interrupciones (incluyendo el temporizador) tendrán que seguirse manejando
mediante una emulación, aunque mucho más delgada.

Según mediciones empíricas realizadas en 2007 por Qumranet (quienes lideraron


el desarrollo del módulo de virtualización asistido por hardware KVM en Linux),
las clases de dispositivos virtio y pv resultaron entre 5 y 10 veces más rápidas que
la emulación de dispositivos reales.

Ortiz, H.J. (2005). Sistemas Operativos Modernos. Medellín, Colombia: Sello Editorial
Universidad de Medellín; 22/Noviembre/016 (Consultado el 38/Agosto/2018); Disponible
en; https://sites.google.com/site/isctecvilla/home
Ortiz, H.J. (2005). Sistemas Operativos Modernos. Medellín, Colombia: Sello Editorial Universidad
de Medellín.

Mediante esta estrategia es posible ejecutar sistemas operativos propietarios,


como los de la familia Windows, con buena parte de las ventajas de la para
virtualización, sobre entornos de virtualización asistida por hardware.

Ortiz, H.J. (2005). Sistemas Operativos Modernos. Medellín, Colombia: Sello Editorial
Universidad de Medellín; 22/Noviembre/016 (Consultado el 38/Agosto/2018); Disponible
en; https://sites.google.com/site/isctecvilla/home

Das könnte Ihnen auch gefallen