Notas da Aula 4 - Fundamentos de Sistemas Operacionais

Tamanho: px
Começar a partir da página:

Download "Notas da Aula 4 - Fundamentos de Sistemas Operacionais"

Transcrição

1 Notas da Aula 4 - Fundamentos de Sistemas Operacionais 1. Threads Threads são linhas de execução dentro de um processo. Quando um processo é criado, ele tem uma única linha de execução, ou thread. Esta linha de execução determina qual a sequência de instruções executadas pelo processo. No entanto, um processo pode requisitar ao SO a criação de outras threads. Ao requisitar a criação de uma nova thread, o processo informa qual rotina será executada pela thread. Por exemplo: int main() { x = x+1; create_thread(funcao_1); y = x + 5; return(0); void funcao_1() { k = l + 1;... Nos trechos de código acima, o processo inicialmente criado tem uma única thread que executa a sequência de instruções da função main(). Em um dado ponto desta execução, o processo faz uma chamada de sistema (neste exemplo, denominada create_thread()) que requisita ao SO a criação de uma nova thread. A nova thread, por sua vez, deve executar a função denominada funcao_1(). A partir deste momento, o processo passa a contar com duas threads simultâneas. Ou seja, uma linha de execução que continua executando as instruções da função main() e outra que passa a executar a sequência de instruções da função funcao_1(). Um efeito similar pode ser alcançado com o uso da função fork() discutida nas aulas anteriores. Neste caso, o código ficaria: int main() { x = x+1;

2 pid = fork(); if (pid == 0) funcao_1(); y = x + 5; return(0); void funcao_1() { k = l + 1;... Após a chamada da função fork(), o SO cria uma cópia exata do processo original. Ambas prosseguem suas execuções a partir do comando if. No entanto, para o processo recémcriado, pid terá valor 0. Este novo processo terá então sua execução desviada para a função funcao_1(), enquanto o processo original continuará a execução da função main(). Qual, então, é a diferença entre threads e processos? Quando uma nova thread é criada, o SO não precisa criar uma duplicata do espaço de endereçamento do processo. Ao invés disso, a nova thread utiliza o mesmo espaço de endereçamento original. Por outro lado, ao chamar a função fork(), o processo é completamente duplicado: uma nova área na memória física é criada para acomodar o novo processo e toda uma rotina de cópia do estado do processo original é executada. Ao contrário do que acontece com processos diferentes, para os quais um grande número de informações sobre o estado do processo atual precisam ser salvas, no chaveamento entre threads de um mesmo processo apenas alguns poucos registradores precisam ser guardados. Por estas características, as threads são chamadas às vezes de processos leves. Em resumo, uma thread é apenas uma linha de execução de um processo, representada pelo valor de alguns registradores. Uma thread pertence a um processo, enquanto um processo pode ter mais de uma thread. Também é importante notar que todo processo tem ao menos uma thread. Embora threads e processos sejam conceitos bem diferentes, ambos são, muitas vezes, citados como dois mecanismos similares de programação. De fato, do ponto de vista de um programador, a grande diferença entre threads e processos é o fato de que threads de um mesmo processo compartilham memória, enquanto processos distintos têm espaços de endereçamento separados. O compartilhamento de memória entre threads geralmente é visto como uma vantagem, já que simplifica a troca de informação. Para que dois processos distintos se comuniquem, é necessária a adoção de alguma outra solução mais complexa. Por outro lado, o compartilhamento de memória pode tornar a depuração de um programa mais difícil. Isso porque o erro em uma thread, que faz com que ela escreva valores inválidos na

3 memória, pode se manifestar como um sintoma em outra thread, que simplesmente lê valores da memória e efetua algum processamento. 2. Programação Concorrente Dizemos que um programa é concorrente quando ele utiliza diversas linhas de execução simultaneamente. Em outras palavras, um programa concorrente é aquele que utiliza várias threads ou processos para executar a tarefa a qual se propõe. Programas concorrentes podem, inclusive, misturar o uso de threads com processos. Ou seja, o programa pode criar um conjunto de processos os quais, por sua vez, podem disparar várias threads de execução. É tarefa do programador determinar qual combinação de threads e processos faz mais sentido para o programa em questão. Há inúmeros exemplos de programas concorrentes usados comumente. Um exemplo bastante claro é um servidor web. Quando iniciado, o servidor tem, inicialmente, um único processo ou uma única thread que aguarda por conexões. Ao receber uma conexão, o servidor pode criar um novo processo (ou thread) para cuidar do atendimento desta conexão. O processo ou thread principal volta ao estado inicial para esperar por novas conexões. Programas concorrentes também são muitas vezes chamados de programas paralelos, pois eles utilizam várias linhas de execução paralelas no tempo. Programas que utilizam uma única thread ou processo são conhecidos como programas sequenciais. Há algumas razões para a utilização da programação concorrente. Uma delas é o fato de que algumas tarefas são intrinsecamente paralelas. Considere o exemplo do servidor web. Espera-se que um servidor seja capaz de atender a várias requisições simultâneas. Embora seja possível implementar isso em um programa sequencial, é mais intuitivo escrever este programa de maneira paralela. Além disso, programas paralelos podem ser mais eficientes que os sequenciais. Isso ocorre por duas razões: 1. Existência de sistemas multiprocessados: com vários processadores, é possível executar duas ou mais threads ao mesmo tempo. Programas sequenciais, por outro lado, não conseguem tirar proveito disso. 2. Sobreposição de operações de E/S: mesmo em sistemas monoprocessados, quando um processo ou thread de um programa concorrente requisita uma operação de E/S, o tempo ocioso pode ser utilizado por outro processo ou thread do programa. Em um programa sequencial, toda a execução é bloqueada pelo pedido de E/S. Existem, entretanto, desvantagens na programação concorrente. Em primeiro lugar, é preciso haver uma coordenação entre as threads ou processos, o que nem sempre é trivial. Além disso, erros em programas concorrentes são mais difíceis de se depurar, pois é preciso identificar qual thread ou processo causou o problema. Programas concorrentes são também menos intuitivos, pois os programadores em geral tem uma linha de raciocínio linear (sequencial). Isso faz com que o programador faça algumas suposições inválidas, como por exemplo sobre a velocidade de execução dos processos. Por último, a ordem de execução dos

4 processos ou threads de um programa concorrente costuma ser aleatória. Isso dificulta ainda mais a depuração dos programas, pois erros muitas vezes são dependentes da ordem em que os processos são executados. Existem dois tipos diferentes de paralelismo, ligados ao tipo de hardware no qual um programa concorrente é executado. Se um programa concorrente é executado em máquinas multiprocessadas, diz-se que o paralelismo é real. Caso o programa seja executado em uma máquina monoprocessada, diz-se que o paralelismo é aparente. 3. Especificação do Paralelismo As chamadas exatas para criação e manipulação de threads e processos variam de SO para SO. No entanto, existem alguns tipos gerais de representação para programas concorrrentes. Embora os nomes das funções possam ser diferentes em um dado sistema, a estrutura do programa será sempre similar a uma destas representações. No paralelismo explícito, o programador define (explicitamente) em que ponto da execução cada thread ou processo será criado e que tarefa cada um executará. O programador é responsável pela criação, comunicação, sincronização e encerramento de todas as threads e processos. Para isso, são utilizadas três funcionalidades básica: 1. Função create_process(): cria um novo processo (ou thread). 2. Função exit(): encerra um processo ou uma thread. 3. Função wait_process(): o processo que chama esta função, espera que o processo (ou thread) especificado como argumento seja encerrado. No paralelismo implícito, o programador não se preocupa com como criar e gerenciar as threads ou processos. Ao invés disso, ele simplesmente indica no código pontos que devem ser paralelizados. O compilador da linguagem na qual o programa está sendo escrito é responsável por seguir as indicações do programador e criar as threads ou processos necessários. Neste tipo de representação, são utilizados dois comandos básicos: o parbegin e o parend. O parbegin indica o início de um bloco que deve ser paralelizado pelo compilador. O parend indica o final deste bloco. Cada instrução dentro do bloco deve ser executada por uma thread ou processo diferente. Geralmente, os Sistemas Operacionais fornecem suporte apenas à versão explícita de paralelismo, provendo funções similares às três apresentadas. Por este motivo, o paralelismo explícito é mais comum. Algumas linguagens, no entanto, dão suporte ao paralelismo implícito. Um exemplo é a biblioteca OpenMP, disponível para C e C++. Comparativamente, o paralelismo implícito é mais simples, do ponto de vista do programador. Ele não precisa se preocupar com tantos detalhes de gerenciamento de threads e processos. Por outro lado, o paralelismo explícito é mais flexível, dando mais liberdade para o programador gerenciar como achar melhor suas threads e processos.

5 Há ainda uma terceira maneira de representar programas concorrentes. São os chamados grafos de precedência. Nestes grafos, cada vértice representa uma determinada tarefa a ser executada no programa. Um arco saindo de uma tarefa A para outra tarefa B indica que a tarefa B só pode ser iniciada depois que a tarefa A tiver sido concluída. Desta forma, é possível representar facilmente relações de dependência entre tarefas. Algumas plataformas recebem um programa especificado através de um grafo de precedência e ordenam a execução de processos ou threads relativos a cada tarefa de modo a otimizar a execução (e.g., reduzir o tempo total de execução do programa). 4. Compartilhamento de Recursos Geralmente, processos ou threads de um programa concorrente compartilham recursos. Há vários tipos de recursos que podem ser compartilhados. Alguns exemplos são: variáveis, sockets e arquivos. Muitas vezes, estes recursos são usados como um meio de comunicação entre os processos ou threads do programa concorrente. O recurso compartilhado mais comum é, possivelmente, a memória. Threads de um mesmo processo compartilham todo o espaço de endereçamento, então qualquer variável de um programa concorrente acessada por várias threads é compartilhada. Mesmo processos separados podem compartilhar memória, através de chamadas de sistema. Tais chamadas pedem ao SO que aloque uma área de memória física que pode ser acessada por um conjunto de processos. Ter uma variável compartilhada pode servir como um mecanismo de comunicação entre processos ou threads. Por exemplo, duas threads podem compartilhar uma variável inicio_thread_1, inicialmente com valor 0. Quando a thread 1 começa sua execução, ela pode alterar o valor da variável para 1. Desta forma, com um simples teste do valor da variável inicio_thread_1, a thread 2 sabe se a outra thread foi iniciada ou não. Um exemplo clássico de aplicação de programação concorrente com compartilhamento de memória é o problema do Produtor-Consumidor. Neste tipo de aplicação, existem vários processos (ou threads) que atuam como produtores de dados. Por exemplo, as threads produtoras podem realizar um determinado cálculo que resulta em um dado a ser impresso. Há também um ou mais processos (ou threads) que atuam como consumidores. Ou seja, eles recebem os dados produzidos e realizam algum tipo de operação sobre eles (por exemplo, imprimi-los na tela). Os produtores e os consumidores compartilham uma área de memória na qual os dados são colocados e posteriormente retirados. Um sistema comum que funciona desta forma são os servidores de impressão. Vários programas podem requisitar que determinados dados (arquivos) sejam impressos. Estes processos são os produtores. Ao invés de cada processo tentar enviar diretamente seus dados para a impressora, eles colocam os dados em uma área de memória compartilhada, chamada de spool de impressão. Um processo especializado lê os dados do spool e faz a comunicação com a impressora para realizar a impressão propriamente dita.

6 Em geral, a área de memória compartilhada é um buffer circular. Este buffer tem posições de memória para acomodar os dados produzidos, além de dois ponteiros. Um deles aponta para a primeira posição ocupada do buffer, enquanto o outro aponta para a primeira posição livre. Ao adicionar um novo elemento ao buffer, o produtor insere seu dado na primeira posição livre e avança o ponteiro. Ao remover um dado do buffer, o consumidor lê a primeira posição ocupada e avança o ponteiro. Obviamente, cuidados têm que ser tomados para que não haja overflow ou underflow do buffer. Ou seja, para que produtores não insiram novos dados se não há posições livres e para que os consumidores não tentem ler dados se não houver dados a serem lidos. 5. Região Crítica Uma região (ou seção) crítica é um trecho de programa no qual ocorre a manipulação de algum recurso compartilhado. É importante notar que um mesmo programa pode ter várias regiões críticas. A relevância das seções críticas está no fato de que a manipulação simultânea de recursos compartilhados entre dois ou mais processos pode resultar em erros em um programa concorrente. Para exemplificar este tipo de erro, suponha que duas threads compartilham uma variável x, inicialmente com o valor 0. Suponha ainda que, em determinado momento, ambas as threads tentam incrementar x. O resultado esperado da execução das duas threads é que x tenha o valor 2. Entretanto, dependendo da ordem de execução das threads isso pode não ser verdade. O problema acontece porque o incremento de uma variável geralmente é traduzido para um conjunto de instruções de máquina. Por exemplo: MOV acc, x ; Move o valor da variável x para o acumulador INC acc ; Incrementa o valor do acumulador. MOV x, acc ; Move o valor do acumulador para x Suponha que a primeira thread execute a primeira instrução e seja interrompida (por exemplo, pelo fim do seu slice de tempo atual). Neste instante, a segunda thread começa a ser executada e executa todas as três instruções. O valor da variável x, portanto, passa a ser 1. Quando a primeira thread volta à execução, o valor do registrador acumulador está em 0, pois este foi o resultado da execução da primeira instrução (executada antes da segunda thread alterar o valor de x). A primeira thread executa as duas últimas instruções, fazendo com que x continue com o valor 1. Os trechos de código nos quais as duas threads fazem suas manipulações da variável x são as regiões críticas do código (em relação a x; podem existir outras, relacionadas a outros recursos). A ordem em que as threads são colocadas ou retiradas do processador durante o processamento da região crítica pode afetar o resultado da computação.

7 O problema do Produtor-Consumidor também contém uma região crítica. Como o buffer circular (junto com seus ponteiros) é um recurso compartilhado, a ordem de execução dos processos no momento de inserção ou remoção de elementos do buffer pode causar erros. Suponha, por exemplo, que um produtor P1 insira um dado D1 na próxima posição livre do buffer. No entanto, imediatamente antes de atualizar o ponteiro da próxima posição livre, P1 é interrompido e P2 entra em seu lugar. Suponha ainda que P2 decida inserir um dado D2 no buffer. Como o ponteiro não foi ainda atualizado por P1, P2 irá sobrescrever o dado D1. Esta situação, em que a ordem de execução dos processos ou threads na região crítica pode causar erros na computação, é chamada de Condição de Corrida. Programas sujeitos a condições de corrida podem ter resultados inesperados e variáveis, e sua depuração é, em geral, muito complicada. Existem duas maneiras de solucionar o problema da condição de corrida. A primeira é chamada de Exclusão Mútua e consiste em impedir que mais de um processo acesse a região crítica simultaneamente. Neste caso, a condição de corrida não ocorrerá, pois o estado do recurso compartilhado não poderá mudar ao longo da execução da região crítica por um processo (ou thread). Outra possível solução é chamada de Operação Atômica e consiste em tornar atômico o processamento realizado na região crítica. Uma operação atômica é aquela que não pode ser divisível no tempo, ou seja, não pode sofrer interrupções. Logo, dada esta condição, condições de corrida também são impossíveis.

Notas da Aula 15 - Fundamentos de Sistemas Operacionais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais Notas da Aula 15 - Fundamentos de Sistemas Operacionais 1. Software de Entrada e Saída: Visão Geral Uma das tarefas do Sistema Operacional é simplificar o acesso aos dispositivos de hardware pelos processos

Leia mais

Sistemas Operacionais Sincronização e Comunicação entre Processos

Sistemas Operacionais Sincronização e Comunicação entre Processos Universidade Estadual de Mato Grosso do Sul UEMS Curso de Licenciatura em Computação Sistemas Operacionais Sincronização e Comunicação entre Processos Prof. José Gonçalves Dias Neto profneto_ti@hotmail.com

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Questões Em uma rede de sobreposição (overlay), mensagens são roteadas de acordo com a topologia da sobreposição. Qual uma importante desvantagem

Leia mais

Processos e Threads (partes I e II)

Processos e Threads (partes I e II) Processos e Threads (partes I e II) 1) O que é um processo? É qualquer aplicação executada no processador. Exe: Bloco de notas, ler um dado de um disco, mostrar um texto na tela. Um processo é um programa

Leia mais

Notas da Aula 6 - Fundamentos de Sistemas Operacionais

Notas da Aula 6 - Fundamentos de Sistemas Operacionais 1. Monitores Notas da Aula 6 - Fundamentos de Sistemas Operacionais Embora os semáforos sejam uma boa solução para o problema da exclusão mútua, sua utilização não é trivial. O programador é obrigado a

Leia mais

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA 1. INTRODUÇÃO O conceito de concorrência é o princípio básico para o projeto e a implementação dos sistemas operacionais multiprogramáveis. O sistemas multiprogramáveis

Leia mais

Sistemas Operacionais Aula 08: Sincronização de Processos. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com

Sistemas Operacionais Aula 08: Sincronização de Processos. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Sistemas Operacionais Aula 08: Sincronização de Processos Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Objetivos Introduzir o problema da seção crítica, cujas soluções podem ser usadas

Leia mais

Processos (Threads,Virtualização e Migração de Código)

Processos (Threads,Virtualização e Migração de Código) Processos (Threads,Virtualização e Migração de Código) Roteiro Processos Threads Virtualização Migração de Código O que é um processo?! Processos são programas em execução. Processo Processo Processo tem

Leia mais

Capítulo 2 Processos e Threads Prof. Fernando Freitas

Capítulo 2 Processos e Threads Prof. Fernando Freitas slide 1 Capítulo 2 Processos e Threads Prof. Fernando Freitas Material adaptado de: TANENBAUM, Andrew S. Sistemas Operacionais Modernos. 3ª edição. Disponível em: http://www.prenhall.com/tanenbaum_br slide

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais SINCRONIZAÇÃO E COMUNICAÇÃO ENTRE PROCESSOS MACHADO/MAIA: CAPÍTULO 07, PÁGINA 101 Prof. Pedro Luís Antonelli Anhanguera Educacional sistemas multiprogramáveis Os sistemas multiprogramáveis

Leia mais

SISTEMAS OPERACIONAIS

SISTEMAS OPERACIONAIS SISTEMAS OPERACIONAIS Sincronização entre Processos Andreza Leite andreza.leite@univasf.edu.br Sincronização Freqüentemente, os processos precisam se comunicar com outros processos. Isto ocorre quando

Leia mais

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia O Sistema Operacional que você usa é multitasking? Por multitasking, entende-se a capacidade do SO de ter mais de um processos em execução ao mesmo tempo. É claro que, num dado instante, o número de processos

Leia mais

Notas da Aula 17 - Fundamentos de Sistemas Operacionais

Notas da Aula 17 - Fundamentos de Sistemas Operacionais Notas da Aula 17 - Fundamentos de Sistemas Operacionais 1. Gerenciamento de Memória: Introdução O gerenciamento de memória é provavelmente a tarefa mais complexa de um sistema operacional multiprogramado.

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Modelo Cliente-Servidor: Introdução aos tipos de servidores e clientes Prof. MSc. Hugo Souza Iniciando o módulo 03 da primeira unidade, iremos abordar sobre o Modelo Cliente-Servidor

Leia mais

Tipos de sistemas operacionais

Tipos de sistemas operacionais Tipos de sistemas operacionais Sistemas Operacionais de Computadores de Grande Porte Sistemas Operacionais para Servidores Sistemas Operacionais de Multiprocessadores Sistemas Operacionais para Computadores

Leia mais

Programação Concorrente Processos e Threads

Programação Concorrente Processos e Threads Programação Concorrente Processos e Threads Prof. Eduardo Alchieri Processos O conceito mais central em qualquer sistema operacional é o processo Uma abstração de um programa em execução Um programa por

Leia mais

EXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura 4-1 - Exemplo

EXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura 4-1 - Exemplo 4 PROCESSOS Os primeiros sistemas operacionais permitiam que apenas um processo fosse executado por vez. Dessa maneira, este processo tinha todo o sistema computacional a sua disposição. Os atuais sistemas

Leia mais

Prof.: Roberto Franciscatto. Capítulo 1.1 Introdução

Prof.: Roberto Franciscatto. Capítulo 1.1 Introdução Sistemas Operacionais Prof.: Roberto Franciscatto Capítulo 1.1 Introdução Tipos de Sistemas Operacionais Sistemas Monoprogramáveis / Monotarefa Voltados tipicamente para a execução de um único programa.

Leia mais

Introdução a Threads Java

Introdução a Threads Java Introdução a Threads Java Prof. Gerson Geraldo Homrich Cavalheiro Universidade Federal de Pelotas Departamento de Informática Instituto de Física e Matemática Pelotas RS Brasil http://gersonc.anahy.org

Leia mais

Udesc/Ceplan Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Alexandre Veloso alexandre.matos@udesc.br

Udesc/Ceplan Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Alexandre Veloso alexandre.matos@udesc.br Programação Concorrente [Parte 2] Udesc/Ceplan Bacharelado em Sistemas de Informação Sistemas Operacionais Prof. Alexandre Veloso alexandre.matos@udesc.br Condição de Corrida Uma forma de um processo comunicar-se

Leia mais

Programação Concorrente Introdução

Programação Concorrente Introdução Introdução Prof. Eduardo Alchieri (definição) Programação Concorrente Do inglês Concurrent Programming, onde Concurrent signifca "acontecendo ao mesmo tempo" Programação Concorrente é diferente de programação

Leia mais

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP) Hardware (Nível 0) Organização O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis,

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Software em Sistemas Distribuídos Aplicativo ou Sistema Operacional Sincronismo Interação Controles Um sistema operacional moderno provê dois serviços fundamentais para o usuário

Leia mais

Sistemas Operacionais. Alexandre Meslin meslin@inf.puc-rio.br

Sistemas Operacionais. Alexandre Meslin meslin@inf.puc-rio.br Sistemas Operacionais Alexandre Meslin meslin@inf.puc-rio.br Ementa Apresentação do curso Cap1 - Visão Geral Cap2 - Conceitos de Hardware e Software Cap3 - Concorrência Cap4 - Estrutura do Sistema Operacional

Leia mais

1.2 Tipos de Sistemas Operacionais

1.2 Tipos de Sistemas Operacionais 1.2 Tipos de Operacionais Tipos de Operacionais Monoprogramáveis/ Monotarefa Multiprogramáveis/ Multitarefa Com Múltiplos Processadores 1.2.1 Monoprogramáveis/Monotarefa Os primeiros sistemas operacionais

Leia mais

Organização e Arquitetura de Computadores

Organização e Arquitetura de Computadores Organização e Arquitetura de Computadores Entrada e saída Alexandre Amory Edson Moreno Nas Aulas Anteriores Foco na Arquitetura e Organização internas da Cleo Modelo Von Neuman Circuito combinacional Circuito

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Sistemas de Entrada/Saída Princípios de Hardware Sistema de Entrada/Saída Visão Geral Princípios de Hardware Dispositivos de E/S Estrutura Típica do Barramento de um PC Interrupções

Leia mais

Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos

Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática / UFMA http://www.lsd.deinf.ufma.br

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Processos e Threads Gustavo Reis gustavo.reis@ifsudestemg.edu.br - O que são Processos? Uma abstração de um programa em execução. Mantêm a capacidade de operações (pseudo)concorrentes,

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 4 Tipos de SO Prof.: Edilberto M. Silva http://www.edilms.eti.br SO - Prof. Edilberto Silva Os Sistemas Operacionais podem ser assim classificados: SO - Prof. Edilberto Silva

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 11 Sincronização de Processos Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso

Leia mais

Sistemas Operacionais Processos e Threads

Sistemas Operacionais Processos e Threads Sistemas Operacionais Processos e Threads Prof. Marcos Monteiro, MBA http://www.marcosmonteiro.com.br contato@marcosmonteiro.com.br 1 Estrutura de um Sistema Operacional 2 GERÊNCIA DE PROCESSOS Um processo

Leia mais

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira IFPE Disciplina: Sistemas Operacionais Prof. Anderson Luiz Moreira SERVIÇOS OFERECIDOS PELOS SOS 1 Introdução O SO é formado por um conjunto de rotinas (procedimentos) que oferecem serviços aos usuários

Leia mais

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008 Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,

Leia mais

Sincronização e Comunicação entre Processos. Adão de Melo Neto

Sincronização e Comunicação entre Processos. Adão de Melo Neto Sincronização e Comunicação entre Processos Adão de Melo Neto 1 INTRODUÇÃO Em um sistema multitarefa os processos alternam sua execução segundo critérios de escalonamento estabelecidos pelo sistema operacional.

Leia mais

Programação Paralela e Distribuída (DCC/UFRJ)

Programação Paralela e Distribuída (DCC/UFRJ) Programação Paralela e Distribuída (DCC/UFRJ) Aula 7: Programação com memória compartilhada usando OpenMP 1, 8, 10 e 15 de abril de 2015 OpenMP (Open MultiProcessing) Projetado para sistemas de memória

Leia mais

Arquitetura e Organização de Computadores I

Arquitetura e Organização de Computadores I Arquitetura e Organização de Computadores I Interrupções e Estrutura de Interconexão Prof. Material adaptado e traduzido de: STALLINGS, William. Arquitetura e Organização de Computadores. 5ª edição Interrupções

Leia mais

TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I Aula 01: Conceitos Iniciais / Sistema Operacional

TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I Aula 01: Conceitos Iniciais / Sistema Operacional TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I Aula 01: Conceitos Iniciais / Sistema Operacional O conteúdo deste documento tem por objetivo apresentar uma visão geral

Leia mais

Disciplina: Sistemas Operacionais - CAFW-UFSM Professor: Roberto Franciscatto

Disciplina: Sistemas Operacionais - CAFW-UFSM Professor: Roberto Franciscatto Disciplina: Sistemas Operacionais - CAFW-UFSM Professor: Roberto Franciscatto Introdução Processo cooperativo é aquele que pode afetar outros processos em execução no sistema Ou ser por eles afetado Processos

Leia mais

Aula 26: Arquiteturas RISC vs. CISC

Aula 26: Arquiteturas RISC vs. CISC Aula 26: Arquiteturas RISC vs CISC Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) Arquiteturas RISC vs CISC FAC 1 / 33 Revisão Diego Passos

Leia mais

Projeto de Sistemas de Tempo Real

Projeto de Sistemas de Tempo Real Projeto de Sistemas de Tempo Real Centro de Informática - Universidade Federal de Pernambuco Engenharia da Computação Kiev Gama kiev@cin.ufpe.br Slides elaborados pelo professor Marcio Cornélio O autor

Leia mais

Capítulo 8 Arquitetura de Computadores Paralelos

Capítulo 8 Arquitetura de Computadores Paralelos Capítulo 8 Arquitetura de Computadores Paralelos Necessidade de máquinas com alta capacidade de computação Aumento do clock => alta dissipação de calor Velocidade limitada dos circuitos => velocidade da

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Processos I: Threads, virtualização e comunicação via protocolos Prof. MSc. Hugo Souza Nesta primeira parte sobre os Processos Distribuídos iremos abordar: Processos e a comunicação

Leia mais

Sistemas Operacionais - Prof. Fabricio Alessi Steinmacher - email:fsteinmacher@gmail.com OBJETIVOS OPERACIONAIS. fsteinmacher@gmail.

Sistemas Operacionais - Prof. Fabricio Alessi Steinmacher - email:fsteinmacher@gmail.com OBJETIVOS OPERACIONAIS. fsteinmacher@gmail. SISTEMAS Introdução a Sistemas Operacionais Prof. Fabricio Alessi Steinmacher - email: OBJETIVOS Identificar as funções e os componentes de um Sistema Operacional; Diferenciar os tipos de Sistemas Operacionais

Leia mais

Sistemas Operativos. Threads. 3º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes (afernandes@unipiaget.cv)

Sistemas Operativos. Threads. 3º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes (afernandes@unipiaget.cv) Sistemas Operativos Threads 3º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes (afernandes@unipiaget.cv) Dos Processos para os Threads O conceito de thread foi introduzido na tentativa de

Leia mais

Introdução aos Sistemas

Introdução aos Sistemas Introdução Introdução aos Sistemas Operacionais 1 2 3... n Ambientes Operacionais Prof. Simão Sirineo Toscani stoscani@inf.pucrs.br www.inf.pucrs.br/~stoscani Compilador Editor de texto Browser Programas

Leia mais

Sistema Operacional. Processo e Threads. Prof. Dr. Márcio Andrey Teixeira Sistemas Operacionais

Sistema Operacional. Processo e Threads. Prof. Dr. Márcio Andrey Teixeira Sistemas Operacionais Sistema Operacional Processo e Threads Introdução a Processos Todos os computadores modernos são capazes de fazer várias coisas ao mesmo tempo. Enquanto executa um programa do usuário, um computador pode

Leia mais

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br LP II Estrutura de Dados Introdução e Linguagem C Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br Resumo da aula Considerações Gerais Introdução a Linguagem C Variáveis e C Tipos de

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Gerência de processos Controle e descrição de processos Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Sumário Representação e controle de processos pelo SO Estrutura

Leia mais

Arquiteturas RISC. (Reduced Instructions Set Computers)

Arquiteturas RISC. (Reduced Instructions Set Computers) Arquiteturas RISC (Reduced Instructions Set Computers) 1 INOVAÇÕES DESDE O SURGIMENTO DO COMPU- TADOR DE PROGRAMA ARMAZENADO (1950)! O conceito de família: desacoplamento da arquitetura de uma máquina

Leia mais

SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - Aula 5 PROCESSOS 1. INTRODUÇÃO Em sistemas distribuídos é importante examinar os diferentes tipos de processos e como eles desempenham seu papel. O conceito de um processo é originário do campo de sistemas

Leia mais

Remote Procedure Call. Programação distribuída e paralela (C. Geyer) RPC 1

Remote Procedure Call. Programação distribuída e paralela (C. Geyer) RPC 1 Remote Procedure Call Programação distribuída e paralela (C. Geyer) RPC 1 Autoria Autores C. Geyer Local II-UFRGS Versão V11.4 2014-2 Disciplinas SOII Programação distribuída e paralela (C. Geyer) RPC

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Consistência e Replicação Capítulo 7 Agenda Razões para Replicação Replicação como técnica de escalabilidade Modelos de Consistência centrados

Leia mais

GUILHERME STUTZ TÖWS ANIMAÇÃO DE ALGORITMOS

GUILHERME STUTZ TÖWS ANIMAÇÃO DE ALGORITMOS GUILHERME STUTZ TÖWS ANIMAÇÃO DE ALGORITMOS Trabalho de graduação do Curso de Ciência da Computação do Setor de Ciências Exatas da Universidade Federal do Paraná. Professor: André Luiz Pires Guedes CURITIBA

Leia mais

Sistema Operacional Correção - Exercício de Revisão

Sistema Operacional Correção - Exercício de Revisão Prof. Kleber Rovai 1º TSI 22/03/2012 Sistema Operacional Correção - Exercício de Revisão 1. Como seria utilizar um computador sem um sistema operacional? Quais são suas duas principais funções? Não funcionaria.

Leia mais

7 Processamento Paralelo

7 Processamento Paralelo 7 Processamento Paralelo Yes, of course, who has time? Who has time? But then if we do not ever take time, how can we ever have time? (The Matrix) 7.1 Introdução Classificação de Sistemas Paralelos Diversas

Leia mais

Revisão Ultima aula [1/2]

Revisão Ultima aula [1/2] SOP - TADS Comunicação Interprocessos - 2 IPC Prof. Ricardo José Pfitscher dcc2rjp@joinville.udesc.br Material cedido por: Prof. Rafael Rodrigues Obelheiro Prof. Maurício Aronne Pillon Revisão Ultima aula

Leia mais

Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org

Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org Breve Histórico A linguagem de programação C foi criada na década de 70, por Dennis Ritchie, que a implementou,

Leia mais

7 Processos. 7.1 Introdução

7 Processos. 7.1 Introdução 1 7 Processos 7.1 Introdução O conceito de processo é a base para a implementação de um sistema multiprogramável. O processador é projetado apenas para executar instruções, não se importando com qual programa

Leia mais

Computação Concorrente (MAB-117) Monitores

Computação Concorrente (MAB-117) Monitores Computação Concorrente (MAB-117) Monitores Prof. Silvana Rossetto 1 Departamento de Ciência da Computação (DCC) Instituto de Matemática (IM) Universidade Federal do Rio de Janeiro (UFRJ) Maio de 2012 1.

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Aula 3 Msc. Daniele Carvalho Oliveira Doutoranda em Ciência da Computação - UFU Mestre em Ciência da Computação UFU Bacharel em Ciência da Computação - UFJF Processos Um processo

Leia mais

Componentes do Computador e. aula 3. Profa. Débora Matos

Componentes do Computador e. aula 3. Profa. Débora Matos Componentes do Computador e modelo de Von Neumann aula 3 Profa. Débora Matos O que difere nos componentes que constituem um computador? Princípios básicos Cada computador tem um conjunto de operações e

Leia mais

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 04 - Concorrência. Cursos de Computação

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 04 - Concorrência. Cursos de Computação Cursos de Computação Sistemas Operacionais Prof. M.Sc. Sérgio Teixeira Aula 04 - Concorrência Referência: MACHADO, F.B. ; MAIA, L.P. Arquitetura de Sistemas Operacionais. 4.ed. LTC, 2007. Mono x Multiprogramação

Leia mais

Sistemas Operacionais

Sistemas Operacionais UNIVERSIDADE BANDEIRANTE DE SÃO PAULO INSTITUTO POLITÉCNICO CURSO DE SISTEMAS DE INFORMAÇÃO Sistemas Operacionais Notas de Aulas: Tópicos 7 e 8 Estrutura do Sistema Operacional São Paulo 2009 1 Sumário

Leia mais

Arquitetura de Computadores. Tipos de Instruções

Arquitetura de Computadores. Tipos de Instruções Arquitetura de Computadores Tipos de Instruções Tipos de instruções Instruções de movimento de dados Operações diádicas Operações monádicas Instruções de comparação e desvio condicional Instruções de chamada

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Sistemas de Entrada/Saída Princípios de Software Sistema de Entrada/Saída Princípios de Software Tratadores (Manipuladores) de Interrupções Acionadores de Dispositivos (Device Drivers)

Leia mais

PROCESSOS. Prof. Maicon A. Sartin mapsartin@gmail.com

PROCESSOS. Prof. Maicon A. Sartin mapsartin@gmail.com PROCESSOS Prof. Maicon A. Sartin mapsartin@gmail.com Cenários em Sistemas Multitarefas Um usuário pode executar diversas atividades simultâneas Música Editoração de texto Navegar na Internet Servidor pode

Leia mais

BANCO DE DADOS. Introdução a Banco de Dados. Conceitos BásicosB. Engenharia da Computação UNIVASF. Aula 1. Breve Histórico

BANCO DE DADOS. Introdução a Banco de Dados. Conceitos BásicosB. Engenharia da Computação UNIVASF. Aula 1. Breve Histórico Banco de Dados // 1 Banco de Dados // 2 Conceitos BásicosB Engenharia da Computação UNIVASF BANCO DE DADOS Aula 1 Introdução a Banco de Dados Campo representação informatizada de um dado real / menor unidade

Leia mais

6 - Gerência de Dispositivos

6 - Gerência de Dispositivos 1 6 - Gerência de Dispositivos 6.1 Introdução A gerência de dispositivos de entrada/saída é uma das principais e mais complexas funções do sistema operacional. Sua implementação é estruturada através de

Leia mais

3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias:

3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias: Arquitetura de Computadores Estrutura e Funcionamento da CPU Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Revisão dos conceitos básicos O processador é o componente vital do sistema de

Leia mais

Recursos. Um recurso é ou um dispositivo físico (dedicado) do hardware, ou Solicitar o recurso: esperar pelo recurso, até obtê-lo.

Recursos. Um recurso é ou um dispositivo físico (dedicado) do hardware, ou Solicitar o recurso: esperar pelo recurso, até obtê-lo. Um recurso é ou um dispositivo físico (dedicado) do hardware, ou um conjunto de informações, que deve ser exclusivamente usado. A impressora é um recurso, pois é um dispositivo dedicado, devido ao fato

Leia mais

NOTAS DE AULA Prof. Antonio Carlos Schneider Beck Filho (UFSM) Prof. Júlio Carlos Balzano de Mattos (UFPel) Arquitetura de Von Neumann

NOTAS DE AULA Prof. Antonio Carlos Schneider Beck Filho (UFSM) Prof. Júlio Carlos Balzano de Mattos (UFPel) Arquitetura de Von Neumann Universidade Federal de Santa Maria NOTAS DE AULA Prof. Antonio Carlos Schneider Beck Filho (UFSM) Prof. Júlio Carlos Balzano de Mattos (UFPel) Arquitetura de Von Neumann O modelo (ou arquitetura) de von

Leia mais

SISTEMAS OPERACIONAIS. Apostila 03 Estrutura do Sistema Operacional UNIBAN

SISTEMAS OPERACIONAIS. Apostila 03 Estrutura do Sistema Operacional UNIBAN SISTEMAS OPERACIONAIS Apostila 03 Estrutura do Sistema Operacional UNIBAN 1.0 O Sistema Operacional como uma Máquina Virtual A arquitetura (conjunto de instruções, organização de memória, E/S e estrutura

Leia mais

Organização de Computadores 1

Organização de Computadores 1 Organização de Computadores 1 4 SUPORTE AO SISTEMA OPERACIONAL Prof. Luiz Gustavo A. Martins Sistema Operacional (S.O.) Programa responsável por: Gerenciar os recursos do computador. Controlar a execução

Leia mais

Programação distribuída e paralela (C. Geyer) RPC 1

Programação distribuída e paralela (C. Geyer) RPC 1 Programação distribuída e paralela (C. Geyer) RPC 1 Autores C. Geyer Local II-UFRGS Versão v6 2008-2 Disciplinas SOII Programação distribuída e paralela (C. Geyer) RPC 2 Bibliografia base original dos

Leia mais

Processos. Adão de Melo Neto

Processos. Adão de Melo Neto Processos Adão de Melo Neto 1 EXECUTE O SEGUINTE Baixa a aula dos dias 20 MAR 15 e 08 MAI 15 e salve no computador. Feche o browser Inicialize o vmware player e inicialize a máquina virtual ubuntu Inicialize

Leia mais

MODELAGEM E SIMULAÇÃO

MODELAGEM E SIMULAÇÃO MODELAGEM E SIMULAÇÃO Professor: Dr. Edwin B. Mitacc Meza edwin@engenharia-puro.com.br www.engenharia-puro.com.br/edwin Terminologia Básica Utilizada em de Sistemas Terminologia Básica Uma série de termos

Leia mais

Sistema Operacional. Prof. Leonardo Barreto Campos 1

Sistema Operacional. Prof. Leonardo Barreto Campos 1 Sistema Operacional Prof. Leonardo Barreto Campos 1 Sumário Introdução; Tipos de Sistemas Operacionais; Escalonamento; Gerenciamento de Memória; Bibliografia. Prof. Leonardo Barreto Campos 2/25 Introdução

Leia mais

Figura 01 Kernel de um Sistema Operacional

Figura 01 Kernel de um Sistema Operacional 01 INTRODUÇÃO 1.5 ESTRUTURA DOS SISTEMAS OPERACIONAIS O Sistema Operacional é formado por um Conjunto de rotinas (denominado de núcleo do sistema ou kernel) que oferece serviços aos usuários e suas aplicações

Leia mais

Sistemas Operacionais. Conceitos de um Sistema Operacional

Sistemas Operacionais. Conceitos de um Sistema Operacional Sistemas Operacionais Conceitos de um Sistema Operacional Modo usuário e Modo Kernel Como já vimos são ambientes de execução diferentes no processador Há um conjunto de funções privilegiadas acessadas

Leia mais

SISTEMAS OPERACIONAIS II ESPECIFICAÇÃO CAMADA INDEPENDENTE

SISTEMAS OPERACIONAIS II ESPECIFICAÇÃO CAMADA INDEPENDENTE ANDRÉ LUCHESI CESAR HENRIQUE KÁLLAS SISTEMAS OPERACIONAIS II ESPECIFICAÇÃO CAMADA INDEPENDENTE Pontifícia Universidade Católica de Campinas Faculdade de Engenharia de Computação Turma III Grupo 9 Agosto

Leia mais

Sistemas Operacionais Aula 03: Estruturas dos SOs. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com

Sistemas Operacionais Aula 03: Estruturas dos SOs. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Sistemas Operacionais Aula 03: Estruturas dos SOs Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com OBJETIVOS Descrever os serviços que um sistema operacional oferece aos usuários e outros sistemas

Leia mais

Comunicação em Sistemas Distribuídos. Conceitos: Paradigma C/S. Conceitos: Paradigma C/S. Paradigma Cliente/Servidor

Comunicação em Sistemas Distribuídos. Conceitos: Paradigma C/S. Conceitos: Paradigma C/S. Paradigma Cliente/Servidor Comunicação em Sistemas Distribuídos Paradigma / Os processos em um SD estão lógica e fisicamente separados. Precisam se comunicar para que possam interagir O desempenho de um SD depende criticamente do

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Processos- Clientes, Servidores, Migração Capítulo 3 Agenda Clientes Interfaces de usuário em rede Sistema X Window Software do lado cliente para

Leia mais

BARRAMENTO DO SISTEMA

BARRAMENTO DO SISTEMA BARRAMENTO DO SISTEMA Memória Principal Processador Barramento local Memória cachê/ ponte Barramento de sistema SCSI FireWire Dispositivo gráfico Controlador de vídeo Rede Local Barramento de alta velocidade

Leia mais

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Conceitos básicos e serviços do Sistema Operacional Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Tipos de serviço do S.O. O S.O.

Leia mais

Introdução à Linguagem Java

Introdução à Linguagem Java Introdução à Linguagem Java Histórico: Início da década de 90. Pequeno grupo de projetos da Sun Microsystems, denominado Green. Criar uma nova geração de computadores portáveis, capazes de se comunicar

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação Introdução a Linguagem C Construções Básicas Programa em C #include int main ( ) { Palavras Reservadas } float celsius ; float farenheit ; celsius = 30; farenheit = 9.0/5

Leia mais

Modelagem de Sistemas

Modelagem de Sistemas Modelagem de Sistemas Em muitas áreas de estudo, um fenômeno não é estudado diretamente, mas através de um modelo. Um modelo é uma representação, freqüentemente em termos matemáticos, do que parecem ser

Leia mais