Trabalho prático 1 de SO

 

Processos - Gestão de processos

 

Unidades de computação - Processos e Threads


Devido à necessidade de dispor informações gerais e resumidas, as referências a sistemas operativos devem ser entendidas de uma forma abstracta e não a um sistema específico. Deve também ser entendido que os mecanismos internos relativos à gestão de processos não são explicados em termos tecnológicos, mas sim,generalistas.

Do ponto de vista de um programador um processo é um programa em execução. Um processo é composto por :

- O programa objecto a ser executado
- Os dados sobre os quais o programa vai actuar
- Os recursos requeridos pelo programa
- O estado da execução do processo


Fig. 1 - Representação esquemática do funcionamento de um processo


O processo é executado sobre um ambiente abstracto que gere os recursos (ficheiros, memória, etc). Um processo é uma entidade dinâmica que executa um conjunto de instruções que definem o seu comportamento (programa) sobre um conjunto de dados usando os recursos disponibilizados pelo sistema. Dois processos podem executar as mesmas linhas de código sobre diferentes conjuntos de dados e recursos (Fig. 1) mantendo o seu estado com informações relativas a recursos necessários e a que parte de código está a ser executado..

O sistema operativo cria um descritivo do processo por cada processo gerado. Um descritivo de processo pode, por exemplo, conter o ID do processo, os recursos alocados e o conteúdo dos registos do processador, caso não esteja a ser executado. Quando é necessário referenciar um processo, referencia-se o seu descritivo.

Basicamente, um processo é a actuação de um processador sobre um progama. É uma unidade de computação fundamental escalonável, a sua complexidade e comportamento é definida pelo sistema operativo. Nos sistemas operativos clássicos a unidade fundamental de computação é o processo mas nos sistemas modernos existem ainda mais duas unidades, threads e objectos.


Fig. 2 - Representação gráfica dos threads


Um thread é uma unidade fundamental de computação com informações internas mínimas e um mínimo de recursos alocados. Estão directamente relacionadas com os processos pois é a eles que vão buscar o código a executar e informações sobre alguns recursos e dados. Assim um processo pode ser executado por vários threads. Basicamente, um processo pode dividir tarefas por vários threads e cada thread pertence a um e um só processo. Nalguns sistemas a idéia de processo começa a esbater-se, optando-se por definir threads que partilham os mesmos dados, programa e recursos. A partir da figura 2, podemos observar que as informações internas são mínimas, portanto o escalonamento de threads é mais eficiente que dos processos pois é mais rápido preparar a máquina abstracta para a troca entre a execução de uma unidade de computação e outra.


Recursos

Um recurso é uma entidade que pode ser requerida por um processo. Todos os processos "vivos" competem por recursos e compete ao gestor de recursos identificar, preparar e alocar os recursos necessários a um processo respeitando todas as políticas de gestão do sistema operativo enquanto o gestor de processos actualiza os estados dos processos identificando e ordenando, por prioridades, os processos que concorrem pelos mesmos recursos. É importante entender que cada entidade no computador tem um certo "estado" durante a execução de um processo que pode, ou não, ser diferente de outro processo, logo é imperativo manter todas essas informações associadas ao processo e disponibiliza-las assim que o processo for seleccionado para execução.

 

Gestão de processos

Gestão de processos é um conceito que engloba todos os serviços que auxiliam o sistema operativo a fazer uma administração eficiente de um conjunto de processos, tem mecanismos e políticas dependentes dos SO. O processador é o componente que executa um programa assim que o código e os dados estejam disponíveis na memória, o processo requer diferentes recursos conforme o comportamento definido pelo programa. Um sistema operativo multiprogramado permite coexistirem ao mesmo tempo vários processos, enquanto apenas um usa o processador os outros efectuam operações E/S ou esperam por recursos. A esta capacidade do SO chama-se pseudoparalelismo (multiplexagem temporal do cpu).

O gestor de processos implementa um modelo que permite múltiplos processos partilharem recursos. Um gestor de processo deve permitir criar e eliminar processos, suspender e activar processos, sicronizar processos e garantir a comunicação entre processos.

Como cada processo requer dados e recursos diferentes é importantíssimo que o sistema operativo saiba quais as posições de memória onde estão os dados, em que linha do código vai a execução e quais os recursos necessários para a execução assim que o processo entrar no processador. Para isso foi criado o process block control que é constituído por :

- Estado do processo
- Contador do programa
- Registos do CPU
- Informações de escalonamento do CPU
- Informações da gestão da memória
- Contabilização da utilização de recursos
- Estado dos recursos de I/O


Ao ambiente software/hardware chama-se contexto. O contexto do processo é criado assim que começa um processo e contém todas as informações e estados de hardware em cada execução, o que permite saltar entre processos bastando para isso identificar process block control do processo e preparar o hardware com as informações da última execução, assim é como se não tivesse sido suspensa a execução. A esse mecanismo chama-se mudança de contexto e é realizado pelo context switcher. A multiplexagem pode ser voluntária ou involutária, voluntária se o processo abandona o cpu, involuntária se esgotar o tempo ou o SO é premptivo, ou seja o escalonamento está ao seu encargo.


Estados de processos

Os estados de um processo são facilmente reconhecidos e percebidos através do diagrama de estados (Fig. 3).

Figura 3 - Diagrama de estados de um processo


0 - É criado um novo processo e automaticamente definido como pronto para execução.
1 - O gestor de processos escolhe por preempção o processo a ser executado.
2 - Se não existem todos os recursos disponíveis, o processo é marcado como bloqueado.
3 - O gestor de processos partilha o processador com outro processo. Marca o primeiro como pronto, desocupa o processador e escolhe outro processo para execução.
4 - Quando os recursos estão finalmente disponíveis o processo é alinhado na fila de execução.
5 - Termina o processo.

A movimentação entre estados depende das políticas de escalonamento explicadas noutro capítulo.


Autores :: Rui Rodrigues & Filipe Luís @ 2003