Sistemas Operacionais Aula 4

Documentos relacionados
Eventos. Rotinas Assíncronas

Processos. Sistemas Operativos 2009 / Multiprogramação

Processos. Sistemas Operativos 2008 / Multiprogramação

Processos. Sistemas Operativos 2011 / Multiprogramação. Execução, em paralelo, de múltiplos programas na mesma máquina

1. Processos. Núcleo, Processos e Tarefas. Page 1. Processo Processo Processo. Sistemas Operativos 2011 / Departamento de Engenharia Informática

Sistemas Operacionais

Sistemas Operativos. Processos, threads e eventos. Rui Maranhão

Redes de Computadores. INF201 - Fundamentos de Sistemas Operacionais - 2º Período

Sistemas de Informação. Sistemas Operacionais

Sistemas Operacionais. Capítulo 5 Processos

Processo. Prof. Paulo Cesar F. de Oliveira, BSc, PhD

Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios. Aula 06.

Processos. Sistemas Operativos 2015 / Multiprogramação. Execução, em paralelo, de múltiplos programas na mesma máquina

Sistemas Operacionais. Prof. Pedro Luís Antonelli Anhanguera Educacional

Processos, tarefas e núcleo

Sistemas Operacionais

Sistemas Operacionais I

Processos. Conceitos Básicos

Sistemas Operacionais I

Sistemas Operacionais Processos. Carlos Ferraz Jorge Cavalcanti Fonsêca

Processos. Processo (1) Processo (2) Processo (3) Conceitos Básicos

Processos. Conceitos Básicos

Processos. Conceitos Básicos

Sistemas Operacionais. Processos e Threads

Sistemas Operacionais

Capítulo 2. Multiprogramação. Conteúdo. Objetivo. Recordando. Recordando. DCA-108 Sistemas Operacionais

SOP - TADS Processos. Revisão Ultima aula

Threads. Agenda. Threads. Processo. Processo. Processo. Processo. (c) Volnys B. Bernal Versão de 22/3/2012

Processos. Adão de Melo Neto

Processos O conceito de processos é fundamental para a implementação de um sistema multiprogramável. De uma maneira geral, um processo pode ser entend

Arquitetura de Sistemas Operativos

Processos. Prof. Gustavo Leitão

Tratamento de Sinais

SISTEMAS OPERACIONAIS

Processos. Pedro Cruz. EEL770 Sistemas Operacionais

Arquitetura de Sistemas Operativos

Processos. Pedro Cruz. EEL770 Sistemas Operacionais

Processo. Gerência de Processos. Um programa em execução. Centro de Informática/UFPE :: Infraestrutura de Software

14/05/2017. Conceitos de Processos. Conceitos de Processos. Conceito de processo

Processo. Gerência de Processos. Um programa em execução. Centro de Informática/UFPE :: Infraestrutura de Software

Sistemas Operacionais Aula 3

! Os primeiros computadores permitiam a execução de apenas um programa de cada vez, com acesso completo aos recursos do sistema

SISTEMAS OPERACIONAIS

Prof. Kleber R. Rovai

Na Aula Anterior... Interrupções por software e hardware; Temporizadores; RTC; Temporizadores via software. Relação Processos Multiprogramação

Unix Processos. Geraldo Braz Junior

Estrutura dos Sistemas Operacionais. Sérgio Portari Júnior

Sistemas Operacionais

Sistemas Operacionais

Sistemas Operacionais

Na Aula Anterior... O Conceito de Threads

Sistemas Operacionais

Noções de Processos. Plano da aula. Serviços oferecidos. Definição & Objetivos. Definição & Objetivos. Sistemas Operacionais : introdução

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 08. Conceitos sobre processos. Modelos de processos, BCP, contextos, estados de processos.

Introdução a Arquitetura de Sistemas Operacionais. Parte 01

Sistemas Operacionais - UCSAL Professor : Marco Antônio C. Câmara Primeira Lista de Exercícios

Sistemas Operacionais. BSI / UAB 2013 Hélio Crestana Guardia

Segurança em Sistemas Operativos

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO PROCESSOS PROFESSOR CARLOS MUNIZ

AULA Nº 08 SISTEMAS OPERACIONAIS. Threads

Complementos de Programação. Engenharia Electrotécnica - Electrónica e Computadores. Ano Lectivo: 2005/2006. Ana Madureira. Gestão de Processos

Notas da Aula 2 - Fundamentos de Sistemas Operacionais

Processos. Volnys Borges Bernal. Edson Toshimi Midorikawa

Gestor de Processos. Gestor de Processos

Processos. (c) 2005 Volnys B. Bernal Versão de 15/3/2006. Agenda. Processos. Introdução aos Processos. Introdução aos Processos

SOP Sistemas Operacionais Módulo 04: Processo

Sistemas de Computação O Sistema Operacional Unix

Sistemas Operacionais. Processos IC - UFF

Estrutura do Sistema Operacional

Figura 01 Programa e Processo

Processos Volnys B. Bernal Versão de 20/03/2015. Agenda. Processos. Programa x Processo. Programa x Processo. Programa.

Sistemas Operacionais

SSC0640 Sistemas Operacionais I

Sistemas Operacionais. Conceito de Processos

Sistemas Operacionais II

Segurança em Sistemas Operativos

Sistemas Operacionais

Concorrência em Processos

Thread. Thread. Sistemas Operacionais. Leonard B. Moreira. UNIVERSIDADE ESTÁCIO DE SÁ fevereiro, / 41

Processos ao nível do SO

Estruturas de Sistemas Operacionais

PROCESSOS. Sistemas Operacionais. Vinícius Pádua

Davidson Rodrigo Boccardo

Exercícios Cap I. 1.1, 1.2, 1.3 (somente letras (a), (b) e (c)) , 1.8 e 1.12 IC - UFF

Aula 04. Capítulo 3 Gerência de Processos. 3.1 Conceito de Processo. 3.2 Escalonamento de Processos. 3.3 Opera ões sobre Processos

Técnicas Avançadas de Programação

EEL770 Sistemas Operacionais

Sistemas Distribuídos Aula 2

Unidade 2. Processos Threads Concorrência em Java

Leandro Soares de Sousa (DSc.) Página: Aula 04 - desenvolvimento multithread

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Sistemas Operacionais Prof. Fabrício Sérgio de Paula

Sistemas Operacionais Aula 7

Arquitetura de Sistemas Operacionais

LabSO Gerência de Processos. Processos. Porque eu preciso entender este assunto?

Arquitetura de Computadores Sistemas Operacionais II

Fundamentos de Sistemas Operacionais

Processos. Estruturas de Controle

Sistemas Operacionais

Transcrição:

Sistemas Operacionais Aula 4 Anderson L. S. Moreira anderson.moreira@recife.ifpe.edu.br http://dase.ifpe.edu.br/~alsm Curso de Análise e Desenvolvimento de Sistemas de Informação Recife - PE

O que fazer com essa apresentação

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.

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 Sinais

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

Pseudoconcorrência

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. Pode-se encontrar mais de um processo instanciando um programa único.

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 compartilhadas, ou seja as DLL no Windows ou.lo do Linux).

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

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

Contexto de Hardware Mudança de Sistema Operacional contexto executando Processo A Processo B Salva registradores do Processo A Carrega registradores do Processo B executando Salva registradores do Processo B Carrega registradores do Processo A executando

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 Esperar pelo término de subprocessos

Exemplo: Linux

Exemplo: Windows

Exemplo: Windows

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; Alocar a CPU a um processo implica em uma troca de contexto.

Hierarquia entre processos Usuário A Usuário B

Processos Independentes, Subprocessos e Threads Estrutura de processos e subprocessos Processo A Processo B Processo C Processo D Processo E

Processos Independentes, Subprocessos e Threads Processo multithread Contexto de hardware Contexto de hardware Contexto de hardware Contexto de software Thread 1 Thread 2 Espaço de endereçamento Thread 3

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

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; Mantém-se um ponteiro sobre o primeiro e/ou o último PCB.

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

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

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; Observe o mapa de memória, o que vocês notam de diferente?

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.

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

Mudanças de Estado Mudanças de estado do processo Estado de Execução Processador b d a c Estado de Bloqueio Estado de Pronto

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. Pronto, suspenso.

Exercício Desenhar o novo diagrama de estados incluindo os estados pronto, suspenso e bloqueado, suspenso.

Mudanças de Estado Mudanças de estado do processo (2) Estado de Execução residente não residente Estado de Bloqueio Estado de Pronto Estado de Bloqueio Estado de Pronto

Criação e Eliminação Mudanças de estado do processo (3) Estado de Execução Estado de Término Estado de Bloqueio Estado de Pronto Estado de Criação

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

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 EliminarProc ( IdProcesso )

Finalizar Processo Filho Em inúmeras situações o processo pai pode querer bloquearse esperando a finalização de um processo filho Estado = EsperarFinalizar (Idprocesso)

Processos Foreground e Background Processos foreground e background (a) Processo Foreground entrada saída terminal terminal (b) Processo Background entrada saída arquivo de entrada arquivo de saída

Processo Foreground e Background Pipe entrada do Processo A Processo A saída do Processo A entrada do Processo B Processo B saída do Processo B

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 Interface de comandos (shell)

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

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; Usuários Objeto 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.

Processos CPU e IO Bound Processos CPU Bound x IO Bound E/ S E/ S UCP UCP (a) CPU-bound tempo (b) I/O-bound tempo

Múltiplos fluxos de execução no mesmo processo THREADS

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

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?) Eficiência na criação e comutação

Tarefas: Exemplos de Utilização Servidor (ex.:, web) Aplicação cliente de correio eletrônico Quais as tarefas em cada caso?

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

Interface POSIX err = pthread_create (&tid, attr, function, arg) 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 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

Exemplo (sequencial)

Exemplo (paralelo)

Exemplo (paralelo)

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.

Alternativas de Implementação Tarefas-kernel (real) Tarefas-usuário (pseudotarefas)

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

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? Solução? (vale um ponto extra mandar por e-mail!)

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

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)?

(Sob o ponto de vista do usuário) LINUX - PROCESSOS

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 Veremos as regras de escalonamento mais adiante.

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; Uma pilha para execução do processo em modo kernel.

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

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;

Exemplo de fork

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. void exit (int status)

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 int wait (int *status)

Exemplo de Sincronização entre o Processo Pai e o Processo Filho

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. Os arquivos mantêm-se abertos.

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

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.

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.

Shell O shell constitui um bom exemplo da utilização de fork e exec (esqueleto muito simplificado)

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

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

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.

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 Operação crítica para a segurança

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

Sob o ponto de vista do usuário WINDOWS - PROCESSOS

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 Contexto de software Thread 1 Thread 2 Espaço de endereçamento Thread 3

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; Um identificador único do processo - process ID.

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 Um identificador único - thread ID

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); Win32 mas que não produzem chamadas ao sistema.

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

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.

Criação de processos Win32 BOOL CreateProcess(LPCTSTR ApplicationName, 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 LPTSTR CommandLine, LPSECURITY_ATTRIBUTES ProcessAttributes, LPSECURITY_ATTRIBUTES ThreadAttributes, BOOL InheritHandles, DWORD CreationFlags, LPVOID Environment, LPCTSTR CurrentDirectory, LPSTARTUPINFO StartupInfo, LPPROCESS_INFORMATION ProcessInformation); Estrutura retornada pelo núcleo com a informação de controle 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

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. A criação com sucesso retorna um valor diferente de zero.

Criação de processos Win32

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 Terminando todas as threads de um processo

Eliminação de Processos

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

Esperar pelo termino de Subprocesso WaitForSingleObject(handle, timeout) Função genérica de espera sobre um objeto (entidade do sistema operacional)

Rotinas Assíncronas para Tratamento de acontecimentos assíncronos e exceções EVENTOS

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

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)

Modelo de Eventos

Rotinas Assíncronas

Sinais Sinais, interrupções e exceções Processo Processo Sinai s Sistema Operacional Interrupções Exceções Hardware

Sinais Acontecimentos Assíncronos no Linux Definidos em signal.h Signal SIGALRM SIGFPE SIGINT SIGQUIT SIGKILL SIGPIPE SIGSEGV SIGTERM SIGUSR1 SIGUSR1 Causa O relógio expirou Exceção Divisão por zero O usuário apertou a tecla para interromper o processo (normalmente o CRTL+C) O utilizador quer terminar o processo e provocar um core dump Signal para terminar o processo. Não pode ser tratado O processo escreveu para um pipe que não tem receptores Acesso a uma posição de memória inválida O usuário pretende terminar ordenadamente o processo Explicitamente Definido pelo usuário desencadeado por Definido pelo usuário outro processo Interação com o terminal Desencadea do por interrupção de HW

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

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

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); } }

Chamada do sistema kill Envia um sinal ao processo Nome enganador. Porquê?

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); A função faz um alarm e se bloqueia à espera do sinal

Dúvidas?

Não percam no próximo episódio! Implementação de processos; E muito mais! Dúvidas?