Programação Concorrente na Linguagem Vale 4
|
|
- Margarida Olivares Marreiro
- 8 Há anos
- Visualizações:
Transcrição
1 Programação Concorrente na Linguagem Vale 4 por Simão Sirineo Toscani VII Simpósio Brasileiro de Linguagens de Programação SBLP 2003 Ouro Preto,, MG, Brasil Pontifícia Universidade Católica do Rio Grande do Sul PUCRS Centro Universitário La Salle UNILASALLE 0
2 Introdução (1) Iremos apresentar Uma linguagem de programação para uso acadêmico Construída usando software livre (SWI-Prolog) Que pode ser instalada em qualquer microcomputador Os exemplos são programas completos, prontos para serem executados. O ambiente de programação V4 É formado por um compilador uma máquina virtual Trata-se de um ambiente completo para construção e depuração de programas concorrentes. 1
3 Introdução (2) Programa concorrente É um programa que origina processos concorrentes (paralelos) durante sua execução. Estes processos interagem através de mecanismos apropriados, normalmente implementados no kernel do SO. A técnica da programação concorrente foi usada originalmente na construção de sistemas operacionais. Hoje em dia seu uso está difundido em todas as áreas. 2
4 Motivação para a criação da linguagem (1) Os profissionais da computação devem dominar as técnicas e ferramentas usadas na construção de programas concorrentes. Não há uma linguagem adequada para esse tipo de ensino. O ideal seria que o estudante pudesse aprender a solucionar os problemas clássicos usando todas as ferramentas descritas na literatura. 3
5 Motivação para a criação da linguagem (2) Os problemas clássicos: 1. Produtor-consumidor (relação de cooperação) 2. Jantar dos filósofos (relação de competição) 3. Barbeiro dorminhoco (relação cliente-servidor) 4. Leitores e escritores (situação comum em banco de dados) As principais ferramentas: 1. Semáforos 2. Monitores 3. Operações send e receive 4. Rendezvous 4
6 A linguagem Vale 4 Implementa quase todas as ferramentas e paradigmas da programação concorrente Sintaxe simples(*) e semântica clara Facilidades para depuração (visualização da execução) É implementada por um compilador uma máquina virtual (*) Baseada na sintaxe livre usada nas notas de aula do autor. 5
7 O compilador V4 Traduçã ção o dirigida por sintaxe. O resultado da compilaçã ção é: Uma tabela de símbolos s (TS) e Um código c de máquina m virtual. 6
8 O simulador V4 A partir da TS, o simulador da máquina virtual gera estruturas e faz a execução do código. Estruturas de dados: Variáveis inteiras, variáveis booleanas Arrays de até duas dimensões Registros descritores de processos Filas, semáforos Filas de monitores, variáveis tipo condition Filas de espera para rendezvouz, etc. 7
9 O ambiente de execução V4 O compilador: repeat, letoken(x), colocanapilha(x), tratapilha until X = endprogram O simulador: gera estruturas de dados, repeat, selecionathread(t), if T>0 then executa T until T = -1, write('fim DA EXECUÇÃ ÇÃO') 8
10 Os tokens da linguagem V4 := : ;, ( ) [ ] { } ' + - * / mod & and or not % /* */ integer boolean init queue semaphore array procedure returns while do forever if then else loop endloop exit when inline process task thread fork join quit mutexbegin mutexend block wakeup P V yield hold monitor condition priority wait signal initially empty count first insert send receive entry accept read write nl tab debug1 debug2 nodebug pause nothing myself getid random clocktime end identificadores const_inteiras const_booleanas 9
11 Os comandos da linguagem Var := E A P ( Sem ) if E L then C 1 else C 2 V ( Sem ) while E L do C yield do forever C hold ( Time ) loop C 1 ; C 2 ;... ; C n endloop wait ( Cond ) { C 1 ; C 2 ;... ; C n } wait ( Cond, Prior ) read ( Var ) signal ( Cond ) write ( Var ) send ( ProcessId, Msg ) nl nb_send ( ProcessId, Msg ) tab ( K ) receive ( ProcessId, Msg ) nothing id := fork mutexbegin id := new Pname ( arg 1, arg 2,..., arg N ) mutexend join ( id ) lock quit unlock debug1 insert ( id, Q ) debug2 insert ( id, Q, Prior ) nodebug id := first ( Q ) pause block exec ( Nome ) wakeup ( id ) (Total de 40 accept Et ( arg 1 :T 1 ; arg 2 :T 2 ;... ; arg N :T N ) returns T when E L do C comandos) 10
12 As instruções da máquina virtual if X oprel Y goto E call NomeProc P S myself goto E [n, lista] V S getid P read X return entermonitor M clocktime write X nothing leavemonitor M random N push X yield wait C nl pop X hold wait C, Prior tab X add fork signal C debug1 sub join rndzvs Entry debug2 mult quit accept Entry nodebug div mutexbegin give_up_rndzvs pause mod mutexend send Id,Msg exec X jump E block receive Id,Msg jzer E wakeup P end proced jpos E first Q end process (Total de 62 jneg E insert P, Q end monitor instruções) jsub E is_empty Q end task ret count Q end accept 11
13 As versões da linguagem Didaticamente, a linguagem oferece 6 versões: V4 0 : processos, variáveis globais e procedimentos V4 1 : V4 0 com operações mutexbegin/mutexend e block/wakeup(p) V4 2 : V4 0 com semáforos V4 3 : V4 0 com monitores V4 4 : processos com operações send/receive V4 5 : tasks com threads e rendezvous. 12
14 Formas de criar processos Especificação de processos individuais Especificação de array de processos Especificação de modelo (template) de processo (Nos dois primeiros casos, a criação é estática) 13
15 Especificação de processos (1) % Especificação individual V4program process p; k: integer init 0; while k < 10 do { write(1); k:= k+1 }; process q; k: integer init 0; while k < 10 do { write(2); k:= k+1 } endprogram 14
16 Especificação de processos (2) % Array de processos V4program process p(i:= 1 to 2); k: integer init 0; while k < 10 do { write(i); k:= k+1 } endprogram 15
17 Especificação de processos (3) % Modelo de processo V4program process type p(i: integer); k: integer init 0; while k < 10 do { write(i); k:= k+1 }; process qqnome; { new p(1); new p(2) } endprogram 16
18 Uso de um procedimento % Especificação individual e uso de procedimento V4program procedure imprime(n: integer); k: integer init 0; while k < 10 do { write(n); k:= k+1 }; process p; imprime(1); process q; imprime(2) endprogram 17
19 Código gerado para o programa anterior ============== TABELA DE SIMBOLOS ============== IND NOME TIPO V_INIC AGRUP INSIDE 0 imprime routine 0 n_arg(1) global 1 n integer 0 none proced(imprime) 2 k integer 0 none proced(imprime) 3 p process 9 none global 4 q process 12 none global END CÓDIGO GERADO 0 [if,#(2),<,$10,goto,2] 1 [return] 2 [write, #(1)] 3 [push, #(2)] 9 [call, imprime] 4 [push, $1] 10 [1, 1] 5 [add] 11 [end, process] 6 [pop, #(2)] 12 [call, imprime] 7 [goto, 0] 13 [1, 2] 8 [end, proced] 14 [end, process] 18
20 O mesmo programa anterior % A identificação única (pid) V4program procedure imprime(n: integer); k: integer init 0; while k < 10 do { write(n); k:= k+1 }; process p; imprime(myself); process q; imprime(myself) endprogram 19
21 Ainda o mesmo programa % Criação de threads % (qual o resulado da execução?) V4program process p; k, id: integer init 0; { id:= fork(); while k < 10 do { write(myself); k:= k+1 } } endprogram 20
22 Grafo de fluxo de processos com block/wakeup wakeup(p) V4program process P1; { nl; write('p1'); wakeup(p3); wakeup(p4); quit }; process P2; { nl; write('p2'); wakeup(p5); quit }; process P3; { block; nl; write('p3'); wakeup(p5); quit }; process P4; { block; nl; write('p4'); wakeup(p5); quit }; process P5; { block; block; block; nl; write('p5'); quit } endprogram p3 I p1 p2 p4 p5 F 21
23 Grafo de fluxo de processos com threads V4program process p; k2, k4 : integer; { k2:= fork; if myself = k2 then {nl; write('p2'); quit}; nl; write('p1'); k4:= fork; if myself = k4 then {nl; write('p4'); quit}; nl; write('p3'); join(k2); join(k4); nl; write('p5') } endprogram p3 I p1 p2 p4 p5 F 22
24 Variáveis semáforas São variáveis especiais, sobre as quais só podem ser aplicadas duas operações: P e V (Proberen e Verhogen). Um semáforo é implementado por um contador (variável inteira) e uma fila de espera. Sendo S um semáforo, as operações P e V funcionam da seguinte maneira: P(S): Testa o contador de S; se é zero, coloca o processo na fila de espera (bloqueia o processo); caso contrário decrementa o contador de 1. V(S): Testa a fila de S; se está vazia, incrementa o contador de 1; caso contrário libera (desbloqueia) o primeiro processo da fila de espera. 23
25 Grafo de fluxo de processos com semáforos V4program S3, S4, S5: semaphore initial 0; process P1; { nl; write('p1'); V(S3); V(S4) }; process P2; { nl; write('p2'); V(S5) }; process P3; { P(S3); nl; write('p3'); V(S5) }; process P4; { P(S4); ; nl; write('p4'); V(S5) }; process P5; { P(S5); P(S5); P(S5); nl; write('p5') } endprogram p3 I p1 p2 p4 p5 F 24
26 O jantar dos filósofos com semáforos garfo 3 filósofo 4 garfo 4 filósofo 5 filósofo 3 spaghetti garfo 5 garfo 2 filósofo 2 garfo 1 filósofo 1 V4program garfo : array[5] of semaphore init 1; process filosofo(i:= 1 to 5); j, k, t: integer; while k =< 10 do { if i = 1 then { P(garfo[5]); P(garfo[1])} else {j:= i-1; P(garfo[j]); P(garfo[i])}; nl; write('filosofo '); write(i); write(' comecou a comer'); t:=random(5); hold(t); if i=1 then { V(garfo[5]); V(garfo[1])} else {j := i-1 ; P(garfo[j]); P(garfo[i])}; nl; write('filosofo '); write(i); write(' parou de comer'); k:=k+1 } endprogram 25
27 Formato de um monitor monitor <nome>; Declaração dos dados compartilhados pelos processos. Exemplo: X, Y: integer C, D: condition; procedure P(arg 1 : T 1,...,arg P : T P ); Declaração das variáveis locais de P; {... wait(d);... }; procedure Q(arg 1 : T 1,...,arg Q : T Q ); Declaração das variáveis locais de Q; {... signal(c);... }; initially {Comandos} % inicialização dos dados (opcional) end <nome>; 26
28 O jantar dos filósofos com monitores V4program monitor garfos; glivre: array[5] of integer init 2; ok: array[5] of condition; procedure pega(i:integer); j: integer; k: integer; { if glivre[i] < 2 then wait(ok[i]); j := i-1; if j=0 then j:=5; glivre[j]:= glivre[j]-1; k := i+1; if k=6 then k:=1; glivre[k]:=glivre[k]-1 }; procedure libera(i:integer); j: integer; k: integer; { j := i-1; if j=0 then j:=5; glivre[j]:= glivre[j]+1; k := i+1; if k=6 then k:=1; glivre[k]:=glivre[k]+1; if glivre[j] = 2 then signal(ok[j]); if glivre[k] = 2 then signal(ok[k]) } end monitor; process filosofo(i:=1 to 5); k, t: integer init 0; while k =< 10 do { garfos.pega(i); nl; write('filos '); write(i); write(' comendo t:= random(5); hold(t); % come 0-4 u.t garfos.libera(i); nl; write('filos '); write(i); write(' pensando t:= random(5)+6; hold(t); % pensa 6-10 u k:= k+1 } endprogram 27
29 Alocação de um recurso de N unidades V4program monitor resource; N: integer init 10; % 10 unidades C: condition; procedure requisita(k: integer); { loop if k =< N then exit; wait(c) endloop; N := N-k; signal(c) }; procedure libera(k: integer); { N := N+k; signal(c) } end resource; process cliente(i:=1 to 10); { resource.requisita(i); nl; write('cliente '); write(i); resource.libera(i) } endprogram O que acontece se, no procedimento requisita, o signal(c) é colocado logo após o wait(c)? 28
30 Formato de uma task task nome is declaração de variáveis; declaração de entries; declaração de procedures; thread main is { C1; C2; ; Cn } end nome Formato do comando accept: accept Et (arg 1 :T 1 ; arg 2 :T 2 ;... ; arg N :T N ) returns T when expressão_lógica do { C1; C2; ; Cn } 29
31 Alocação de um recurso de N unidades V4program task resource is entry requisita(k: integer); entry libera(k: integer); id: integer; N: integer init 10; % recurso tem 10 unidades thread main is { id:= fork; if id = myself then loop % --- thread filha accept requisita(k: integer) when k <= N do N:= N-k endloop else loop % --- thread mãe accept libera(k: integer) do N:= N+k endloop } end resource; process cliente(i:=1 to 10); { resource.requisita(i); nl; write('cliente '); write(i); resource.libera(i) } endprogram 30
32 As operações send e receive send(p, msg) receive(q, msg) receive(any any, msg) nb_send send(p, msg) 31
33 Comunicação via fork, join e quit id:= fork quit join(id) quit(valor) var:= join(id) var:= join(any any) 32
34 As facilidades de depuração debug1 debug2 nodebug exec(nome) pause janelas de visualizaçã ção 33
35 Conclusão (1) Instalação do sistema: Criar a pasta (diretório) Vale4 Fazer download do SWI-Prolog (programa de instalação) a partir do site: 3. Instalar o SWI-Prolog na pasta Vale4 (a instalação vai criar o diretório pl ) 4. Copiar os arquivos V4compiler, V4_1 e V4_2 e programas exemplos para a pasta Vale4. (O sistema é colocado em uso com dois clicks no arquivo V4compiler) 34
36 Conclusão (2) O sistema está operacional. Sua instalação é muito simples. V4 é uma ferramenta para treinamento (ensino/aprendizagem). Não é linguagem para produção de software (não há preocupação com geração de código otimizado, tampouco com eficiência de execução). A linguagem é usada para ilustrar o livro Programação Concorrente e Sistemas Operacionais que será lançado em breve. 35
37 Barbeiro dorminhoco (task( e threads) V4program task barbershop is k, t, id1, id2: integer; empty_chair: boolean; #chairs: integer initial 3; entry client_in(id: integer); procedure avail_chair() returns boolean; { mutexbegin; if #chairs > 0 then { #chairs:= #chairs-1; avail_chair:= true } else avail_chair:= false; mutexend }; thread main is { id1:= fork; if id1 = myself then loop % loop da thread barbeiro accept client_in(id: integer) do % dorme se não há cliente { nl; write('client '); write(id); write(' at time '); write(clocktime); hold(2); #chairs:= #chairs+1 } endloop; 36
38 Barbeiro dorminhoco (continuação) loop % thread main gera 20 clientes id2:= fork; if id2 = myself then { empty_chair:= avail_chair(); if empty_chair then client_in(id2); quit }; t:= random(6); hold(t); % espera um tempo entre 0 e 5 u.t. (média 2.5) k:= k+1; exit when k=20 endloop } end barbershop end program 37
39 Busca do elemento máximo de um vetor por divisão e conquista V4program task xmax is vet: array[10] of integer; Imax: integer init 0; % Índice do maior elemento do vetor procedure getmax(i:integer; j:integer) returns integer; dif, m, m1, id1, id2, max1, max2: integer; { dif:=j-i; if dif=0 then getmax:=i elseifdif=1thenifvet[i]>vet[j] then getmax:=i else getmax:=j else { m:=(i+j)/2; m1:=m+1; id1:=fork; if id1=myself then {max1:=getmax(i,m); quit}; id2:=fork; if id2=myself then {max2:=getmax(m1,j);quit}; join(id1); join(id2); if vet[max1] > vet[max2] then getmax:=max1 else getmax:=max2 } }; thread main is { vet[1]:=1; vet[2]:=10; vet[3]:=3; vet[4]:=100; vet[5]:=2; Imax:=getmax(1,5); nl; write('vobtido = '); write(vet[imax]) } end xmax end program 38
40 Monitor para o problema dos readers & writers monitor ReadersAndWriters; #readers: integer initial 0; activewriter: boolean initial false; oktoread, oktowrite: condition; procedure startread(); { if activewriter or empty(oktowrite) then wait(oktoread); #readers:=#readers+1; signal(oktoread) }; procedure endread(); { #readers:=#readers-1; if #readers=0 then signal(oktowrite) }; procedure startwrite(); { if #readers>0 or activewriter then wait(oktowrite); activewriter:=true }; procedure endwrite(); { activewriter:=false; if empty(oktoread) then signal(oktoread) else signal(oktowrite) } end ReadersAndWriters; 39
41 Produtores-consumidores com semáforos V4program buffer: array[2] of integer init 0; cheios: semaphore init 0; vazios: semaphore init 2; mutex : semaphore init 1; in,out: integer init 1; process produtor(i:=0 to 1); nextpar: integer init 0; nextimpar: integer init 1; while nextimpar < 20 & nextpar < 20 do { P(vazios) ; P(mutex); if i = 0 then { nextpar:= nextpar + 2; buffer[in]:= nextpar } else { nextimpar:= nextimpar + 2; buffer[in]:= nextimpar }; in:=(in mod 2)+1; V(mutex); V(cheios) }; process consumidor(i:=1 to 2); msg: integer; do forever { P(cheios); P(mutex); msg:= buffer[out]; out:=(out mod 2)+1; V(mutex); V(vazios); nl; if i = 2 then tab(10); write(msg) } endprogram 40
Monitores. Conceito Sistemas Operacionais II
Monitores Conceito Sistemas Operacionais II Monitores Autores Daniel Artur Seelig Fábio Lutz Local Universidade Federal do Rio Grande do Sul Instituto de Informática Sistemas Operacionais II Professor
Leia maisVale4 - Uma Linguagem Didática para Ensino de Programação Concorrente
Vale4 - Uma Linguagem Didática para Ensino de Programação Concorrente Simão Sirineo Toscani Faculdade de Informática PUCRS Departamento de Computação UNILASALLE stoscani@inf.pucrs.br Resumo. O artigo apresenta
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 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 maisO PROBLEMA DOS LEITORES E ESCRITORES LABORATORIO 1
O PROBLEMA DOS LEITORES E ESCRITORES LABORATORIO 1 O PROBLEMA DOS LEITORES E ESCRITORES O problema dos leitores e escritores é o próximo problema abstrato em programação concorrente que resolveremos. É
Leia maisSincronização de Processos (4) Monitores
Sincronização de Processos (4) Monitores Monitores (1) Sugeridos por Dijkstra (1971) e desenvolvidos por Hoare (1974) e Brinch Hansen (1975), são estruturas de sincronização de alto nível, que têm por
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 maisMonitores. Setembro de 2009. Monitores
Setembro de 2009 mecanismo de sincronização clássico referência influência de conceitos de programação estruturada C. A. R. Hoare, Monitors: an operating system structuring concept, Communications of the
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 maisProgramação Concorrente
Programação Concorrente Monitores e Troca de Mensagens Monitores Considere que, no projeto da solução do produtor-consumidor com semáforos, os 2 downs tenham sido trocados Se o buffer estiver cheio deadlock
Leia maisProgramaçã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 maisFundamentos. Módulo 6: Sincronização de Processos. Bounded-Buffer (Cont.) Bounded-Buffer
Módulo 6: Sincronização de Processos Fundamentos Fundamentos O problema das regiões críticas Hardware de Sincronização Semáforos Problemas Clássicos de Sincronização Regiões Críticas Monitores Sincronização
Leia maisBC1518-Sistemas Operacionais. Prof. Marcelo Z. do Nascimento marcelo.nascimento@ufabc.edu.br
BC1518-Sistemas Operacionais Sincronização de Processos (aula 5 Parte 2) Prof. Marcelo Z. do Nascimento marcelo.nascimento@ufabc.edu.br Roteiro Semáforos Monitores Passagem de Mensagem Exemplos em S.O.
Leia maisRepresentação de Algoritmos - Linguagens de Programação
Representação de Algoritmos - Linguagens de Programação A representação de algoritmos em uma pseudo-linguagem mais próxima às pessoas é bastante útil principalmente quando o problema a ser tratado envolve
Leia maisEstrutura de Dados. Introdução a Ponteiros. Prof. Gerson Borges Estrutura de Dados I 1
Estrutura de Dados Introdução a Ponteiros Prof. Gerson Borges Estrutura de Dados I 1 Sumário è Explicação da importância do planejamento de ensino; è Métodos e técnicas que iremos trabalhar durante o semestre;
Leia maisRemote 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 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 mais9 - Sincronização e Comunicação entre Processos
1 9 - Sincronização e Comunicação entre Processos 91 Introdução Em um sistema multitarefa, seja com um único processador ou com mais de um processador ou ainda com vários núcleos por processador, os processos
Leia maisGeração de código intermediário. Novembro 2006
Geração de código intermediário Novembro 2006 Introdução Vamos agora explorar as questões envolvidas na transformação do código fonte em uma possível representação intermediária Como vimos, nas ações semânticas
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 maisRevisã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 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 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 maisConceito de processo como uma unidade de trabalho em um sistema moderno de tempo compartilhado. Estados de um processo.
gerenciamento de processos Objetivo Compreender a maneira como o sistema operacional controla o gerenciamento dos programas em execução por meio do gerenciamento de processos no qual cada processo representa
Leia maisO modelo do computador
O modelo do computador Objetivos: Mostrar como é o funcionamento dos computadores modernos Mostrar as limitações a que estamos sujeitos quando programamos Histórico Os primeiros computadores são da década
Leia maisSintaxe e Semântica. Fases da Compilação. programa fonte
Sintaxe e Semântica mleal@inf.puc-rio.br Fases da Compilação programa fonte tokens parse tree árvore anotada ou outra forma intermediária código intermediário código objeto código objeto otimizado scanner
Leia maisPROGRAMAÇÃO CONCORRENTE
PROGRAMAÇÃO CONCORRENTE A programação concorrente foi usada inicialmente na construção de sistemas operacionais. Atualmente, ela é usada para desenvolver aplicações em todas as áreas da computação. Este
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 maisConcorrência e Paralelismo
Concorrência e Paralelismo mleal@inf.puc-rio.br 1 Programação Concorrente e Paralela Na programação sequencial todas as instruções de um programa são executadas através de uma única linha de execução Na
Leia maisMC504 - Sistemas Operacionais
MC504 - Sistemas Operacionais Algoritmo da Padaria Problema dos Produtores e Consumidores Primitivas de Sincronização Islene Calciolari Garcia Primeiro Semestre de 2014 Sumário 1 Algoritmo da Padaria 2
Leia maisCurso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura
UFPI CCN DIE Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura O projeto Desenvolver um compilador de um subconjunto básico da linguagem PORTUGOL.
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 maisPROGRAMA DE DISCIPLINA
PROGRAMA DE DISCIPLINA Disciplina: Introdução à Programação Carga horária total: 60 Carga horária teórica: 0 Carga horária prática: 60 Código da Disciplina: CCMP0041 Período de oferta: 2010.2 Turma: CA
Leia maisIFTO TÉCNICO EM INFORMÁTICA DESENVOLVIMENTO DE SISTEMAS AULA 01
IFTO TÉCNICO EM INFORMÁTICA DESENVOLVIMENTO DE SISTEMAS AULA 01 Prof. Manoel Campos da Silva Filho Tecnólogo em Processamento de Dados / Unitins Mestre em Engenharia Elétrica / UnB http://lab.ifto.edu.br/~mcampos
Leia maisProgramação Básica em Arduino Aula 2
Programação Básica em Arduino Aula 2 Execução: Laboratório de Automação e Robótica Móvel Variáveis são lugares (posições) na memória principal que servem para armazenar dados. As variáveis são acessadas
Leia maisLinguagem de Programação Introdução a Linguagem Java
Linguagem de Programação Introdução a Linguagem Java Rafael Silva Guimarães Instituto Federal do Espírito Santo Campus Cachoeiro de Itapemirim Definição A linguagem Java foi desenvolvida pela Sun Microsystems,
Leia maisSistemas Operacionais
Sistemas Operacionais Processos Semáforos Semáforos Mecanismo de sincronização que não requer espera ocupada Dijkstra propôs usar uma variável inteira para contar o n o de WAKEUPs para uso futuro Menos
Leia maisManipulação de Arquivos em Pascal
Manipulação de Arquivos em Pascal Estrutura de Dados II Aula 03 UFS - DComp Adaptados a partir do material da Profa. Kenia Kodel Cox 1 Para implementar programa infantil para ordenação (alfabética) de
Leia maisAlgoritmos e Linguagem de Programação I
Algoritmos e Linguagem de Programação I Roberto Ferreira roberto.ferreira@lapa.ifbaiano.edu.br 2014.1 Módulo I Aula 4 Introdução ao C Linguagem de Programação É um conjunto de regras sintáticas e semânticas
Leia maisSistemas Operacionais. Técnicas de Implementação de Exclusão Mútua. Aula VI Prof. Rosemary Silveira
Sistemas Operacionais Técnicas de Implementação de Exclusão Mútua Aula VI Prof. Rosemary Silveira Tópicos de Apresentação Condições de Corrida Técnicas de Implementação de Exclusão Mútua Condições de Corrida
Leia maisDisciplina: 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 maisCURSO DE ENGENHARIA DE COMPUTAÇÃO Renovação de Reconhecimento pela Portaria n 123 de 09/07/12 DOU de 10/07/12 PLANO DE CURSO
CURSO DE ENGENHARIA DE COMPUTAÇÃO Renovação de Reconhecimento pela Portaria n 123 de 09/07/12 DOU de 10/07/12 Componente Curricular: Sistemas Concorrentes e Distribuídos Código: ENG - 436 Pré-requisito:
Leia maisCurso Técnico em Redes
Curso Técnico em Redes Prof. Airton Ribeiro - 2012 Histórico das Linguagens de Programação O que é? É um método padronizado para expressar instruções para um computador. É um conjunto de regras sintáticas
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 maisAlgumas notas sobre PASCAL
Algumas notas sobre PASCAL PARTE I Anjolina Grisi de Oliveira 1 Um programa em PASCAL Esse texto inclui algumas notas sobre a linguagem PASCAL. As diferenças existentes entre os diversos compiladores não
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 maisComponentes 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 maisSockets em Ruby. Curso de Tecnologia em Redes de Computadores Programação para Redes
Sockets em Ruby Curso de Tecnologia em Redes de Computadores Programação para Redes Sockets em Ruby A biblioteca padrão de Ruby oferece um conjunto de classes para a manipulação de sockets. require socket
Leia maisSistemas Operacionais. Capítulo 7 Sincronização e Comunicação entre Processos
Sistemas Operacionais Capítulo 7 Sincronização e Comunicação entre Processos Baseado no Livro e Material de Apoio de Arquitetura de Sistemas Operacionais 3ª edição - LTC - 2004 Francis Berenger Machado
Leia maisProgramação WEB. Prof. André Gustavo Duarte de Almeida andre.almeida@ifrn.edu.br docente.ifrn.edu.br/andrealmeida. Aula III Introdução PHP
Programação WEB Prof. André Gustavo Duarte de Almeida andre.almeida@ifrn.edu.br docente.ifrn.edu.br/andrealmeida Aula III Introdução PHP Introdução PHP PHP=Hypertext Pre-Processor Linguagem de script open
Leia maisProf. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO
Comunicação e Sincronismo entre processos Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO 1 Comunicação entre Processos Processos
Leia mais7. ESTRUTURAS DE DADOS ESTÁTICAS E DINÂMICAS
7. ESTRUTURAS DE DADOS ESTÁTICAS E DINÂMICAS Até... 7.1 Alocação Estática Alocação de Espaço em Memória Como já foi visto anteriormente, a memória de um computador compõe-se de uma sequência de palavras,
Leia maisSíntese. Compiladores. Geração de código intermediário. Linguagens Intermediárias. Modelo Clássico. Linguagens Intermediárias. Código intermediário
Síntese Compiladores Código intermediário 1 Os assuntos apresentados trazem respostas às perguntas seguintes: 1. Pode a memória ser alocada dinamicamente? 2. Pode a memória ser liberada explicitamente?
Leia maisGeração de código. Ivan Ricarte INTRODUÇÃO À COMPILAÇÃO
Geração de código Ivan Ricarte 2008 Sumário Geração de código intermediário Código de três endereços Notação pós-fixa Otimização de código Heurísticas de otimização Geração de código em linguagem simbólica
Leia maisProblemas Clássicos de Sincronização
Problemas Clássicos de Sincronização Filósofos Jantando Filósofo i: Solução Óbvia O problema dos filósofos jantando foi introduzido e solucionado por Dijkstra em 1965. Neste problema, 5 filósofos estão
Leia maisAlgoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões
Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões Professor: Max Pereira http://paginas.unisul.br/max.pereira Ciência da Computação Primeiro Programa em Java public class OlaPessoal
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 maisPROGRAMAÇÃO II 3. FILA DINÂMICA
3. FILA DINÂMICA PROGRAMAÇÃO II Prof. Jean Eduardo Glazar Uma fila é um tipo especial de lista na qual todas as inserções são feitas sempre depois do fim e as deleções no início. Por isso também recebe
Leia mais2 echo "PHP e outros.";
PHP (Hypertext Preprocessor) Antes de qualquer coisa, precisamos entender o que é o PHP: O PHP(Hypertext Preprocessor) é uma linguagem interpretada gratuita, usada originalmente apenas para o desenvolvimento
Leia mais(Aula 17) Threads em Java
(Aula 17) Threads em Java Difícil As Threads thread threads de emjava classificar sãogerenciadaspelajvm. podemser com user criadasdas thread ou kernel Profa. Patrícia A seguintesmaneiras: Fazendo extend
Leia maisMétodos de Sincronização do Kernel
Métodos de Sincronização do Kernel Linux Kernel Development Second Edition By Robert Love Tiago Souza Azevedo Operações Atômicas Operações atômicas são instruções que executam atomicamente sem interrupção.
Leia maisSistemas 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 maisComputaçã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 maisINTRODUÇÃO OBJECT PASCAL/DELPHI
Introdução Object Pascal/Delphi 1 INTRODUÇÃO OBJECT PASCAL/DELPHI Objetivo Demonstrar a sintaxe e a semântica do Object Pascal e a forma como esse linguagem de programação será aplicada na disciplina de
Leia maisSIMULADOR DE ROTEAMENTO DE PACOTES (V. 3 20/05/2010)
SIMULADOR DE ROTEAMENTO DE PACOTES (V. 3 20/05/2010) OBJETIVO GERAL Este trabalho possui o objetivo de exercitar a lógica de programação dos alunos do Terceiro ano do Curso de BSI e também desenvolver
Leia maisCurso Adonai QUESTÕES Disciplina Linguagem JAVA
1) Qual será o valor da string c, caso o programa rode com a seguinte linha de comando? > java Teste um dois tres public class Teste { public static void main(string[] args) { String a = args[0]; String
Leia maisIES-300. Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Me. Álvaro d Arce alvaro@darce.com.br
IES-300 Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Me. Álvaro d Arce alvaro@darce.com.br Teste de Caixa Branca 2 Teste de Componentes: Caixa Branca Teste de Caixa Branca Grafo de Fluxo de
Leia maisSistemas Operacionais INF 09344 Prof. José Gonçalves
Sistemas Operacionais INF 09344 Prof. José Gonçalves 1 o Trabalho de Programação Período: 2014/1 Data de Entrega: 2/6/2014 Parte I. Usando Fork e Wait Você deve criar um programa C partei.c. Durante a
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 maisNesta aula serão apresentados alguns comandos de condição, repetição e gráficos.
3 COMANDOS CONDICIONAIS E DE LAÇO Nesta aula serão apresentados alguns comandos de condição, repetição e gráficos. 3.1 COMANDOS CONDICIONAIS 3.1.1 Comando IF Como o próprio nome já indica, estes comandos
Leia maisCURSO DE PROGRAMAÇÃO EM JAVA
CURSO DE PROGRAMAÇÃO EM JAVA Introdução para Iniciantes Prof. M.Sc. Daniel Calife Índice 1 - A programação e a Linguagem Java. 1.1 1.2 1.3 1.4 Linguagens de Programação Java JDK IDE 2 - Criando o primeiro
Leia mais- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação
Programação 1I Prof. Osório Fila / Alocação Estática Pag.: 1 - UNIVERSIAE O VALE O RIO OS SINOS IÊNIAS EXATAS E TENOLÓGIAS urso: Informática / iência da omputação Programação II isciplina: Linguagem de
Leia maisCiclo de Vida de um Processo
Nas aulas anteriores Ciclo de Vida de um Processo Marcelo Johann Conceito de Processo Mecanismo de Programação em C/UNIX Continuando Interrupções TRAP Chaveamento de Contexto Chamadas de Sistema INF01142
Leia maisNotas da Aula 4 - Fundamentos de Sistemas Operacionais
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
Leia maisUniversidade da Beira Interior. Sistemas Distribuídos
Folha 6-1 Sincronização de Threads A sincronização de Threads em Java é baseada no conceito do Monitor (de Hoare). Cada objecto Java tem associado um monitor (ou lock ) que pode ser activado se a palavra
Leia maisProgramação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada
Programação Estruturada Programação Estruturada Paradigmas de Linguagens de Programação As linguagens desse paradigma são muitas vezes chamadas de linguagens convencionais, procedurais ou imperativas.
Leia maisJSP - ORIENTADO A OBJETOS
JSP Orientação a Objetos... 2 CLASSE:... 2 MÉTODOS:... 2 Método de Retorno... 2 Método de Execução... 2 Tipos de Dados... 3 Boolean... 3 Float... 3 Integer... 4 String... 4 Array... 4 Primeira:... 4 Segunda:...
Leia maisProgramação Orientada a Objetos Threads
Threads Prof. Edwar Saliba Júnior Janeiro de 2013 1 Introdução Multithreading: fornece múltiplas threads de execução para a aplicação; permite que programas realizem tarefas concorrentemente; às vezes
Leia maisUNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA
Responda 1) Quem desenvolveu a linguagem C? Quando? 2) Existe alguma norma sobre a sintaxe da linguagem C? 3) Quais são os tipos básicos de dados disponíveis na linguagem C? 4) Quais são as principais
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 maisSISTEMAS OPERACIONAIS
SISTEMAS OPERACIONAIS Processos e Threads Andreza Leite andreza.leite@univasf.edu.br Plano de Aula 2 Gerenciamento de Processos Threads Aplicações com múltiplas Threads Concorrência e Compartilhamento
Leia maisThreads em Java. Sistemas Operacionais - Laboratório Professor Machado
Threads em Java Sistemas Operacionais - Laboratório Professor Machado 1 Conceitos de Programação Concorrente Uma unidade concorrente é um componente de um programa que não exige a execução seqüencial,
Leia maisPROGRAMA DE DISCIPLINA
PROGRAMA DE DISCIPLINA Disciplina: INTRODUÇÃO À PROGRAMAÇÃO Carga horária total: 60 h Carga horária teórica: 30 h Carga horária prática: 30 h Código da Disciplina: CCMP0041 Período de oferta: 2015.2 Turma:
Leia maisSafeweb DLL biblioteca para desenvolvimento
Safeweb DLL biblioteca para desenvolvimento A DLL é um componente que contém uma biblioteca de métodos que auxiliam no desenvolvimento e integração dos serviços de Nota Fiscal eletrônica com os sistemas
Leia maisSistemas Operacionais
Sistemas Operacionais Prof. Jó Ueyama Apresentação baseada nos slides da Profa. Kalinka Castelo Branco, do Prof. Dr. Antônio Carlos Sementille e da Profa. Dra. Luciana A. F. Martimiano e nas transparências
Leia maisSistemas 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 maisOPERADORES E ESTRUTURAS DE CONTROLE
OPERADORES E ESTRUTURAS DE CONTROLE 3.1 Operadores Os operadores indicam o tipo de operação matemática que será executada gerando novos valores a partir de um ou mais operadores. São muito utilizados em
Leia maisAULA 1: PARADIGMAS DE PROGRAMAÇÃO
1 AULA 1: PARADIGMAS DE PROGRAMAÇÃO Curso: Ciência da Computação Profª.: Luciana Balieiro Cosme Ementa 2 Programação Imperativa. Programação Paralela e Concorrente. Programação Lógica. Programação Funcional.
Leia maisUNIVERSIDADE DO OESTE DE SANTA CATARINA CAMPUS DE SÃO MIGUEL DO OESTE
UNIVERSIDADE DO OESTE DE SANTA CATARINA CAMPUS DE SÃO MIGUEL DO OESTE CURSO: CIÊNCIAS DA COMPUTAÇÃO DISCIPLINA: COMPILADORES PROFESSOR: JOHNI DOUGLAS MARANGON Back-End Compilação 1. Compilação etapa Back-end
Leia maisUm processo sob UNIX ocupa uma área de memória formada basicamente por 3 partes:
Processos O UNIX é um sistema operacional multitarefa (suporta multiprogramação). Isso significa que ele é capaz de gerenciar a execução simultânea de vários programas. O termo processo é usado para caracterizar
Leia maisSistemas Operativos: Concorrência (Parte 2)
Sistemas Operativos: Concorrência (Parte 2) Pedro F. Souto (pfs@fe.up.pt) March 23, 2012 Sumário Instruções read-modify-write Atómicas. Problema do Lost Wakeup Semáforos Monitores Variáveis de Condição
Leia maisCurso : Tecnologia em Desenvolvimento de Sistemas - AEMS
Curso : Tecnologia em Desenvolvimento de Sistemas - AEMS Série : 3 º Período - 1 º Semestre de 2011 Professora : Elzi Ap. Gil 3. LISTAS LINEARES PARTE - III Disciplina - Estrutura de Dados Segundo Pereira(2002),
Leia maisIntrodução a POO. Introdução a Linguagem C++ e POO
Introdução a POO Marcio Santi Linguagem C++ Introdução a Linguagem C++ e POO Programação Orientada a Objetos (POO) e C++ Recursos C++ não relacionados às classes Incompatibilidades entre C e C++ Classes
Leia mais