Programación multiproceso

De MediaWiki
Ir a la navegación Ir a la búsqueda

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.


Creditos