Processos

Palavras-Chave

Em um computador, o processador interage com a memória e outros dispositivos para processar os dados. Esta dinâmica é administrada pelo sistema operacional, que administra os recursos de memória e gerencia o uso do processador. O sistema operacional quem controla quando um programa será inicializado, executado, priorizado e finalizado. A forma de um sistema operacional realizar essa gestão entre os programas é feita através de um conceito chamado de processo (Figura 1).

Figura 1 – Dinâmica de um processo em um computador.

Fonte: Wikipédia.

Um processo é uma instância de um programa dentro de um sistema operacional (Figura 2). Quando um programa é executado o sistema operacional cria um novo processo. Quando este programa for finalizado, o seu processo também será finalizado.

Figura 2 – Lista de processos executados no sistema operacional Ubuntu 18.04.2 LTS.


Fonte: cyberciti.

O sistema operacional gerencia os processos de maneira que vários programas possam ser executados ao mesmo tempo, esta prática é conhecida como escalonamento de programas.

Quando um programa é executado, o sistema operacional reserva um espaço da memória especificamente para aquele processo. Este espaço da memória é chamado segmento. Um segmento de um processo nada mais é do que uma faixa de endereços organizados na memória. O conceito de segmento possui algumas diretivas para o gerenciamento destes endereços, onde:

  • Somente o processo ao qual o segmento se destina poderá trabalhar com os dados contidos nele;
  • Um processo não pode trabalhar com dados fora de seu segmento;
  • Uma vez que um processo é finalizado, os endereços de memória contendo o segmento são liberados para o sistema operacional reutiliza-lo quando novos processos forem criados.

Um segmento é dividido em duas partes principais:

  • Segmento de código (texto): contém as instrução de um programa;
  • Segmento de dados: espaço reservado para armazenar os dados que serão processados por esse programa.

Um segmento de dados é subdividido em:

  • Variáveis constantes: constantes do programa, variáveis globais e as variáveis estáticas;
  • Controle: conjunto de registros que são utilizados para a comunicação do sistema operacional com o seu processo;
  • Pilha: alocação estática de memória;
  • Heap: alocação dinâmica de memória.

A pilha e a heap são as partes de um segmento que são passíveis de alteração por um programa escrito em uma linguagem de programação. As linguagens de programação possuem ferramentas para manipular como estes espaços são reservados para um programa. Este processo é conhecido como alocação de memória (ou gerenciamento de memória de um programa) que é cerne do estudo de estruturas de dados. Na alocação de memória são reservados uma faixa de endereços para um tipo de dado específico que se deseja manipular no programa.

Concluindo, um processo refere-se a um conjunto de instruções que são processadas pelo processador. Estas instruções permitem ao sistema operacional gerir os programas executados em condições ótimas às suas demandas de execução.

Referências

  • PIVA JÚNIOR, Dilermando (et al). Estrutura de dados e técnicas de programação. 1. ed. Rio de Janeiro, RJ: Campus, 2014. 399 p. ISBN: 9788535274370.
  • CORMEN, Thomas H et al. Algoritmos: teoria e prática. Rio de Janeiro: Elsevier, 926 p. ISBN: 9788535236996.
  • TOSCANI, Laira Vieira; VELOSO, Paulo A. S. Complexidade de algoritmos: análise, projeto e métodos. 3. ed. Porto Alegre: Bookman, 2012. 261 p. (Série livros didáticos informática UFRGS, 13) ISBN: 9788540701380.
  • ASCENCIO, Ana Fernanda Gomes. Estruturas de dados: algoritmos, análise da complexidade e implementações em Java e C/C++. São Paulo: Pearson, c2010. 432 p. ISBN: 9788576052216, 978857605816.
  • BRASSARD, Gilles; BRATLEY, Paul. Fundamentals of algorithmics. Englewood Cliffs: Prentice Hall, c1996. xx, 524 p. ISBN: 0133350681.

Livraria