Programa vs Processo 
Um processo é um programa em execução. Por exemplo, quando escrevemos um programa em C ou C++ e o compilamos, o compilador cria um código binário. O código original e o código binário são ambos programas. Quando realmente executamos o código binário, ele se torna um processo. 

Um processo é uma entidade 'ativa', em vez de um programa, que é considerado uma entidade 'passiva'. Um único programa pode criar muitos processos quando executado várias vezes; por exemplo, quando abrimos um .exe ou arquivo binário várias vezes, várias instâncias começam (vários processos são criados). 

Qual é a aparência de um processo na memória? 
 

processo

Seção de texto : Um processo, também conhecido como Seção de texto, também inclui a atividade atual representada pelo valor do Contador do programa
Pilha : a pilha contém dados temporários, como parâmetros de função, endereços de retorno e variáveis ​​locais. 
Seção de dados : contém a variável global. 
Seção de heap : memória alocada dinamicamente para processar durante o tempo de execução. 
Consulte isso para obter mais detalhes sobre as seções. 

Atributos ou características de um processo 
Um processo possui os seguintes atributos. 
 bloco div

1. Process Id:    A unique identifier assigned by the operating system
2. Process State: Can be ready, running, etc.
3. CPU registers: Like the Program Counter (CPU registers must be saved and 
                  restored when a process is swapped in and out of CPU)
5. Accounts information:
6. I/O status information: For example, devices allocated to the process, 
                           open files, etc
8. CPU scheduling information: For example, Priority (Different processes 
                               may have different priorities, for example
                               a shorter process assigned high priority
                               in the shortest job first scheduling)

Todos os atributos acima de um processo também são conhecidos como o contexto do processo
Cada processo tem seu próprio bloco de controle de processo (PCB), ou seja, cada processo terá um PCB exclusivo. Todos os atributos acima fazem parte do PCB. 

  

Estados do processo: 
um processo está em um dos seguintes estados: 
 

1. New: Newly Created Process (or) being-created process.

2. Ready: After creation process moves to Ready state, i.e. the 
          process is ready for execution.

3. Run: Currently running process in CPU (only one process at
        a time can be under execution in a single processor).

4. Wait (or Block): When a process requests I/O access.

5. Complete (or Terminated): The process completed its execution.

6. Suspended Ready: When the ready queue becomes full, some processes 
                    are moved to suspended ready state

7. Suspended Block: When waiting queue becomes full.

estados de processo

Alternância de contexto 
O processo de salvar o contexto de um processo e carregar o contexto de outro processo é conhecido como alternância de contexto. Em termos simples, é como carregar e descarregar o processo do estado de execução para o estado de pronto. 

Quando ocorre a troca de contexto?  
1. Quando um processo de alta prioridade chega a um estado pronto (ou seja, com prioridade mais alta do que o processo em execução) 
2. Ocorre uma interrupção 
3. Troca de modo de usuário e kernel (embora não seja necessário) 
4. Escalonamento de CPU preemptivo usado. 

Mudança de contexto vs Mudança de 
modo Uma mudança de modo ocorre quando o nível de privilégio da CPU é alterado, por exemplo, quando uma chamada de sistema é feita ou ocorre uma falha. O kernel funciona mais em um modo privilegiado do que em uma tarefa de usuário padrão. Se um processo do usuário deseja acessar coisas que são acessíveis apenas ao kernel, uma troca de modo deve ocorrer. O processo em execução no momento não precisa ser alterado durante a troca de modo. 
Uma troca de modo normalmente ocorre para que uma troca de contexto de processo ocorra. Apenas o kernel pode causar uma mudança de contexto. 

Processos vinculados à CPU versus processos vinculados a I / O: 
um processo vinculado à CPU requer mais tempo da CPU ou gasta mais tempo no estado de execução. 
Um processo vinculado a E / S requer mais tempo de E / S e menos tempo de CPU. Um processo vinculado a E / S passa mais tempo no estado de espera. 

  

Exercício:  
1. Qual dos itens a seguir não precisa necessariamente ser salvo em uma alternância de contexto entre processos? (GATE-CS-2000) 
(A) Registros de uso geral 
(B) Buffer lookaside de tradução
(C) Contador de programa 
(D) Todas as alternativas  anteriores 

Resposta (B) 

Explicação: 
Em uma troca de contexto de processo, o estado do primeiro processo deve ser salvo de alguma forma, para que quando o planejador voltar à execução do primeiro processo, ele possa restaurar esse estado e continuar. O estado do processo inclui todos os registros que o processo pode estar usando, especialmente o contador do programa, além de quaisquer outros dados específicos do sistema operacional que possam ser necessários. Um buffer look-aparte de tradução (TLB) é um cache de CPU que o hardware de gerenciamento de memória usa para melhorar a velocidade de tradução de endereço virtual. Um TLB tem um número fixo de slots que contêm entradas de tabela de página, que mapeiam endereços virtuais para endereços físicos. Em uma troca de contexto, algumas entradas TLB podem se tornar inválidas, uma vez que o mapeamento virtual para físico é diferente. A estratégia mais simples de lidar com isso é limpar completamente o TLB. 

2. O tempo necessário para alternar entre os modos de execução do usuário e do kernel é t1, enquanto o tempo necessário para alternar entre os dois processos é t2. Qual dos seguintes é verdadeiro? (GATE-CS-2011) 
(A) t1> t2 
(B) t1 = t2 
(C) t1 <t2 
(D) nada se pode dizer sobre a relação entre t1 e t2. 

Resposta: (C)  
Explicação: A troca de processo envolve uma troca de modo. A comutação de contexto pode ocorrer apenas no modo kernel. 

Questionário sobre gestão de processos 

Referências:  
http://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/3_Processes.html  
http://cs.nyu.edu/courses/spring11/G22.2250-001/lectures/lecture-04. html 

Escreva comentários se encontrar algo incorreto ou se quiser compartilhar mais informações sobre o tópico discutido acima