Arquitetura de Sistemas Operativos
|
|
- Ana Luiza Benevides das Neves
- 6 Há anos
- Visualizações:
Transcrição
1 Arquitetura de Sistemas Operativos Sistemas Operativos 2011/2012
2 1
3 Necessidade das As tarefas que se executam em paralelo não são normalmente independentes, tendo de se sincronizar para poderem executar um algoritmo global comum. Existem diversos motivos que justificam a necessidade de sincronizar explicitamente essas tarefas. Para simplificar a sua análise agrupamo-los em duas categorias: competição de várias tarefas por um determinado recurso e cooperação entre tarefas.
4 Considere-se o exemplo seguinte: uma conta bancária a que várias tarefas pretendem aceder ou atualizar. O código seguinte mostra uma função em linguagem C, que poderia fazer parte de um programa que permite efetuar várias operações de índole bancária.
5 Função que permite levantar dinheiro de uma conta bancária struct { int saldo; } conta t; int levantar dinheiro (conta t* conta, int valor) { if (conta > saldo >= valor) conta > saldo = conta > saldo - valor; else valor = -1; /* -1 indica erro ocorrido */ return valor; }
6 Esta função suporta uma funcionalidade similar à que encontramos disponibilizada nas máquinas multibanco: levantar dinheiro. Na realidade, os sistemas bancários não funcionam desta forma, mas poderíamos conceptualmente considerar que existia um servidor no banco que executava os pedidos vindos de uma máquina multibanco e que, a cada pedido, dedicava uma tarefa de modo a suportar paralelismo no atendimento. Os servidores bancários seriam assim implementados de forma a servir os pedidos efetuados pelas máquinas multibanco em paralelo, portanto, o código em causa seria executado por várias tarefas concorrentemente.
7 A operação descrita na função anterior permite efetuar um débito, no valor indicado pelo segundo argumento da função, numa conta identificada pelo primeiro argumento (referência para uma zona de memória do tipo conta t). O objeto referenciado pelo argumento conta tem um campo denominado saldo cujo valor corresponde ao saldo da conta em causa. Considerando a função numa óptica de programação sequencial, esta não tem qualquer erro.
8 Obviamente, é crucial que todas as operações bancárias sejam efetuadas de modo a que seja assegurada a sua consistência em termos financeiros. Como o programa é concorrente, o que se pretende é que, apesar de existirem várias tarefas, o funcionamento do sistema seja equivalente ao que se obteria caso as tarefas se executassem sequencialmente. Em particular, não deverá ocorrer, em nenhuma circunstância, uma situação em que seja permitido efetuar débitos não contabilizados ou para os quais não haja saldo disponível. Vamos ver um exemplo onde tal sucede.
9 Suponhamos que existe uma conta solidária com dois membros que a podem movimentar livremente e que ambos tentam ao mesmo tempo, em máquinas multibanco distintas, levantar uma determinada quantia de dinheiro. Portanto, a referida função é invocada concorrentemente por duas tarefas (dentro do processo servidor bancário) em que cada uma serve um pedido de débito sobre a mesma conta. Numa observação menos atenta podemos ser levados a concluir que não há nenhum problema resultante desta situação, no entanto, uma observação mais cuidada leva-nos à conclusão oposta.
10 Com efeito, considerando que neste exemplo temos duas tarefas que executam o código em causa, e que o código if (... ).. else... corresponde de facto a várias instruções que são executadas de forma sequencial pelo processador, pode suceder a situação ilustrada na figura seguinte que apresenta a evolução temporal das instruções executadas pelas duas tarefas.
11
12 A tarefa T2 executou o código da função levantar dinheiro de forma intercalada com a tarefa T1. Como se pode observar, esta comutação de tarefas ocorre de tal forma que, logo após o teste efetuado por T1, esta perde o processador para T2. A instrução que T1 executa como resultado do teste só é de facto executada depois de T2 ter executado, na totalidade, a função levantar dinheiro, ou seja, como T1 tinha efetuado o teste, não o vai repetir quando o despacho a selecionar novamente, uma vez que o program counter já referencia a instrução seguinte.
13 Nestas circunstâncias, assumindo que o saldo inicial tinha o valor 100 e que as duas operações de levantamento pretendiam retirar da conta respectivamente 30 por T1 e 90 por T2, o que sucederia é que no teste inicial de T1, 100>=30 era verdadeiro, em seguida na tarefa T2 o teste também era válido porque 100>=90 uma vez que o valor do saldo não tinha sido subtraído da quantia a levantar em T1. No final o valor do saldo da conta em causa seria: = -20 Portanto, teria sido permitido um levantamento sem que houvesse cobertura para tal.
14 À primeira vista, esta situação de intercalação das tarefas T1 e T2 pode parecer forçada: T1 perde o processador imediatamente após ter efetuado o teste if (conta>saldo>=valor) e antes de executar a instrução seguinte. No entanto, isso não é verdade por duas razões: Primeiro, na aplicação em causa teremos inúmeras execuções desta função pelo que a probabilidade de vir a acontecer a referida intercalação é relevante. Segundo, cada instrução na linguagem C resulta, de facto, em várias instruções máquina executadas pelo processador.
15 A razão que está na base deste funcionamento erróneo é o facto de estarmos a considerar um sistema operativo multiprogramado no qual é perfeitamente possível que a tarefa T1 perca o processador (e.g., o seu time-slice esgotou-se), a meio da função em causa e, que a tarefa T2 seja, em seguida, escalonada pelo sistema operativo. O erro existe porque o bloco de código deveria ser executado na sua totalidade pela tarefa T1 e só depois pela tarefa T2 (ou vice-versa) uma vez que ambas acedem à mesma conta.
16 Ou seja, as instruções deveriam ser executadas em exclusão mútua ou, dito de outra maneira, de forma indivisível ou atómica. O bloco de código em causa é então designado como uma secção crítica.
17 De uma forma geral, o problema apresentado ocorre quando uma tarefa testa uma variável e, em função do seu valor, decide ou não modificá-la. Pode suceder que outra tarefa, que entretanto se executa concorrentemente, decida também testá-la. A execução do programa torna-se incoerente dado que sucedeu algo não previsto no modelo de programação sequencial pois a variável mudou de valor, depois do teste, através de uma ação exterior.
18 Para que fique claro este aspeto fundamental da sincronização, é apresentado em seguida um segundo exemplo que nos vai permitir ilustrar diversos conceitos de sincronização. Consideremos um alocador de memória (programa para reservar blocos de memória) muito simples num sistema concorrente. As tarefas que pretendam reservar memória invocam as funções deste alocador.
19 O algoritmo de atribuição de blocos de memória é suportado por uma estrutura de dados implementada por uma pilha. Os elementos da pilha indicam o endereço inicial do bloco de memória. Para simplificar o algoritmo, vamos supor: que todos os blocos são idênticos, com um tamanho definido inicialmente; as tarefas apenas podem pedir blocos completos, não fazendo o sistema qualquer subdivisão dos blocos. O código na linguagem C correspondente a este alocador de memória é apresentado de seguida.
20 Funções de um alocador de memória simplificado #define MAX PILHA 100 char* pilha [MAX PILHA]; int topo = MAX PILHA - 1; char* PedeMem () { ptr = pilha[topo]; topo ; return ptr; } void DevolveMem (char* ptr) { topo++; pilha[topo]= ptr; }
21 Para pedir um bloco de memória, uma tarefa executa a função PedeMem que tem como parâmetro de saída o apontador para o bloco de memória. Para devolver a zona de memória ao alocador, chama a função DevolveMem.
22 Como foi referido anteriormente, a estrutura de dados é uma pilha implementada da forma mais simples: através de um vector de apontadores indexado por uma variável que referencia o apontador para o próximo bloco de memória a atribuir. Pilha e topo são variáveis globais do programa alocador de memória, que são convenientemente inicializadas no início da execução.
23 Aparentemente, a estrutura anterior funciona de acordo com o objetivo pretendido. Contudo, se analisarmos com maior detalhe o programa, detetamos novamente problemas resultantes da concorrência entre as diversas tarefas. Com efeito, suponhamos que uma tarefa T1 inicia a devolução de memória mas, devido a uma interrupção, é-lhe retirado o processador (e.g., imediatamente após a instrução topo++).
24 Consideremos que a tarefa T2 que se executa em seguida pretende pedir memória. Neste caso somos conduzidos a uma situação que originará um erro no funcionamento do sistema: o endereço do bloco de memória que a tarefa T2 obtém é inválido; a tarefa T1 apenas tinha incrementado a variável topo e não tinha ainda actualizado o apontador que ela passou a referenciar; o apontador que estará no bloco pode ser inválido ou corresponder a um bloco de memória que foi atribuído a outra tarefa anteriormente.
25 Outras situações de potencial erro aparecem na função PedeMem se for interrompida antes de decrementar a variável topo. Estes exemplos podem parecer forçados, pois pressupõem uma certa sequência de acontecimentos.
26 No entanto, é preciso considerar que as operações em causa (e.g., levantar dinheiro ou pedir e devolver memória): podem ser executadas milhões de vezes no decorrer da vida de um sistema e que, mesmo para um encadeamento da execução das tarefas com pequena probabilidade, existe a possibilidade de ela vir a verificar-se, reforçado pelo facto de as interrupções que provocam a comutação das tarefas serem servidas depois de qualquer instrução máquina e não depois das instruções de C.
27 É ainda de considerar que um erro deste tipo pode ter uma caraterística aparentemente aleatória (aparece de tempos a tempos), o que o torna extremamente difícil de detetar. Esta aleatoriedade está na base da denominação destes erros como Heisenbugs 1, por analogia com o princípio da incerteza de Heisenberg. 1
28 É importante identificar claramente a origem dos erros que se verificam nos exemplos anteriores. No que diz respeito ao exemplo do alocador de memória, a tarefa T2 utiliza um apontador de memória que não é válido, porque o valor da variável topo não está coerente com o estado da tabela pilha. As duas variáveis representam o estado global do alocador de memória e a sua modificação não foi feita de forma atómica, conduzindo a que o estado da pilha seja incoerente. Estas variáveis têm de ser atualizadas em conjunto, não se podendo permitir atualizações parciais.
29 Em conclusão, em programação concorrente sempre que se testa e se modifica estruturas de dados partilhadas (uma simples variável, tabelas ou estruturas dinâmicas) é necessário garantir que as operações são executadas dentro de uma secção crítica. Esta caraterística tem a ver com o mecanismo de base de suporte à multiprogramação e, portanto, é intrínseca a todos os sistemas operativos.
30 Em programação concorrente sempre que se testam ou se modificam estruturas de dados partilhados é necessário efetuá-lo dentro de uma secção crítica.
31 Avaliação - Trabalho Teórico-Prático 9 Escreve um pequeno texto onde resume os slides anteriores. Neste trabalho o objetivo é explicar, de uma forma concreta e expĺıcita, os problemas que podem ocorrer em programação concorrente. O texto deverá: ser elaborado em grupo; enviado por ao professor no final da aula; e deverá conter entre 200 a 300 palavras.
Arquitetura de Sistemas Operativos
Arquitetura de Sistemas Operativos Sistemas Operativos 2011/2012 1 Requisitos de uma Secção Crítica Requisitos de uma Secção Crítica Antes de analisarmos as várias soluções para assegurar que um bloco
Leia maisExecução Concorrente
Sincronização Parte I Primitivas de Sincronização Sistemas Operativos 2015 / 2016 Execução Concorrente struct { int saldo; /* outras variáveis,ex. nome do titular, etc. */ conta_t; int levantar_dinheiro
Leia maisSistemas Operativos. Objetivo. Entrega do Questionário. Exercício 1. Exercício 2. Exercício 3. Exercício 4. Grupo 1 Introdução
Sistemas Operativos Objetivo O objetivo deste questionário é levá-lo a rever os conceitos básicos dos sistemas operativos, bem como os algoritmos de scheduling e mecanismos de sincronização estudados.
Leia maisArquitetura de Sistemas Operativos
Arquitetura de Sistemas Operativos Sistemas Operativos 2011/2012 1 Algoritmo de Lamport (Bakery Algorithm) Algoritmo de Dekker Podemos melhorar o algoritmo visto na aula anterior usando mais uma variável
Leia maisUNIVERSIDADE LUSÓFONA DE HUMANIDADES E TECNOLOGIAS C SISTEMAS OPERATIVOS
UNIVERSIDADE LUSÓFONA DE HUMANIDADES E TECNOLOGIAS C1203 - SISTEMAS OPERATIVOS 2º Semestre 2005/2006 27/7/2007 Resolução 1. Identifique três situações em que ocorra uma transição do modo de execução utilizador
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 maisUNIVERSIDADE LUSÓFONA DE HUMANIDADES E TECNOLOGIAS CURSO DE ENGENHARIA ELECTROTÉCNICA
UNIVERSIDADE LUSÓFONA DE HUMANIDADES E TECNOLOGIAS CURSO DE ENGENHARIA ELECTROTÉCNICA 2º Semestre 2005/2006 Programação de Sistemas 13/7/2006 Seja objectivo, utilizando respostas curtas e directas, e justifique
Leia maisExecução Concorrente
Sincronização Parte I Primitivas de Sincronização Sistemas Operativos 2011 / 2012 Execução Concorrente struct { int saldo; /* outras variáveis,ex. nome do titular, etc. */ conta_t; int levantar_dinheiro
Leia maisLEIC/LERC 2009/10 Repescagem do 1º Teste de Sistemas Operativos
Número: Nome: LEIC/LERC 2009/10 Repescagem do 1º Teste de Sistemas Operativos 2 de Fevereiro de 2010 Responda no enunciado, apenas no espaço fornecido. Identifique todas as folhas. Duração: 1h30m Grupo
Leia maisConsistência e Replicação
Consistência e Replicação - Razões para a replicação - Replicação para obter escalabilidade - Modelos de consistência centrados nos dados 1 Razões para a replicação Fiabilidade - Enquanto pelo menos um
Leia maisSincronização. Problema da Exclusão Mútua
Sincronização Parte I Primitivas de Sincronização Problema da Exclusão Mútua struct int saldo; /* outras variáveis,ex. nome do titular, etc. */ conta_t; int levantar_dinheiro (conta_t* conta, int valor)
Leia maisArquitetura de Sistemas Operativos
Arquitetura de Sistemas Operativos Sistemas Operativos 2011/2012 1 Threads Conceito Um processo é um programa em execução. A execução de um processo é sequencial: pode-se caracterizar um processo pelo
Leia maisArquitetura de Microprocessadores
Arquitetura de Computadores UNIDADE 4 Arquitetura de 05-02-2019 Sumário Arquitetura de um microprocessador; Acesso à memória; A arquitetura de von Neumann apenas mostra a conceção ideológica do que deveria
Leia maisConcorrência. Sistemas Distribuídos e Tolerância a Falhas. Lia Ribeiro 1
Concorrência Sistemas Distribuídos e Tolerância a Falhas Lia Ribeiro 1 Índice Consistência Atómica e sequencial Serializability Controle de concorrência One copy Serializability 2 Exclusão Mútua Técnica
Leia maisI1, I2 e In são instruções simples ou estruturadas da linguagem Pascal.
Capítulo 4 TESTES, ESCOLHAS E MALHAS DE REPETIÇÃO 1. INTRODUÇÃO Em muitos exemplos e exercícios realizados nos capítulos anteriores, não foram raras as vezes em que fizemos uso de elementos disponíveis
Leia maisCooperação entre Processos
Sincronização Parte II Programação Concorrente Sistemas Operativos 2010 / 2011 Cooperação entre Processos Vários processos executam em conjunto uma ou mais tarefas, nas quais Competem por recursos Indicam
Leia maisProgramação com Objectos. Processamento de Dados I. 2. Classes, Atributos e Métodos
Programação com Objectos Processamento de Dados I 2. Classes, Atributos e Métodos 1 Classes, Atributos e Métodos Modificadores de acesso (visibilidade) Sobrecarga de métodos (method overloading) Variáveis
Leia maisSincronização. Problema da Exclusão Mútua
Sincronização Parte I Primitivas de Sincronização Problema da Exclusão Mútua struct int saldo; /* outras variáveis,ex. nome do titular, etc. */ conta_t; int levantar_dinheiro (conta_t* conta, int valor)
Leia maisProcessos O conceito de processos é fundamental para a implementação de um sistema multiprogramável. De uma maneira geral, um processo pode ser entend
Concorrência Nos sistemas Monoprogramáveis somente um programa pode estar em execução por vez, permanecendo o processador dedicado a esta única tarefa. Os recursos como memória, processador e dispositivos
Leia maisSincronização. Cooperação entre Processos
Sincronização Parte II Programação Concorrente Cooperação entre Processos Vários processos executam em conjunto uma ou mais tarefas, nas quais Competem por recursos Indicam uns aos outros a: Ausência/existência
Leia maisBanco de Dados I. Aula 18 - Prof. Bruno Moreno 22/11/2011
Banco de Dados I Aula 18 - Prof. Bruno Moreno 22/11/2011 Plano de Aula Introdução SPT Sistemas monousuários e multiusuários Sistemas multiprogramados Transação - Definição Concorrência de Transações Log
Leia maisPROGRAMAÇÃO E ALGORITMOS (LEI) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2016/2017
PROGRAMAÇÃO E ALGORITMOS (LEI) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2016/2017 Resumo Definição Tipos de Exemplos Exercícios Em linguagens imperativas e estruturadas,
Leia maisSincronização. Problema da Exclusão Mútua
Sincronização Parte I Primitivas de Sincronização Problema da Exclusão Mútua struct int saldo; /* outras variáveis,ex. nome do titular, etc. */ conta_t; int levantar_dinheiro (conta_t* conta, int valor)
Leia maisAula 05. Figuras Interrupção
Aula 05 Figuras Interrupção Fluxo de controle com e sem interrupções Ciclos de Instrução Transferência de Controle via Interrupções Transferência de Controle com Múltiplas Interrupções Exercício (ENADE
Leia maisSincronização. Cooperação entre Processos
Sincronização Parte II Programação Concorrente Cooperação entre Processos Vários processos executam em conjunto uma ou mais tarefas, nas quais Competem por recursos Indicam uns aos outros a: Ausência/existência
Leia maisNível da Arquitetura do Conjunto das Instruções
Fluxo Seqüencial de Controle e Desvios (1) Nível da Arquitetura do Conjunto das Instruções (Aula 13) Fluxo de Controle Roberta Lima Gomes - LPRM/DI/UFES Sistemas de Programação I Eng. Elétrica 2007/2 Fluxo
Leia maisAULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação PROGRAMAÇÃO PARALELA
Leia maisGestor de Processos. Gestor de Processos
Gestor de Processos Núcleo do Sistema Operativo Gestor de Processos Entidade do núcleo responsável por suportar a execução dos processos Gestão das Interrupções Multiplexagem do Processador Despacho efectua
Leia maisFundamentos de Sistemas Operacionais
Fundamentos de Sistemas Operacionais Aula 5: Exclusão Mútua Diego Passos Última Aula Programação Concorrente Programas compostos por mais de um processo ou thread. Pode trazer benefícios: Simplificar o
Leia maisLinguagem de Programação C. Funções e Procedimentos
Funções e Procedimentos Cristiano Lehrer Introdução (1/5) Embora sem saber ainda como escrever uma função, já utilizamos várias em nossos exemplos: printf(), scanf(), getchar(), putchar(),... Escreva um
Leia maisTeste de Sistemas de Operação 15 de Abril de 2010
Teste de Sistemas de Operação 15 de Abril de 2010 Duração: 1 h (prática + teórica) D NOME: Indique apenas uma das alternativas. Respostas erradas descontam na nota. 1. Em um sistema que suporta multiprogramação
Leia maisPROGRAMAÇÃO DE MICROPROCESSADORES 2007 / 2008
Departamento de Engenharia Electrotécnica PROGRAMAÇÃO DE MICROPROCESSADORES 2007 / 2008 Mestrado Integrado em Engenharia Electrotécnica e Computadores 1º ano 1º semestre Funções e Vectores http://tele1.dee.fct.unl.pt
Leia maisWorking 03 : Conceitos Básicos I
Working 03 : Conceitos Básicos I Objetivos: Dominar os conceitos básicos da linguagem de programação C; Aprender a utilizar o compilador, identificando os erros de sintaxe do código fonte; Prazo de Envio:
Leia mais... Subprogramas Após fazer as tarefas previstas o nosso programa devolve o comando ao sistema operativo. Isto está numa hierarquia onde o nosso progr
26 - Subprogramas Executar um programa é pedir ao sistema operativo (que é o programa principal de um computador) que passe o comando do computador para o nosso programa. ... Subprogramas Após fazer as
Leia maisProgramação 5374 : Engenharia Informática 6638 : Tecnologias e Sistemas de Informação. Cap. 7 Arrays. Arrays
5374 : Engenharia Informática 6638 : Tecnologias e Sistemas de Informação Cap. 7 Sumário: Classificação de tipos de dados Características gerais de tipos de dados compostos Definição de array (ou tabela)
Leia maisSistemas Operacionais: Sincronização entre processos
Sistemas Operacionais: Sincronização entre processos Sincronização Programa concorrente Executado por diversos processos Acesso concorrente a dados Paralelismo real x Paralelismo aparente Multiprocessadores:
Leia maisVariáveis primitivas e Controle de fluxo
Variáveis primitivas e Controle de fluxo Material baseado na apostila FJ-11: Java e Orientação a Objetos do curso Caelum, Ensino e Inovação, disponível para download em http://www.caelum.com.br/apostilas/
Leia maisAmbiente de tempo de Execução Cap. 7
Ambiente de tempo de Execução Cap. 7 Introdução Subdivisão da memória usada pelo programa em tempo de execução Segmento de Código Segmento Estático (segmento de dados) Pilha Área de memória livre Heap
Leia maisTécnico de Gestão e Programação de Sistemas Informáticos. Sistemas Operativos 10º ano
Técnico de Gestão e Programação de Sistemas Informáticos Sistemas Operativos 10º ano Introdução aos Sistemas Embebidos Vivemos num mundo onde o software desempenha um papel crítico Mas a maior parte deste
Leia maisConstrutores de Sicronização em OpenMP
Construtores de Sicronização em OpenMP Esbel Tomás Valero Orellana Bacharelado em Ciência da Computação Departamento de Ciências Exatas e Tecnológicas Universidade Estadual de Santa Cruz evalero@uesc.br
Leia maisLEIC/LERC 2008/09. Primeiro Exame de Sistemas Operativos. 20 de Janeiro de Duração: 2h30m. Grupo I [3 valores]
Nome: Número: LEIC/LERC 2008/09 Primeiro Exame de Sistemas Operativos 20 de Janeiro de 2009 Duração: 2h30m Identifique o cabeçalho de todas as folhas da prova. O exame é resolvido no espaço dedicado ao
Leia maisArquitetura e Organização de Computadores
Arquitetura e Organização de Computadores Unidade Central de Processamento (CPU) Givanaldo Rocha de Souza http://docente.ifrn.edu.br/givanaldorocha givanaldo.rocha@ifrn.edu.br Baseado nos slides do capítulo
Leia maisEstrutura de Dados e Algoritmos e Programação e Computadores II. Aula 4: Listas Estáticas e Dinâmicas
Estrutura de Dados e Algoritmos e Programação e Computadores II Aula 4: Listas Estáticas e Dinâmicas Listas Estáticas: com Vetores Dinâmicas: Listas Ligadas (com ponteiros) Variáveis e Métodos de Controle:
Leia maisProgramação Concorrente e Paralela
2010.2 Objetivos princípios e técnicas de programação paralela multiprocessadores memória compartilhada troca de mensagens arquiteturas alternativas multicomputadores troca de mensagens obs: Essa troca
Leia maisParadigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura
Java First-Tier: Aplicações Orientação a Objetos em Java (I) Paradigmas de Programação Programação Funcional Programação Procedural Programação Orientada por Objetos Grupo de Linguagens de Programação
Leia maisSistemas Distribuídos. Professora: Ana Paula Couto DCC 064
Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Consistência Causal(3) Neste exemplo temos uma sequência de eventos permitida quando o depósito é consistente por causalidade, mas proibida quando
Leia maisTÉCNICO DE INFORMÁTICA - SISTEMAS
782 - Programação em C/C++ - estrutura básica e conceitos fundamentais Linguagens de programação Linguagem de programação são conjuntos de palavras formais, utilizadas na escrita de programas, para enunciar
Leia maisExistem muitas maneiras de modelar o paralelismo, algumas possibilidades são:
Aula 3 Paralelismo e comunicação Normalmente um sistema informático será modelado por sistemas de transições que funcionam em sequência ou, mais frequentemente, em paralelo. T 1 T 2 T n Existem muitas
Leia maisFundamentos de Sistemas Operacionais
Fundamentos de Sistemas Operacionais Aula 7: Implementação de Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem diversos processos em memória. Cada
Leia maisAULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação MULTIPROCESSADORES
Leia maisAlocação Dinâmica em C
Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Alocação Dinâmica em C Profa Rosana Braga Adaptado de material preparado pela profa Silvana Maria Affonso de Lara
Leia maisConcorrência em Processos
Concorrência em Processos Anderson L. S. Moreira anderson.moreira@recife.ifpe.edu.br http://dase.ifpe.edu.br/~alsm Baseado nas aulas do professor Alberto Costa Neto da UFS 1 O que fazer com essa apresentação
Leia maisGestão de Memória. Espaço de Endereçamento
Gestão de Memória Parte I Mecanismos Espaço de Endereçamento Conjunto de posições de memória que um processo pode referenciar E se referenciar outras posições de memória? HW de gestão de memória desencadeia
Leia maisLEIC/LERC 2011/12-1º Exame de Sistemas Operativos 16/Janeiro/2012
Número: Nome: LEIC/LERC 2011/12-1º Exame de Sistemas Operativos 16/Janeiro/2012 Identifique todas as folhas. Responda no enunciado, apenas no espaço fornecido. Justifique todas as respostas. Duração: 2h30m
Leia maisLinguagem C Princípios Básicos (parte 1)
Linguagem C Princípios Básicos (parte 1) Objetivos O principal objetivo deste artigo é explicar alguns conceitos fundamentais de programação em C. No final será implementado um programa envolvendo todos
Leia maisParadigmas de Computação Paralela (UCE Computação Paralela Distribuída)
Paradigmas de Computação Paralela (UCE Computação Paralela Distribuída) Modelos de consistência de memória João Luís Ferreira Sobral jls@... 29 Março 2011 Resumo Revisão: modelos de threads Qual a necessidade
Leia maisArquitecturas Alternativas. Java Virtual Machine
Arquitecturas Alternativas Java Virtual Machine Compilação da linguagem Java A linguagem Java é uma linguagem interpretada que é executada por uma máquina virtual software denominada JVM (Java Virtual
Leia maisInstruções. Maicon A. Sartin
Instruções Maicon A. Sartin SUMÁRIO Introdução Instruções Formatos de instruções Conjuntos de instruções Execução de instruções Introdução a Linguagem de Montagem Introdução a Linguagem de Montagem Níveis
Leia maisControle de Transação
Curso: Ciência da Computação Disciplina: Banco de Dados Campus Lages Controle de Transação Prof. Edjandir C. Costa edjandir.costa@ifsc.edu.br Agenda Conceitos de transação e sistema Propriedades desejáveis
Leia maisComputação Avançada PARTE I
Computação Avançada Módulo (Aula Teórico-Prática) Modelação e Análise de Sistemas Computacionais Nuno Pereira npereira@dei.isep.ipp.pt Eduardo Tovar emt@dei.isep.ipp.pt TP - Módulo ; Com Resoluções PARTE
Leia maisTeste de Sistemas de Operação 30 de Maio de 2009
Teste de Sistemas de Operação 30 de Maio de 2009 Duração: 30 min B NOME: Indique apenas uma das alternativas. Respostas erradas descontam na nota. 1. Um pedido de entrada e saída sem buffering: (letra
Leia maisMicroarquiteturas Avançadas
Universidade Federal do Rio de Janeiro Arquitetura de Computadores I Microarquiteturas Avançadas Gabriel P. Silva Introdução As arquiteturas dos processadores têm evoluído ao longo dos anos, e junto com
Leia maisA modelagem de Negócio com UML
A modelagem de Negócio com UML Introdução A passagem do Modelo do Negócio para o Modelo do Sistema envolve a definição de quais Casos de Uso do Negócio deverão ser automatizados; No momento em que os requisitos
Leia maisUnidade 12: Estrutura de Repetição Simples Prof. Daniel Caetano
Lógica de Programação 1 Unidade 12: Estrutura de Repetição Simples Prof. Daniel Caetano Objetivo: Realizando decisões de repetição simples no código de programação. Bibliografia: ASCENCIO, 2007; MEDINA,
Leia maisGrupo I [7 Val] 1. Considere os seguintes 3 algoritmos de escalonamento num sistema operativo de tempo virtual:
Número: Nome: LEIC/LERC 2012/13-1º Teste de Sistemas Operativos 24 de Novembro de 2011 Responda no enunciado, apenas no espaço fornecido. Identifique todas as folhas. Justifique todas as respostas. Duração:
Leia maisProgramação de Computadores II. Cap. 5 Vetores
Programação de Computadores II Cap. 5 Vetores Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados dos originais dos profs.:
Leia maisProgramação: Vetores
Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia
Leia maisSOP - TADS Processos. Revisão Ultima aula
SOP - TADS Processos Prof. Ricardo José Pfitscher dcc2rjp@joinville.udesc.br Material cedido por: Prof. Rafael Rodrigues Obelheiro Prof. Maurício Aronne Pillon Revisão Ultima aula Revisão de hardware Processador
Leia maisTCC 00308: Programação de Computadores I Introdução
TCC 00308: Programação de Computadores I 2017.1 Introdução Processo de resolução de problemas Definição dos requisitos do problema (fazer o programa certo) Entradas Cálculos Casos especiais Saídas Desenvolvimento
Leia maisUNIVERSIDADE DA BEIRA INTERIOR
UNIVERSIDADE DA BEIRA INTERIOR Programação II 1º Semestre Frequência 2 Resolução 07/01/2019 1. [1,25 val] - Análise de Complexidade dos Algoritmos Considere o seguinte bloco de código em linguagem C: for
Leia maisAula 2: Tipos de Sistemas Operacionais. Instituto Federal da Bahia Campus Salvador INF009 - Sistemas Operacionais Profª Flávia Maristela
Aula 2: Tipos de Sistemas Operacionais Instituto Federal da Bahia Campus Salvador INF009 - Sistemas Operacionais Profª Flávia Maristela O que veremos nesta aula? Principais tipos de sistemas operacionais
Leia maisModelagem e implementação de programas concorrentes
Modelagem e implementação de programas concorrentes Aula 3 DCC-UFMG 2010 Bibliograa G.R. Andrews. Foundations of Multithreaded, Parallel, and Distributed Programming. Addison-Wesley, 1999. M. Ben-Ari.
Leia maisÍndice. Capítulo 1 - Introdução
Índice i Índice Capítulo 1 - Introdução 1. Estruturas na linguagem C... 1 1.1. A necessidade de utilizar Estruturas... 1 1.2. Definição de estrutura... 1 1.3. Como aceder aos campos de uma estrutura...
Leia maisSSC PROGRAMAÇÃO CONCORRENTE. Aula 06 Modelos de Programação Prof. Jó Ueyama e Julio Cezar Estrella
SSC- 0143 PROGRAMAÇÃO CONCORRENTE Aula 06 Modelos de Programação Prof. Jó Ueyama e Julio Cezar Estrella Créditos Os slides integrantes deste material foram construídos a par4r dos conteúdos relacionados
Leia mais13 a Aula - Instruções Condicionais. Ciclos. Pré-processador. Variáveis de ambiente. Mestrado em Engenharia Física Tecnológica
13 a Aula - Instruções Condicionais. Ciclos. Pré-processador. Variáveis de ambiente. Programação Mestrado em Engenharia Física Tecnológica Samuel M. Eleutério sme@tecnico.ulisboa.pt Departamento de Física
Leia maisOrdenação. Relógios lógicos
Ordenação Relógios lógicos 1 Índice Ordenação FIFO Ordenação Causal Ordenação Total Algoritmos Tempo Lógico Relógios Lógicos Relógios Vectoriais 2 Introdução Ordenação Objectivo Determinar à posteriori
Leia maisAlgoritmos e Estruturas de dados
Algoritmos e Estruturas de dados Listas Encadeadas Prof. Dr. Fábio Rodrigues de la Rocha (Listas Encadeadas) 1 / 21 Definição: Anteriormente estudamos listas encadeadas que foram implementadas como vetores
Leia mais7 Mecanismos de gestão de memória. Prof. Ricardo Silva
7 Mecanismos de gestão de memória Prof. Ricardo Silva Introdução Um programa reside no disco sob a forma de ficheiro executável Para ser executado, o programa tem de ser colocado em memória e associado
Leia maisSistemas Operacionais
Brainstormig Sistemas Operacionais Processos e multiprogramação Aula 2 Quais são os componentes de um programa? Como podemos representar um programa em execução? Onde ele inicia a executar? Como se mapeia
Leia maisLaboratório de Programação II
Laboratório de Programação II Aula 02 Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br http://www.diemesleno.com.br Na aula passada vimos... Na aula passada vimos... 01 Introdução à linguagem C;
Leia maisProgramação Concorrente e Paralela. Noemi Rodriguez
2013 Objetivos princípios e técnicas de programação concorrente multiprocessadores memória compartilhada troca de mensagens obs: diferentes níveis de abstração! que princípios e técnicas são esses? notações
Leia maisEssencialmente, um ponteiro nada mais é do que uma variável que ao invés de conter um valor, contém um endereço de memória.
Ponteiros e Arrays Ponteiros são fundamentais para a programação bem sucedida em C: Passagem de parâmetros por referência; Alocação dinâmica de memória; Aumentar a eficiência de certar rotinas. Essencialmente,
Leia maisInterrupções, Exceções e Chamadas ao SO
Interrupções, Exceções e Chamadas ao SO Noemi Rodriguez Ana Lúcia de Moura http://www.inf.puc-rio.br/~inf1018 Fluxo de Controle Fluxo de controle de um programa a 0 a 1 a 2 a n sequência de endereços i
Leia maisIntrodução à Programação
Introdução à Programação Aula 02 Algoritmos e Ciclo de Desenvolvimento Edirlei Soares de Lima Modelo de um Computador Linguagem de Máquina Um processador executa instruções de máquina.
Leia maisLinguagem C++ Estruturas de controle Parte II Estruturas de repetição
Fundamentos de Programação Linguagem C++ Estruturas de controle Parte II Estruturas de repetição Prof. Bruno E. G. Gomes IFRN 1 Estruturas de Controle Permitem o controle da sequência de execução de um
Leia maisINF 1005 Programação I
INF 1005 Programação I Aula 02 Algoritmos e Ciclo de Desenvolvimento Edirlei Soares de Lima Modelo de um Computador Linguagem de Máquina Um processador executa instruções de máquina
Leia maisSistemas Operativos, 3. o MIEIC 2009/10, FEUP
Sistemas Operativos, 3. o MIEIC 2009/10, FEUP RMA, JVV, HSF December 20, 2009 2. o Trabalho Prático: SO Shell Stats (sosh s) Objectivos Completando com sucesso todas as fases deste trabalho, os alunos
Leia maisProgramação Concorrente. Prof. Hugo Vieira Neto
Programação Concorrente Prof. Hugo Vieira Neto Concorrência Um programa concorrente descreve diversas atividades que ocorrem simultaneamente, de modo diferente de programas comuns, que descrevem apenas
Leia maisCarlos Eduardo Batista Centro de Informática - UFPB
Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Motivação Arquitetura de computadores modernos Desafios da programação concorrente Definição de concorrência Correr junto Disputa por
Leia mais- Mapa de memória de um processo - Ponteiros
1 MCTA028 Programação Estruturada - Mapa de memória de um processo - Ponteiros Material preparado a partir de slides dos profs. Jesús Mena-Chalco e Fabrício Olivetti Luiz Rozante 3Q-2018 2 Alocação de
Leia mais( ) Sistemas de Computação - Unifacs Professor : Marco Antônio C. Câmara - Lista de Exercícios II - Dia 18/10/2009
1ª Questão : Sobre o conceito de sistema operacional, escreva ao lado a soma dos números dos itens que considera corretos: (01) O conceito da máquina de níveis define o hardware como o nível mais baixo,
Leia maisTrincos Lógicos: Implementações. Trincos lógicos: Propriedades
Trincos Lógicos: Implementações Algorítmicas Hardware Sistema Operativo Trincos lógicos: Propriedades Exclusão mútua Progresso (liveness) Ausência de interblocagem (deadlock) Ausência de míngua (starvation)
Leia maisAlgoritmos e Modelação Computacional. Paulo Mateus MEBiom LMAC 2018
Algoritmos e Modelação Computacional Paulo Mateus MEBiom LMAC 2018 Objetivos Edição e compilação de programas Tipos e expressões Declaração de variáveis Atribuição, composição sequencial, iterativa e alternativa
Leia maisIntrodução à Computação: Sistemas de Computação
Introdução à Computação: Sistemas de Computação Beatriz F. M. Souza (bfmartins@inf.ufes.br) http://inf.ufes.br/~bfmartins/ Computer Science Department Federal University of Espírito Santo (Ufes), Vitória,
Leia maisProcessos. Nuno Ferreira Neves Faculdade de Ciências de Universidade de Lisboa. Fernando Ramos, Nuno Neves, Sistemas Operativos,
Processos Nuno Ferreira Neves Faculdade de Ciências de Universidade de Lisboa Objetivos da aula Introduzir a noção de processo um programa em execução que é a base de toda a computação Descrever as várias
Leia maisFundamentos de Sistemas Operacionais
Fundamentos de Sistemas Operacionais Aula 19: Memória Virtual: Introdução Diego Passos Última Aula Paginação Método de gerenciamento de memória mais usado hoje. Espaço de endereçamento de um processo é
Leia maisIntroducao a Programacao Estruturas de decisão
Introducao a Programacao Estruturas de decisão p ericlesmiranda@gmail.com Slides fornecidos pelo professor Gurvan Huiban Plano de aula 1 Estrutura if-then 2 Estrutura if-then-else 3 O operador condicional
Leia mais