Question | Answer |
Tipagem da Linguagem. | Estaticamente tipada. |
Quando ocorre a verificação de tipo? | Em tempo de compilação. |
A que são muito semelhantes os processos? | As funções. |
Quantas e quais são as partes de processo? | Dois, a especificação e o corpo. |
Detalhes do corpo (código) do processo são visíveis para outros processos? | Não. |
Cite uma boa técnica em relação à especificação e ao corpo do processo. | Colocar a especificação em um arquivo, e o corpo em outro. |
Cite dois exemplo onde eventos ocorrem simultaneamente, onde a linguagem é bem usada. | Banco de dados e Sistemas de exploração. |
Por que programação concorrente pode reduzir o tempo de execução de um programa? | Porque entrada e saída de operações e a operação CPU podem ocorrer em paralelo. |
O que seria um "conceito de encontro"? | Os processos combinam sincronização com transferência de informação, basicamente. |
Como são os três passos desse conceito? | Através da sincronização, da troca de informações e pela sua continuação de atividades individuais. |
Especificação do processo (Código) | spec process-type-name(process-param-declarations); |
Declaração Transação (Código) | trans return-type t-name (formal-param-declarations) |
Na declaração transação o programador pode alternar e não usar um parâmetro formal? | Sim, pode fornecer apenas o tipo do parâmetro formal. |
O que faz o operador "create"? | Além de criar, também ativa o processo. |
Operador "Create" (Código) | create process-type-name(initial-values) [with priority(p)] |
Se dois processos que estão prontos para a execução da mesma prioridade, qual será executado primeiro? | Qualquer um dos dois. |
As prioridades devem ser utilizadas para a sincronização? | Não, devem ser usadas para melhorar o desempenho. |
Quais são os três estados de um processo? | Ativo, Concluído e Rescindido. |
Quando um processo está ativo? | Em sua criação e enquanto executar as especificações no corpo tipo de processo. |
Quando um processo está Concluído? | Quando ele executa uma instrução de retorno ou quando se atinge o final do seu corpo. |
Quando um processo está Rescindido? | Quando se completa e todos os processos criados por ele terem terminado. |
Como é chamada a sincronização ou reunião para troca de informações? | Ponto de encontro. |
Para que a Concurrent C utiliza o encontro ou transação estendida? | Para permitir a transferência de informações durante o encontro. |
Cite 3 instalações em que o Concurrent C dispõe. | Criação de processos, especificação de transações síncronas e as operações assíncronas. |
O que faz a função "c_rsainit"? | Aloca e inicializa a pilha quando um processo é criado. |
O que é a seção crítica? | É um pedaço de código que não deve ser interrompido por um processo de "switch". |
Como é a leitura de sistemas síncronos? | Deve se espera até que a leitura seja concluída, para aí sim executá-la. |
Quando é iniciado e qual a prioridade de um processo nulo? | É iniciado em tempo de execução e possui uma prioridade menor que qualquer processo do usuário. |
Quais são os três tipos de chamadas de transação? | síncronas (incondicional), cronometrado síncronas e assíncronas. |
Quais as três categorias em que os modelos de programação concorrentes se dividem? | Aqueles com base na memória partilhada, aqueles baseados em passagem de mensagens e uma combinação dos dois modelos anteriores. |
Como é a troca de informações em um encontro simples? | É unidirecional, do remetente da mensagem para o receptor. |
O que é uma chamada transação? Mostre um código básico dessa chamada. | É o lado do chamador de uma transação.
"valor do processo.operação-name (parâmetros-real)" |
O que é um ponteiro de transação e a que se asemelha? | Refere-se a uma transação específica associada a um processo específico. Se assemelha a ponteiros de funções. |
O que faz a função "c_transcount"? Mostre em código. | Retorna o número de pedidos pendentes para uma transação específica.
"c_transcount (pid, t)" |
Por que ponteiros de transação e ponteiros de função não são intercambiáveis? | Porque mudaria a semântica, complicaria a implementação e teria impacto negativo sobre a portabilidade. |
Paradigma utilizado. | Programação Imperativa. |
Característica chave para melhorar seu desempenho. | Escalonamento de processos. |
Tipo de programação imperativa. | Programação Imperativa Estruturada. |
O que a programação imperativa possibilita a linguagem? | Organizar o fluxo de controle de execução do programa, e incentiva a divisão do problema em problemas menores. |
Qual a vantagem da divisão de programas? | Melhor execução. |
Possui gerência de memória compartilhada? | Nao, isso possibilita obter informações de processos. |
Como foi feita a implementação da linguagem? | A partir da implementação de um uniprocessador UNIX. |
Funcionamento dos programas. | Cada programa em "C" , consiste em um ou mais processos simultâneos. |
Como funciona a biblioteca? | Sua biblioteca de execução possui um processo que muda simultaneamente para salvar e restaurar registros. |
Por que se utiliza o processo de escalonamento de processos? | Custo de cumputação entre processos e menos. E por estar dentro de um único processo UNIX, os processos Concurrent C tem o mesmo espaço de endereco. |
Principais estruturas de dados. | Descrição de chamadas e transação síncrona. |
O que acontece na descrição de chamada? | Do tipo c_tcall esta estrutura contém toda a informação sobre uma chamada pendente. |
O que acontece na Transação Síncrona? | Qualquer operação é convertida em uma chamada para a função de interface. |
Para que se usar Concurrent C? | Para programas que são muito usados em tempo real e que pode ser necessário operações dinâmicas, mesmo na linguagem C. |
Programação concorrente está se tornando cada vez mais importante para que? | Para arquiteturas de múltiplos computadores, que vem sendo cada vez mais atraente seu uso em grandes computadores. |