Universidade do Sul de Santa Catarina - UNISULadao/SO1B.pdf · Muitos sistemas de numeração são...

34
SUMÁRIO SISTEMAS DE NUMERAÇÃO INTRODUÇÃO SISTEMA DECIMAL DE NUMERAÇÃO SISTEMA BINÁRIO DE NUMERAÇÃO SISTEMA HEXADECIMAL DE NUMERAÇÃO COMPUTADOR DIGITAL INTRODUÇÃO HARDWARE Unidade Central de Processamento Memória principal Memória Cache Memória secundária Dispositivos de entrada e saída Barramento Pipelining Ativação do sistema Arquiteturas RISC e CISC SOFTWARE Tradutores (montador, compilador Linker Loader Depurador INTRODUÇÃO A SISTEMAS OPERACIONAIS INTRODUÇÃO MÁQUINA DE NÍVEIS ANEXO: Execução do Programa da Figura 2 pelo computador TIPOS DE SISTEMAS OPERACIONAIS INTRODUÇÃO SISTEMAS MONOPROGRAMÁVEIS/MONOTAREFA SISTEMAS MULTIPROGRAMÁVEIS/MULTITAREFA SISTEMAS COM MÚLTIPLOS PROCESSADORES Sistemas fortemente acoplados Sistemas fracamente acoplados SISTEMAS MULTIPROGRAMÁVEIS INTRODUÇÃO SISTEMAS MONOPROGRAMÁVEIS/MULTIPROGRAMÁVEIS INTERRUPÇÃO E EXCEÇÃO OPERAÇÕES DE ENTRADA/SAÍDA BUFFERING SPOOLING REENTRÂNCIA

Transcript of Universidade do Sul de Santa Catarina - UNISULadao/SO1B.pdf · Muitos sistemas de numeração são...

SUMÁRIOSISTEMAS DE NUMERAÇÃO

• INTRODUÇÃO• SISTEMA DECIMAL DE NUMERAÇÃO• SISTEMA BINÁRIO DE NUMERAÇÃO• SISTEMA HEXADECIMAL DE NUMERAÇÃO

COMPUTADOR DIGITAL• INTRODUÇÃO• HARDWARE

• Unidade Central de Processamento• Memória principal• Memória Cache• Memória secundária• Dispositivos de entrada e saída• Barramento• Pipelining• Ativação do sistema• Arquiteturas RISC e CISC

• SOFTWARE• Tradutores (montador, compilador• Linker• Loader• Depurador

INTRODUÇÃO A SISTEMAS OPERACIONAIS• INTRODUÇÃO• MÁQUINA DE NÍVEIS• ANEXO: Execução do Programa da Figura 2 pelo computador

TIPOS DE SISTEMAS OPERACIONAIS• INTRODUÇÃO• SISTEMAS MONOPROGRAMÁVEIS/MONOTAREFA• SISTEMAS MULTIPROGRAMÁVEIS/MULTITAREFA• SISTEMAS COM MÚLTIPLOS PROCESSADORES

• Sistemas fortemente acoplados• Sistemas fracamente acoplados

SISTEMAS MULTIPROGRAMÁVEIS• INTRODUÇÃO• SISTEMAS MONOPROGRAMÁVEIS/MULTIPROGRAMÁVEIS• INTERRUPÇÃO E EXCEÇÃO• OPERAÇÕES DE ENTRADA/SAÍDA• BUFFERING• SPOOLING• REENTRÂNCIA

Prof. Adão de Melo Neto 1

1. SISTEMAS DE NUMERAÇÃO

1.1 INTRODUÇÃOQuando mencionamos sistemas de numeração estamos nos referindo à utilização de um sistema para representar

uma quantidade.Exemplo: Quando contamos algo ou expressamos algum valor, utilizamos no dia a dia um sistema de numeração,

que é o sistema decimal. Para isto seguimos a organização dos números, pois eles obedecem à uma certa ordem, e uma dasregras é utilizar somente os caracteres 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 combinados, obedecendo à ordenação, para formar dosnúmeros.

Muitos sistemas de numeração são usados sendo os mais comuns o decimal, o binário, o octal e o hexadecimal.

1.2 O SISTEMA DECIMAL DE NUMERAÇÃO

0 Sistema decimal é composto de 10 algarismos ou símbolos. Estes 10 símbolos são 0, 1, 2, 3. 4, 5, 6, 7, 8 e 9.Utilizando estes símbolos como dígitos de um número, podemos expressar qualquer quantidade. 0 Sistema decimal étambém chamado de sistema de base 10 porque possui 10 dígitos e evoluiu naturalmente do fato de que as pessoas terem10 dedos.

0 Sistema decimal é um Sistema de valor posicional, isto é, um sistema no qual o valor do dígito depende de suaposição.

Considere por exemplo o número decimal 27,35. Este número é na verdade igual a 2 X 10 + 7 X 1 + 3 X 0,1 + 5X 0,01. A vírgula decimal é usada para separar a parte inteira da parte fracionária do número.

De modo mais rigoroso, as várias posições possuem pesos que podem ser expressos em potências de 10.Por exemplo, o número 2745,214 é igual a

CONTAGEM DECIMAL

Quando fazemos uma contagem no sistema decimal, começamos com 0 na posição das unidades e vamostomando cada símbolo em progressão até atingirmos 9. Quando isto acontece, adicionamos 1 a posição de maior peso emais próxima e começamos de novo com o 0, na primeira posição. Este processo continua até que a contagern de 99 sejaalcançada. Neste momento, adicionamos 1 a terceira posição começamos de novo com 0 nas duas primeiras posições. Esteprocedimento pode ser seguido continuamente, qualquer que seja o número que desejemos contar.

Prof. Adão de Melo Neto 2

1.3 O SISTEMA BINÁRIO DE NUMERAÇÃO

O sistema de numeração de base 2 é chamado de sistema binário (dois), pois utiliza somente dois dígitos: 0 e 1.O sistema binário é também um sistema de numeração posicional, onde cada dígito binário possui seu próprio

peso expresso como uma potência de 2.

0 número 1011.101 é mostrado na figura. Para encontrar o seu equivalente no sistema decimal, simplesmentefazemos a soma dos produtos de cada dígito (0 ou 1) pelo seu respectivo peso.

Prof. Adão de Melo Neto 3

)

No Sistema binário o termo dígito binário é geralmente abreviado para bit ( binary digit), que usaremos daqui pordiante.

CONTAGEM BINÁRIAA seqüência começa com todos bits em 0; é a chamada contagem zero. Para cada contagem sucessiva, a posição

referente as unidades (20) troca o seu valor binário pelo outro (comuta). Cada vez que o bit das unidades trocar de 1 para0, a posição de peso dois (21) vai comutar (trocar de estado). Cada vez que o bit de posição de peso dois mudar de 1 para0, o bit da posição ao de peso quatro (24) vai comutar (mudar de estado). Do mesmo modo, cada vez que o bit de posiçãode peso quatro mudar de 1 para 0, o bit da posição de peso oito (28) vai comutar (mudar de estado). Este processocontinuaria para os bits de mais alta ordem, se o número binário tivesse mais do que quatro bits.

Prof. Adão de Melo Neto 4

ByteUm byte é um grupo de oito bits.Exemplos:

1 Byte ==> 011110012 Bytes ==> 0111100111100013 bytes ==> 01111001111000111110000

CIRCUITOS DIGITAIS E CIRCUITOS LÓGICOSCircuitos digitais são projetados para produzir tensões de saída que estejam dentro dos intervalos determinados

pelos binários 0 e 1

Cada tipo de circuito obedece a um determinado conjunto de regras lógicas. Por esta razão, os circuitos digitaissão também chamados de circuitos lógicos.

CONVERSÃO BINÁRIO-DECIMAL

Qualquer número binário pode ser convertido em seu equivalente decimal simplesmente somando-se os pesos dasvárias posições que contiverem 1 no número binário.

Exemplo 1

Exemplo 2

Prof. Adão de Melo Neto 5

CONVERSÃO DECIMAL-BINÁRIO

Utiliza-se o método das divisões sucessivas: divide-se sucessivamente o número decimal por 2 até resultar em umnúmero igual 0. Os restos destas divisões formarão o número binário.

1.4 O SISTEMA HEXADECIMAL DE NUMERAÇÃO

O sistema hexadecimal de numeração usa a base 16, ou seja, ele tem 16 símbolos possíveis. Ele usa os dígitos de0 à 9 do sistema decimal sendo os números de 10 à 15 representado pelos caracteres A, B, C, D, E, F.

Note que cada dígito em hexadecimal representa um grupo de 4 dígitos binários. A tabela abaixo mostra asrelação entre hexadecimal, decimal e binário.

Prof. Adão de Melo Neto 6

Conversão Hexadecimal-Decimal

Pode ser realizada considerando que cada posição do dígito hexadecimal representa um peso que é potência de16

Exemplos:

Note que no segundo exemplo o valor 10 substituiu o A e o valor 15 o F na conversão para decimal.

Conversão Decimal-Hexadecimal

Utiliza-se o método das divisões sucessivas: divide-se sucessivamente o número decimal por 16 até resultar emum número igual 0. Os restos destas divisões formarão o número hexadecimal.

Exemplo

Note que qualquer resto maior que 9 é representado pelas letras de A até F.

1.5 Conversão Hexadecimal-Binário

O sistema hexadecimal é usado como um método compacto para representação de números binários.Nesta conversão, cada dígito hexadecimal é convertido para o seu equivalente de quatro bits (ver tabela anterior)

Prof. Adão de Melo Neto 7

Exemplo:

Conversão Binário-Hexadecimal

É apenas o inverso do processo anterior. O número binário é reunido em grupos de 4 bits, e cada grupo éconvertido para o seu equivalente hexadecimal. Zeros são adicionados, se necessário, para compactar um grupo de 4 bits.

Contagem em HexadecimalO maior dígito hexadecimal é F, portanto na contagem em hexadecimal cada posição de dígito é incrementada de

0 a F. Uma vez alcançado o F ele retorna para 0 na próxima contagem causando o incremento da próxima posição dedígito mais alta. Isto é ilustrado nas seqüências de contagem abaixo:

Note que quando existe um 9 numa posição de dígito, ele se torna A quando incrementado.

Prof. Adão de Melo Neto 8

2. Computador Digital

2.1 IntroduçãoO objetivo deste capítulo é apresentar os conceitos básicos de hardware e software relativos à arquitetura de

computadores necessários a compreensão dos demais capítulos.

2.2 HardwareUm computador digital (figura 1) é constituído por um conjunto de componentes interligados, composto por

processadores, memórias, registradores, barramentos, monitores de vídeo, impressoras, mouse, além de outros dispositivosfísicos (hardware). Esses dispositivos manipulam dados na forma digital (bits 0 e 1), o que proporciona uma maneiraconfiável de representação.

Todos os componentes de um computador são agrupados em três subsistemas básicos: unidade central deprocessamento (CPU), memória principal, e dispositivos de entrada e saída (Figura 1).

Unidade Central de Processamento/Processador

A unidade central de processamento (CPU), ou processador, tem como função principal unificar todo o sistema,controlando as funções realizadas por cada unidade funcional. A CPU também é responsável pela execução de todos osprogramas do sistema, que obrigatoriamente deverão estar armazenados na memória principal.

Um programa em linguagem de máquina, armazenado na memória principal do computador, é composto poruma série de instruções que são executadas seqüencialmente pela CPU, através de operações básicas como somar, subtrair,comparar e movimentar dados. Desta forma, a CPU busca cada instrução na memória principal e a interpreta para suaexecução.

Figura 1 - Unidades funcionais de um computador

Um programa em linguagem de máquina (figura 2) é executado a partir do conjunto de instruções da CPU(figura 3). Particularmente, o programa da figura 2 executa a seguinte operação:

Prof. Adão de Melo Neto 9

Para verificar como o computador executa o programa descrito na Figura 2, consulte o anexo.

Figura 2 - Programa em linguagem de máquina

Prof. Adão de Melo Neto 10

Figura 3 – Conjunto de instruções do Processador

A CPU é composta pela unidade de controle, unidade lógica aritmética e registradores.

A Unidade de controle (UC) é responsável por controlar as atividades de todos os componentes do computador,como a gravação de um dado no disco ou a busca de uma instrução da memória.

A unidade lógica e aritmética (ULA), é responsável pela realização de operações lógicas (testes e comparações)e aritméticas (somas e subtrações).

Os registradores são dispositivos de alta velocidade, localizados fisicamente na CPU, para armazenamentotemporário de dados. Funcionam como uma memória interna de alta velocidade do processador Alguns registradores sãode uso específico e têm propósitos especiais, enquanto outros são ditos de uso geral.

- Contador de instruções (CI) ou program counter (PC) é o registrador responsável pelo armazenamentodo endereço da próxima instrução que a CPU deverá executar. Toda vez que a CPU execute uma instrução, oPC é atualizado com um novo endereço;

- Apontador da pilha (AP) ou stack pointer (SP) é o registrador que contém o endereço de memória do topoda pilha, que é a estrutura de dados onde o sistema mantém informações sobre tarefas que estavam sendoprocessadas e tiveram que ser interrompidas por algum motivo (Figura 4);

- Registrador de estado, também chamado em alguns equipamentos de program status word (PSW), é oregistrador responsável por armazenar informações sobre a execução de intruções, como a ocorrência decarry e overflow. A cada instrução executada, o registrador de estado e alterado conforme o resultado geradopela instrução.

Prof. Adão de Melo Neto 11

Figura 4 – Endereço apontado pelo PC (Program Counter)

Memória PrincipalA memória principal é a parte do computador onde são armazenados instruções e dados. Ela é composta por

unidades de acesso chamadas células, sendo cada célula composta por um determinado número de bits (binary digit). O bité a unidade básica de memória, podendo assumir o valor 0 ou 1. Atualmente, a grande maioria dos computadores utiliza obyte (8 bits) como tamanho de célula, porém encontramos computadores de gerações passadas com células de 16, 32 e atémesmo 60 bits. Podemos concluir, então, que a memória, e formada por um conjunto de células, onde cada célula possuium determinado número de bits (Figura 5).

0

1

2

M - 1

Célula = n bits

Endereços

Figura 5 - Memória principal

O acesso ao conteúdo de uma célula é realizado através da especificação de um número chamado endereço. Oendereço é uma referência única, que podemos fazer a uma célula de memória. Quando um programa deseja ler ouescrever um dado em uma célula, deve primeiro especificar qual o endereço de memória desejado, para depois realizar aoperação.

A especificação do endereço é realizada através de um registrador denominado registrador de endereço dememória (memory register address - MAR) através do conteúdo deste registrador, a unidade de controle sabe qual a célulade memória que será acessada. Outro registrador usado em operações com a memória é o registrador de dados da memória

Prof. Adão de Melo Neto 12

(memory buffer register—MBR) . Este registrador e utilizado para guardar o conteúdo de uma ou mais células de memóriaapó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.Este ciclo de leitura e gravação e mostrado na Figura 6.

Operação de Leitura Operação de gravação1. A CPU armazena no MAR, o endereço da célula aser lida.2. A CPU gera um sinal de controle para a memóriaprincipal, indicando que uma operação de leituradeve ser realizada.3. 0 conteúdo da(s) célula(s), identificada(s) peloendereço contido no MAR, é transferido para oMBR.

1. A CPU armazena no MAR, o endereço dacélula que será gravada.2. A CPU armazena no MBR, a informaçãoque deverá ser gravada.3. A CPU gera um sinal de controle para amemória principal, indicando que umaoperação de gravação deve ser realizada.4. A informação contida no MBR e transferidapara a célula de memória endereçada peloMAR.

Figura 6 - Ciclo de leitura e gravação

A capacidade de uma memória é limitada pelo tamanho do MAR. No caso de o registrador possuir n bits, amemória principal poderá no máximo endereçar 2n células, isto é , do endereço 0 ao 2n-1.

A memória principal pode ser classificada em função de sua volatilidade. Uma memória volátil não preserva seuconteúdo sem uma fonte de alimentação.

A RAM (random access memory), que constitui quase que a totalidade da memória principal de um computador éuma memória volátil que pode ser lida e gravada.

A memória ROM (read-only memory), já vem pré-gravado do fabricante, geralmente com algum programa, e seuconteúdo é preservado mesmo quando a alimentação e desligada (não volátil).

Memória CacheA MEMÓRIA cache é uma memória volátil de alta velocidade. O tempo de acesso a um dado nela contido é

muito menor que se o mesmo estivesse na memória principal.Toda vez que o processador fez referência a um dado armazenado na memória principal, ele "olha" antes na

memória cache. Se o processador encontrar o dado na cache, não ha necessidade do acesso a memória principal; docontrário, o acesso e obrigatório Neste último caso, o processador, a partir do dado referenciado, transfere um bloco dedados para a cache (Figura 7). O tempo de transferência entre as memórias e pequeno, se comparado com o aumento dodesempenho obtido com a utilização, ao desse tipo de memória.

Apesar de ser uma memória de acesso rápido, seu uso é limitado em função do alto custo.

Figura 7 – Memória Cache

Prof. Adão de Melo Neto 13

Memória SecundáriaA memória secundária é um meio permanente (não volátil) de armazenamento de programas e dados. Enquanto a

memória principal precisa estar sempre energizada para manter suas informações, a memória secundária não precisa dealimentação.

O acesso a memória secundária é lento, se comparado com o acesso a memória cache ou à principal, porém seucusto e baixo e sua capacidade de armazenamento é bem superior a da memória principal. Podemos citar, como exemplosde memórias secundárias, a fita magnética, o disco magnético e o disco óptico (Figura 9).

A Figura 8 mostra a relação entre os diversos tipos de dispositivos de armazenamento apresentados, comparandocusto, velocidade de acesso e capacidade de armazenamento.

Registradores

Memória Cache

Memória Principal

Memória Secundária

Maior Custo eMaior Velocidadede Acesso

Maior Capacidadede armazenamento

Figura 8 - Relação entre os diversos tipos de dispositivos de armazenamento.

Figura 9 - Disco ótico, disco magnético e fita magnética

Dispositivos de Entrada e SaídaOs dispositivos de entrada e saída (E/S) são utilizados para permitir a comunicação entre o computador e o

mundo externo.Os dispositivos de E/S 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 e relativamente baixo, porém otempo de acesso a memória secundária é de quatro a seis vezes maior que o acesso a memória principal.

Alguns dispositivos servem para a comunicação, ao homem-máquina, como teclados, monitores de vídeo,impressoras, plotters, entre outros. Com o avanço no desenvolvimento de aplicações de uso cada vez mais geral, procura-se aumentar a facilidade de comunicação entre o usuário e o computador. A implementação, de interfaces mais amigáveispermite, cada vez mais, que pessoas sem conhecimento específico sobre informática possam utilizar o computador.Scanner, caneta ótica, mouse, dispositivos sensíveis a voz humana e ao calor do corpo humano são alguns exemplosdesses tipos de dispositivos.

Prof. Adão de Melo Neto 14

BarramentoA CPU, a memória principal e os dispositivos de E/S são interligados através de linhas de comunicação

denominada barramento. Um barramento (bus) é um conjunto de fios paralelos (linhas de transmissão), onde trafegaminformações, como dados, endereços ou sinais de controle. Ele pode ser classificado como unidirecional (transmissão emum só sentido) ou bidirecional (transmissão em ambos os sentidos).

Na ligação entre CPU e memória principal, podemos observar que três barramentos são necessários para que acomunicação seja realizada (Figura 1). O barramento de dados transmite informações entre a memória principal e aCPU. O barramento de endereços é utilizado pela CPU para especificar o endereço, o da célula de memória que seráacessada. Finalmente , o barramento de controle é por onde a CPU envia os pulsos de controle relativos as operações deleitura e gravação.

PipeliningO pipelining é uma técnica que permite o processador executar múltiplas instruções paralelamente e em diferentes

estágios (Figura 10).O conceito de processamento pipeline se assemelha muito a uma linha de montagem, onde uma tarefa e dividida

em uma seqüência de subtarefas, executadas em diferentes estágios, dentro da linha de produção.Da mesma forma que em uma linha de montagem, a execução de uma instrução pode ser dividida em subtarefas.

O processador, através de suas várias unidades funcionais pipeline, funciona de forma a permitir que, enquanto umainstrução se encontra na fase de execução por exemplo outra possa estar na fase de busca simultaneamente.

Figura 10 – Subtarefas e execução da instrução em pipeline

Ativação do SistemaO 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 programalocalizado em um posição específica do disco (disco block), geralmente o primeiro bloco. O procedimento de ativaçãovaria em função do equipamento, podendo ser realizado através do teclado, de um terminal ou por manipulação de chavesde um painel (Figura 11).

Prof. Adão de Melo Neto 15

Disco MemóriaPrincipal

SistemaOperacional

Boot

Figura 11 - Ativação do sistema

Arquiteturas RISC e CISC

A linguagem de máquina de um computador é a linguagem de programação que o processador realmenteconsegue entender (Figura 2). Cada processador possui um conjunto único de instruções de máquina, definido pelopróprio fabricante. As instruções especificam detalhes, como registradores, modos de endereçamento e tipos de dados, quecaracterizam um processador e suas potencialidades (Figura 3).

Um programa em linguagem de máquina é executado diretamente pelo hardware em processadores de arquiteturaRISC, porém em máquinas CISC isto não acontece. Neste caso, como podemos observar na Figura 15, entre os níveis delinguagem de máquina e o hardware, existem ainda o da microprogramação.

Um processador com arquitetura RISC (Reduced Instruction Set Computer) se caracteriza por possuir poucasinstruções de máquina, em geral bastante simples, que são executadas diretamente pelo hardware. Na sua maioria, estasinstruções não acessam a memória principal, trabalhando principalmente com registradores que, neste tipo de processador,se apresentam em grande número. Estas características, além de ajudarem as instruções serem executadas em altavelocidade. Neste tipo de arquitetura, a implementação do pipeline é fácil. Como exemplos de processadores RISCpodemos citar o Sparc (SUN) e RS-6000 (IBM),

Os processadores CISC (Complex Instruction Set computers) já possuem instruções complexas que sãointerpretadas por microprogramas. O número de registradores é pequeno e qualquer instrução pode referenciar a memóriaprincipal. Neste tipo de arquitetura, a implementação do pipeline é mais difícil. São exemplos de processadores CISC oVAX (DEC) e o Pentium (Intel).

Prof. Adão de Melo Neto 16

2.3 SoftwareO 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 softwares adequados àsdiversas tarefas e aplicações (conceitos de camadas) torna o trabalho do usuários muito mais simples e eficiente.

TradutoresNos sistemas operacionais antigos, o ato de programar era bastante complicado, já que o programador deveria

possuir conhecimento do hardware e programar em painéis através de fios (Figura 14). 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) (Figura 2) e das linguagensde alto nível (por exemplo C, Pascal, etc) , o programador deixou de se preocupar com muitos aspectos pertinentes aohardware, como em qual região da memória o programa deveria ser carregado ou quais endereços de memória seriamreservados 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 vantagens proporcionadas pelas linguagens de montagem e de alto nível, elas não estão prontas paraserem executadas diretamente pelo processador. Para isto elas devem ser convertidas da representação simbólica dasinstruções para o código de máquina (linguagem de máquina).

O módulo gerado pelo tradutor é conhecido como módulo-objeto que apesar de estar em código de máquina,ainda não pode ser executado. Isto ocorre em função de um programa poder chamar rotinas externas, e não tem como otradutor associar o programa principal as sub-rotinas chamadas. Esta função é executada pelo linker.

O montador (assembler) é um utilitário utilizado para traduzir um programa fonte em linguagem de montagem(assembly languages) em um programa-objeto não executável

LINGUAGEM DE MONTAGEM MONTADOR MÓDULO-OBJETO

Um compilador é um utilitário utilizado para gerar a partir de uma linguagem de alto-nível em um programa emlinguagem de máquina não executável.

As Linguagem de alto nível tais como Pascal, Fortran e Cobol O programador não tem relação direta com amáquina, ou seja, programador não preocupa com arquitetura do processador.

LINGUAGEM DE ALTO NÍVEL COMPILADOR MÓDULO-OBJETO

O linker é considerado um Tradutor que não gera módulo-objeto. Durante a execução do programa traduz cadainstrução e a executa imediatamente. São exemplos o Basic e Perl

LinkerO linker gera a partir de um ou mais módulos-objeto um programa executável Suas funções são resolver

referências simbólicas existentes entre os módulos e reservar memória para execução do programa

Prof. Adão de Melo Neto 17

LoaderÉ um utilitário utilizado para carregar na memória principal um programa a ser executado

DepuradorO desenvolvimento de programas está sujeito a erros de lógica, independentemente de metodologias utilizadas

pelo programador. A depuração é um dos estágios desse desenvolvimento, e a utilização de ferramentas adequadas éessencial para acelerar o processo de correção de programas.

O depurador (debbuger) é o utilitário que permite ao usuário controlar a execução de um programa a fim dedetectar erros na sua estrutura.

ProgramaExecutável

MóduloObjetoCompilador

MóduloFonte

MóduloObjeto

MóduloFonte LinkerCompilador

MóduloObjeto

MóduloFonte Compilador

Prof. Adão de Melo Neto 18

3. Introdução a Sistemas Operacionais

3.1 Introdução

Um sistema operacional é um conjunto de rotinas (programa) executado pelo processador cuja principal função écontrolar o funcionamento do computador, como um gerente dos diversos recursos disponíveis no sistema, tais comoprocessadores, memórias e dispositivos de entrada e saída.

Facilidade de acesso aos recursos do sistema

Sem um sistema operacional, um usuário, para interagir com o computador deveria conhecer profundamentediversos detalhes do hardware do equipamento (Figura 14) , o que torna seu trabalho lento e com grande possibilidadeerros.

O sistema operacional, então, serve de interface entre o usuários e os recursos disponíveis no sistema, tornandoesta comunicação transparente e permitindo ao usuário um trabalho mais eficiente e com menores chances de erros(Figura 12).

Para a maioria de nós uma operação cotidiana, como, por exemplo, a leitura de um arquivo em disquete, podeparecer simples. Na realidade, existe um conjunto de rotinas específicas, controladas pelo sistema operacional,responsável por acionar a cabeça, a de leitura e gravação da unidade de disco, posicionar na trilha e setor onde estão osdados, transferir os dados do disco para a memória e, finalmente, informar ao programa a chegada dos dados.

Este conceito de ambiente simulado, criado pelo sistema operacional, é denominado máquina virtual (virtualmachine) e está presente, de alguma forma, na maioria dos sistemas atuais.

É comum pensar-se que compiladores, linkers, bibliotecas, depuradores e outras ferramentas fazem parte dosistema operacional, mas, na realidade, estas facilidades são apenas utilitários, destinados a ajudar a interação do usuáriocom o computador (Figura 15).

Figura 12 - Visão do sistema operacional como interface entre os usuários e os recursos do sistema.

Prof. Adão de Melo Neto 19

Compartilhamento de recursos de forma organizada e protegida

O sistema operacional é responsável por permitir o acesso concorrente a esse e a outros recursos, de formaorganizada e protegida, dando ao usuário a impressão de ser o único a utilizá-los.

Quando pensamos em sistemas multiusuário, onde vários usuários podem estar compartilhando os mesmosrecursos, como, por exemplo, memória e discos, é necessário que todos tenham oportunidade de ter acesso a essesrecursos, de forma que um usuário não interfira no trabalho do outro. Se imaginarmos, por exemplo, que uma impressorapossa ser utilizada por vários usuários do sistema, deverá existir algum controle para impedir que a impressão de umusuário interrompa a impressão de outro.

Não é apenas em sistemas multiusuário que o sistema operacional é importante. Se pensarmos que umcomputador pessoal (sistema monousuário) nos permite executar várias tarefas, como imprimir um documento, copiarum arquivo pela internet ou processar uma planilha, o sistema operacional deve ser capaz de controlar a execuçãoconcorrentes de todas essas tarefas.

3.2 Máquinas de NíveisUm computador, visto somente como um gabinete composto de circuitos eletrônicos, cabos e fontes de

alimentação (hardware), não tem nenhuma utilidade. É através de programas (software) que o computador conseguearmazenar dados em discos, imprimir relatórios, gerar gráficos, realizar cálculos, entre outras funções.

Nos primeiros computadores, a programação era realizada em painéis, através de fios, exigindo um grandeconhecimento do hardware e de sua linguagem de máquina (Figura 14). Isso era uma grande dificuldade para osprogramadores da época (Figura 13 (a)).

A solução para esse problema foi o surgimento do sistema operacional, que tornou a interação entre usuário ecomputador mais simples, confiável e eficiente. A partir desse acontecimento, não existia mais a necessidade de oprogramador se envolver com a complexidade do hardware para poder trabalhar; ou seja, a parte física do computadortornou-se transparente para o usuário (Figura 13 (b)).

Figura 13 - Visão modular do computador pelo usuário.

Prof. Adão de Melo Neto 20

Figura 14 - Programação em painéis

Partindo desse princípio, podemos considerar o computador como uma máquina de níveis ou camadas, ondeinicialmente existem dois níveis: o nível 0 (hardware) e o nível 1 (sistema operacional). Desta forma, o usuário podeenxergar a máquina como sendo apenas o sistema operacional, ou seja, como se o hardware não existisse. Esta visãomodular e abstrata é chamada máquina virtual.

Na realidade, um computador não possui apenas dois níveis, e sim tantos níveis quanto forem necessários paraadequar o usuário às suas diversas aplicações. Quando o usuário está trabalhando em um desse níveis, não necessita daexistência das outras camadas, acima ou abaixo de sua máquina virtual.

Atualmente, a maioria dos computadores possui a estrutura mostrada na Figura 15, podendo conter mais oumenos camadas.

Figura 15 - Máquina de níveis.

ANEXO: Execução do Programa da Figura 2 pelo computador

Aplicativos

Utilitários

Sistema Operacional

Linguagem de Máquina

Hadware

Dispositivos Físicos

Microprogramação

Prof. Adão de Melo Neto 21

Prof. Adão de Melo Neto 22

Obs: opcode significa código da operação

Prof. Adão de Melo Neto 23

4. Tipos de Sistemas Operacionais

4.1 IntroduçãoTipos de sistemas operacionais e sua evolução estão intimamente relacionados com a evolução do hardware e das

aplicações por ele suportadas.A seguir , abordaremos os diversos tipos de sistemas operacionais, suas características vantagens e desvantagens.

Tipos de SistemasOperacionais

SistemasMonoprogamáveis/

Monotarefa

SistemasMultiprogramáveis/

Multitarefa

Sistemas comMúltiplos

Processadores

Figura 16 - Tipos de sistemas operacionais

4.2 Sistemas Monoprogramáveis/Monotarefa

Os primeiros sistemas operacionais eram tipicamente voltados para a execução de um único programa. Qualqueroutro programa, para ser executado, deveria aguardar o término do programa corrente. Os sistemas monoprogramáveis,como vieram a ser conhecidos, se caracterizam por permitir que o processador, a memória e os periféricos permaneçamexclusivamente dedicados à execução de um único programa.

Neste tipo de sistema, enquanto um programa aguarda por um evento, como a digitação de um dado, oprocessador permanece ocioso, sem realizar qualquer tipo de processamento. A memória é subtilizada caso o programanão a preencha totalmente, e os periféricos, como discos e impressoras, estão dedicados a um único usuário.

Comparados a outros sistemas, os sistemas monoprogramáveis/monotarefa são de simples implementação, nãoexistindo muita preocupação com problemas de compartilhamento de recursos, tais como memória, processador edispositivos de E/S.

UCP

Memória

Dispositivosde E/S

Programa/Tarefa

Figura 17 - Sistemas monoprogramáveis/monotarefa

Prof. Adão de Melo Neto 24

4.3 Sistemas Multiprogramáveis/Multitarefa

Os Sistemas multiprogramáveis, embora mais eficientes, são mais complexos. Enquanto em sistemasmonoprogramáveis existe apenas um programa utilizando seus diversos recursos (memória, processador, dispositivos deentrada e saída) , nos multiprogramáveis vários programas dividem esses mesmos recursos.

As vantagens do uso de sistemas multiprogramáveis são a redução de custos, a partir do compartilhamento dosdiversos recursos do sistema e a redução do tempo médio de execução das aplicações.

A partir do número de usuários que interagem com o sistema, podemos classificar os sistemasmultiprogramáveis como monousuário e multiusuário. Sistema multiprogramáveis monousuário são encontrados noscomputadores pessoais onde há um único usuário interagindo com o sistema. Neste caso é possível que ele executediversas tarefas simultaneamente como a edição de um texto e o acesso à internet. O sistemas multiprogramáveismultiusuário são ambientes interativos que permitem diversos usuários conectarem ao sistema simultaneamente.

Um usuário Dois ou mais usuáriosMonoprogramação/Monotarefa Monousuário N/AMultiprogramação/Multitarefa Monousuário Multiusuário

Sistemas X Usuários

Os sistemas multiprogramáveis/multitarefa podem ser classificados pela forma com que suas aplicações sãogerenciadas, podendo ser divididos em sistemas batch, de tempo compartilhado ou de tempo real. Um sistema operacionalpode suportar um ou mais desses tipos de processamento.

SistemasMultiprogramáveis/Multirefa

SistemasBatch

Sistemas deTempo compartilhado

Sistemas deTempo Real

Figura 18 - Tipos de sistemas multiprogramáveis/multitarefa

Sistemas BatchOs sistemas batch (lote) foram os primeiros sistemas multiprogramáveis a serem implementados e caracterizam-

se por terem seus programas, quando submetidos, armazenados em disco ou fita, onde esperam para ser executadosseqüencialmente.

Normalmente, os programas, também chamados de jobs, não exigem interação com os usuários, pois o mesmo lêe grava dados em discos e fitas.

Alguns exemplos de aplicações originalmente processadas em batch são programas envolvendo cálculosnuméricos, compilações, ordenações, backups e todos aqueles onde não é necessária a interação com o usuário.

Sistemas de Tempo Compartilhado

Estes sistemas permitem que diversos programas sejam executados a partir da divisão do tempo do processadorem pequenos intervalos denominados fatias de tempo (time-slice). Caso o programa do usuário não esteja concluído nesseintervalo de tempo, ele é substituído por um de outro programa, enquanto fica esperando por uma nova fatia de tempo.Não só o processador é compartilhado nesse sistema, mas também a memória e os periféricos, como discos e impressoras.O sistema cria para o usuário um ambiente de trabalho próprio, dando a impressão de que todo o sistema está dedicado,exclusivamente, a ele.

Os sistemas de tempo compartilhado (time-sharing) permitem a interação dos usuários com o sistema,basicamente através de terminais que incluem vídeo, teclado e mouse.

Prof. Adão de Melo Neto 25

Sistemas de tempo compartilhado são de implementação complexa, porém, se levado em consideração o tempode desenvolvimento e depuração de uma aplicação, aumentam consideravelmente a produtividade dos seus usuários,reduzindo os custos de utilização do sistema.

Sistemas de Tempo RealOs sistemas de tempo real (real time) são bem semelhantes em implementação aos sistemas de tempo

compartilhado. A maior diferença é o tempo de resposta exigido no processamento das aplicações.Enquanto em sistemas de tempo compartilhado o tempo de resposta pode variar sem comprometer as aplicações

em execução, nos sistemas de tempo real os tempos de resposta devem estar dentro de limites rígidos, que devem serobedecidos, caso contrário poderão ocorrer problemas irreparáveis.

Não existe idéia de fatia de tempo, ou seja, um programa detém o processador o tempo que for necessário, ou atéque apareça outro prioritário em função de sua importância no sistema. Esta importância ou prioridade de execução écontrolada pela própria aplicação e não pelo sistema operacional, como nos sistemas de tempo compartilhado.

Esses sistemas, normalmente, estão presentes em controle de processos, como no monitoramento de refinarias depetróleo, controle de tráfego aéreo, de usinas termelétricas e nucleares, ou em qualquer aplicação onde o tempo deresposta é fator fundamental.

4.4 Sistemas com Múltiplos ProcessadoresOs sistemas com múltiplos processadores caracterizam-se por possuir duas ou mais CPUS interligadas,

trabalhando em conjunto. A vantagem deste tipo de sistema é a de permitir que vários programas sejam executados aomesmo tempo ou que um mesmo programa seja subdividido em partes para serem executadas simultaneamente em mais deum processador. Um fator-chave no desenvolvimento de sistemas operacionais com múltiplos processadores é a forma decomunicação entre as CPUs e o grau de compartilhamento da memória e dos dispositivos de entrada e saída. Em funçãodesses fatores, podemos classificar os sistemas em fortemente acoplados ou fracamente acoplados.

Sistemas com MúltiplosProcessadores

Sistemas FracamenteAcoplados

Sistemas FortementeAcoplados

SistemasOperacionaisDistribuídos

SistemasOperacionais de Rede

SistemasSimétricos

SistemasAssimétricos

Figura 19 - Sistemas com múltiplos processadores.

4.4.1 Sistemas Fortemente AcopladosNos sistemas fortemente acoplados (tightly coupled) existem vários processadores compartilhando uma única

memória e dispositivos de E/S sendo gerenciados por apenas um sistema operacional. Os sistemas fortemente acopladossão conhecidos como multiprocessadores. Múltiplos processadores permitem que vários programas sejam executados aomesmo tempo, ou que um programa seja dividido em subprogramas, para execução simultânea em mais de umprocessador. Dessa forma, é possível ampliar a capacidade de computação de um sistema, adicionando-se apenas novosprocessadores, com um custo muito inferior à aquisição de outros computadores.

Com o multiprocessamento, novos problemas de concorrência foram introduzidos, pois vários processadorespodem estar acessando as mesmas áreas de memória. Além disso, existe o problema de organizar de forma eficiente osprocessadores, a memória e os periféricos.

Uma conseqüência do multiprocessamento foi o surgimento dos computadores voltados, principalmente, paraprocessamento científico, aplicado, por exemplo, ao desenvolvimento aeroespacial, prospeção de petróleo, simulações,

Prof. Adão de Melo Neto 26

processamento de imagens e CAD. A princípio qualquer aplicação que faça uso intensivo da CPU será beneficiada peloacréscimo de processadores ao sistema.

UCP

Memória

Dispositivosde E/S

UCP

Dispositivosde E/S

Figura 20 - Sistemas fortemente acoplados

UCP

Memória Dispositivosde E/S

UCP

Memória Dispositivosde E/S

Link de Comunicação

Figura 21 - Sistemas fracamente acoplados

Sistemas AssimétricosNa organização assimétrica ou mestre/escravo(master/slave), somente um processador (mestre) pode executar

serviços do sistema operacional, como, por exemplo, realizar operações de entrada/saída. Sempre que um processador dotipo escravo precisar realizar uma operação de entrada/saída, terá de requisitar o serviço ao processador mestre.Dependendo do volume de operações de entrada/saída destinadas aos processadores escravos, o sistema pode se tornarineficiente, devido ao elevado número de interrupções que deverão ser tratadas pelo mestre.

UCP SlaveUCP Master

Dispositivosde E/S S.O Usuários Usuários

Figura 22 - Sistemas Fortemente Acoplados Assimétricos.

Prof. Adão de Melo Neto 27

Se o processador falhar, todo o sistema ficará incapaz de continuar o processamento. Neste caso, o sistema deveser reconfigurado, fazendo um dos processadores escravos assumir o papel do mestre.

Mesmo sendo uma organização simples de implementar e quase um extensão dos sistemas multiprogramáveis,esse tipo de sistema não utiliza eficientemente o hardware, devido à assimetria dos processadores, que não realizam asmesmas funções.

Sistemas SimétricosO multiprocessamento simétrico (Simmetric Multiprocessing- SMP), ao contrário da organização mestre/escravo,

implementa a simetria dos processadores, ou seja, todos os processadores realizam as mesmas funções. Apenas algumaspoucas funções ficam a cargo de um único processador, como, por exemplo, a inicialização (boot) do sistema.

UCPUCP

Dispositivosde E/S S.O Usuários

Figura 23 - Sistemas Fortamente Acoplados Simétricos.

Como vários processadores estão utilizando, independentemente, a mesma memória e o mesmo sistemaoperacional, é natural a ocorrência de acessos simultâneos às mesmas áreas de memória. A solução desses conflitos fica acargo do hardware e do sistema operacional.

No processamento simétrico, um programa pode ser executado por qualquer processador, inclusive por váriosprocessadores ao mesmo tempo (paralelismo). Além disso, quando um processador falha, o sistema continua emfuncionamento sem nenhuma interferência manual, porém com menor capacidade de computação.

Os sistemas simétricos são mais poderosos que os assimétricos, permitindo um melhor balanceamento doprocessamento e das operações de entrada/saída, apesar de sua implementação ser bastante complexa.

4.4.2 Sistemas Fracamente Acoplados

Os sistemas fracamente acoplados caracterizam-se por possuir dois ou mais sistemas de computação interligados,sendo que cada sistema possui o seu próprio sistema operacional, gerenciando os seus recursos, como processador,memória e dispositivos de entrada/saída.

Até meados da década de 80, os sistemas operacionais e as aplicações suportadas por eles eram tipicamenteconcentradas em sistemas de grande porte, com um ou mais processadores. Nos sistemas centralizados, os usuáriosutilizam terminais não inteligentes conectados a linhas seriais dedicadas ou linhas telefônicas públicas para a comunicaçãointerativa com esses sistemas.

No modelo centralizado, os terminais não têm capacidade de processamento. Sempre um usuário deseja algumatarefa, o pedido é encaminhado ao sistema, que realiza o processamento e retorna uma resposta, utilizando as linhas decomunicação.

Com a evolução dos computadores pessoais e das estações de trabalho, juntamente com o avanço dastelecomunicações e da tecnologia de redes, surgiu um novo modelo de computação, chamado de modelo de rede decomputadores em que existem dois ou mais sistemas inteligentes (estação), interligados através de linhas decomunicação, que fornecem algum tipo de serviço aos demais.

Com base no grau de interação das estações da rede, os sistemas fracamente acoplados podem ser divididos emsistemas operacionais de rede e sistemas distribuídos.

Os sistemas operacionais de rede (SOR) permitem que uma estação compartilhe seus recursos, como umaimpressora ou um diretório, com as demais estações da rede. Um exemplo são as redes locais, onde uma estação podeoferecer serviços de arquivos e impressão para as demais estações da rede, dentre outros serviços (Figura 10).

Prof. Adão de Melo Neto 28

Figura 24 - Sistemas operacionais de rede.

Enquanto nos sistemas operacionais de rede os usuários têm conhecimento das estações e seus serviços, nossistemas distribuídos o sistema operacional esconde os detalhes das estações individuais e passa a tratá-los como umconjunto único, como se fosse um sistema fortemente acoplado. Os sistemas distribuídos permitem, por exemplo, que umaaplicação seja dividida em partes e que cada parte seja executada em estações diferentes da rede de computadores. Para ousuário e suas aplicações é como se não existisse a rede de computadores, mas um único sistema centralizado.

Outro exemplo de sistema distribuído são os clusters. Em um cluster existem dois ou mais servidores ligados,normalmente, por algum tipo de conexão de alto desempenho. O usuário não conhece os nomes dos membros do cluster enão sabe quantos são. Quando ele precisa de algum serviço, basta solicitar ao cluster para obtê-lo. Atualmente, sistemasem cluster são utilizados para serviços de banco de dados e Web.

Rede

Usuário

Figura 25 - Sistemas Operacionais Distribuídos.

Prof. Adão de Melo Neto 29

5. Sistemas Multiprogramáveis

5.1 Introdução

Sistemas operacionais podem ser vistos como um conjunto de rotinas que executam concorrentemente de umaforma ordenada. A possibilidade do processador executar instruções ao mesmo tempo que outras operações, como, porexemplo, operações de E/S, permite que diversas tarefas sejam executadas concorrentemente pelo sistema. O conceito deconcorrência é o princípio básico para o projeto e implementação de sistemas multiprogramáveis.

Neste capítulo serão apresentados mecanismos, técnicas e dispositivos que possibilitam a implementação deconcorrência como interrupções e exceções, buffering, spooling e reentrância.

5.2 Sistemas Monoprogramáveis X Multiprogramáveis

Nos sistemas monoprogramáveis, somente um programa pode estar residente em memória, e a CPU permanecededicada, exclusivamente, à execução desse programa. Podemos observar que, nesse tipo de sistema, ocorre umdesperdício na utilização da CPU, pois enquanto o programa está realizando, por exemplo, uma leitura em disco, oprocessador permanece sem realizar nenhuma tarefa (Figura 26(a)). O tempo de espera é consideravelmente grande, jáque as operações com dispositivos de entrada e saída são muito lentas se comparadas com a velocidade da CPU.

Outro aspecto que devemos considerar é a subutilização da memória. Um programa que não ocupe totalmente amemória principal ocasiona a existência de áreas livres, sem utilização.

Nos sistemas multiprogramáveis, vários programas podem estar residentes em memória, concorrendo pelautilização da CPU. Dessa forma, quando um programa solicita uma operação de entrada/saída, outros programas poderãoestar disponíveis para utilizar o processador (Figura 26(b)). Nesse caso, a CPU permanece menos tempo ociosa e amemória principal é utilizada de forma mais eficiente, pois existem vários programas residentes se revezando na utilizaçãodo processador.

A utilização concorrente da CPU deve ser implementada de maneira que, quando um programa perde o uso doprocessador e depois retorna para continuar o processamento, seu estado deve ser idêntico ao do momento em que foiinterrompido. O programa deverá continuar sua execução exatamente na instrução seguinte àquela em que havia parado,aparentando ao usuário que nada aconteceu.

Em sistemas de tempo compartilhado, existe a impressão de que o computador está inteiramente dedicado aousuário, ficando todo esse mecanismo transparente para ele.

No caso de periféricos, é comum termos, em sistemas monoprogramáveis, impressoras paradas por um grandeperíodo de tempo e discos com acesso restrito a um único usuário.

Esses problemas são solucionados em sistemas multiprogramáveis, onde é possível compartilhar impressorasentre vários usuários e realizar acesso concorrente a discos por diversos programas.

E/S

Livre

tempo

UCP

E/S

tempo

UCP

1

112

Sistema Nomoprogramável (a) Sistema Multiprogramável (b)

E/S

Livre

tempo

UCP

E/S

tempo

UCP

1

112

Figura 26 - Sistema monoprogramável X multiprogramável.

Prof. Adão de Melo Neto 30

5.3 Interrupção e ExceçãoDurante a execução de um programa, alguns eventos podem ocorrer durante seu processamento, obrigando a

intervenção do sistema operacional. Este tipo de intervenção é chamado de interrupção ou exceção. Nestas situações ofluxo de execução do programa é desviado para uma rotina especial de tratamento.

O que diferencia uma interrupção de uma exceção é o tipo de evento que gera esta condição. Uma interrupção égerada pelo sistema operacional ou por algum dispositivo e, neste caso, independe do programa que está sendo executado.Um exemplo é quando um periférico avisa à CPU que está pronto para transmitir algum dado. Neste caso, a CPU deveinterromper o programa para atender a solicitação do dispositivo.

Interrupção

.

.

.

.

.

.

.

.

.

.

.

Salva osregistradores

Identifica a origemda interrupção

Rotina deTratamentoObtém o endereço da

rotina de tratamento :::

Restauraos registradores

Programa

Figura 27 - Mecanismo de interrupção.

Não existe apenas um único tipo de interrupção e sim diferentes tipos que devem ser atendidos por diversasrotinas de tratamento. No momento que uma interrupção acontece, a CPU deve saber para qual rotina de tratamentodeverá ser desviado o fluxo de execução. Essa informação está em uma estrutura do sistema chamada vetor de interrupção,que contém a relação de todas as rotinas de tratamento existentes, associadas a cada tipo de interrupção.

A interrupção é o mecanismo que tornou possível a implementação da concorrência nos computadores, sendo ofundamento básico dos sistemas multiprogramáveis. É em função desse mecanismo que o sistema operacional sincroniza aexecução de todas as suas rotinas e dos programas dos usuários, além de controlar os periféricos e dispositivos do sistema.

Uma interrupção é gerada por um evento assíncrono. Esses eventos, por serem imprevisíveis, podem ocorrermúltiplas vezes simultaneamente, como no caso de diversos dispositivos de E/S informarem à CPU que estão prontos parareceber ou transmitir dados.

Uma exceção é resultado direto da execução de uma instrução de um programa. Situações como a divisão de umnúmero por zero ou a ocorrência de um overflow caracterizavam essa situação.

Uma exceção é gerada por um evento síncrono que é o resultado direto da execução do programa corrente. Taiseventos são previsíveis e, por definição só podem ocorrer um de cada vez. Se um programa que causa esse tipo de eventofor reexecutado, com a mesma entrada de dados, a exceção ocorrerá sempre na mesma instrução.

5.4 Operações de Entrada/Saída

Em sistemas mais primitivos, a comunicação entre a CPU e os periféricos era controlada por um conjunto deinstruções especiais, denominadas instruções de entrada/saída, executadas pela própria CPU.

Prof. Adão de Melo Neto 31

Essas instruções continham detalhes específicos de cada periférico, como quais trilhas e setores de um discodeveriam ser lidos ou gravados em determinado bloco de dados. Esse tipo de instrução limitava a comunicação doprocessador a um grupo particular de dispositivos.

A implementação de um dispositivo chamado controlador ou interface permitiu à CPU agir de maneiraindependente dos dispositivos de E/S. Com esse novo elemento, a CPU não se comunicava mais diretamente com osperiféricos, mas sim através do controlador. Isso significa as instruções de E/S, por não ser mais preciso especificardetalhes de operação dos periféricos, tarefa esta realizada pelo controlador.

UCP MemóriaPrincipal Controlador

::::

Figura 28 - Controlador.

Com a implementação do mecanismo de interrupção no hardware dos computadores, as operações de E/Spuderam ser realizadas de uma forma mais eficiente. Em vez de o sistema periodicamente verificar o estado de umaoperação pendente, o próprio controlador interrompia a CPU para avisar do término da operação. Com esse mecanismo,denominado E/S controlada por interrupção, a CPU, após a execução de um comando de leitura ou gravação, fica livrepara o processamento de outras tarefas. O controlador por sua vez, ao receber, por exemplo, um sinal de leitura, ficaencarregado de ler os blocos dos disco e armazená-los em memória ou registradores próprios. Em seguida, o controlador,através de uma linha de controle, sinaliza uma interrupção ao processador. Quando a CPU atende a interrupção, a rotinaresponsável pelo tratamento desse tipo de interrupção transfere os dados dos registradores do controlador para a memóriaprincipal. Ao término da transferência, a CPU volta a executar o programa interrompido e o controlador fica novamentedisponível para outra operação.

A operação de E/S controlada por interrupção é muito mais eficiente que a operação de E/S controlada porprograma, já que elimina a necessidade de a CPU esperar pelo término da operação, além de permitir que várias operaçõesde E/S sejam executadas simultaneamente. Apesar disso, essa implementação ainda sobrecarregava a CPU, uma vez quetoda transferência de dados entre memória e periféricos exigia a intervenção da CPU. A solução desse problema foi aimplementação, por parte do controlador, de uma técnica de transferência de dados denominada DMA (Direct MemoryAccess).

A técnica de DMA permite que bloco de dados seja transferido entre memória e periféricos, sem a intervenção daCPU, exceto no início e no final da transferência. Quando o sistema deseja ler ou gravar um bloco de dados, são passadasda CPU para o controlador informações como: onde o dado está localizado, qual o dispositivo de E/S envolvido naoperação, posição inicial da memória de onde os dados serão lidos ou gravados e o tamanho do bloco de dados. Com estasinformações, o controlador realiza a transferência entre o periférico e a memória principal, e a CPU é somenteinterrompida no final da operação. A área de memória utilizada pelo controlador na técnica de DMA é chamada buffer,sendo reservada exclusivamente para este propósito.

No momento em que a transferência de DMA é realizada, o controlador deve assumir, momentaneamente, ocontrole do barramento. Como a utilização do barramento é exclusiva de um dispositivo, a CPU deve suspender o acessoao bus, temporariamente, durante a operação de transferência. Este procedimento não gera uma interrupção, e a CPUpode realizar tarefas, desde que sem a utilização do barramento, como, por exemplo, um acesso à memória cache.

A extensão do conceito do DMA possibilitou o surgimento dos canais de E/S, ou somente canais, introduzidospela IBM no Sistema 7094. O canal de E/S é um processador com capacidade de executar programas de E/S, permitindo ocontrole total sobre operações de entrada e saída. As instruções de E/S são armazenadas na memória principal pela CPU,porém o canal é responsável pela sua execução. Assim, a CPU realiza uma operação de E/S, instruindo o canal paraexecutar um programa localizado na memória (programa de canal). Este programa especifica os dispositivos para

Prof. Adão de Melo Neto 32

transferência, buffers e ações a serem tomadas em caso de erros. O canal de E/S realiza a transferência e, ao final gera umainterrupção, avisando do término da operação.

Um canal de E/S pode controlar múltiplos dispositivos através de diversos controladores. Cada dispositivo, ouconjunto de dispositivos, é manipulado por um único controlador. O canal atua como um elo de ligação entre a CPU e ocontrolador.

UCPMemóriaPrincipal

Cana deE/S

. . . . .

Controlador

. . . . .

Controlador

Figura 29 - Canal de E/S

5.5 BufferingA técnica de buffering consiste na utilização de uma área de memória para a transferência de dados entre os

dispositivos de E/S e a memória principal denominada buffer. O buffering veio permitir que, quando um dado fossetransferido para o buffer após uma operação de leitura, o dispositivo de entrada ficasse livre para iniciar uma nova leitura.Neste caso, enquanto a CPU manipula o dado localizado no buffer, o dispositivo de entrada inicia uma nova leitura. Omesmo raciocínio pode ser aplicado para operações de gravação, onde a CPU coloca o dado no buffer para um dispositivode saída manipular.

BufferControlador

de E/SUCP

Memória Principal

GravaçãoGravação

LeituraLeitura

Figura 30 - Operações utilizando buffer.

O buffering é outra implementação para minimizar o problema da disparidade da velocidade de processamentoexistente entre a CPU e os dispositivos de E/S.

O objetivo do buffering é manter, na maior parte do tempo, CPU e dispositivos de E/S ocupados.

Prof. Adão de Melo Neto 33

5.6 SpoolingA técnica de spooling (simultaneous peripheral operation on-line) foi introduzida no final dos anos 50 para

aumentar a produtividade e a eficiência dos sistemas operacionais.Naquela época, os programas dos usuários eram submetidos um a um para processamento pelo operador. Como a

velocidade de operação dos dispositivos de entrada/saída é muito lenta se comparada à do processador, era comum que aCPU ficasse ociosa à espera de programas e dados de entrada ou pelo término de uma impressão.

A solução foi armazenar os vários programas e seus dados, também chamados de jobs, em uma fita magnética e,em seguida, submetê-los a processamento. Desta forma, a CPU poderia processar seqüencialmente cada job, diminuindo otempo de execução dos jobs e o tempo de transição entre eles. Da mesma forma, em vez de um job gravar suas saídasdiretamente na impressora, poderia direcioná-las para uma outra fita, que depois seria impressa integralmente. Esta formade processamento é chamada de spooling e foi a base dos sistemas batch.

O spooling, basicamente, utiliza o disco como um grande buffer, permitindo que dados sejam lidos e gravados emdisco, enquanto outros jobs são processados.

Um exemplo dessa técnica está presente quanto impressora são utilizadas. No momento em que um comando deimpressão é executado por um programa, as informações que serão impressas são gravadas em um arquivo em disco(arquivo de spool), para ser impresso posteriormente pelo sistema Figura 31. Dessa forma, situações como a de umprograma reservar a impressora, imprimir uma linha e ficar horas para continuar a impressão não acontecerão. Essaimplementação permite maior grau de compartilhamento na utilização de impressoras.

SistemaOperacionalPrograma

ImpressãoArquivo de Spool

Figura 31 - Técnico de spooling.

Atualmente, a técnica de spooling é implementada na maioria dos sistemas operacionais. Fazendo com que tantoa CPU quanto os dispositivos de E/S seja aproveitados de forma mais eficiente.

5.7 ReentrânciaÉ comum, em sistemas multiprogramáveis, vários usuários executarem os mesmos utilitários do sistema

operacional simultaneamente, como, por exemplo, um editor de textos. Se cada usuário que utilizasse o editor trouxesse ocódigo do utilitário para a memória, haveria diversas cópias de um mesmo programa na memória principal, o queocasionaria um desperdício de espaço.

Reentrância é a capacidade de um código de programa (código reentrante) poder ser compartilhado por diversosusuários, exigindo que apenas uma cópia do programa esteja na memória. Utilitários do sistema como editores de texto.Compiladores e linkers, são exemplos de código reentrante que proporcionam uma utilização mais eficiente da memóriaprincipal.