De forma a ajudá-lo a compreender quais as diferenças entre Thread e Processos, resolvemos escrever esta matéria. Muitas são as dúvidas que vão surgindo relativamente a esta questão. Esperamos conseguir explicar-lhe da melhor forma essas diferenças.
O que é um Thread?
O Thread ou Linha ou Encadeamento de execução é a forma de um processo dividir-se a si mesmo em duas ou mais tarefas, que podem ser executadas em simultâneo. Uma thread permite, exemplificando que o utilizador de um programa utilize uma funcionalidade do ambiente de trabalho enquanto outras linhas de execução realizam outros cálculos e operações. As threads também podem utilizar o mesmo espaço de memória pertencentes a um determinado processo.
Os sistemas que suportam uma única thread são chamados de monothread, enquanto os sistemas que suportam múltiplas são chamados de multithread.
Veja também:
File System – O que é o sistema de arquivos
Partições MBR e GPT – o que são?
5 situações em que a Internet das Coisas poderá facilitar a sua vida
Normalmente as threads são divididas em duas categorias:
-
ULT (User Level Thread )
– Thread ao Nível de Utilizador (são escalonadas pelo programador, tendo a grande vantagem de cada processo usar um algoritmo de escalonamento que melhor se adapte à questão. O sistema operativo neste tipo de thread não faz o escalonamento, pois normalmente nem sabe que elas existem. Neste modo, o programador é responsável por criar, executar, escalonar e destruir a mesma).
-
KLT (Kernel Level Thread)
– Thread ao Nível do Núcleo – (são escalonadas diretamente pelo sistema operativo, e são mais lentas que as ULT pois a cada chamada elas necessitam consultar o sistema, exigindo assim a mudança total de contexto do processador, memória e outros níveis necessários para alternar um processo).
O que é um processo?
Processo pode ser definido como um programa de computador em execução, no entanto em sistemas operativos, processo é um módulo executável único, que corre concorrentemente com outros módulos executáveis. Por exemplo, em um ambiente multi-tarefa (ex: Unix) que suporta processos, um processador de texto, um navegador e um sistema de banco de dados são processos separados que podem operar simultaneamente.
Processos são módulos separados e carregáveis, ao contrário de threads, que não podem ser carregadas. Múltiplas threads de execução podem ocorrer dentro de um mesmo processo. Além das threads, o processo também inclui certos recursos, como arquivos e alocações dinâmicas de memória e espaços de endereçamento.
Um processo pode ter vários estados, sendo eles:
- New: processo está a ser criado
- Running: instruções do processo quando está em execução
- Waiting: processo está à espera da ocorrência de algum evento
- Terminated: processo terminou a execução
Estas são as principais diferenças entre Thread e Processos, esperamos ter conseguir esclarecer as suas dúvidas sobre estes temas. No entanto se tiver alguma dúvida deixe aqui a sua questão que tentaremos esclarece-lo.