*10. Realice un programa que calcule el tiempo medio de espera para el método de administración de Round Robin. Considere un tiempo de conmutación de Q/10.*
*11. Realice un programa que calcule el tiempo de retorno para los métodos SJF y Round Robin.*
Estas respuestas quedan pendientes dado que implican programas. Yo los tengo hechos, pero hay que pulirlos, y emprolijarlos.
*12. ¿Qué se entiende por proceso demonio en un SO Unix, cuando son ejecutados, dónde se los declara y como se los da de baja del sistema? ¿Cuales son los demonios más comunes dentro del Unix, y que utilidad brindan?*
Un demonio, _daemon_ o _dæmon_ (de sus siglas en inglés Disk And Execution Monitor), es un tipo especial de proceso informático que se ejecuta en segundo plano en vez de ser controlado directamente por el usuario (es un proceso no interactivo). Este tipo de programas se ejecutan de forma continua (infinita), vale decir, que aunque se intente cerrar o matar el proceso, este continuará en ejecución o se reiniciará automáticamente. Todo esto sin intervención de terceros y sin dependencia de consola alguna.[1]
*13. ¿Qué comando Unix puedo usar para ver los procesos que están funcionando en el sistema? ¿Qué modificadores se pueden utilizar?*
El comando Unix mas conocido para monitoreo de procesos del sistema en un momento dado es _ps_.
Según el propio manual del comando _ps_: ??report a snapshot of the current processes.??
Parámetros usados comúnmente con _ps_[2]:
bc. $ ps -e
PID TTY TIME CMD
1 ? 00:00:01 init
2 ? 00:00:00 kthreadd
3 ? 00:00:00 migration/0
4 ? 00:00:00 ksoftirqd/0
5 ? 00:00:00 watchdog/0
6 ? 00:00:00 events/0
7 ? 00:00:00 khelper
41 ? 00:00:00 kblockd/0
44 ? 00:00:00 kacpid
45 ? 00:00:00 kacpi_notify
114 ? 00:00:00 kseriod
148 ? 00:00:00 pdflush
149 ? 00:00:00 pdflush
150 ? 00:00:00 kswapd0
191 ? 00:00:00 aio/0
Otro ejemplo:
bc. $ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 2844 1660 ? Ss 18:06 0:01 /sbin/init
root 2 0.0 0.0 0 0 ? S< 18:06 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S< 18:06 0:00 [migration/0]
root 4 0.0 0.0 0 0 ? S< 18:06 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 18:06 0:00 [watchdog/0]
root 6 0.0 0.0 0 0 ? S< 18:06 0:00 [events/0]
root 7 0.0 0.0 0 0 ? S< 18:06 0:00 [khelper]
root 41 0.0 0.0 0 0 ? S< 18:06 0:00 [kblockd/0]
root 44 0.0 0.0 0 0 ? S< 18:06 0:00 [kacpid]
root 45 0.0 0.0 0 0 ? S< 18:06 0:00 [kacpi_notify]
root 114 0.0 0.0 0 0 ? S< 18:06 0:00 [kseriod]
root 148 0.0 0.0 0 0 ? S 18:07 0:00 [pdflush]
root 149 0.0 0.0 0 0 ? S 18:07 0:00 [pdflush]
root 150 0.0 0.0 0 0 ? S< 18:07 0:00 [kswapd0]
root 191 0.0 0.0 0 0 ? S< 18:07 0:00 [aio/0]
Tiene múltiples opciones, las más usadas son[3]:
* -a Muestra todos los procesos con consola controlada, excepto el proceso de usuario actual.
* -r Muestra solo los procesos en ejecución.
* -x Muestra los procesos que no tienen una terminal controlada.
* -u Muestra los propietarios de los procesos.
* -f Visualiza las relaciones padre/hijo entre los procesos.
* -l Produce un listado en formato largo.
* -w Muestra los parámetros de la línea de comandos de los procesos (hasta media línea).
* -ww Muestra todos los parámetros de la línea de comandos de los procesos, independientemente de su longitud. Y combinaciones de los anteriores.
Existe un comando mas “avanzado” (si cabe la Expresión) para el monitoreo de procesos, el comando _top_:
bc. $ top
top - 19:46:51 up 1:39, 2 users, load average: 0.39, 0.20, 0.16
Tasks: 93 total, 4 running, 89 sleeping, 0 stopped, 0 zombie
Cpu(s): 13.0%us, 0.7%sy, 0.0%ni, 86.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 968300k total, 807592k used, 160708k free, 23436k buffers
Swap: 979956k total, 0k used, 979956k free, 555116k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5343 root 20 0 110m 38m 7712 S 3.3 4.1 2:04.43 Xorg
5659 sherlock 20 0 31648 7164 3812 S 3.3 0.7 2:02.27 pulseaudio
6320 sherlock 20 0 83900 25m 12m R 1.3 2.7 0:02.16 terminator
5671 sherlock 20 0 21696 12m 7664 S 0.7 1.3 0:06.72 metacity
5999 sherlock 20 0 42972 18m 9944 R 0.7 1.9 0:28.46 smplayer
1 root 20 0 2844 1660 520 S 0.0 0.2 0:01.38 init
2 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT -5 0 0 0 S 0.0 0.0 0:00.00 migration/0
4 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0
5 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
6 root 15 -5 0 0 0 S 0.0 0.0 0:00.04 events/0
7 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 khelper
41 root 15 -5 0 0 0 S 0.0 0.0 0:00.10 kblockd/0
44 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 kacpid
45 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 kacpi_notify
114 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 kseriod
148 root 20 0 0 0 0 S 0.0 0.0 0:00.00 pdflush
149 root 20 0 0 0 0 S 0.0 0.0 0:00.06 pdflush
150 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 kswapd0
191 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 aio/0
1462 root 15 -5 0 0 0 S 0.0 0.0 0:00.32 ata/0
1468 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 ata_aux
1471 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 ksuspend_usbd
1479 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 khubd
1490 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_0
1495 root 15 -5 0 0 0 S 0.0 0.0 0:00.58 scsi_eh_1
2418 root 15 -5 0 0 0 S 0.0 0.0 0:00.04 kjournald
2624 root 16 -4 2412 844 272 S 0.0 0.1 0:00.36 udevd
2828 root 15 -5 0 0 0 S 0.0 0.0 0:27.02 ntos_wq
2830 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 ndis_wq
Lo avanzado de este comando respecto de _ps_ es que, además de la información adicional de la cabecera, también tiene un comportamiento particular: Se “actualiza” cada n segundos (aproximadamente 2 o 3 segundos) con lo cual, no solo vemos una “foto” del estado actual de los procesos, sino que vemos una “serie de fotos”, lo que permite un monitoreo mas interesante.
*14. ¿Qué es el _shell_ de un usuario, qué parámetros encuentro definido en él? ¿Qué ventajas me brinda su empleo?*
Es un programa informático que actúa como interfaz de usuario para comunicar al usuario con el sistema operativo mediante una ventana que espera ordenes escritas por el usuario en el teclado, los interpreta y los entrega al sistema operativo para su ejecución. La respuesta del sistema operativo es mostrada al usuario en la misma ventana. A continuación, El programa _shell_ queda esperando más instrucciones. Se interactúa con la información de la manera más sencilla posible, sin gráficas, solo el texto crudo.[4]
Existen varias _shells_, algunas son:
* Bourne SHell (sh) – La _shell_ clásica que se encuentra en todos los sistemas UNIX.
* Korn SHell (ksh).
* C SHell (csh).
* Bourne-Again SHell (bash) – La _shell_ de GNU que se encuentra en todos los sistemas Linux y en muchos otros UNIX. Es la que vamos a utilizar.
Las ventajas incluyen el menor consumo de memoria y la más rápida manipulación de pantalla. Además, las aplicaciones en modo texto tienen unos requisitos de ancho de banda relativamente bajos en uso remoto. Una desventaja obvia del modo texto es la restricción del contenido de pantalla, que lo hace inviable para muchos tipos de aplicaciones.[5]
*Bibliografía:*
# W. Stallings. Sistemas Operativos.
# A. Tanenbaum. Sistemas Operativos modernos.
# Silberschatz-Galvin. Fundamentos de Sistemas Operativos.
*Notas al pie:*
fn1. http://es.wikipedia.org/wiki/Demonio_(inform%C3%A1tica)
fn2. Pruebas hechas en un Ubuntu Hardy 8.04
fn3. LOC: Linux Original Courseware. Premiere IT S.R.L. Pag 62.
fn4. http://es.wikipedia.org/wiki/L%C3%ADnea_de_comandos
fn5. http://es.wikipedia.org/wiki/Modo_texto