Informatica
Alocação de Memória * Em Unix, um processo executa em 2 modos: * Modo Kernel * Modo User * Cada processo tem memória virtual: * kernel ou system space: partilhada por todos os processos. * memória privada: (pilha, bss). * memória partilhada: código, bibliotecas partilhadas, mmap * Privadas mas controladas pelo kernel: área-u e pilha do kernel.
Modos de Execução e Contextos * Funções do Kernel podem executar no contexto: * Processo (ie, syscall): kernel pode bloquear. * Kernel, ou interrupt: não pode bloquear.
* Top-half e bottom-half do kernel.
Estados de um Processo
Contexto de um Processo * Espaço de Endereçamento do Usuário: * texto; * dados; * pilha do usuário; * memória partilhada. * Informação de controle: área-u; proc; pilha modo-kernel; mapa de tradução de endereços. * Credenciais: UIDs, GIDs. * Variáveis de Ambiente * Contexto HW: PC, SP, PSW (processor status word), mmem regs, FPU regs.
Credenciais de um Processo * UID/GID real e efectiva. * Efectiva: usada para abrir ficheiros. * Real: usada para enviar sinais. * programs em suid mode: mudam UID efectivo. * programs em sgid mode: mudam GID efectivo. * setuid() ou setgid(): permitem voltar ao ID real. * SYSV mantém saved UID e GID que sao restaurados por setuid. * BSD suporta vários grupos por utilizador.
A Área-U * PCB (process control block): armazena o contexto HW quando o processo não está activo. * pointer to proc; * UID e GID real e efectivo; * argumentos e resultado da syscall corrente; * signal handlers; * info sobre texto, dados e pilha, mais gestão de memória; * FD abertos (dinâmico ou estático); * nó-v do directório currente e do terminal currentel * estatísticas (CPU, profiling, quota); * Pilha modo-kernel.
A Estrutura proc * PID e