Capitulo1

873 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
873
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
24
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Capitulo1

  1. 1. ÍNDICE1 - HISTÓRIA E FUNÇÕES DOS SISTEMAS OPERACIONAIS 11.1 – O QUE É UM SISTEMA OPERACIONAL? 11.2 – CARACTERÍSTICAS PRINCIPAIS. 11.3 – CLASSIFICAÇÃO. 21.3.1 - QUANTO AO TIPO DE SERVIÇOS OFERECIDOS AO USUÁRIO 21.3.2 - QUANTO AO NÚMERO DE USUÁRIOS 21.3.3 - QUANTO AO TIPO DE INTERAÇÃO 21.3.4 - QUANTO A APLICAÇÃO 21.4 – HISTÓRIA DOS SISTEMAS OPERACIONAIS. 31.4.1 - (DÉCADA DE 40): 31.4.2 - 1ª GERAÇÃO (DÉCADA DE 50): 31.4.3 - 2ª GERAÇÃO (INÍCIO DA DÉCADA DE 60): 41.4.4 - 3ª GERAÇÃO (MEIO DE 1960 ATÉ MEIO DE 1970): 41.4.5 - 4ª GERAÇÃO (MEIO DE 1970 ATÉ 1990): 41.4.6 - 5ª GERAÇÃO (1990 EM DIANTE): 51.5 – CONCEITOS DE HARDWARE E SOFTWARE. 51.5.1 - HARDWARE: 51.5.1.1 - Unidade Central de Processamento (UCP): 51.5.1.2 - Clock: 61.5.1.3 - Registradores: 61.5.1.4 - Memória principal: 61.5.1.5 - Memória cache: 61.5.1.6 - Memória Secundária: 71.5.1.7 – Dispositivos de entrada e saída: 71.5.1.8 – Barramento: 71.5.1.9 - Pipelining: 71.5.1.10 – Ativação/Desativação do sistema: 81.5.2 - SOFTWARE: 81.5.2.1 – Tradutor: 81.5.2.2 – Interpretador: 91.5.2.3 – Linker (Ligador): 91.5.2.4 – Loader (Carregador): 101.5.2.5 – Depurador (debugger): 101.5.2.6 – Linguagem de Controle: 111.5.2.7 – Linguagem de Máquina: 11
  2. 2. 1 - História e Funções dos Sistemas Operacionais1.1 – O que é um Sistema Operacional?Hardware e software compõem um sistema de computação, um não é útil sem o outro. O hardware emparceria com o software é capaz de armazenar, recuperar, tratar, transportar dados, bem como, encontrarerros de sintaxe em textos, produzir e reproduzir imagens e sons, e etc.O software divide-se em duas categorias:Os programas do sistema: que são os gerenciadores do computador;Os programas de aplicação: que resolvem os problemas de seus usuários.Dos programas de sistema o mais importante é Sistema Operacional que é o controlador de todos osrecursos do computador e que propicia a base sobre a qual os programas de aplicação (também chamado deAplicativos) são escritos.Em poucas palavras, pode-se dizer que um Sistema Operacional é um conjunto de programas quegerenciam todos os recursos do computador: processador, memória, dispositivos de E/S (Entrada/Saída),execução dos programas dos usuários, etc. É ele que controla a utilização desses recursos.Quando se diz que um programa está sendo executado, uma série de instruções está sendo executada peloprocessador e dados estão sendo manipulados na memória principal e ou secundária. Mas, "quem coloca oprograma para que ele seja executado? Quem fornece a memória necessária ao programa? Quando eleprecisa acessar algum dispositivo, o vídeo por exemplo, como isso acontece?"Imagine que o próprio usuário devesse se preocupar com tais problemas. Ele teria de programar o acesso atodos os recursos que ele pretende utilizar. Para colocar o programa para executar seria necessáriodesenvolver as rotinas apropriadas para que o programa fosse carregado na memória e executado. O acesso auma impressora, por exemplo, deveria ser programado pelo usuário, e assim por diante. Agora imagine que ousuário desejasse executar outros programas simultaneamente, como ele coordenaria a execução dessesprogramas?Mas para resolver esses e outros problemas existem os sistemas operacionais. Portanto, basicamente oSistema Operacional gerencia os seguintes recursos: Processador (es); Memória; Dispositivos de E/S.Pode-se dizer que alguns objetivos de um Sistema Operacional são: Executar os programas do usuário e resolver os problemas do usuário mais facilmente; Diminuir ao máximo a interação e a dependência do programador para com a máquina; Tornar o computador conveniente e eficaz para o uso; Utilizar o hardware de uma maneira eficiente.1.2 – Características Principais.Dentre as características mais gerais desejáveis em um Sistema Operacional podemos destacar: Concorrência: é a existência de várias atividades ocorrendo em paralelo (ou simultaneamente) no sistema. Ex.: A existência de entrada e saída em paralelo ao processamento. Compartilhamento: a concorrência implica no uso coordenado e compartilhado dos recursos (sejam de Software, sejam de Hardware). As principais motivações para o compartilhamento são: 1
  3. 3. - custo dos equipamentos; - reutilização de programas; - cooperação no uso de dados; e - redução de redundâncias. Armazenamento de dados a longo prazo: permissão de armazenar dados e programas por longo tempo no sistema de computação (discos, fitas, etc), sem que seja preciso proceder sua entrada de veículos externos a cada seção de processamento. Não determinismo: um Sistema Operacional deve ser determinístico no sentido de que ele execute um certo programa em duas épocas diferentes e, para o mesmo conjunto de dados, os resultados sejam os mesmos. Entretanto, deve ser indeterminado no sentido de atender a eventos que ocorram no sistema, na ordem em que ocorrerem.São características desejáveis num Sistema Operacional: Eficiência: baixo tempo de resposta, pouca ociosidade da UCP, e alta taxa de processamento; Confiabilidade: pouca incidência de falhas, ou seja, exatidão dos dados manipulados; Manutenibilidade: facilidade de correção ou ajuste do sistema; Pequena Dimensão: simplicidade e pequena dimensão ou baixa ocupação de memória.1.3 – Classificação.1.3.1 - Quanto ao Tipo de Serviços Oferecidos ao Usuário Sistema de Processamento de Lotes (BATCH): nesses sistemas, um lote de várias tarefas a serem executadas é organizado num dispositivo de entrada. Estas são lidas e processadas em ordem seqüencial de leitura. Ao finalizar a última tarefa o sistema está novamente pronto para ler e processar mais tarefas. Sistema de Tempo Compartilhado (TIME_SHARING): trabalha em multiprogramação, isto é, aceita várias tarefas residentes na memória ao mesmo tempo, para serem processados concorrentemente, através de um mecanismo de divisão do tempo de UCP entre os processos. Sistema de Tempo Real (REAL-TIME): são, em geral, sistemas dedicados a um tipo determinado de aplicação. Seus módulos são construídos de forma a atender requisitos de tempo (ex.: controle de uma caldeira, de um míssil, do metrô, bolsa de valores, etc.).1.3.2 - Quanto ao Número de Usuários Mono Usuário: apenas um usuário utiliza todo o sistema de cada vez. Multi-Usuário: vários usuários podem estar utilizando o sistema de modo compartilhado num dado instante.1.3.3 - Quanto ao Tipo de Interação Batch: por submissão de tarefas (jobs) em lotes, através de uma linguagem de controle de jobs (JCL), sem interação Usuário X Computador. Interativo: pela interação direta do usuário com o sistema, via terminal de entrada e saída (do tipo teleimpressora ou teclado e display). Transacional: pela chegada de uma transação (ou comando, ou mensagem) que "acorda" um módulo, de tratamento ou execução apropriado.1.3.4 - Quanto a Aplicação Dedicado: tem uso restrito a determinada aplicação (ex.: controle de processos); De Uso Geral: tem uso indeterminado para qualquer aplicação, isto é, executa todo tipo de programas; Híbrido: combina os demais tipos. 2
  4. 4. 1.4 – História dos Sistemas Operacionais.Tal como nas arquiteturas de hardware, os sistemas operacionais também passam por um processo evolutivoclassificado em gerações. Seu surgimento data da segunda geração de computadores, na década de 50:1.4.1 - (Década de 40):Sistemas de computação sem Sistema Operacional. Os usuários tinham completo acesso ao hardware e asinstruções eram introduzidas manualmente uma a uma em linguagem de máquina (nas primeiras máquinas, aintrodução das instruções era por meio de chaveamento de circuitos através de cabos, como nas mesastelefônicas mais antigas).As primeiras máquinas que surgiram (1ª geração de hardware) foram:- Z3 : construído por Zuze na Alemanha em 1941.- MARK1 : construído por Aiken em Harvard em 1944.- ENIAC : por Eckert, Mauchy e Presper, na Pensylvania em 1943/1946 - empregava 18000 válvulas e relés.- EDVAC : por John Von Neumam em 1945, empregava memórias de linhas de atraso de 1K bits.- IAS : por Whirlwind, no MIT em 1946/1950, empregava memória de tubos de raios catódicos. Marcou amudança para a segunda geração de hardware.1.4.2 - 1ª GERAÇÃO (Década de 50):Os sistemas operacionais dessa década eram projetados para permitir transição mais fácil entre os jobs aserem executados. Antes de terem surgido, muito tempo era gasto entre o término de um job e o início deoutro. Era o início dos sistemas de processamento de lotes.Quando em execução, um job detinha todo o controle da máquina. Após seu encerramento, o controle eraretornado ao Sistema Operacional que procedia a um "clear" total e procedia a leitura do próximo job.As funções de um Sistema Operacional de primeira geração evoluíram da necessidade de liberar oprogramador dos aspectos físicos da máquina. Dentre as funções incorporadas por esses sistemas podemoscitar:- Montador (assembler): cuja função era traduzir linguagem assembly para linguagem de máquina em códigoabsoluto (código executável).- Execução Automática de um job: através de carregamento do endereço absoluto da primeira instrução docontador de instruções e um comando de início.- Controle de execução de lotes: através de um programa Monitor capaz, de controlar a transição entre doisjobs, através da leitura e interpretação de cartões de controle inseridos entre os jobs (cartões de JCL).- Rotinas de Entrada e Saída: para facilitar o processo de E/S do job de usuário e permitir o conceito deunidades lógicas.- Rotinas para tratamento de condições de erro.Considerado que os processos de E/S são muito lentos em relação a UCP, alternativas foram criadas visandoseparar essas funções uma vez que as máquinas eram muito caras. Dessas alternativas surgiu o Monitor deLotes: Pequenos computadores satélites eram utilizados apenas com funções de preparação de lotes e seuarmazenamento em meios mais rápidos, para depois serem transportados e executados nos sistemas centrais.Os produtores de sistemas da época ofereciam a seus clientes as seguintes inovações:- Processamento em lotes de fluxo único.- Rotinas de E/S padrão com referência lógica aos dispositivos.- Capacidade de transição job-para-job, sem intervenção do operador.- Técnicas de recuperação automática de erros com limpeza da memória antes do início do próximo job, apósum término anormal.- JCL mais flexível.As máquinas dessa geração (2ª geração de hardware) tinham circuitos transistorizados e as mais conhecidaseram:- IAS: já mencionado. 3
  5. 5. - ATLAS: pela universidade de Mancheste (Ingl.) introduziu memória de núcleo de ferrite, memória virtual eregistradores de dados de uso geral.- IBM 701: pela IBM em 1956/1962, usava memória principal de tubos de raios catódicos e memóriasecundária de tambor e fita magnética.1.4.3 - 2ª GERAÇÃO (início da década de 60):Caracterizou-se pelo desenvolvimento dos primeiros sistemas multiprogramados e hardware commultiprocessamento. As máquinas dessa época (2ª geração) usavam circuitos integrados em pequena e médiaescala e memória de estado sólido.Apareceram as primeiras propostas independentes de dispositivos de E/S e os primeiros sistemas interativosou conversacionais através de terminais de teletipo.Também surgiram as primeiras propostas de sistemas de tempo real para fins militares e industriais.Sistemas da época:- MCP (Master Control Program) - 1963: implementava multiprogramação, multiprocessamento, memóriavirtual, Sistema Operacional em linguagem de alto nível e debugger em linguagem fonte. (Para o Burroughs5000).- DOS360 - 1964: suporte de usuário + emulação de sistemas anteriores. Versões: DOS/360 para computadores pequenos OS/MFT para computadores médios OS/MVT para computadores grandes CP-67/CMS para os grandes 360/67.- CTSS (Compatible Time Sharing System): para o IBM 7094, desenvolvido no MIT.1.4.4 - 3ª GERAÇÃO (meio de 1960 até meio de 1970):Foi marcada pela introdução no mercado das máquinas IBM/360, em 1964. Essa geração caracterizou-sepelo surgimento dos sistemas de propósito geral e dos sistemas multímodo. Alguns suportando ao mesmotempo o processamento em lotes, multiprocessamento com atendimento de terminais interativos e também,aplicações de tempo real.Esses sistemas eram grandes e caros e alguns já rodando com multiprocessamento. Uma das poucas exceçõesfoi o sistema Unix dos laboratórios Bell, derivado do sistema Multics.Vários sistemas foram desenvolvidos nesse período, dentre eles podemos citar:- MULTICS - para os computadores GE.645 (hoje Honeywell).- IBM TSS (Time Sharing System) - para o 360/67.- IBM CP-67/CMS - para o 360/67.- RCA VMOS - para máquinas RCA.- CDC KRONOS - para o CDC 6000.Nessa geração o hardware já era construído com tecnologia VLSI.1.4.5 - 4ª GERAÇÃO (meio de 1970 até 1990):Caracterizou-se pelo desenvolvimento dos grandes sistemas para ambientes de multiprocessamento, redes decomputadores, supercomputadores, e dos computadores pessoais ou microcomputadores. Também pelainterligação de microcomputadores ligados a um MAIN-FRAME, comportando-se como um terminalinteligente com capacidade de processamento local, tal como nos sistemas satélites da primeira geração.Problemas ligados à proteção de informações forçaram o aprimoramento de técnicas de criptografia (técnicade proteção da informação através do emprego de um código diferente do normalmente utilizado para suarepresentação no computador e de difícil interpretação).Com as redes de computadores surgiu o processamento remoto e distribuído e os sistemas de bancos dedados distribuídos. 4
  6. 6. As grandes máquinas foram equipadas com capacidade de emulação, oferecendo aos usuários os sistemas demáquina virtual.Muitas das funções foram embutidas no hardware através da microprogramação (hardware atual é VLSI,ULSI, Firmware: suporte lógico de microprogramação, ou programação de funções lógicas de hardware numnível inferior ao da linguagem de máquina).Dentre os sistemas dessa fase podemos citar:- para os IBM 370: sistemas TSS, DOS, OS/VS/MVS, MTS, ETC.- para os Burroughs B6700 e 7700: sistema MCP.- para os Digital: PDP11/8, 35, 45, 70: sistemas RSTS, RT11, RSX11M e UNIX. DECK 10: sistema TOPS 10. VAX11/750, 760, 780 e microvax: sistemas VMS e UNIX.1.4.6 - 5ª GERAÇÃO (1990 em diante):Nesta década têm se consolidado os Sistemas Operacionais baseados em interfaces gráficas, para sistemas dedesktop, acrescidos de características antes só encontradas em Sistemas Operacionais de máquinas de grandeporte. Dentre estes pode-se citar o Windows NT, OS/2, e Unix.Do meio para cá da década tem sido forte também a tendência de máquinas multiplataforma apoiadas porlinguagens que abstraiam o uso do Sistema Operacional nativo, como é o caso das máquinas JAVA.As características de interfaceamento desses sistemas vêm evoluindo e apontam para novas tecnologiascomo, por exemplo, o reconhecimento linguagem natural e a maior sofisticação de imagens gráficas.A proposta do futuro próximo é a de sistemas baseados em máquinas de inferência e bancos deconhecimentos, construídos sobre arquiteturas distribuídas e com ênfase nos aspectos de comunicação visual,vozes e robótica.As ferramentas que têm sido mais exploradas para esse projeto compreendem, Inteligência Artificial,programação lógica, bancos de dados, métodos heurísticos, estatística, computação gráfica, etc.1.5 – Conceitos de Hardware e Software.1.5.1 - Hardware:Um computador digital é constituído por um conjunto de componentes interligados, compostos porprocessadores, memórias, terminais, impressoras, e outros dispositivos físicos, aos quais chamamos dehardware. Tais dispositivos manipulam dados na forma digital, proporcionando mais confiabilidade.Todos os dispositivos físicos de um computador são agrupados em três subsistemas básicos: unidade centralde processamento, memória principal e dispositivos de entrada/saída. Estes subsistemas também sãochamados de unidades funcionais.1.5.1.1 - Unidade Central de Processamento (UCP):Também chamado de processador, tem como função principal unificar todo o sistema, controlando as açõesde cada unidade funcional. A UCP também é responsável pela execução de todos os programas do sistema etais programas deverão estar armazenados na memória principal e são compostos por uma série de instruçõesque são executadas seqüencialmente pela UCP, através de operações básicas de somar, subtrair, comparar emovimentar dados.A UCP é composta por dois componentes básicos: Unidade de Controle (UC) e Unidade Lógica e Aritmética(ULA). A UC é responsável por controlar as atividades de todos os componentes do computador, através daemissão de pulsos elétricos, também chamados de sinais de controle, gerados por um dispositivo chamadoClock. A ULA é responsável pela execução de operações de lógica (AND, OR,etc.) e de aritmética (somas esubtrações). 5
  7. 7. 1.5.1.2 - Clock:É dispositivo, localizado na UCP, que gera pulsos elétricos síncronos em um determinado intervalo detempo. A quantidade de vezes que este pulso se repete em um segundo define a freqüência do clock. O sinaldo clock é utilizado pela UC para a execução das instruções.A freqüência do clock de uma UCP é medida em Hertz (Hz), sendo o número de pulsos em um segundo detempo. E também é a unidade de desempenho da UCP, isto é quanto mais vezes os pulsos do clock serepetem, mais instruções a UCP poderá executar no mesmo segundo de tempo.1.5.1.3 - Registradores:Em um sistema de computação, o destino final do conteúdo de qualquer tipo de memória é a UCP. Isto é, oobjetivo final de cada uma das memórias é armazenar informações destinadas a serem, em algum momentoutilizadas pela UCP. As ações operativas da UCP são realizadas na ULA, como já foi dito. Entretanto, antesque as instruções sejam interpretadas e as unidades da UCP sejam acionadas, o processador necessita buscaras instruções onde elas estiverem armazenadas (memória cache ou principal) e armazená-la em seu própriointerior, em um dispositivo de memória denominado registrador.Em seguida a este armazenamento da instrução, a UCP deverá, na maioria das vezes, buscar dados damemória (cache, principal ou mesmo da memória secundária) para serem manipulados pela ULA. Essesdados também necessitam ser armazenados em algum local do processador até serem efetivamenteutilizados. Os resultados de um processamento também precisam (às vezes) ser armazenadostemporariamente na UCP, ou para serem novamente manipulados pela ULA por uma outra instrução, ou paraserem transferidos para uma memória externa ao processador.1.5.1.4 - Memória principal:Também conhecida como memória primária ou real, é a parte do computador onde são armazenadosinstruções e dados. É composta por unidades de acesso chamada célula, sendo cada célula composta por umdeterminado número de bits. Podemos concluir que a memória é formada por um conjunto de células, ondecada uma possui um determinado número de bits.O acesso ao conteúdo de uma célula é realizado através da especificação de um número chamado endereço.Quando um programa deseja ler ou escrever um dado em uma célula deve primeiro especificar qual oendereço de memória desejado, para depois realizar a operação.A especificação do endereço é realizada através de um registrador denominado registrador de endereço damemória (REM). Através do conteúdo deste registrador, a unidade de controle sabe qual a célula de memóriaque será acessada. Outro registrador usado em operações com a memória é o registrador de dados damemória (RDM). Este é utilizado para guardar o conteúdo de uma ou mais células de memória, após umaoperação de leitura, ou para guardar o dado que será transferido para a memória em uma operação degravação.A memória principal pode ser classificada em função de sua volatilidade, que é a capacidade de a memóriapreservar o seu conteúdo mesmo sem uma fonte de alimentação elétrica. As memórias chamadas voláteis secaracterizam por poderem ser lidas ou gravadas, como o tipo RAM (random acess memory), que constituiquase a totalidade da memória principal de um computador. O outro tipo de memória, conhecido como ROM(read-only memory), já vem gravada de fábrica, geralmente com algum programa, e seu conteúdo épreservado mesmo quando a alimentação é desligada. Uma variação da ROM é a EPROM (erasableprogramnmable ROM), onde podemos gravar e regravar a memória através da exposição de luz ultravioleta.1.5.1.5 - Memória cache:Nos computadores mais antigos os registradores eram diretamente ligados a memória principal, na execuçãode instruções a UCP acessava diretamente a memória principal pelo menos uma vez para buscá-las etransferi-las para um registrador interno ao processador. Considerando-se que atualmente o ciclo de memóriaé bem mais demorado que o período de tempo que a UCP gasta para realizar uma operação na ULA, ficaevidente que a duração da execução de um ciclo de instrução é bastante afetada pela demora dos ciclos dememória. 6
  8. 8. Na tentativa de melhorar o desempenho dos computadores, os projetistas de UCPs vêm obtendoconstantemente velocidades cada vez maiores na operação dessas unidades, o que não acontece na mesmaproporção com a memória principal. Assim atualmente a diferença de velocidade entre a UCP e a memóriaprincipal é muito grande.Na busca pela minimização dessa diferença foi desenvolvida uma técnica que consiste na inclusão de umdispositivo entre a UCP e a memória principal, denominado memória cache, cuja função é acelerar avelocidade de transferência entre esses dois dispositivos, e com isso melhorar o desempenho doscomputadores.Para isso, a memória cache é fabricada com tecnologia semelhante àquela empregada na UCP, econseqüentemente apresenta tempos de acesso compatíveis, resultando numa considerável redução da esperada UCP para receber dados e instruções da cache.1.5.1.6 - Memória Secundária:Em geral é o tipo de memória que tem maior capacidade de armazenamento que os outros tiposanteriormente descritos, menor custo por "byte" armazenado e tempo de acesso superior. Conhecida comomemória secundária ou memória auxiliar, ou ainda memória de massa, tem por objetivo garantir umarmazenamento mais permanente aos programas e estruturas de dados, razão pela qual deve possuir maiorcapacidade de armazenamento que a memória principal.A memória secundária de um computador pode ser constituída por diferentes tipos de dispositivos, algunsdiretamente ligados ao sistema por acesso imediato, e outros que podem ser conectados quando desejado.A maior característica desse tipo de memória é a sua não volatilidade.1.5.1.7 - Dispositivos de entrada e saída:São utilizados para permitir a comunicação entre o computador e o mundo externo. Através dessesdispositivos, a UCP e a memória principal podem se comunicar, tanto com usuários quanto memóriassecundárias, a fim de realizar qualquer tipo de processamento.Os dispositivos de entrada/saída podem ser divididos em duas categorias: os que são utilizados comomemória secundária e os que servem para a interface homem-máquina.Os dispositivos utilizados como memória secundária, como discos e fitas magnéticas, se caracterizam porarmazenar de três a quatro vezes mais informações que a memória principal. Seu custo é relativamentebaixo, porém o tempo de acesso à memória secundária é quatro a seis vezes maior que o acesso à memóriaprincipal.Alguns dispositivos servem para a comunicação homem-máquina, como teclados, monitores de vídeo,impressoras, plotters, entre outros.1.5.1.8 - Barramento:A UCP, a memória principal e os dispositivos de entrada/saída são interligados através de linhas decomunicação denominadas barramentos, barras ou vias. Um barramento (bus) é um conjunto de fiosparalelos (linhas de transmissão), onde trafegam informações, como dados, endereços ou sinais de controle.Ele pode ser classificado como unidirecional (transmissão em um só sentido) ou bidirecional (transmissãoem ambos os sentidos).Na ligação entre UCP e memória principal, podemos observar que três barramentos são necessários para quea comunicação seja realizada. O barramento de dados transmite informações entre a memória principal e aUCP. O barramento de endereços é utilizado pela UCP para especificar o endereço da célula de memóriaque será acessada. Finalmente, o barramento de controle é por onde a UCP envia os pulsos de controlerelativo às operações de leitura e gravação.1.5.1.9 - Pipelining:O conceito de processamento pipeline se assemelha muito a uma linha de montagem, onde uma tarefa édividida em uma a seqüência de subtarefas, executadas em diferentes estágios, dentro da linha de produção. 7
  9. 9. Da mesma forma que em uma linha de montagem, a execução de uma instrução pode ser dividida emsubtarefas, como as fases de busca da instrução e dos operandos, execução e armazenamento dos resultados.O processador, através de suas várias unidades funcionais pipeline, funciona de forma a permitir que,enquanto uma instrução se encontre na fase de execução, outra instrução possa estar na fase de buscasimultaneamente.A técnica de pipelining pode ser empregada em sistemas com um ou mais processadores, em diversos níveis,e tem sido a técnica de paralelismo mais utilizada para maior desempenho dos sistemas de computação.1.5.1.10 - Ativação/Desativação do sistema:O Sistema Operacional é essencial para o funcionamento de um computador. Sem ele, grande parte dosrecursos do sistema não estaria disponível, ou se apresentaria de uma forma complexa para utilização pelosusuários.Toda vez que um computador é ligado, é necessário que o Sistema Operacional seja carregado da memóriasecundária para a memória principal. Esse processo, denominado ativação do sistema (boot), é realizado porum programa localizado em uma posição específica do disco (boot block), geralmente o primeiro bloco. Oprocedimento de ativação varia em função do equipamento, podendo ser realizado através do teclado, de umterminal ou por manipulação de chaves de um painel.Além da carga do Sistema Operacional, a ativação também consiste na execução de arquivos deinicialização. Nestes arquivos são especificados procedimentos de inicialização e configuração de hardware esoftware específicos para cada ambiente.Na maioria dos sistemas, também existe o processo de desativação (shutdown). Este procedimento permiteque as aplicações e componentes do sistema sejam desativados de forma ordenada, garantindo a integridadedo sistema.1.5.2 - Software:O hardware, por si só, não tem a menor utilidade. Para torná-lo útil, existe um conjunto de programas,utilizado como interface entre as necessidades do usuário e as capacidades do hardware. A utilização desoftware adequado às diversas tarefas e aplicações torna o trabalho do usuário muito mais simples eeficiente.1.5.2.1 - Tradutor:Nos sistemas operacionais antigos, o ato de programar era bastante complicado, já que o programadordeveria possuir conhecimento de hardware e programar em painéis através de fios. Esses programas eramdesenvolvidos 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 das linguagens de altonível, o programador deixou de se preocupar com muitos aspectos pertinentes ao hardware, como em qualregião da memória principal o programa deveria ser carregado ou quais endereços de memória principalseriam reservados para as variáveis. A utilização dessas linguagens facilitou a construção de programas emmuitos aspectos. Desse modo, um programa poderia ser escrito de uma forma bem documentada e comfacilidades para realizar alterações.Apesar das inúmeras vantagens proporcionadas pelas linguagens de montagens e alto nível, os programasescritos nessas linguagens (programa-fonte) não estão prontos para ser diretamente executados pela UCP.Para isso, eles têm de passar por uma etapa de conversão, onde toda representação simbólica dos programasé traduzida para código de máquina. Esta conversão é realizada por um software chamado tradutor.O módulo gerado pelo tradutor é denominado módulo-objeto, que, apesar de estar em código de máquina, namaioria das vezes não pode ser ainda executado. Isso ocorre em função de um programa poder chamar sub-rotinas externas, e, neste caso, o tradutor não tem como associar o programa principal às sub-rotinaschamadas. Esta função é realizada por um utilitário denominado linker e será visto adiante. 8
  10. 10. O tradutor pelo tipo de linguagem de programação utilizada, pode ser chamado de montador ou compilador,veja Fig. 1.1.A linguagem de montagem é um conjunto de símbolos (mnemônicos) associados às instruções de linguagemde máquina do processador. Apesar das facilidades, como instruções simbólicas e possibilidade dedocumentação, a programação em linguagem, de montagem está diretamente ligada às características daarquitetura do processador. Em função disto, este tipo de linguagem é diferente para cada computador, pois alinguagem de máquina e, conseqüentemente, a de montagem são características específicas do processador.O compilador é o utilitário responsável por gerar, a partir de um programa escrito em umalinguagem de alto nível, um programa em linguagem de máquina não executável (módulo-objeto).As linguagens de alto nível não têm nenhuma relação direta com a máquina, ficando essa preocupaçãoexclusivamente com o compilador.os programadores de alto nível devem se preocupar apenas com odesenvolvimento de suas aplicações, não tendo que se envolver com detalhes sobre a arquitetura doprocessador. Assim, os programas-fonte podem ser transportados entre computadores de diversosfabricantes, desde que existam regras de definição para a linguagem. Isso permite o desenvolvimento deaplicações independentes do equipamento. Programa-Fonte Tradutor Programa-Objeto Linguagem de Montador Módulo-objeto Montagem Linguagem de Compilador Módulo-objeto Alto Nível Fig. 1.1 – Tradutor.Um compilador é um utilitário que opera de modo integrado aos componentes do sistema de programaçãodisponível, sob a supervisão do Sistema Operacional. Podemos visualizar, então, o compilador como umainterface entre o Sistema Operacional e o usuário, de maneira que é possível acessar diversos serviços dosistema sem a necessidade da utilização de linguagem de controle ou de outros utilitários.1.5.2.2 - Interpretador:É considerado um tradutor que não gera código-objeto. A partir de um programa-fonte, escrito em linguagemde alto nível, o interpretado, no momento da execução do programa, traduz cada instrução e a executa emseguida.A maior desvantagem da utilização de interpretadores é o tempo gasto na tradução das instruções de umprograma toda vez que este for executado, já que não existe a geração de um código executável. A vantagemé permitir a implementação de tipos de dados dinâmicos, ou seja, que podem mudar de tipo durante aexecução do programa, aumentando, assim, sua flexibilidade.1.5.2.3 - Linker (Ligador):É o utilitário responsável por gerar, a partir de um ou mais módulos-objeto, um único programa executável,veja Fig. 1.2. Suas funções básicas são resolver todas as referências simbólicas existente entre os módulos ereservar memória para a execução do programa. Módulo-objeto 9 Programa Módulo-objeto Linker executável
  11. 11. Fig. 1.2 – Linker.Para resolver todas as referências a símbolos, o linker também pode pesquisar em bibliotecas do sistema oudo próprio usuário. Bibliotecas são arquivos que contém diversos módulos-objeto e/ou definições desímbolos.Outra função importante do linker é determinar uma região de memória na qual o programa será carregadopara ser executado. Esta operação é denominada relocação.Em sistemas operacionais antigos, a relocação era realizada somente uma vez, na etapa de linkedição. Todosos endereços simbólicos do programa eram traduzidos para endereços físicos, e o programa executávelgerado podia ser carregado a partir de uma posição prefixada na memória (código absoluto). Nesse tipo derelocação, o programa poderia ser carregado, apenas, a partir de uma única posição na memória.Em sistemas multiprogramáveis esse tipo de relocação é inviável, já que a memória é compartilhada entrediversos programas, e é pouco provável que, no momento em que o sistema carrega um programa, sua áreade memória prefixada esteja disponível. A solução para este problema é permitir que o programa sejacarregado em regiões diferentes toda vez que for trazido para memória (código relocável). Esse tipo derelocação não é realizado pelo linker, mas sim por outro utilitário denominado loader, responsável porcarregar os programas na memória.1.5.2.4 - Loader (Carregador):É o utilitário responsável por colocar fisicamente na memória um programa para execução. O procedimentode carga varia com o código gerado pelo linker e, em função deste, o loader é classificado como sendo dotipo absoluto ou relocável.Se o código executável for do tipo absoluto, o loader só necessita conhecer o endereço de memória inicial e otamanho do módulo para realizar o carregamento. Então, o loader transfere o programa da memóriasecundária para a memória principal e inicia sua execução (loader absoluto).No caso do código relocável, o programa pode ser carregado em qualquer posição de memória, e o loader éresponsável pela relocação no momento do carregamento (loader relocável).1.5.2.5 - Depurador (debugger):É o utilitário que permite ao usuário controlar toda a execução de um programa a fim de detectar erros na suaestrutura. Este utilitário oferece ao usuário recursos como:- acompanhar a execução de um programa instrução por instrução;- possibilitar a alteração e visualização do conteúdo de variáveis;- implementar pontos de parada dentro do programa (breakpoint), de forma que, durante a execução, oprograma pare nesses pontos;- especificar que, toda vez que o conteúdo de uma variável for modificado, o programa envie uma mensagem(watchpoint). 10
  12. 12. 1.5.2.6 - Linguagem de Controle:Também chamada de linguagem de comando, é a forma mais direta de um usuário se comunicar com oSistema Operacional. Esta linguagem é oferecida por cada Sistema Operacional para que, através decomandos simples, o usuário possa ter acesso a rotinas específicas do sistema.Esses comandos quando digitados pelos usuários, são interpretados por um utilitário chamado interpretadorde comandos ou Shell. O interpretador reconhece a linha de comando, verifica sua sintaxe, envia mensagensde erro e faz chamada a rotinas do sistema.1.5.2.7 - Linguagem de Máquina:É a linguagem, de programação que o processador realmente consegue entender. Cada processador possuium conjunto único de instruções de máquina, definido pelo próprio fabricante. As instruções especificamdetalhes, como registradores, modos de endereçamento e tipos de dados, que caracterizam um processador esuas potencialidades.Um programa em linguagem de máquina é totalmente codificado em formato binário, o que torna oentendimento confuso para o usuário. Essa linguagem é muito mais voltada para a máquina do que para ousuário, o que gera inconveniências, como programas longos e com maiores chances de erro.O programa em linguagem de máquina pode ser diretamente processado pela UCP, não requerendo qualquertipo de tradução ou relocação. Quando escrito em linguagem de máquina de um computador, um programanão pode ser executado em outra máquina de modelo diferente. Isso porque o conjunto de instruções de umamáquina é característica específica de cada processador. 11

×