O que é um processo em um sistema operacional?
Tags: sistemasoperacionais, unix, windows, portugues
Published: 2020-10-21 19:47:42

---
title: O que é um processo em um sistema operacional?
published: true
description: Explicando processos de um sistema operacional com os mestres Francis Machado e Luiz Maia
tags: sistemasoperacionais, unix, windows, portugues
cover_image: https://images.unsplash.com/photo-1562976540-1502c2145186?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=889&q=80
---
Um processo pode ser considerado como **um programa em execução**, também **um conjunto de informações necessárias para a concorrência de programas** no sistema operacional. Além disso, também pode ser entendido como **o ambiente onde um programa é executado**. 

Essas definições você irá encontrar no [Arquitetura de Sistemas Operacionais](https://www.amazon.com.br/Arquitetura-Sistemas-Operacionais-Incluindo-Exerc%C3%ADcios/dp/8521622104/ref=sr_1_1?__mk_pt_BR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&dchild=1&keywords=arquitetura+de+sistemas+operacionais&qid=1601378668&sr=8-1), livro dos mestres Francis Machado e Luiz Maia.

Frisando Tanenbaum e Austin:

> (..) um processo pode ser pensado como um programa em execução juntamente com toda informação do seu estado (memória, registradores, contador de programa, status de E/S, etc

Quando ocorre uma troca de um processo por outro temos a chamada **mudança de contexto**, e cada processo possui três partes: 

1. Contexto de hardware
2. Contexto de software
3. Espaço de endereçamento

### Contexto de hardware
Essa parte do processo é a que armazena o conteúdo dos registradores gerais da CPU e dos registradores específicos. O contexto de hardware de um processo em execução fica armazenado nos registradores do processador.

### Contexto de software
Aqui temos as especificidades dos recursos disponíveis para serem alocados em um processo, como limite de arquivos abertos ao mesmo tempo, tamanho do buffer para operações de E/S e prioridade de execução de processos.

O contexto possui três tipos de informação sobre o processo: identificação, quotas e privilégios.

#### Identificação
Cada processo do sistema operacional possui um número identificador, chamado de PID (*process identification*), juntamente com a identificação do usuário que o criou, o UID (*user identificação*).

#### Quotas
Aqui temos a informação dos limites de recurso que o processo pode alocar.

#### Privilégios
Os privilégios definem quais ações um processo pode tomar com relação a ele mesmo, a outros processo e ao sistema operacional. Pense, por exemplo, num processo iniciado pelo `root` no linux, que tem privilégios de administrador.

### Espaço de endereçamento
Esta parte do processo refere-se a àrea da memória que pertence ao processo, que ele possui para armazenar instruções e dados para sua execução.

## Estados de um processo
Um processo pode ter basicamente três estados: em execução, pronto ou em espera.

### Execução (*running*)
Dizemos que um processo está em execução quando ele está sendo processado pela CPU.

### Pronto (*ready*)
Estar em estado de pronto significa que o processo aguarda para ser executado. A ordem de execução dos processos em estado de pronto é determinada pelo **mecanismo de escalonamento**.

### Espera (*wait*)
O processo encontra-se em estado de espera quando aguarda por algum evento externo ou algum recurso para prosseguir sua execução.

Para maiores informações sobre processos vale dar uma lida no livro Arquitetura de Sistemas Operacionais do Francis Machado e do Luiz Maia.

---
_Fontes:_
MACHADO, Francis Berenger; MAIA, Luiz Paulo. __Arquitetura de Sistemas Operacionais: Incluindo Exercícios com o Simulador SOSIM e Questões do ENADE__. Rio de Janeiro: LTC, 2013.

TANENBAUM, Andrew S; AUSTIN, Todd. __Organização estruturada de computadores__. Tradução Daniel Vieira; revisão técnica Wagner Luiz Zucchi. São Paulo: Pearson Prentice Hall, 2013.

---
_Esse texto não tem intenção de esgotar o tema. Acrescente nos comentários, e também aponte erros quando os identificar._