Tecnológico Nacional de
México.
Instituto Tecnológico de
Chilpancingo.
Taller de Sistemas Operativos.
Unidad 1.
Yohan Rosendo Nava Solache
4to semestre.
Ingeniería en sistemas computacionales.
Chilpancingo, Gro a 17 de febrero de 2025.
1.1Clasificació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 ó 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 seria inútil. Ejemplo: Dos y
MacOS
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 o 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 un programa, junto con la
información relacionada con el estado de su
ejecución. Un programa es una entidad pasiva,
una lista de instrucciones; un proceso es una
entidad activa, que empleando al programa
define la actuación que tendrá el sistema. En
contraposición con proceso, en un sistema por
lotes se habla de tareas. Una tarea requiere
mucha menos estructura, típicamente basta con
guardar la información relacionada con la
contabilidad de los recursos empleados. Una
tarea no es interrumpida en el transcurso de su
ejecución. Ahora bien, esta distinción no es
completamente objetiva y se pueden encontrar
muchos textos que emplean indistintamente
una u otra nomenclatura.
Si bien el sistema brinda la ilusión de que
muchos procesos se están ejecutando al mismo
tiempo, la mayor parte de ellos típicamente está
esperando para continuar su ejecución —en un
momento determinado sólo puede estar
ejecutando sus instrucciones un número de
procesos igual o menor al número de
procesadores 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 están siendo creadas.
Listo Está listo para iniciar o continuar su
ejecución pero el sistema no le ha asignado
un procesador.
En ejecución. El proceso está siendo
ejecutado en este momento. Sus
instrucciones están siendo procesadas en
algún procesador.
Bloqueado. En espera de algún evento
para poder continuar su ejecución (aun si
hubiera un procesador disponible, no podría
avanzar).
Zombie. El proceso ha finalizado su
ejecución, pero el sistema operativo debe
realizar ciertas operaciones de limpieza para
poder eliminarlo de la lista.
Terminado. El proceso terminó de
ejecutarse; sus estructuras están a la espera
de ser limpiadas por el sistema operativo.
1.3. Virtualización.
1.3.1. Componentes y Niveles de
Virtualizació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 aspectos.
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.
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 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 (Paravirtualizació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. Esta 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 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.
Paravirtualización
La paravirtualizació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
paravirtualización busca hacerlo con pleno
conocimiento y cooperación por parte de los
sistemas huéspedes. Esto es, la
paravirtualizació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
paravirtualizado 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
paravirtualizado 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.
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 paravirtualizació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.
Paravirtualización y software libre.
La paravirtualizació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 paravirtualización es casi
equivalente a traducirlo a una nueva
arquitectura hardware. Para que los autores de
un entorno que implemente paravirtualización
logren que un sistema operativo nuevo pueda
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?
El proyecto de gestión de virtualización y
paravirtualizació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 paravirtualizando 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
paravirtualizació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 paravirtualizable 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
paravirtualizació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 interés.
Paravirtualización de dispositivos
Las ideas derivadas de la paravirtualizació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 paravirtualizació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 paravirtuales. 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 liderearon 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.
Mediante esta estrategia es posible ejecutar
sistemas operativos propietarios, como los de la
familia Windows, con buena parte de las
ventajas de la paravirtualización, sobre entornos
de virtualización asistida por hardware.
1.3.2. VPS (Virtual Private Server)
VPS significa Virtual Private
Server o Servidor Virtual Privado y es un
tipo de alojamiento que te vas a encontrar si
superas un plan de alojamiento compartido
básico. VPS ofrece un ambiente parcialmente
aislado, junto con un mayor control y la
capacidad de hacer cosas más avanzadas con tu
sitio web. El espacio en el servidor se divide en
contenedores, y esos servidores autónomos son
menos propensos a riesgos.
Para entender mejor el alojamiento VPS,
primero debes entender lo que acoge tanto un
servidor dedicado y VPS. Un servidor dedicado
ofrece privacidad, la seguridad y los recursos
dedicados. no tienes que competir con otros
sitios web de ancho de banda, velocidad y
espacio de almacenamiento. Es como decir tu
propia pequeña isla privada en el océano de
alojamiento.
Un VPS crea un ambiente similar a la de un
servidor dedicado, pero en una situación de
alojamiento compartido. En otras palabras,
todavía estás compartiendo el servidor físico
con otros editores, pero tiene un poco de
espacio privado dentro de ese espacio
compartido. Así que si estas compartiendo una
isla con otros nativos, pero tu área está
separada de los demás.
¿Por qué utilizar un VPS?
La mayoría de los propietarios de sitios web
para principiantes comienzan con un plan de
alojamiento compartido. El alojamiento
compartido está diseñado para los pequeños
sitios que no exigen demasiado. Una vez que tu
sitio crece, es probable que un servidor VPS sea
necesario para el siguiente paso.
La parte importante de VPS es la virtualización.
El anfitrión divide un servidor en varios
servidores virtuales más pequeños, cada uno
con su propio trozo de memoria RAM y espacio
en disco duro. Cuando un cliente adquiere uno
de estos servidores virtuales, disfrutan de una
experiencia más aislado, ya que su servidor
virtual no puede ser interrumpido por otros
clientes. (Ten en cuenta que todavía compartes
algunas cosas los clientes de tu servicio de
alojamiento.)
VPS es ideal para pequeñas empresas que
quieren un poco de paz de la mente y están
dispuestos a pagar por ello. Si necesitas saber
que tu sitio web no será arrastrado por un mal
vecino, un VPS valdrá la pena el gasto extra.
VPS Pros y contras
VPS es un servicio de alojamiento web con
algunas ventajas y desventajas.
Ventajas VPS:
- El VPS se puede configurar en pocos
minutos.
- VPS tiende a ser más fiable que el
alojamiento compartido, ya que su sitio
no puede ser afectada por otro cliente
acaparando recursos.
- Este tipo de alojamiento te da más
acceso a la configuración del servidor,
por lo que puede controlar la
configuración de ti mismo.
- Puede crear y eliminar sitios de tu VPS a
voluntad.
- Cada sitio puede tener su propio panel
de control.
- El software puede ser instalado y
modificado.
- Es más seguro.
- Otra de las ventajas de VPS es la
posibilidad de personalizar tu sistema
operativo, algo que se puede hacer con
un servidor dedicado, también, pero no
con alojamiento compartido.
Hay algunas desventajas VPS:
- Necesitas saber un poco más sobre la
administración del servidor.
- El costo es algo elevado.
- Un VPS no administrado puede parecer
una opción barata, pero si no sabe lo
que estás haciendo, la fijación de un
fallo sale caro.
- La elección de un plan puede ser
complicada.