140 likes | 319 Views
Multi-programacin. La tcnica de modularizacin ms caracterstica de programas en Unix es dividir los programas grandes en mltiples procesos cooperativos.Esto se ha llamado comnmente en el mundo Unix como multiprocesamiento, sin embargo es mejor utilizar el trmino multiprogramacin, para no co
E N D
1. Multi-programación CI-2200 Programación Avanzada en Unix
2. Multi-programación La técnica de modularización más característica de programas en Unix es dividir los programas grandes en múltiples procesos cooperativos.
Esto se ha llamado comúnmente en el mundo Unix como multiprocesamiento, sin embargo es mejor utilizar el término multiprogramación, para no confundir con implementaciones de hardware con varios procesadores.
3. Multi-programación Unix alienta al programador a dividir sus programas en subprocesos más simples:
haciendo la creación de procesos hijos barata
proveyendo métodos () que hacen que sea relativamente fácil para los procesos comunicarse
alentando el uso de formatos textuales, simples y transparentes que puedan ser pasados a través de pipes o sockets
4. Separando el control de la complejidad del refinamiento de rendimiento No se debe pensar a priori en utilizar multiprogramación para mejorar la eficiencia.
La multiprogramación debe ser pensada para reducir la complejidad. KISS
Otro aumento de la complejidad son los “threads”.
5. Taxonomía de los métodos IPC de Unix Dejar tareas a los programas especialistas
La forma más simple de cooperación entre programas es cuando un programa corre otro para realizar una tarea específica.
Los programas usualmente se comunican a través del sistema de archivos.
Ejemplo: el agente de usuario para correo mutt.
6. Taxonomía de los métodos IPC de Unix Tuberías, redirecciones y filtros.
El invento de la tuberías por Doug McIlroy alentó la naciente filosofía de Unix “haga una cosa bien” e inspiró muchas de las formas siguientes de IPC, como por ejemplo los sockets.
Ejemplo: entubando hacía un paginador
ps | more
7. Taxonomía de los métodos IPC de Unix Ejemplo: hacer listas de palabras
tr -c '[:alnum:]' '[\n*]' | sort -iu | grep -v '^[0-9]*$’
Ejemplo: pic2graph
(echo ".EQ"; echo $eqndelim; echo ".EN"; echo ".PS";cat;echo ".PE") | groff -e -p $groffpic_opts -Tps >${tmp}.ps && convert -crop 0x0 $convert_opts ${tmp}.ps ${tmp}.${format} && cat ${tmp}.${format}
8. Taxonomía de los métodos IPC de Unix Envoltorios (wrappers)
Un envoltorio crea una interfaz para un programa específico o lo especializa.
Ejemplo: un script de respaldo
tar -czvf /dev/st0 "$@"
9. Taxonomía de los métodos IPC de Unix Envoltorios de seguridad y encadenamiento de Bernstein
Un uso común de los envoltorios son los envoltorios de seguridad. El programa envoltorio puede llamar un programa guardián y luego correr un programa dependiendo del resultado del programa guardián.
10. Taxonomía de los métodos IPC de Unix Un encadenamiento Bernstein es un caso especializado de envoltorio de seguridad inventado por Daniel J. Bernstein.
Conceptualmente un encadenamiento Bernstein es como una tubería, pero cada etapa sucesiva reemplaza la etapa previa en lugar de correr concurrentemente.
11. Taxonomía de los métodos IPC de Unix La aplicación usual es confinar aplicaciones con privilegios de seguridad a un programa guardían quién puede dar luego el control a otro programa menos privilegiado.
Ejemplo: rblsmtpd
Ejemplo: qmail
12. Taxonomía de los métodos IPC de Unix Procesos esclavos
Ocasionalmente, los procesos hijos aceptan y regresan datos de sus padres a través de tuberías conectadas a la entrada y la salida estándar.
Ejemplo: scp y ssh
13. Taxonomía de los métodos IPC de Unix Comunicación entre procesos de punto a punto
Archivos temporales
Señales
Sockets
Memoria (compartida)