Dwqdq

Disponível somente no TrabalhosFeitos
  • Páginas : 62 (15261 palavras )
  • Download(s) : 0
  • Publicado : 7 de novembro de 2012
Ler documento completo
Amostra do texto
Projeto de uma Linguagem de Programação

Este exemplar corrcsponcle à redação final da tese devidamente corrigida e defendida pelo Sr. Claudio Sergio Da !tós de Carvalho c aprovada pela COiuissi"io julgadora.

C;ttll[li11

accept
end;

in ITEM) do BUFFER (INX) := Ej
WRITE (E:

INX := INX

mod

SIZE

+ 1j

COUNT ::::: COUNT

+ 1;
out
ITEM)

or

when

COUNT

>

0=>
do

accept
end;

READ (v:

V:= BUFFER (üUTX)j OUTX := OUTX

mod
~

SIZE 1;

+ 1;

COUNT := COUNT

end select; end loop;
end
BUFFERlNG j

As variáveis INX e OUTX são os índices extremos da parte correntemente utilizada de BUFFER e COUNT indica quantos itens estão nele armazenados. READ pode somente ser aceito quando BUFFER não está vazio (coUNT > O) e WRITE somente podeser aceito quando BUFFER não está cheio (coUNT < SIZE). É interessante notar que as variáveis INX, OUTX, COUNT são atualizadas fora do rendezvous. Isso permite que a tarefa chamadora continue tão logo quanto possível. O comando

delay especificação_de_tempo

70

adia a execução da tarefa por, no mmtmo, o intervalo de tempo especificado (múltiplo de unidades básicas do relógio de tempo real-dependente de máquina), de tempo predefinido TIME. Um comando delay pode ser usado no lugar de um comando accept fazendo a parte de sincronização de uma alternativa de um comando select. Tal comando pode ser usado para prover um tempo máximo de espera para o comando select. Após o estouro desse intervalo de tempo, 55 se não tiver ocorrido um rendezvous, o comando seguinte ao delay é executado.Se, ao contrário, o rendezvous ocorre antes do intervalo expirar, o comando delay é interrompido e a execução do select continua normalmente.

5.5.4

MC

MC oferece facilidades de multi programação através da utilização de processos. Um processo é uma entidade que apresenta parâmetros, declarações locais e um corpo que pode ser executado em paralelo com outros processos. A declaração de umprocesso tem o seguinte formato:

process identijicador_com_atributos 1( 1 lista_de_parâmetros_formais bloco identificador

1) 1 ';'

O identificador que segue o símbolo process dá o nome ao processo podendo ser seguido de atributos (lista de expressões entre os símbolos 1 [ 1 e 1] ') como, por exemplo, o endereço onde o processo deve residir. A utilização de atributos é um recurso de baixonível que é permitida através da importação do identificador SpecialAttributes, do módulo LQW_LEVEL. Os atributos e sua forma de especificação são dependentes de implementação. A ativação de um processo é feita pelo comando start, com a indicação dos seus atributos na ativação e com uma lista de parâmetros efetivos:

start especificação_de_atributo identificador _qualificado (lista_de_parâmetros_efetivos)
Processos admitem apenas parâmetros por valor na parte fixa de parâmetros com as mesmas regras de passagem de parâmetros de subprogramas; 56 a parte de parâmetros variáveis só permite vetor de parâmetros de entrada. 57 O resultado dessa ativação é uma identificação de processo, de tipo predefinido PROCESSID. A
&&Em inglês, esse estouro de tempo é chamado tíme-oul. 6 & Cf. 5.3. ~ 7 Cf.5.4.

71

..

falha na ativação de um processo levanta a exceção PROCESS..ACTIVATION_ERROR. O bloco de um processo não pode conter a declaração ou o cabeçalho de outros processos; subprogramas obedecem à mesma restrição. A ativação de um processo implica na alocação de recursos necessários à sua execução (por exemplo, área de memória), conforme as possibilidades da implementação a serutilizada. O término de um processo (quando o final de seu bloco é atingido ou quando é executado algum comando return) libera esses recursos e torna inválida a identificação do processo que lhe foi associada quando de sua ativação. A referência a um processo que não está mais ativo levanta a exceção NO_PROCESS_lD. Se um processo é interrompido por alguma exceção que não pode ser tratada no seu bloco,...
tracking img