quarta-feira, 2 de abril de 2014

Processos, como são formados e executados

RICARDO DE MAGALHÃES SIMÕES - Sobre o Autor
Doutorando em Engenharia Elétrica, Mestre em Informática (2006) e Bacharel em Ciência da Computação (2003), todos pela Universidade Federal do Espírito Santo. Atualmente, Professor Substituto de Informática no CEFET-ES, Professor de Programação I no Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas à Distância no CEFET- ES, professor de Sistemas Operacionais pela ESAB. Tem experiência na área de Ciência da Computação, com ênfase em Desenvolvimento de Algorítmos, Educação de Informática para estudantes do Ensino Médio, atuando principalmente nos seguintes temas: Informática Básica, Programação nas linguagem C/C++/C#, Java, Pascal.
Página pessoal:
Curriculo Lattes::

UNIDADE 5
Objetivo: Identificar o que são processos, como são formados e executados, e a maneira como o sistema operacional lida com eles.

1. Definição de Processo

Um programa é uma seqüência de instruções ordenadas escritas em uma linguagem computacional (Pascal, C++, Java, etc.). Um processo é uma instância de um programa que está sendo executado, ou seja, é o programa sendo executado no computador. Dependendo de como o programa foi criado, mais de um processo pode estar associado a ele durante a execução, sendo que cada processo representa um determinado conjunto de instruções do programa original. Isto acontece no Mediaplayer, por exemplo, quando há uma música tocando e o usuário está procurando uma outra música na lista de músicas, neste caso existe um programa em execução e pelo menos dois processos associados também em execução.

Os sistemas operacionais mais utilizados hoje em dia são multitarefa, realizada através do compartilhamento do tempo do processador. Desta forma, vários programas podem ser executados, e consequentemente vários processos, em um mesmo computador. Para realizar esta tarefa o sistema operacional deve separar os programas, e processos, para que a execução seja feita de maneira organizada, e para isso as seguintes propriedades devem ser armazenadas para cada processo:

Código executável do programa associado ao processo;
Espaço de Memória utilizado, onde fica armazenados o código executável, dados utilizados, estruturas de controle de execução;
Descritores do Sistema Operacional, como tabela de arquivos em disco ou servidores de banco de dados;
Atributos de Segurança, indicando o nome do usuário que iniciou o processo, as permissões de execução no computador;
Estado do Processo, que informará se o processo está em execução, esperando a liberação de algum recurso, bloqueado ou em outra situação.

2. Gerenciamento de Programas

O sistema operacional, sendo multitarefa, realiza o compartilhamento do processador entre os processos por meio da ativação, momentânea, do processo que será executado no processador. Se o processador possuir mais de um núcleo de processamento, mais de um processo poderá estar em execução no processador. Como apenas um processo pode estar ativo em cada núcleo do processador, os outros deverão esperar alguns instantes, até que o processo em execução tenha sido executado pelo tempo que o sistema operacional designou a ele. Quando o tempo do processo atual terminar, o sistema operacional realizará uma operação chamada “Troca de Contexto”, em que o processo atual será substituído por um outro processo que estava esperando a liberação de um núcleo no processador.

A Troca de Contexto é a etapa em que o sistema operacional armazenará todas as informações relativas à execução do processo atual, para permitir que o mesmo possa continuar a execução em outro momento, e incluir um outro processo para ser executado. Esta etapa deve ser executada de maneira quase instantânea, pois o processador deve ser utilizado principalmente para executar os programas. Existem três eventos que podem iniciar a Troca de Contexto:

Escalonamento de Processo: como foi dito anteriormente, cada processo em execução irá utilizar um núcleo do processador por uma fatia de tempo, quando este tempo se esgotar, o processo atual deverá ser substituído por um outro processo;

Ocorrência de Interrupção ou exceção: quando há a ocorrência de uma interrupção/exceção, o sistema operacional deve entrar em operação para tratar da interrupção/exceção, e para isso, o próprio sistema operacional iniciará um (ou mais) processo (s) próprio(s).

O terceiro cenário é a troca de modo usuário para modo kernel. Quando tal transição é requisitada pelo sistema operacional, uma troca de contexto não é necessária, mas dependendo da implementação isso é feito.

Os programas são um conjunto de instruções escritos em linguagem computacional. Exemplos de programas são: MS-Word, MS-Excel, AutoCAD, Adobe Photoshop, MediaPlayer, InternetExplorer, Need for Speed, World of Warcraft, entre outros. Quando um programa está em execução, pode ter um ou mais processos associados, os próprios sistemas operacionais possuem vários processos em execução durante o funcionamento do computador. Além de controlar a execução de cada processo, o sistema operacional deve manter a associação entre um processo e o programa que o originou. Quando um programa é iniciado, um processo chamado Pai ou Principal é criado, e todos os outros existentes associados ao mesmo programa são denominados Processos Filhos. Se o mesmo programa tiver mais de uma execução simultânea, por exemplo, duas telas do InternetExplorer representam dois programas em execução, cada programa será considerado independente do outro, com seus processos tratados de maneira independente.

3. Estados de um processo

Durante o funcionamento do computador, os vários processos executados passarão por diferentes estados: em espera, em execução, bloqueado. Esses estados definem a maneira como serão tratados pelo sistema operacional. O funcionamento específico de cada estado depende do sistema operacional utilizado, mas de modo geral os processos são divididos em três grupos.

Quanto um processo é criado, ele deve esperar que o sistema operacional conceda a ele um tempo de execução em um núcleo do processador, então logo após a criação o processo fica em Estado de Espera e fica armazenado na memória principal do computador. Quando o processo recebe do sistema operacional a autorização para utilizar um núcleo do processador ele passa para o Estado de Execução, e assim o processo executa suas instruções internas. E assim o processo fica alternando entre os estados de Espera e Execução, enquanto o programa que o originou não for finalizado. Se durante o estado de Execução o processo fizer uma solicitação de algum recurso do computador ao sistema operacional, por exemplo, gravar alguma informação no disco rígido, e o recurso não puder ser liberado imediatamente, por exemplo, já houver um outro processo utilizando o disco- rígido, o processo que ficar esperando a liberação do recurso passará para o Estado de Bloqueio. Neste estado, o processo não participará das trocas de contexto feitas pelo sistema operacional, ou seja, não voltará ao estado de Espera, até que o recurso solicitado seja liberado. Após a liberação do recurso, o processo passará do estado de Bloqueio para o estado de Espera.

4. Comunicação Entre Processos

A comunicação entre os processos é algo de extrema importância, pois sem ela, a execução dos programas não seria feita de maneira organizada. Veja a seguinte situação: quando um programa imprime um arquivo, o sistema operacional inicia um programa de gerenciamento da impressão. Esse programa deverá controlar a lista de arquivos a serem impressos, permitir que outros arquivos sejam incluídos na lista, e enviar um arquivo por vez à impressora. Nesse caso, pelo menos três processos serão necessários para organizar o gerenciamento das impressões, e se não houver comunicação entre esses processos, o gerenciador nunca saberá quando incluir um arquivo novo na lista de impressão ou quando retirar um arquivo da lista de impressão.

Para que essa comunicação exista, tanto os programas quanto o sistema operacional devem ser construídos de modo a permitir a efetivação da comunicação. Esta efetivação é garantida utilizando-se mecanismos de controle e estruturas de dados que possibilitem a identificação, organização e separação entre os processos e informações trocadas entre os processos. Os sistemas operacionais oferecem algumas funções e rotinas para fornecerem suporte aos programas, sendo que essas funções devem ser incluídas no programa durante o seu desenvolvimento. Alguns exemplos de mecanismos de comunicação entre processos são:

FIFO (First In First Out): Neste mecanismo, um processo abre um canal de comunicação com outro processo, sendo que o primeiro apenas escreve dados na FIFO, enquanto o segundo processo lê dados da FIFO, este mecanismo deve ser utilizado e gerenciado dentro dos programas, e não pelo sistema operacional.

PIPES unidirecionais: tem funcionamento semelhante ao FIFO, a diferença é que nesse caso o controle da comunicação é feito pelo sistema operacional.

FILA DE MENSAGENS: Uma fila de mensagens (message queue) permite criar uma área de troca de mensagens entre os processos, sendo que essa área será administrada pelo sistema operacional. A característica mais importante da Fila de Mensagens é a possibilidade de acesso a uma mensagem de maneira seletiva, pois existe um identificador especial para cada mensagem.

Memória Compartilhada: a memória compartilhada é semelhante à Fila de Mensagens, a diferença é que o controle deve ser feito dentro dos programas que utilizam este mecanismo.

Nenhum comentário:

Postar um comentário