A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Sinais Seminário de Lab. SO – Etapa 1 Alunos: Agostinho Barone Ribeiro da Silva – 264300 Vinicius Valls Blanch Maimone Santos – 264385."— Transcrição da apresentação:

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

2 O que é um sinal?

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

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

5 Os Sinais

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

7 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

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

9 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

10 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()

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

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

13 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).

14 Ações de Resposta

15 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

16 Estruturas de Dados

17 As estruturas de dados mais significativas no tratamento de sinais:

18 Gerando um Sinal

19 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()

20 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()

21 Tratando um Sinal

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

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

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


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

Apresentações semelhantes


Anúncios Google