Software Livre
Processos vs. Programas
A definição clássica diz que um processo é um programa em execução. Podemos dizer que um processo é uma instância de um programa. O programa é estático, e normalmente está em alguma memória não volátil (disco), já o processo é dinâmico, e além do código executável, é composto de variáveis, pilha, etc. Ou seja no processo os dados podem variar ao longo do tempo. Um programa pode ser inicializado várias vezes, gerando vários processos totalmente distintos entre si. Espaço de Endereçamento É o conjunto da memória acessível ao processo, guarda o executável, as variáveis e a pilha, e normalmente começa de zero e vai até um valor específico. Nos sistemas operacionais mais modernos esse espaço de endereço é continuo, porém a sua organização física na RAM é fragmentada, para suportar isso existem os conceitos de Memória Real e Virtual. Tabela de Processos É a estrutura onde é guardada as informações sobre todos os processos que estão na memória do computador, nesta estrutura tem informações sobre estados do processo e contexto. Normalmente implementado através de uma tabela ou lista encadeada.
Registradores e Contexto de Processo
Em um sistema multi programado, processos podem se alternar no uso da CPU, um processo quando retorna a CPU ele deve continuar de onde ele estava quando deixou a CPU em sua execução anterior, para garantir isso, é preciso salvar o chamado contexto do processo, que é basicamente é constituído dos registradores de uso geral, status, program counter (PC), a pilha de execução, dentre outros. 1.9.1 Hierarquia de Processos
Após a carga do SO esse inicia o primeiro processo, esse processo é responsável pela carga de outros processos e estes podem chamar outros processos. Quando um processo é criado um dos seus atributos é o identificador do processo que o criou, neste caso chamado de processo pai.
Esse tipo de relação gera a chamada hierarquia de processos, onde os processos do sistema podem ser