Please enable JavaScript.
Coggle requires JavaScript to display documents.
Unix: Processos e o Kernel (Modo/Espaço/Contexto (Modos de uso (modo…
Unix: Processos e o Kernel
Modo/Espaço/Contexto
Modos de uso
modo kernel
funções do kernel
protegido do modo usuário
evita corromper o kernel ou
outros processos de maneira
maliciosa ou acidental
mais privilegiado
modo usuário
programas de usuário
menos privilegiado
erros de programas ficam no
escopo local e não afetam
outras partes do sistema
Espaços
Espaço do Sistema (Kernel/System Space)
acessado somente em kernel mode
aponta para o texto do kernel
e estruturas de dados
todos os processos mapeiam
um mesmo espaço de
endereço do kernel
uma vez que só há uma instância
do kernel executando no sistema
Figura Slide 5.7
Figura slide 5.9
o kernel mantém algumas estruturas
de dados globais e alguns
objetos por processo
esses objetos por processo permitem
ao kernel acessar o espaço de endereço
de qualquer processo.
Estrutura proc
Apesar de compartihado por
todos os processos, o system
space é protegido do modo usuário
Para acessar o kernel,
um processo deve usar a
interface "chamada de sistema"
Quando um processo faz uma chamada de
sistema, uma sequência de instrução altera
para modo kernel e transfere o controle para
o kernel, que opera em benefício do processo
Quando a chamada de sistema finaliza,
o kernel altera novamente para modo usuário
e transfere o controle de volta ao processo
Espaço do Processo (Process Space)
Gerenciado pelo Kernel (modo kernel)
kernel stack
vários processos podem estar
envolvidos em atividades do
kernel concorrentemente
Por isso, cada processo necessita de uma pilha de kernel individual que mantém o rastreio da sequência de chamadas de funções executadas em kernel
uArea (user area)
localização do PCB
Gerenciado pelo usuário (modo usuário)
Dados
Variáveis globais
Pilha do usuário
Parâmetros de funções
Endereços de retorno
Variáveis locais
Seção de texto
Código do executável
Heap
Memória alocada dinâmicamente
Contexto
Process Context
O kernel atua em benefício do processo atual
Ex.: Programas de usuário, chamadas de sistema...
System Context
O kernel não atua em benefício de um processo em particular
Ex.: Interrupções, atualização da prioridade de processos...
Figura slide 5.21
memória virtual
espaço de endereço
virtual por processo
mapa de tradução de endereço
Memory Management Unit (MMU)
Carrega os registradores com o mapa
de tradução do processo em execução
Deve ser acessado em modo kernel
Na troca de contexto, os registradores
são alterados para apontar para o
mapa de tradução do novo processo
Paginação
Segmentação
Execução em modo kernel
Três tipos de eventos
levam o sistema a
entrar no modo kernel
Exceções
Eventos síncronos ao processo
em execução, causados por eventos
relacionados ao próprio processo
Divisão por zero
Acesso a endereço ilegal
Overflow
Etc.
A rotina de tratamento da
exceção (exception handler)
roda em process context
Pode acessar o espaço de endereçamento
do processo (incluindo a uArea)
e bloquear, se necessário
Interrupções por software
(SVCs / traps / chamadas de sistema)
Ocorrem quando o processo
executa uma instrução especial do
processador (trap, syscall)
São eventos síncronos
ao processo em execução
Assim como as exceções, a
SVC roda em process context
Pode acessar o espaço de endereçamento
do processo (incluindo U area), além
de poder bloquear o processo, se necessário.
Interrupções por dispositivos
Eventos assíncronos causados
por dispositivos periféricos
(disco, relógio, interface de rede, etc)
São tratadas em system context
pois não são causadas ou
provenientes do processo corrente
Não pode haver
acesso ao espaço do
processo em execução
Não pode bloquear (colocar
o processo atual em espera)
pois isso bloquearia um
processo arbitrário e inocente
Quando o kernel recebe o controle,
consulta uma dispatch table,
que contém os endereços de
rotinas de baixo-nível que
lidam com esses eventos
Antes de chamar a rotina apropriada,
o kernel salva alguns estados do processo
interrompido na sua kernel stack
Figura slide 5.26
Processos no Unix
Estados de
um processo
Figura livro, pg 25
Hierarquia
e pode ter um ou
mais processos filhos
Cada processo tem
um processo pai
todos os processos
decendem do processo init
com exceção de alguns
poucos como o processo
swapper (processo ocioso)
Ciclo de vida
Pode rodar mais
de um programa
pela Call exec()
Finalizado pela Call exit()
Iniciado pelas Calls fork() e vfork()
uArea e Estrutura proc
uArea
Localizada no espaço
do processo
Visível e necessário
somente quando
processo em execução
contém
PCB
Ponteiro pra estrutura proc
Credenciais (User ID / Group ID)
Status, argumentos e valores da SVC (system call) corrente
Tabela de arquivos abertos
Estatísticas de uso de CPU
Estrutura proc
Localizada no
espaço do kernel
Contém todas as informações
que o kernel posssa precisar
quando um processo
NÃO está em execução
Identificadores
informações de hierarquia
Estado corrente do processo
Ponteiros pra linkar o processo em filas
Prioridade de escalonamento
Informações para manipulações de sinais
Informações para
gerenciamento da memória
Manipulação de
Interrupções
interrupções
permitem aos dispositivos
periféricos interagir com a CPU
informar sobre
finalização de tarefas
condições de erro
eventos que exigem atenção imediata
eventos gerados de
maneira assíncrona
o sistema não sabe
quando irão ocorrer
Interrupt Handler
nome dado à
rotina de tratamento
da interrupção
roda em kernel mode
e system context
não pode acessar o
process space
não pode bloquear
um processo
o tempo de servir a
interrupção é descontado
do processo corrente
(time slice)
Interrupções podem
ocorrer enquanto uma
outra está sendo atendida
Necessidade de se
priorizar as interrupções
interrupção de relógio
é mais prioritária do
que a interrupção de
interface de rede
cujo processamento
dura vários ticks
A cada tipo de interrupção
está associado a um
Interrupt Priority Level - IPL
O número de níveis de
interrupção varia de acordo
com o padrão Unix e com
as arquiteturas de hardware.
Ex: Unix BSD – IPL ́s
variam de 0 a 31.
Figura slide 5.30