domingo, 17 de agosto de 2008

Trabajando con Procesos

Que es un proceso
Un proceso es, en resumen, un programa en ejecución.Todos los comandos ejecutados acaban de una forma u otra, por generar un proceso que realiza la tarea. La shell que usamos para interactuar con el sistema también es un proceso. De hecho, la shell es un buen ejemplo para entender las relaciones de parentesco entre procesos.

En caso de no ser un comando interno, la shell ejecuta el comando necesario para llevar a cabo la tarea, invocando un nuevo proceso. Este nuevo proceso se le conoce como proceso hijo (en relación a nuestra shell) y la propia shell es el proceso padre (de ese proceso hijo).

Cuando el proceso ha acabado de realizar su tarea, devuelve los resultados al proceso padre y finaliza su ejecución. El proceso hijo puede necesitar invocar otro proceso donde delegar parte de
la tarea, convirtiéndose a su vez, en el proceso padre del proceso recién invocado. En los sistemas
multitarea como GNU/Linux, los procesos pueden llegar a desarrollar auténticos árboles genealógicos, ya que los procesos pueden se padres e hijos y además, varios procesos pueden ser
hijos del mismo proceso padre a la vez.

Los demonios
De los diferentes procesos que pueden estar ejecutándose en un sistema GNU/Linux, esto es, procesos invocados por el usuario, procesos invocados por otros usuarios y procesos invocados por el sistema operativo, los últimos son los más especiales y se les conoce como demonios (daemons).
Los demonios son procesos que el sistema operativo invoca para proporcionar servicios. Una característica de los demonios es que no suelen interactuar mucho. Proporcionan la funcionalidad para la que están programados de manera silenciosa, al menos en cierta forma, puesto que la gran mayoría utilizan ficheros de log para registrar sus transacciones. Entre los demonios más comunes están los de impresión, los de correo, los de periodicidad de tareas y monitorización. Pero hay muchos más.

Trabajando con ps
El comando ps da información sobre los procesos corriendo sobre el sistema. Invocado de la manera más sencilla:

$ ps

Devuelve un listado con los procesos que se lancen con el usuario actual y que aún se están ejecutando. En la última línea aparecerá el proceso que representa a ps, ya que es el último proceso lanzado.

PID TTY TIME CMD
4321 pts/2 00:00:00 bash
4356 pts/2 00:00:00 ps

Echando un vistazo al resultado:
  • La primera columna, marcada como PID, representa el identificador de proceso (Process ID, PID). Este identificador de proceso se asigna desde cero hasta un límite marcado por el propio sistema operativo. Cuando el identificador llega a ese límite, vuelven a asignarse los identificadores libres empezando otra vez desde cero.
  • La segunda columna indica la terminal asociada al proceso. Hay procesos que no tienen asignada terminal (demonios...), estos aparecen marcados con un signo de interrogación (?) en esta columna.
  • La tercera columna indica el porcentaje de tiempo de procesador que el proceso está usando. Normalmente, los procesos ejecutan sus tareas muy rápidamente, durante intervalos cortos. Luego se mantienen a la espera. Un proceso que muestre lecturas altas en esta columna puede repercutir en el rendimiento del resto del sistema.
  • La cuarta columna es el nombre del proceso (el nombre del comando). La primera línea es siempre la shell sobre la que se ejecutan los procesos. A esta shell (de hecho al primer proceso del usuario) se le llama líder de sesión (session leader).

A ps se le llama frecuentemente de las siguientes formas:
$ ps -a
Devuelve el listado de todos los procesos sin incluir al líder de sesión ni los procesos sin terminal
asociada.
$ ps -e
Devuelve el listado de todos los procesos. La opción -e es sinónimo de la opción -A.
$ ps -l
Devuelve un listado extendido. Con información sobre UID's (identificadores de usuario o User
ID's, marcado como UID), los PID's del proceso padre (marcado como PPID), información sobre si
el proceso entra en las expectativas de planificación de procesos del kernel (marcado como C), o la fecha de inicio del proceso (marcado como TIME). Hay que destacar que en este formato, el
nombre del proceso se sustituye por la cadena entera entrada con la que se lanzó el proceso, con
parámetros, opciones y argumentos (marcado como CMD).

Por ultimo
$ ps -u root
Devolverá todos los procesos que ha lanzado el usuario especificado tras el parámetro -u (en el ejemplo debe sacar información sobre los procesos invocados por root o por el sistema).

pstree y top
Existen dos comandos relacionados con el comando ps que ofrecen una vista de los procesos ligeramente diferente a como lo hace ps.
El primero de ellos es pstree, que ofrece una visualización gráfica (aunque en modo texto) de las relaciones que existen entre los procesos:



El segundo comando relacionado con ps es top. Éste comando, no sólo muestra los procesos actuales, sino que automáticamente se va actualizando para mostrar los cambios acontecidos. Adicionalmente, en la parte superior se muestra información sobre el número de días que ha estado la maquina en marcha, el número de usuarios, la memoria, estadísticas de la memoria de
intercambio, etc.
Mientras el comando top está en marcha, se pueden usar las siguientes teclas para interactuar con él:
h Ayuda
q Salir
s Cambia el tiempo entre actualizaciones (por defecto, 5 segundos)
espacio Actualizar ahora en lugar de esperar al siguiente intervalo de actualización
u Muestra un único usuario:


jueves, 31 de enero de 2008

Ndiswrapper en Debian Etch

La configuracion de mi tarjeta de red inalambrica BCM4318 la realice por medio del ndiswrapper de la siguiente forma:

Lo primero que vamos a hacer es eliminar el paquete BCM43xx

#modprobe -r bcm43xx

Despues procedemos a eliminar las líneas que hagan mención a bcm43xx en estos dos archivos: "/lib/modules/version_kernel/modules.alias" y "/lib/modules/version_kernel/modules.pcimap" en ambos casos encontraremos varias líneas que están juntas y que hacen referencia al modulo bcm43xx y que procederemos a borrar y a guardar cambios.

Para que el bcm43xx no vuelva a instalarse tras cada actualización del kernel, se ha de realizar lo siguiente:
ir al archivo "/etc/modprobe.d/blacklist" y agregar al final de la lista "blacklist bcm43xx"

Ahora vamos a instalar los paquetes necesarios con aptitude;

# aptitude install ndiswrapper ndiswrapper-utils wireless-tools ndiswrapper-source module-assistant

Luego de realizar la instalar debemos compilar el kernel

# m-a prepare
# m-a a-i ndiswrapper

Una vez realizada la compilacion del kernel realizamos la carga del modulo a memoria

#modprobe ndiswrapper

Si todo ha salido bien ahora debemos instalar en el ndiswrapper los drivers de la tarjeta de red para windows,

# ndiswrapper -i driver.inf

en donde driver.inf es la ruta completa del driver que queremos cargar, posteriormente se debe verificar que el driver haya sido cargado sin problemas

# ndiswrapper -l

domingo, 6 de enero de 2008

KDE 4 Conquista tu Escritorio



Bueno KDE 4 será lanzado el 17 - 19 de Enero de 2008.

Esta nueva versión incluye actualizaciones para los componentes principales de KDE, notablemente el Qt 4. Se espera que estas actualizaciones incrementen en un 20 o 30% el rendimiento, comparado con KDE 3.5.x. Contendrá una nueva API Multimedia, llamada Phonon, a un marco de dispositivo de integración llamado Solid y una nueva guía de estillo y un set de íconos llamado Oxygen. También incluirá a nuevo escritorio y una nueva herramienta de interfaz del panel de usuario, llamada Plasma, que permitirá widgets, de forma similar a SuperKaramba o el Dashboard de Apple.


KDE 4 funcionara también en plataformas MacOsX y Windows ver imagenes , de tal forma que se podran ejecutar programas de KDE tales como amarok y k3b.

Robot's