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