Processos em Sistemas Operativos e Transparência

Classificado em Computação

Escrito em em português com um tamanho de 6,33 KB

O que é um processo?

O conceito mais central em qualquer sistema operativo é o processo: uma abstração de um programa em execução. Um processo é apenas uma instância de um programa em execução, incluindo os valores atuais do contador de programa, registadores e variáveis. Processos podem ser criados e terminados dinamicamente. Cada processo tem o seu próprio espaço de endereçamento. Conceitualmente, cada processo tem a sua própria CPU virtual.

O que é um processo? Um processo é uma atividade de algum tipo. Ele tem um programa, uma entrada, uma saída e um estado. Um único processador pode ser partilhado entre vários processos com algum algoritmo de escalonamento usado para determinar quando parar o trabalho num processo e servir outro. Em comparação, um programa é algo que pode ser armazenado em disco e não fazer nada até ser executado.

Criação de processos

Os sistemas operativos precisam de alguma maneira para criar processos. Quatro eventos principais fazem com que os processos sejam criados:

  • Inicialização do sistema.
  • Execução de uma chamada de sistema de criação de processo por um processo em execução.
  • Solicitação de um utilizador para criar um novo processo.
  • Início de uma tarefa em lote.

Término de processos

Após um processo ter sido criado, ele começa a ser executado e realiza o seu trabalho. No entanto, nada dura para sempre, nem mesmo os processos. Cedo ou tarde, o processo terminará, normalmente devido a uma das condições a seguir:

  1. Saída normal (voluntária).
  2. Erro fatal (involuntário).
  3. Saída por erro (voluntária).
  4. Morto por outro processo (involuntário).

Hierarquias de processos

Em alguns sistemas, quando um processo cria outro, o processo pai e o processo filho continuam a ser associados de certas maneiras. O processo filho pode, por sua vez, criar mais processos, formando uma hierarquia de processos.

Exemplo: Quando um utilizador envia um sinal do teclado, o sinal é entregue a todos os membros do grupo de processos associados com o teclado no momento (em geral, todos os processos activos que foram criados na janela actual). Individualmente, cada processo pode apanhar o sinal, ignorá‑lo, ou assumir a ação predefinida, que é ser morto pelo sinal.

Estado dos processos

Embora cada processo seja uma entidade independente, com o seu próprio contador de programa e estado interno, os processos muitas vezes precisam de interagir entre si. Um processo pode gerar alguma saída que outro processo usa como entrada.

Estados dos processos:

  1. Em execução — realmente a usar a CPU naquele instante.
  2. Pronto — executável, temporariamente parado para deixar outro processo ser executado.
  3. Bloqueado — incapaz de ser executado até que algum evento externo aconteça.

Transparência em sistemas distribuídos

A transparência define‑se como a capacidade de ocultar toda a estrutura que compõe um sistema distribuído, apresentando-o como um único elemento e não como um conjunto de máquinas dispersas. A transparência é definida segundo o elemento onde se aplica, nomeadamente:

Tipos de transparência

  • Transparência no acesso – permite que recursos locais e remotos sejam acedidos do mesmo modo.
  • Transparência na localização – permite que recursos sejam acedidos sem se saber qual a sua localização física ou de rede.
  • Transparência na concorrência – permite que vários processos operem em simultâneo com partilha de recursos, sem interferência entre eles.
  • Transparência na replicação – permite que várias instâncias de recursos sejam utilizadas para garantir fiabilidade e desempenho, sem que o utilizador perceba.
  • Transparência nas falhas – permite a ocultação de faltas e falhas, permitindo aos utilizadores e aplicações terminarem as suas acções sem prejuízo.
  • Transparência na mobilidade – permite a movimentação de clientes e recursos dentro de um sistema sem afectar as operações.
  • Transparência na performance – permite que o sistema seja reconfigurável de modo a melhorar a performance segundo a variação da carga (load balancing).
  • Transparência na escalabilidade – permite que o sistema e as aplicações sejam expandidos sem alterar a estrutura do sistema ou os algoritmos das aplicações.

As transparências mais importantes são o acesso e a localização. Por vezes ambas são conhecidas como transparência de rede, uma vez que são responsáveis pela transparência na distribuição física e lógica dos recursos de uma rede.

Exemplos de transparência de acesso e localização

Transparência de acesso: considere‑se, por exemplo, o acesso a ficheiros remotos. Antes do aparecimento dos serviços cloud, em particular do Dropbox, era necessário utilizar o protocolo FTP e aplicações específicas para aceder a ficheiros remotos. Actualmente, com a cloud completamente integrada nos sistemas operativos, é possível aceder a ficheiros remotos, seja Dropbox, Google Drive, etc.

Transparência de localização: considere‑se, por exemplo, o URL http://academy.autonoma.pt/. A parte do endereço que identifica um domínio no servidor web (o domínio «academy») refere‑se ao nome da máquina no domínio e não a um endereço de internet. No entanto, este domínio não é totalmente transparente na mobilidade: se o web site «academy» mudar para outro domínio, terá necessariamente de atualizar os apontamentos e endereços.

Transparência de acesso e localização: considere‑se, por exemplo, o endereço de e‑mail [email protected]. O endereço consiste no nome do utilizador e no domínio. Enviar um e‑mail para este endereço não obriga a conhecer a localização física ou de rede do utilizador; tal não depende da localização do receptor. Como tal, existe transparência no acesso e na localização.

Entradas relacionadas: