Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Gerenciamento de Processos e Threads Capítulo 2, Notas de aula de Comunicação

processos/threads sempre no mesmo processador, para evitar que o Memory Cache precise ser invalidado. • Maioria dos SOs (Linux, Mac OSX, Windows,) adotam ...

Tipologia: Notas de aula

2022

Compartilhado em 07/11/2022

Brasilia80
Brasilia80 🇧🇷

4.5

(73)

219 documentos

1 / 70

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
1
Gerenciamento de Processos
e Threads
Capítulo 2
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46

Pré-visualização parcial do texto

Baixe Gerenciamento de Processos e Threads Capítulo 2 e outras Notas de aula em PDF para Comunicação, somente na Docsity!

Gerenciamento de Processos

e Threads

Capítulo 2

Criação de Processos

Principais eventos que levam à criação de

processos:

1. Ao iniciar o sistema operacional (o init)

2. Usuário executa comando/ inicia programa através

da shell

3. Atendimento de uma requisição específica

(p.ex.processo inet cria processo para tratar

requisição de rede: ftp, rsh, etc.)

4. Início de um programa em momento pré-

determinado (através do cron daemon)

5. Processamento de um job de uma fila de jobs

Em todos os casos, um processo pai cria um novo processo usando fork()

Estados de Processos

  • Ao longo de sua execução, um processo pode assumir os

seguintes estados:

  • new : processo foi criado (núcleo aloca entrada na tabela de proc.)
  • Running/executando : instruções sendo executadas.
  • Waiting/bloqueado : Processo aguarda por algum evento ou recurso para prosseguir.
  • Ready/pronto : Processo aguarda por alocação do processador.
  • terminated : Processo deu exit(), núcleo desaloca entrada pronto bloqueado executando

Estados de Processos

(máquina de estados mais completa)

signal (SIGTSTP) swapped out

Process Control Block (PCB)

PCB 2

PCB contém informações que são necessárias para colocar o processo em execução. Para ser capaz de reiniciar um processo interrompido (ou esperando) o estado anterior em que deixou a CPU precisa ser restaurado; Carrega-se a CPU (e e MMU) com os dados de contexto armazenados no PCB Em sistemas Unix, o PCB é uma estrutura no espaço do usuário que é acessada pelo núcleo ( área u)

PCB 1 PCB 3

P1 P2^ P núcleo

Process Table e PCB

Área U

Filas dos prontos e de espera por E/S

Troca de Contexto

Ocorre em todos sistemas multiprogramados. É essencial

para a multiplexacão da CPU

Troca de Contexto: P1 è P

A interrupção pode ser de hardware ou software (system call)

Tipos de interrupção reconhecidos pela Intel Architecture IA-32:.

4 tipos de Interrupções

Tipo Descrição para cada tipo E/S Iniciados pelo HW, notificam o processador de que o estado do dispositivo de E/S mudou (p.ex. E/S finalizada) Timer evento periódico para agendamento de ações e/ou monitoramento de desempenho Inter-CPU Em sistemas multi-processadores, para comunicação e sincronização entre processadores Trap exceção (divisão por zero, segmentation fault, etc.) ou chamada de sistema

Tratamento de Interrupções

(pelo núcleo) Interrupções de HW ou SW:

  • I/O Interrupt (I/O Device)
  • Segmentation Fault -> Error
  • System Call -> Trap
  • send message -> Trap
  • Clock Interrupt First Level Int. Handler (FLIH), em Assembly 1. desabilita interrupções 2. salva contexto em tabela de processos/PCB 3. cria nova pilha temporária no kernel 4. carrega no PC o end. do Vetor de Interrupções **5. habilita interrupções Tratador de interrupção específico():
  1. trata a interrupção (p.ex. Escreve/le dados de buffer do driver)
  2. se algum processo pode ser desbloqueado então chama escalonador
  3. retorna Dispatcher, em Assembly:
  4. desabilita interrupções
  5. carrega o contexto na CPU & mapeamento de memória do processo a ser executado
  6. habilita interrupções Scheduler():**
  • insere o processo desbloqueado na fila de prontos
  • Escolhe próximo processo
  • retorna

Escalonamento de

Processos

Escalonamento

  • Em sistemas multiprogramados (multi-tarefa), a cada

instante um ou mais processos podem estar no estado

pronto , e.g.:

  • Processos do sistema vs processos de usuários
  • Processos curtos vs longos/eternos
  • processos interativos vs intensivos em CPU (CPU-

bound) ou jobs em batch

O Escalonador é a parte do núcleo responsável por:

  • gerenciar a/s fila/s de prontos, ajustando prioridades

dos processos

  • escolher qual dos processos prontos vai ser o próximo

a usar CPU (de acordo com as prioridades dos

processos)