| Sistema Operacional |
|
|
|
Introdução : Um Sistema Operacional é um conjunto de rotinas executadas pelo processador, da mesma forma como qualquer outro programa.Sua principal função é controlar o funcionamento do computador, gerenciando os diversos recursos disponíveis no sistema. O Sistema Operacional executa basicamente duas funções : - Facilita o acesso as recursos do sistema - Compartilha de forma organizada e protegida os recursos do sistema O Sistema Operacional torna a interação entre o usuário e o computador mais simples, confiável e eficiente. Conceitos Básicos Hardware : Um computador é constituido por um conjunto de dispositivos interligados , composto por processadores, memória principal e dispositivos fisicos ( hardware).Estes componentes podem ser sub-divididos em 3 sub-sistemas básicos : - Unidade Central de Processamente ( U.C.P.) - Memória Principal - Dispositivos de Entrada e Saida ( I /O ) Unidade Central de Processamento ( C.P.U.) : A principal função da Unidade Central de Processamento é unificar todo o sistema, controlando as funções realizadas por cada unidade funcional. Ela é também responsável pela execução de todos os programas do sistema, que obrigatoriamente deverão estar armazenados na memória principal. Um programa é composto por uma série de instruções ordenadas logicamente, que são executadas sequencialmente pela CPU. Ela busca cada instrução na memória principal e interpreta para a sua execução. A CPU é composta por dois componentes básicos : Unidade de Controle e Unidade Lógica e Aritmética. A Unidade de Controle é responsável por controlar as atividades de todos os componentes do computador, emitindo sinais elétricos gerado pelo dispositivo denominado Clock. Este sinal pode ser para a gravação de um dado no disco ou para uma busca de intrução na memória. A Unidade Lógica e Aritmética é responsável pela realização de operações lógicas (testes e comparação) e aritméricas ( soma ou subtração). A velocidade de processamento de uma CPU é determinado pelo número de instruções que o processador executa por unidade de tempo, normalmente segundo. Esta denominação pode ser MIPS (u Milhões de Instruções por Segundo) ou MFLOPS/GFLOPS (Milhões / Bilhões de Instruções por ponto flutuante por segundo ). Clock : É um dispostivo que esta localizado na CPU e que gera pulsos elétricos síncronos em um determinado intervalo de tempo. O sinal de Clock é utilizado pela Unidade de Controle para execução das instruções. A frequência do Clock de um processador é medida em Hertz ( Hz). Registradores : Os registradores são dispositivos de alta velocidade, que estão localizados dentro da CPU e que armazenam dados temporarios. Cada processador possui um determinado número de registradores.Alguns registradores são de uso específico e outros de uso geral. Memória Principal : Também conhecida como memória primária, é o local onde são armazenados as instruções e os dados.Ela é composta por unidades de acesso denominadas células, sendo que cada uma desta célula é composta por um determinado número de bits. O bit é a unidade básica da memória , podendo assumir o valor 0 e 1. O acesso de cada célula é realizada com a especificação de um número denominado endereço. Desta forma quando um programa escrever ou ler um dado em uma célula deve especificar primeiro qual o endereço de memória desejado, para depois realizar a operação. A memória principal pode ser classificada de acordo com a sua volatilidade que é a capacidade da memória em preservar o seu conteúdo mesmo sem uma fonte de alimentação. As memórias voláteis se caracterizam por poderem ser lidas e gravadas, como por exemplo as memórias RAM ( Random Acess Memory ). Outro tipo de memória não volátil é a memória ROM ( Read Only Memory ) , que já vem gravada do fabricante , geralmente com algum programa e seu conteúdo é mantido inalterado mesmo quando a alimentação é desligada. Memória Cache : Trata-se de uma memória volátil de alta velocidade.Toda vez que o processador busca um dado na memória principal , ele "olha" primeiramente para a memória cache. Se este dado estiver armazenado nela, não existe a necessidade do acesso da memória principal. Memória Secundaria : A memória secundária é um meio não volátil de armazenamento de programas e dados. O acesso a este tipo de dispositivo é lento se compararmos a memoria principal ou a memória cache, porém o seu custo é baixo e a sua capacidade de armazenamento, na maioria das vezes , é muito maior. Dispositivos de Entrada e Saida : Os dispositivos de entrada e saida tem permitem a comunicação entre o computador e o mundo externo. Através desses dispositivos, a CPU e memória principal podem se comunicar tanto com o usuário como a memória secundária, para realizar qualquer tipo de processamento. Estes dispositivos de Entrada e Saída podem ser divididos em duas categorias : - Aqueles que são utilizado como memória secundário como discos e fitas magnéticas e que tem um custo bem menor em relação a memória principal, armazenam um quantidade maior de informações , porém possuem uma velocidade de acesso menor. - Aqueles que são utlizados como interface homem-maquina , como teclado , monitores, impressoras , etc. Com o avanço da tecnologia , estes dispositivos tem se tornado bastante amigáveis, possibilitando que usuários com pouco conhecimento de informática, possam utilizar o computador de forma bastante satisfatória. Barramento : A CPU, a memória principal e os dispositivos de E/S são interligados através de linhas de comunicação denominadas barramentos , barras ou vias. Um barramento ( BUS ) é um conjunto de fios paralelos onde trafegam informações como dados , endereços ou sinais de controle. Os barramentos podem ser classificados como Unidirecional ( transmitem em um única direção ) ou Bidirecional ( transmitem em duas direções ). Na ligação entre CPU e Memória Principal , são necessários a ligação de 3 barramentos : - Barramento de Dados : onde trafegam as informações entre a CPU e a Memória Principal - Barramento de Endereço : onde a CPU especifica o endereço da célula que irá ser acessada - Barramento de Controle : onde a CPU envia pulsos de controle relativos a leitura e gravação Pipelining : O conceito de Pipelining se assemelha a de um linha de produção , onde uma tarefa é sub-dividida em outras sub-tarefas , executadas em diferentes estágios, dentro de uma linha de produção. A execução de uma instrução pode ser dividida em sub-tarefas , como as fases de busca de instrução de operandos, execução e armazenamento de resultados. O processador através de unidades funcionais pipeline , permite que enquanto a instrução se encontra na fase de execução , possa estar em fase de busca simultaneamente. Ativação e Desativação do Sistema : O Sistema Operacional é essencial para o funcionamento do Computador. Sem ele grande parte dos recursos do sistema não estariam disponíveis. Toda vez que um computador é ligado é necessário que o computador seja carregado da memória secundaria para a memória principal. Este processo, denominado ativação do sistema ( boot ) , é realizado por um programa localizado em um local específico do disco ( disco block ) , sendo geralmente o primeiro bloco. Este procedimento de ativação varia em função do equipamento, podendo ser realizado através de teclado, de um terminal , ou de chaves em um um painel. Além da carga do Sistema Operacional, a ativação do sistema tambem consiste na execução de arquivos de inicialização. Na maioria dos sistemas existe o processo de desativação denominado Shutdown . Este procedimento permite que as aplicações e componentes sejam desativados de maneira ordenada, garantindo a integridade do sistema. Arquitetura RISC e CISC Um processador com arquitetura RISC ( Reduced Instruction Set Computer) se caracteriza por ter poucas instruções de máquina , bastante simples e que são executadas diretamente pelo hardware.Na sua maioria , estas instruções não acessam a memória principal , trabalhando principalmente com os registradores, que neste tipo de processador, se apresentam em grande número. Um processador com arquitetura CISC ( Complex Instrution Set Computer ) já possuem instruções que já interpretadas por microprogramas.O número de registradores é pequeno e qualquer instrução pode referenciar a memória principal. Software : O Hardware sozinho não tem a menor utilidade. Para torna-lo útil é necessário que um conjunto de programas que fazem a interface entre as necessidades do usuário e a capacidade do hardware. A utlização de softwares adequados às diversas tarefas e aplicações , torna o trabalho do usuario muito mais simples e eficiente. Tradutor : No inicio, quando o computador surgiu, o ato de programar era extremamente complicado, pois o programador tinha que ter conhecimento de hardware ainda fazer a programação através de paineis de fios. Estes programas eram desenvolvidos em linguagem de máquina e carregados diretamente na memória principal para execução. Com o surgimento das primeiras linguagens de montagem ( assembly languages) , e ainda com o surgimento das linguagens de alto nível, os programadores deixaram de se preocupar com aspectos pertinentes ao hardware. O tradutor pode ser chamado de Montador ou Compilador. Compilador : É um programa responsável por gerar , a partir de de um programa escrito em linguagem de alto nível, um programa em linguagem de máquina, não executável. As linguagens de alto nível não possuem nenhuma relação direta com a máquina, ficando esta preocupação para o Compilador. Interpretador : Interpretador é considerado um tradutor que não gera código objeto. A partir de um programa fonte, escrito em linguagem de alto nível , o interpretador ,no momento da execução do programa, traduz cada instrução e a executa em seguida. Loader : também denominado carregador, é responsável por colocar fisicamente na memória um programa para execução. Depurador : é um utilitário que permite o usuário controlar a execução de um programa a fim de detectar erros na sua estrutura. Linguagem de Controle : também conhecida como Linguagem de Comando, é a forma direta do usuário se comunicar com o Sistema Operacional. Esta linguagem é oferecida por cada Sistema Operacional, para que os usuários possam ter acesso à rotinas específicas do sistema. Interpretador de Comandos ( Shell) : O Sistema Operacional é um código executor de chamadas de sistema.Os editores, compiladores, montadores e interpretadores não fazem parte do Sistema Operacional. Quando um comando é digitado pelo usuário, o Shell interpreta , verifica a sua sintaxe , envia mensagens de erro e faz chamadas de rotinas do sistema. Desta forma o usuário dispõe de uma interface interativa com o Sistema Operacional para realizar tarefas como copiar um arquivo ou disco ou ainda consultar um diretório. Linguagem de Máquina : é a linguagem que realmente o processador consegue entender.Cada processador possui um conjunto único de instruções ( set de instruções ) de máquina, que são definidas pelo próprio fabricante. Microprogramação Um programa em linguagem de máquina é executado diretamente pelo hardware em processadores com arquitetura RISC, porem em processadores com arquitetura CISC isso não acontece.Entre os níveis de linguagem de programação e harware, existe ainda a microprogramação. Os microprogramas definem a linguagem de máquina de cada computador.Uma máquina posse aproximdamente 25 microinstruções básicas , que são interpretadas pelos circuitos eletrônicos. Processos Um processo é basicamente um programa em execução , sendo constituido do código executável , dos dados referente ao código. Chamadas de Sistema Os programas dos usuários solicitam serviços do Sistema Operacional através da execução de chamadas de sistema. A cada chamada corresponde um procedimento de uma biblioteca de procedimentos que o programa do usuário pode chamar. Arquivos Arquivos são mecanismos de abstração que fornece uma forma de armazenar e recuperar informações em disco. Isso deve ser feito de uma forma que mantenha o usuário isolado dos detalhes a respeito de como as informações são armazenadas e de como os discos efetivamente trabalham. Tipos de Sistemas Operacionais A evolução do hardware está intimamente relacionada com o surgimento de novos Sistemas Operacionais e das aplicações por ele suportadas. A evolução dos Sistemas Operacionais para computadores pessoais e estações de trabalho popularizou termos conceitos e técnicas antes conhecidas somente em ambientes de grande porte.Com isso surgiram novos termos para conceitosjá conhecidos, que foram apenas adaptados para a nova realidade. Sistemas Monoprogramáveis / Monotarefas Os primeiros Sistemas Operacionais eram tipicamente voltados para a execução de um único programa ( job) . Qualquer outro programa, para ser executado, deveria aguardar o termino do programa corrente. Os sistemas monoprogramáveis , como vieram a ser conhecidos, se caracterizam por permitir que o processador, a memória e os periféricos permaneçam dedicados apenas para a execução de um único programa. Neste tipo de sistema, quando enquanto um programa aguarda por um evento ( por exemplo a digitação de um dado ), o processador permanece ocioso, sem realizar qualquer tipo de processamento.A memória acaba sendo sub-utilizada quando o programa não a utiliza totalmente e os periféricos ( discos e impressoras ) acabam sendo utilizados por um único usuário. Comparando com outros sistemas , os sistemas monoprogramáveis são de simples implementação e não existe praticamente preocupação com problemas de proteção. Sistemas Multiprogramáveis / Multitarefas Os sistemas multiprogramáveis que vieram a substituir os monoprogramáveis são mais complexos e eficientes. Enquanto no monoprogramável existe apenas um programa utilizando todos os seus recursos, nos multiprogramáveis vários programas dividem esses mesmo recursos.A vantagem neste tipo de sistema é que a aumenta a produtividade de seus usuários e ocorre a redução de custos com a possibilidade do compartilhamento dos mesmos recursos do sistema. A partir do número de usuários que interagem com o sistema, podemos classificar os sistemas multiprogramáveis como monousuário ou multiusuário. O uso de computadores pessoais possibilita que um único usuário (monousuário) possa executar varias tarefas concorrentemente ou simultaneamente. Os sistemas multitarefas permite que um usuário edite um texto, imprima um arquivo , copie um arquivo pela rede , etc. Sistemas Batch Os sistemas batch ( lote ) foram os primeiros sistemas multiprogramáveis a serem implementados e caracterizam-se por terem seus programas , quando submetidos, armazenados em disco ou fita, onde esperam para ser executados sequencialmente. Normalmente os programas ( jobs ) não exigem interação com o usuário, lendo e gravando dados em discos e 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 que incluem video , teclado e mouse. Desta forma o usuário pode interagir diretamente com o sistema em cada fase de desenvolvimento de suas aplicações e, se preciso, modificá-las imediatamente. Devido a este tipo de interação , estes sistemas também são conhecidos como sistemas on-line. Para cada usuário, o sistema aloca uma fatia de tempo (time slice) do processador.Caso o programa do usuário não seja concluído nesse intervalo de tempo , ele é substituido por outro usuário e fica esperando po outra fatia de tempo.Não é só o processador que é compartilhado, mas também a memória e os periféricos, como discos e impressoras.O sistema cria para o usuário um ambiente de trabalho próprio , dando a impressão que todo o sistema esta exclusivamente dedicado a ele. Sistemas de tempo compartilhado são de implementação complexa , porém se levado em consideração o tempo de desenvolvimento e depuração de uma aplicação , aumentam consideravelmente a produtividade de seus usuários , reduzindo os custos de utilização do sistema. Sistemas de Tempo Real Os sistemas de tempo real (real time) são bem semelhantes em implementação aos sistema de tempo compartilahdo. A maior diferença~é no tempo de resposta exigido no processamento das aplicações.Enquanto em sistemas de tempo compartilhado , o tempo de resposta pode variar sem comprometer as aplicações em execução, nos sistemas de tempo real os tempos de resposta devem estar dentro de limites rígidos , que devem ser obedecidos , caso contrário poderão ocorrer problemas irreparáveis. Não existe a idéia de fatia de tempo , um programa detém o processador o tempo que for necessário até que apareça outro prioritário em função da sua importância no sistema. Esta importância ou prioridade de execução é controlada pela própria aplicação e não pelo Sistema Operacional , como nos sistemas de tempo compartilhado. Estes sistemas são utilizados em aplicaçõe onde o tempo de resposta é fator fundamental. Sistemas de Múltiplos Processadores Os sistemas de múltiplos processadores caracterizam-se por possuir duas ou maios UCPS ( CPUs) interligadas, trabalhando em conjunto. Um fator chave no desenvolvimento de um sistema com múltiplos processadores é a forma de comunicação entre a UCP e o grau de compartilhamento da memória e dos dispositivos de entrada e saída. Em função desses fatores podemos classificar os sistemas em fortemente acoplados ou fracamente acoplados. Sistemas Fortemente Acoplados Nos sistemas fortemente acoplados ( tightly coupled) existem vários processadores compartilhando um única memória e gerenciados por um único Sistema Operacional. Múltiplos processadores permitem que vários programas sejam executados ao mesmo tempo , ou que um programa seja dividido em sub-programas , para a execução simultânea em mais de um processador. Desta forma é possível aumentar a capacidade de computação de um sistema, adicionando novos processadores com um custo muito inferior em relação a aquisição de novos computadores. Sistemas Assimétricos Na organização assimétrica ou mestre / escravo (master / slave) somente um processador (mestre) pode executar serviços do Sistema Operacional. Sempre que um processador do tipo escravo necessitar executar uma operação , terá que requisitar ao processador mestre.Dependendo do número de operações efetuados pelos processadores escravo, o sistema pode se tornar ineficiente devido ao elevado número de interrupções tratadas pelo mestre. Se o processador mestre falhar , todo o sistema ficará incapaz de continuar o processamento.Neste caso o sistema deverá ser reconfigurado, fazendo que um processador escravo assuma o papel de mestre. Sistemas Simétricos Neste tipo de processamento todos os processadores executam a mesma função. Apenas poucas funções ficam ao cargo de um processador, como por exemplo a inicialização do sistema. Neste tipo de sistema, um programa pode ser executado por qualquer processador, inclusive por vários processadores ao mesmo tempo ( paralelismo ). Além disso, quando um processador falha o sistema continua em funcionamento, porém com um capacidade menor de processamento. Os sistemas simétricos são mais poderosos do que os sistema assimétricos , permitindo um maior balanceamento do processador e das operações de entrada e saída. Multiprocessamento Desde a sua criação, os computadores são vistos como máquinas sequenciais , onde a UCP executa as instruções de um programa, uma de cada vez. Porém na realidade isto não é totalmente verdadeiro pos múltiplos sinais são ativos simultaneamente , o que pode ser entendido como uma forma de paralelismo. Com a implementação de múltiplos processadores, o conceito de simultaneidade ou paralelismo pode ser expandido a um nível mais amplo , denominado multiprocessamento, onde uma tarefa pode ser divida e executada, ao mesmo tempo, por mais de um processador.
Prof. Alessandro Zanini |
| < Anterior | Próximo > |
|---|

