Programación multiproceso
Obxectivos
- Coñecer os conceptos de programa, proceso e fio, e a relación entre eles.
- Comprender cómo a técnica do cambio de contextofai posible a multitarea ou execución simultánea de varios procesos nun mesmo procesador, e un mellor aproveitamento deste.
- Entender os estados de execución dun proceso e a súa planificación a curto, medio e largo prazo.
- Identificar os distintos tipos de sistemas multiprocesadores, e a forma na que os diferentes procesadores poden intercambiar información entre sí.
- Analizar a programación concurrente, a multiprogramación e a programación paralela.
- Resolver problemas concretos utilizando as clases de Java que permiten crear dinámicamente, e executar, de manera concurrente, novos procesos.
- Utilizar de xeito efectivo os mecanismos que proporciona Java para xestionar e redireccionar a entrada e a saída estándares e de error de novos procesos creados.
Programas, procesos e fíos
Un programa conten un conxunto de instruccións que se poden executar directamente nunha máquina. Esta pode ser una máquina física ou, no caso de linguaxes coma Java e .NET, nunha máquina virtual. Un programa é un obxecto estático, normalmente almacenado nun ficheiro binario nun medio de almacenamento secundario, coma pode ser un disco duro.
Un proceso corresponde a unha instancia dun programa en execución. Un proceso é unha entidad dinámica. A execución dun programa comeza coa creación e execución dun proceso; e un proceso pode crear novos procesos se o require.
Para executar un programa, primeiro debe cargarse na memoria. Durante a súa execución, un programa utiliza diversos recursos do sistema:
- Memoria principal. Consta dunha secuencia de celdas de memoria, todas coa mesma lonxitude en bits, e cada unha identificada pola súa posición. Antes de comenzar a súa execución, un programa debe cargarse nun bloque da memoria principal, que se asigna ó proceso que se crea para executar o programa. Este proceso pode tamén obter máis memoria dinámicamente durante a súa execución.
- Procesador ou CPU (Central Processing Unit). Executa o proceso que se crea unha vez cargado o programa na memoria. O procesador garda, nun rexistro especial, o contador de programa (PC ou program counter), o enderezo na memoria da instrucción que se está executando. Un proceso non pode operar directamente cos contidos da memoria. Estos deben antes traerse dela e cargarse en rexistros do procesador. As operacións realizanse nunha unidade aritmético-lóxica o UAL (aritmethic and logical unit ou ALU). O seu resultado obtense nun rexistro desde o que se pode transferir a unha posición da memoria.
- Dispositivos de entrada/saída (E/S). Os procesos comparten os dispositivos de E/S. Debe gardarse información acerca de a qué procesos se lles otorgou acceso a un dispositivo de E/S, e do estado das operacións realizadas sobre él.
Toda la información asociada a un proceso gardase nun bloque de control de proceso (PCB ou process control block). Se o mesmo programa se executa varias veces crearase cada vez un novo proceso, e cada un terá o seu propio PCB.
Porén, un proceso pode crear novos procesos durante a súa execución, que poden a súa vez, crear novos procesos. Desta forma, a partir dun proceso inicial pódese crear unha xerarquía de procesos.
Multitarefa
Os sistemas operativos que se utilizan na maioría dos casos na actualidade permiten executar múltiples procesos simultáneamente. É posible escoitar música e navegar por internet mentres se están transferindo ficheiros dun cartafol a outro, aínda que só exista un procesador no sistema. Como é posible? A execución dun prodceso detense a intervalor regulares de tempo; nese intre toma o control un programa especial do sistema operativo, que pode parar a execución do proceso actual e pasar a executar outro proceso de ser preciso.
A multitarefa (multitasking consiste na execución simultánea de máis dun proceso nun procesador o longo dun intervalo de tempo
A rápida alternancia entre procesos permite xerar ó usuario a ilusión de que se están executando simultaneamene aínda que en cada momento haí realmente un único proceso en execución.
Cómo é que se fai para alternar a execución entre procesos? Faise mediante o que se denomina cambio de contexto: antes de empezar a executar un novo proceso, gárdase o estado de execución do proceso actual para poder retomar máis adiante a súa execución no mesmo punto onde foi interrumpido. O que se garda son os contidos do contador de programa (PC) e os rexistros do procesador, para a continuación ser cambiados eses datos polos do novo proceso.
Glosario
- Servizo en red. Servizo que se presta a procesos remotos cos que a comunicación se realiza mediante protocolos estándares de rede.
- Servizo. Proceso co que non interactúan directamente os usuarios; son outros procesos os que lle requieren que lles proporcione un determinado servizo.
- Sistema distribuido. Sistema multiprocesador no que os procesadores están en ordenadores autónomos que se comunican entre sí a través dunha rede de comunicacións.
- Sistema monoprocesador. Sistema que dispón dun único procesador.
- Sistema multiprocesador. Sistema que dispón de máis dun procesador.