SlideShare une entreprise Scribd logo
1  sur  12
Télécharger pour lire hors ligne
ÍNDICE

1 - HISTÓRIA E FUNÇÕES DOS SISTEMAS OPERACIONAIS           1

1.1 – O QUE É UM SISTEMA OPERACIONAL?                       1
1.2 – CARACTERÍSTICAS PRINCIPAIS.                           1
1.3 – CLASSIFICAÇÃO.                                        2
1.3.1 - QUANTO AO TIPO DE SERVIÇOS OFERECIDOS AO USUÁRIO    2
1.3.2 - QUANTO AO NÚMERO DE USUÁRIOS                        2
1.3.3 - QUANTO AO TIPO DE INTERAÇÃO                         2
1.3.4 - QUANTO A APLICAÇÃO                                  2
1.4 – HISTÓRIA DOS SISTEMAS OPERACIONAIS.                   3
1.4.1 - (DÉCADA DE 40):                                     3
1.4.2 - 1ª GERAÇÃO (DÉCADA DE 50):                          3
1.4.3 - 2ª GERAÇÃO (INÍCIO DA DÉCADA DE 60):                4
1.4.4 - 3ª GERAÇÃO (MEIO DE 1960 ATÉ MEIO DE 1970):         4
1.4.5 - 4ª GERAÇÃO (MEIO DE 1970 ATÉ 1990):                 4
1.4.6 - 5ª GERAÇÃO (1990 EM DIANTE):                        5
1.5 – CONCEITOS DE HARDWARE E SOFTWARE.                     5
1.5.1 - HARDWARE:                                           5
1.5.1.1 - Unidade Central de Processamento (UCP):           5
1.5.1.2 - Clock:                                            6
1.5.1.3 - Registradores:                                    6
1.5.1.4 - Memória principal:                                6
1.5.1.5 - Memória cache:                                    6
1.5.1.6 - Memória Secundária:                               7
1.5.1.7 – Dispositivos de entrada e saída:                  7
1.5.1.8 – Barramento:                                       7
1.5.1.9 - Pipelining:                                       7
1.5.1.10 – Ativação/Desativação do sistema:                 8
1.5.2 - SOFTWARE:                                           8
1.5.2.1 – Tradutor:                                         8
1.5.2.2 – Interpretador:                                    9
1.5.2.3 – Linker (Ligador):                                 9
1.5.2.4 – Loader (Carregador):                             10
1.5.2.5 – Depurador (debugger):                            10
1.5.2.6 – Linguagem de Controle:                           11
1.5.2.7 – Linguagem de Máquina:                            11
1 - História e Funções dos Sistemas Operacionais


1.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 em
parceria com o software é capaz de armazenar, recuperar, tratar, transportar dados, bem como, encontrar
erros 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 os
recursos do computador e que propicia a base sobre a qual os programas de aplicação (também chamado de
Aplicativos) são escritos.
Em poucas palavras, pode-se dizer que um Sistema Operacional é um conjunto de programas que
gerenciam 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 pelo
processador e dados estão sendo manipulados na memória principal e ou secundária. Mas, "quem coloca o
programa para que ele seja executado? Quem fornece a memória necessária ao programa? Quando ele
precisa 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 a
todos os recursos que ele pretende utilizar. Para colocar o programa para executar seria necessário
desenvolver as rotinas apropriadas para que o programa fosse carregado na memória e executado. O acesso a
uma impressora, por exemplo, deveria ser programado pelo usuário, e assim por diante. Agora imagine que o
usuário desejasse executar outros programas simultaneamente, como ele coordenaria a execução desses
programas?
Mas para resolver esses e outros problemas existem os sistemas operacionais. Portanto, basicamente o
Sistema 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
- 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
1.4 – História dos Sistemas Operacionais.

Tal como nas arquiteturas de hardware, os sistemas operacionais também passam por um processo evolutivo
classificado 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 as
instruções eram introduzidas manualmente uma a uma em linguagem de máquina (nas primeiras máquinas, a
introdução das instruções era por meio de chaveamento de circuitos através de cabos, como nas mesas
telefô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 a
mudanç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 a
serem executados. Antes de terem surgido, muito tempo era gasto entre o término de um job e o início de
outro. 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 era
retornado 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 o
programador dos aspectos físicos da máquina. Dentre as funções incorporadas por esses sistemas podemos
citar:
- Montador (assembler): cuja função era traduzir linguagem assembly para linguagem de máquina em código
absoluto (código executável).
- Execução Automática de um job: através de carregamento do endereço absoluto da primeira instrução do
contador 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 dois
jobs, 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 de
unidades 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 visando
separar essas funções uma vez que as máquinas eram muito caras. Dessas alternativas surgiu o Monitor de
Lotes: Pequenos computadores satélites eram utilizados apenas com funções de preparação de lotes e seu
armazenamento 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ós
um término anormal.
- JCL mais flexível.
As máquinas dessa geração (2ª geração de hardware) tinham circuitos transistorizados e as mais conhecidas
eram:
- IAS: já mencionado.


                                                                                                        3
- ATLAS: pela universidade de Mancheste (Ingl.) introduziu memória de núcleo de ferrite, memória virtual e
registradores de dados de uso geral.
- IBM 701: pela IBM em 1956/1962, usava memória principal de tubos de raios catódicos e memória
secundá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 com
multiprocessamento. As máquinas dessa época (2ª geração) usavam circuitos integrados em pequena e média
escala e memória de estado sólido.
Apareceram as primeiras propostas independentes de dispositivos de E/S e os primeiros sistemas interativos
ou 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ória
virtual, Sistema Operacional em linguagem de alto nível e debugger em linguagem fonte. (Para o Burroughs
5000).
- 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-se
pelo surgimento dos sistemas de propósito geral e dos sistemas multímodo. Alguns suportando ao mesmo
tempo 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ções
foi 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 de
computadores, supercomputadores, e dos computadores pessoais ou microcomputadores. Também pela
interligação de microcomputadores ligados a um MAIN-FRAME, comportando-se como um terminal
inteligente 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écnica
de proteção da informação através do emprego de um código diferente do normalmente utilizado para sua
representaçã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 de
dados distribuídos.



                                                                                                        4
As grandes máquinas foram equipadas com capacidade de emulação, oferecendo aos usuários os sistemas de
má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 num
ní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 de
desktop, acrescidos de características antes só encontradas em Sistemas Operacionais de máquinas de grande
porte. 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 por
linguagens 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 tecnologias
como, 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 de
conhecimentos, 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 por
processadores, memórias, terminais, impressoras, e outros dispositivos físicos, aos quais chamamos de
hardware. 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 central
de processamento, memória principal e dispositivos de entrada/saída. Estes subsistemas também são
chamados 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ções
de cada unidade funcional. A UCP também é responsável pela execução de todos os programas do sistema e
tais programas deverão estar armazenados na memória principal e são compostos por uma série de instruções
que são executadas seqüencialmente pela UCP, através de operações básicas de somar, subtrair, comparar e
movimentar 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 da
emissão de pulsos elétricos, também chamados de sinais de controle, gerados por um dispositivo chamado
Clock. A ULA é responsável pela execução de operações de lógica (AND, OR,etc.) e de aritmética (somas e
subtrações).



                                                                                                         5
1.5.1.2 - Clock:
É dispositivo, localizado na UCP, que gera pulsos elétricos síncronos em um determinado intervalo de
tempo. A quantidade de vezes que este pulso se repete em um segundo define a freqüência do clock. O sinal
do 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 de
tempo. E também é a unidade de desempenho da UCP, isto é quanto mais vezes os pulsos do clock se
repetem, 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 é, o
objetivo final de cada uma das memórias é armazenar informações destinadas a serem, em algum momento
utilizadas pela UCP. As ações operativas da UCP são realizadas na ULA, como já foi dito. Entretanto, antes
que as instruções sejam interpretadas e as unidades da UCP sejam acionadas, o processador necessita buscar
as instruções onde elas estiverem armazenadas (memória cache ou principal) e armazená-la em seu próprio
interior, 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 da
memória (cache, principal ou mesmo da memória secundária) para serem manipulados pela ULA. Esses
dados também necessitam ser armazenados em algum local do processador até serem efetivamente
utilizados. Os resultados de um processamento também precisam (às vezes) ser armazenados
temporariamente na UCP, ou para serem novamente manipulados pela ULA por uma outra instrução, ou para
serem 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 armazenados
instruções e dados. É composta por unidades de acesso chamada célula, sendo cada célula composta por um
determinado número de bits. Podemos concluir que a memória é formada por um conjunto de células, onde
cada 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 o
endereç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 da
memória (REM). Através do conteúdo deste registrador, a unidade de controle sabe qual a célula de memória
que será acessada. Outro registrador usado em operações com a memória é o registrador de dados da
memória (RDM). Este é utilizado para guardar o conteúdo de uma ou mais células de memória, após uma
operação de leitura, ou para guardar o dado que será transferido para a memória em uma operação de
gravação.
A memória principal pode ser classificada em função de sua volatilidade, que é a capacidade de a memória
preservar o seu conteúdo mesmo sem uma fonte de alimentação elétrica. As memórias chamadas voláteis se
caracterizam por poderem ser lidas ou gravadas, como o tipo RAM (random acess memory), que constitui
quase 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 (erasable
programnmable 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ção
de instruções a UCP acessava diretamente a memória principal pelo menos uma vez para buscá-las e
transferi-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, fica
evidente que a duração da execução de um ciclo de instrução é bastante afetada pela demora dos ciclos de
memória.


                                                                                                         6
Na tentativa de melhorar o desempenho dos computadores, os projetistas de UCPs vêm obtendo
constantemente velocidades cada vez maiores na operação dessas unidades, o que não acontece na mesma
proporção com a memória principal. Assim atualmente a diferença de velocidade entre a UCP e a memória
principal é muito grande.
Na busca pela minimização dessa diferença foi desenvolvida uma técnica que consiste na inclusão de um
dispositivo entre a UCP e a memória principal, denominado memória cache, cuja função é acelerar a
velocidade de transferência entre esses dois dispositivos, e com isso melhorar o desempenho dos
computadores.
Para isso, a memória cache é fabricada com tecnologia semelhante àquela empregada na UCP, e
conseqüentemente apresenta tempos de acesso compatíveis, resultando numa considerável redução da espera
da 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 tipos
anteriormente descritos, menor custo por "byte" armazenado e tempo de acesso superior. Conhecida como
memória secundária ou memória auxiliar, ou ainda memória de massa, tem por objetivo garantir um
armazenamento mais permanente aos programas e estruturas de dados, razão pela qual deve possuir maior
capacidade de armazenamento que a memória principal.
A memória secundária de um computador pode ser constituída por diferentes tipos de dispositivos, alguns
diretamente 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 desses
dispositivos, a UCP e a memória principal podem se comunicar, tanto com usuários quanto memórias
secundá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 como
memó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 por
armazenar de três a quatro vezes mais informações que a memória principal. Seu custo é relativamente
baixo, porém o tempo de acesso à memória secundária é quatro a seis vezes maior que o acesso à memória
principal.
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 de
comunicação denominadas barramentos, barras ou vias. Um barramento (bus) é um conjunto de fios
paralelos (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ão
em ambos os sentidos).
Na ligação entre UCP e memória principal, podemos observar que três barramentos são necessários para que
a comunicação seja realizada. O barramento de dados transmite informações entre a memória principal e a
UCP. O barramento de endereços é utilizado pela UCP para especificar o endereço da célula de memória
que será acessada. Finalmente, o barramento de controle é por onde a UCP envia os pulsos de controle
relativo à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
Da mesma forma que em uma linha de montagem, a execução de uma instrução pode ser dividida em
subtarefas, 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 busca
simultaneamente.
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 dos
recursos do sistema não estaria disponível, ou se apresentaria de uma forma complexa para utilização pelos
usuários.
Toda vez que um computador é ligado, é necessário que o Sistema Operacional seja carregado da memória
secundária para a memória principal. Esse processo, denominado ativação do sistema (boot), é realizado por
um programa localizado em uma posição específica do disco (boot block), geralmente o primeiro bloco. O
procedimento de ativação varia em função do equipamento, podendo ser realizado através do teclado, de um
terminal 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 de
inicialização. Nestes arquivos são especificados procedimentos de inicialização e configuração de hardware e
software específicos para cada ambiente.
Na maioria dos sistemas, também existe o processo de desativação (shutdown). Este procedimento permite
que as aplicações e componentes do sistema sejam desativados de forma ordenada, garantindo a integridade
do 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 de
software adequado às diversas tarefas e aplicações torna o trabalho do usuário muito mais simples e
eficiente.

1.5.2.1 - Tradutor:
Nos sistemas operacionais antigos, o ato de programar era bastante complicado, já que o programador
deveria possuir conhecimento de hardware e programar em painéis através de fios. Esses 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 das linguagens de alto
nível, o programador deixou de se preocupar com muitos aspectos pertinentes ao hardware, como em qual
região da memória principal o programa deveria ser carregado ou quais endereços de memória principal
seriam reservados para as variáveis. A utilização dessas linguagens facilitou a construção de programas em
muitos aspectos. Desse modo, um programa poderia ser escrito de uma forma bem documentada e com
facilidades para realizar alterações.
Apesar das inúmeras vantagens proporcionadas pelas linguagens de montagens e alto nível, os programas
escritos 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, na
maioria 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-rotinas
chamadas. Esta função é realizada por um utilitário denominado linker e será visto adiante.



                                                                                                          8
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 linguagem
de máquina do processador. Apesar das facilidades, como instruções simbólicas e possibilidade de
documentação, a programação em linguagem, de montagem está diretamente ligada às características da
arquitetura do processador. Em função disto, este tipo de linguagem é diferente para cada computador, pois a
linguagem 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 uma
linguagem 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ção
exclusivamente com o compilador.os programadores de alto nível devem se preocupar apenas com o
desenvolvimento de suas aplicações, não tendo que se envolver com detalhes sobre a arquitetura do
processador. Assim, os programas-fonte podem ser transportados entre computadores de diversos
fabricantes, desde que existam regras de definição para a linguagem. Isso permite o desenvolvimento de
aplicaçõ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ção
disponível, sob a supervisão do Sistema Operacional. Podemos visualizar, então, o compilador como uma
interface entre o Sistema Operacional e o usuário, de maneira que é possível acessar diversos serviços do
sistema 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 linguagem
de alto nível, o interpretado, no momento da execução do programa, traduz cada instrução e a executa em
seguida.
A maior desvantagem da utilização de interpretadores é o tempo gasto na tradução das instruções de um
programa 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 a
execuçã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 e
reservar memória para a execução do programa.

       Módulo-objeto


                                                                                                           9
                                                                                          Programa
       Módulo-objeto                               Linker                                 executável
Fig. 1.2 – Linker.

Para resolver todas as referências a símbolos, o linker também pode pesquisar em bibliotecas do sistema ou
do próprio usuário. Bibliotecas são arquivos que contém diversos módulos-objeto e/ou definições de
símbolos.
Outra função importante do linker é determinar uma região de memória na qual o programa será carregado
para 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. Todos
os endereços simbólicos do programa eram traduzidos para endereços físicos, e o programa executável
gerado podia ser carregado a partir de uma posição prefixada na memória (código absoluto). Nesse tipo de
relocaçã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 entre
diversos programas, e é pouco provável que, no momento em que o sistema carrega um programa, sua área
de memória prefixada esteja disponível. A solução para este problema é permitir que o programa seja
carregado em regiões diferentes toda vez que for trazido para memória (código relocável). Esse tipo de
relocação não é realizado pelo linker, mas sim por outro utilitário denominado loader, responsável por
carregar 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 procedimento
de carga varia com o código gerado pelo linker e, em função deste, o loader é classificado como sendo do
tipo 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 o
tamanho do módulo para realizar o carregamento. Então, o loader transfere o programa da memória
secundá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 sua
estrutura. 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, o
programa pare nesses pontos;
- especificar que, toda vez que o conteúdo de uma variável for modificado, o programa envie uma mensagem
(watchpoint).




                                                                                                           10
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 o
Sistema Operacional. Esta linguagem é oferecida por cada Sistema Operacional para que, através de
comandos 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 interpretador
de comandos ou Shell. O interpretador reconhece a linha de comando, verifica sua sintaxe, envia mensagens
de 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 possui
um conjunto único de instruções de máquina, definido pelo próprio fabricante. As instruções especificam
detalhes, como registradores, modos de endereçamento e tipos de dados, que caracterizam um processador e
suas potencialidades.
Um programa em linguagem de máquina é totalmente codificado em formato binário, o que torna o
entendimento confuso para o usuário. Essa linguagem é muito mais voltada para a máquina do que para o
usuá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 qualquer
tipo de tradução ou relocação. Quando escrito em linguagem de máquina de um computador, um programa
não pode ser executado em outra máquina de modelo diferente. Isso porque o conjunto de instruções de uma
máquina é característica específica de cada processador.




                                                                                                       11

Contenu connexe

Tendances

fundamentos de sistema operacional- S.O
fundamentos de sistema operacional- S.Ofundamentos de sistema operacional- S.O
fundamentos de sistema operacional- S.OPablo Lopes
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionaisAbnel Junior
 
Revsão sobre sistemas operacionais
Revsão sobre sistemas operacionaisRevsão sobre sistemas operacionais
Revsão sobre sistemas operacionaisRodrigo Rodrigues
 
SO-01 Introdução aos Sistemas Operacionais
SO-01 Introdução aos Sistemas OperacionaisSO-01 Introdução aos Sistemas Operacionais
SO-01 Introdução aos Sistemas OperacionaisEduardo Nicola F. Zagari
 
Tipos de Sistemas Operacionais
Tipos de Sistemas OperacionaisTipos de Sistemas Operacionais
Tipos de Sistemas OperacionaisJesse Teixeira
 
Questoesde fso
Questoesde fsoQuestoesde fso
Questoesde fsopaulocsm
 
Sistemas Operacionais parte 1
Sistemas Operacionais parte 1Sistemas Operacionais parte 1
Sistemas Operacionais parte 1Matheus Brito
 
Questões de Sistemas Operacionais
Questões de Sistemas Operacionais Questões de Sistemas Operacionais
Questões de Sistemas Operacionais Joicy Souza
 
Unix - Sistemas Operacionais
Unix - Sistemas OperacionaisUnix - Sistemas Operacionais
Unix - Sistemas OperacionaisJunior Silva
 
Componentes do Sistema operacional
Componentes do Sistema operacional Componentes do Sistema operacional
Componentes do Sistema operacional Rodrigo Rodrigues
 
Resumo sistemas operacionais
Resumo sistemas operacionaisResumo sistemas operacionais
Resumo sistemas operacionaisDaniel Brandão
 
Sistemas operativos trabalho 10ºano
Sistemas operativos trabalho 10ºanoSistemas operativos trabalho 10ºano
Sistemas operativos trabalho 10ºanoHus Juky
 
Sistemas operacionais aula 01
Sistemas operacionais   aula 01Sistemas operacionais   aula 01
Sistemas operacionais aula 01Professor Douglas
 
A arquitetura básica de um computador
A arquitetura básica de um computadorA arquitetura básica de um computador
A arquitetura básica de um computadorredesinforma
 
Apostila 9 virtualização - nova
Apostila 9   virtualização - novaApostila 9   virtualização - nova
Apostila 9 virtualização - novaPaulo Fonseca
 
Integrando o InduSoft Web Studio com Equipamentos Beckhoff
Integrando o InduSoft Web Studio com Equipamentos BeckhoffIntegrando o InduSoft Web Studio com Equipamentos Beckhoff
Integrando o InduSoft Web Studio com Equipamentos BeckhoffAVEVA
 

Tendances (20)

fundamentos de sistema operacional- S.O
fundamentos de sistema operacional- S.Ofundamentos de sistema operacional- S.O
fundamentos de sistema operacional- S.O
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 
Revsão sobre sistemas operacionais
Revsão sobre sistemas operacionaisRevsão sobre sistemas operacionais
Revsão sobre sistemas operacionais
 
SO-01 Introdução aos Sistemas Operacionais
SO-01 Introdução aos Sistemas OperacionaisSO-01 Introdução aos Sistemas Operacionais
SO-01 Introdução aos Sistemas Operacionais
 
Entrada e saida cap 05 (iii unidade)
Entrada e saida  cap 05 (iii unidade)Entrada e saida  cap 05 (iii unidade)
Entrada e saida cap 05 (iii unidade)
 
Tipos de Sistemas Operacionais
Tipos de Sistemas OperacionaisTipos de Sistemas Operacionais
Tipos de Sistemas Operacionais
 
Questoesde fso
Questoesde fsoQuestoesde fso
Questoesde fso
 
Sistemas Operacionais parte 1
Sistemas Operacionais parte 1Sistemas Operacionais parte 1
Sistemas Operacionais parte 1
 
Questões de Sistemas Operacionais
Questões de Sistemas Operacionais Questões de Sistemas Operacionais
Questões de Sistemas Operacionais
 
Unix - Sistemas Operacionais
Unix - Sistemas OperacionaisUnix - Sistemas Operacionais
Unix - Sistemas Operacionais
 
Componentes do Sistema operacional
Componentes do Sistema operacional Componentes do Sistema operacional
Componentes do Sistema operacional
 
Resumo sistemas operacionais
Resumo sistemas operacionaisResumo sistemas operacionais
Resumo sistemas operacionais
 
Sistemas operativos trabalho 10ºano
Sistemas operativos trabalho 10ºanoSistemas operativos trabalho 10ºano
Sistemas operativos trabalho 10ºano
 
Hadware
HadwareHadware
Hadware
 
Sistemas operacionais aula 01
Sistemas operacionais   aula 01Sistemas operacionais   aula 01
Sistemas operacionais aula 01
 
SO-10 Entrada e Saída: Software
SO-10 Entrada e Saída: SoftwareSO-10 Entrada e Saída: Software
SO-10 Entrada e Saída: Software
 
A arquitetura básica de um computador
A arquitetura básica de um computadorA arquitetura básica de um computador
A arquitetura básica de um computador
 
Apostila 9 virtualização - nova
Apostila 9   virtualização - novaApostila 9   virtualização - nova
Apostila 9 virtualização - nova
 
Integrando o InduSoft Web Studio com Equipamentos Beckhoff
Integrando o InduSoft Web Studio com Equipamentos BeckhoffIntegrando o InduSoft Web Studio com Equipamentos Beckhoff
Integrando o InduSoft Web Studio com Equipamentos Beckhoff
 

En vedette

Historia dos sistemas operacionais
Historia dos sistemas operacionaisHistoria dos sistemas operacionais
Historia dos sistemas operacionaisDw Dicas
 
Sistemas Operacionais
Sistemas OperacionaisSistemas Operacionais
Sistemas OperacionaisEmanoel Lopes
 
Apostila sistema operacional cor capa ficha 2011 02 04
Apostila sistema operacional cor capa ficha 2011 02 04Apostila sistema operacional cor capa ficha 2011 02 04
Apostila sistema operacional cor capa ficha 2011 02 04MatheusRpz
 
Introducao a Sistemas Operacionais
Introducao a Sistemas OperacionaisIntroducao a Sistemas Operacionais
Introducao a Sistemas OperacionaisIsaac Vieira
 
História dos Sistemas Operacionais
História dos Sistemas OperacionaisHistória dos Sistemas Operacionais
História dos Sistemas OperacionaisSheldon Led
 
História dos Sistemas Operativos
História dos Sistemas OperativosHistória dos Sistemas Operativos
História dos Sistemas OperativosTROLITO LALALAL
 
Tipos de Sistemas Operacionais
Tipos de Sistemas OperacionaisTipos de Sistemas Operacionais
Tipos de Sistemas OperacionaisLuciano Crecente
 

En vedette (7)

Historia dos sistemas operacionais
Historia dos sistemas operacionaisHistoria dos sistemas operacionais
Historia dos sistemas operacionais
 
Sistemas Operacionais
Sistemas OperacionaisSistemas Operacionais
Sistemas Operacionais
 
Apostila sistema operacional cor capa ficha 2011 02 04
Apostila sistema operacional cor capa ficha 2011 02 04Apostila sistema operacional cor capa ficha 2011 02 04
Apostila sistema operacional cor capa ficha 2011 02 04
 
Introducao a Sistemas Operacionais
Introducao a Sistemas OperacionaisIntroducao a Sistemas Operacionais
Introducao a Sistemas Operacionais
 
História dos Sistemas Operacionais
História dos Sistemas OperacionaisHistória dos Sistemas Operacionais
História dos Sistemas Operacionais
 
História dos Sistemas Operativos
História dos Sistemas OperativosHistória dos Sistemas Operativos
História dos Sistemas Operativos
 
Tipos de Sistemas Operacionais
Tipos de Sistemas OperacionaisTipos de Sistemas Operacionais
Tipos de Sistemas Operacionais
 

Similaire à Capitulo1

[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais
[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais
[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionaisSuperTec1
 
Sistemas Operacionais - Aula 02 (Visão geral de sistemas operacionais)
Sistemas Operacionais - Aula 02 (Visão geral de sistemas operacionais)Sistemas Operacionais - Aula 02 (Visão geral de sistemas operacionais)
Sistemas Operacionais - Aula 02 (Visão geral de sistemas operacionais)Leinylson Fontinele
 
sistemas operativos.ppt
sistemas operativos.pptsistemas operativos.ppt
sistemas operativos.pptssuserb52d9e
 
Apostila de sistemas operacionais emi mario gurgel
Apostila de sistemas operacionais emi mario gurgelApostila de sistemas operacionais emi mario gurgel
Apostila de sistemas operacionais emi mario gurgelPablo Mariano
 
Apostila de sistemas operacionais emi mario gurgel
Apostila de sistemas operacionais emi mario gurgelApostila de sistemas operacionais emi mario gurgel
Apostila de sistemas operacionais emi mario gurgelPablo Mariano
 
Apostila de sistemas operacionais emi mario gurgel
Apostila de sistemas operacionais emi mario gurgelApostila de sistemas operacionais emi mario gurgel
Apostila de sistemas operacionais emi mario gurgelPablo Mariano
 
M1_Sistemas Operativos.pptx
M1_Sistemas Operativos.pptxM1_Sistemas Operativos.pptx
M1_Sistemas Operativos.pptxDoraestevao
 
Aula 01 - Introducao aos Sistemas Operacionais.pptx
Aula 01 - Introducao aos Sistemas Operacionais.pptxAula 01 - Introducao aos Sistemas Operacionais.pptx
Aula 01 - Introducao aos Sistemas Operacionais.pptxAlexandredePaula28
 
Sistemas operacionais introdução
Sistemas operacionais introduçãoSistemas operacionais introdução
Sistemas operacionais introduçãoCarlos Melo
 
Infraestrutura de Software - Introdução
Infraestrutura de Software - IntroduçãoInfraestrutura de Software - Introdução
Infraestrutura de Software - IntroduçãoRodrigo Rodrigues
 
Silberschatz sistemas operacionais
Silberschatz   sistemas operacionaisSilberschatz   sistemas operacionais
Silberschatz sistemas operacionaisDeryk Sedlak
 
resumo-conceitos-de-sistemas-operacionais.pdf
resumo-conceitos-de-sistemas-operacionais.pdfresumo-conceitos-de-sistemas-operacionais.pdf
resumo-conceitos-de-sistemas-operacionais.pdfRafaelPilan1
 
Aula - SISTEMAS OPERACIONAIS - Prof. Gabriel.pptx
Aula - SISTEMAS OPERACIONAIS - Prof. Gabriel.pptxAula - SISTEMAS OPERACIONAIS - Prof. Gabriel.pptx
Aula - SISTEMAS OPERACIONAIS - Prof. Gabriel.pptxgabrieloliveiramarti3
 
Introdução aos Sistemas Operacionais
Introdução aos Sistemas OperacionaisIntrodução aos Sistemas Operacionais
Introdução aos Sistemas OperacionaisRodrigoMalara1
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionaisvini_campos
 

Similaire à Capitulo1 (20)

[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais
[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais
[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais
 
Sistemas Operacionais - Aula 02 (Visão geral de sistemas operacionais)
Sistemas Operacionais - Aula 02 (Visão geral de sistemas operacionais)Sistemas Operacionais - Aula 02 (Visão geral de sistemas operacionais)
Sistemas Operacionais - Aula 02 (Visão geral de sistemas operacionais)
 
sistemas_operacionais.ppt
sistemas_operacionais.pptsistemas_operacionais.ppt
sistemas_operacionais.ppt
 
sistemas operativos.ppt
sistemas operativos.pptsistemas operativos.ppt
sistemas operativos.ppt
 
Apostila de sistemas operacionais emi mario gurgel
Apostila de sistemas operacionais emi mario gurgelApostila de sistemas operacionais emi mario gurgel
Apostila de sistemas operacionais emi mario gurgel
 
Apostila de sistemas operacionais emi mario gurgel
Apostila de sistemas operacionais emi mario gurgelApostila de sistemas operacionais emi mario gurgel
Apostila de sistemas operacionais emi mario gurgel
 
Apostila de sistemas operacionais emi mario gurgel
Apostila de sistemas operacionais emi mario gurgelApostila de sistemas operacionais emi mario gurgel
Apostila de sistemas operacionais emi mario gurgel
 
M1_Sistemas Operativos.pptx
M1_Sistemas Operativos.pptxM1_Sistemas Operativos.pptx
M1_Sistemas Operativos.pptx
 
Apostila SO
Apostila SOApostila SO
Apostila SO
 
Aula 01 - Introducao aos Sistemas Operacionais.pptx
Aula 01 - Introducao aos Sistemas Operacionais.pptxAula 01 - Introducao aos Sistemas Operacionais.pptx
Aula 01 - Introducao aos Sistemas Operacionais.pptx
 
Sistemas operacionais introdução
Sistemas operacionais introduçãoSistemas operacionais introdução
Sistemas operacionais introdução
 
S.o aula 5678
S.o aula 5678S.o aula 5678
S.o aula 5678
 
Infraestrutura de Software - Introdução
Infraestrutura de Software - IntroduçãoInfraestrutura de Software - Introdução
Infraestrutura de Software - Introdução
 
Silberschatz sistemas operacionais
Silberschatz   sistemas operacionaisSilberschatz   sistemas operacionais
Silberschatz sistemas operacionais
 
resumo-conceitos-de-sistemas-operacionais.pdf
resumo-conceitos-de-sistemas-operacionais.pdfresumo-conceitos-de-sistemas-operacionais.pdf
resumo-conceitos-de-sistemas-operacionais.pdf
 
Aula - SISTEMAS OPERACIONAIS - Prof. Gabriel.pptx
Aula - SISTEMAS OPERACIONAIS - Prof. Gabriel.pptxAula - SISTEMAS OPERACIONAIS - Prof. Gabriel.pptx
Aula - SISTEMAS OPERACIONAIS - Prof. Gabriel.pptx
 
gabarito.pdf
gabarito.pdfgabarito.pdf
gabarito.pdf
 
Introdução aos Sistemas Operacionais
Introdução aos Sistemas OperacionaisIntrodução aos Sistemas Operacionais
Introdução aos Sistemas Operacionais
 
Aula 1
Aula 1Aula 1
Aula 1
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 

Capitulo1

  • 1. ÍNDICE 1 - HISTÓRIA E FUNÇÕES DOS SISTEMAS OPERACIONAIS 1 1.1 – O QUE É UM SISTEMA OPERACIONAL? 1 1.2 – CARACTERÍSTICAS PRINCIPAIS. 1 1.3 – CLASSIFICAÇÃO. 2 1.3.1 - QUANTO AO TIPO DE SERVIÇOS OFERECIDOS AO USUÁRIO 2 1.3.2 - QUANTO AO NÚMERO DE USUÁRIOS 2 1.3.3 - QUANTO AO TIPO DE INTERAÇÃO 2 1.3.4 - QUANTO A APLICAÇÃO 2 1.4 – HISTÓRIA DOS SISTEMAS OPERACIONAIS. 3 1.4.1 - (DÉCADA DE 40): 3 1.4.2 - 1ª GERAÇÃO (DÉCADA DE 50): 3 1.4.3 - 2ª GERAÇÃO (INÍCIO DA DÉCADA DE 60): 4 1.4.4 - 3ª GERAÇÃO (MEIO DE 1960 ATÉ MEIO DE 1970): 4 1.4.5 - 4ª GERAÇÃO (MEIO DE 1970 ATÉ 1990): 4 1.4.6 - 5ª GERAÇÃO (1990 EM DIANTE): 5 1.5 – CONCEITOS DE HARDWARE E SOFTWARE. 5 1.5.1 - HARDWARE: 5 1.5.1.1 - Unidade Central de Processamento (UCP): 5 1.5.1.2 - Clock: 6 1.5.1.3 - Registradores: 6 1.5.1.4 - Memória principal: 6 1.5.1.5 - Memória cache: 6 1.5.1.6 - Memória Secundária: 7 1.5.1.7 – Dispositivos de entrada e saída: 7 1.5.1.8 – Barramento: 7 1.5.1.9 - Pipelining: 7 1.5.1.10 – Ativação/Desativação do sistema: 8 1.5.2 - SOFTWARE: 8 1.5.2.1 – Tradutor: 8 1.5.2.2 – Interpretador: 9 1.5.2.3 – Linker (Ligador): 9 1.5.2.4 – Loader (Carregador): 10 1.5.2.5 – Depurador (debugger): 10 1.5.2.6 – Linguagem de Controle: 11 1.5.2.7 – Linguagem de Máquina: 11
  • 2. 1 - História e Funções dos Sistemas Operacionais 1.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 em parceria com o software é capaz de armazenar, recuperar, tratar, transportar dados, bem como, encontrar erros 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 os recursos do computador e que propicia a base sobre a qual os programas de aplicação (também chamado de Aplicativos) são escritos. Em poucas palavras, pode-se dizer que um Sistema Operacional é um conjunto de programas que gerenciam 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 pelo processador e dados estão sendo manipulados na memória principal e ou secundária. Mas, "quem coloca o programa para que ele seja executado? Quem fornece a memória necessária ao programa? Quando ele precisa 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 a todos os recursos que ele pretende utilizar. Para colocar o programa para executar seria necessário desenvolver as rotinas apropriadas para que o programa fosse carregado na memória e executado. O acesso a uma impressora, por exemplo, deveria ser programado pelo usuário, e assim por diante. Agora imagine que o usuário desejasse executar outros programas simultaneamente, como ele coordenaria a execução desses programas? Mas para resolver esses e outros problemas existem os sistemas operacionais. Portanto, basicamente o Sistema 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. - 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. 1.4 – História dos Sistemas Operacionais. Tal como nas arquiteturas de hardware, os sistemas operacionais também passam por um processo evolutivo classificado 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 as instruções eram introduzidas manualmente uma a uma em linguagem de máquina (nas primeiras máquinas, a introdução das instruções era por meio de chaveamento de circuitos através de cabos, como nas mesas telefô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 a mudanç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 a serem executados. Antes de terem surgido, muito tempo era gasto entre o término de um job e o início de outro. 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 era retornado 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 o programador dos aspectos físicos da máquina. Dentre as funções incorporadas por esses sistemas podemos citar: - Montador (assembler): cuja função era traduzir linguagem assembly para linguagem de máquina em código absoluto (código executável). - Execução Automática de um job: através de carregamento do endereço absoluto da primeira instrução do contador 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 dois jobs, 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 de unidades 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 visando separar essas funções uma vez que as máquinas eram muito caras. Dessas alternativas surgiu o Monitor de Lotes: Pequenos computadores satélites eram utilizados apenas com funções de preparação de lotes e seu armazenamento 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ós um término anormal. - JCL mais flexível. As máquinas dessa geração (2ª geração de hardware) tinham circuitos transistorizados e as mais conhecidas eram: - IAS: já mencionado. 3
  • 5. - ATLAS: pela universidade de Mancheste (Ingl.) introduziu memória de núcleo de ferrite, memória virtual e registradores de dados de uso geral. - IBM 701: pela IBM em 1956/1962, usava memória principal de tubos de raios catódicos e memória secundá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 com multiprocessamento. As máquinas dessa época (2ª geração) usavam circuitos integrados em pequena e média escala e memória de estado sólido. Apareceram as primeiras propostas independentes de dispositivos de E/S e os primeiros sistemas interativos ou 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ória virtual, Sistema Operacional em linguagem de alto nível e debugger em linguagem fonte. (Para o Burroughs 5000). - 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-se pelo surgimento dos sistemas de propósito geral e dos sistemas multímodo. Alguns suportando ao mesmo tempo 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ções foi 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 de computadores, supercomputadores, e dos computadores pessoais ou microcomputadores. Também pela interligação de microcomputadores ligados a um MAIN-FRAME, comportando-se como um terminal inteligente 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écnica de proteção da informação através do emprego de um código diferente do normalmente utilizado para sua representaçã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 de dados distribuídos. 4
  • 6. As grandes máquinas foram equipadas com capacidade de emulação, oferecendo aos usuários os sistemas de má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 num ní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 de desktop, acrescidos de características antes só encontradas em Sistemas Operacionais de máquinas de grande porte. 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 por linguagens 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 tecnologias como, 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 de conhecimentos, 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 por processadores, memórias, terminais, impressoras, e outros dispositivos físicos, aos quais chamamos de hardware. 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 central de processamento, memória principal e dispositivos de entrada/saída. Estes subsistemas também são chamados 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ções de cada unidade funcional. A UCP também é responsável pela execução de todos os programas do sistema e tais programas deverão estar armazenados na memória principal e são compostos por uma série de instruções que são executadas seqüencialmente pela UCP, através de operações básicas de somar, subtrair, comparar e movimentar 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 da emissão de pulsos elétricos, também chamados de sinais de controle, gerados por um dispositivo chamado Clock. A ULA é responsável pela execução de operações de lógica (AND, OR,etc.) e de aritmética (somas e subtrações). 5
  • 7. 1.5.1.2 - Clock: É dispositivo, localizado na UCP, que gera pulsos elétricos síncronos em um determinado intervalo de tempo. A quantidade de vezes que este pulso se repete em um segundo define a freqüência do clock. O sinal do 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 de tempo. E também é a unidade de desempenho da UCP, isto é quanto mais vezes os pulsos do clock se repetem, 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 é, o objetivo final de cada uma das memórias é armazenar informações destinadas a serem, em algum momento utilizadas pela UCP. As ações operativas da UCP são realizadas na ULA, como já foi dito. Entretanto, antes que as instruções sejam interpretadas e as unidades da UCP sejam acionadas, o processador necessita buscar as instruções onde elas estiverem armazenadas (memória cache ou principal) e armazená-la em seu próprio interior, 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 da memória (cache, principal ou mesmo da memória secundária) para serem manipulados pela ULA. Esses dados também necessitam ser armazenados em algum local do processador até serem efetivamente utilizados. Os resultados de um processamento também precisam (às vezes) ser armazenados temporariamente na UCP, ou para serem novamente manipulados pela ULA por uma outra instrução, ou para serem 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 armazenados instruções e dados. É composta por unidades de acesso chamada célula, sendo cada célula composta por um determinado número de bits. Podemos concluir que a memória é formada por um conjunto de células, onde cada 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 o endereç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 da memória (REM). Através do conteúdo deste registrador, a unidade de controle sabe qual a célula de memória que será acessada. Outro registrador usado em operações com a memória é o registrador de dados da memória (RDM). Este é utilizado para guardar o conteúdo de uma ou mais células de memória, após uma operação de leitura, ou para guardar o dado que será transferido para a memória em uma operação de gravação. A memória principal pode ser classificada em função de sua volatilidade, que é a capacidade de a memória preservar o seu conteúdo mesmo sem uma fonte de alimentação elétrica. As memórias chamadas voláteis se caracterizam por poderem ser lidas ou gravadas, como o tipo RAM (random acess memory), que constitui quase 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 (erasable programnmable 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ção de instruções a UCP acessava diretamente a memória principal pelo menos uma vez para buscá-las e transferi-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, fica evidente que a duração da execução de um ciclo de instrução é bastante afetada pela demora dos ciclos de memória. 6
  • 8. Na tentativa de melhorar o desempenho dos computadores, os projetistas de UCPs vêm obtendo constantemente velocidades cada vez maiores na operação dessas unidades, o que não acontece na mesma proporção com a memória principal. Assim atualmente a diferença de velocidade entre a UCP e a memória principal é muito grande. Na busca pela minimização dessa diferença foi desenvolvida uma técnica que consiste na inclusão de um dispositivo entre a UCP e a memória principal, denominado memória cache, cuja função é acelerar a velocidade de transferência entre esses dois dispositivos, e com isso melhorar o desempenho dos computadores. Para isso, a memória cache é fabricada com tecnologia semelhante àquela empregada na UCP, e conseqüentemente apresenta tempos de acesso compatíveis, resultando numa considerável redução da espera da 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 tipos anteriormente descritos, menor custo por "byte" armazenado e tempo de acesso superior. Conhecida como memória secundária ou memória auxiliar, ou ainda memória de massa, tem por objetivo garantir um armazenamento mais permanente aos programas e estruturas de dados, razão pela qual deve possuir maior capacidade de armazenamento que a memória principal. A memória secundária de um computador pode ser constituída por diferentes tipos de dispositivos, alguns diretamente 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 desses dispositivos, a UCP e a memória principal podem se comunicar, tanto com usuários quanto memórias secundá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 como memó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 por armazenar de três a quatro vezes mais informações que a memória principal. Seu custo é relativamente baixo, porém o tempo de acesso à memória secundária é quatro a seis vezes maior que o acesso à memória principal. 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 de comunicação denominadas barramentos, barras ou vias. Um barramento (bus) é um conjunto de fios paralelos (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ão em ambos os sentidos). Na ligação entre UCP e memória principal, podemos observar que três barramentos são necessários para que a comunicação seja realizada. O barramento de dados transmite informações entre a memória principal e a UCP. O barramento de endereços é utilizado pela UCP para especificar o endereço da célula de memória que será acessada. Finalmente, o barramento de controle é por onde a UCP envia os pulsos de controle relativo à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. Da mesma forma que em uma linha de montagem, a execução de uma instrução pode ser dividida em subtarefas, 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 busca simultaneamente. 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 dos recursos do sistema não estaria disponível, ou se apresentaria de uma forma complexa para utilização pelos usuários. Toda vez que um computador é ligado, é necessário que o Sistema Operacional seja carregado da memória secundária para a memória principal. Esse processo, denominado ativação do sistema (boot), é realizado por um programa localizado em uma posição específica do disco (boot block), geralmente o primeiro bloco. O procedimento de ativação varia em função do equipamento, podendo ser realizado através do teclado, de um terminal 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 de inicialização. Nestes arquivos são especificados procedimentos de inicialização e configuração de hardware e software específicos para cada ambiente. Na maioria dos sistemas, também existe o processo de desativação (shutdown). Este procedimento permite que as aplicações e componentes do sistema sejam desativados de forma ordenada, garantindo a integridade do 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 de software adequado às diversas tarefas e aplicações torna o trabalho do usuário muito mais simples e eficiente. 1.5.2.1 - Tradutor: Nos sistemas operacionais antigos, o ato de programar era bastante complicado, já que o programador deveria possuir conhecimento de hardware e programar em painéis através de fios. Esses 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 das linguagens de alto nível, o programador deixou de se preocupar com muitos aspectos pertinentes ao hardware, como em qual região da memória principal o programa deveria ser carregado ou quais endereços de memória principal seriam reservados para as variáveis. A utilização dessas linguagens facilitou a construção de programas em muitos aspectos. Desse modo, um programa poderia ser escrito de uma forma bem documentada e com facilidades para realizar alterações. Apesar das inúmeras vantagens proporcionadas pelas linguagens de montagens e alto nível, os programas escritos 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, na maioria 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-rotinas chamadas. Esta função é realizada por um utilitário denominado linker e será visto adiante. 8
  • 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 linguagem de máquina do processador. Apesar das facilidades, como instruções simbólicas e possibilidade de documentação, a programação em linguagem, de montagem está diretamente ligada às características da arquitetura do processador. Em função disto, este tipo de linguagem é diferente para cada computador, pois a linguagem 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 uma linguagem 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ção exclusivamente com o compilador.os programadores de alto nível devem se preocupar apenas com o desenvolvimento de suas aplicações, não tendo que se envolver com detalhes sobre a arquitetura do processador. Assim, os programas-fonte podem ser transportados entre computadores de diversos fabricantes, desde que existam regras de definição para a linguagem. Isso permite o desenvolvimento de aplicaçõ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ção disponível, sob a supervisão do Sistema Operacional. Podemos visualizar, então, o compilador como uma interface entre o Sistema Operacional e o usuário, de maneira que é possível acessar diversos serviços do sistema 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 linguagem de alto nível, o interpretado, no momento da execução do programa, traduz cada instrução e a executa em seguida. A maior desvantagem da utilização de interpretadores é o tempo gasto na tradução das instruções de um programa 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 a execuçã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 e reservar memória para a execução do programa. Módulo-objeto 9 Programa Módulo-objeto Linker executável
  • 11. Fig. 1.2 – Linker. Para resolver todas as referências a símbolos, o linker também pode pesquisar em bibliotecas do sistema ou do próprio usuário. Bibliotecas são arquivos que contém diversos módulos-objeto e/ou definições de símbolos. Outra função importante do linker é determinar uma região de memória na qual o programa será carregado para 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. Todos os endereços simbólicos do programa eram traduzidos para endereços físicos, e o programa executável gerado podia ser carregado a partir de uma posição prefixada na memória (código absoluto). Nesse tipo de relocaçã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 entre diversos programas, e é pouco provável que, no momento em que o sistema carrega um programa, sua área de memória prefixada esteja disponível. A solução para este problema é permitir que o programa seja carregado em regiões diferentes toda vez que for trazido para memória (código relocável). Esse tipo de relocação não é realizado pelo linker, mas sim por outro utilitário denominado loader, responsável por carregar 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 procedimento de carga varia com o código gerado pelo linker e, em função deste, o loader é classificado como sendo do tipo 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 o tamanho do módulo para realizar o carregamento. Então, o loader transfere o programa da memória secundá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 sua estrutura. 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, o programa 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. 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 o Sistema Operacional. Esta linguagem é oferecida por cada Sistema Operacional para que, através de comandos 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 interpretador de comandos ou Shell. O interpretador reconhece a linha de comando, verifica sua sintaxe, envia mensagens de 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 possui um conjunto único de instruções de máquina, definido pelo próprio fabricante. As instruções especificam detalhes, como registradores, modos de endereçamento e tipos de dados, que caracterizam um processador e suas potencialidades. Um programa em linguagem de máquina é totalmente codificado em formato binário, o que torna o entendimento confuso para o usuário. Essa linguagem é muito mais voltada para a máquina do que para o usuá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 qualquer tipo de tradução ou relocação. Quando escrito em linguagem de máquina de um computador, um programa não pode ser executado em outra máquina de modelo diferente. Isso porque o conjunto de instruções de uma máquina é característica específica de cada processador. 11