Scroll Top

Hardware High Tech Tecnologia Tutoriais Windows

Você sabe o que é um Sistema Operacional? – Parte II

Curso de Manutenção de Celulares

É com muito prazer que damos início a segunda parte sobre o assunto de arquitetura de computadores com foco em Sistemas operacionais. Lembrando novamente a todos que este assunto é muito mais técnico e abrangente, onde descrevemos sobre o que são sistemas operacionais "por dentro", em uma análise mais profunda através de suas diferenças, tipos e características. Caso queria acompanhar a primeira parte, pode ver clicando aqui.

Sistemas Multiprogramáveis

Um Sistema Operacional pode ser visto como um conjunto de rotinas que executam concorrentemente de forma ordenada. A possibilidade de um processador executar instruções em paralelo com operações de entrada e saída permite que diversas tarefas sejam executadas concorrentemente. É este conceito de concorrência o princípio fundamental para o projeto e implementação de sistemas multiprogramáveis.
Os sistemas multiprogramáveis surgiram a partir das limitações dos sistemas monoprogramáveis onde os recursos computacionais como processador, memória e dispositivos de E/S (Entrada/Saída) eram utilizados de maneira muito pouco eficiente, limitando seu desempenho, com muitos destes recursos permanecendo ociosos por longos períodos de tempo.

Nos sistemas monoprogramáveis somente um programa pode ser executado de cada vez, permanecendo o processador dedicado exclusivamente a uma tarefa apenas, ficando ocioso enquanto uma operação de leitura em disco é realizada. O tempo de espera é relativamente longo, já que as operações de E/S são muito lentas se comparadas à velocidade de operação do processador.

Outro aspecto a ser considerado é a sub-utilização da memória principal, onde um programa nem sempre ocupa todo o espaço disponível, deixando todo o restante inutilizado. Nos sistemas multiprogramáveis vários programas podem ser alocados na memória, concorrendo pelo uso do processador. Dessa forma, quando um programa solicita uma operação de E/S, outros programas poderão utilizar o processador, deixando a CPU menos ociosa e tornando o uso da memória muito mais eficiente, pois existem vários residentes e se revezando ao mesmo tempo na utilização do processador.

A utilização concorrente da CPU deve ser feita de maneira que, quando um programa perde o uso do processador e depois retorna para continuar sua execução, seu estado deve ser idêntico ao do momento em que foi interrompido. O programa deverá continuar sua execução exatamente na instrução seguinte àquela onde havia parado, deixando transparente ao usuário mostrando que nada aconteceu ou nada foi alterado. Em sistemas de tempo compartilhado existe a impressão de que o computador está  inteiramente dedicado ao usuário, ficando esse mecanismo totalmente transparente aos usuários.

Quanto ao uso dos periféricos, é comum nos sistemas monoprogramáveis é comum termos, por exemplo, impressoras paradas por um grande período de tempo e discos com acesso restrito a um único usuário. Esses problemas são minimizados nos sistemas  multiprogramáveis, onde é possível compartilhar os dispositivos de E/S, como impressoras, discos, unidades CD/DVD/BD etc, entre diversos usuários e aplicativos.

  • Interrupção e Exceção

Durante a execução de um programa, alguns eventos inesperados podem ocorrer, ocasionando um desvio forçado no seu fluxo normal de execução. Esses eventos são conhecidos como interrupção ou exceção, e podem ser resultado de sinalizações de algum dispositivo de hardware externo ao ambiente memória/processador. A diferença entre interrupção e exceção é dada pelo tipo de evento ocorrido, embora alguns autores e fabricantes não façam tal distinção.

A interrupção é o mecanismo que permitiu a implementação da concorrência nos computadores, sendo o fundamento básico dos sistemas multiprogramáveis/multitarefa. Uma interrupção é sempre gerada por um evento externo ao programa e, sendo assim,  independe da instrução que está sendo executada. Um exemplo de interrupção é quando um dispositivo avisa ao processador que alguma operação de E/S está completa. Neste caso, o processador deve interromper o programa para tratar o término da operação.

Ao término de cada instrução a Unidade de Controle (situada dentro do processador) verifica a ocorrência de algum tipo de interrupção. Desta forma, o programa em execução é interrompido e seu controle é desviado para uma rotina do sistema responsável por tratar o evento ocorrido, denominada rotina de tratamento de interrupção. Para que o programa interrompido possa retornar posteriormente à sua execução é necessário que, no momento da interrupção, um certo conJunto de informações sobre sua execução seJa preservado. Essas informações consistem basicamente no conteúdo dos registradores internos da CPU, que deverão ser restaurados para a continuação do programa.

Para cada tipo de interrupção existe uma rotina de tratamento associada, para onde o fluxo do programa é desviado. A identificação do tipo de evento ocorrido é fundamental para determinar o endereço da rotina adequada ao tratamento da interrupção.

As interrupções podem ser geradas:

  • Pelo programa do usuário (entrada de dados pelo console ou teclado)
  • Pelo hardware (operações de E/S)
  • Pelo sistema operacional (ao término da fatia de tempo do processador destinada ao respectivo programa)

As interrupções sempre são tratadas pelo Sistema Operacional. A exceção é um evento semelhante à interrupção, pois também de fato interrompe um programa. A principal diferença é que a exceção é o resultado da execução de uma instrução dentro do próprio programa, como a divisão por zero ou a ocorrência de um overflow (estouro de capacidade de um campo) numa operação aritmética.

Na maioria das vezes, a exceção provoca um erro fatal no sistema (Bluescreen of dead, regularmente nos antigos Windows98), causando o término anormal do programa e necessitando de um novo reinício do sistema operacional. Isto se deve ao fato de que a exceção é melhor tratada dentro do próprio programa, com instruções escritas pelo programador.

  • Buffer

A técnica de buffering consiste numa utilização de uma área em memória principal, denominada buffer, criada e mantida pelo Sistema Operacional, com a finalidade de auxiliar a transferência de dados entre dispositivos de E/S e a memória. O buffer permite minimizar a disparidade de velocidade entre o processador e os dispositivos de E/S, e tem como objetivo principal manter tanto os dispositivos de E/S como o processador ocupados a maior parte do tempo.
A unidade de transferência do mecanismo de buffering é o registro. O buffer deve permitir o armazenamento de vários registros, de forma que o processador tenha à sua disposição dados suficientes para processar sem ter que interromper o programa a cada leitura/gravação no dispositivo de E/S. Enquanto o processador está ocupado processando, os dispositivos de E/S estão efetuando operações para outros processos.

  • Spool

A técnica de spooling foi criada inicialmente para auxiliar a submissão de processos ao sistema, sendo os processos gravados em fita para posterior leitura e execução. Com o aparecimento dos terminais para acesso ao sistema, esta técnica teve sua função adaptada para armazenar o resultado da impressão dos programas em execução.

Isto é conseguido através da criação e manutenção, pelo Sistema Operacional de uma grande área em disco, com a finalidade de simular uma impressora. Desta forma, todos os usuários e seus programas imprimem, na verdade, para este arquivo em disco, liberando a associação dos dispositivos de impressão diretamente aos programas que estão executando.

O usuário consegue visualizar o resultado de seus programas na tela dos terminais, gerando assim mais eficiência e economia de papel e fita de impressão. A proporção que vão sendo gerados no SPOOL, os relatórios vão sendo liberados para impressão pelo usuário do sistema, de forma ordenada e sequencial. Para cada usuário, é como se ele tivesse uma impressora associada para si.

Em sistemas baseados em Windows NT, para visualizar arquivos temporários de impressões no SPOOL basta acessar a pasta:
[notification type="alert"] C:\WINDOWS\system32\spool\PRINTERS [/notification]

  • Reentrância

É comum, em sistemas multiprogramáveis, vários usuários utilizarem os mesmos aplicativos simultaneamente, como editores de texto, compiladores e outros utilitários. Nesta situação, se cada usuário que utilizasse um destes aplicativos trouxesse o código executável para a memória, haveria então diversas cópias de um mesmo programa ocupando espaço na memória, o que causaria um grande desperdício de espaço.  Reentrância é a capacidade de um código executável (código reentrante) ser compartilhado por vários usuários, exigindo apenas uma cópia do programa em memória. A reentrância permite que cada usuário esteja executando um trecho diferente do código reentrante, manipulando dados próprios, exclusivos de cada usuário.

Normalmente códigos reentrantes são utilizados em utilitários do sistema, como editores, compiladores e linkers, promovendo um uso mais eficiente da memória e um desempenho maior do sistema. Alguns sistemas operacionais permitem a possibilidade de se implementar o conceito de reentrância em aplicações desenvolvidas pelo próprio usuário, mas não é algo muito comum.

  • Segurança e Proteção do Sistema

A eficiência proporcionada por um ambiente multiprogramável implica em maior complexidade do sistema operacional, já que alguns problemas de proteção surgem como decorrência deste tipo de implementação.
Considerando-se que diversos usuários estão compartilhando os mesmos recursos, como memória, processador e dispositivos de E/S, faz-se então necessário existir mecanismos de proteção para garantir a confiabilidade e a integridade dos dados e programas dos usuários, além do próprio sistema operacional.
Como vários programas ocupam a memória principal simultaneamente, cada usuário possui uma área reservada onde seus programas e dados são armazenados durante o processamento. O sistema operacional deve possuir mecanismos de proteção a essas áreas, de forma a preservar as informações nela contidas. Caso um programa tente acessar uma posição de memória fora de sua área, um erro indicando a violação de acesso deve ocorrer, sendo responsabilidade do sistema operacional o controle eficiente do compartilhamento dos recursos e a sincronização da comunicação, evitando problemas de consistência.
Semelhante ao compartilhamento da memória, um disco também armazena arquivos de diferentes usuários. Novamente o sistema operacional deve garantir a integridade e confiabilidade dos dados de cada usuário.

Todo o controle da segurança do sistema é implementado pelo sistema operacional, a partir de mecanismos como grupos de usuários, perfis de usuários e direitos de acesso. A proteção começa geralmente no procedimento de login, quando o usuário faz a conexão inicial ao sistema, através de nome do usuário e senha. A partir daí, toda uma estrutura de controle é iniciada, em função da identificação do usuário, no sentido de proteger as áreas alocadas em memória, em disco, e até mesmo o uso do processador.

A proteção e segurança do sistema pode ser implementada também a nível do programa do usuário, com a inserção de rotinas específicas dentro do programa para controlar o acesso de usuários ao aplicativo, além de controlar internamente quais telas e funções tal usuário pode ou não acessar.

  • Operações de Entrada e Saída

Nos primeiros sistemas computacionais, a comunicação entre o processador e os periféricos era direta, sendo o processador responsável por efetuar as operações de leitura/gravação nos dispositivos. O surgimento do controlador de E/S permitiu ao processador agir de maneira independente dos dispositivos de E/S. Com esse novo elemento, o processador não mais se comunicava diretamente com os periféricos, mas sim via controlador. Passou a existir então três maneiras básicas de se implementar operações de E/S:

  • Por programa: O processador sincronizava-se com o periférico e iniciava a transferência de dados, ficando permanentemente testando o estado do periférico para saber quando a operação chegaria ao seu final. O processador ficava ocupado até o término da operação de E/S.
  • Por interrupção: Uma evolução do processo anterior, após o início da transferência de dados o processador passou a ficar livre para realizar outras tarefas. Assim, em determinados intervalos de tempo o sistema operacional deveria testar o estado dos periféricos para saber se a operação de E/S tinha terminado. Este tipo de operação permitiu um certo grau de paralelismo, já que um programa poderia ser processado enquanto uma operação de leitura/gravação em outro periférico estava sendo efetuada. Isto permitiu a implementação dos primeiros sistemas multiprogramáveis.

A necessidade de se transmitir cada vez um volume maior de informações trouxe uma evolução significativa nas operações de E/S. Em vez de o processador ser interrompido várias vezes para interrogar os dispositivos para saber do resultado das operações, o que diminuía sua eficiência devido ao excesso de interrupções, foi criado um dispositivo de transferência de dados chamado de DMA, Direct Memory Access. Esta técnica de DMA permite que um bloco de dados seja transferido entre a memória e os dispositivos de E/S sem a intervenção do processador, a não ser no início (quando a operação é solicitada) e no final da transferência (quando o processador é notificado sobre o término da operação). Na figura a seguir, podemos visualizar a implementação do canal de E/S gerenciando vários controladores e, ligados a estes, vários periféricos.

O canal de E/S funciona como uma interface entre os controladores e a CPU, conforme é mostrado na imagem abaixo:

Resumindo…

Conforme foi dito no início deste segundo tópico sobre sistemas operacionais, o conteúdo mostrado é altamente técnico principalmente sobre Interrupção e Exceção. Aproveite -o como material de referência caso necessite. E acompanhe frequentemente nosso blog para ver a terceira e última parte sobre o tema proposto, onde falaremos sobre estruturas de núcleo ou Kernel dos sistemas operacionais e suas devidas funções.
Espero que tenham gostado deste tópico – Qualquer elogio, dúvida, crítica ou ameça, poste nos comentários abaixo! 😉

Artigos Relacionados:

Comente via:

  • Facebook
  • WordPress
  • Google Plus

Para enviar seu comentário, preencha os campos abaixo:

Deixe uma resposta

Seja o primeiro a comentar!

Por gentileza, se deseja alterar o arquivo do rodapé,
entre em contato com o suporte.