Sinais Seminário de Lab. SO – Etapa 1 Alunos: Agostinho Barone Ribeiro da Silva – 264300 Vinicius Valls Blanch Maimone Santos – 264385.

Slides:



Advertisements
Apresentações semelhantes
Sistemas Operacionais - Aula 6
Advertisements

Sistemas Operacionais
Sistemas Distribuídos
Sistemas Operacionais
Sistemas Operacionais Sincronismo e Comunicação entre processos
SISTEMAS OPERACIONAIS (SO) Aula 5 Luciana A. F. Martimiano 2002
Capitulo 6: Entrada e Saída
14/10/09 Uma animação possui: Início; Passo; Fim; 1.
Análise de Casos de Uso.
Threads (Linha de execução )
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.
Gerência de Processos no Linux Prof. Antônio Rogério Ramos Pelo menos esse, fui eu que fiz!!!
Processos no Unix e Linux
Escalonamento Linux.
Arquitetura de Sistemas Operacionais
Arquitetura de Sistemas Operacionais
Chapter 4: Threads.
História do Windows XP Significa Windows “eXperience”.
Interação Cliente Servidor
SSC SISTEMAS OPERACIONAIS I Aulas 6 – Escalonamento de Processos
Threads Estagiário: Bruno Guazzelli Batista Slides de autoria do Prof Drº Marcos José Santana baseados no livro Sistemas Operacionais Modernos de A. Tanenbaum.
Estudo de Caso 1: UNIX e LINUX
Sistemas Operacionais
Sinais no UNIX.
baseado na versão 2.6 do kernel do Linux
Interrupts and Exceptions Understanding the Linux Kernel
Prof. André Luis Meneses Silva
Sincronização e Comunicação entre Processos
Threads.
Modelagem de Interações
Processadores – Aula 3 Professor: André Luis Meneses Silva
Sistemas Operacionais
Sistemas Operacionais
Processadores – Aula 3 Professor: André Luis Meneses Silva
Sistemas Operacionais I
Unidade 1-1 Processos e Threads
Avaliação de um processador FemtoJava multiprocesso CMP502 – Sistemas Embarcados Leomar Soares da Rosa Junior Porto Alegre, março de 2003.
1 - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – CEFET-PB 12. Estados Objetivo: compreender a notação do diagrama de estados.
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Conteúdos do tutorial O que é um Slide Mestre?
SISTEMAS OPERACIONAIS
Sistemas Operacionais
Universidade Federal Fluminense Escola de Engenharia Departamento de Engenharia de Telecomunicações Sistemas de Computação para Telecomunicações Autores:
Processo Entidade dinâmica e efêmera
PROGRAMAÇÃO ESTRUTURADA (MODULARIZAÇÃO/SUBPROGRAMAÇÃO)
Sistemas Operacionais
Conteúdo 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.
Abr-17 Projetar Cápsulas Aula de Laboratório Projetar classes.
Conteúdo Processos e threads Partes do processo
Programação Paralela.
SISTEMAS OPERACIONAIS I
UML - Unified Modeling Language
Administração de Sistemas Operacionais Não Proprietários 2ºSemestre Aula 05 Prof. Carlos Vinícius SERVIÇO NACIONAL DE APRENDIZAGEM.
Analise Semântica aula-10-analise-semântica.pdf.
Sistemas Operacionais
Planear um Website Principais etapas.
2.5 Processos no Minix 1. gerenciamento de processos:
Sistemas Operacionais
1 Comunicação Inter-Processos -> RMI -> RPC -> TCP -> UDP (Abstração de passagem de mensagem)
SISTEMAS OPERACIONAIS I
Troca de Mensagens Programação concorrente
Sistemas Operacionais
S ISTEMAS OPERACIONAIS PROCESSOS Horácio Ribeiro.
Bruno Affonso Diego Chiquito Ruan Berté.   O código de Escalonamento no Windows é implementado no Kernel.  A rotina que desempenha as tarefas do Escalonador.
Capítulo 2 Processos e Threads 2.1 Processos 2.2 Threads
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Continuação Modelagem Orientada a Objetos Técnico Subsequente.
Sistema de Informação Gerencial. SIG - INTRODUÇÃO Nas tarefas diárias cabe ao executivo ajustar os dados, pois estes nunca são insuficientes e nem abundantes.
CURSO JAVA BÁSICO Módulo 9 – slide 1 Módulo 10 Threads.
Bruna Cavallero Martins Universidade Católica de Pelotas.
Transcrição da apresentação:

Sinais Seminário de Lab. SO – Etapa 1 Alunos: Agostinho Barone Ribeiro da Silva – Vinicius Valls Blanch Maimone Santos –

O que é um sinal?

O que é um Sinal? Um sinal é uma pequena mensagem que pode ser enviada a um processo ou grupo de processos. A única informação fornecida ao processo geralmente é o código identificador do sinal. Não há espaço em sinais padrões para argumentos, mensagens ou outras informações.

O que é um Sinal? Sinais têm dois propósitos principais: – Deixar um processo ciente de que algum evento ocorreu. – Fazer com que um processo execute uma função de tratamento embutida em seu código. Estes dois propósitos não são mutuamente exclusivos.

Os Sinais

Para a arquitetura x86, o kernel 2.6 do Linux trata 31 sinais por padrão. O padrão POSIX introduziu uma nova classe de sinais (32~64), chamados real-time signals. A diferença básica entre estes é que os real- time signals são enfileiráveis. Apesar do kernel não suportá-los, é possível utilizá-los através de algumas syscalls.

Os Sinais Alguns sinais: #NomeAçãoDescrição 1SIGHUPTerminarEnforca o terminal ou processo 2SIGINTTerminarInterrupção do Teclado 9SIGKILLTerminarForça o processo a terminar 11SIGSEGVDumpReferência inválida de memória 13SIGPIPETerminarEscrita num pipe já fechado 15SIGTERMTerminarTermina um processo 17SIGCHLDIgnorarProcesso filho parou ou terminou 18SIGCONTContinuarContinua um processo parado 19SIGSTOPPararPara a execução de um processo

Os Sinais Algumas chamadas de sistema permitem: – Enviar sinais. – Determinar a resposta dos processos ao receberem um sinal.

Os Sinais As principais syscalls relativas a sinais: syscallDescrição kill()Envia um sinal a um grupo de threads tkill()Envia um sinal a um processo tgkill() Envia um sinal a um processo num grupo específico de threads sigaction() / signal()Altera a ação associada a um sinal sigpending()Checa se há sinais pendentes sigprocmask()Modifica o conjunto de sinais bloqueados sigsuspend()Espera um sinal

Os Sinais As syscalls relativas a sinais real-time: syscallDescrição rt_sigaction()Altera a ação associada a um sinal rt_sigpending()Checa se há sinais pendentes rt_sigprocmask()Modifica o conjunto de sinais bloqueados rt_sigqueueinfo()Envia um sinal para um grupo de threads rt_sigsuspend()Espera um sinal rt_sigtimedwait()Similar a rt_sigsuspend()

Os Sinais Sinais podem ser enviados a qualquer momento a qualquer processo. Se este processo não estiver sendo executado o sinal deve ser salvo pelo kernel até que o processo retorne. Bloquear um sinal faz com que o kernel o salve até que sua entrega seja desbloqueada. Isso evita que sinais sejam capturados antes de poderem ser tratados.

Os Sinais Assim, o kernel divide a transmissão do sinal em duas fases: – Geração do sinal: O kernel atualiza a estrutura de dados do processo de destino para representar que um sinal foi enviado. – Entrega do sinal: O kernel força o processo de destino a reagir: – Mudando seu estado de execução. – Iniciando a execução da rotina de tratamento. – Realizando ambos os procedimentos.

Os Sinais Apesar da noção de sinais ser intuitiva, a implementação é complexa. O kernel deve: – Lembrar os sinais bloqueados de cada processo. – Quando alterna entre Kernel Mode e User Mode, checar se algum sinal chegou a algum processo. – Determinar se o sinal pode ser ignorado. – Tratar o sinal (isso pode exigir troca de contexto).

Ações de Resposta

Ao receber um sinal, um processo pode: – Ignorar o sinal explicitamente. – Tratar o sinal através de uma função específica. – Executar a ação padrão associada ao sinal. AçãoDescrição TerminarO processo é terminado DumpO processo é terminado e um core dump é criado IgnorarO sinal é ignorado PararO processo é parado (i.e. Estado TASK_STOPPED) ContinuarO processo em TASK_STOPPED é colocado em TASK_RUNNING

Estruturas de Dados

As estruturas de dados mais significativas no tratamento de sinais:

Gerando um Sinal

Quando um sinal é enviado a um processo, oriundo do kernel ou de outro processo, uma das seguintes funções é chamada: FunçãoDescrição send_sig()Envia um sinal a um único processo send_sig_info()Como o send_sig(), mas com mais informações force_sig()Envia um sinal que não pode ser ignorado ou bloqueado. force_sig_info()Como force_sig(), mas com mais informações force_sig_specific()Como force_sig(), mas otimizado para SIGSTOP e SIGKILL sys_tkill()syscall handler para a função tkill() sys_tgkill()syscall handler para a função tgkill()

Gerando um Sinal Quando um sinal é enviado para um grupo de threads, o kernel chama uma das seguintes funções: FunçãoDescrição send_group_sig_info() Envia um sinal para um grupo de threads identificado pelo descritor de processo de um de seus membros kill_pg() Envia sinal p/ todos os grupos de threads num grupo de processos kill_pg_info()Como kill_pg(), mas com informações adicionais kill_proc() Envia sinal p/ grupo de threads identificado pelo pid de um dos membros kill_proc_info()Como kill_proc(), mas com informações adicionais sys_kill()syscall handler para a função kill() sys_rt_sigqueueinfo()syscall handler para a função rt_sigqueueinfo()

Tratando um Sinal

A figura abaixo ilustra o fluxo de execução na captura de um sinal:

Tratando um Sinal A figura abaixo ilustra um frame, estrutura utilizada para armazenar o contexto do sistema:

Bibliografia Understanding Linux Kernel 3 for ($i=1; i<=5; i++) { echo } /cst8229/lectures/4-Signals.html