Pular para o conteúdo

Processes & Scheduling

Categoria

11 artigos

  • 01
    Carregamento de ELF

    Transformando um binário ELF em disco em um processo em execução, mapeando os segmentos que seus program headers descrevem.

  • 02
    Escalonadores

    Decidindo qual tarefa roda em seguida, de round-robin simples a esquemas baseados em prioridade.

  • 03
    fork e exec

    Por que o Unix cria um processo em duas etapas separadas, e como copy-on-write torna a primeira barata apesar de parecer duplicar tudo.

  • 04
    FXSAVE/XSAVE e Estado de FPU/SIMD

    As instruções que salvam e restauram o estado de registrador de ponto flutuante e vetorial, e como XSAVE generaliza o formato antigo de tamanho fixo para cobrir AVX e além.

  • 05
    Inversão de Prioridade e Herança de Prioridade

    Como uma tarefa de baixa prioridade segurando um lock pode travar uma de alta prioridade indefinidamente, e a técnica que limita quanto tempo esse travamento dura.

  • 06
    IPC (Pipes, Memória Compartilhada, Sinais)

    Como dois processos já criados de fato trocam dados ou eventos entre si: pipes como um buffer de kernel, memória compartilhada como dois mapeamentos dos mesmos frames, sinais como entrega assíncrona.

  • 07
    Multitarefa

    Os blocos de construção para rodar mais de uma tarefa em uma única CPU.

  • 08
    Sincronização

    Por que um escalonador rodando em mais de uma CPU consegue corromper sua própria fila de execução, e os locks, atômicos, e desabilitação de interrupções que um kernel usa para impedir isso.

  • 09
    Término de Processo, Zumbis, e wait()

    Para onde vai o status de saída até um pai coletá-lo, por que um processo terminado pode continuar existindo como zumbi, e o que acontece com um filho cujo pai já saiu.

  • 10
    Threads e Thread-Local Storage

    O que uma thread de fato compartilha com suas irmãs versus o que permanece privado, e como TLS dá a cada uma sua própria cópia de uma variável global.

  • 11
    Troca de Contexto

    Salvando e restaurando o estado da CPU para que a execução possa se mover entre tarefas.