O documento discute escalonamento de tempo real e threads. Aborda algoritmos de escalonamento estático e dinâmico para tempo real, como Rate Monotonic Scheduling e Earliest Deadline First. Também explica a diferença entre processos e threads, vantagens de threads, e como manipular threads em linguagens como C, Java e no sistema operacional.
O documento discute aspectos fundamentais de segurança no sistema operacional, abordando proteção de informações contra uso não autorizado, tipos de ameaças como exposição e manipulação de dados, e tipos de invasores como invasores passivos e ativos. Ele também apresenta facetas da segurança como criptografia, assinaturas digitais e ataques como de dentro do sistema e exploração de erros de código.
1) O documento discute chamadas ao sistema e processos. 2) As chamadas ao sistema permitem que aplicativos realizem instruções privilegiadas e alteram o modo de operação do sistema entre o modo usuário e o modo kernel. 3) Exemplos de chamadas ao sistema incluem ler arquivos e escrever na saída padrão.
O documento discute três tópicos principais sobre comunicação entre processos: 1) Monitores, que fornecem exclusão mútua através de rotinas agrupadas em módulos; 2) Variáveis de condição, que permitem que processos bloqueiem e acordem com base em condições; 3) Troca de mensagens, onde processos se comunicam através de primitivas de envio e recebimento de mensagens.
O documento descreve os tipos e estruturas de sistemas operacionais. Ele discute sistemas operacionais monotarefa e multitarefa, além de classificações como batch, tempo compartilhado e tempo real. Também aborda as estruturas internas de um sistema operacional, incluindo estruturas monolíticas e em camadas.
O documento discute processos e escalonamento. Ele define processos como o conceito central do sistema operacional, caracterizados por um programa em execução que armazena todas as informações necessárias para executar o programa. Processos podem interagir com o usuário ou ter funções específicas em segundo plano.
O documento fornece uma introdução sobre conceitos básicos de sistemas operacionais. Ele discute o que constitui um sistema computacional, a importância de um sistema operacional, as funções de um SO, como usuários e programas interagem com o SO, gerenciamento de memória e processamento, boot do sistema e dispositivos de entrada e saída.
[1] O documento discute escalonamento de processos em sistemas operacionais, com foco em mudança de contexto e algoritmos de escalonamento.
[2] A mudança de contexto é cara, envolvendo salvar e carregar informações dos processos, e ocorre a cada interrupção do relógio. O escalonador decide qual processo executar a seguir.
[3] Algoritmos de escalonamento podem ser preemptivos ou não-preemptivos. Sistemas em batch priorizam throughput, enquanto sistemas interativos priorizam
O documento discute escalonamento de tempo real e threads. Aborda algoritmos de escalonamento estático e dinâmico para tempo real, como Rate Monotonic Scheduling e Earliest Deadline First. Também explica a diferença entre processos e threads, vantagens de threads, e como manipular threads em linguagens como C, Java e no sistema operacional.
O documento discute aspectos fundamentais de segurança no sistema operacional, abordando proteção de informações contra uso não autorizado, tipos de ameaças como exposição e manipulação de dados, e tipos de invasores como invasores passivos e ativos. Ele também apresenta facetas da segurança como criptografia, assinaturas digitais e ataques como de dentro do sistema e exploração de erros de código.
1) O documento discute chamadas ao sistema e processos. 2) As chamadas ao sistema permitem que aplicativos realizem instruções privilegiadas e alteram o modo de operação do sistema entre o modo usuário e o modo kernel. 3) Exemplos de chamadas ao sistema incluem ler arquivos e escrever na saída padrão.
O documento discute três tópicos principais sobre comunicação entre processos: 1) Monitores, que fornecem exclusão mútua através de rotinas agrupadas em módulos; 2) Variáveis de condição, que permitem que processos bloqueiem e acordem com base em condições; 3) Troca de mensagens, onde processos se comunicam através de primitivas de envio e recebimento de mensagens.
O documento descreve os tipos e estruturas de sistemas operacionais. Ele discute sistemas operacionais monotarefa e multitarefa, além de classificações como batch, tempo compartilhado e tempo real. Também aborda as estruturas internas de um sistema operacional, incluindo estruturas monolíticas e em camadas.
O documento discute processos e escalonamento. Ele define processos como o conceito central do sistema operacional, caracterizados por um programa em execução que armazena todas as informações necessárias para executar o programa. Processos podem interagir com o usuário ou ter funções específicas em segundo plano.
O documento fornece uma introdução sobre conceitos básicos de sistemas operacionais. Ele discute o que constitui um sistema computacional, a importância de um sistema operacional, as funções de um SO, como usuários e programas interagem com o SO, gerenciamento de memória e processamento, boot do sistema e dispositivos de entrada e saída.
[1] O documento discute escalonamento de processos em sistemas operacionais, com foco em mudança de contexto e algoritmos de escalonamento.
[2] A mudança de contexto é cara, envolvendo salvar e carregar informações dos processos, e ocorre a cada interrupção do relógio. O escalonador decide qual processo executar a seguir.
[3] Algoritmos de escalonamento podem ser preemptivos ou não-preemptivos. Sistemas em batch priorizam throughput, enquanto sistemas interativos priorizam
O documento discute comunicação entre processos e soluções para o problema da exclusão mútua. Apresenta instruções de teste-e-definição de bloqueio e suas desvantagens. Também aborda primitivas de espera/despertar para resolver problemas de espera ociosa e introduz o problema produtor/consumidor como exemplo de sua aplicação.
O documento discute algoritmos de escalonamento de processos em sistemas operacionais, incluindo Round Robin, prioridade e múltiplas filas. Round Robin atribui um quantum de tempo para cada processo antes de alternar para o próximo. Prioridade executa processos com prioridade mais alta primeiro. Múltiplas filas agrupam processos por tipo para execução.
1) O documento discute threads no espaço do núcleo, comunicação interprocessos e regiões críticas.
2) Há diferentes modelos de implementação de threads, incluindo no espaço do núcleo e híbridas, e os algoritmos de escalonamento mais usados são Round Robin e por prioridade.
3) A comunicação interprocessos requer mecanismos para evitar condições de corrida, e regiões críticas garantem a exclusão mútua para acesso compartilhado a recursos.
O documento discute dispositivos de entrada e saída em sistemas computacionais. Ele aborda três tópicos principais:
1) E/S via interrupção, onde dispositivos geram interrupções para solicitar atenção da CPU quando operações são concluídas.
2) E/S via acesso direto à memória (DMA), onde dispositivos podem acessar diretamente a memória principal sem envolver a CPU, aumentando a velocidade de transferência de dados.
3) Camadas de software de E/S, onde drivers controlam dispositivos
Este documento discute três tópicos principais:
1) Sistemas de arquivos, incluindo estruturas de arquivos, tipos de arquivos e operações com arquivos.
2) Relógios de software e alarmes, incluindo como simular múltiplos relógios virtuais com um relógio físico.
3) Organização de diretórios, cobrindo organizações de nível único e de dois níveis.
O documento discute estratégias para lidar com sobrecarga de memória, incluindo swapping e memória virtual. Swapping envolve trocar processos inteiros entre memória principal e disco, enquanto memória virtual permite que programas sejam executados parcialmente carregados na memória. O documento também descreve técnicas como mapas de bits e listas ligadas para gerenciar a alocação dinâmica de memória.
O documento discute os i-nodes, estruturas de dados que armazenam atributos e endereços dos blocos de um arquivo em sistemas de arquivos. I-nodes associam-se a cada arquivo e permitem localizar todos os seus blocos, armazenando informações como tamanho, proprietário e localização no disco. O documento também explica como diretórios e arquivos compartilhados são implementados usando i-nodes.
O documento descreve hardware de disco e relógios. Ele explica que um disco rígido consiste em pratos giratórios com cabeças de leitura/gravação e que cada superfície é dividida em trilhas e setores. Também discute os processos de formatação de baixo e alto nível para preparar o disco para uso.
Este documento discute os conceitos e algoritmos de escalonamento de CPU em sistemas operacionais. Aborda os conceitos básicos de multiprogramação e ciclos de CPU-E/S. Descreve vários algoritmos de escalonamento como FCFS, SJF, prioridade e Round Robin. Discute critérios de avaliação como utilização da CPU, vazão e tempos de resposta e espera. Explica estratégias como filas de vários níveis e escalonamento com múltiplos processadores.
O documento discute conceitos fundamentais sobre processos em sistemas operacionais, incluindo:
1) A definição de processo e como eles são abstrações de programas em execução;
2) Como processos são criados, executados e terminados em sistemas operacionais;
3) Como processos se comunicam entre si e os desafios relacionados à condição de disputa.
O documento discute processos e threads no sistema operacional. Aborda conceitos como processos, threads, comunicação entre processos, estados de processos e implementação de processos e threads no kernel.
Um processo é um container que fornece recursos e isolamento para um programa em execução. Um processo pode estar em vários estados como new, ready, running, waiting ou terminated. Um sistema operacional usa threads para permitir a execução paralela de tarefas dentro de um mesmo processo.
Introduzir o problema da seção críticas, cujas soluções podem ser utilizadas para garantir consistência no acesso a dados compartilhados
Apresentar soluções em software e hardware para o problema da seção crítica
Introduzir o conceito de transação atômica e descrever os mecanismos utilizados para garantir atomicidade
Arquitetura de Computadores: Processos e ThreadsEvandro Júnior
O documento discute processos em sistemas operacionais. Aborda conceitos como criação, término e hierarquia de processos, além de estados de processos e escalonamento de processos. Explica diferentes algoritmos de escalonamento como FIFO, Round Robin e múltiplas filas. Também discute threads como forma de dividir um processo em tarefas concorrentes.
Definir formalmente o conceito de processo
Descrever as várias funcionalidades relacionadas à manipulação de processos pelo sistema operacional, incluindo escalonamento, criação, terminação e comunicação
Apresentar as principais formas de comunicação utilizadas por sistemas cliente-servidor
1) O documento discute processos e threads em sistemas operacionais modernos, abordando tópicos como criação e término de processos, estados de processos, comunicação entre processos e uso de threads.
2) É explicado que um processo é uma entidade dinâmica que consiste em um programa em execução e seus recursos, e que threads permitem múltiplas execuções dentro do mesmo processo.
3) Problemas de condição de corrida ocorrem quando processos acessam recursos compartilhados simultaneamente e são evitados por
Sistema Operacional de Tempo Real (vx works)Jose Silva
Este documento apresenta uma pesquisa sobre o sistema operacional de tempo real VxWorks. O documento descreve o que é o VxWorks, suas principais características como suporte a multitarefa, gerenciamento de memória e comunicação entre tarefas. Além disso, apresenta exemplos de sistemas que utilizam o VxWorks, incluindo o robô Curiosity da NASA que explora Marte.
Os objetivos desta apresentação são:
* Fazer um tour pelos principais conceitos relacionados a sistemas operacionais
* Fazer uma revisão rápida sobre conceitos de organização de computadores
O documento discute os conceitos fundamentais de redes, incluindo endereçamento lógico e físico, routers, protocolos TCP/IP e aplicações. Explica como o ARP mapeia endereços lógicos e físicos e como routers encaminham pacotes entre redes. Também descreve os principais protocolos da pilha TCP/IP como IP, TCP e UDP.
O documento descreve os principais protocolos de rede e comunicação na Internet, incluindo TCP/IP, HTTP, HTTPS, FTP e protocolos de email. TCP/IP é o principal protocolo da Internet que permite a comunicação entre computadores através da divisão dos dados em pacotes. HTTPS é uma versão segura do HTTP que utiliza criptografia SSL/TLS.
O documento discute comunicação entre processos e soluções para o problema da exclusão mútua. Apresenta instruções de teste-e-definição de bloqueio e suas desvantagens. Também aborda primitivas de espera/despertar para resolver problemas de espera ociosa e introduz o problema produtor/consumidor como exemplo de sua aplicação.
O documento discute algoritmos de escalonamento de processos em sistemas operacionais, incluindo Round Robin, prioridade e múltiplas filas. Round Robin atribui um quantum de tempo para cada processo antes de alternar para o próximo. Prioridade executa processos com prioridade mais alta primeiro. Múltiplas filas agrupam processos por tipo para execução.
1) O documento discute threads no espaço do núcleo, comunicação interprocessos e regiões críticas.
2) Há diferentes modelos de implementação de threads, incluindo no espaço do núcleo e híbridas, e os algoritmos de escalonamento mais usados são Round Robin e por prioridade.
3) A comunicação interprocessos requer mecanismos para evitar condições de corrida, e regiões críticas garantem a exclusão mútua para acesso compartilhado a recursos.
O documento discute dispositivos de entrada e saída em sistemas computacionais. Ele aborda três tópicos principais:
1) E/S via interrupção, onde dispositivos geram interrupções para solicitar atenção da CPU quando operações são concluídas.
2) E/S via acesso direto à memória (DMA), onde dispositivos podem acessar diretamente a memória principal sem envolver a CPU, aumentando a velocidade de transferência de dados.
3) Camadas de software de E/S, onde drivers controlam dispositivos
Este documento discute três tópicos principais:
1) Sistemas de arquivos, incluindo estruturas de arquivos, tipos de arquivos e operações com arquivos.
2) Relógios de software e alarmes, incluindo como simular múltiplos relógios virtuais com um relógio físico.
3) Organização de diretórios, cobrindo organizações de nível único e de dois níveis.
O documento discute estratégias para lidar com sobrecarga de memória, incluindo swapping e memória virtual. Swapping envolve trocar processos inteiros entre memória principal e disco, enquanto memória virtual permite que programas sejam executados parcialmente carregados na memória. O documento também descreve técnicas como mapas de bits e listas ligadas para gerenciar a alocação dinâmica de memória.
O documento discute os i-nodes, estruturas de dados que armazenam atributos e endereços dos blocos de um arquivo em sistemas de arquivos. I-nodes associam-se a cada arquivo e permitem localizar todos os seus blocos, armazenando informações como tamanho, proprietário e localização no disco. O documento também explica como diretórios e arquivos compartilhados são implementados usando i-nodes.
O documento descreve hardware de disco e relógios. Ele explica que um disco rígido consiste em pratos giratórios com cabeças de leitura/gravação e que cada superfície é dividida em trilhas e setores. Também discute os processos de formatação de baixo e alto nível para preparar o disco para uso.
Este documento discute os conceitos e algoritmos de escalonamento de CPU em sistemas operacionais. Aborda os conceitos básicos de multiprogramação e ciclos de CPU-E/S. Descreve vários algoritmos de escalonamento como FCFS, SJF, prioridade e Round Robin. Discute critérios de avaliação como utilização da CPU, vazão e tempos de resposta e espera. Explica estratégias como filas de vários níveis e escalonamento com múltiplos processadores.
O documento discute conceitos fundamentais sobre processos em sistemas operacionais, incluindo:
1) A definição de processo e como eles são abstrações de programas em execução;
2) Como processos são criados, executados e terminados em sistemas operacionais;
3) Como processos se comunicam entre si e os desafios relacionados à condição de disputa.
O documento discute processos e threads no sistema operacional. Aborda conceitos como processos, threads, comunicação entre processos, estados de processos e implementação de processos e threads no kernel.
Um processo é um container que fornece recursos e isolamento para um programa em execução. Um processo pode estar em vários estados como new, ready, running, waiting ou terminated. Um sistema operacional usa threads para permitir a execução paralela de tarefas dentro de um mesmo processo.
Introduzir o problema da seção críticas, cujas soluções podem ser utilizadas para garantir consistência no acesso a dados compartilhados
Apresentar soluções em software e hardware para o problema da seção crítica
Introduzir o conceito de transação atômica e descrever os mecanismos utilizados para garantir atomicidade
Arquitetura de Computadores: Processos e ThreadsEvandro Júnior
O documento discute processos em sistemas operacionais. Aborda conceitos como criação, término e hierarquia de processos, além de estados de processos e escalonamento de processos. Explica diferentes algoritmos de escalonamento como FIFO, Round Robin e múltiplas filas. Também discute threads como forma de dividir um processo em tarefas concorrentes.
Definir formalmente o conceito de processo
Descrever as várias funcionalidades relacionadas à manipulação de processos pelo sistema operacional, incluindo escalonamento, criação, terminação e comunicação
Apresentar as principais formas de comunicação utilizadas por sistemas cliente-servidor
1) O documento discute processos e threads em sistemas operacionais modernos, abordando tópicos como criação e término de processos, estados de processos, comunicação entre processos e uso de threads.
2) É explicado que um processo é uma entidade dinâmica que consiste em um programa em execução e seus recursos, e que threads permitem múltiplas execuções dentro do mesmo processo.
3) Problemas de condição de corrida ocorrem quando processos acessam recursos compartilhados simultaneamente e são evitados por
Sistema Operacional de Tempo Real (vx works)Jose Silva
Este documento apresenta uma pesquisa sobre o sistema operacional de tempo real VxWorks. O documento descreve o que é o VxWorks, suas principais características como suporte a multitarefa, gerenciamento de memória e comunicação entre tarefas. Além disso, apresenta exemplos de sistemas que utilizam o VxWorks, incluindo o robô Curiosity da NASA que explora Marte.
Os objetivos desta apresentação são:
* Fazer um tour pelos principais conceitos relacionados a sistemas operacionais
* Fazer uma revisão rápida sobre conceitos de organização de computadores
O documento discute os conceitos fundamentais de redes, incluindo endereçamento lógico e físico, routers, protocolos TCP/IP e aplicações. Explica como o ARP mapeia endereços lógicos e físicos e como routers encaminham pacotes entre redes. Também descreve os principais protocolos da pilha TCP/IP como IP, TCP e UDP.
O documento descreve os principais protocolos de rede e comunicação na Internet, incluindo TCP/IP, HTTP, HTTPS, FTP e protocolos de email. TCP/IP é o principal protocolo da Internet que permite a comunicação entre computadores através da divisão dos dados em pacotes. HTTPS é uma versão segura do HTTP que utiliza criptografia SSL/TLS.
O documento descreve os principais protocolos de rede e comunicação na Internet, incluindo TCP/IP, HTTP, HTTPS, FTP e protocolos de email. TCP/IP é o principal protocolo da Internet que permite a comunicação entre computadores através da divisão dos dados em pacotes. HTTPS é uma versão segura do HTTP que utiliza criptografia SSL/TLS.
O documento descreve quatro protocolos de rede importantes: DHCP fornece endereços IP dinâmicos para dispositivos de rede; DNS mapeia nomes de domínio para endereços IP; SMTP é usado para envio de email; e NTP sincroniza os relógios dos dispositivos de rede.
O documento discute sockets, que são primitivas de transporte que permitem a comunicação bidirecional entre processos localmente ou remotamente através de redes. Sockets usam endereços e domínios para identificar processos. Exemplos de domínios são AF_UNIX para máquinas locais e AF_INET para máquinas remotas usando IP e portas. Stream sockets usam TCP e garantem entrega enquanto datagram sockets usam UDP sem garantia de entrega.
O documento fornece uma introdução aos protocolos TCP e UDP, descrevendo suas principais características e diferenças. TCP é orientado a conexão e fornece entrega confiável de dados através de confirmações, enquanto UDP é sem conexão e não garante entrega. Ambos usam números de porta para direcionar pacotes a aplicativos.
O documento resume os principais conceitos de processos e comunicação entre processos (IPC) em sistemas distribuídos. Aborda o que é um processo, como é representado pelo sistema operacional através do Process Control Block (PCB), e os diferentes estados de um processo. Também explica os modelos de IPC de memória compartilhada e troca de mensagens, assim como exemplos de mecanismos como sinais, pipes e sockets.
O documento descreve conceitos básicos sobre a Internet e ferramentas associadas, incluindo protocolos como HTTP, FTP e e-mail. Detalha como a Internet funciona através de redes de computadores conectadas, e serviços como pesquisa, navegação e comunicação. Também discute segurança na Internet e conceitos como endereços IP e criptografia.
O documento apresenta um site que fornece resumos e comentários sobre questões de informática de provas de concursos públicos. O objetivo é ajudar candidatos a superarem as barreiras dessa disciplina e melhorarem seu desempenho nas provas. Explica tópicos como Internet, protocolos, HTML, URL e navegadores.
O documento descreve os principais protocolos de rede, incluindo os modelos OSI e TCP/IP, protocolos como DHCP, DNS, NAT, HTTP, SMTP, SNMP e conceitos de IPV4 e IPV6. Ele também discute os protocolos nas camadas de aplicação, transporte e rede do modelo OSI.
O documento descreve os principais protocolos de rede, incluindo os modelos OSI e TCP/IP, protocolos como DHCP, DNS, NAT, HTTP, SMTP, SNMP e conceitos de IPV4 e IPV6. Ele também discute os protocolos nas camadas de aplicação, transporte e rede do modelo OSI.
O documento resume os principais conceitos sobre internet, intranet, extranet, protocolos e ferramentas de busca e pesquisa na web. Em três frases:
A internet é uma rede global de computadores que permite o acesso mundial a serviços online. Intranet e extranet são redes privadas semelhantes à internet, mas de uso exclusivo de uma empresa ou para clientes e parceiros respectivamente. Os protocolos TCP/IP e HTTP formam a base técnica da internet, enquanto ferramentas como o Google facilitam a busca por informações na web.
O documento discute os protocolos HTTP, HTTPS e TLS que regem a comunicação na World Wide Web. Apresenta a história do HTTP e como ele foi desenvolvido para atender às necessidades da comunidade científica. Explica também conceitos como portas, pacotes SYN, ACK, criptografia e certificados digitais, além de mencionar servidores web comuns como IIS e Apache.
[Antero Jesus] Principais Protocolos de Redeajtr98
O documento discute os principais protocolos de rede, definindo o que são protocolos e portas. Detalha alguns protocolos específicos como TCP/IP, DNS, DHCP, HTTP, HTTPS, SSL, FTP, SFTP, Telnet, POP, SMTP e IMAP, explicando suas funções na comunicação entre redes.
O documento discute os principais protocolos de rede, definindo o que são protocolos e portas. Detalha alguns protocolos específicos como TCP/IP, DNS, DHCP, HTTP, HTTPS, SSL, FTP, SFTP, Telnet, POP, SMTP e IMAP, explicando suas funções na comunicação entre redes.
O documento fornece uma introdução sobre redes de computadores e a Internet. Explica o que são redes, tipos de redes, protocolos de comunicação e a pilha TCP/IP. Também descreve conceitos como endereço IP, protocolos como HTTP, DNS e aplicações comuns da Internet.
O documento descreve o Modelo OSI e os protocolos de comunicação TCP/IP. O Modelo OSI propõe sete camadas funcionais para comunicação entre sistemas, enquanto o TCP/IP utiliza quatro camadas. Os protocolos mais importantes do TCP/IP são o TCP na camada de transporte e o IP na camada de rede.
O documento discute vários protocolos e conceitos importantes relacionados à comunicação de dados na Internet, incluindo protocolos como TCP/IP, HTTP, FTP, SMTP e DNS. Ele também aborda tópicos como segurança na web, criptografia e endereços IP.
O documento discute os protocolos de transporte TCP e UDP, descrevendo suas funções, diferenças e usos. TCP fornece entrega confiável de dados através de controle de fluxo, erros e sequenciamento, enquanto UDP é mais simples e não confiável. O documento também explica conceitos como sockets, multiplexação e três fases do TCP.
Semelhante a (ACH2044) Sistemas Operacionais - Aula 11 (20)
O documento discute estimativas de erro em modelos de aprendizagem de máquina. Explica que o erro esperado no conjunto de teste tende a ser maior que no conjunto de treino, devido ao ajuste do modelo aos dados de treino. Também aborda medidas como viés e variância para avaliar estimadores, e como o erro quadrático médio equilibra ambos para medir o desvio total esperado entre a estimativa e o valor real.
O documento discute a avaliação de desempenho de classificadores treinados. Explica que é necessário testar o modelo em um conjunto de dados independente para medir seu desempenho em dados novos. Também apresenta métricas como taxa de erro e curva de aprendizagem para avaliar quantitativamente o modelo.
O documento descreve o algoritmo de máquina de vetor de suporte (SVM), explicando como ele busca encontrar o hiperplano separador de margem máxima entre os dados de treinamento de duas classes. O SVM define fronteiras lineares ótimas para dados linearmente separáveis, maximizando a distância entre o hiperplano separador e os exemplos de treinamento mais próximos, chamados de vetores de suporte. O problema é formulado como um problema de otimização para encontrar os parâmetros ω e b que maximizam essa distância de separação.
O documento descreve as redes neurais e o perceptron. Ele explica que as redes neurais se inspiram nos neurônios biológicos e como o perceptron funciona como a unidade básica de uma rede neural, recebendo sinais de entrada e aplicando uma função de ativação. Também discute possíveis funções de ativação como a função degrau e sigmóide e como os pesos das conexões, incluindo o viés, determinam se um perceptron é ativado ou não.
O documento discute árvores de decisão e florestas aleatórias. Ele explica que árvores de decisão são uma das formas mais simples de aprendizado de máquina, representando uma sequência de regras "se...então" para classificar ou prever saídas com base em atributos de entrada. O documento também descreve características como nós internos representando testes de atributos e folhas especificando saídas, e discute expressividade e variações de árvores de decisão.
O documento discute aprendizado supervisionado bayesiano. Ele introduz o aprendizado bayesiano como um método probabilístico e descreve que o aprendizado supervisionado tem como objetivo classificação ou regressão para mapear entradas em saídas com base em exemplos.
O documento descreve a regra de Bayes e redes Bayesianas. Ele fornece um exemplo detalhado sobre como calcular a probabilidade de uma mulher ter câncer de mama dado um resultado positivo em um mamograma usando a regra de Bayes. Ele também define brevemente o que são redes Bayesianas, que representam dependências probabilísticas entre variáveis aleatórias através de um grafo direcionado acíclico.
O documento discute o tratamento de incerteza em inteligência artificial. Aborda como a probabilidade e a teoria da decisão podem ser usadas para tomar decisões racionais quando os resultados são incertos, levando em conta a probabilidade de cada resultado e sua utilidade segundo as preferências de quem decide.
O documento discute representação do conhecimento através de ontologias, incluindo taxonomias e herança. Ontologias organizam o conhecimento em categorias hierárquicas e permitem raciocinar sobre objetos classificados. Categorias podem ser representadas como predicados ou objetos. A herança permite que propriedades sejam herdadas por subcategorias.
O documento descreve o funcionamento do algoritmo de backward chaining em programação lógica, começando com uma explicação geral do processo de raciocínio de trás para frente a partir de um objetivo. Em seguida, apresenta formalmente o algoritmo de backward chaining, explicando cada parte do processo de forma recursiva para encontrar substituições que satisfaçam a query dada uma base de conhecimento. Por fim, exemplifica o algoritmo em uma base de conhecimento sobre venda de armas.
O documento descreve os passos para executar resolução e encadeamento para frente em lógica de primeira ordem. Primeiro, as expressões lógicas devem ser convertidas para forma clausal sem quantificadores. Em seguida, as variáveis devem ser substituídas durante a resolução usando o processo de unificação. Por fim, a resolução é executada para derivar novas conclusões.
O documento descreve as bases de dados em lógica de primeira ordem, como interagir com elas fazendo buscas (queries) por meio de sentenças lógicas em LPO, e como qualquer query que possa ser inferida logicamente pela base de dados será respondida afirmativamente. As bases de dados contêm axiomas com informações básicas e teoremas derivados dos axiomas, e o documento discute técnicas como forward chaining, backward chaining e resolução para realizar inferência nas bases de dados.
O documento descreve uma aula sobre lógica de primeira ordem. Apresenta os elementos básicos da lógica de primeira ordem, incluindo termos, predicados e a gramática formal para construir sentenças. Também explica como modelos e interpretações funcionam na lógica de primeira ordem, diferentemente da lógica proposicional.
O documento discute inferência em lógica proposicional, incluindo tipos de provas como verificação de modelos e aplicação de regras de inferência. Ele explica como aplicar regras de inferência como modus ponens e modus tollens para derivar novas sentenças a partir de premissas, formando uma prova.
O documento descreve um algoritmo de busca retroativa para resolver problemas de satisfação de restrições, utilizando forward checking e heurísticas como valores restantes mínimos, grau e valor menos restritivo. O algoritmo é demonstrado passo a passo em um exemplo de coloração de grafos, definindo variáveis, valores e propagando escolhas.
O documento descreve problemas de satisfação de restrições (CSPs), definidos por um conjunto de variáveis, domínios de valores para cada variável, e restrições sobre combinações de valores de variáveis. Apresenta exemplos de agendamento de aulas e coloração de mapas como CSPs, definindo suas variáveis, domínios e restrições.
O documento discute algoritmos genéticos e representação de cromossomos. Ele explica que os cromossomos podem ser representados de várias formas, incluindo binária, valores inteiros e reais. A representação binária é a mais simples, onde o cromossomo consiste de uma sequência de bits. A mutação e o cruzamento ocorrem durante o algoritmo genético para gerar novas soluções.
Atividades de Inglês e Espanhol para Imprimir - AlfabetinhoMateusTavares54
Quer aprender inglês e espanhol de um jeito divertido? Aqui você encontra atividades legais para imprimir e usar. É só imprimir e começar a brincar enquanto aprende!
Atividade letra da música - Espalhe Amor, Anavitória.Mary Alvarenga
A música 'Espalhe Amor', interpretada pela cantora Anavitória é uma celebração do amor e de sua capacidade de transformar e conectar as pessoas. A letra sugere uma reflexão sobre como o amor, quando verdadeiramente compartilhado, pode ultrapassar barreiras alcançando outros corações e provocando mudanças positivas.
Slides Lição 11, CPAD, A Realidade Bíblica do Inferno, 2Tr24.pptxLuizHenriquedeAlmeid6
Slideshare Lição 11, CPAD, A Realidade Bíblica do Inferno, 2Tr24, Pr Henrique, EBD NA TV, Lições Bíblicas, 2º Trimestre de 2024, adultos, Tema, A CARREIRA QUE NOS ESTÁ PROPOSTA, O CAMINHO DA SALVAÇÃO, SANTIDADE E PERSEVERANÇA PARA CHEGAR AO CÉU, Coment Osiel Gomes, estudantes, professores, Ervália, MG, Imperatriz, MA, Cajamar, SP, estudos bíblicos, gospel, DEUS, ESPÍRITO SANTO, JESUS CRISTO, Com. Extra Pr. Luiz Henrique, de Almeida Silva, tel-What, 99-99152-0454, Canal YouTube, Henriquelhas, @PrHenrique, https://ebdnatv.blogspot.com/
Slides Lição 11, Central Gospel, Os Mortos Em CRISTO, 2Tr24.pptxLuizHenriquedeAlmeid6
Slideshare Lição 11, Central Gospel, Os Mortos Em Cristo, 1Tr24, Pr Henrique, EBD NA TV, Revista ano 11, nº 1, Revista Estudo Bíblico Jovens E Adultos, Central Gospel, 2º Trimestre de 2024, Professor, Tema, Os Grandes Temas Do Fim, Comentarista, Pr. Joá Caitano, estudantes, professores, Ervália, MG, Imperatriz, MA, Cajamar, SP, estudos bíblicos, gospel, DEUS, ESPÍRITO SANTO, JESUS CRISTO, Com. Extra Pr. Luiz Henrique, 99-99152-0454, Canal YouTube, Henriquelhas, @PrHenrique
O Que é Um Ménage à Trois?
A sociedade contemporânea está passando por grandes mudanças comportamentais no âmbito da sexualidade humana, tendo inversão de valores indescritíveis, que assusta as famílias tradicionais instituídas na Palavra de Deus.
Slides Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24.pptxLuizHenriquedeAlmeid6
Slideshare Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24, Pr Henrique, EBD NA TV, Revista ano 11, nº 1, Revista Estudo Bíblico Jovens E Adultos, Central Gospel, 2º Trimestre de 2024, Professor, Tema, Os Grandes Temas Do Fim, Comentarista, Pr. Joá Caitano, estudantes, professores, Ervália, MG, Imperatriz, MA, Cajamar, SP, estudos bíblicos, gospel, DEUS, ESPÍRITO SANTO, JESUS CRISTO, Com. Extra Pr. Luiz Henrique, 99-99152-0454, Canal YouTube, Henriquelhas, @PrHenrique
1. Aula 11 – Comunica¸c˜ao Interprocessos e
Problemas Cl´assicos de Comunica¸c˜ao
entre Processos
Norton Trevisan Roman
29 de setembro de 2017
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 1 / 40
2. Mensagens – Outros Mecanismos
Existem diversos mecanismos de comunica¸c˜ao atuais
baseados na troca de mensagens (al´em do envio
direto ao processo). Os mais representativos s˜ao:
Caixas Postais (Mailboxes)
Portos ou Portas (Ports)
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 2 / 40
3. Mensagens – Outros Mecanismos
Caixas Postais
Estrutura de dados: S˜ao filas de mensagens n˜ao
associadas, a princ´ıpio, com nenhum processo.
Lugar para se colocar temporariamente um certo
n´umero de mensagens
Mensagens s˜ao enviadas para ou lidas da caixa postal, e n˜ao
diretamente para os/dos processos
Quando um processo tenta enviar para uma caixa cheia, ele
´e suspenso at´e que uma mensagem seja removida
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 3 / 40
4. Mensagens – Outros Mecanismos
Caixas Postais
Ex: Produtor-consumidor
Tanto o produtor quanto o consumidor criam caixas postais
grandes o suficiente para conter N mensagens
O produtor envia mensagens com dados `a caixa postal do
consumidor
O consumidor envia mensagens vazias `a caixa do produtor
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 4 / 40
5. Mensagens – Outros Mecanismos
Caixas Postais
Os processos podem enviar e receber mensagens das
caixas postais
Mecanismo adequado para comunicar diversos remetentes a
diversos receptores
Cada processo pode ter uma caixa exclusiva
Restri¸c˜ao
Necessidade de envio de duas mensagens para comunicar o
remetente com o receptor: uma do remetente `a caixa postal,
e outra da caixa postal para o receptor
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 5 / 40
6. Mensagens – Outros Mecanismos
Caixas Postais
Processo
Emissor 1
Processo
Receptor 1
Caixa
Postal
msg msg
Comunica¸c˜ao um-para-um
Processo
Emissor 1
Processo
Receptor 1
Processo
Receptor n
Caixa
Postal
...msg msg
msg
Comunica¸c˜ao um-para-v´arios
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 6 / 40
7. Mensagens – Outros Mecanismos
Caixas Postais em Posix:
Implementadas como uma fila de mensagens
msgget() – faz a requisi¸c˜ao (ao kernel) de uma fila de
mensagens usando o nome da caixa de mensagens
passado por parˆametro (ou criando uma, n˜ao existir)
msgsnd() – envia uma mensagem a uma caixa particular
msgrcv() – obt´em uma mensagem de uma determinada
caixa
Em qualquer caso, se n˜ao houver espa¸co (ou
mensagem), o processo ´e bloqueado → ´e adicionado `a
fila de processos em espera associada `a caixa.
´E verificado sempre se o processo pode acessar a fila
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 7 / 40
8. Mensagens – Outros Mecanismos
Portas
Computadores em geral tem uma ´unica conex˜ao de
rede → Todo dado chega por esta conex˜ao
Como o computador sabe a que aplica¸c˜ao enviar os
dados que chegam?
Usando portas. Os dados transmitidos s˜ao acompanhados
por um endere¸co que identifica o computador (IP) e a porta
de destino
S˜ao elementos de software que permitem a
comunica¸c˜ao entre conjuntos de processos
Ponto de conex˜ao de dados virtual (ou l´ogica), usada para
que programas troquem informa¸c˜ao diretamente
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 8 / 40
9. Mensagens – Outros Mecanismos
Portas
Ex: TCP – numeradas de 0 a 65.535 (16-bits)
No TCP, a porta 0 ´e reservada e n˜ao pode ser usada, no
UDP, 0 significa nenhuma porta
1 – 1.023 s˜ao restritas: reservadas para servi¸cos conhecidos,
como HTTP e FTP
Aplica¸c˜oes de usu´arios devem usar as demais (embora
possam usar essas)
Cada porta ´e como uma caixa postal, por´em com
um dono, que ser´a o processo que a criar
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 9 / 40
10. Mensagens – Outros Mecanismos
Portas
Cria porta(S,sa´ıda,msg) Cria porta(E,entrada,msg)
Conecta porta(S,E)
Envia porta(S,msg) recebe porta(E,msg)
Desconecta porta(S,E)
Destr´oi porta(S) Destr´oi porta(E)
Processo 1 Processo 2
Porta S Porta Emsg
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 10 / 40
11. Mensagens – Outros Mecanismos
Portas: Outras Caracter´ısticas
A cria¸c˜ao e a interliga¸c˜ao de portas e caixas postais
pode ser feita de maneira dinˆamica
A necessidade de enfileiramento das mensagens enviadas
torna necess´ario o uso de buffers, para o armazenamento
intermedi´ario
A comunica¸c˜ao entre processos locais ou remotos,
em um sistema estruturado com portas, ser´a feita
pela execu¸c˜ao de primitivas (s´ıncronas ou
ass´ıncronas) do tipo envia e recebe
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 11 / 40
12. Mensagens – Outros Mecanismos
Portas: Sockets
Pareamento de um endere¸co IP e porta, como um
ponto de conex˜ao, associada a uma aplica¸c˜ao
Host X (192.168.1.1:1065) Server Y (192.168.1.2:80)
Para que possa ocorrer a troca de mensagens, uma
aplica¸c˜ao no servidor liga um socket a uma porta
espec´ıfica
Registra no SO a aplica¸c˜ao, para que esta receba todo dado
destinado `aquela porta
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 12 / 40
13. Mensagens – Outros Mecanismos
Portas: Sockets
Em unix, sockets s˜ao um tipo de arquivo que
conecta processos a suas respectivas portas
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 13 / 40
14. Outros Mecanismos de Comunica¸c˜ao
Alguns outros mecanismos para comunica¸c˜ao
inter-processos s˜ao:
Pipes
Sinais (Signals)
Barreiras
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 14 / 40
15. Outros Mecanismos de Comunica¸c˜ao
Pipes
Fluxo de bytes de m˜ao ´unica entre processos
Usados no sistema operacional UNIX para permitir a
comunica¸c˜ao entre processos
Uma pipe ´e um modo de conectar a sa´ıda de um processo
com a entrada de outro processo, sem o uso de arquivos
tempor´arios
Ao tentar ler uma entrada da pipe, um processo ´e bloqueado
at´e que o dado esteja dispon´ıvel
Todo dado escrito por um processo na
pipe ´e dirigido, pelo kernel, a outro
processo, que pode ent˜ao lˆe-lo
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 15 / 40
16. Outros Mecanismos de Comunica¸c˜ao
Pipes
Uma pipeline ´e uma conex˜ao de dois ou mais
programas ou processos atrav´es de pipes
Permite a cria¸c˜ao de filas de processos
Ex: ps -ef | grep alunos | sort
Existe enquanto o processo existir
Exemplos:
Sem uso de pipes (usando arquivos tempor´arios)
$ ls > temp
$ sort < temp
Com uso de pipes
$ ls | sort
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 16 / 40
17. Outros Mecanismos de Comunica¸c˜ao
Pipes
Podem ser consideradas arquivos abertos sem
imagem correspondente no sistema de arquivos
Funcionamento:
Um processo cria uma nova pipe, via a chamada pipe()
pipe() retorna um par de descritores de arquivo
O processo passa esses descritores a seus filhos (via fork())
Cada filho pode ler da pipe fazendo um read() com o
primeiro descritor, e escrever com um write() no segundo.
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 17 / 40
18. Outros Mecanismos de Comunica¸c˜ao
Pipes – Exemplo
Usa a chamada ao
sistema dup
#include <unistd.h>
void main(void) {
int aux[2]; /* auxiliar para a cria¸c~ao das pipes */
/* Cria a pipe, recebendo os dois descritores */
if (pipe(aux)==-1) exit(1);
switch (fork()) {
case -1 : /*erro*/
exit(1); /*Falha no fork*/
case 0 : /* processo filho */
/* fecho o stdin do filho */
close(0);
/* abro o descritor 0 (stdin) para a leitura
da pipe */
if (dup(aux[0])!=0) exit(1);
/* fecho a ponta de escrita da pipe */
close(aux[1]);
/* executo o programa no filho */
execlp("./filho","filho",NULL);
}
/* se n~ao for -1 nem 0, ´e o pai */
/* fechando a ponta de leitura da pipe */
close(aux[0]);
/* escrevendo no filho */
write(aux[1], "Oi", 2);
}
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 18 / 40
19. Outros Mecanismos de Comunica¸c˜ao
Pipes – Exemplo
Usa a chamada ao
sistema dup
int dup(int oldfd);
Cria uma c´opia do
descritor oldfd
Usa o descritor sem uso
de menor n´umero como
novo descritor
#include <unistd.h>
void main(void) {
int aux[2]; /* auxiliar para a cria¸c~ao das pipes */
/* Cria a pipe, recebendo os dois descritores */
if (pipe(aux)==-1) exit(1);
switch (fork()) {
case -1 : /*erro*/
exit(1); /*Falha no fork*/
case 0 : /* processo filho */
/* fecho o stdin do filho */
close(0);
/* abro o descritor 0 (stdin) para a leitura
da pipe */
if (dup(aux[0])!=0) exit(1);
/* fecho a ponta de escrita da pipe */
close(aux[1]);
/* executo o programa no filho */
execlp("./filho","filho",NULL);
}
/* se n~ao for -1 nem 0, ´e o pai */
/* fechando a ponta de leitura da pipe */
close(aux[0]);
/* escrevendo no filho */
write(aux[1], "Oi", 2);
}
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 18 / 40
20. Outros Mecanismos de Comunica¸c˜ao
Problemas com pipes:
N˜ao h´a como abrir uma pipe j´a existente
Dois processos n˜ao compartilham a mesma pipe, a menos que sejam
irm˜aos, e ela tenha sido criada pelo pai desses processos
Named pipe (ou FIFO)
Extens˜ao de pipe que soluciona esse problema
´E um tipo de arquivo especial em Unix
Pode ser aberto por qualquer processo
Continua existindo mesmo depois que o processo terminar
Criado com chamadas de sistemas
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 19 / 40
21. Outros Mecanismos de Comunica¸c˜ao
Sinais (Linux e Unix)
S˜ao interrup¸c˜oes de software (traps), usadas para
que um processo possa enviar um sinal a outro
processo
Processos podem enviar sinais apenas a seu grupo
de processos (ancestrais, irm˜aos e descendentes)
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 20 / 40
22. Outros Mecanismos de Comunica¸c˜ao
Sinais (Linux e Unix)
Pode-se tamb´em dizer ao sistema receptor o que
deve fazer quando um sinal ´e recebido:
Ignor´a-lo
Captur´a-lo
Deve-se definir um procedimento para trat´a-lo
Quando o sinal ´e recebido, o controle passa ao tratador
Quando esse finaliza e retorna, o controle volta para onde estava
(como no tratamento de interrup¸c˜oes)
Deix´a-lo matar o processo
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 21 / 40
23. Outros Mecanismos de Comunica¸c˜ao
Barreiras
Algumas aplica¸c˜oes podem ser divididas em fases
Nenhum processo pode avan¸car `a pr´oxima fase at´e que
todos os processos possam fazˆe-lo
Introduz-se uma barreira ao final de cada fase
Quando alcan¸ca a barreira, um processo fica bloqueado at´e
que todos os outros alcancem a barreira.
A barreira garante que as opera¸c˜oes colocadas antes dela
s˜ao terminadas antes de come¸car as opera¸c˜oes localizadas
ap´os ela.
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 22 / 40
24. Outros Mecanismos de Comunica¸c˜ao
Barreiras – funcionamento
Ao chegar ao ponto em que deve haver a barreira, o
processo executa a primitiva barrier() e ´e suspenso
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 23 / 40
25. Outros Mecanismos de Comunica¸c˜ao
Barreiras – Linux
O processo inicializa uma barreira, chamando
pthread barrier init()
Passando, dentre outros parˆametros, o n´umero de threads
que sincronizar˜ao na barreira
Cada thread, ao chegar na barreira, chama
pthread barrier wait()
Ela bloqueia, at´e que o n´umero de threads especificado
tenha chamado wait() nessa mesma barreira
Quando o n´umero requerido chamou wait(), elas s˜ao
desbloqueadas
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 24 / 40
26. Referˆencias Adicionais
Bovet, D.P., Cesati, M.: Understanding the Linux Kernel. O’Reilly. 1st
Ed. 2000.
http://macboypro.wordpress.com/2009/05/15/posix-message-passing-in-
linux/
http://www.linux-tutorial.info/modules.php?name=MContent
&pageid=292
http://linux.die.net/man/3/pthread barrier wait
http://linux.die.net/man/3/pthread barrier init
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 25 / 40
27. Problemas Cl´assicos
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 26 / 40
28. Produtor – Consumidor
J´a visto
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 27 / 40
29. Jantar dos Fil´osofos (Dijkstra, 1965)
Cinco fil´osofos est˜ao sentados ao redor de uma
mesa circular para o jantar.
Cada fil´osofo possui um prato para
comer macarr˜ao
Al´em disso, eles disp˜oem de hashis,
em vez de garfos
Cada um precisa de 2 hashis
Entre cada par de pratos existe
apenas um hashi
Hashis precisam ser compartilhados de forma sincronizada
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 28 / 40
30. Jantar dos Fil´osofos
Os fil´osofos comem e pensam, alternadamente
N˜ao se at´em a apenas uma das tarefas
Al´em disso, quando comem,
pegam apenas um hashi por vez
Quem consegue pegar os dois, come
por alguns instantes e depois larga
os hashis
Como evitar que fiquem
bloqueados?
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 29 / 40
31. Jantar dos Fil´osofos
Que fazer?
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 30 / 40
32. Jantar dos Fil´osofos
Pense um pouco Pegue os hashis
Largue os hashis Coma um pouco
Que fazer?
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 30 / 40
33. Jantar dos Fil´osofos
Pense um pouco Pegue os hashis
Largue os hashis Coma um pouco
Pense um pouco
Trave hashi esq.
Trave hashi dir.
Coma um pouco
Solte hashi esq.
Solte hashi dir.
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 30 / 40
34. Jantar dos Fil´osofos
#define N 5 /* n´umero de fil´osofos */
void filosofo(int i) { /* i: fil´osofo (0 a 4) */
while (TRUE) {
pensa();
pega hashi(i); /* pega hashi esquerdo */
pega hashi((i+1) % N); /* pega hashi direito */
come();
solta hashi(i); /* devolve hashi esquerdo */
solta hashi((i+1) % N); /* devolve hashi direito */
}
}
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 31 / 40
35. Jantar dos Fil´osofos
#define N 5 /* n´umero de fil´osofos */
void filosofo(int i) { /* i: fil´osofo (0 a 4) */
while (TRUE) {
pensa();
pega hashi(i); /* pega hashi esquerdo */
pega hashi((i+1) % N); /* pega hashi direito */
come();
solta hashi(i); /* devolve hashi esquerdo */
solta hashi((i+1) % N); /* devolve hashi direito */
}
}
Isso funciona?
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 31 / 40
36. Jantar dos Fil´osofos
#define N 5 /* n´umero de fil´osofos */
void filosofo(int i) { /* i: fil´osofo (0 a 4) */
while (TRUE) {
pensa();
pega hashi(i); /* pega hashi esquerdo */
pega hashi((i+1) % N); /* pega hashi direito */
come();
solta hashi(i); /* devolve hashi esquerdo */
solta hashi((i+1) % N); /* devolve hashi direito */
}
}
Isso funciona?
Em pega hashi(), se todos os fil´osofos
pegarem o hashi da esquerda, nenhum pegar´a
o da direita – deadlock
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 31 / 40
37. Jantar dos Fil´osofos
Como solucionar?
Ap´os pegar o hashi da esquerda, o fil´osofo
verifica se o da direita est´a livre.
Se n˜ao estiver, devolve o hashi que pegou,
espera um pouco e tenta novamente
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 32 / 40
38. Jantar dos Fil´osofos
Isso funciona?
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 33 / 40
39. Jantar dos Fil´osofos
Isso funciona?
Se todos os fil´osofos pegarem o hashi da
esquerda ao mesmo tempo:
Ver˜ao que o da direita n˜ao est´a livre
Largar˜ao seu hashi e e esperar˜ao
Pegar˜ao novamente o hashi da esquerda
Ver˜ao que o da direita n˜ao est´a livre
. . .
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 33 / 40
40. Jantar dos Fil´osofos
Isso funciona?
Se todos os fil´osofos pegarem o hashi da
esquerda ao mesmo tempo:
Ver˜ao que o da direita n˜ao est´a livre
Largar˜ao seu hashi e e esperar˜ao
Pegar˜ao novamente o hashi da esquerda
Ver˜ao que o da direita n˜ao est´a livre
. . .
Starvation (inani¸c˜ao)
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 33 / 40
41. Jantar dos Fil´osofos
E agora?
Poder´ıamos fazer com que eles esperassem um
tempo aleat´orio
Reduz a chance de starvation
Na maioria das aplica¸c˜oes, tentar novamente
mais tarde n˜ao ´e problema
Via ethernet, ´e exatamente isso que ´e feito com
envio de pacotes
Sistemas n˜ao cr´ıticos
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 34 / 40
42. Jantar dos Fil´osofos
E agora, como evitar as m´ultiplas
tentativas nos hashis?
Pense um pouco
Trave hashi esq.
Trave hashi dir.
Coma um pouco
Solte hashi esq.
Solte hashi dir.
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 35 / 40
43. Jantar dos Fil´osofos
E agora, como evitar as m´ultiplas
tentativas nos hashis?
Proteger os passos ap´os “pense um
pouco” com um sem´aforo bin´ario – um
mutex
down(mutex) ao entrar na ´area cr´ıtica
up(mutex) ao sair dela
Pense um pouco
Trave hashi esq.
Trave hashi dir.
Coma um pouco
Solte hashi esq.
Solte hashi dir.
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 35 / 40
44. Jantar dos Fil´osofos
#define N 5 /* n´umero de fil´osofos */
void filosofo(int i) { /* i: fil´osofo (0 a 4) */
while (TRUE) {
pensa();
pega hashi(i); /* pega hashi esquerdo */
pega hashi((i+1) % N); /* pega hashi direito */
come();
solta hashi(i); /* devolve hashi esquerdo */
solta hashi((i+1) % N); /* devolve hashi direito */
}
}
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 36 / 40
45. Jantar dos Fil´osofos
#define N 5 /* n´umero de fil´osofos */
semaphore mutex=1;
void filosofo(int i) { /* i: fil´osofo (0 a 4) */
while (TRUE) {
pensa();
down(&mutex);
pega hashi(i); /* pega hashi esquerdo */
pega hashi((i+1) % N); /* pega hashi direito */
come();
solta hashi(i); /* devolve hashi esquerdo */
solta hashi((i+1) % N); /* devolve hashi direito */
up(&mutex);
}
}
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 36 / 40
46. Jantar dos Fil´osofos
#define N 5 /* n´umero de fil´osofos */
semaphore mutex=1;
void filosofo(int i) { /* i: fil´osofo (0 a 4) */
while (TRUE) {
pensa();
down(&mutex);
pega hashi(i); /* pega hashi esquerdo */
pega hashi((i+1) % N); /* pega hashi direito */
come();
solta hashi(i); /* devolve hashi esquerdo */
solta hashi((i+1) % N); /* devolve hashi direito */
up(&mutex);
}
}
Somente um fil´osofo come
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 36 / 40
47. Jantar dos Fil´osofos
H´a problemas? Pense um pouco
Trave hashi esq.
Trave hashi dir.
Coma um pouco
Solte hashi esq.
Solte hashi dir.
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 37 / 40
48. Jantar dos Fil´osofos
H´a problemas?
Tecnicamente, resolve o problema
Na pr´atica, contudo, tem um problema
de desempenho:
Somente um fil´osofo pode comer em um
dado momento
Com 5 hashis,
dever´ıamos permitir que
2 fil´osofos comessem ao
mesmo tempo
Pense um pouco
Trave hashi esq.
Trave hashi dir.
Coma um pouco
Solte hashi esq.
Solte hashi dir.
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 37 / 40
49. Jantar dos Fil´osofos
Como solucionar?
Sem deadlocks ou starvation
Com o m´aximo de paralelismo para um n´umero arbitr´ario de
fil´osofos
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 38 / 40
50. Jantar dos Fil´osofos
Como solucionar?
Sem deadlocks ou starvation
Com o m´aximo de paralelismo para um n´umero arbitr´ario de
fil´osofos
Usar um arranjo – estado – para identificar se um fil´osofo
est´a comendo, pensando ou faminto (pensando em pegar os
hashis)
Um fil´osofo s´o pode comer (estado) se nenhum dos vizinhos
imediatos estiver comendo
Usar um arranjo de sem´aforos, um para cada fil´osofo
Fil´osofos famintos podem ser bloqueados se os hashis estiverem
ocupados
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 38 / 40
51. Jantar dos Fil´osofos
#define N 5 /* n´umero de fil´osofos */
#define ESQ (i+N-1)%N /* vizinho `a esquerda de i */
#define DIR (i+1)%N /* vizinho `a direita de i */
#define PEN 0 /* fil´osofo pensando */
#define FAM 1 /* fil´osofo faminto */
#define COM 2 /* fil´osofo comendo */
typedef int semaforo;
int estado[N]; /* estado dos fil´osofos (deve iniciar com PEN) */
semaforo mutex = 1; /* exclus~ao m´utua para estado */
semaforo s[N]; /* para bloqueio dos fil´osofos (iniciados com 0) */
void filosofo(int i) { /* i: n´umero do fil´osofo (0 a N-1) */
while (TRUE) {
pensa(); /* o fil´osofo est´a pensando */
pega_hashi(i); /* pega dois hashis ou bloqueia */
come(); /* manda o rango pr´a dentro */
larga_hashi(i); /* devolve os hashis `a mesa */
}
}
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 39 / 40
52. Jantar dos Fil´osofos
void pega_hashi(int i) { /* i: n´umero do fil´osofo (0 a N-1) */
down(&mutex); /* entra na regi~ao cr´ıtica */
estado[i] = FAM; /* registra que o fil´osofo est´a faminto */
testa(i); /* tenta pegar 2 hashis */
up(&mutex); /* sai da regi~ao cr´ıtica */
down(&s[i]); /* bloqueia se n~ao pegou os hashis */
}
void larga_hashi(int i) { /* i: n´umero do fil´osofo (0 a N-1) */
down(&mutex); /* entra na regi~ao cr´ıtica */
estado[i] = PEN; /* o fil´osofo acabou de comer */
testa(ESQ); /* v^e se o vizinho da esquerda pode comer agora */
testa(DIR); /* v^e se o vizinho da direita pode comer agora */
up(&mutex); /* sai da regi~ao cr´ıtica */
}
void testa(int i) { /* i: n´umero do fil´osofo (0 a N-1) */
if (estado[i] == FAM && estado[ESQ] != COM && estado[DIR] != COM) {
estado[i] = COM; /* registra que o fil´osofo est´a comendo */
up(&s[i]); /* libera para comer */
}
}
Norton Trevisan Roman Aula 11 – Comunica¸c˜ao Interprocessos e Problemas Cl´assicos de Comunica¸c˜ao entre Proces29 de setembro de 2017 40 / 40