O suporte à thread é fornecido pelo próprio sistema operacional (SO), no caso da linha de execução ao nível do núcleo, ou implementada através de uma biblioteca de uma determinada linguagem, no caso de uma User-Level Thread (ULT).
Uma linha de execução permite que o usuário de programa, por exemplo, utilize uma funcionalidade do ambiente enquanto outras linhas de execução realizam outros cálculos e operações.
A execução de threads (parcial ou totalmente simultâneas) dependerá, além do processador, do sistema operacional, pois o mesmo irá gerenciar a execução das threads de maneira semelhante à realizada com os processos.
c-
Processo - programa em execução (ativo). Programa é um conjunto de códigos (passivo) que quando carregado em memória vira processo.
Um programa pode executar vários processos, como um editor de textos (um programa), com vários documentos distintos abertos (processos).
Na criação de um processo, o sistema operacional o aloca criando recursos em três partes conforme
- Contexto de software: determina limites dos recursos alocados, como memória, quantidade de arquivos abertos, prioridade etc.
- Contexto de hardware: armazena o conteúdo dos registradores tais como pilha e o contador do programa, de programa, status etc.
-Espaço de endereçamento: armazena as instruções executadas pelo processo.
O sistema operacional tb cria PCB – Process Control Block- para gerenciar os contextos do processo. PCB contém:
1- Nome e/ou número do processo
2- Ponteiros.
3- Estado do processo.
4 - Prioridade.
5 - Registradores.
6- Limites de memória.
7- Listas de arquivos abertos.
O PCB fica em área de memória de acesso exclusivo do sistema operacional. Limita o tamanho dessa área, limita a quantidade de processos
que sistema operacional pode executar.
Thread compartilha a mesma área do programa principal. Vantagem -economia de recursos pois não há criação de PCB. Contexto do thread é o mesmo do ao processo principal.
Threads se diferenciam apenas nos dados que processam.