A Linguagem de Programação
Por: Ana Flávia Aragão • 1/3/2019 • Trabalho acadêmico • 1.178 Palavras (5 Páginas) • 158 Visualizações
1) Elabore uma solução para o problema da seção crítica usando semáforos. A forma geral de uma solução para o problema mencionado segue abaixo:
process CS[i = 1 to n] {
while (true) {
protocolo de entrada;
seção crítica;
protocolo de saída;
seção não-crítica;
}
}
Explicação sobre wait e signal:
[pic 1]
[pic 2]
[pic 3]
[pic 4]
[pic 5]
[pic 6]
Considerando que s é um semáforo, as operações P(s) e V(s) são definidas como segue:
[pic 7]
Resposta final:
[pic 8]
2) Como semáforos podem ser implementados sem utilizar espera ocupada? Qual a desvantagem da espera ocupada? qual a vantagem?
resposta:
A implementação dos métodos wait e signal não utilizarão while (espera ocupada), sem while utilizarão recursos do sistema operacional que possam fazer com que a thread seja bloqueada até que ela seja sinalizada para que possa voltar a ser executada. Essa funções, chamadas de sistema, farão com que a thread seja bloqueada como se estivesse fazendo um função de entrada e saída. exemplo: os próprios wait e signal oferecidos pelo sistema operacional, utilizando a função sleep(espera quase ocupada).
desvantagem: desperdício de processamento, uma variável fica sendo testada seguidas vezes dentro do tempo que o escalonador dá para a thread e , muitas vezes ela é testada mais vezes do que deveria ser.
vantagem:em situações que você tem que reagir com mínimo de delay possível (menor tempo de acesso a sessão crítica possível), com o mínimo de latência entre o sistema e a reação dele. exemplos: sistemas de segurança, alarmes, etc.
3) Quais as principais diferenças entre os mecanismos de comunicação baseados em troca de mensagem e memória compartilhada?
quando usa-se memória compartilhada você está dentro do contexto do mesmo processo, então você terá menos complexidade para fazer operações de escrita e leitura, porém essa facilidade irá introduzir efeitos colaterais. Ou seja, ela será mais fácil de ser acessada, porém por conta dessa concorrência entre as threads, teremos que criar restrições para acesso da memória compartilhada.
Já a troca de mensagem, requer uma lógica de programação que acomode as etapas necessárias para o que o envio de uma mensagem seja bem sucedido assim como para que a recepção de uma mensagem seja bem sucedida.Ou seja, temos mecanismos mais complexos de escrita e leitura, requer mais sincronismo para que as mensagens sejam enviadas e recebidas, mas não se preocupar em organizar o acesso para escrita e leitura.
4) Qual a diferença entre sockets datagrama (datagram sockets, que usam o protocolo UDP) e os de fluxo (stream sockets, que usam o protocolo TCP)?
explicação:
[pic 9]
[pic 10]
Comunicação em rede em geral:
Arquitetura em Camadas
Programas C++/Java em rede operam no nível da camada de Aplicação:
Camadas inferiores exigem programação de mais baixo nível:
Entendimento sobre os protocolos de transporte TCP e UDP se faz necessário
[pic 11]
[pic 12]
[pic 13]
[pic 14]
Computadores possuem uma única conexão física para rede
Computadores podem executar muitas aplicações ao mesmo tempo, locais ou em rede
Dados que chegam pela rede precisam ser endereçados localmente para a aplicação correta:
Uso de portas de comunicação:
Identificar processos comunicantes
Dados são transmitidos juntamente com informação para identificar o computador e a porta a qual se destinam:
Pacote:
[pic 15]
O endereço IP é utilizado pelo protocolo IP (rede) para identificar o computador de destino
A porta é utilizada pelo TCP ou UDP para identificar a aplicação de destino:
Valor inteiro no intervalo de 0 à 65,535
Valores n0 intervalo de 0 à 1023 são reservadas para serviços comuns, como HTTP e FTP
[pic 16]
[pic 17]
Conceito:
Mecanismo de troca de dados entre dois ou mais processos distintos que podem estar em execução na mesma máquina ou máquinas diferentes em rede
Representação interna do sistema operacional para um ponto de comunicação:
Programação dependente de plataforma
A interface padronizada de sockets surgiu originalmente no sistema operacional Unix BSD (Berkeley Software Distribution):
...