Hack x Crack 16

Page 18

Programación bajo Linux - IPC - Programación bajo Linux - IPC - Programación bajo Linux - IPC

Tras lo leído, es fácil deducir que un único ejecutable puede ser llamado varias veces, creado así varios procesos (copias en memoria) que hacen lo mismo pero que son independientes. Será el núcleo el encargado de gestionar como y cuando a un proceso le toca realizar sus funciones. El tiempo de vida de un proceso es el conjunto de estados por los que un proceso puede pasar desde que comienza hasta que termina. En un entorno UNiX, los estados por los que puede pasar un proceso son:

Pero antes de llegar ahí, nos queda aún mucho camino por recorrer. Por ahora quedémonos con la idea que refleja dicho gráfico: Un proceso no es algo estático, sino que mientras este permanece en memoria ejecutándose, pasa por diversos estados. La razón de ello es que un proceso no está solo en memoria, sino que puede haber simultáneamente muchos procesos, todos compitiendo por obtener los mismos recursos del sistema (cpu, memoria, disco, I/O...). El núcleo será el encargado de gestionar qué procesos deben de hace qué y cuando. Es lo que se conoce como concurrencia y, como veremos en esta serie, también se nos suministrarán herramientas (semáforos) que nos permitirán gestionar la concurrencia de nuestros propios programas si así lo deseamos o necesitamos. Una manera sencilla de ver los procesos que se están ejecutando en nuestro sistema es mediante el comando ps. Como este comando suele variar ligeramente en sus parámetros en distintos sabores UNiX, recomiendo la consulta de la página del manual (por ejemplo, en GNU/LiNUX, el comando ps A lista todos los procesos del sistema. En *BSD, la orden es ps -a y aún así esto no garantiza que se muestren todos los procesos, dado que el sistema debe de estar configurado para ello. Sea como fuere, una salida clásica en GNU/LiNUX suele ser:

Más adelante veremos y explicaremos en mayor profundidad la información asociada a este gráfico. Sólo quiero llamar la atención sobre lo que ocurre en el paso 2. Cuando hacemos una llamada al sistema, pasaremos a modo supervisor para poder realizar operaciones sobre el núcleo en modo supervisor. Este será el principal hueco que aprovecharemos a la hora de comprometer la seguridad de un sistema, obteniendo permisos bajo ciertas condiciones que a priori no tiene un usuario "normal".

Página 18

luis@leonov:~$ ps -A PID TTY TIME 1 ? 00:00:05 2 ? 00:00:00 0 ? 00:00:00 0 ? 00:00:00 0 ? 00:00:00 0 ? 00:00:00 10 ? 00:00:00 11 ? 00:00:11 121 ? 00:00:00 122 ? 00:00:00

CMD init keventd ksoftirqd_CPU0 kswapd bdflush kupdated khubd kjournald kjournald kjournald

PC PASO A PASO Nº 16


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.