Programação Concorrente na Linguagem Vale 4

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

Download "Programação Concorrente na Linguagem Vale 4"

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 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 mais

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

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

Leia mais

Sistemas Operacionais

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

Leia mais

Monitores. Setembro de 2009. Monitores

Monitores. 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 mais

Fundamentos. Módulo 6: Sincronização de Processos. Bounded-Buffer (Cont.) Bounded-Buffer

Fundamentos. 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 mais

9 - Sincronização e Comunicação entre Processos

9 - 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 mais

Sincronização. Cooperação entre Processos

Sincronizaçã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 mais

BC1518-Sistemas Operacionais. Prof. Marcelo Z. do Nascimento marcelo.nascimento@ufabc.edu.br

BC1518-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 mais

Sistemas Operacionais

Sistemas 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 mais

Conceito de processo como uma unidade de trabalho em um sistema moderno de tempo compartilhado. Estados de um processo.

Conceito 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 mais

Módulo 4: Processos. Conceito de Processo. Diagrama de Estados de Processos. Estados de Processo

Módulo 4: Processos. Conceito de Processo. Diagrama de Estados de Processos. Estados de Processo Módulo 4: Processos Conceito de Processo Conceito de Processo Escalonamento de Processos Operações com Processos Processos Cooperativos Comunicação entre Processos Um sistema operacional executa uma variedade

Leia mais

Sincronização de Processos (4) Monitores

Sincronizaçã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 mais

Concorrência e Paralelismo

Concorrê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 mais

Sistemas 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 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 mais

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

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

Leia mais

S.O.: Conceitos Básicos

S.O.: Conceitos Básicos S.O.: Conceitos Básicos Camada de software localizada entre o hardware e os programas que executam tarefas para o usuário; Acessa os periféricos Entrada e Saída Esconde os detalhes do hardware para o programador

Leia mais

Modelagem e implementação de programas concorrentes

Modelagem e implementação de programas concorrentes Modelagem e implementação de programas concorrentes Aula 10 DCC-UFMG 2010 Bibliograa Andrews + Ben Ari Da aula passada Se não posso adquirir o lock... Continuar tentando: Spinning, Busy wait (espera ocupada)

Leia mais

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

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

Leia mais

Módulo 4: Processos. Conceito de Processo. Escalonamento de processos Operações sobre processos Processos cooperantes Comunicação entre processos

Módulo 4: Processos. Conceito de Processo. Escalonamento de processos Operações sobre processos Processos cooperantes Comunicação entre processos Módulo 4: Processos Conceito de Processo Escalonamento de processos Operações sobre processos Processos cooperantes Comunicação entre processos 4.1 Conceito de Processo Um Sistema Operacional executa uma

Leia mais

Programação Concorrente

Programaçã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 mais

Revisão Ultima aula [1/2]

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

Leia mais

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

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO 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 mais

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

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

Leia mais

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

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

Leia mais

Sistemas Operativos: Concorrência (Parte 2)

Sistemas 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 mais

MC504 - Sistemas Operacionais

MC504 - 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 mais

Computação Concorrente (MAB-117) Monitores

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

Leia mais

Capítulo 6: Sincronização de Processos

Capítulo 6: Sincronização de Processos Capítulo 6: Sincronização de Processos Sobre a apresentação (About the slides) Os slides e figuras dessa apresentação foram criados por Silberschatz, Galvin e Gagne em 2005. Esse apresentação foi modificada

Leia mais

Universidade Federal da Paraíba

Universidade Federal da Paraíba Universidade Federal da Paraíba Mestrado em Informática Fora de Sede Universidade Tiradentes Aracaju - Sergipe Disciplina Sistemas Operacionais Professor Jacques Philippe Sauvé Aluno José Maria Rodrigues

Leia mais

Sistemas Operacionais Aula 04: Processos (Parte B) Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com

Sistemas Operacionais Aula 04: Processos (Parte B) Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Sistemas Operacionais Aula 04: Processos (Parte B) Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Objetivos Descrever as diversas características dos processos, inclusive o scheduling, a

Leia mais

Sistemas Distribuídos

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

Leia mais

Representação de Algoritmos - Linguagens de Programação

Representaçã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 mais

04/03/2012. A fila é uma outra estrutura de dados muito utilizada em computação.

04/03/2012. A fila é uma outra estrutura de dados muito utilizada em computação. A fila é uma outra estrutura de dados muito utilizada em computação. Estrutura de Dados É uma analogia natural com o conceito de fila que usamos no nosso dia a dia: os elementos saem da fila seguindo a

Leia mais

Sistemas Operacionais

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

Leia mais

Sintaxe e Semântica. Fases da Compilação. programa fonte

Sintaxe 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 mais

Sincronização de Processos (1) Mecanismos de busy wait

Sincronização de Processos (1) Mecanismos de busy wait Sincronização de Processos (1) Mecanismos de busy wait Condições de Corrida Exemplo: Fila de impressão. Qualquer processo que queira imprimir precisa colocar o seu documento na fila de impressão (compartilhada).

Leia mais

Processos. Adão de Melo Neto

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

Leia mais

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação

- 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 mais

Notas da Aula 6 - Fundamentos de Sistemas Operacionais

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

Leia mais

Sockets 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 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 mais

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 6 Filas

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 6 Filas UNIP - Ciência da Computação e Sistemas de Informação Estrutura de Dados AULA 6 Filas Estrutura de Dados A Estrutura de Dados Fila Fila é uma estrutura de dados usada em programação, que tem regras para

Leia mais

Algumas notas sobre PASCAL

Algumas 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 mais

Metas do Mach Abstrações do Mach

Metas do Mach Abstrações do Mach 0DFK O projeto Mach é originário da Universidade Carnegie-Mellon e tem como base um sistema chamado RIG (Rochester Intelligent Gateway) da Universidade de Rochester em 1975. Na sua primeira versão (1986)

Leia mais

7. ESTRUTURAS DE DADOS ESTÁTICAS E DINÂMICAS

7. 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 mais

Sí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. 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 mais

Problemas Clássicos de Sincronização

Problemas 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 mais

IFTO TÉCNICO EM INFORMÁTICA DESENVOLVIMENTO DE SISTEMAS AULA 01

IFTO 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 mais

Programação I. Departamento de Engenharia Rural Centro de Ciências Agrárias

Programação I. Departamento de Engenharia Rural Centro de Ciências Agrárias Departamento de Engenharia Rural Centro de Ciências Agrárias Programação I Prof. Bruno Vilela Oliveira bruno@cca.ufes.br http://www.brunovilela.webnode.com.br Aula 08 Programação em pascal Pascal Pascal

Leia mais

(Aula 17) Threads em Java

(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 mais

Capítulo 2 Processos e Threads Prof. Fernando Freitas

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

Leia mais

Sistemas Operacionais: Threads

Sistemas Operacionais: Threads Sistemas Operacionais: Threads Threads Única linha de execução x múltiplas linhas de execução Benefícios Tempo de resposta Compartilhamento de recursos Economia de recursos Desempenho em arquiteturas multiprocessadas

Leia mais

Notas da Aula 4 - Fundamentos de Sistemas Operacionais

Notas 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 mais

Filas. A ordem de saída corresponde diretamente à ordem de entrada dos elementos. Fila de caixa bancário

Filas. A ordem de saída corresponde diretamente à ordem de entrada dos elementos. Fila de caixa bancário Filas Fila é um tipo de lista linear onde as inserções são realizadas num extremo (final da Fila) e as remoções restritas ao outro (começo da Fila). O primeiro a entrar é o primeiro a sair e último a entrar

Leia mais

CURSO 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 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 mais

Estrutura 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 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 mais

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

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

Leia mais

SISTEMAS OPERACIONAIS

SISTEMAS 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 mais

Microsoft Visual Studio Express 2012 for Windows Desktop

Microsoft Visual Studio Express 2012 for Windows Desktop Microsoft Visual Studio Express 2012 for Windows Desktop Apresentação da ferramenta Professor: Danilo Giacobo Página pessoal: www.danilogiacobo.eti.br E-mail: danilogiacobo@gmail.com 1 Introdução Visual

Leia mais

SQL Procedural. Josino Rodrigues Neto josinon@gmail.com

SQL Procedural. Josino Rodrigues Neto josinon@gmail.com SQL Procedural Josino Rodrigues Neto josinon@gmail.com SQL Procedural Agregada em SQL-92 As ferramentas têm nomes para suas linguagens SQL procedurais/embutidas Oracle : PL/SQL Postgres PL/Pgsql SQL Server

Leia mais

ARQUIVOS. Os arquivos criados em meios magnéticos poderão ser acessados para leitura e escrita na forma seqüencial, direta ou indexada.

ARQUIVOS. Os arquivos criados em meios magnéticos poderão ser acessados para leitura e escrita na forma seqüencial, direta ou indexada. Texto retirado e adaptado da apostila A Linguagem Pascal, disponível no site http://www.portaldaprogramacao.com (autor: desconhecido) ARQUIVOS Anteriormente, foi estudado o conceito de tabelas em memória

Leia mais

processo internamente dadospara serem

processo internamente dadospara serem Aula 14 Monitores Sincronização e Troca de de Processos Mensagens (5) Monitores Sugeridos Profa. Patrícia Motivação: (1974) sincronização (forçar) concorrentes. (1) por Dijkstra(1971) e desenvolvidos por

Leia mais

Sistemas Operacionais INF 09344 Prof. José Gonçalves

Sistemas 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 mais

PROGRAMAÇÃO II 3. FILA DINÂMICA

PROGRAMAÇÃ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 mais

O que veremos nesta aula? Principais Aspectos de Sistemas Operacionais. Mas afinal, para que serve um sistema operacional? Gerenciando o hardware (--

O que veremos nesta aula? Principais Aspectos de Sistemas Operacionais. Mas afinal, para que serve um sistema operacional? Gerenciando o hardware (-- O que veremos nesta aula? Principais Aspectos de Sistemas Operacionais Arquitetura de Computadores e Software Básico Flávia Maristela (flavia@flaviamaristela.com) Tudo o que já vimos antes... Visão interna

Leia mais

Resumo da Introdução de Prática de Programação com C. A Linguagem C

Resumo da Introdução de Prática de Programação com C. A Linguagem C Resumo da Introdução de Prática de Programação com C A Linguagem C O C nasceu na década de 70. Seu inventor, Dennis Ritchie, implementou-o pela primeira vez usando um DEC PDP-11 rodando o sistema operacional

Leia mais

Sistemas Operativos I

Sistemas Operativos I Processos Maria João Viamonte / Luis Lino Ferreira Fevereiro de 2006 Processo Fluxo de actividade autónomo que executa um conjunto de acções que são determinadas por um programa Maria João Viamonte / Luis

Leia mais

DESENVOLVIMENTO DE SOFTWARE

DESENVOLVIMENTO DE SOFTWARE VARIAÁ VEL Antes de iniciarmos os comandos referentes a Banco de Dados, precisamos de uma breve descrição técnica sobre Variáveis que serão uma constante em programação seja qual for sua forma de leitura.

Leia mais

Métodos de Sincronização do Kernel

Mé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 mais

APOSTILA DE VBA PARA EXCEL MARCOS DE BARROS OUTUBRO DE 2002 1 - RISK MANAGEMENT

APOSTILA DE VBA PARA EXCEL MARCOS DE BARROS OUTUBRO DE 2002 1 - RISK MANAGEMENT APOSTILA DE VBA PARA EXCEL MARCOS DE BARROS OUTUBRO DE 2002 1 - RISK MANAGEMENT ÍNDICE INTRODUÇÃO AO VBA 5 Constantes 5 Variáveis 5 Tipos de variáveis e constantes 6 O Comando Option Explicit 7 Comentários

Leia mais

Algoritmos em Javascript

Algoritmos em Javascript Algoritmos em Javascript Sumário Algoritmos 1 O que é um programa? 1 Entrada e Saída de Dados 3 Programando 4 O que é necessário para programar 4 em JavaScript? Variáveis 5 Tipos de Variáveis 6 Arrays

Leia mais

Programação Concorrente Processos e Threads

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

Leia mais

Capítulo 2. Processos e Threads. Processos e threads

Capítulo 2. Processos e Threads. Processos e threads Capítulo 2 Processos e Threads 1 Processos e threads 1. Processos 2. Threads 3. Comunicação inter processos (IPC) 4. Problemas clássicos de IPC 5. Escalonamento (Scheduling) 2 1 Processos: O modelo de

Leia mais

Ciclo de Vida de um Processo

Ciclo 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 mais

Nesta aula serão apresentados alguns comandos de condição, repetição e gráficos.

Nesta 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 mais

Geração de Código Intermediário. Tradução dirigida por sintaxe. Código de três endereços - exemplo. Código de Três Endereços

Geração de Código Intermediário. Tradução dirigida por sintaxe. Código de três endereços - exemplo. Código de Três Endereços Geração de Código Intermediário Tradução dirigida por sintaxe Vantagens do uso de uma notação intermediária: facilidade de retargetting: geração de código para vários processadores diferentes, reusando

Leia mais

Geração de código intermediário. Novembro 2006

Geraçã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 mais

Comunicação entre Processos Canal de comunicação Arquitetura da comunicação Modelos de comunicação

Comunicação entre Processos Canal de comunicação Arquitetura da comunicação Modelos de comunicação Comunicação entre Processos Canal de comunicação Arquitetura da comunicação Modelos de comunicação Sistemas Operativos 2015-2016 O que construímos até agora... A abstração de processo 2 A possibilidade

Leia mais

História. Nasceu em 1993, numa discussão entre Yuhikiro Matsumoto e um colega.

História. Nasceu em 1993, numa discussão entre Yuhikiro Matsumoto e um colega. 1 1. Overview 2 História Nasceu em 1993, numa discussão entre Yuhikiro Matsumoto e um colega. Matz procurava por uma linguagem de script orientada a objetos. A primeira versão estável de Ruby (1.2) foi

Leia mais

Programação Orientada a Objetos Threads

Programaçã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 mais

PROGRAMA DE DISCIPLINA

PROGRAMA 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 mais

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Curso 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 mais

MÓDULO 02 PROCESSOS E THREADS PROCESSOS e THREADS

MÓDULO 02 PROCESSOS E THREADS PROCESSOS e THREADS MÓDULO 02 PROCESSOS E THREADS PROCESSOS e THREADS 1. ATIVIDADE 01 Verificar a criação de um processo filho (que imprime de 51 a 100) que rodará concorrentemente com o processo pai (que imprime de 1 a 50)

Leia mais

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - Módulo 1 - GERÊNCIA DE PROCESSOS Antes de abordarmos os temas específicos relacionados a Sistemas Operacionais Abertos é necessário revisarmos a teoria da disciplina Sistemas Operacionais, onde o Universitário

Leia mais

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

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

Leia mais

Threads em Java. Sistemas Operacionais - Laboratório Professor Machado

Threads 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 mais

PostgreSQL o SGBD das 1001 linguagens Diogo Biazus diogob@gmail.com

PostgreSQL o SGBD das 1001 linguagens Diogo Biazus diogob@gmail.com PostgreSQL o SGBD das 1001 linguagens Diogo Biazus diogob@gmail.com Um dos grandes diferenciais do PostgreSQL em relação à maioria dos outros sistemas de bancos de dados é a presença de diversas linguagens

Leia mais

LINGUAGEM C: DESCOMPLICADA. Prof. André R. Backes

LINGUAGEM C: DESCOMPLICADA. Prof. André R. Backes LINGUAGEM C: DESCOMPLICADA Prof. André R. Backes 1 COMANDOS DE CONTROLE CONDICIONAL Os programas escritos até o momento são programas sequeciais: um comando é executado após o outro, do começo ao fim do

Leia mais

INTRODUÇÃO OBJECT PASCAL/DELPHI

INTRODUÇÃ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 mais

Sistemas Operacionais 2014 Gerência de Processos. Alexandre Augusto Giron

Sistemas Operacionais 2014 Gerência de Processos. Alexandre Augusto Giron Sistemas Operacionais 2014 Gerência de Processos Alexandre Augusto Giron ROTEIRO Revisão Processos Escalonamento de processos Operações de processos Comunicação Cooperação Threads Escalonamento de CPU

Leia mais

Resumo da última aula. Compiladores. Tipos. Regras semânticas. Expressões de tipos. Análise Semântica e checagem de tipos.

Resumo da última aula. Compiladores. Tipos. Regras semânticas. Expressões de tipos. Análise Semântica e checagem de tipos. Resumo da última aula Compiladores Análise semântica Verificação de tipos 1 Implementação: Esquemas S-atribuídos: Mecanismo bottom-up direto Esquemas L-atribuídos: Mecanismo top-down: Necessita gramática

Leia mais

III - Processos e Threads

III - Processos e Threads III - Processos e Threads P rocesso é geralmente entendido como um programa em execução porém, na realidade, trata-se de uma estrutura mais complexa que contém, além do programa no seu formato executável,

Leia mais

Programação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada

Programaçã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 mais

Geração de código. Ivan Ricarte INTRODUÇÃO À COMPILAÇÃO

Geraçã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 mais

Introdução. A verificação de tipos pode ser estática e dinâmica

Introdução. A verificação de tipos pode ser estática e dinâmica Análise Semântica Introdução Verifica se as construções sintaticamente corretas possuem significado lógico dentro da linguagem Verifica a consistência da declaração e uso dos identificadores Além disso,

Leia mais

ESTRUTURAS DE DADOS I. Notas de Aula. Prof. Dr. Gilberto Nakamiti

ESTRUTURAS DE DADOS I. Notas de Aula. Prof. Dr. Gilberto Nakamiti ESTRUTURAS DE DADOS I Notas de Aula 1 SUMÁRIO 1. INTRODUÇÃO... 2 1.1 Array (vetores)... 2 2. BUSCA DE ELEMENTOS... 3 2.1 Busca Seqüencial... 3 2.2 Busca Binária... 3 2.3 Busca Indexada... 3 2.4 Busca Hash...

Leia mais

Conjunto (set) O tipo estruturado set representa, em Pascal, um conjunto de objectos de um dado tipo;

Conjunto (set) O tipo estruturado set representa, em Pascal, um conjunto de objectos de um dado tipo; Conjunto (set) O tipo estruturado set representa, em Pascal, um conjunto de objectos de um dado tipo; O tipo de dados tem por base um tipo simples (enumerável); Na verdade, um set representa o conjunto

Leia mais

Acadêmico: Fabiano Bender. Orientadora: Joyce Martins FURB 2012/2

Acadêmico: Fabiano Bender. Orientadora: Joyce Martins FURB 2012/2 Acadêmico: Fabiano Bender Orientadora: Joyce Martins FURB 2012/2 Introdução Objetivos Fundamentação teórica Desenvolvimento do aplicativo Resultados Conclusão Extensões Ampla utilização dos SGBDs Dificuldades

Leia mais

Programaçã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 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 mais

Curso de Iniciação ao Access Basic (I) CONTEÚDOS

Curso de Iniciação ao Access Basic (I) CONTEÚDOS Curso de Iniciação ao Access Basic (I) CONTEÚDOS 1. A Linguagem Access Basic. 2. Módulos e Procedimentos. 3. Usar o Access: 3.1. Criar uma Base de Dados: 3.1.1. Criar uma nova Base de Dados. 3.1.2. Criar

Leia mais

Sistemas Operacionais. Capítulo 7 Sincronização e Comunicação entre Processos

Sistemas 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 mais