Você está na página 1de 12

PROCESOS EN SISTEMAS UNIX

CREACIN DE PROCESOS

Cuando se inicia la operacin de la computadora, debe cargarse en la


memoria una copia del ncleo (bootstrap). El Kernel prepara entre
otros, el reloj que proporciona interrupciones peridicas, algunas
estructuras de datos que de almacenamiento temporal,
almacenamiento de descriptores y cantidad de memoria principal.

A continuacin, el Kernel inicializa un proceso especial, el proceso init


que tiene el !" #. En general, los procesos se crean mediante una
llamada a una rutina del sistema ($or%), que $unciona por un
mecanismo de duplicacin de procesos. &in embargo, esto no es
su$iciente para crear el primero de ellos, por lo que el Kernel asigna
una estructura de datos y establece apuntadores a una seccin
especial de la memoria, llamada tabla de procesos, que contendr' los
descriptores de cada uno de los procesos e(istentes en el sistema

BIFURCACIN (TENEDOR)

En los sistemas UNIX, el mecanismo ms frecuentemente utilizado para crear un nuevo


proceso es el empleo de la llamada al sistema fork().

El nuevo proceso que se crea recibe una copia del espacio de direcciones del padre. os
dos procesos contin!an su e"ecuci#n en la instrucci#n si$uiente al fork.

a creaci#n de dos procesos totalmente id%nticos no suele ser !til. &s', el valor devuelto por
fork permite diferenciar el proceso padre del (i"o, )a que fork devuelve * al (i"o
) el I+ del (i"o al padre.

En caso de error devuelve ,-.


LLAMADA AL SISTEMA FORK

FUNCION EXEC

SUBSTITUCIN

.recuentemente, la si$uiente instrucci#n que e"ecuta un proceso (i"o


es e/ecve(), que car$a a un nuevo pro$rama sobre del actual )
transfiere la e"ecuci#n a su primer instrucci#n.

a familia e/ec...() es un con"unto de funciones que corre un arc(ivo


e"ecutable en el conte/to de un proceso )a e/istente, reemplazando
el e"ecutable anterior. Esta le) tambi%n se conoce como una
superposici#n . Es especialmente importante en sistemas Uni/,
aunque e/iste en otros lu$ares. 0omo no se crea un nuevo proceso,
el identificador del proceso (1I+) no cambia, pero el c#di$o de
mquina , datos , pila ) pila del proceso se sustitu)en por las del
nuevo pro$rama.

.ilename es un binario e"ecutable, o bien s(ell


script2 ar$v ) envp son arra)s de cadenas de
ar$umentos pasados al nuevo pro$rama. 3anto
ar$v como envp deben terminar en un puntero
nulo.

e/ecve no re$resa en caso de %/ito, ) el


se$mento de c#di$o, se$mento de datos, 455
) la pila del proceso invocador se
sobreescriben con los correspondientes del
pro$rama car$ado. El pro$rama invocado
(ereda el 1I+ del proceso invocador.

BOMBA FORK

a bomba fork es una forma de ataque +o5 sobre un


computador que implementa la funci#n fork. a bomba
fork es considerado un 6abbit )a que no se replica de
la misma forma que los $usanos o los virus. 5u efecto
se basa en la suposici#n de que el n!mero de
pro$ramas ) procesos que se e"ecutan
simultneamente en un ordenador tiene un l'mite.

Una bomba fork funciona creando una $ran cantidad


de procesos recursivamente con el ob"etivo de saturar
el espacio disponible en la lista de procesos
mantenida por el sistema operativo para se pueden
iniciar nuevos pro$ramas (asta que no se cierre
al$uno.

Una bomba fork funciona eficientemente creando el


primer proceso ) mandando a llamarse recursivamente e
incrementando el n!mero de proceso e/ponecialmente,
naturalmente en potencias de dos.

EXPLIQUEMOS SOMERAMENTE LA BOMBA:

7() define la funci#n llamada 879 . Esta funci#n no admite


ar$umentos.

7:7 a continuaci#n se llama a s' misma utilizando la


recursividad ) mediante un pipe canaliza la salida a 879

; pone la funci#n en se$undo plano para que traba"e


(asta colapsar el sistema.

2 este s'mbolo es necesario para terminar la definici#n


de funci#n en bas(.

7 llama a e"ecuci#n la funci#n 879 ) lanza la bomba.



BOMBA FORK LEGIBLE PARA
HUMANOS

BOMBA FORK EN OTROS
LENGUAJES

BATCH

UNIX C o C++

Tan fcil !" "#a :$%

PERL*

PYTHON

RUBY
<5inta/is vlida tambi%n en =ub)

SOLUCI&N

Una vez una bomba fork (a sido activada de


forma >satisfactoria> en un sistema, puede que
no sea posible e"ecutar nin$una tarea sin un
reinicio del sistema, )a que la !nica soluci#n es
detener todos los procesos iniciados por ella.
Normalmente se requiere car$ar un pro$rama
adicional para >matar> procesos, lo que puede
no ser posible si no (a) posiciones vac'as
dentro de la tabla de procesos o espacio dentro
de las estructuras de memoria.

PRE'ENCIONES DE UN SO

1ero como todo en inu/, tiene soluci#n, o me"or dic(o,


vacuna previsora. o que vamos a (acer es limitar el
n!mero de procesos que un usuario puede e"ecutar.
0uando un proceso intenta crear otro proceso ) el
propietario de dic(o proceso )a posee la cantidad m/ima
de procesos que se le (a asi$nado, el intento de creaci#n
del nuevo proceso falla. El m/imo n!mero de procesos
asi$nado debe ser ba"o para poder resistir la e"ecuci#n
simultnea de una bomba fork por cada usuario ) de"ar
libres los suficientes recursos como para poder restaurar
el sistema.

Esto se (ace mediante el comando ulimit, el encar$ado de


controlar este tema. ? tambi%n modificando el arc(ivo
@etc@securit)@limits.conf, sistemas como .edora o Ubuntu
)a traen por defecto un n!mero l'mite.

Você também pode gostar