Вы находитесь на странице: 1из 8

Sistema Operativo Linux

Linux
Linux es un sistema operativo de software libre (no es propiedad de ninguna persona o
empresa), por ende no es necesario comprar una licencia para instalarlo y utilizarlo en un
equipo informático. Es un sistema multitarea, multiusuario, compatible con UNIX, y
proporciona una interfaz de comandos y una interfaz gráfica, que lo convierte en un
sistema muy atractivo y con estupendas perspectivas de futuro.

Al ser software libre, el código fuente es accesible para que cualquier usuario pueda
estudiarlo y modificarlo. La licencia de Linux no restringe el derecho de venta, por lo que
diversas empresas de software comercial distribuyen versiones de Linux. Además de esto,
este sistema cuenta con muchas distribuciones y gestores de ventanas para el entorno
gráfico.
Programación concurente en Linux
• Procesos e Hilos de ejecución
Si queremos que nuestro programa empiece a ejecutar varias cosas "a la
vez", tenemos dos opciones. Por una parte podemos crear un nuevo
proceso y por otra, podemos crear un nuevo hilo de ejecución.

En realidad nuestro ordenador, salvo que tenga varias CPU, no ejecutará


varias cosas a la vez. Cuando decimos "a la vez", nos referimos a que el
sistema operativo irá ejecutando los programas por turnos (por
secuencias de tiempo) de forma muy rápida, dando la sensación de
simultaneidad.
¿Cual es la diferencia entre un
proceso y un hilo?
Un proceso de unix es cualquier programa en ejecución y es totalmente
independiente de otros procesos. El comando de unix nos lista los
procesos en ejecución en nuestra máquina.
Un proceso tiene su propia zona de memoria y se ejecuta
"simultáneamente" a otros procesos.
Dentro de un proceso puede haber varios hilos de ejecución eso quiere
decir que un proceso podría estar haciendo varias cosas "a la vez".
Los hilos dentro de un proceso comparten todos la misma
memoria. Eso quiere decir que si un hilo toca una variable,
todos los demás hilos del mismo proceso verán el nuevo valor
de la variable. Esto hace imprescindible el uso de "semáforos".
Esto con el objetivo de evitar que dos hilos accedan a la vez a
la misma estructura de datos.
Semáforo en Linux

Un semáforo da acceso al recurso a uno de los procesos y se lo niega a los demás


mientras el primero no termine. Los semáforos, junto con la memoria compartida
y las colas de mensajes, son los recursos compartidos que suministra UNIX para
comunicación entre procesos.
Interbloqueo Linux
• Bloqueo permanente de un conjunto de procesos que compiten por recursos
del sistema o por comunicacion con los otros .
• No existe una solucion eficiente
• Implica varios procesos cuyas necesidades por los recursos entran en
conflicto.
Como prevenir interbloqueos
Los bloqueos mutuos pueden prevenirse asegurando que no suceda alguna de las
condiciones necesarias vistas anteriormente.

• Eliminando la exclusión mutua: ningún proceso puede tener acceso


exclusivo a un recurso. Esto es imposible para procesos que no pueden ser
encolados (puestos en un spool), e incluso con colas también pueden ocurrir
interbloqueos.
• La condición de posesión y espera puede ser eliminada haciendo que los
procesos pidan todos los recursos que van a necesitar antes de empezar. Este
conocimiento por adelantado muchas veces es imposible nuevamente. Otra
forma es requerir a los procesos liberar todos sus recursos antes de pedir
todos los recursos que necesitan. Esto también es poco práctico en general.
• La condición de no expropiación puede ser también imposible de eliminar
dado que un proceso debe poder tener un recurso por un cierto tiempo o el
procesamiento puede quedar inconsistente.
• La condición de espera circular es la más fácil de atacar. Se le permite a un
proceso poseer solo un recurso en un determinado momento, o una jerarquía
puede ser impuesta de modo tal que los ciclos de espera no sean posibles.

Вам также может понравиться