1 - Processo

Partindo dos fundamentos apresentados na unidade anterior para criação de um código Java robusto, apresentaremos, a partir de agora, os principais conceitos de alto nível envolvidos na programação paralela ou concorrente para qualquer sistema operacional multitarefa, inclusive o Android, que é um sistema operacional baseado no kernel Linux.

Todos os computadores, smartphones, tablets, dentre outros aparelhos modernos, são capazes de fazer várias coisas ao mesmo tempo. As pessoas acostumadas a trabalhar com esses dispositivos podem não estar completamente cientes deste fato, contudo é importante compreendê-lo.

Em qualquer sistema multiprogamado, a CPU cria chaves de programa para programa, executando cada um deles por dezenas ou centenas de milissegundos. Estritamente falando, enquanto a cada instante do tempo a CPU executa somente um programa, no decorrer de um único segundo do tempo ela pode trabalhar por vários programas, dando aos usuários a ilusão de um paralelismo. Um dos principais objetivos da multiprogramação é melhorar o turnaround do software, ou seja, o tempo transcorrido desde o momento em que o software entra em execução e o instante em que termina sua execução.

Algumas vezes, nesse contexto, fala-se de pseudoparalelismo, para diferenciar do verdadeiro paralelismo, por exemplo, dos sistemas multiprocessados simétricos (SMP) que são aqueles constituídos de duas ou mais CPUs/cores que compartilham simultaneamente a mesma memória principal física.

Neste modelo, todos os programas/softwares que podem ser executados no computador são organizados em vários processos. Um conceito fundamental para todos os sistemas operacionais, inclusive o Android, é o de processo.

Um processo é basicamente um programa (conjunto de instruções e dados) em execução, ou seja, a cada processo está associado um espaço de endereçamento.
Copyright © 2016 AIEC.