Está en la página 1de 18

Universidad Católica de Santiago del estero

|Sistemas Operativos I|

Investigación sobre:
● Organización y Estructura de los Sistemas Operativos.
● Procesos.
● Hilos.

Elaborado por:

- Kremser Pablo

Profesor:

- Guillermo Biderbosts
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019

Organización y Estructura de los Sistemas Operativos

Sistemas monolíticos

Todos los componentes de gestión y programas del sistema están escritos en un solo código
o espacio lógico. La estructura consiste en que no tienen estructura. En estos sistemas
operativos se escriben como un conjunto de procedimientos, cada uno de los cuales puede
llamar a cualquiera de los otros siempre que lo necesite. Cuando se emplea esta técnica,
cada procedimiento del sistema tiene una interfaz bien definida en términos de parámetros
y resultados, y cada una tiene la libertad de llamar a cualquiera otra, si la última ofrece
algún cálculo útil que la primera necesite.

Para construir el programa objeto real del sistema operativo cuando se usa este método, se
compilan todos los procedimientos individuales a archivos que contienen los
procedimientos y después se combinan todos en un solo archivo objeto con el enlazador.

En términos de ocultamiento de información, esencialmente no existe ninguno; todo


procedimiento es visible para todos (al contrario de una estructura que contiene módulos o
paquetes, en los cuales mucha información es local a un módulo y sólo pueden llamar
puntos de registro designados oficialmente del exterior del módulo).

Sin embargo, hasta en los sistemas monolíticos es posible tener cierta estructura. Para
solicitar los servicios (llamadas al sistema) que proporciona el sistema operativo, los
parámetros se colocan en un lugar bien definido (por ejemplo, en la pila) y luego se ejecuta
una instrucción de trap. Esta instrucción cambia la máquina del modo usuario al modo
kernel y transfiere el control al sistema operativo. Después el sistema operativo obtiene los
parámetros y determina cuál es la llamada al sistema que se va a llevar a cabo. Después la
indiza en una tabla que contiene en una ranura k un apuntador al procedimiento que lleva a
cabo la llamada al sistema. Luego de la llamada el control se devuelve al programa del
usuario. Esta organización sugiere una estructura básica para el sistema operativo:

1. Un programa central que invoque el procedimiento de servicio solicitado (núcleo


del sistema operativo que se carga al arrancar la computadora).
2. Un conjunto de procedimientos de servicios que realice las llamadas al sistema (un
procedimiento para cada llamada).
3. Un conjunto de procedimientos de uso general que ayude a los procedimientos de
servicio (hacen cosas que necesitan varios procedimientos de servicio).

Página 2​ de 18
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019

Ventajas

● Estos sistemas están programados de forma no modular, lo que los hace de mayor
rendimiento ante los sistemas pensados en un micronúcleo; al carecer del constante
paso de mensajes de estos últimos.

Desventajas

● La desventaja es que como todo el sistema se ejecuta en el mismo nivel de


privilegio que el núcleo (el Sistema Operativo es el núcleo) es muy probable que
haya problemas (el sistema se apague, se bloquee o se cuelguen procesos por
ejemplo) debido a algún fallo del hardware o a un código mal escrito.
● Al tener miles de procedimientos que se pueden llamar entre sí sin restricción, con
frecuencia se produce un sistema poco manejable y difícil de comprender.
● No existe una buena estandarización de los parámetros y resultados de los procesos.
● No se encuentran bien documentados.
● Son poco mantenibles ya que un cambio en uno de los procesos implica modificar el
resto.
● Cuentan con un núcleo que engloba todas sus funcionalidades y servicios, por lo
que todo cambio a realizar en sus prestaciones requiere la recopilación del núcleo y
el reinicio del sistema.

Sistemas por capas

El avance del hardware permitió que se puedan dividir en fragmentos más pequeños. Así el
SO puede tener mayor control sobre la PC y las aplicaciones. Se utiliza el enfoque
descendente. Consiste en organizar el s. o. como una jerarquía de capas, cada una
construida sobre la inmediata inferior. Cada capa consiste en algunas estructuras de datos y

Página 3​ de 18
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019

un conjunto de rutinas que las capas superiores pueden invocar. La modularidad simplifica
la depuración y la verificación del sistema. Cada capa no necesita saber cómo se han
implementado las operaciones en la capa inferior, sino saber que hacen. La planificación
debe ser muy cuidadosa, ya que una capa solo puede usar las capas que están debajo.

La capa 0 (Reparto del procesador y multiprogramación), esta capa se ocupa del reparto del
procesador, conmutando entre procesos cuando ocurrían interrupciones o expiraban los
temporizadores. En forma general, esta capa se encarga de la multiprogramación básica de
la CPU.

La capa 1 (Administración de memoria y tambor), esta capa administraba la memoria,


repartiendo espacio para los procesos en la memoria principal y usando un tambor que
servía para contener partes de los procesos para las que no había espacio en la memoria
principal.

La capa 2 (Comunicación operador-proceso), esta capa maneja la comunicación entre


procesos y la consola del operador. Por encima de esta capa cada proceso tenía su propia
consola de operador.

La capa 3 (Administración de Entrada/Salida), esta capa se encarga de administrar los


dispositivos de Entrada/Salida y de colocar en buffers las corrientes de información
provenientes de y dirigidas a ellos.

La capa 4 (Programas de usuario), en esta capa están los programas del usuario, los cuales
no se tenían que preocupar por cómo era la administración de procesos, memoria, E/S o
consola.

La capa 5 (El Operador), en esta capa estaba el proceso del operador.

Página 4​ de 18
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019

Ventajas:

● Depuración y verificación: Tras depurar la 1ª capa se supone su funcionamiento


correcto mientras se trabaja con la 2ª capa.
● Mantenimiento: Es posible cambiar las rutinas de bajo nivel siempre que la interfaz
externa de la rutina no cambie y la rutina realice la misma tarea anunciada.
● Las capas pueden reusarse y versionarse.
● Son sistemas más manejables por la modulación en capas.

Desventajas:

● Llamadas entre capas => paso de parámetros.


● Menor rendimiento al contar del constante paso de mensajes entre las capas. Cada
capa implica un gasto extra.
● Se tiene considerar que las capas superiores solamente pueden utilizar los servicios
de la capa que se encuentra inferior, por lo tanto, se debe tener mucho cuidado en la
planificación del sistema para que exista un óptimo funcionamiento.

Máquinas virtuales

Se separan totalmente las funciones de multiprogramación y de máquina extendida. Existe


un elemento central llamado monitor de la máquina virtual que se ejecuta en el hardware y
realiza la multiprogramación. Proporciona varias máquinas virtuales a la capa superior.

Las máquinas virtuales instrumentan copias “exactas” del hardware simple, con su modo
núcleo / usuario, e / s, interrupciones y todo lo demás que posee una máquina real. Pueden
ejecutar cualquier S. O. que se ejecute en forma directa sobre el hardware. Las distintas
máquinas virtuales pueden ejecutar distintos S. O. y en general así lo hacen. Soportan
periféricos virtuales.

Las máquinas virtuales generalmente utilizarán, entre otros, el S. O. “CMS”:


Conversational Monitor System. Cuando un programa “CMS” ejecuta una llamada al
sistema: La llamada es atrapada por el S. O. en su propia máquina virtual. “CMS”
proporciona las instrucciones de e / s en hardware para la lectura del disco virtual o lo
necesario para efectuar la llamada. Utilizando planificación de la CPU y técnicas de
memoria virtual un SO puede crear la ilusión de que múltiples procesos se ejecutan cada
uno en su propio procesador con su propia memoria (virtual).

Las máquinas virtuales nos permiten ejecutar un sistema operativo en una ventana en el
escritorio. Podemos emplear una máquina virtual para ejecutar el software hecho para otros

Página 5​ de 18
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019

sistemas operativos, experimentar con diferentes sistemas operativos y software sin


estropear nuestro sistema operativo.

El sistema operativo de la máquina virtual se almacena en un disco duro virtual,


generalmente un archivo grande, de varios gigabytes, almacenado en su disco duro. Ese
archivo es para el sistema operativo como un disco duro real. Esto significa que no
tendremos que perder tiempo con la partición.

Las máquinas virtuales añaden algo de sobrecarga, por lo que no será tan rápido como si se
hubiera instalado el sistema operativo en hardware real.

Varios sistemas operativos distintos pueden coexistir sobre la misma computadora, en


sólido aislamiento el uno del otro, por ejemplo para probar un sistema operativo nuevo sin
necesidad de instalarlo directamente.

La virtualización es una excelente opción hoy día, ya que las máquinas actuales en la
mayoría de los casos están siendo "sub-utilizados", llegando a un uso de entre 30% a 60%
de su capacidad. Al virtualizar, la necesidad de nuevas máquinas en una ya existente
permite un ahorro considerable de los costos asociados (energía, mantenimiento, espacio,
etc).

Cliente-Servidor

Se diferencian dos clases de procesos: los servidores, cada uno de los cuales proporciona
cierto servicio, y los clientes, que utilizan estos servicios. Este modelo se conoce como
cliente-servidor. A menudo la capa inferior es un microkernel, pero eso no es requerido. La
esencia es la presencia de procesos cliente y procesos servidor. La comunicación entre
clientes y servidores se lleva a cabo comúnmente mediante el paso de mensajes. Para
obtener un servicio, un proceso cliente construye un mensaje indicando lo que desea y lo
envía al servicio apropiado. Después el servicio hace el trabajo y envía de vuelta la
respuesta.

Página 6​ de 18
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019

Una generalización obvia de esta idea es hacer que los clientes y los servidores se ejecuten
en distintas computadoras, conectadas mediante una red de área local o amplia. Como los
clientes se comunican con los servidores mediante el envío de mensajes, no necesitan saber
si los mensajes se manejan en forma local en sus propios equipos o si se envían a través de
una red a servidores en un equipo remoto. Por ende, el modelo cliente-servidor es una
abstracción que se puede utilizar para un solo equipo o para una red de equipos. La mayor
parte de la Web opera de esta forma. Una PC envía una petición de una página Web al
servidor y la página Web se envía de vuelta. Éste es un uso común del modelo
cliente-servidor en una red.

En los sistemas operativos modernos, los sistemas cliente-servidor nacen con la finalidad
de minimizar el núcleo (kernel), trasladando el código de todos sus servicios a las capas
superiores; y el núcleo sólo deberá controlar la comunicación, que se realiza mediante
mensajes, entre clientes y servidores o servidores y hardware.

El objetivo es desarrollar la mayoría de las funciones del sistema operativos como procesos
de usuario. Un proceso de usuario, llamado en este caso proceso cliente, envía una solicitud
a un proceso servidor, que realiza el trabajo y devuelve la respuesta.

Los servidores se ejecutan como procesos en modo usuario: No tienen acceso directo al
hardware. Se aíslan y acotan más fácilmente los problemas. Se adapta para su uso en los
sistemas distribuidos.

El remitente de una solicitud es conocido como cliente. Sus características son:

● Es quien inicia solicitudes o peticiones, tienen por tanto un papel activo en la


comunicación (dispositivo maestro o amo).
● Espera y recibe las respuestas del servidor.
● Por lo general, puede conectarse a varios servidores a la vez.
● Normalmente interactúa directamente con los usuarios finales mediante una interfaz
gráfica de usuario.

Al receptor de la solicitud enviada por el cliente se conoce como servidor. Sus


características son:

● Al iniciarse esperan a que lleguen las solicitudes de los clientes, desempeñan


entonces un papel pasivo en la comunicación (dispositivo esclavo).
● Tras la recepción de una solicitud, la procesan y luego envían la respuesta al cliente.

Página 7​ de 18
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019

● Por lo general, acepta las conexiones de un gran número de clientes (en ciertos
casos el número máximo de peticiones puede estar limitado).

Ventajas

● Centralización del control: los accesos, recursos y la integridad de los datos son
controlados por el servidor de forma que un programa cliente defectuoso o no
autorizado no pueda dañar el sistema.
● Escalabilidad: se puede aumentar la capacidad de clientes y servidores por separado.
● Fácil mantenimiento: al estar distribuidas las funciones y responsabilidades entre
varios ordenadores independientes, es posible reemplazar, reparar, actualizar, o
incluso trasladar un servidor, mientras que sus clientes no se verán afectados por ese
cambio.

Desventajas

● Congestión del tráfico. Cuando una gran cantidad de clientes envían peticiones
simultáneas al mismo servidor, puede ser que cause muchos problemas para éste.
● El paradigma de C/S clásico no tiene la robustez. Cuando un servidor está caído, las
peticiones de los clientes no pueden ser satisfechas.
● El software y el hardware de un servidor son generalmente muy determinantes.
Normalmente se necesita software y hardware específico, sobre todo en el lado del
servidor, para satisfacer el trabajo. Esto aumentará el coste.

Sistemas Microkernels

En esta, se trata de combinar el rendimiento y sencillez de la Arquitectura monolítica con la


protección y organización de la arquitectura por capas. La idea fundamental es obtener un
Núcleo lo más pequeño y rápido posible y tratar el resto de las funciones y componentes
como procesos de aplicación.

En esta nueva concepción, es usual que el núcleo solo contenga lo necesario para la gestión
de memoria y procesos. Todo el resto se ejecuta con el nivel de privilegios de las
aplicaciones que no son del sistema.

En la práctica es un poco difícil conseguir esto sin una pérdida apreciable de rendimiento y
en alguna medida deben incluirse en el núcleo otras funciones como el manejo de hardware
y algunos Drivers.

Página 8​ de 18
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019

Sin embargo, Sistemas Operativos como QNX son una aproximación bastante cercana. Una
ventaja técnica de la arquitectura de micronúcleo es que teóricamente es posible utilizar el
mismo Sistema Operativo en hardware complejo que en hardware pequeño ya que el núcleo
suele ser de unos pocos Kbyte.

Las principales ventajas de su utilización son la reducción de la complejidad, la


descentralización de los fallos (un fallo en una parte del sistema no lo colapsaría por
completo) y la facilitación para crear y depurar controladores de dispositivos.

Por otro lado, sus principales dificultades son la complejidad en la sincronización de todos
los módulos que componen el micronúcleo y su acceso a la memoria, la anulación de las
ventajas de Zero Copy, la Integración con las aplicaciones. Además, los procesadores y
arquitecturas modernas de hardware están optimizadas para sistemas de núcleo que pueden
mapear toda la memoria.

Esto mejora la tolerancia a fallos y eleva la portabilidad entre plataformas de hardware,


según los defensores de esta tendencia. Sus detractores le achacan, fundamentalmente,
mayor complejidad en el código, menor rendimiento, o limitaciones en diversas funciones.

Página 9​ de 18
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019

Sistemas Exokernels

La idea tras los exonúcleos es obligar a los desarrolladores a usar el menor número posible
de abstracciones, permitiéndoles tomar tantas decisiones como sea posible sobre las
abstracciones de hardware. Los exonúcleos son pequeños, ya que su funcionalidad está
limitada a asegurar la protección y el multiplexado de recursos, que son muchísimo más
simples que las implementaciones del paso de mensajes y las abstracciones del hardware de
los núcleos monolíticos tradicionales.
Las aplicaciones pueden pedir direcciones específicas de memoria, bloques de disco, etc. El
núcleo sólo asegura que el recurso está libre y se permite a la aplicación usarlo. Este acceso
de bajo nivel al hardware permite al programador implementar abstracciones
personalizadas y omitir las innecesarias, normalmente contribuyendo a un mejor
desempeño de la aplicación. Esto también permite a los programadores escoger qué nivel
de abstracción desean.
Los exonúcleos pueden ser vistos como una aplicación del principio del "fin al fin" a los
sistemas operativos, en el sentido en que no fuerzan a una aplicación a poner sus
abstracciones en distintas capas de las que fueron diseñadas con diferentes requisitos en
mente. Por ejemplo, en el proyecto del exonúcleo del MIT, el servidor web Cheetah guarda
paquetes preformateados del protocolo IP en el disco, y el núcleo garantiza un acceso
seguro al disco evitando lecturas y escrituras no permitidas, pero cómo se abstrae el
funcionamiento del disco se deja a la elección de las librerías que la aplicación usa.
Características :
El exokernel es eficiente debido al número limitado de operaciones primitivas sencillas que
aporta.
Debido al bajo nivel de seguridad en la multiplexación de los recursos de hardware
proporciona baja utilización de los recursos del sistema.
Abstracciones tradicionales como la Memoria Virtual (VM) y los Interprocesos de
Comunicación (IPC) pueden ser implementados de forma eficiente a nivel de aplicación, en
donde podría extenderse fácilmente, especializarse o sustituirse.
Las aplicaciones pueden crear efectos especiales de las implementaciones de las
abstracciones adaptándolas a sus necesidades y funcionalidades de rendimiento.

Ventajas:
● Mejor utilización de los recursos.
● Mayor rendimiento en los recursos.
● Mayor eficiencia en la utilización de los recursos.

Página 10​ de 18
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019

Desventajas:
● Mayor complejidad para el desarrollo de software.
● Carece de funcionalidades de alto nivel a comparación de otros Sistemas
Operativos.

Página 11​ de 18
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019

Procesos

El procesador por sí mismo proporciona soporte muy limitado a la multiprogramación, por


lo que es necesario disponer de software para gestionar la compartición de procesador (así
como otros recursos) entre las distintas aplicaciones que se están ejecutando en un
momento determinado.

El sistema operativo brinda una representación abstracta y uniforme de los recursos que las
aplicaciones pueden solicitar y acceder (memoria principal, procesador, interfaces de red,
etc.). Esta gestión efectuada por el sistema operativo permite que los recursos estén
disponibles para múltiples aplicaciones, que el procesador físico conmute entre múltiples
aplicaciones, y que puedan utilizarse de forma eficiente.

El enfoque de todos los sistemas operativos modernos recae en un modelo bajo el cual una
aplicación se divide en uno o más procesos para poder ejecutarse.

Qué diferencia hay entre un proceso y un programa:

Programa: ​Un programa es una secuencia de instrucciones, escritas para realizar una tarea
específica en una computadora. El programador puede acceder al mismo para modificar las
instrucciones e incorporar nuevas tareas. El programa como instancia estática se encuentra
almacenado en la memoria secundaria. Cuando se ejecuta dicho programa, pasa a ocupar
espacio en memoria principal, y se convierte en proceso.

Proceso: ​Un proceso es una instancia de un programa en ejecución, incluyendo los valores
actuales del contador de programa, los registros y las variables. El programa es la instancia
estática y el proceso es la instancia dinámica. En estos tiene acción el sistema operativo
más que el programador.

Creación de un proceso

Los sistemas operativos necesitan cierta manera de crear y terminar procesos según sea
necesario. Para crear un proceso hay que hacer que un proceso existente ejecute una
llamada al sistema de creación de proceso. Esta llamada al sistema indica al sistema
operativo que cree un proceso y le indica cuál programa debe ejecutarlo.

Página 12​ de 18
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019

Cada proceso tiene su propio espacio de direcciones, por lo que si modifica una palabra en
su espacio de direcciones, esta modificación no es visible para el otro proceso. El
mecanismo por el cual un proceso crea otro proceso se denomina bifurcación (fork). Los
nuevos procesos pueden ser independientes y no compartir el espacio de memoria con el
proceso que los ha creado o ser creados en el mismo espacio de memoria.

Se usa una variable de tipo semáforo para sincronizar los procesos. Si un proceso está
esperando una señal, se suspende hasta que la señal se envíe. Se mantiene una cola de
procesos en espera en el semáforo. La forma de elegir los procesos de la cola en espera es
mediante una política first in first out.

El ciclo de vida de un proceso es sencillo, consta de la creación, la ejecución de


instrucciones y la terminación. Un proceso en el transcurso de su ciclo puede estar en
diferentes estados.

Hay cuatro eventos principales que provocan la creación de procesos:

● El arranque del sistema.


● La ejecución, desde un proceso, de una llamada al sistema para creación de
procesos.
● Una petición de usuario para crear un proceso.
● El inicio de un trabajo por lotes.

Generalmente, cuando se arranca un sistema operativo se crean varios procesos. Algunos de


ellos son procesos en primer plano; es decir, procesos que interactúan con los usuarios
(humanos) y realizan trabajo para ellos. Otros son procesos en segundo plano, que no están
asociados con usuarios específicos sino con una función específica.

A menudo, un proceso en ejecución emitirá llamadas al sistema para crear uno o más
procesos nuevos, para que le ayuden a realizar su trabajo. En especial, es útil crear procesos
cuando el trabajo a realizar se puede formular fácilmente en términos de varios procesos
interactivos relacionados entre sí, pero independientes en los demás aspectos.

En los sistemas interactivos, los usuarios pueden iniciar un programa, lo que desencadena
el inicio de un proceso.

La última situación en la que se crean los procesos se aplica sólo a los sistemas de
procesamiento por lotes que se encuentran en las mainframes grandes. Aquí los usuarios
pueden enviar trabajos de procesamiento por lotes al sistema (posiblemente en forma

Página 13​ de 18
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019

remota). Cuando el sistema operativo decide que tiene los recursos para ejecutar otro
trabajo, crea un proceso y ejecuta el siguiente trabajo de la cola de entrada.

Cada vez que el SO crea un proceso se procede de la siguiente manera:

● Asignar un único identificador del proceso.


● Asignar espacio para el proceso.
● Inicializar el Bloque de Control de Procesos.
● Establecer los enlaces apropiados. Colocarlo en la lista de procesos listos o
suspendidos.
● Crear otras estructuras de control.

Terminación de procesos

Una vez que se crea un proceso, empieza a ejecutarse y realiza el trabajo al que está
destinado. Tarde o temprano el nuevo proceso terminará, por lo general debido a una de las
siguientes condiciones:

● Salida normal ​(voluntaria)​: ​cuando el proceso termina de forma voluntaria, por


ejemplo, cuando se cierra en navegador web o el procesador de textos.
● Salida por error ​(voluntaria)​: cuando el proceso tiene que salir debido a
insuficiencia de datos, por ejemplo, cuando solicita un archivo que no existe.
● Error fatal ​(involuntaria)​: sucede por un error en el programa. Algunos ejemplos
incluyen el ejecutar una instrucción ilegal, hacer referencia a una parte de memoria
no existente o la división entre cero.
● Eliminado por otro proceso ​(involuntaria)​: ​éste es sumamente útil cuando un
proceso se queda colgado, es decir, sin terminar, pero tampoco responde. Se ejecuta
una llamada al sistema que indique al sistema operativo que elimine otros procesos.

Página 14​ de 18
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019

Hilos

Definición:

● Un hilo en un sistema operativo es la característica que permite a una aplicación


realizar varias tareas a la vez concurrentemente, los distintos hilos de ejecución
comparten una serie de recursos tales como el espacio de memoria, los archivos
abiertos, situación de autentificación. Esta acción permite simplificar el diseño de
una aplicación que debe llevar a cabo distintas funciones simultáneamente.
● Los hilos son básicamente una tarea que puede ser ejecutada en paralelo con otra
tarea; teniendo en cuenta lo que es propio de cada hilo es el contador de programa,
la pila de ejecución y el estado de la CPU (incluyendo el valor de los registros).

Implementaciones:

Hay dos grandes categorías en la implementación de hilos:

● Hilos a nivel de usuario (ULT)


● Hilos a nivel de Kernel (KLT)

Hilos a nivel de usuario (ULT):

En una aplicación ULT pura, todo el trabajo de gestión de hilos lo realiza la aplicación y el
núcleo o kernel no es consciente de la existencia de hilos. Es posible programar una
aplicación como multihilo mediante una biblioteca de hilos. La misma contiene el código
para crear y destruir hilos, intercambiar mensajes y datos entre hilos, para planificar la
ejecución de hilos y para salvar y restaurar el contexto de los hilos.
Todas las operaciones descritas se llevan a cabo en el espacio de usuario de un mismo
proceso. El kernel continúa planificando el proceso como una unidad y asignándole un
único estado (Listo, bloqueado, etc.).

● Ventajas de los ULT


o El intercambio de los hilos no necesita los privilegios del modo kernel, porque
todas las estructuras de datos están en el espacio de direcciones de usuario de un
mismo proceso. Por lo tanto, el proceso no debe cambiar a modo kernel para
gestionar hilos. Se evita la sobrecarga de cambio de modo y con esto el
sobrecoste u overhead.

Página 15​ de 18
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019

oSe puede realizar una planificación específica. Dependiendo de que aplicación


sea, se puede decidir por una u otra planificación según sus ventajas.
o Los ULT pueden ejecutar en cualquier sistema operativo. La biblioteca de hilos
es un conjunto compartido.
● Desventajas de los ULT
o En la mayoría de los sistemas operativos las llamadas al sistema (System calls)
son bloqueantes. Cuando un hilo realiza una llamada al sistema, se bloquea el
mismo y también el resto de los hilos del proceso.
o En una estrategia ULT pura, una aplicación multihilo no puede aprovechar las
ventajas de los multiprocesadores. El núcleo asigna un solo proceso a un solo
procesador, ya que como el núcleo no interviene, ve al conjunto de hilos como
un solo proceso.
o Una solución al bloqueo mediante a llamadas al sistema es usando la técnica
de jacketing, que es convertir una llamada bloqueante en no bloqueante.

Hilos a nivel de Kernel (KLT):

En una aplicación KLT pura, todo el trabajo de gestión de hilos lo realiza el kernel. En el
área de la aplicación no hay código de gestión de hilos, únicamente un API (interfaz de
programas de aplicación) para la gestión de hilos en el núcleo. Windows 2000 ,Linux y
OS/2 utilizan este método. Linux utiliza un método muy particular en que no hace
diferencia entre procesos e hilos, para linux si varios proceso creados con la llamada al
sistema "clone" comparten el mismo espacio de direcciones virtuales el sistema operativo
los trata como hilos y lógicamente son manejados por el kernel.

● Ventajas de los KLT


o El kernel puede planificar simultáneamente múltiples hilos del mismo proceso
en múltiples procesadores.
o Si se bloquea un hilo, puede planificar otro del mismo proceso.
o Las propias funciones del kernel pueden ser multihilo.

● Desventajas de los KLT


o El paso de control de un hilo a otro precisa de un cambio de modo.

Página 16​ de 18
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019

Estructura de los Hilos:

Un hilo (proceso ligero) es una unidad básica de utilización de la CPU, y consiste en un


contador de programa, un juego de registros y un espacio de pila.

Los hilos dentro de una misma aplicación comparten:

✓ La sección de código.

✓ La sección de datos.

✓ Los recursos del SO (archivos abiertos y señales).

Un proceso tradicional o pesado es igual a una tarea con un solo hilo.

Los hilos permiten la ejecución concurrente de varias secuencias de instrucciones asociadas


a diferentes funciones dentro de un mismo proceso, compartiendo un mismo espacio de
direcciones y las mismas estructuras de datos del núcleo.

Estados de un Hilo:

Los principales estados de un hilo son: ejecución, preparado y bloqueado; y hay cuatro
operaciones básicas relacionadas con el cambio de estado de los hilos:

✓ Creación: En general, cuando se crea un nuevo proceso se crea también un hilo para
ese proceso. Posteriormente, ese hilo puede crear nuevos hilos dándoles un puntero
de instrucción y algunos argumentos. Ese hilo se colocará en la cola de preparados.

✓ Bloqueo: Cuando un hilo debe esperar por un suceso, se le bloquea guardando sus
registros. Así el procesador pasará a ejecutar otro hilo preparado.

✓ Desbloqueo: Cuando se produce el suceso por el que un hilo se bloqueó pasa a la


cola de listos.

✓ Terminación: Cuando un hilo finaliza, se liberan su contexto y sus pilas.

Un punto importante es la posibilidad de que el bloqueo de un hilo lleve al bloqueo de todo


el proceso. Es decir, que el bloqueo de un hilo lleve al bloqueo de todos los hilos que lo
componen, aun cuando el proceso está preparado.

Página 17​ de 18
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019

Funcionalidad de los hilos:

Al igual que los procesos, los hilos poseen un estado de ejecución y pueden sincronizarse
entre ellos para evitar problemas de compartición de recursos. Generalmente, cada hilo
tiene una tarea específica y determinada, como forma de aumentar la eficiencia del uso del
procesador.

Sincronización de hilos:

Todos los hilos comparten el mismo espacio de direcciones y otros recursos como pueden
ser archivos abiertos. Cualquier modificación de un recurso desde un hilo afecta al entorno
del resto de los hilos del mismo proceso. Por lo tanto, es necesario sincronizar la actividad
de los distintos hilos para que no interfieran unos con otros o corrompan estructuras de
datos.

Página 18​ de 18

También podría gustarte