• Nenhum resultado encontrado

Sistemas Operacionais Aula 4

N/A
N/A
Protected

Academic year: 2021

Share "Sistemas Operacionais Aula 4"

Copied!
102
0
0

Texto

(1)

Anderson L. S. Moreira

[email protected] http://dase.ifpe.edu.br/~alsm

Curso de Análise e Desenvolvimento

de Sistemas de Informação

Recife - PE

(2)
(3)

Créditos

Professor: Anderson L. S. Moreira Disciplina: Sistemas Operacionais

Home-page:

 http://dase.ifpe.edu.br/~alsm

Aula 4 mostra os conceitos iniciais de processos e

comunicação entre processos. Iremos ver noções de pai e

filho entre processos e criação nos ambientes Windows e

Linux.

(4)

Agenda

Introdução

Estrutura do processo Estados do processo

Mudanças de estado do processo Criação e eliminação de processos

Processos independentes, subprocessos e threads

Processos foreground e background

Processos do sistema operacional Processos CPU-bound e I/O-bound

(5)

Introdução – Multiprogramação (revisão)

Execução, em paralelo, de múltiplos programas na mesma

máquina;

Cada instância de um programa em execução denomina-se

um processo;

Considerando um grau de tempo fino, o paralelismo não é

real;

Pseudoparalelismo

ou

pseudoconcorrência

– implementação

de sistemas multiprogramados sobre um computador com

um único processador

(6)
(7)

Introdução

Um programa é:

 Uma seqüência finita de instruções;

 Uma entidade passiva (que não se altera com o passar do tempo);  Armazenado em disco.

Um processo é:

 Uma abstração que representa um programa em execução;

 Uma entidade dinâmica: seu estado se altera conforme for executando;  Armazenado na memória.

(8)

Processos vs. Programas

Programa

= Arquivo executável (sem atividade);

Um

processo

é um objeto do sistema operacional que suporta

a execução dos programas;

Um

processo

pode, durante a sua vida, executar diversos

programas;

Um

programa

ou partes de um programa podem ser

compartilhados por diversos processos (ex.: biblioteca

(9)

Estrutura do Processo

Estrutura do processo Programa Contexto de Software Contexto de Hardware Espaço de Endereçamento

(10)

Estrutura do Processo

Espaço de endereçamento (virtual):

 Conjunto de posições de memória acessíveis;  Código, dados, e pilha;

 Dimensão variável.

Contexto de software:

 As instruções do processador executáveis em modo usuário;  As funções do sistema operacional;

Contexto de hardware (estado interno):

 Valor dos registradores do processador;

 Toda a informação necessária para retomar a execução do processo;  Memorizado quando o processo é retirado de execução

(11)

Contexto de Hardware

Mudança de

contexto

Carrega registradores do Processo B Carrega registradores do Processo A Sistema Operacional Salva registradores do Processo A executando executando executando Salva registradores do Processo B Processo A Processo B

(12)

Modelo: Objeto “Processo”

Propriedades

Identificador;

Programa;

Espaço de Endereçamento;

Prioridade;

Processo pai;

Canais de Entrada / Saída, Arquivos;

Quotas de utilização de recursos;

Contexto de Segurança;

Operações – Funções do sistema que atuam sobre os

processos

Criar

Eliminar

(13)
(14)
(15)
(16)

Processos para o SO

Imagem de um programa:  Segmento de código.

Conjunto de recursos de HW alocados pelo SO:

 Registradores (PC, Stack Pointer…);  Espaço de endereçamento (memória);  Espaço no disco (arquivos de E/S). Unidade de escalonamento:

 Estado;

 Algoritmos de escalonamento para otimizar o uso do HW;

(17)

Hierarquia entre processos

(18)

Processos Independentes, Subprocessos e

Threads

Estrutura de processos e subprocessos

Processo A

Processo C Processo B

Processo E Processo D

(19)

Processos Independentes, Subprocessos e

Threads

Processo multithread Contexto de hardware Contexto de hardware Contexto de hardware Espaço de endereçamento C o n te x to d e so ft w a re Thread 3 Thread 2 Thread 1

(20)

Espaço de Endereçamento

Estrutura de um processo Programa Contexto de Software prioridade de execução registrador PC data/ hora de criação tempo de processador registrador SP quotas privilégios endereços de memória principal alocados registrador de status owner (UID) PID nome registradores gerais Contexto de Hardware Espaço de Endereçamento

(21)

Bloco de Controle do Processo

A estrutura de dados que representa o processo no SO é chamada “Process Control Block” (PCB)

Contém as informações necessárias:

 Registradores, memória, disco (arquivos);  Prioridade;

 Estado;

 Histórico (contabilidade);

 Ponteiro para um outro PCB (lista encadeada); O SO deve manter listas de processos

 Listas encadeadas;

 A estrutura PCB é usada para tal;

(22)

Bloco de Controle do Processo

PCB . . . . .. . . ponteiros Estado do processo Registradores Nome do processo Prioridade do processo Limites de memória Lista de arquivos abertos

(23)

Estados do Processo

Lista de PCBs . .. .. .. . . .. .. .. . . .. .. .. . . .. .. .. . . .. .. .. . Lista de processos em estado de pronto PCB# 5 PCB# 9 PCB# 1 PCB# 2 PCB# 4 Lista de processos em estado de espera

(24)

Exemplo prático

No site da disciplina no “Material Aula” baixe o simulador SOsim e execute;

http://siep.ifpe.edu.br/anderson/arquivos/sosim_v20.zip Procure identificar o PCB, e propriedades dos processos;

(25)

Ciclo de vida dos processos

Processos nascem:

 No momento de sua criação (via chamada de sistema – Fork, spawn…). Processos vivem:

 Executam na CPU, liberam a CPU (E/S). Executam:

 Programas dos usuários;

 Programas do sistema (daemons); Processos morrem:

 Ou porque terminaram sua execução  Ou porque um outro processo os matou:  Erro, acesso não-autorizado, falha.

(26)

Estados do Processo

Os processos podem ter os seguintes estados:  Criado;  Execução (running);  Pronto (ready);  Bloqueado (wait);  Encerrado ou Término;  Suspenso.*

(27)

Mudanças de Estado

Mudanças de estado do processo

Estado de Execução

Estado de Bloqueio Estado de Pronto

a

c

d b

(28)

Estado de Suspenso

Dois problemas principais para gerar os recursos:  A CPU é muito mais rápida do que a memória;  A memória é de tamanho finito.

Precisa-se, então, poupar a memória. Por isso:

 Processos bloqueados que estão na memória podem ser transferidos para o disco (swap) até sua E/S ser acabada.

 Processos prontos podem também ser descarregados para o disco. Chega-se a mais dois estados:

 Bloqueado, suspenso.

(29)

Exercício

Desenhar o novo diagrama de estados

incluindo os estados

pronto, suspenso

e

(30)

Mudanças de Estado

Mudanças de estado do processo (2)

residente não residente Estado de Execução Estado de Bloqueio Estado de Bloqueio Estado de Pronto Estado de Pronto

(31)

Criação e Eliminação

Mudanças de estado do processo (3)

Estado de Execução Estado de Término

(32)

Criação de um processo

IdProcesso = CriarProc (Código, Prioridade,... )

Quando a criação tem sucesso o sistema atribui um identificador interno (PID) ao processo que é retornado na função Na criação de um processo tem de ficar definido qual é o

programa que o processo vai executar. Normalmente é especificado um arquivo contendo um programa executável. A função tem frequentemente diversos parâmetros: a prioridade, canais de entrada/saída, ...

(33)

Eliminação de processos

Eliminação do processo quando o seu programa termina,

libertando todos os recursos e estruturas de dados retidas

pelo processo

 Sair ([Estado])

Eliminação de outro processo

(34)

Finalizar Processo Filho

Em inúmeras situações o processo pai pode querer

bloquear-se esperando a finalização de um processo filho

(35)

Processos Foreground e Background

Processos foreground e background

(a) Processo Foreground

(b) Processo Background saída saída arquivo de saída terminal terminal entrada entrada arquivo de entrada

(36)

Processo Foreground e Background

Pipe entrada do Processo A saída do Processo B saída do Processo A entrada do Processo B Processo A Processo B

(37)

Propriedades especiais dos Processos do

Sistema

Auditoria e segurança Serviços de rede

Contabilização do uso de recursos Contabilização de erros

Gerência de impressão Gerência de jobs batch Temporização

Comunicação de eventos

(38)

Modelo de Segurança

Um processo em execução tem de estar associado a um

Usuário (entidade que pode ser responsabilizada pelos seus

atos);

Os utilizadores são representados no sistema por um código

que os identifica (User IDentifier – UID);

Para facilitar o compartilhamento o usuário pode pertencer a

um grupo ou grupos de usuários (identificador por um GID).

(39)

Controle dos Direitos de Acesso

Autorização - operação que valida os direitos do usuário sobre um recurso antes deste poder executar uma operação sobre ele;

A autorização baseia-se conceitualmente numa Matriz de Direitos de Acesso;

Para um dado objeto a coluna da matriz define a Lista de Direitos de Acesso (ACL);

Para um dado usuário a linha respectiva define todos os seus direitos normalmente designados por Capacidade.

Objeto

(40)

Processos CPU e IO Bound

Processos CPU Bound x IO Bound

(a) CPU-bound

tempo tempo

E/ S E/ S

UCP UCP

(41)

THREADS

(42)

Tarefas

Mecanismo simples para criar fluxos de execução independentes, compartilhando um mesmo contexto (ou de software ou de

(43)

Tarefas vs. Processos

Porque não usar processos?

 Processos obrigam ao isolamento (espaços de endereçamentos disjuntos) dificuldade em compartilhar dados (mas não

impossível… exemplos?)

(44)

Tarefas: Exemplos de Utilização

Servidor (ex.:, web)

Aplicação cliente de correio eletrônico

(45)

Modelos Multitarefa no Modelo Computacional

Operações sobre as Tarefas

 IdTarefa = CriarTarefa(procedimento);

 EliminarTarefa (IdTarefa);  EsperaTarefa (IdTarefa)

Bloqueia a tarefa esperando ser finalizada de outra tarefa ou da tarefa referenciada no parâmetro Idtarefa

(46)

Interface POSIX

err = pthread_create (&tid, attr, function, arg)

pthread_exit(void *value_ptr)

int pthread_join(pthread_t thread, void **value_ptr)  suspende a tarefa chamada até “pthread_t thread“ terminar;

continua a execução caso “pthread_t thread“ já tenha sido terminada Ponteiro para o identificador da tarefa Utilizado para definir atributos da tarefa como a prioridade Função para executar Parâmetros para a função

(47)
(48)
(49)
(50)

Programação num ambiente

multitarefa

As tarefas compartilham o mesmo espaço de

endereçamento e portanto têm acesso às mesmas

variáveis globais.

A modificação e teste das variáveis globais tem de

ser efetuada com cuidados especiais para evitar

erros de sincronização.

(51)

Alternativas de Implementação

Tarefas-kernel (real)

(52)

Pseudotarefas (Tarefas-usuário)

As tarefas implementadas numa system call no

espaço de endereçamento do usuário;

Idéia proveniente das linguagens de programação;

Núcleo apenas “vê” um processo;

Processo guarda lista de tarefas, e seu respectivo

contexto

(53)

Pseudotarefas (Tarefas-usuário)

A comutação entre tarefas explícita  função

thread-yield

Pode ser contornado usando interrupções (“preempção”)

Problema: e se uma tarefa faz chamada de bloqueio?

(54)

Tarefas-Kernel (ou Tarefas Reais)

Implementadas no núcleo do SO

Mais comuns

Lista de tarefas e respectivo contexto são mantidos

pelo núcleo

(55)

Comparação Tarefas Usuário e Kernel

Quero que respondam indicando qual é a melhor

opção.

Capacidade de utilização em diferentes SOs?

Velocidade de criação e comutação? (vs. processos?)

Tirar partido de execução paralela em multiprocessadores?

Aproveitamento da CPU quando uma tarefa bloqueia (ex: ler

do disco)?

(56)

LINUX - PROCESSOS

(Sob o ponto de vista do usuário)

(57)

Processos em Linux

Identificação de um processo

Um inteiro designado por PID;

Alguns identificadores estão pré atribuídos: processo 0 é o

swapper

(gerenciador de memória) e o processo 1 init é o

de inicialização do sistema;

Os processos relacionam-se de forma hierárquica

O processo herda todo o ambiente do processo pai;

O processo sabe quem é o processo de que descende

designado por processo pai;

Quando o processo pai termina os subprocessos

continuam a executar, são adotados pelo processo de

inicialização (pid = 1).

Os processos têm prioridades variáveis

(58)

Processos em Linux

Espaço de endereçamento em modo usuário

 Organiza-se em três zonas que no Unix original se denominavam por segmentos:

• texto - código do programa

• dados - espaço de dados do programa • pilha (stack)

Espaço de endereçamento em modo kernel

 No interior do núcleo existe uma zona de dados para cada processo que contem o seu contexto;

(59)

Processos em Linux

Cada processo também tem associado um contexto de software acessível em modo usuário e que contém diversas variáveis úteis para os programas utilitários ou para as aplicações.

Exemplo:

 HOME=/usr/pjpf  SHELL=/bin/csh  USER=pjpf

 PATH=/usr/pjpf/bin/:/usr/local/bin:/bin

Este contexto é herdado do processo pai e pode ser modificado livremente porque reside no espaço do usuário.

Nos programas em C é acessível através do parâmetro do main ou de uma variável externa:

 main (arc, arv, envp)  extern char **environ

(60)

Criação de um Processo no Linux

id = fork()

A função não tem parâmetros,

em particular o arquivo que irá executar. A imagem do novo processo é uma cópia da do criador.

O contexto de hardware pai é copiado para o filho

A função retorna o PID do processo;

Este parâmetro assume valores diferentes de acordo com o processo em que se efetua o retorno:

• ao processo pai é devolvido o “pid” do filho • ao processo filho é devolvido 0

• -1 em caso de erro

Retorno de uma função com valores diferentes  não existente na programação sequencial;

(61)
(62)

Finalização do Processo

Termina o processo, liberta todos os recursos

retidos pelo processo, ex.: os arquivos abertos;

Assinala ao processo pai seu término.

(63)

Finalização do Processo

No Linux existe uma função para o processo pai sincronizar

com o término de um processo filho;

Bloqueia o processo pai até que um dos filhos termine

(64)

Exemplo de Sincronização entre o

Processo Pai e o Processo Filho

(65)

Execução de um Programa

A função fork apenas permite lançar processo com o mesmo código  problemas?

A função exec permite substituir a imagem do processo onde é invocada pela contida num arquivo executável;

Não há retorno numa chamada com sucesso.

Parâmetros: valores que são passados para os parâmetros de entrada na função main do código que irá executar.

(66)

Execução de um Programa

int execl(char* arquivo, char* arg0, char* argl,…, argn,0) int execv(char* arquivo, char* argv [])

Caminho de acesso ao arquivo executável

Argumentos para o novo programa. Podem ser passado como ponteiros individuais ou como um array de

ponteiros.

Estes parâmetros são passados para a função main do novo programa e acessíveis através do argv

(67)

Exemplo 1

#include <stdio.h> #include <unistd.h> int main() {

execl("/bin/ls","ls","test_exec.c",NULL); printf ("Eu ainda nao estou morto\n"); exit(0);

}

• O comando ls é executado, mas o printf não. Isto mostra que o processo não retorna após a execução do execl.

(68)

Exemplo 2

#include <stdio.h> #include <unistd.h> int main() { if ( fork()==0 ) execl( "/bin/ls","ls","test_exec.c",NULL); else {

sleep(2) ; /* espera o fim de ls para executar o printf() */

printf ("Eu sou o pai e finalmente posso continuar\n“); } exit(0);

}

• Neste caso, o filho morre após a execução do ls, e o pai continuará a viver, executando então o printf.

(69)

Shell

O shell constitui um bom exemplo da utilização de fork e exec

(70)

Autenticação

Um processo tem associados dois identificadores que são

atribuídos quando o usuário efetua o login (se autentica)

perante o sistema:

o número de usuário UID - user identification

o número de grupo GID - group identification

Os UID e GID são obtidos do arquivo /etc/passwd no

momento do login

O UID e o GID são herdados pelos processos filhos

superuser é um UID especial – zero. Normalmente está

associado ao utilizador root (privilegiado).

(71)

Proteção no Acesso de Recursos

A proteção dos recursos em Linux é uma versão simplificada

do modelo de Listas de Controle de Acesso (ACL);

Para um recurso (arquivo, socket, etc.) a proteção é definida

em três categorias:

Dono (owner): usuário que normalmente criou o recurso;

Grupo (group): conjunto de usuários com afinidades de

trabalho que justificam direitos semelhantes;

Outros usuários (world).

(72)

SetUID

Mecanismo de Set UID (SUID) – permite alterar

dinamicamente o usuário;

Duas variantes: bit de setuid, ou função sistema

setuid.

Exercício: Procure exemplos de mudança de usuários por

SetUID. Será sorteado um para explicar.

(73)

Bit SetUID

No arquivo executável pode existir uma indicação especial

que na execução do exec chame a alteração do uid;

O processo assume a identidade do dono do arquivo durante

a execução do programa.

Exemplo: comando passwd

(74)

Funções Sistema de identificação

Real UID e GID – UID e GID originais do processo

Effective UID e GID – usado para verificar permissões de acesso e que pode ter sido modificado pelo setuid

getpid() - devolve a identificação do processo getuid(), getgid()

devolvem a identificação real do usuário geteuid(), getegid()

devolvem a identificação efetiva do usuário setuid(uid), setgid(gid)

altera a identificação efetiva do usuário para uid e gid, só pode ser invocada por processos com privilégio de superusuário

(75)

WINDOWS - PROCESSOS

Sob o ponto de vista do usuário

(76)

Processos –Windows

Um processo é um detentor de recursos usados pelas tarefas; Os fluxos de execução são as threads;

Processa uma ou mais threads.

Contexto de hardware Contexto de hardware Contexto de hardware Espaço de endereçamento C o n te x to d e so ft w a re Thread 3 Thread 2 Thread 1

(77)

Processos

Um processo em Windows é constituído por:  Um espaço de endereçamento;

 Um programa executável;  Pelo menos uma tarefa;

 Uma lista de referências (handles - manipuladores) para vários objetos (quaisquer recursos do sistema);

 Um contexto de segurança;

(78)

Threads no Windows

Tarefas reais.

Componentes fundamentais:

Os registos do CPU que representam o estado do

processador

Duas pilhas (

stacks), uma para execução em modo

kernel

e outra para execução em modo usuário;

Uma zona de memória privada (

thread-localstorage - TLS)

para uso pelos subsistemas e DLLs

(79)

Fibers

Pseudotarefas geridas no espaço de endereçamento do

usuário.

Uma thread pode ter múltiplas fibers;

Fibers não são vistas pelo núcleo;

As fibers são criadas e comutadas explicitamente com

systems call (chamadas);

(80)

Jobs

Grupo de processos

Permite gerenciamento uniforme (e.x., terminar em

conjunto)

Um processo só pode ser associado a um job e em principio

todos os seus descendentes pertencem ao mesmo job

(81)

Segurança

O contexto de segurança de um processo ou de uma thread é um objeto designado Access Token;

Um Access Token regista os usuários, grupos, máquinas, e domínios que estão associados ao processo.

Sempre que é acessado um objeto no sistema o executive valida o token contra uma ACL

Acesso concedido se não existir nenhuma recusa, e existir pelo menos uma permissão num dos utilizadores, grupos, etc.

(82)

Criação de processos Win32

BOOL CreateProcess(LPCTSTR ApplicationName, LPTSTR CommandLine, LPSECURITY_ATTRIBUTES ProcessAttributes, LPSECURITY_ATTRIBUTES ThreadAttributes, BOOL InheritHandles, DWORD CreationFlags, LPVOID Environment, LPCTSTR CurrentDirectory, LPSTARTUPINFO StartupInfo, LPPROCESS_INFORMATION ProcessInformation); Nome do programa executável. Se for NULL o Command Line tem de ter o nome do executável Linha de comando para o programa que quer criar Atributos de segurança do processo e da tarefa Indica se o novo processo herda os tokens do processo pai Várias flags entre elas a que permite definir classes de prioridades Ambiente de execução do processo criado Estrutura retornada pelo núcleo com a informação de controle

(83)

Criação de processos Win32

Diferenças vs. fork+exec:

No Windows não se cria automaticamente uma relação

pai-filho. Embora o processo pai fique com um handle

para o filho.

Um processo tem associado uma thread (main thread).

Na criação do processo pode definir a classe de prioridade

a que as threads do processo ficam associadas.

(84)
(85)

Eliminação de Processos

Existem três formas para terminar um processo

Chamada a função ExitProcess que autotermina o processo

Chamada a função TerminateProcess que permite a um

processo com um determinado privilégio terminar outro

processo

(86)
(87)

Criação Thread

HANDLE CreateThread (LPSECURITY_ATTRIBUTES ThreadAttr, DWORD stakSz, LPTHREAD_START_ROUTINE StrtAddr, LPVOID Parm, DWORD CreatFlgs, LPDWORD ThreadId); Handle para a thread ou NULL se falhou Atributos de segurança Tamanho da pilha Endereço da função inicial Um parâmetro pode ser passado a thread

(88)

Esperar pelo termino de Subprocesso

WaitForSingleObject(handle, timeout)

Função genérica de espera sobre um objeto

(entidade do sistema operacional)

(89)

EVENTOS

Rotinas Assíncronas para Tratamento de acontecimentos

assíncronos e exceções

(90)

Eventos

Uso de sinais [ctrl-C] Processo interrupção sinal Sistema Operacional

(91)

Rotinas Assíncronas

Certos acontecimentos devem ser tratados pelas

aplicações, embora não seja possível prever a sua

ocorrência

Ex: Ctrl-C

Ex: Ação desencadeada por um timeout

Como tratá-los na programação sequencial?

Poderia lançar uma tarefa por acontecimento.

Desvantagem?

Alternativa: Rotinas assíncronas associadas aos

acontecimentos (eventos)

(92)
(93)
(94)

Sinais

Sinais, interrupções e exceções

Hardware Sistema Operacional Interrupções Exceções Sinais Processo Processo

(95)

Sinais

Acontecimentos Assíncronos no Linux

Signal

Causa

SIGALRM

O relógio expirou

SIGFPE

Divisão por zero

SIGINT

O usuário apertou a tecla para interromper o

processo (normalmente o CRTL+C)

SIGQUIT

O utilizador quer terminar o processo e provocar

um core dump

SIGKILL

Signal para terminar o processo. Não pode ser

tratado

SIGPIPE

O processo escreveu para um pipe que não tem

receptores

SIGSEGV

Acesso a uma posição de memória inválida

SIGTERM

O usuário pretende terminar ordenadamente o

processo

SIGUSR1

Definido pelo usuário

SIGUSR1

Definido pelo usuário

Exceção Interação com o terminal Desencadea do por interrupção de HW Explicitamente desencadeado por outro processo

D

ef

ini

dos em

s

ig

n

a

l.h

(96)

Tratamento de sinais

Possibilidades:

Terminar o processo.

Ignorar sinal.

Alguns sinais como o SIGKILL não podem ser ignorados.

Porquê?

Executar rotina de tratamento (

handler

)

Associarmos rotinas de tratamento a sinal pela função do

sistema

signal

Cada sinal tem um tratamento por omissão, que pode ser

terminar ou ignorar

(97)

Chamada Sistema “Signal”

void (*signal (int sig, void (*func)(int))) (int);

A função retorna um ponteiro para função anteriormente associada ao sinal Identificador do sinal para o qual se pretende definir um handler Ponteiro para a Função ou macro especifico: •SIG_DFL – ação por omissão •SIG_IGN – ignorar o sinal Parâmetro para a função de tratamento

(98)

Exemplo

#include <stdio.h> #include <signal.h> apanhaCTRLC () {

char ch;

printf ("Quer de fato finalizar a execucao?\n"); ch = getchar();

if (ch == 's') exit(0);

else {

printf ("Entao vamos continuar\n"); signal (SIGINT, apanhaCTRLC); }

}

void main () {

signal (SIGINT, apanhaCTRLC);

printf("Associou uma rotina ao signal SIGINT\n"); for (;;){

printf(". "); sleep (1/2); }

(99)

Chamada do sistema kill

Envia um sinal ao processo

Nome enganador. Porquê?

(100)

Outras funções associadas aos sinais

unsigned alarm (unsigned int segundos);

o sinal SIGALRM é enviado para o processo depois de

passado o número de segundos especificados. Se o

argumento for zero, o envio é cancelado.

pause();

aguarda a chegada de um

signal

unsigned sleep (unsigned int segundos);

(101)
(102)

Não percam no próximo episódio!

Implementação de processos;

E muito mais!

Referências

Documentos relacionados

No entanto, para aperfeiçoar uma equipe de trabalho comprometida com a qualidade e produtividade é necessário motivação, e, satisfação, através de incentivos e política de

A versão reduzida do Questionário de Conhecimentos da Diabetes (Sousa, McIntyre, Martins &amp; Silva. 2015), foi desenvolvido com o objectivo de avaliar o

Taking into account the theoretical framework we have presented as relevant for understanding the organization, expression and social impact of these civic movements, grounded on

Áreas com indícios de degradação ambiental solo exposto no Assentamento Fazenda Cajueiro A e no Assentamento Nossa Senhora do Carmo B, localizados, respectivamente, no Município de

A curva em azul é referente ao ajuste fornecido pelo modelo de von Bertalany, a curva em vermelho refere-se ao ajuste fornecido pelos valores calculados Lt, dados pela equação

Os estudos sobre diferenciais de salários são explicados por alguns fatores que revelam a existência da relação entre as características pessoais produtivas educação,

Equipamentos de emergência imediatamente acessíveis, com instruções de utilização. Assegurar-se que os lava- olhos e os chuveiros de segurança estejam próximos ao local de

Apresentam-se, neste texto, os parâmetros iniciais da pesquisa que tem como objeto de análise 30 (trinta) trechos de áudio de pronúncias de alunos do ensino médio de uma escola