Notas da Aula 4 - Fundamentos de Sistemas Operacionais
|
|
- Jerónimo Alencastre Leveck
- 8 Há anos
- Visualizações:
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 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 maisProcessos 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 maisSISTEMAS 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 maisSistemas 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 maisIFPE. 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 maisNotas 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 maisRecursos. 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 maisSistemas 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 maisSistemas 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 maisTabela 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 maisOrientação a Objetos
1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou
Leia maisSISTEMAS 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 maisProf.: 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 maisBACHARELADO 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 maisNotas 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 maisHardware (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 maisEXEMPLO: 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 maisUdesc/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 maisSistemas 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 maisSistemas 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 mais28/9/2010. Unidade de Controle Funcionamento e Implementação
Arquitetura de Computadores Unidade de Controle Funcionamento e Implementação Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Operação da Unidade de Controle Unidade de controle: parte do
Leia maisEsta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi
5 Conclusão Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi permitir que scripts Lua instanciem e usem
Leia maisSistemas 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 maisEntendendo como funciona o NAT
Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços
Leia maisCapacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB
Calculando a capacidade de disco: Capacidade = (# bytes/setor) x (méd. # setores/trilha) x (# trilhas/superfície) x (# superfícies/prato) x (# pratos/disco) Exemplo 01: 512 bytes/setor 300 setores/trilha
Leia maisTipos 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 maisArquitetura 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 maisIntroduçã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 maisOrganizaçã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 maisSistemas 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 mais7 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 maisSincronizaçã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 maisSistemas 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 maisConceitos de Sistemas Operacionais: Chamadas de Sistema. Prof Rafael J. Sandim
Conceitos de Sistemas Operacionais: Chamadas de Sistema Prof Rafael J. Sandim Conceitos de Sistema Operacional Interface entre o SO e os Programas de usuário é definida pelo conjunto de instruções estendidas
Leia maisDadas a base e a altura de um triangulo, determinar sua área.
Disciplina Lógica de Programação Visual Ana Rita Dutra dos Santos Especialista em Novas Tecnologias aplicadas a Educação Mestranda em Informática aplicada a Educação ana.santos@qi.edu.br Conceitos Preliminares
Leia maisSistema 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 maisSistemas 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 maisSISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com
- Aula 2-1. PRINCÍPIOS DE SOFTWARE DE ENTRADA E SAÍDA (E/S) As metas gerais do software de entrada e saída é organizar o software como uma série de camadas, com as mais baixas preocupadas em esconder as
Leia maisProf.: Roberto Franciscatto. Capítulo 1.2 Aspectos Gerais
Sistemas Operacionais Prof.: Roberto Franciscatto Capítulo 1.2 Aspectos Gerais Estrutura do Sistema Operacional Principais Funções do Sistema Operacional Tratamento de interrupções e exceções Criação e
Leia maisProcessos. 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 maisIMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET
1 IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET Daniel da Silva Carla E. de Castro Franco Diogo Florenzano Avelino daniel.silva1@ext.mpsa.com
Leia mais3. O NIVEL DA LINGUAGEM DE MONTAGEM
3. O NIVEL DA LINGUAGEM DE MONTAGEM Nas aulas anteriores tivemos a oportunidade de discutir dois diferentes níveis presentes na maioria dos computadores atuais. Nesta aula dedica-se a outro nível que também
Leia maisLP 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 maiswww.nddigital.com.br Manual de Administração DPS Printer 2.1 NDDigital S/A - Software
www.nddigital.com.br Manual de Administração DPS Printer 2.1 NDDigital S/A - Software 2 Introdução Este manual foi elaborado para administradores, para entendimento do funcionamento do produto e administração
Leia maisArquitetura 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 maisComputadores XXI: Busca e execução Final
Computadores XXI: Busca e execução Final A6 Texto 6 http://www.bpiropo.com.br/fpc20060123.htm Sítio Fórum PCs /Colunas Coluna: B. Piropo Publicada em 23/01/2006 Autor: B.Piropo Na coluna anterior, < http://www.forumpcs.com.br/viewtopic.php?t=146019
Leia maisFundamentos de Sistemas Operacionais
Fundamentos de Sistemas Operacionais Aula 4: Programação Concorrente Diego Passos Últimas Aulas Processos Compostos por: Código (programa). Estado (memória, registradores). Em um sistema com multiprogramação:
Leia mais28/9/2010. Paralelismo no nível de instruções Processadores superescalares
Arquitetura de Computadores Paralelismo no nível de instruções Processadores superescalares Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Processadores superescalares A partir dos resultados
Leia maisSistemas Operacionais Gerência de Dispositivos
Universidade Estadual de Mato Grosso do Sul UEMS Curso de Licenciatura em Computação Sistemas Operacionais Gerência de Dispositivos Prof. José Gonçalves Dias Neto profneto_ti@hotmail.com Introdução A gerência
Leia maisProf. 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 maisAula 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 maisSistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com
Sistemas Operacionais Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Estruturas de Sistemas de Computação O sistema operacional precisa garantir a operação correta do sistema de computação. Operação
Leia maisMODELO CLIENTE SERVIDOR
SISTEMAS DISTRIBUÍDOS Modelo Cliente Servidor Modelo que estrutura um S.O. como um grupo de processos cooperantes, chamados servidores, que oferecem serviços a processos usuários, denominados clientes;
Leia maisSistemas 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 maisGrupo I [4v] b. [0,6v] De que forma é que o escalonador do Linux tenta minimizar o impacto desta limitação?
Número: Nome: LEIC/LERC 2011/12-2º Exame de Sistemas Operativos 3/Fevereiro/2012 Responda no enunciado, apenas no espaço fornecido. Identifique todas as folhas. Duração: 2h30m Grupo I [4v] 1. [0,6v] A
Leia maisCAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM
CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM 71 Introdução Difere dos níveis inferiores por ser implementado por tradução A tradução é usada quando um processador está disponível para uma mensagem fonte mas
Leia maisTRANSMISSÃO DE DADOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com
- Aula 5-1. A CAMADA DE TRANSPORTE Parte 1 Responsável pela movimentação de dados, de forma eficiente e confiável, entre processos em execução nos equipamentos conectados a uma rede de computadores, independentemente
Leia maisSistemas Operacionais
Sistemas Operacionais Aula 13 Gerência de Memória Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso Sumário
Leia maisINTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO
Capítulo 1 INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO 1.1 Histórico de Linguagens de Programação Para um computador executar uma dada tarefa é necessário que se informe a ele, de uma maneira clara, como ele
Leia maisFaculdades Santa Cruz - Inove. Plano de Aula Base: Livro - Distributed Systems Professor: Jean Louis de Oliveira.
Período letivo: 4 Semestre. Quinzena: 5ª. Faculdades Santa Cruz - Inove Plano de Aula Base: Livro - Distributed Systems Professor: Jean Louis de Oliveira. Unidade Curricular Sistemas Distribuídos Processos
Leia maisArquiteturas 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 maisMODELAGEM 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 maisConsiderações no Projeto de Sistemas Cliente/Servidor
Cliente/Servidor Desenvolvimento de Sistemas Graça Bressan Graça Bressan/LARC 2000 1 Desenvolvimento de Sistemas Cliente/Servidor As metodologias clássicas, tradicional ou orientada a objeto, são aplicáveis
Leia maisProgramaçã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 maisProgramaçã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 maisComunicaçã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 maisSistemas Operacionais
Sistemas Operacionais Aula 6 Estrutura de Sistemas Operacionais Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso
Leia maisIntrodução ao Modelos de Duas Camadas Cliente Servidor
Introdução ao Modelos de Duas Camadas Cliente Servidor Desenvolvimento de Sistemas Cliente Servidor Prof. Esp. MBA Heuber G. F. Lima Aula 1 Ciclo de Vida Clássico Aonde estamos? Page 2 Análise O que fizemos
Leia maisPermitir a troca de mensagens de texto entre os dois alunos; Permitir que um aluno enviasse para o outro uma cópia de prova;
Software Básico 2008.2 Trabalho Prático 1: programação de E/S, uso de sinais Prática de programação voltada a eventos Trabalho individual ou em dupla Data de entrega: 01/10/2008 1 O Objetivo Utilizando
Leia mais1.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 mais5 Mecanismo de seleção de componentes
Mecanismo de seleção de componentes 50 5 Mecanismo de seleção de componentes O Kaluana Original, apresentado em detalhes no capítulo 3 deste trabalho, é um middleware que facilita a construção de aplicações
Leia maisSistemas 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 maisPersistência de Dados
Persistência de s Universidade do Estado de Santa Catarina - Udesc Centro de Ciências Tecnológicas - CCT Departamento de Ciência da Computação Tecnologia de Sistemas de Informação Estrutura de s II - DAD
Leia maisdiscos impressora CPU memória AULA 04 - Estruturas de Sistemas Computacionais Operação dos sistemas de computação Controlador de disco
AULA 04 - Estruturas Sistemas Computacionais Nosso objetivo é apenas revisar conceitos relacionados a estrutura geral um sistema computacional para pois explicarmos os talhes operação do sistema e como
Leia maisTipos de Servidores. Servidores com estado
Tipos de Servidores Com Estado X Sem Estado Sequenciais X Concorrentes Com Conexão X Sem Conexão Servidores com estado Servidores com estado armazenam informação sobre cada cliente. Operações podem ser
Leia maisSumário. Deadlock. Definição. Recursos. M. Sc. Luiz Alberto lasf.bel@gmail.com
Sumário Condições para Ocorrência de Modelagem de Evitando deadlock Algoritmo do banqueiro M. Sc. Luiz Alberto lasf.bel@gmail.com Aula - SO 1 Definição Um conjunto de N processos está em deadlock quando
Leia mais5 Estudo de caso: utilizando o sistema para requisição de material
61 5 Estudo de caso: utilizando o sistema para requisição de material A fim de avaliar as características da arquitetura proposta e a corretude da implementação, realizamos experiências com cenários de
Leia maisArquitetura de Rede de Computadores
TCP/IP Roteamento Arquitetura de Rede de Prof. Pedro Neto Aracaju Sergipe - 2011 Ementa da Disciplina 4. Roteamento i. Máscara de Rede ii. Sub-Redes iii. Números Binários e Máscara de Sub-Rede iv. O Roteador
Leia maisFigura 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 maisDesenvolvendo Websites com PHP
Desenvolvendo Websites com PHP Aprenda a criar Websites dinâmicos e interativos com PHP e bancos de dados Juliano Niederauer 19 Capítulo 1 O que é o PHP? O PHP é uma das linguagens mais utilizadas na Web.
Leia maisCOMPILADORES E INTERPRETADORES
Aula 16 Arquitetura de Computadores 12/11/2007 Universidade do Contestado UnC/Mafra Curso Sistemas de Informação Prof. Carlos Guerber COMPILADORES E INTERPRETADORES Um compilador transforma o código fonte
Leia maisARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.
Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 8 ARRAYS Introdução Até agora, utilizamos variáveis individuais. Significa que uma variável objeto
Leia maisPrincípios de funcionamento dos computadores
Princípios de funcionamento dos computadores Objetivos da aula: - Entender o princípio de funcionamento dos computadores - Entender o conceito de programa e sua dinâmica de execução Tópicos da aula: -
Leia maisBanco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados
Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Um Sistema Gerenciador de Banco de Dados (SGBD) é constituído por um conjunto de dados associados a um conjunto de programas para acesso a esses
Leia maisSISTEMAS OPERACIONAIS
SISTEMAS OPERACIONAIS Tópico 4 Estrutura do Sistema Operacional Prof. Rafael Gross prof.rafaelgross@fatec.sp.gov.br FUNÇÕES DO NUCLEO As principais funções do núcleo encontradas na maioria dos sistemas
Leia maisUML Aula III Diagramas de Estado, Atividades, Componentes e Instalação
UML Aula III Diagramas de Estado, Atividades, Componentes e Instalação Ricardo Argenton Ramos Engenharia de Software II 2013.1 Diagrama de Estado Um diagrama de estados (statechart), também conhecido por
Leia maisSistemas 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 maisE/S PROGRAMADA E/S PROGRAMADA E/S USANDO INTERRUPÇÃO
E/S PROGRAMADA QUANDO A CPU FAZ TODO O TRABALHO RELACIONADO A UMA OPERAÇÃO DE E/S, NO CASO DO PROCESSO QUERER IMPRIMIR (NA IMPRESSORA) ABCDEFGH : ESTES CARACTERES SÃO COLOCADOS EM UMA ÁREA DE MEMÓRIA DO
Leia maisArquitetura de Computadores I
Arquitetura de Computadores I Pipeline Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Organização do MIPS: pipeline Visão geral do pipeline Analogia com uma Lavanderia doméstica 1
Leia maisESTUDO DE CASO WINDOWS VISTA
ESTUDO DE CASO WINDOWS VISTA História Os sistemas operacionais da Microsoft para PCs desktop e portáteis e para servidores podem ser divididos em 3 famílias: MS-DOS Windows baseado em MS-DOS Windows baseado
Leia maisSistemas Operacionais
AULA 09 Sincronização de Processos - II Monitores Conforme comentamos, o uso equivocado dos semáforos pode levar a uma situação de deadlock, por isso devemos tomar cuidado ao programar utilizando este
Leia maisARQUITETURA DE COMPUTADORES - 1866
7 Unidade Central de Processamento (UCP): O processador é o componente vital do sistema de computação, responsável pela realização das operações de processamento e de controle, durante a execução de um
Leia maisDispositivos de Entrada e Saída
SEL-0415 Introdução à Organização de Computadores Dispositivos de Entrada e Saída Aula 9 Prof. Dr. Marcelo Andrade da Costa Vieira ENTRADA e SAÍDA (E/S) (I/O - Input/Output) n Inserção dos dados (programa)
Leia mais