Sistemas Operacionais: Conceitos e Funções

Classificado em Computação

Escrito em em português com um tamanho de 7,2 KB.

Sistemas Operacionais: Funções Básicas

Um sistema operacional executa duas funções básicas:

  • Facilidade de acesso aos recursos do sistema.
  • Compartilhamento de recursos de forma organizada e protegida.

Um computador é um conjunto de componentes interligados (hardware):

  • Unidade central de processamento (UCP).
  • Memória principal.
  • Dispositivos de entrada e saída.

Os sistemas monoprogramáveis se caracterizam por permitir que o processador, a memória e os periféricos permaneçam exclusivamente dedicados à execução de um único programa.

Nos multiprogramáveis, vários programas dividem esses mesmos recursos. Além disso, podemos classificar os sistemas multiprogramáveis como monousuário e multiusuário.

O conceito de sistemas multiprogramável apresenta a ideia do sistema sendo utilizado por vários usuários (multiusuário).

Interrupção e Exceção

Durante a execução de um programa, alguns eventos podem ocorrer durante seu processamento, obrigando a intervenção do sistema operacional.

Esse tipo de intervenção é chamado interrupção ou exceção e pode ser resultado da execução de instruções do próprio programa, gerado pelo sistema operacional ou por algum dispositivo de hardware.

Nestas situações, o fluxo de execução do programa é desviado para uma rotina especial de tratamento.

Uma interrupção é gerada pelo sistema operacional ou por algum dispositivo e, neste caso, independe do programa que está sendo executado.

Processos

Um conceito chave da teoria dos sistemas operacionais é o conceito de processo.

Um processo é basicamente um programa em execução, sendo constituído do código executável e dos dados referentes ao código.

Programa Concorrente

Um programa concorrente pode ser visto como se tivesse vários fluxos de execução. Para o programador realizar agora uma "execução imaginária", ele vai necessitar de vários dedos, um para cada fluxo de controle.

Paralelismo

Para construir um programa concorrente, antes de mais nada, é necessário ter a capacidade de especificar o paralelismo dentro do programa. Essa especificação pode ser feita de diversas maneiras. Uma delas utiliza os comandos create_process, exit e wait_process.

O comando create_process permite a criação de um segundo fluxo de execução, paralelo àquele que executou o comando.

Os comandos exit e wait_process são auxiliares ao create_process. Quando o comando exit é executado, o fluxo de controle que o executa é simplesmente terminado. Um comando imediatamente após o comando exit jamais será executado.

O comando wait_process permite que um fluxo de execução espere outro fluxo terminar.

Uma forma mais estruturada de especificar paralelismo em programas concorrentes é conseguida com o uso dos comandos Parbegin e Parend.

Enquanto o par begin-end delimita um conjunto de comandos que serão executados sequencialmente, o parbegin-parend delimita um conjunto de comandos que serão executados em paralelo. O comando que segue ao Parend somente será executado quando todos os fluxos de controle criados na execução do Parbegin-Parend tiverem terminado.

Diferença entre Thread e Processo

O que melhor distingue uma thread de um processo é o espaço de endereçamento. Todas as threads de um processo trabalham no mesmo espaço de endereçamento, que é a memória lógica do “processo hospedeiro”. Isto é, quando se tem um conjunto de threads dentro de um processo, todas as threads executam o código do processo e compartilham as suas variáveis. Por outro lado, quando se tem um conjunto de processos, cada processo trabalha num espaço de endereçamento próprio, com um conjunto separado de variáveis.

Threads

Um programa é uma sequência de instruções, composta por desvios, repetições e chamadas a procedimentos.

Em um ambiente monothread, um processo suporta apenas um programa no seu espaço de endereçamento.

Nesse ambiente, aplicações concorrentes são implementadas apenas com o uso de múltiplos processos independentes ou subprocessos.

  • Threads compartilham os recursos de um processo;
  • Threads de um mesmo processo não são independentes entre si.

Em sistemas multithread, normalmente cada processo inicia com apenas uma thread.

Esta thread tem a capacidade de criar novas threads.

Threads podem ser gerenciadas em três níveis:

  • Nível do usuário
  • Nível do kernel
  • Nível em modo híbrido

Sincronização

  • Para trabalhar com dados compartilhados e manter a sua integridade, utilizamos um conceito conhecido como sincronização.
  • Duas threads utilizam da mesma informação, mas cada uma espera a execução de outra thread ser concluída.

Semáforo

Foi introduzida pelo holandês Dijkstra em 1965. São mecanismos de sincronização (down e up (sleep e wakeup)).

  • Exclusão mútua
  • Sinalização

São variáveis inteiras compartilhadas a partir de uma inicialização, são acessadas somente através de duas operações (primitivas): P e V.

Um processo que executa uma primitiva V deve avisar (signal) outro processo caso o mesmo tenha sido bloqueado na primitiva P para que ele retome sua execução.

Semáforos podem ser usados para tratar o problema de n processos na seção crítica.

  • Condição

É um processo avisa outro processo da ocorrência de um evento.

  • Controle de recursos com n instâncias

É na implementação de procedimentos de aloca e libera uma instância do recurso.

  • Geral

É um programa concorrente poderá fazer de uso de k semáforos.

Cada semáforo Si terá um uso distinto.

A principal desvantagem da definição de semáforo apresentada é a necessidade de busy waiting.

Enquanto um processo está na seção crítica qualquer outro processo que tentar entrar na seção crítica ficará em loop esperando a liberação.

Este tipo de semáforo é também conhecido como spinlock pois fica “girando” a espera da liberação.

Vantagem do spinlock é de não necessitar troca de contexto.

  • Troca de contexto é exigida quando um processo espera bloqueado.
  • Troca de contexto pode consumir um tempo considerável.
  • Spinlocks são eficazes quando os tempos esperados de bloqueios são curtos.

Entradas relacionadas: