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:
- Saída normal (voluntária).
- Erro fatal (involuntário).
- Saída por erro (voluntária).
- 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:
- Em execução — realmente a usar a CPU naquele instante.
- Pronto — executável, temporariamente parado para deixar outro processo ser executado.
- 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.