DEV Community

Rafael Rodrigues de Oliveira
Rafael Rodrigues de Oliveira

Posted on

Thread #1

Vamos explorar o conceito de Threads, mas antes de mergulharmos nesse tópico, é essencial discutirmos sobre Processos, pois eles representam o ponto de partida para entender Threads.


Definição de um Processo

No Sistema Operacional, um Processo é uma abstração de um programa em execução¹. Essa definição não ajuda compreender melhor o que é um Processo, então, vamos para uma compreensão mais detalhada, embora não nos aprofundemos muito, pois nosso foco é discutir Threads.

O Sistema Operacional pode estar executando diversos processos, por exemplo, pode estar realizando atualizações de software, utilizando um navegador para acessar a internet e executando ferramentas para edição de imagens, entre outras tarefas. Embora possa parecer que todos esses processos estão sendo executados ao mesmo tempo, essa percepção é ilusória. Na realidade, a CPU troca (figura 1.0) entre os processos em questão de milissegundos, permitindo a execução de vários processos em um intervalo de tempo muito curto. Isso cria a ilusão de paralelismo, mas na verdade se trata de um pseudoparalelismo². A verdadeira ocorrência de paralelismo nos processos ocorre quando se dispõe de multiprocessadores, isto é, sistemas com duas ou mais CPUs.

Esse mecanismo de troca de processos é possível graças à multiprogramação, na qual o Sistema Operacional divide a memória principal em partições e permite a alocação de diversos processos, possibilitando a alternância entre a execução deles. Conforme mostrado na figura 1.1, onde a memória principal (Memória RAM) esta particionada em vários processos e cada processo é executado uma vez.

Image figura 1.1
figura 1.1


Quando um processo é iniciado, ele pode requerer diversos recursos, tais como espaço de memória, instruções a serem executadas, arquivos abertos, dados de entrada, conexões de rede, entre outros elementos essenciais. Todos esses componentes são encapsulados dentro do próprio processo.

A utilização desses recursos, muitas vezes de alto custo computacional, é um dos motivos para a adoção de threads, embora detalhes a respeito desse tópico sejam deixados para uma discussão posterior. Vale ressaltar que o Sistema Operacional desempenha um papel crucial no gerenciamento desses recursos, supervisionando a alocação de memória, o acesso a dispositivos de armazenamento e a execução dos diversos processos em andamento. A cada novo processo iniciado, é atribuído um PID (Identificador de Processo) único, e tais informações são registradas de maneira estruturada em uma tabela de processos.

Um ponto de relevância que merece destaque é que, mesmo que um programa seja executado em múltiplas instâncias, os processos resultantes podem ser criados de forma distinta, cada qual sendo associado a um PID único. Além disso, os recursos alocados a um processo não são compartilhados com outros processos, mesmo que pertençam ao mesmo tipo ou categoria.


Escalonador

O responsável por gerenciar essa troca de processos na CPU é o escalonador, que determina quais processos devem ser executados e quais devem ser suspensos. Essa troca ocorre de forma tão eficiente que se torna praticamente imperceptível, criando a sensação de execução simultânea.

Em resumo, o escalonador é responsável por decidir qual processo será executado, quando isso acontecerá e por quanto tempo ele permanecerá ativo.

Os processadores com múltiplos núcleos (ou cores) têm a capacidade de executar diversos processos simultaneamente, mas o processo de escalonamento continua sendo fundamental para determinar quais processos serão executados em cada núcleo.

É importante mencionar que existem vários algoritmos de escalonamento disponíveis, embora não entraremos em detalhes sobre eles neste contexto.


Estados de um Processo

Os processos possuem estados que se modificam em resposta ao mecanismo de troca de execução entre eles. Esses estados podem ser classificados como "Em Execução," "Pronto," e "Bloqueado." Tais transições de estado são comumente denominadas "Mudanças de Contexto" ou "Trocas de Contexto". Portanto, quando ocorre a alternância de processos na CPU, é natural que haja uma correspondente alteração no estado do processo.


¹Definição extraída do livro 'Sistemas Operacionais Modernos', de autoria de Tanenbaum, A. S. e Bos, H., na sua 4ª edição, publicada pela [Nome da Editora].

²Termo utilizado no livro 'Sistemas Operacionais Modernos', de autoria de Tanenbaum, A. S. e Bos, H., na sua 4ª edição, publicada pela [Nome da Editora].

Top comments (0)