• Nenhum resultado encontrado

Aula 02 Sistemas Multiprogramáveis

N/A
N/A
Protected

Academic year: 2021

Share "Aula 02 Sistemas Multiprogramáveis"

Copied!
41
0
0

Texto

(1)

Aula 02

Sistemas Multiprogramáveis

Matéria: Sistema Computacional - SC

(2)

S

ISTEMAS

M

ULTIPROGRAMÁ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.

(3)

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, ficando 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 mais eficiente, pois

existem vários residentes e se revezando na utilização do processador.

(4)

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,

aparentando ao usuário que nada aconteceu. 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 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 e discos, entre diversos usuários e

(5)

I

NTERRUPÇÃO E

E

XCEÇÃ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.

(6)

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.

(7)
(8)

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 pela console ou teclado) - Pelo hardware (operações de E/S)

- Pelo sistema operacional (ao término da fatia de tempo do

processador destinada ao 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.

(9)

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,

causando o término anormal do programa. Isto se deve ao fato de

que a exceção é melhor tratada dentro do próprio programa, com instruções escritas pelo programador.

(10)

B

UFFER

A técnica de buffering consiste na 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.

(11)

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. À proporção que vão sendo gerados no SPOOL, os relatórios vão sendo liberados para impressão pelo operador do sistema, de forma ordenada e sequencial. Para cada usuário, é como se ele tivesse uma impressora associada para si.

(12)

R

EENTRÂ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 é comum.

(13)

S

EGURANÇA E

P

ROTEÇÃO DO

S

ISTEMA

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.

(14)

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 acessar.

(15)

O

PERAÇÕES DE

E

NTRADA E

S

AÍ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:

(16)

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: evoluindo o 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

periférico estava sendo efetuada. Isto permitiu a implementação

(17)
(18)

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 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 ver 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 então como uma interface entre os controladores e a CPU, como mostra a figura a seguir:

(19)
(20)

E

STRUTURA

DO

S

ISTEMA

(21)
(22)

O sistema operacional é formado por um conjunto de rotinas que oferecem serviços essenciais aos usuários, às suas aplicações, e também ao próprio sistema. A esse conjunto de rotinas dá-se o nome de núcleo do sistema ou kernel.

É fundamental não se confundir o núcleo do sistema com aplicações, utilitários ou o interpretador de comandos, que acompanham o sistema operacional. As aplicações são utilizadas pelos usuários de maneira transparente, escondendo todos os detalhes da interação com o sistema. Os utilitários, como os compiladores, editores de texto e interpretadores de comandos permitem aos usuários, desenvolvedores e administradores de sistema uma interação amigável com o sistema.

(23)

Existe uma grande dificuldade em compreender a estrutura e o funcionamento do sistema operacional, pois ele não é

executado como uma aplicação tipicamente seqüencial, com início, meio e fim. Os procedimentos do sistema são

executados concorrentemente sem uma ordem específica ou predefinida, com base em eventos dissociados do tempo. Muitos desses eventos estão relacionados ao hardware e a tarefas internas do próprio sistema operacional.

(24)

F

UNÇÕES DO

S

ISTEMA

As principais funções do núcleo encontradas na maioria dos sistemas comerciais são as seguintes:

- Tratamento de interrupções e exceções: já explicados anteriormente, em detalhes;

- Criação e eliminação de processos: função responsável por alocar em memória todos os recursos necessários à execução do processo. É esta função que aloca em memória, além do executável, o contexto do processo, o buffer de leitura/gravação (se necessário), além de listas e estruturas de controle utilizadas pelo sistema operacional. Nesta função também são estabelecidos vínculos físicos a arquivos em disco, fitas e outros periféricos que serão usados no processamento. Quando do fim da execução do programa, é esta função que desaloca todos os espaços em memória ocupados pelo processo, liberando-os para futuras alocações a outros processos;

(25)

- Escalonamento e controle de processos: função responsável por organizar a fila de acesso ao processador. Utiliza parâmetros do sistema e do perfil do usuário para estabelecer a ordem em que os processos permanecerão à espera pela liberação da CPU, para então entrarem em execução;

- Gerência de memória: função responsável por fornecer à função de criação/eliminação de processos os endereços em memória disponíveis para alocação;

- Gerência de sistemas de arquivos: responsável pelo gerenciamento dos arquivos, bem como seu compartilhamento pelos diversos usuários, implementando mecanismos de controle da segurança e direitos de acesso às áreas utilizadas pelos usuários nos diversos dispositivos;

(26)

- Gerência de dispositivos de E/S: responsável por gerenciar os dispositivos, prestando auxílio à criação/eliminação de processos e á gerência de sistemas de arquivos no que diz respeito ao endereçamento e associação de arquivos em periféricos;

- Suporte a redes e teleprocessamento: é esta função que executa todos os serviços de rede, fazendo o empacotamento das mensagens vindas dos terminais para a CPU central e vice-versa, além de controlar e confirmar o envio e recebimento de todas as mensagens que trafegam pela rede;

(27)

- Contabilização de uso do sistema: responsável por contabilizar o uso de todos os recursos do sistema consumidos pelos usuários e suas aplicações. São registrados: tempo de CPU, tempo corrido, quantidade de área alocada em memória, em disco, linhas impressas, páginas de papel, entre outros. Isto se faz necessário para servir de subsídio para análise de performance, estatísticas de gastos com material de consumo e também para definição de custos de processamento.;

(28)

- Auditoria e segurança do sistema: função extremamente importante, pois detecta e registra (num arquivo especial de LOG) todas as ocorrências de erro e violação de direitos de acesso ao sistema, aos arquivos, à memória e a todos os recursos do sistema. O arquivo de LOG é usado pela gerência de sistemas, com o intuito de verificar e aperfeiçoar os mecanismos de segurança e proteção ao sistema.

A estrutura do sistema, a maneira como ele é organizado e o inter-relacionamento entre seus diversos componentes pode variar conforme a concepção do projeto do sistema.

(29)

S

YSTEM

C

ALLS

Uma grande preocupação no projeto de sistemas operacionais se refere à implementação de mecanismos de proteção ao núcleo do sistema e também o controle de acesso aos serviços oferecidos pelo sistema. Caso uma aplicação que tenha acesso ao núcleo realize alguma operação que altere sua integridade, todo o sistema poderá ficar comprometido e inoperante.

As system calls podem ser entendidas como uma porta de entrada para acesso ao núcleo do sistema e aos seus

serviços. Sempre que um usuário ou uma aplicação necessita de algum serviço do sistema, é realizada uma chamada a uma de suas rotinas através de uma system call.

(30)

Através dos parâmetros fornecidos na system call, a solicitação é processada e uma resposta é enviada à aplicação juntamente com um estado de conclusão indicando o sucesso ou não da operação. Para cada serviço disponível existe uma system call associada, e cada sistema operacional possui seu próprio conjunto de chamadas, com nomes, parâmetros e formas de ativação específicos. Isto explica por que uma aplicação desenvolvida utilizando serviços de um determinado sistema operacional não pode ser diretamente portada para um outro sistema.

(31)
(32)

M

ODOS DE

A

CESSO

Existem certas instruções que não podem ser colocadas diretamente à disposição das aplicações, pois a sua utilização indevida poderia ocasionar sérios problemas à integridade do sistema. Imagine que uma aplicação atualize um arquivo em disco. O programa, por si só, não pode especificar diretamente as instruções que acessam seus dados no disco pois, como o disco é um recurso compartilhado, sua utilização deve ser gerenciada unicamente pelo sistema operacional. Tal procedimento evita que a aplicação possa ter acesso a qualquer área do disco indiscriminadamente, o que poderia comprometer a segurança e a integridade do sistema de arquivos.

Assim, fica claro que existem certas instruções que só podem ser executadas pelo sistema operacional ou sob sua supervisão. As

instruções que têm o poder de comprometer o sistema são chamadas de instruções privilegiadas, enquanto as instruções que não comprometem o funcionamento do sistema chamam-se instruções não-privilegiadas.

(33)

Para que uma aplicação possa executar uma instrução privilegiada, é preciso que haja um mecanismo de proteção no processador, chamado modos de acesso. Existem basicamente dois modos de acesso ao processador: modo usuário e modo kernel. Quando o processador trabalha no

modo usuário, somente instruções não-privilegiadas podem ser executadas, tendo assim acesso a um número limitado de instruções do processador. Já no modo kernel (ou supervisor), a aplicação pode ter acesso ao conjunto total de instruções do processador.

A melhor maneira de controlar o acesso às instruções privilegiadas é permitir que apenas o sistema operacional tenha acesso a elas. Sempre que uma aplicação necessita executar uma instrução privilegiada, a solicitação deve ser feita através de uma system call, que altera o modo de acesso ao processador do modo usuário para o modo kernel. Ao término da execução da rotina do sistema, o modo de acesso retorna para o modo usuário.

(34)

A

RQUITETURAS

: S

ISTEMAS MONOLÍTICOS

,

EM CAMADAS E MICROKERNEL

-

Arquitetura monolítica: é caracterizada por possuir seus

módulos compilados separadamente mas linkados formando um único e enorme programa executável. Onde os módulos podem interagir livremente. Os primeiros sistemas operacionais foram desenvolvidos com base nesta arquitetura, o que tornava seu desenvolvimento e, principalmente, sua manutenção muito difíceis. Como vantagens desta arquitetura podemos citar a rapidez de execução e simplicidade de implementação. Como desvantagens, a limitação quanto a inovações futuras e a dificuldade de manutenção.

(35)
(36)

-

Arquitetura em camadas: com o aumento do tamanho do código dos sistemas operacionais, técnicas de programação estruturada e modular foram incorporadas em seu projeto. Na arquitetura em camadas, o sistema é dividido em níveis sobrepostos. Cada camada oferece um conjunto de funções que podem ser utilizadas somente pelas camadas superiores. Neste tipo de implementação as camadas mais internas são mais privilegiadas que as camadas mais externas. A vantagem da estruturação em camadas é o isolamento das funções do sistema, facilitando sua manutenção. Uma desvantagem é o desempenho, comprometido devido às várias mudanças de estado do processador provocado pela mudança de camadas. A figura a seguir mostra esta arquitetura.

(37)
(38)

Arquitetura microkernel (cliente x servidor): uma tendência nos sistemas operacionais modernos é tornar o núcleo do sistema o menor e o mais simples possível. Para implementar esta idéia, 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. Sempre que uma aplicação deseja algum serviço, é realizada uma solicitação ao processo responsável. Neste caso, a aplicação que está solicitando o serviço é

chamada de cliente, enquanto o processo que responde à solicitação é chamado de servidor. Um cliente, que pode ser uma aplicação do usuário ou um outro componente do

sistema operacional, solicita um serviço enviando uma mensagem para o servidor.

(39)

O servidor responde ao cliente através de uma outra mensagem. A principal função do núcleo é realizar a

comunicação, ou seja, a troca de mensagens entre o cliente e o servidor. A utilização deste modelo permite que os

servidores operem em modo usuário, não tendo acesso direto a certos componentes do sistema. Apenas o núcleo do

sistema, responsável pela comunicação entre clientes e

servidores, executa em modo kernel. Como consequência, se ocorrer um erro em algum servidor, este poderá parar, mas o sistema não ficará inteiramente comprometido, aumentando assim a sua disponibilidade. Como os servidores se

comunicam através de trocas de mensagens, não importa se os clientes e servidores processam em um sistema com um único processador, com vários processadores ou ainda em um ambiente de sistema distribuído.

(40)

-

A arquitetura microkernel permite isolar as funções do sistema operacional por diversos servidores pequenos e dedicados a serviços específicos, tornando o núcleo menor, mais fácil de depurar (procurar e solucionar erros) e, com isso, aumentando a sua confiabilidade. Apesar de todas as vantagens deste modelo, sua implementação é muito difícil. A começar pelo desempenho, comprometido devido às várias trocas de modo de acesso a cada troca de mensagens entre cliente e servidor. Outro problema é que certas funções do sistema operacional, como operações de E/S, exigem acesso direto ao hardware. Assim, o núcleo do sistema, além de promover a comunicação entre clientes e servidores, passa a incorpora funções críticas do sistema, como escalonamento, tratamento de interrupções e gerência de dispositivos.

(41)

Referências

Documentos relacionados

Sistemas de Informação c/ Análise* Noturno Bacharelado 8 CST em Redes de Computa- dores* Noturno Tecnólogo 5. CST em Design de Interiores* Matutino

• Application window shortcut key (Tecla de atalho de janelas de aplicações): para abrir um menu rápido de opções no Auto Mode (Modo Automático) e no Easy Arrange. •

Os fatores internos que influencia o clima, conforme apresentados pelo referido inclui o ambiente de trabalho, o qual estabelece o grau de relacionamento entre os

RESUMO - Neste estudo a micro extração em fase sólida (SPME, solid phase micro extraction) foi utilizada para a obtenção dos parâmetros de Flory Huggins em sistemas de

Os resultados da análise química de identificação e quantificação dos compostos presentes na fase volátil das amostras de mel, realizada por CG/EM, são

Notou-se com esses indicadores que a construtora apresenta um ambiente de amizade e ajuda mútua. É possível verificar essa realidade através das respostas concentradas nos níveis mais

Se está a tomar este medicamento durante a gravidez, para além de problemas com a respiração, o seu bebé pode apresentar outros sintomas após o parto tais como dificuldades

O papel do Fundecitrus foi decisivo para a construção da posição ostentada pelo Brasil, inclusive pelo trabalho do inventário das árvores e a robusta metodologia de estimativa