Guia de Sistemas Operacionais: Processos e Memória

Computação478,62 KB

Tipos de Sistemas Operacionais

Monotarefa
O sistema operacional tem capacidade de executar apenas um programa ou tarefa de cada vez.
Exemplo: CP/M, MS-DOS.

Multitarefa
Sistemas operacionais que têm a capacidade de executar mais de uma tarefa ou programa simultaneamente.
Exemplo: Unix, Windows, Linux, OS/400.

Multitarefa Cooperativa e Preemptiva

-- Cooperativa
O S.O. define uma fatia de tempo (time-slice) para cada programa. Ex.: Windows até 3.1.

-- Preemptiva
O S.O. define prioridades conforme a necessidade momentânea de cada programa.

O que é um Processo?

Um processo é um programa em execução; cada processo tem sua própria CPU virtual e passa por diversos tipos de estados:

  • Novo: o processo está sendo criado;
  • Em execução: as instruções estão sendo executadas;
  • Em espera: o processo está esperando a ocorrência de algum evento (ex.: I/O);
  • Pronto: temporariamente parado para dar lugar a outro processo;
  • Encerrado: o processo terminou sua execução.

Estados de um Processo

Os estados principais são: Novo, Em execução, Em espera, Pronto e Encerrado.

UID (User IDentity): Número de identificação para um determinado usuário.
PID (Process IDentity): Número de identificação para um determinado processo (programa em execução).

Sistemas Batch, Tempo Compartilhado e Tempo Real

Sistemas Batch

Os sistemas batch (lote) caracterizam-se por terem seus programas armazenados em disco ou fita, onde esperam para ser executados sequencialmente. Os programas executados em batch não precisam de interação com o usuário; eles leem e gravam seus dados de discos ou fitas.

Sistemas de Tempo Compartilhado

Os sistemas de tempo compartilhado (time-sharing) permitem a interação dos usuários com o sistema, basicamente através de terminais de vídeo e teclado (interação on-line).

Sistemas de Tempo Real (Real Time)

São semelhantes em implementação aos sistemas de tempo compartilhado. A maior diferença é o tempo de resposta exigido na execução das tarefas. Existe a ideia de time-slice (fatia de tempo).

Estrutura de um Sistema Operacional

  • Gerência de processos
  • Gerência de memória: responsável pelo controle e alocação de memória aos processos ativos.
  • Sistema de arquivo: responsável pelo acesso e integridade dos dados residentes em memória secundária (ex.: disco, fita, etc.).
  • Controle de I/O (Entrada/Saída): responsável pelo controle e execução de operações de E/S, bem como da otimização do uso dos periféricos.

Imagem

Conceitos de Threads

Uma Thread é uma unidade básica de utilização de CPU; compreende um ID de thread, um contador de programa, um conjunto de registradores e uma pilha.

Um processo multithread contém vários fluxos de controle distintos no mesmo espaço de endereçamento.

Exemplo: Um processador de textos pode ter uma thread para ler as entradas de dados do teclado e outra thread para efetuar a correção ortográfica do documento.

Observações sobre Threads

  • As threads possuem estados (Novo, Executável, Bloqueado e Terminado).
  • O sistema supervisor gerencia a tabela de threads.

Benefícios das Threads

  • Capacidade de resposta;
  • Compartilhamento de recursos;
  • Economia;
  • Utilização de arquiteturas multiprocessador.

Conceitos de Escalonamento de CPU

Escalonador de CPU: Sempre que a CPU estiver ociosa, o S.O. deverá escolher um processo para execução da fila de processos prontos.

Timer: Necessário para o escalonamento preemptivo. Controla o tempo que o processo pode ficar em execução (n-1).

Dispatcher (Executor): É um módulo que dá controle da CPU ao processo selecionado. O dispatcher é chamado a cada troca de processo.

O que é e para que serve um PCB?

O PCB (Process Control Block) é uma estrutura de dados que contém informações de um futuro processo, sendo também responsável por definir a utilização de recursos desse processo. Todo processo deve ter um PCB.

Finalidade dos Registradores PC e SP

  • PC (Program Counter): Indica o próximo endereço de memória a ser executado.
  • SP (Stack Pointer): Topo da pilha de dados. É onde é guardado o valor das variáveis desse programa.

O que é uma Thread?

É uma unidade que permite a execução simultânea de instruções de um processo. A criação de uma thread é mais rápida que a de outros processos, pois ela utiliza a estrutura do seu processo pai.

Necessidade do Escalonamento

O escalonamento de um processador é necessário? Por quê?
Sim, ele otimiza o processador de modo a gerenciar o recurso para que permaneça o maior tempo possível em execução.

Algoritmo SJF (Shortest Job First)

Em um algoritmo de SJF (Job mais curto), se o tempo de dois processos for igual, é dada maior prioridade ao que chegou primeiro.

Algoritmos de Escalonamento

Alg. Escalonamento Não Preemptivo: O algoritmo escolhe o processo para executar e o deixa rodar até que seja bloqueado (para I/O) ou voluntariamente libere a CPU.

Alg. Escalonamento Preemptivo: O algoritmo escolhe um processo e o deixa em execução por um tempo máximo fixado.

Gerenciamento de Memória e Fragmentação

O que é fragmentação interna?
É o espaço que sobra na partição após a carga do processo. Ocorre na alocação particionada estática.

O que é fragmentação externa?
Criada pela alocação particionada dinâmica. Após o término de alguns programas, podem existir espaços que não são sequenciais.

Estratégias de Alocação de Memória

  • Best-Fit: Deixa o menor espaço possível sobrando na partição.
  • Worst-Fit: O contrário da Best-Fit (escolhe o maior espaço).
  • First-Fit: O primeiro espaço que pode comportar o processo é utilizado.

Critérios para Comparar Algoritmos

  • Utilização de CPU: A CPU deve ficar o mais ocupada possível.
  • Throughput: Quantidade de processos executados por unidade de tempo.
  • Tempo de retorno: Intervalo entre a submissão e a conclusão.
  • Tempo de espera: Soma dos períodos na fila de processos prontos.
  • Tempo de resposta: Tempo para começar a responder ao usuário.

Imagem

Imagem

Escalonamento Round-Robin (RR)

Projetado para sistemas de tempo compartilhado. Cada processo recebe uma pequena unidade de tempo de CPU (quantum), usualmente 10-100 milissegundos. Após esse tempo, o processo é preemptado e volta ao fim da fila FIFO de processos prontos.

Imagem

Alocação com Múltiplas Filas

  • A fila de processos prontos é particionada em filas separadas.
  • Cada fila tem seu próprio algoritmo de escalonamento.
  • O escalonamento deve ser realizado entre as filas.

Imagem

Imagem

Perguntas Frequentes sobre Memória

Quais tipos de memórias existem?
Registradores, memória cache, memória principal e secundária.

Funções básicas do gerenciamento de memória:
Responsável por alocar processos conforme necessário e maximizar o compartilhamento da CPU e outros recursos.

Alocação contígua simples:
Utilizada em sistemas monotarefa. O problema é que só roda um processo por vez, resultando em subutilização da memória.

Alocação particionada estática realocável:
Proporcionada pela evolução dos compiladores, Linkers e Loaders. Um programa passa a ser executado em qualquer partição disponível.

Linker e Loader

  • Linker: Liga o código objeto gerado pelo compilador com a biblioteca de execução da linguagem.
  • Loader: Responsável por pegar o programa no disco e colocá-lo na memória.

Vantagem da memória estática realocável: O programa pode ser executado em qualquer uma das partições disponíveis.

Modelos de Alocação e Swapping

Alocação Contígua Simples: Memória dividida em duas partições: uma para o S.O. e outra para o usuário. Desvantagens: memória limitada e aproveitamento ineficiente.

Alocação Particionada Estática Absoluta: Memória dividida em partições de tamanho fixo na inicialização.

Alocação Particionada Estática Dinâmica: Reduz a fragmentação interna, pois cada programa utiliza o espaço que necessita, criando partições de tamanho variável.

Fragmentação e Soluções

Fragmentação Interna: Desperdício quando o programa é menor que a partição destinada.
Fragmentação Externa: Espaço total existe, mas não é contíguo. Solução: Compactação (deslocar blocos), possível apenas se a relocação for dinâmica.

Swapping: Um processo pode ser transferido temporariamente da memória principal para a secundária (backing store) e depois retornar.

Baixar

PDF Word HTML