Conceitos básicos de Sistemas Operacionais
PROCESSOS
Como trabalhar com vários programas em um mesmo tempo de execução ???
Ao iniciar o computador você pode acessar vários softwares ao mesmo tempo, como exemplo, um editor de texto, uma planilha eletrônica, ou qualquer outro.
E ainda, dentro destes softwares, é possível executar várias funções praticamente ao mesmo tempo em um único processador!!!
Então, como isso pode ser possível ???
Para isso, o computador pode contar com o gerenciamento de um sistema operacional
Na realidade, se o computador possui apenas um processador, ele executará somente uma instrução em um determinado instante
O que acontece, é que uma execução é muito rápida, o que significa que em menos de 1 segundo diversas instruções podem ser executadas.
Com essa velocidade é possível ter a execução de vários programas ao mesmo tempo.
Nesse contexto, um sistema (software) possui vários tipos de tarefas que são chamadas de PROCESSOS.
Um processo pode ser entendido como um programa em execução, e para sua execução serão necessários alguns recursos, como: CPU, memória, arquivos, entre outros. Dessa forma,
Um processo é representado no sistema operacional por um bloco de controle de processo (PCB — Process Control Block).
PCB
Ponteiros |
Estado do Processo
|
Nome do Processo
|
Prioridade do Processo
|
Registradores
|
Limites de memória
|
Lista de arquivos abertos
|
.
.
.
|
O sistema operacional reserva uma área da memória onde coloca informações sobre cada processo a ser executado.
As alocações das informações em um PCB (bloco de controle de processos) estão divididas em duas classes:
No contexto de hardware contém basicamente uma cópia dos registradores.
Quando um processo está em execução, seu contexto de hardware está armazenado nos registradores do processador; quando o processo perde o controle do processador, os dados dos registradores são salvos no contexto de hardware.
Dessa forma, o processo que está deixando o processador será salvo para liberar a entrada de um novo processo.
O contexto de software contém informações como a identificação do processo:
- QUOTAS (número de arquivos que pode utilizar, tamanho máximo de memória, número máximo de operações de E/S pendentes etc.)
- PRIVILÉGIOS
Estados do processo
O estado do processo indica o que está acontecendo com aquele processo num determinado instante de tempo.
Um processo pode estar em um dos seguintes estados:
- novo: o processo está sendo criado;
- pronto: o processo está esperando a liberação do processador para que possa executar;
- em execução: as instruções estão sendo executadas;
- em espera: o processo está esperando pela ocorrência de algum evento (por exemplo, o término de uma operação de E/S);
- terminado: o processo terminou sua execução.
Mudanças de estado
À medida que um processo vai sendo executado, ele passa pelos diversos estados.
As mudanças de estado acontecem nas seguintes situações:
- Novo → pronto: logo após o programa ser criado.
- Pronto → execução: o programa é selecionado para ganhar o controle do processador, e recebe uma fatia de tempo do processador.
- Execução → pronto: terminou a fatia de tempo do processo, mas ele ainda não encerrou.
- Execução → espera: o processo que estava em execução solicitou uma operação de E/S.
- Espera → pronto: o processo que estava esperando por um evento teve esse evento concluído.
- Execução → terminado: o processo encerrou.
Quando um processo está em execução, parte dos seus dados está armazenada nos registradores da UCP.
Entre esses registradores está o PC (Program Counter), que é o registrador que aponta para a próxima instrução a ser executada.
À medida que cada instrução é executada, o IP vai sendo incrementado, de maneira a apontar para a instrução seguinte.
Para conseguir executar diversos processos ao mesmo tempo, o processador tem seu tempo compartilhado (Time Sharing).
Isso quer dizer que cada processo tem direito a utilizar o processador durante uma determinada fatia de tempo. Então, quando acaba a fatia de tempo de um processo, ele volta ao estado de pronto e aguarda a sua vez de ganhar uma nova fatia.
Além disso, quando um processo necessita de algum outro recurso além da CPU, por exemplo, precisa aguardar uma operação de E/S, ele libera o processador para que outro processo o utilize.
Nesse caso, ele sai da execução para o estado de espera.
Quando ocorre a troca de processos na utilização do processador, dizemos que ocorreu uma “mudança de contexto”.
Na mudança de contexto os registradores da UCP são salvos no PCB do processo que está saindo da execução, e são carregados os valores salvos no PCB do processo que irá entrar em execução.
Vamos ver passo a passo:
1. Um novo processo é criado (o usuário solicitou a execução de um programa). Durante a sua criação ele está no estado de novo, e nessa hora o sistema operacional cria o seu PCB, com os registradores inicializados.
2. Após a criação, o processo passa para o estado de pronto, e entra na fila para ganhar uma fatia de tempo do processador.
3. Quando a CPU está desocupada, esse processo passa do estado de pronto para execução. Nesse momento os valores dos registradores armazenados no PCB são copiados para os registradores da UCP. Como um desses registradores é o PC (Program Counter), a próxima instrução que o processador irá executar será a primeira instrução desse processo.
4. A cada instrução executada o PC vai sendo incrementado.
5. Caso se esgote o tempo do processador, ou o processo necessite de algum recurso, o conteúdo dos registradores da UCP é copiado para o PCB, e então o sistema operacional carrega o próximo processo da fila de pronto, voltando ao passo 3.
Nenhum comentário:
Postar um comentário