Você está na página 1de 8

Sistemas Operacionais

É um conjunto de rotinas executado pelo processador, com função de controlar o


funcionamento de um computador, gerenciando a utilização e o compartilhamento dos seus
recursos. Serve de interface entre usuários e recursos disponíveis no sistema
computacional.

Facilidade de acesso aos recursos do sistema.

Máquina virtual: conceito de ambiente simulado, criado pelo sistema operacional.

Compartilhamento de recursos de forma organizada e protegida.

Sistemas Monoprogramáveis

execução de um único programa

permitir que todos os recursos do sistema fiquem exclusivamente dedicados a uma única
tarefa.

são de simples implementação

desperdício na utilização do processador

Sistemas Multiprogramáveis

os recursos computacionais são compartilhados entre os diversos usuários e aplicações.

enquanto um programa espera por uma operação de leitura ou gravação em disco, outros
programas podem estar sendo processados neste mesmo intervalo de tempo.

possibilitam na média a redução total do tempo de execução das aplicações.

a UCP permanece menos tempo ociosa e a memória principal é utilizada de forma mais
eficiente

Sistemas batch

O processamento batch tem a característica de não exigir a interação do usuário com a


aplicação. Todas as entradas e saídas de dados da aplicação são implementadas por algum
tipo de memória secundária.

Sistemas de tempo compartilhado

permitem que diversos programas sejam executados a partir da divisão do tempo do


processador em pequenos intervalos, denominados fatia de tempo (time-slice).
Sistemas de tempo real

nos sistemas de tempo real os tempos de processamento devem estar dentro de limites
rígidos, que devem ser obedecidos, caso contrário poderão ocorrer problemas irreparáveis.
Um programa utiliza o processador o tempo que for necessário ou até que apareça outro
mais prioritário. A importância ou prioridade de execução de um programa é definida pela
própria aplicação e não pelo sistema operacional.

Sistemas com Múltiplos Processadores

permitir que vários programas sejam executados ao mesmo tempo ou que um mesmo
programa seja subdividido em partes para serem executadas simultaneamente em mais de
um processador.

Concorrência

capacidade de um sistema operacional gerenciar múltiplas tarefas ou processos


simultaneamente, permitindo que eles sejam executados de forma concorrente.

Interrupções e Exceções

desvio forçado no seu fluxo de execução

É em função desse mecanismo que o sistema operacional sincroniza a execução de todas


as suas rotinas e dos programas dos usuários, além de controlar dispositivos

Uma interrupção é sempre gerada por algum evento externo ao programa

A diferença fundamental entre exceção e interrupção é que a primeira é gerada por um


evento síncrono, enquanto a segunda é gerada por eventos assíncronos

Operações de Entrada/Saída

E/S controlada por programa, mantém o processador ocupado até o término da operação
de E/S (busy wait).

em determinados intervalos de tempo o sistema operacional deveria testar cada dispositivo


para saber do término da operação de E/S (polling). (introduziu o paralelismo).

E/S controlada por interrupção, o próprio controlador interrompe o processador para avisar
do término da operação.

Buffering

A técnica de buffering consiste na utilização de uma área na memória principal, denominada


buffer, para a transferência de dados entre os dispositivos de E/S e a memória.
Kernel ou Núcleo do Sistema

conjunto de rotinas que oferece serviços aos usuários e às suas aplicações.

funções:
tratamento de interrupções e exceções; criação e eliminação de processos e threads;
sincronização e comunicação entre processos e threads; escalonamento e controle dos
processos e threads; gerência de memória; gerência do sistema de arquivos; gerência de
dispositivos de E/S

Modo de Acesso

modo usuário, uma aplicação só pode executar instruções conhecidas como não
privilegiadas, tendo acesso a um número reduzido de instruções

modo kernel a aplicação pode ter acesso ao conjunto total de instruções do processador

As instruções não privilegiadas são as que não oferecem risco ao sistema

Todo o controle de execução de rotinas do sistema operacional é realizado pelo mecanismo


conhecido como system call.

Arquitetura Microkernel

núcleo do sistema operacional o menor e mais simples possível

os serviços do sistema são disponibilizados através de processos, onde cada um é


responsável por oferecer um conjunto específico de funções, como gerência de arquivos,
gerência de processos, gerência de memória e escalonamento

a arquitetura microkernel permite isolar as funções do sistema operacional por diversos


processos servidores pequenos e dedicados a serviços específicos, tornando o núcleo
menor, mais fácil de depurar e, consequentemente, aumentando sua confiabilidade.

Processos

Um processo é um programa em execução, incluindo seu código, dados e recursos

processo pode ser definido como sendo o conjunto necessário de informações para que o
sistema operacional implemente a concorrência de programas.

essencial para que os sistemas multiprogramáveis implementem a concorrência de diversos


programas e atendam a múltiplos usuários simultaneamente.

Um processo também pode ser definido como o ambiente onde um programa é executado.

Um processo é uma unidade independente de execução em um sistema operacional.


Bloco de Controle do Processo

O processo é implementado pelo sistema operacional através de uma estrutura de dados


chamada bloco de controle do processo (Process Control Block — PCB). A partir do PCB, o
sistema operacional mantém todas as informações sobre o contexto de hardware, contexto
de software e espaço de endereçamento de cada processo

Estados do Processo

Um processo é dito no estado de execução quando está sendo processado pela UCP

Um processo está no estado de pronto quando aguarda apenas para ser executado.

Um processo no estado de espera aguarda por algum evento externo ou por algum recurso
para prosseguir seu processamento.

Um processo é dito no estado de criação quando o sistema operacional já criou um novo


PCB, porém ainda não pode colocá-lo na lista de processos do estado de pronto.

Um processo no estado de terminado não poderá ter mais nenhum programa executado no
seu contexto, porém o sistema operacional ainda mantém suas informações de controle
presentes em memória.

Processos CPU-bound e I/O-bound

Um processo é definido como CPU-bound (ligado à UCP) quando passa a maior parte do
tempo no estado de execução, utilizando o processador, ou pronto

Um processo é classificado como I/O-bound (ligado à E/S) quando passa a maior parte do
tempo no estado de espera, pois realiza um elevado número de operações de E/S

Processos Foreground e Background

Um processo foreground é aquele que permite a comunicação direta do usuário com o


processo durante o seu processamento

Um processo background é aquele onde não existe a comunicação com o usuário durante o
seu processamento

Processos Independentes, Subprocessos

O uso de processos independentes é a maneira mais simples de implementar a


concorrência em sistemas multiprogramáveis.

Subprocessos são processos criados dentro de uma estrutura hierárquica


Um processo filho é criado por um processo pai. O processo pai pode iniciar, monitorar e se
comunicar com o processo filho. Os processos filhos geralmente compartilham alguns
recursos com o processo pai, como o código.

Threads

é uma unidade menor de um processo que pode ser executada independentemente. As


threads compartilham recursos comuns, como memória e arquivos, dentro do mesmo
processo.

a comunicação entre threads não envolve mecanismos lentos de intercomunicação entre


processos, aumentando, consequentemente, o desempenho da aplicação.

um thread pode ser definido como uma sub-rotina de um programa que pode ser executada
de forma assíncrona

Threads são implementados internamente por meio de uma estrutura de dados denominada
bloco de controle do thread (Thread Control Block – TCB). O TCB armazena, além do
contexto de hardware, mais algumas informações relacionadas exclusivamente ao thread,
como prioridade, estado de execução e bits de estado.

Programas concorrentes com múltiplos threads são mais rápidos do que implementados
com múltiplos processos, pois operações de criação, troca de contexto e eliminação dos
threads geram menor overhead

Escalonamento

O escalonamento de CPU é o processo pelo qual o sistema operacional decide qual


processo ou thread deve ser executado pela CPU em um determinado momento.

manter o processador ocupado a maior parte do tempo, balancear o uso da UCP entre
processos, privilegiar a execução de aplicações críticas, maximizar o throughput do sistema
e oferecer tempos de resposta razoáveis para usuários interativos.

dispatcher, responsável pela troca de contexto dos processos após o escalonador


determinar qual processo deve fazer uso do processador.

principais critérios que devem ser considerados em uma política de escalonamento


Utilização do processador
Throughput
Tempo de Processador / Tempo de UCP
Tempo de Espera
Tempo de Turnaround
Tempo de Resposta
Escalonamentos Não Preemptivos e Preemptivos

O escalonamento não preemptivo

Quando um processo está em execução, nenhum evento externo pode ocasionar a perda
do uso do processador. O processo somente sai do estado de execução caso termine seu
processamento ou execute instruções do próprio código que ocasionam uma mudança para
o estado de espera.

No escalonamento preemptivo, o sistema operacional pode interromper um processo em


execução e passá-lo para o estado de pronto, com o objetivo de alocar outro processo na
UCP.

Escalonamento First-In-First-Out (FIFO)

o processo que chegar primeiro ao estado de pronto é o selecionado para execução.

O escalonamento FIFO é do tipo não preemptivo

Escalonamento Shortest-Job-First (SJF)

o algoritmo de escalonamento seleciona o processo que tiver o menor tempo de


processador ainda por executar

o escalonamento SJF é um escalonamento não preemptivo. Sua vantagem sobre o


escalonamento FIFO está na redução do tempo médio de turnaround dos processos

Escalonamento Cooperativo

a liberação do processador ser uma tarefa realizada exclusivamente pelo processo em


execução

um processo em execução pode voluntariamente liberar o processador, retornando à fila de


pronto e possibilitando que um novo processo seja escalonado, permitindo assim uma
melhor distribuição no uso do processador.

escalonamento circular (round robin scheduling)

Esse algoritmo é bastante semelhante ao FIFO, porém quando um processo passa para o
estado de execução existe um tempo-limite para o uso contínuo do processador
denominado fatia de tempo (time-slice) ou quantum.

A principal vantagem do escalonamento circular é não permitir que um processo monopolize


a UCP, sendo o tempo máximo alocado continuamente igual à fatia de tempo definido no
sistema
Escalonamento por Prioridades

O escalonamento por prioridades é um escalonamento do tipo preemptivo realizado com


base em um valor associado a cada processo denominado prioridade de execução.

O processo com maior prioridade no estado de pronto é sempre o escolhido para execução,
e processos com valores iguais são escalonados seguindo o critério de FIFO.

Caso haja processos na fila de pronto com maior prioridade do que o processo em
execução, o sistema operacional realiza a preempção.

Você também pode gostar