Processos e threads
Como vários "programas" podem rodar simultaneamente em um computador se ele possui um único processador (ou menos processadores ou núcleos – "cores" – do que o número de programas em execução)?
Multiprogramação: o processador é chaveado entre diversos programas dando a cada um algumas dezenas de milissegundos de processamento produzindo a ilusão de paralelismo ("pseudo-paralelismo").
Árdua tarefa do sistema operacional: tratamento das múltiplas atividades realizadas em pseudo-paralelismo.
1.1. O Modelo de Processos
Todos os programas que rodam em um computador (o sistema operacional, inclusive) são compostos de um conjunto de processos.
PROCESSO = instância de um programa em execução + seu contexto (formado por: valores áveis + valores dos registradores do hardware (Program Counter - PC, Stack Pointer - SP) + recursos (lista de arquivos abertos, alarmes pendentes, listas de processos relacionados, etc.)
Um processo é essencialmente um contêiner de informações necessárias para executar um programa.
PROGRAMA = arquivo contendo um conjunto de informações que descrevem como construir um processo. Estas informações incluem: • Identificação do formato binário: o formato do arquivo executável que permite ao kernel interpretar as demais informações contidas no arquivo; • Instruções em linguagem de máquina: representam o algortimo do programa; • Endereço de entrada do programa: identifica a localização da instrução na qual a execução do programa deverá começar; • Dados: valores usados para inicializar as variáveis e constantes; • Tabelas de símbolos e de relocação: localização e nomes das funções e variáveis de um programa; • Informações de bibliotecas compartilhadas e linkagem dinâmica: lista de bibliotecas dinâmicas necessárias ao programa. • Outras informações que descrevem como o processo deverá ser construído.
Vários processos podem rodar o mesmo programa.