Post on 07-Feb-2018
Anderson Moreira Sistemas Operacionais – Aula 4
Anderson L. S. Moreiraanderson.moreira@recife.ifpe.edu.br
http://dase.ifpe.edu.br/~alsm
Curso de Análise e Desenvolvimento de Sistemas de Informação
Recife - PE
Sistemas Operacionais – Aula 4
Anderson Moreira Sistemas Operacionais – Aula 4
O que fazer com essa apresentação
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Créditos
Professor: Anderson L. S. MoreiraDisciplina: Sistemas OperacionaisHome-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.
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 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
Sinais
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Pseudoconcorrência
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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.
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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).
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Estrutura do Processo
Estrutura do processo
Programa
Contexto deSoftware
Contexto deHardware
Espaço deEndereçamento
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Contexto de Hardware
Mudança de
contexto
Carrega registradores doProcesso B
Carrega registradores doProcesso A
Sistema Operacional
Salva registradores doProcesso A
executando
executando
executando
Salva registradores doProcesso B
Processo A Processo B
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Exemplo: Linux
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Exemplo: Windows
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Exemplo: Windows
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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.
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Hierarquia entre processos
setembro de 11
Usuário A Usuário B
Anderson Moreira Sistemas Operacionais – Aula 4
Processos Independentes, Subprocessos e Threads
Estrutura de processos e subprocessosProcesso A
Processo CProcesso B
Processo EProcesso D
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Processos Independentes, Subprocessos e Threads
Processo multithread
Contextode hardware
Contextode hardware
Contextode hardware
Espaço deendereçamento
Con
text
o de
softw
are
Thread 3Thread 2Thread 1
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Espaço de Endereçamento
Estrutura de um processo
Programa
Contexto deSoftware
prioridade deexecução registrador PC
data/horade criação
tempo deprocessador
registrador SP
quotas
privilégios
endereços de memóriaprincipal alocados
registradorde status
owner (UID)PID
nomeregistradores
gerais
Contexto deHardware
Espaço deEndereçamento
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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.
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Estados do Processo
Lista de PCBs
........
........
........
........
........
Lista deprocessosem estadode pronto
PCB#5
PCB#9
PCB#1
PCB#2 PCB#4
Lista deprocessosem estadode espera
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 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?
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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.
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Estados do Processo
Os processos podem ter os seguintes estados:
Criado;
Execução (running);
Pronto (ready);
Bloqueado (wait);
Encerrado ou Término;
Suspenso.*
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Mudanças de Estado
Mudanças de estado do processoEstado de Execução
Estado de Bloqueio Estado de Pronto
a
c
db
setembro de 11
Processador
Anderson Moreira Sistemas Operacionais – Aula 4
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.
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Exercício
Desenhar o novo diagrama de estados
incluindo os estados pronto, suspenso e
bloqueado, suspenso.
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Mudanças de Estado
Mudanças de estado do processo (2)
residentenão residente
Estado de Execução
Estado de Bloqueio
Estado de Bloqueio
Estado de Pronto
Estado de Pronto
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Criação de um processo
IdProcesso = CriarProc (Código, Prioridade,... )
setembro de 11
Quando a criação temsucesso 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 arquivocontendo um programaexecutável.
A função temfrequentemente diversosparâmetros: a prioridade,canais de entrada/saída, ...
Anderson Moreira Sistemas Operacionais – Aula 4
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 )
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Finalizar Processo Filho
Em inúmeras situações o processo pai pode querer bloquear-
se esperando a finalização de um processo filho
Estado = EsperarFinalizar (Idprocesso)
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Processos Foreground e Background
Processos foreground e background
(a) Processo Foreground
(b) Processo Background
saída
saída
arquivode saída
terminalterminal
entrada
entrada
arquivode entrada
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Processo Foreground e Background
Pipe
entrada doProcesso A
saída doProcesso B
saída doProcesso A
entrada doProcesso B
Processo A Processo B
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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)
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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).
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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.
setembro de 11
Objeto
Usuários
Anderson Moreira Sistemas Operacionais – Aula 4
Processos CPU e IO Bound
Processos CPU Bound x IO Bound
(a) CPU-boundtempo tempo
E/ S E/ S
UCP UCP
(b) I/ O-bound
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
THREADSMúltiplos fluxos de execução no mesmo processo
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Tarefas
Mecanismo simples para criar fluxos de execução independentes,
compartilhando um mesmo contexto (ou de software ou de
hardware)
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Tarefas: Exemplos de Utilização
Servidor (ex.:, web)
Aplicação cliente de correio eletrônico
Quais as tarefas em cada caso?
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Modelos Multitarefa no Modelo Computacional
Operações sobre as Tarefas
IdTarefa = CriarTarefa(procedimento);
EliminarTarefa (IdTarefa);
EsperaTarefa (IdTarefa)
setembro de 11
Bloqueia a tarefa esperando ser finalizada deoutra tarefa ou da tarefa referenciada no parâmetro Idtarefa
Anderson Moreira Sistemas Operacionais – Aula 4
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
setembro de 11
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
Anderson Moreira Sistemas Operacionais – Aula 4
Exemplo (sequencial)
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Exemplo (paralelo)
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Exemplo (paralelo)
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Programação num ambientemultitarefa
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.
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Alternativas de Implementação
Tarefas-kernel (real)
Tarefas-usuário (pseudotarefas)
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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!)
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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)?
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
LINUX - PROCESSOS(Sob o ponto de vista do usuário)
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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.
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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.
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Criação de um Processo no Linux
id = fork()
setembro de 11
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 erroRetorno de uma função com valores diferentes não existente na programação sequencial;
Anderson Moreira Sistemas Operacionais – Aula 4
Exemplo de fork
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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)
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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)
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Exemplo de Sincronização entre oProcesso Pai e o Processo Filho
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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.
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Execução de um Programa
int execl(char* arquivo, char* arg0, char* argl,…, argn,0)
int execv(char* arquivo, char* argv [])
setembro de 11
Caminho deacesso aoarquivoexecutável
Argumentos para o novo programa.Podem ser passado como ponteirosindividuais ou como um array deponteiros.Estes parâmetros são passados para a função main do novo programa e acessíveis através do argv
Anderson Moreira Sistemas Operacionais – Aula 4
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.
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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.
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Shell
O shell constitui um bom exemplo da utilização de fork e exec
(esqueleto muito simplificado)
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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 loginO UID e o GID são herdados pelos processos filhossuperuser é um UID especial – zero. Normalmente está associado ao utilizador root (privilegiado).
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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).
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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.
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
WINDOWS - PROCESSOSSob o ponto de vista do usuário
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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.
setembro de 11
Contextode hardware
Contextode hardware
Contextode hardware
Espaço deendereçamento
Con
text
o de
softw
are
Thread 3Thread 2Thread 1
Anderson Moreira Sistemas Operacionais – Aula 4
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.
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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.
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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.
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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);
setembro de 11
Nome doprogramaexecutável.Se forNULL oCommandLine temde ter onome doexecutá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 aque permitedefinirclasses deprioridades
Ambiente de execução do processo criado
Estruturaretornada pelonúcleo com ainformação decontrole
Anderson Moreira Sistemas Operacionais – Aula 4
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.
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Criação de processos Win32
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Eliminação de Processos
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Criação Thread
HANDLE CreateThread (LPSECURITY_ATTRIBUTES ThreadAttr,
DWORD stakSz,
LPTHREAD_START_ROUTINE StrtAddr,
LPVOID Parm,
DWORD CreatFlgs,
LPDWORD ThreadId);
setembro de 11
Handlepara a thread ou NULL sefalhou
Atributos de segurança
Tamanho da pilha
Endereço da função inicial
Um parâmetro pode ser passado a thread
Anderson Moreira Sistemas Operacionais – Aula 4
Esperar pelo termino de Subprocesso
WaitForSingleObject(handle, timeout)
Função genérica de espera sobre um objeto
(entidade do sistema operacional)
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
EVENTOS
Rotinas Assíncronas para Tratamento de acontecimentos assíncronos e exceções
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Eventos
Uso de sinais
[ctrl-C]
Processo
interrupção sinalSistema Operacional
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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)
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Modelo de Eventos
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Rotinas Assíncronas
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Sinais
Sinais, interrupções e exceções
Hardware
Sistema Operacional
InterrupçõesExceções
Sinais
Processo Processo
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
SinaisAcontecimentos Assíncronos no Linux
setembro de 11
Signal CausaSIGALRM O relógio expirouSIGFPE 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árioSIGUSR1 Definido pelo usuário
Exceção
Interação com o terminal
Desencadeado por interrupção de HW
Explicitamente desencadeado por outro processo
Def
inid
os e
m s
igna
l.h
Anderson Moreira Sistemas Operacionais – Aula 4
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
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Chamada Sistema “Signal”
void (*signal (int sig, void (*func)(int))) (int);
setembro de 11
A função retorna um ponteiro para função anteriormente associada aosinal
Identificadordo sinalpara o qualse pretendedefinir umhandler
Ponteiro para aFunção ou macroespecifico:•SIG_DFL –ação por omissão•SIG_IGN –ignorar o sinal
Parâmetropara afunção detratamento
Anderson Moreira Sistemas Operacionais – Aula 4
Exemplo
setembro de 11
#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);
}}
Anderson Moreira Sistemas Operacionais – Aula 4
Chamada do sistema kill
Envia um sinal ao processo
Nome enganador. Porquê?
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
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
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Dúvidas?
setembro de 11
Anderson Moreira Sistemas Operacionais – Aula 4
Não percam no próximo episódio!
Implementação de processos;
E muito mais!
Dúvidas?
setembro de 11